From 388a0805c34497c229e2865bcc1d7cac82292829 Mon Sep 17 00:00:00 2001 From: dbeltran Date: Wed, 11 Jan 2023 16:53:46 +0100 Subject: [PATCH 1/8] Missing images --- autosubmit/job/job_packager.py | 5 +- .../userguide/wrappers/fig/monarch-da.png | Bin 0 -> 105532 bytes docs/source/userguide/wrappers/index.rst | 416 +++++++++--------- docs/source/userguide/wrappers/old_index.rst | 272 ++++++++++++ 4 files changed, 480 insertions(+), 213 deletions(-) create mode 100644 docs/source/userguide/wrappers/fig/monarch-da.png create mode 100644 docs/source/userguide/wrappers/old_index.rst diff --git a/autosubmit/job/job_packager.py b/autosubmit/job/job_packager.py index 4607dae12..d0bbe481c 100644 --- a/autosubmit/job/job_packager.py +++ b/autosubmit/job/job_packager.py @@ -88,6 +88,7 @@ class JobPackager(object): #todo add default values + #Wrapper building starts here for wrapper_section,wrapper_data in self._as_config.experiment_data.get("WRAPPERS",{}).items(): if isinstance(wrapper_data,collections.abc.Mapping ): self.wrapper_type[wrapper_section] = self._as_config.get_wrapper_type(wrapper_data) @@ -213,11 +214,13 @@ class JobPackager(object): for job in failed_wrapped_jobs: job.packed = False jobs_to_submit_by_section = self._divide_list_by_section(jobs_to_submit) - # create wrapped package jobs + # create wrapped package jobs Wrapper building starts here for wrapper_name,section_jobs in jobs_to_submit_by_section.items(): self.current_wrapper_section = wrapper_name for section,jobs in section_jobs.items(): if len(jobs) > 0: + if not self._platform.allow_wrappers: + Log.warning("Platform {0} does not allow wrappers, submitting jobs individually".format(self._platform.name)) if wrapper_name != "SIMPLE" and self._platform.allow_wrappers and self.wrapper_type[self.current_wrapper_section] in ['horizontal', 'vertical','vertical-horizontal', 'horizontal-vertical'] : # Trying to find the value in jobs_parser, if not, default to an autosubmit_.yml value (Looks first in [wrapper] section) wrapper_limits = dict() diff --git a/docs/source/userguide/wrappers/fig/monarch-da.png b/docs/source/userguide/wrappers/fig/monarch-da.png new file mode 100644 index 0000000000000000000000000000000000000000..ff740791be2d106faa0957f33753fb43a9759771 GIT binary patch literal 105532 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%0Ab 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 literal 0 HcmV?d00001 diff --git a/docs/source/userguide/wrappers/index.rst b/docs/source/userguide/wrappers/index.rst index 42e133db3..320a0f5aa 100644 --- a/docs/source/userguide/wrappers/index.rst +++ b/docs/source/userguide/wrappers/index.rst @@ -1,272 +1,264 @@ -Configure Wrappers -================== - -In order to understand the goal of this feature, please take a look at: https://earth.bsc.es/wiki/lib/exe/fetch.php?media=library:seminars:techniques_to_improve_the_throughput.pptx - -At the moment there are 4 types of wrappers that can be used depending on the experiment's workflow: - -* Vertical -* Horizontal -* Hybrid (horizontal-vertical and vertical-horizontal approaches) -* Multiple wrappers - Same experiment - -When using the wrapper, it is useful to be able to visualize which packages are being created. -So, when executing *autosubmit monitor cxxx*, a dashed box indicates the jobs that are wrapped together in the same job package. - -How to configure ----------------- - -In ``autosubmit_cxxx.yml``, regardless of the wrapper type, you need to make sure that the values of the variables **MAXWAITINGJOBS** and **TOTALJOBS** are increased according to the number of jobs expected to be waiting/running at the same time in your experiment. - -For example: +Wrappers +======== -.. code-block:: yaml +Job packages, or "wrappers", are jobs created as bundles of different tasks (submitted at once in a single script to the platform) assembled by Autosubmit to maximize the usage of platforms managed by a scheduler (by minimizing the queuing time between consecutive or concurrent tasks). Autosubmit supports four wrapper types that can be used depending on the experiment’s workflow. - config: - EXPID: .... - AUTOSUBMIT_VERSION: 4.0.0 - ... +* Horizontal_ +* Vertical_ +* Horizontal-vertical_ +* Vertical-horizontal_ - MAXWAITINGJOBS: 100 - TOTALJOBS: 100 - ... +.. note:: To have a preview of wrappers, you must use the parameter `-cw` available on inspect, monitor, and create. -and below the config: block, add the wrapper directive, indicating the wrapper type: +.. code-block:: bash -.. code-block:: yaml + autosubmit create -cw # Unstarted experiment + autosubmit monitor -cw # Ongoing experiment + autosubmit inspect -cw -f # Visualize wrapper cmds - wrappers: - wrapper: - TYPE: - JOBS_IN_WRAPPER: +General Configuration +===================== -You can also specify which job types should be wrapped. This can be done using the **JOBS_IN_WRAPPER** parameter. -It is only required for the vertical-mixed type (in which the specified job types will be wrapped together), so if nothing is specified, all jobs will be wrapped. -By default, jobs of the same type will be wrapped together, as long as the constraints are satisfied. +To configure a new wrapper, the user has to define a `WRAPPERS` section in any configuration file. When using the standard configuration, this one is autosubmit.yml. -Number of jobs in a package -~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.. code-block:: YAML -.. code-block:: yaml + WRAPPERS: + WRAPPER_0: + TYPE: "horizontal" - wrappers: - wrapper: - TYPE: - MIN_WRAPPED: 2 - MAX_WRAPPED: 999 - POLICY: flexible #default is flexible. Values: flexible,strict,mixed +By default, Autosubmit will try to bundle jobs of the same type. The user can alter this behavior by setting the `JOBS_IN_WRAPPER` parameter directive in the wrapper section. +When using multiple wrappers or 2-dim wrappers is essential to define the `JOBS_IN_WRAPPER` parameter. -- **MAX_WRAPPED** can be defined in ``jobs_cxxx.yml`` in order to limit the number of jobs wrapped for the corresponding job section - - If not defined, it considers the **MAX_WRAPPED** defined under wrapper: in ``autosubmit_cxxx.yml`` - - If **MAX_WRAPPED** is not defined, then **TOTALJOBS** is used by default -- **MIN_WRAPPED** can be defined in ``autosubmit_cxxx.yml`` in order to limit the minimum number of jobs that a wrapper can contain - - If not defined, it considers that **MIN_WRAPPED** is 2. - - If **POLICY** is flexible and it is not possible to wrap **MIN_WRAPPED** or more tasks, these tasks will be submitted as individual jobs, as long as the condition is not satisfied. - - If **POLICY** is mixed and there are failed jobs inside a wrapper, these jobs will be submitted as individual jobs. - - If **POLICY** is strict and it is not possible to wrap **MIN_WRAPPED** or more tasks, these tasks will not be submitted until there are enough tasks to build a package. - - Strict and mixed policies can cause **deadlocks**. +.. code-block:: YAML + JOBS: + JOB_0: + FILE: test.sh + RUNNING: chunk + JOB_1: + FILE: test2.sh + DEPENDENCY: "JOB_0 JOB_1-1" + RUNNING: chunk + WRAPPERS: + WRAPPER_0: + TYPE: "horizontal" + JOBS_IN_WRAPPER: "JOB_0" + WRAPPER_1: + TYPE: "vertical" + JOBS_IN_WRAPPER: "JOB_1" + + + +.. important:: Autosubmit will not wrap tasks with external and non-fulfilled dependencies. Wrapper check time -~~~~~~~~~~~~~~~~~~ - -It is possible to override the **SAFETYSLEEPTIME** for the wrapper, by using **CHECK_TIME_WRAPPER** and defining a time interval (in seconds) in which the wrapper internal jobs should be checked. - -.. important:: Note that the **numbers** shown in this documentation are examples. The actual values must be set according to the specific workflow, as well as the platform configurations. - -Vertical wrapper ----------------- - -The vertical wrapper is more appropriate when there are many sequential jobs. To use it, set TYPE: vertical: +------------------ +The CHECK_TIME_WRAPPER parameter defines the frequency, in seconds, on which Autosubmit will check the remote platform status of all the wrapper tasks. -.. code-block:: yaml + WRAPPERS: + CHECK_TIME_WRAPPER: 10 + WRAPPER_0: + TYPE: "horizontal" + JOBS_IN_WRAPPER: "JOB_0" + WRAPPER_1: + TYPE: "vertical" + JOBS_IN_WRAPPER: "JOB_1" - wrappers: - wrapper: - TYPE: vertical +Number of jobs in a wrapper +----------------------------- -In order to be able to use the vertical wrapper, in ``platforms_cxxx.yml`` set the maximum wallclock allowed by the platform in use: +Users can configure the maximum and the minimum number of jobs in each wrapper by configuring MAX_WRAPPED and MIN_WRAPPED inside the wrapper section. If the user doesn't set them, Autosubmit will default to MAX_WRAPPED: “infinite” and MIN_WRAPPED: 2. -.. code-block:: yaml +.. code-block:: YAML - marenostrum4: - ... - MAX_WALLCLOCK: 72:00 + WRAPPERS: + MIN_WRAPPED: 2 + MAX_WRAPPED: 999999 + WRAPPER_0: + MAX_WRAPPED: 2 + TYPE: "horizontal" + JOBS_IN_WRAPPER: "JOB_0" + WRAPPER_1: + TYPE: "vertical" + JOBS_IN_WRAPPER: "JOB_1" -Remember to add to each job the corresponding WALLCLOCK time. +For 2-dim wrappers, {MAX_MIN}_WRAPPED_{V/H} must be used instead of the general one. -Vertical with multiple sections -------------------------------- +.. code-block:: YAML -This is a mode of the vertical wrapper that allows jobs of different types to be wrapped together. -Note that the solution considers the order of the sections defined in the ``jobs_cxxx.yml`` file, so the order of the sections given in **JOBS_IN_WRAPPER** is irrelevant. -Additionally, jobs are grouped within the corresponding date, member and chunk hierarchy. + WRAPPERS: + MIN_WRAPPED: 2 + MAX_WRAPPED: 999999 + WRAPPER_0: + MAX_WRAPPED_H: 2 + MAX_WRAPPED_V: 4 + MIN_WRAPPED_H: 2 + MIN_WRAPPED_V: 2 + TYPE: "horizontal-vertical" + JOBS_IN_WRAPPER: "JOB_0 JOB_1" -.. code-block:: yaml +Wrapper Policy +--------------- - wrappers: - wrapper: - TYPE: vertical - JOBS_IN_WRAPPER: SIM&SIM2 # REQUIRED +Autosubmit will wrap as many tasks as possible while respecting the limits set in the configuration(MAX_WRAPPED, MAX_WRAPPED_H, MAX_WRAPPED_V, MIN_WRAPPED, MIN_WRAPPED_V, and MIN_WRAPPED_H parameters). However, users have three different policies available to tune the behavior in situations where there aren’t enough tasks in general, or there are uncompleted tasks remaining from a failed wrapper job: -.. figure:: fig/vertical-mixed.png - :name: vertical-mixed - :width: 100% - :align: center - :alt: vertical-mixed wrapper +* Flexible: if there aren’t at least MIN_WRAPPED tasks to be grouped, Autosubmit will submit them as individual jobs. +* Mixed: will wait for MIN_WRAPPED jobs to be available to create a wrapper, except if one of the wrapped tasks had failed beforehand. In this case, Autosubmit will submit them individually. +* Strict: will always wait for MIN_WRAPPED tasks to be ready to create a wrapper. -Horizontal wrapper ------------------- +.. warning: Mixed and strict policies can cause deadlocks. -The horizontal wrapper is more appropriate when there are multiple ensemble members that can be run in parallel. +.. code-block:: YAML -If the wrapped jobs have an mpirun call, they will need machine files to specify in which nodes each job will run. -Different cases may need specific approaches when creating the machine files. For auto-ecearth use COMPONENTS instead of STANDARD. + WRAPPERS: + POLICY: "flexible" + WRAPPER_0: + TYPE: "vertical" + JOBS_IN_WRAPPER: "JOB_0 JOB_1" -.. code-block:: yaml +.. _Vertical: - wrappers: - wrapper: - TYPE: horizontal - JOBS_IN_WRAPPER: SIM +Vertical wrapper +================ +Vertical wrappers are suited for sequential dependent jobs (e.x. chunks of SIM tasks that depend on the previous chunk). Defining the platform’s `MAX_WALLCLOCK` is essential since the wrapper's total wallclock time will be the sum of each job and will be a limiting factor for the creation of the wrapper, which will not bundle more jobs than the ones fitting in the wallclock time. +Autosubmit supports wrapping together vertically jobs of different types. -In order to be able to use the horizontal wrapper, in ``platforms_cxxx.yml`` set the maximum number of processors allowed by the platform in use: +.. code-block:: YAML -.. code-block:: yaml + WRAPPERS: + WRAPPER_V: + TYPE: "vertical" + JOBS_IN_WRAPPER: "JOB_0" - marenostrum4: - ... - MAX_PROCESSORS: 2400 +.. _Horizontal: -.. figure:: fig/horizontal_remote.png - :name: horizontal_remote - :width: 60% - :align: center - :alt: horizontally wrapped jobs +Horizontal wrapper +================== -Shared-memory Experiments -~~~~~~~~~~~~~~~~~~~~~~~~~ +Horizontal wrappers are suited for jobs that must run parallel (e.x. members of SIM tasks). Defining the platform’s `MAX_PROCESSORS` is essential since the wrapper processor amount will be the sum of each job and will be a limiting factor for the creation of the wrapper, which will not bundle more jobs than the ones fitting in the `MAX_PROCESSORS` of the platform. -There is also the possibility of setting the option **METHOD** to SRUN in the wrapper directive (**ONLY** for vertical and vertical-horizontal wrappers). +.. code-block:: YAML -This allows to form a wrapper with shared-memory paradigm instead of rely in machinefiles to work in parallel. + WRAPPERS: + WRAPPER_H: + TYPE: "horizontal" + JOBS_IN_WRAPPER: "JOB_0" -.. code-block:: yaml +.. _Vertical-horizontal: - wrappers: - wrapper: +Vertical-horizontal wrapper +=========================== - TYPE: vertical - METHOD: srun # default ASTHREAD +The vertical-horizontal wrapper allows bundling together a vertical sequence of tasks independent of the horizontal ones. Therefore, all horizontal tasks do not need to finish to progress to the next horizontal level. -Hybrid wrapper --------------- +.. _Horizontal-vertical: -The hybrid wrapper is a wrapper that works both vertically and horizontally at the same time, meaning that members and chunks can be wrapped in one single job. -Mixed approach using a combination of horizontal and vertical wrappers and the list of jobs is a list of lists. +Horizontal-vertical wrapper +=========================== -Horizontal-vertical -------------------- +The horizontal-vertical wrapper allows bundling together tasks that could run simultaneously but need to communicate before progressing to the next horizontal level. -- There is a dependency between lists. Each list runs after the previous one finishes; the jobs within the list run in parallel at the same time -- It is particularly suitable if there are jobs of different types in the list with different wall clocks, but dependencies between jobs of different lists; it waits for all the jobs in the list to finish before starting the next list +Example: Crossdate wrappers using the the new dependencies +---------------------------------------------------------- +Considering the following configuration: .. code-block:: yaml - wrappers: - wrapper: - TYPE: horizontal-vertical - MACHINEFILES: STANDARD - JOBS_IN_WRAPPER: SIM&DA - -.. figure:: fig/dasim.png - :name: wrapper_horizontal_vertical - :width: 100% - :align: center - :alt: hybrid wrapper - - -Vertical-horizontal -------------------- - -- In this approach, each list is independent of each other and run in parallel; jobs within the list run one after the other -- It is particularly suitable for running many sequential ensembles + experiment: + DATELIST: 20120101 20120201 + MEMBERS: "000 001" + CHUNKSIZEUNIT: day + CHUNKSIZE: '1' + NUMCHUNKS: '3' + + JOBS: + LOCAL_SETUP: + FILE: templates/local_setup.sh + PLATFORM: marenostrum_archive + RUNNING: once + NOTIFY_ON: COMPLETED + LOCAL_SEND_SOURCE: + FILE: templates/01_local_send_source.sh + PLATFORM: marenostrum_archive + DEPENDENCIES: LOCAL_SETUP + RUNNING: once + NOTIFY_ON: FAILED + LOCAL_SEND_STATIC: + FILE: templates/01b_local_send_static.sh + PLATFORM: marenostrum_archive + DEPENDENCIES: LOCAL_SETUP + RUNNING: once + NOTIFY_ON: FAILED + REMOTE_COMPILE: + FILE: templates/02_compile.sh + DEPENDENCIES: LOCAL_SEND_SOURCE + RUNNING: once + PROCESSORS: '4' + WALLCLOCK: 00:50 + NOTIFY_ON: COMPLETED + SIM: + FILE: templates/05b_sim.sh + DEPENDENCIES: + LOCAL_SEND_STATIC: + REMOTE_COMPILE: + SIM-1: + DA-1: + RUNNING: chunk + PROCESSORS: '68' + WALLCLOCK: 00:12 + NOTIFY_ON: FAILED + LOCAL_SEND_INITIAL_DA: + FILE: templates/00b_local_send_initial_DA.sh + PLATFORM: marenostrum_archive + DEPENDENCIES: LOCAL_SETUP LOCAL_SEND_INITIAL_DA-1 + RUNNING: chunk + SYNCHRONIZE: member + DELAY: '0' + COMPILE_DA: + FILE: templates/02b_compile_da.sh + DEPENDENCIES: LOCAL_SEND_SOURCE + RUNNING: once + WALLCLOCK: 00:20 + NOTIFY_ON: FAILED + DA: + FILE: templates/05c_da.sh + DEPENDENCIES: + SIM: + LOCAL_SEND_INITIAL_DA: + CHUNKS_TO: "all" + DATES_TO: "all" + MEMBERS_TO: "all" + COMPILE_DA: + DA: + DATES_FROM: + "20120201": + CHUNKS_FROM: + 1: + DATES_TO: "20120101" + CHUNKS_TO: "1" + RUNNING: chunk + SYNCHRONIZE: member + DELAY: '0' + WALLCLOCK: 00:12 + PROCESSORS: '256' + NOTIFY_ON: FAILED .. code-block:: yaml wrappers: - wrapper: - TYPE: vertical-horizontal - MACHINEFILES: STANDARD - JOBS_IN_WRAPPER: SIM - -.. figure:: fig/vertical-horizontal.png - :name: wrapper_vertical_horizontal - :width: 100% - :align: center - :alt: hybrid wrapper - -Multiple wrappers at once -------------------------- - -This is an special mode that allows you to use multiple **independent** wrappers on the same experiment. By using an special variable that allows to define subwrapper sections + wrapper_simda: + TYPE: "horizontal-vertical" + JOBS_IN_WRAPPER: "SIM DA" -.. code-block:: yaml - - wrappers: - wrapper_0: - TYPE: vertical - JOBS_IN_WRAPPER: SIM - wrapper_1: - TYPE: vertical - JOBS_IN_WRAPPER: DA&REDUCE -.. figure:: fig/multiple_wrappers.png - :name: - :width: 100% +.. figure:: fig/monarch-da.png + :name: crossdate-example :align: center - :alt: multi wrapper - -Summary -------- - -In `autosubmit_cxxx.yml`: - -.. code-block:: YAML - - # Basic Configuration of wrapper - #TYPE: {vertical,horizontal,horizontal-vertical,vertical-horizontal} # REQUIRED - # JOBS_IN_WRAPPER: Sections that should be wrapped together ex SIM - # METHOD: Select between MACHINESFILES or Shared-Memory. - # MIN_WRAPPED set the minim number of jobs that should be included in the wrapper. DEFAULT: 2 - # MAX_WRAPPED set the maxim number of jobs that should be included in the wrapper. DEFAULT: TOTALJOBS - # Policy: Select the behaviour of the inner jobs Strict/Flexible/Mixed - # EXTEND_WALLCLOCK: Allows to extend the wallclock by the max wallclock of the horizontal package (max inner job). Values are integer units (0,1,2) - # RETRIALS: Enables a retrial mechanism for vertical wrappers, or default retrial mechanism for the other wrappers - - wrapperS: - wrapper: - TYPE: Vertical #REQUIRED - JOBS_IN_WRAPPER: SIM # Job types (as defined in jobs_cxxx.yml) separated by space. REQUIRED only if vertical-mixed - MIN_WRAPPED: 2 - MAX_WRAPPED: 9999 # OPTIONAL. Integer value, overrides TOTALJOBS - CHECK_TIME_WRAPPER: # OPTIONAL. Time in seconds, overrides SAFETYSLEEPTIME - POLICY: flexible # OPTIONAL, Wrapper policy, mixed, flexible, strict - QUEUE: bsc_es # If not specified, queue will be the same of the first SECTION specified on JOBS_IN_WRAPPER - #EXPORT: Allows to run an env script or load some modules before running this wrapper. # If not specified, export value will be the same of the first SECTION specified on JOBS_IN_WRAPPER - -In `platforms_cxxx.yml`: - -.. code-block:: yaml - - marenostrum4: - ... - MAX_WALLCLOCK: - MAX_PROCESSORS: - PROCESSORS_PER_NODE: 48 + :alt: crossdate-example \ No newline at end of file diff --git a/docs/source/userguide/wrappers/old_index.rst b/docs/source/userguide/wrappers/old_index.rst new file mode 100644 index 000000000..42e133db3 --- /dev/null +++ b/docs/source/userguide/wrappers/old_index.rst @@ -0,0 +1,272 @@ +Configure Wrappers +================== + +In order to understand the goal of this feature, please take a look at: https://earth.bsc.es/wiki/lib/exe/fetch.php?media=library:seminars:techniques_to_improve_the_throughput.pptx + +At the moment there are 4 types of wrappers that can be used depending on the experiment's workflow: + +* Vertical +* Horizontal +* Hybrid (horizontal-vertical and vertical-horizontal approaches) +* Multiple wrappers - Same experiment + +When using the wrapper, it is useful to be able to visualize which packages are being created. +So, when executing *autosubmit monitor cxxx*, a dashed box indicates the jobs that are wrapped together in the same job package. + +How to configure +---------------- + +In ``autosubmit_cxxx.yml``, regardless of the wrapper type, you need to make sure that the values of the variables **MAXWAITINGJOBS** and **TOTALJOBS** are increased according to the number of jobs expected to be waiting/running at the same time in your experiment. + +For example: + +.. code-block:: yaml + + config: + EXPID: .... + AUTOSUBMIT_VERSION: 4.0.0 + ... + + MAXWAITINGJOBS: 100 + TOTALJOBS: 100 + ... + +and below the config: block, add the wrapper directive, indicating the wrapper type: + +.. code-block:: yaml + + wrappers: + wrapper: + TYPE: + JOBS_IN_WRAPPER: + +You can also specify which job types should be wrapped. This can be done using the **JOBS_IN_WRAPPER** parameter. +It is only required for the vertical-mixed type (in which the specified job types will be wrapped together), so if nothing is specified, all jobs will be wrapped. +By default, jobs of the same type will be wrapped together, as long as the constraints are satisfied. + +Number of jobs in a package +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: yaml + + wrappers: + wrapper: + TYPE: + MIN_WRAPPED: 2 + MAX_WRAPPED: 999 + POLICY: flexible #default is flexible. Values: flexible,strict,mixed + + +- **MAX_WRAPPED** can be defined in ``jobs_cxxx.yml`` in order to limit the number of jobs wrapped for the corresponding job section + - If not defined, it considers the **MAX_WRAPPED** defined under wrapper: in ``autosubmit_cxxx.yml`` + - If **MAX_WRAPPED** is not defined, then **TOTALJOBS** is used by default +- **MIN_WRAPPED** can be defined in ``autosubmit_cxxx.yml`` in order to limit the minimum number of jobs that a wrapper can contain + - If not defined, it considers that **MIN_WRAPPED** is 2. + - If **POLICY** is flexible and it is not possible to wrap **MIN_WRAPPED** or more tasks, these tasks will be submitted as individual jobs, as long as the condition is not satisfied. + - If **POLICY** is mixed and there are failed jobs inside a wrapper, these jobs will be submitted as individual jobs. + - If **POLICY** is strict and it is not possible to wrap **MIN_WRAPPED** or more tasks, these tasks will not be submitted until there are enough tasks to build a package. + - Strict and mixed policies can cause **deadlocks**. + + +Wrapper check time +~~~~~~~~~~~~~~~~~~ + +It is possible to override the **SAFETYSLEEPTIME** for the wrapper, by using **CHECK_TIME_WRAPPER** and defining a time interval (in seconds) in which the wrapper internal jobs should be checked. + +.. important:: Note that the **numbers** shown in this documentation are examples. The actual values must be set according to the specific workflow, as well as the platform configurations. + +Vertical wrapper +---------------- + +The vertical wrapper is more appropriate when there are many sequential jobs. To use it, set TYPE: vertical: + +.. code-block:: yaml + + wrappers: + wrapper: + TYPE: vertical + +In order to be able to use the vertical wrapper, in ``platforms_cxxx.yml`` set the maximum wallclock allowed by the platform in use: + +.. code-block:: yaml + + marenostrum4: + ... + MAX_WALLCLOCK: 72:00 + +Remember to add to each job the corresponding WALLCLOCK time. + +Vertical with multiple sections +------------------------------- + +This is a mode of the vertical wrapper that allows jobs of different types to be wrapped together. +Note that the solution considers the order of the sections defined in the ``jobs_cxxx.yml`` file, so the order of the sections given in **JOBS_IN_WRAPPER** is irrelevant. +Additionally, jobs are grouped within the corresponding date, member and chunk hierarchy. + +.. code-block:: yaml + + wrappers: + wrapper: + TYPE: vertical + JOBS_IN_WRAPPER: SIM&SIM2 # REQUIRED + +.. figure:: fig/vertical-mixed.png + :name: vertical-mixed + :width: 100% + :align: center + :alt: vertical-mixed wrapper + +Horizontal wrapper +------------------ + +The horizontal wrapper is more appropriate when there are multiple ensemble members that can be run in parallel. + +If the wrapped jobs have an mpirun call, they will need machine files to specify in which nodes each job will run. +Different cases may need specific approaches when creating the machine files. For auto-ecearth use COMPONENTS instead of STANDARD. + +.. code-block:: yaml + + wrappers: + wrapper: + TYPE: horizontal + JOBS_IN_WRAPPER: SIM + + + +In order to be able to use the horizontal wrapper, in ``platforms_cxxx.yml`` set the maximum number of processors allowed by the platform in use: + +.. code-block:: yaml + + marenostrum4: + ... + MAX_PROCESSORS: 2400 + +.. figure:: fig/horizontal_remote.png + :name: horizontal_remote + :width: 60% + :align: center + :alt: horizontally wrapped jobs + +Shared-memory Experiments +~~~~~~~~~~~~~~~~~~~~~~~~~ + +There is also the possibility of setting the option **METHOD** to SRUN in the wrapper directive (**ONLY** for vertical and vertical-horizontal wrappers). + +This allows to form a wrapper with shared-memory paradigm instead of rely in machinefiles to work in parallel. + +.. code-block:: yaml + + wrappers: + wrapper: + + TYPE: vertical + METHOD: srun # default ASTHREAD + +Hybrid wrapper +-------------- + +The hybrid wrapper is a wrapper that works both vertically and horizontally at the same time, meaning that members and chunks can be wrapped in one single job. +Mixed approach using a combination of horizontal and vertical wrappers and the list of jobs is a list of lists. + +Horizontal-vertical +------------------- + +- There is a dependency between lists. Each list runs after the previous one finishes; the jobs within the list run in parallel at the same time +- It is particularly suitable if there are jobs of different types in the list with different wall clocks, but dependencies between jobs of different lists; it waits for all the jobs in the list to finish before starting the next list + + +.. code-block:: yaml + + wrappers: + wrapper: + TYPE: horizontal-vertical + MACHINEFILES: STANDARD + JOBS_IN_WRAPPER: SIM&DA + +.. figure:: fig/dasim.png + :name: wrapper_horizontal_vertical + :width: 100% + :align: center + :alt: hybrid wrapper + + +Vertical-horizontal +------------------- + +- In this approach, each list is independent of each other and run in parallel; jobs within the list run one after the other +- It is particularly suitable for running many sequential ensembles + + +.. code-block:: yaml + + wrappers: + wrapper: + TYPE: vertical-horizontal + MACHINEFILES: STANDARD + JOBS_IN_WRAPPER: SIM + +.. figure:: fig/vertical-horizontal.png + :name: wrapper_vertical_horizontal + :width: 100% + :align: center + :alt: hybrid wrapper + +Multiple wrappers at once +------------------------- + +This is an special mode that allows you to use multiple **independent** wrappers on the same experiment. By using an special variable that allows to define subwrapper sections + +.. code-block:: yaml + + wrappers: + wrapper_0: + TYPE: vertical + JOBS_IN_WRAPPER: SIM + + wrapper_1: + TYPE: vertical + JOBS_IN_WRAPPER: DA&REDUCE + +.. figure:: fig/multiple_wrappers.png + :name: + :width: 100% + :align: center + :alt: multi wrapper + +Summary +------- + +In `autosubmit_cxxx.yml`: + +.. code-block:: YAML + + # Basic Configuration of wrapper + #TYPE: {vertical,horizontal,horizontal-vertical,vertical-horizontal} # REQUIRED + # JOBS_IN_WRAPPER: Sections that should be wrapped together ex SIM + # METHOD: Select between MACHINESFILES or Shared-Memory. + # MIN_WRAPPED set the minim number of jobs that should be included in the wrapper. DEFAULT: 2 + # MAX_WRAPPED set the maxim number of jobs that should be included in the wrapper. DEFAULT: TOTALJOBS + # Policy: Select the behaviour of the inner jobs Strict/Flexible/Mixed + # EXTEND_WALLCLOCK: Allows to extend the wallclock by the max wallclock of the horizontal package (max inner job). Values are integer units (0,1,2) + # RETRIALS: Enables a retrial mechanism for vertical wrappers, or default retrial mechanism for the other wrappers + + wrapperS: + wrapper: + TYPE: Vertical #REQUIRED + JOBS_IN_WRAPPER: SIM # Job types (as defined in jobs_cxxx.yml) separated by space. REQUIRED only if vertical-mixed + MIN_WRAPPED: 2 + MAX_WRAPPED: 9999 # OPTIONAL. Integer value, overrides TOTALJOBS + CHECK_TIME_WRAPPER: # OPTIONAL. Time in seconds, overrides SAFETYSLEEPTIME + POLICY: flexible # OPTIONAL, Wrapper policy, mixed, flexible, strict + QUEUE: bsc_es # If not specified, queue will be the same of the first SECTION specified on JOBS_IN_WRAPPER + #EXPORT: Allows to run an env script or load some modules before running this wrapper. # If not specified, export value will be the same of the first SECTION specified on JOBS_IN_WRAPPER + +In `platforms_cxxx.yml`: + +.. code-block:: yaml + + marenostrum4: + ... + MAX_WALLCLOCK: + MAX_PROCESSORS: + PROCESSORS_PER_NODE: 48 -- GitLab From be4b8feb70e25fe71fc88570be439b73b80e196e Mon Sep 17 00:00:00 2001 From: dbeltran Date: Thu, 12 Jan 2023 09:00:52 +0100 Subject: [PATCH 2/8] Fixed vertical-wrapper that were using an older code. --- autosubmit/job/job_packager.py | 48 ++++++++++++++++++++++++++++------ 1 file changed, 40 insertions(+), 8 deletions(-) diff --git a/autosubmit/job/job_packager.py b/autosubmit/job/job_packager.py index d0bbe481c..293c4f636 100644 --- a/autosubmit/job/job_packager.py +++ b/autosubmit/job/job_packager.py @@ -660,11 +660,12 @@ class JobPackager(object): if job.section == section: horizontal_packager.wrapper_limits["max_by_section"][section] = horizontal_packager.wrapper_limits["max_by_section"][section] - 1 horizontal_packager.wrapper_limits["max"] = horizontal_packager.wrapper_limits["max"] - actual_wrapped_jobs - for job in horizontal_package: - job_list = JobPackagerVertical([job], job.wallclock, horizontal_packager.wrapper_limits["max"], - horizontal_packager.wrapper_limits, - self._platform.max_wallclock, self.wrapper_type).build_vertical_package(job) + for job in horizontal_package: + dict_jobs = self._jobs_list.get_ordered_jobs_by_date_member(self.current_wrapper_section) + job_list = JobPackagerVerticalMixed(dict_jobs, job, [job], job.wallclock, + horizontal_packager.wrapper_limits["max"], horizontal_packager.wrapper_limits, + self._platform.max_wallclock).build_vertical_package(job) current_package.append(job_list) for job in current_package[-1]: @@ -734,12 +735,43 @@ class JobPackagerVertical(object): return self.jobs_list def get_wrappable_child(self, job): - pass + """ + Goes through the jobs with the same date and member than the input job, and return the first that satisfies self._is_wrappable() - def _is_wrappable(self, job): - pass + :param job: job to be evaluated. \n + :type job: Job Object \n + :return: job that is wrappable. \n + :rtype: Job Object + """ + # Unnecessary assignment + sorted_jobs = self.sorted_jobs + for index in range(self.index, len(sorted_jobs)): + child = sorted_jobs[index] + if self._is_wrappable(child): + self.index = index + 1 + return child + continue + return None + def _is_wrappable(self, job): + """ + Determines if a job is wrappable. Basically, the job shouldn't have been packed already and the status must be READY or WAITING, + Its parents should be COMPLETED. + + :param job: job to be evaluated. \n + :type job: Job Object \n + :return: True if wrappable, False otherwise. \n + :rtype: Boolean + """ + if job.packed is False and (job.status == Status.READY or job.status == Status.WAITING): + for parent in job.parents: + # First part of this conditional is always going to be true because otherwise there would be a cycle + # Second part is actually relevant, parents of a wrapper should be COMPLETED + if parent not in self.jobs_list and parent.status != Status.COMPLETED: + return False + return True + return False class JobPackagerVerticalMixed(JobPackagerVertical): """ @@ -776,7 +808,7 @@ class JobPackagerVerticalMixed(JobPackagerVertical): if ready_job.member is not None and len(str(ready_job.member)) > 0: member = ready_job.member # Extract list of sorted jobs per date and member - self.sorted_jobs = dict_jobs[date][member] + self.sorted_jobs = self.dict_jobs[date][member] self.index = 0 def get_wrappable_child(self, job): -- GitLab From b3dd2c7463ba8e161ade17549c8125d8d5b9e809 Mon Sep 17 00:00:00 2001 From: dbeltran Date: Thu, 12 Jan 2023 09:02:48 +0100 Subject: [PATCH 3/8] Added todo --- autosubmit/job/job_packager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autosubmit/job/job_packager.py b/autosubmit/job/job_packager.py index 293c4f636..8ea82de4e 100644 --- a/autosubmit/job/job_packager.py +++ b/autosubmit/job/job_packager.py @@ -677,7 +677,7 @@ class JobPackager(object): return JobPackageVerticalHorizontal(current_package, total_processors, total_wallclock, jobs_resources=jobs_resources, method=self.wrapper_method[self.current_wrapper_section], configuration=self._as_config, wrapper_section=self.current_wrapper_section ) - +#TODO rename and unite JobPackerVerticalMixed to JobPackerVertical since the distinguisment between the two is not needed anymore class JobPackagerVertical(object): """ Vertical Packager Parent Class -- GitLab From 91d9b603fb1a8e78493c7983c59f2a564d911afe Mon Sep 17 00:00:00 2001 From: dbeltran Date: Thu, 12 Jan 2023 15:53:33 +0100 Subject: [PATCH 4/8] added docs fixes to job_packages --- autosubmit/job/job_packages.py | 6 +++--- .../fig/advanced_conf.jpg | Bin 0 -> 135276 bytes .../set and share the configuration/index.rst | 10 ++++++++++ 3 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 docs/source/userguide/set and share the configuration/fig/advanced_conf.jpg diff --git a/autosubmit/job/job_packages.py b/autosubmit/job/job_packages.py index 2a5878e41..c715eb594 100644 --- a/autosubmit/job/job_packages.py +++ b/autosubmit/job/job_packages.py @@ -682,7 +682,7 @@ class JobPackageHorizontal(JobPackageThread): num_processors=self._num_processors, jobs_scripts=self._jobs_scripts, dependency=self._job_dependency, jobs_resources=self._jobs_resources, expid=self._expid, rootdir=self.platform.root_dir, - directives=self._custom_directives,threads=self._threads,method=self.method.lower()) + directives=self._custom_directives,threads=self._threads,method=self.method.lower(),partition=self.partition) class JobPackageHybrid(JobPackageThread): """ @@ -727,7 +727,7 @@ class JobPackageVerticalHorizontal(JobPackageHybrid): wallclock=self._wallclock, num_processors=self._num_processors, jobs_scripts=self._jobs_scripts, dependency=self._job_dependency, jobs_resources=self._jobs_resources, expid=self._expid, - rootdir=self.platform.root_dir, directives=self._custom_directives,threads=self._threads,method=self.method.lower()) + rootdir=self.platform.root_dir, directives=self._custom_directives,threads=self._threads,method=self.method.lower(),partition=self.partition) class JobPackageHorizontalVertical(JobPackageHybrid): @@ -738,5 +738,5 @@ class JobPackageHorizontalVertical(JobPackageHybrid): wallclock=self._wallclock, num_processors=self._num_processors, jobs_scripts=self._jobs_scripts, dependency=self._job_dependency, jobs_resources=self._jobs_resources, expid=self._expid, - rootdir=self.platform.root_dir, directives=self._custom_directives,threads=self._threads,method=self.method.lower()) + rootdir=self.platform.root_dir, directives=self._custom_directives,threads=self._threads,method=self.method.lower(),partition=self.partition) diff --git a/docs/source/userguide/set and share the configuration/fig/advanced_conf.jpg b/docs/source/userguide/set and share the configuration/fig/advanced_conf.jpg new file mode 100644 index 0000000000000000000000000000000000000000..02321ffd0e06c0ce57a9c2fb3bc88acf12f0cd9d GIT binary patch literal 135276 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
I+Ue5Op|#=X!HltqQ6;S4=RZ8(Kkejy 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�P>$QfcE8FFSn84FlR_lnsQke4*D6Hl{|VCxDjZ zq(O#G8#W{z{6qa?_n%wgset#bU@ACb$lMeFzKY6sGL!MeAP;)E7|7td z^0o_#^+BTd&AmUI08$Tyt2VqaIkcTc9aGv$201zAL?P{* zXtWbHrvuZVz{CsfNf97iFC@G$MeC6O__0pU|vURyd!i>3R zseMf(jm6Zg!MgUjR#zEd?S0gzrTF%O4sxYd+|A5}--t4V%a9Y}oszRgpy3u1oD*WX6B)nA8gb>+~ta<^I zu|2=XgAUK?!WTuvqMOa$=k~{1zcVG0@&4R~^|1P2UsNvEOaFWxVo*C?5MdWtL_y;w z{9va`o-c8xyKRmyymY8yIMa_w@d&&7YTIu5vP$#f_4@V4w`JsjK)n&nfIZ7_Dzx1A z;|haGGJm6jQtlio>m0uQC^;cXI9lP;604YBHh54ulNPnABgnx~>qoD>8o@KPEV+EE zd`j^Xvs^Q7^;6oQ{{*e%!^IDu+XnU8$9Rh^>IJp^g(6$XxM2oY;Ip9{_lp{w0>< z0|yN~o9Sj0c%OCAyXtpJNNwHh*`yaijNk-Ik`-6Hzk{C#U2Nwu(c1lH1!UG=tOh5! z^o3}1EiXIHU}U8FYDq=hbrz*D4a=btt7!`rUoGu>a-J?0U|89}jM8cFo2lxD=V7gr z?nbuNk|#ZV(PB!0S=1b~5MYjMowh}XxYuM|y(HNzqVdvMq0V6Q*N1PA-~)nk*G+AP zl}S+;nM!wp!(uJ;+oS1tfMbRB%9z3l^V7P1(;$}0iB-QCxM0%6qI7hk>4b+L!o~ zAY2+_sa3PX!ZZ|{hmT8WNVXQEx?*oIR*#ms4r;NG9a9E_gUJ(8K&=) zzrdt^IbaN=$Bu?XI2!#??{?g zWF!__AL*2;>ytRWlQl4%e9^=NJ!aF*p4b^)>}g*6zTObQnHj9M?Wn?HY8UV{pk+K;w7;!THtxtuuPV*weH+D#^H_0~bRkbjvvK)B1fFN*lf4%CtjD@pBwB2Mr z-iP$AkZP!~kWc(p)Cae|#x<>49GIi=eE*tSp=#xWa__2~*h< zfuq91QGw%l?a8R489yp;oLgZPJu>+>9T7Mt#oy_rACXm=&0?x9M$p7 zaYOHz*q1vl#2${@w|a|4Tw=|Jv#V_4y17hidd=l+;?kUg@xb6%n3o>iMGPy5P$2(E z+__7fFr)L7ZJ&=zyH=1(xMObFY*Y=wvOq+&_xlYtzUiFl=U#xQKgzUKFkh7j47ct| z>sKfq>@#04>74zNMFQXG@6# z52^G40LZ2$a>ts;8{%4zmeb_vAF|)55oUA+42?j#v1XcbQYI(fZ0VpN->&Baok}df zq&O+u_3GAyRGNGH%Dt9bd3t#_74I*8IdWjE2MB&u4g|FZzGv3fe{z3-IWI2aLWy}z zbOkg`HmmZNmZt;&AR#kFu|9rrK`=e-E4r%&zfjL~$*Lj=P9B<01 zSaT~jv;VOww+&xH^b$BYyUg^?qv{F~i$QJURujN5+Ds^ZF|}7mFcmouB=gp~S5MB} zzR8wKY|>A8FsSE1%XnZp@&olrRT$qi{U-s3QDOX%}?!qNNYHKpRb;@ z)$Wv+iDlpb4V372_41lfl92v_icla+piScw=KFu?wb4OF&}Et0O9`IaE=e}v0wtuJ zl#W!$=ofKIY{9fvT%IVrKEr&6y|ie6-47QckDoYkKR5gN>ou*36M~MWMUdbhA|tgG zXEz;|vKhg zi^aA?AAc49Qs}kh8p~fjvo%s{Yk00rTTRHzyu`uVo;3%q4e?T9n1@wJ5HT1gg1{7@ zD9)F#zIVfeGg@qc0!aaDQIq`)%1DyXWO6o0U|kQ1=;LLmU3-l70c$wV7dPk7X3pEZ zzjOgZ-g*cN_d|nCaQPk{PTt~y!)drlz*=zw;@uf>s%dWhkazK>dx{ENi^#VXs;QC^_!Eujo|xpnmX6=ft#OR& zzjx0m$UA1tt>|7w`crO-w(6IDtpP2l0Cc#3hvDtTQY!$9xW}}2-SxV=k0+(*^*u8) zb7{fw9|ZMgkWrIR>oGKo+N}Ej9SX^xJ_=u)_;FPC3$yEoFA_2(Z_1;|+@@pH?daj5 zPZ(;{m;%L{0Um2f`E-z}t%F}!)I07t)%3Vt?DP0shg4r%qVpO}5H9~R%e=3#lpz2= z0h(fCCef6}QXh-elIEoeiZzM(RZtkQoIwI}?c{Lv~eBzBH7r=V=?OPiBo9&xC$ zFi3F8?SWUDs;snWJG$I7FkWGMQJ=P9kuFxYM{;*0>ucvLLISuqf!>bJ!1LD8xDgyd zG@@+mJxh;2&9P-+BeiiYS=M0MOhG$yr|yw7_wc%{>E*~2uPj?Pw1VRMlg}^}b^K?i zH5J-7OK)_2fgx^HjzAzEqRd550*$R$ZL z#n!Apsr%K{XZ#5P<7iOtg?Ll_3m#f?RxCu_aR#`E_S)5n=fl}3Nf6>P(kD6hWi>Tw zv#XaI-WbKA!BX+~niwxUtMPdVdzVXIV{hzqppm=#ZpD>_@QUQ;n;f5u0LJ-%M5>{n zExov578Fpa;LiLkyzZG9mq7o@wqO^*&^^!90y~AMvCYoSiPPJiSt#(%c8vcP(@~>R z52Td%Wxl^G#l~K#cDHWoo2uhbK1H+xVjo&JsCz=x+R(Y)MiAJ?Py;NBrQL1T6=3+y ziiyD^Wc^#d(taGY6}Kogvc!L)kuMZ|fUlFRT^AGL#1fSaZg5qR zwhHbs2^U=>r3z|F2KpsZowb3d%?;!2pl(G6O>*U2i(*)NHPwM4M^N!HkAN&g+cJ+; zaeUQO1RO-2E2{)xuIHd=xuhs`4X1oiOBMsHn5&C2w2I-K%aS)Mh5+UiR@X5V2OKK%v#zL^hj@~S zNVfwHJz78ze-&nwZ|<3!vT!^5(ScTv%!Tym;zeW)$-mJK%74e4*94>-;NqQhK6$(Z zOMpe=I-~2_V}Sn))m}A8xN(0f?D$hx&a;BqX|Yk}&W>?dCyV0oH6GXBhls!L=pN_k zk^jaxe@!;ODlY_iZ=B}K&SCo*sN3C6U%_Z0_%{3M6~XBwUC}6gT;w>Cx01!z0+`9x z8)rofw0BDD*w9H*6+=roLb%gvMV%PSmLPhrN8dJGg=im13WCjDIQ^(8ZAPVGF_iDo z0EN#zThs>npo$36Da0%wdys_o7A=b!9ch9%kj2!V5p%>)F;;tBZiUkA^>xo5rVvDGcNKYQrWU&S$XZJvQLMl@+KnLiMJ z%rW^lQ~mGW_)n!LW@PR}TNS9^x@c3;@K;)R0*Y(Egb}5NM1qvM)&vAFEPjdy+k5w9 zc&78gu)Y)ID2#RJWO z2e{Ebr5=dDeuuCYjjY1wWg0}%&|0D`$Rr3Q8o~dvsE6* zQM@+*&^{inRHQX<0dZGa>{FMBuR&jb&GnRvLgMn;TK(f(l!+_w%( zUIYpA3CJ_ld%!}+YJ0(<<@nAyS(}I2uOEzL&m43jC6|e96d6qM}KPp;9(il$)IC%f(UpI_hc@RRF#*C5+ZI@ zn~#^DP$_Q3O7(XQk^0R-SgO=@wRQs=a05gkQyeRBdt=+Ak z#LwQQ2ZF2~R(*B?fkrb<-SsKPJk3kjN9^o7Ag*@ra$IG^WJd-`3Va}>S(Pme1!r5z zjs#vWg+&iJI#=w=i%YI)TM6jaNSnIMd0_>eK_!JyZU)s7oqb2vj>j7@pS`HVmf}RL zKos>8+2dcyM~+um(A)G0ut>bcS1|zrIF2B2rAPk7EO!Rpy3Mtn5oeq8&T+`bR-x88 zYgg^~9ifVLe!;!=c%iuoXT81-e%Tza@=n_48%%er8gLC0If0?F1%a)Gl74Ebq)7!z zQMy9SrXL!QGO*A>I+T+xMH}lXac5X=i)GPgnu$CKCYtyj;<*TFZY5vGtr6-1@u4CH zi=8Qm&ibK0D=q*ll5ln1Kdan!EEQ>y?{fd1qS2jJ_hI0+dOpr3zL@Xnl)QDHS3Q*~ zj4o%9O)}-615E5lMvXzbIFy)P$ zop1(BwC2QS4|CKIKZ=AUG=+9x#av3~%Zzhzjlcm@K^vgu0KzRppqUK9Xb>bP$ zbqgNbVCmE@!z$-i-;ZQm;OlDPtf2>Z-}7|CjjMV>A*vqPbRlCLPA|toaBEo+qGXG! z;=KO*koxzPxEGI#1}19!p)>XJJ4jGo&%O7*rT?FaU-AJs?hjs-zgO!6ULVA3`Sa6& z@x-&WZ*=*t&RzUvCtfl4;~AHx*y?4&?@T8o(x08px-xM|eW6I|+XX_<1(C?#6TiQ` zKEQ7t$}WGL#(n?>_e^YDN^~aoggEw}@hWZ@o)G-bL{eNATw?Vu7gYL;=Uy5m=)Q4& zQ4JP^Y%wCjVUPt;q>?DcZ(_dT`t2ZJA*+9ahxh*R58;IWn%OrS@ir!7$}mOo@Ob`L!{_x{yl|s*Cq&9{MBjrx+lpevk_GN^tl^v97@^*hKBARlg&A?c zkh^s+$(k%=l{*WP$JJVoyNJni_{+aP!;TGP{6Et1TT+pM{U2w6%liRs1#d?dk2vcig%q--3+!XTR2 za3E*u7A|ZOsINScC2e&h3E124Z44rt5wh<;;dy%>pX#iH(u{>Zmlayeo^0(6fxx+@-FZecGW&zWE{1kf~oDL9E) z=3WeZ)4q$gJRspJC|f~@u#0{pAzbB4Y7ea}%PV-AxA%?qP-*W>wC$)%*lC7!zZbIZ zOGlb^Vz#~pDAg)>o;E_dwwirgCt{L|3vh32A61D7l$aB(vMbC?)%^rT(muiBl&#XZ zy#(Xi2eZ>kO+nt-{q+i)vSkyJVLA;_A>8fsq%#_fMg#H#D8uvNF5X_=USHv<6c0kc zrQu^Ot_>-BFPGp-d5t=uF(FcY+fshp8m2?rJ^qTIPjq|ynzz*BW@%e-wT4G0@Srr6 zfo%uhf`BqJpsuMaYR=G<+uAL)&DS^>?t}zsxCm|m{Cc1jMp(@cStVrma?-Y;Z&q{y zVOdawAqAwpNGMuykVeI~r?eM2S`UE4unhclhhr$ik8=$dmCB|oY^Uc8<3?mW@^zfP z5_MHcT>0XI)=_U)Ew|JN^=Z~(uyMOFqVJX^DttDf9+WkxN(6{@c)YWMtavq3Y_2b{ zo^^hz*Z)I`U=3bZTdX$8$$Jp6n*0K46nre&Dge=5czNDEfAGLq_d$}8%n?6LwCIIzFNZ>r#ei$)I)DBJAU{(8Z&zWwFC&Md4*y-w}p>sYr7pOta zd-VJdz2xpGaP1Lx*472a{`#JJRv>uN2?nYD3$}}1TQ=vI z)vFoh%w~@HGcr>JR!E~?#P@;sqii?GA+rg24_7kUj}QH6)gJp2r#FQp8VOqQaN`+l z1A?Z%t%iRQU0jGZ`lVyDHcGiYFj1k)DXUVi@vkdgnyS&nx1slWwAQP?t(d!hUon%N z-~M&Q-1=`T=DmE}qzePL<+cTJpLbx)2<%%TCGXm3OBhsgG4@~}+woM!yuLX3ry2YG z;vcbFBB~BG9VO@89iwg;}gRN4LGUF4(QD36D=RQSHkT9c1`qXwgGbqe}bQ z2eE3$r%s1tC9mcM-+Az5KH2%DOaq!j5SxcquEE{_DpK=fLWWlnABRMtz>X2upZ-Qx z)IyejdN<=^TX8@|OUQ*pF-WUG zR*f=>o<>DcT8j|8DO>B+xvF=n{SqG?`=FC+zX^(va3+txnUnV#UEP7%4M);SL{U?+$am6qs;!)cp1e@}238>!F|8|F`$rd3;DJ$M)+oS4@F>8DNWgnTG-0d^h|ug#q0hiTsP5RzFpF zZ5ek(gkbT=u|@PzQ<6Tj*GvFSs6dEQOjoCf4CF9p0Nc>CbXA;Z3U8|#X#j;k~(tMl*7wa9bt zQ$e^b{jwqRCH~P(P8+PmEnsK5vKxQpkRMih4EGHflTXBzs@9%M86gYD` z(?w+_5IG~tdmMISWRbD2{xl0E4&188$mxn71TN}LCqAYoSouDk@Fdm$#6S^>70rY+ zEI^(Vt-ux;C}JXGakYu1^@%&rU9wYuUgE4Lha%lV-L(C5r1{KsyGes)tCddgR9qM_ zniFuK{c#NUPk$`uT@(uAQzS!$B9zA>X2R)(@=_zRK7Th>842Ua z0SiMHvp?VDa%?W*;I|6yn)43LYdGr&OEUzm%9jRwQx^*}3h@5i%@5@=maF6^3`n!E z5|jZ6MSj~n?J=wp;9o_6@l&EFTS%u5Ba9{Q0kY} zgK0Ie$=TFfz^t4)^`);2rTM8?v$j16O-m-DKt)}RGh_|b*nZ2RSG6A`2@4>juI)Eu z<;FvzTESw?`!8g^M}28t1D`I<4|zAqt91}s*y=Z6?$O%cGNDWYq7Ujtxuqr?_MSyR z`LZ&~Und5n7};*+Kj-M74*8lKFI=U4L40TO#pOU|9)o{s+bLvlnMn|>=It!$kAB{( zxdLh}sI{iswH#h_UgNBu9EbVYqQ>Miu9fzIuZyuIK&(gnOfE#ND#dC;4&_c{5Q}Vx zk~U?zt47`_>e~7htJY!(^+?eWUWY$nghr>88?&FG05*s z^`2Zm%ck*6v+2pNcW<~Del-xsmPGDF3;P4D3@29-&cL>|@S_y3;wV7h<10rcdpY7! zyvFyQV@Fh8&0mjd!+z^L{{rH2)+45_c=8b|m@CIWCM7y{)YSFF?x-2;nB5{+Cd5^3?4zhqx62fT8{yOJ`cA@yYe|yhqmNwmL&3g^PMoXS4)xSRKqu(2l ziZTzf{mC!*_I`R<0E`!3P9A6*~+NhZ}UAztH|f3^QAR1UNq zY;!ND66O;R%*9Z%z4t2e8|rF9ZwaE}=z^iIODxL-If}JvonGc_x3$vuk|!Dw=db~M zvS@!3W($(GQO+-JlV>8oGns0e0v<3ynyu6^sjZ5E z`aW~lfmE;7I@ba7z$7Q@xmH*&f>~GQtV2k>+Q1bmX?Zp4*#6_Qy-y@9yEZknGIM%p zpmT_EQL_pqD#MY0vjkm&;~{}Z2!giAuvovZQbVxU_y43){`3<6SqD_W#D%^Jy;(^4 ziWeNE%|K7HKgZfo;uGwa@E{2MOJ7&L-)k37HJAMA8MBZd`GyU7T7zX=Z+c^A7Sn4c+!rJm={3*wu5Nxm8*< zF6~X1m^}!J(7rfg-1~Ohgf2Ggx9^qX1&fn{gq_Bl{5n*uv7zSQl6$}*9N{U|lu*5R z$mi333$rq`R|hAHulgwp3)|#c>+SEdusFt3R5bTg4pv$4H^Ppy$B*QYQ+8;q_;pf5L4 zy^G&_SKNG2$GZC{R$!XPq7(_N6NM%;ObN>?dO)(|ukNB%!Essc)7u3`%Ad#h`}J7) z6p64felLNnUVW`*OptqJh)h;Hy?0LO=hv(={Zh?)0+j3SHK!s5c7!vM4V%%$9u8u@ zMgEX5PUbVeb_O6P+m3xcZ*d~7BhJ25B46m!B1Vb}I(y&%_&8tP?1pqZ8{~C&E~%WFku~376Ugp2R(hm6A{r*dIZ7R4?SfZr(Yh4{ys~H& zbO(X_FEcKXgr!Aq7~7?R7hX7)Ug?_ibLr&@$#DcBbaaELC=zeNhBh^C#+)IP*-0v$ zA|!7=sO}$i-z>=~BLPYkEFU`T@V1o$c{9%4$T-41-~ej(F$V{**P390Wl6T)NXfBH zu1~BD{)X~Aieu|UF#!guV_mng52Xdf9yTKx1IlNM~^==(KCe|4XyMEmW)lf2ns3X zwRvWvyJ_Qd?z%@wZDq5|flX9)w&7^~oda3V1G(eaKcxNpC&#A7!xn>9V+{Aiyt&0` zicbzNj2v*v<}>(3KW|QOCT;-cN{`4 z5L(aJSn)4@iil#?H974G5H^=HOR`HB9fzB^9G(G)hi%+oI<4X|x%@naU&?cllTB3W z34|sMEdI`vic%Rx+})UAi7%ZF3PX~e9AHC~qFd%l1#1#8Bh>4^lvhX{9ab`SWB2FG z1KZ~TdLaVenH+1(*Pm$aRWlX;`x^P7Gd&NL5maY1 zPcKhun}4y#AU6La?EY_W{8unios4?IfDhH()p)i+%k|TH!%vYL2z#}oVLWo`-;h}U zebJ6w`EQ3rdZcWBIlNjbvd>c+tP@76N>-Mu?;7AIDl!v)$xHtMdp|BYOD@=~#F8=j zcLT`gd$GFDCNIO2hpl2J-)sseka&xe%F5a?&4?j?m2yz|&x`-hhyT6v0RN1=tF_bp zhta96(fdY|Vb2sAwO=f){#DFTLUL@Sy#LO0+C4PpGT)mck2-d3Bjy0LWYT$xnL5h= z{aNDL=j+dSeU6{hek$O||NeORFW{0nd&GEPu<{4P!nwcWUG>*|93_@1K5AI_v+niR zME|>cy)+R!VgRV~RAnFZ+{zzT9KWxNPW&*FJ(`KJXU*HFG8#PsT=b)g`cZVEo}EYA zYHneZ&aXZ{ko)=1@+Ep;LlQd>7}Q@EAGmVSJ+JmG{jMKH)5z5H)W@xnYTg|Vw0t+L z$AKtlyJ3_}fMHVGGC!k&yEhlr4|MkqLOf8V!Aw>?B1gT zpb%hG4ctHQbQs!tQ&;y(ka(R(Ue^tHhW28@?a^%lH+!;j+SY=DfM#n zZ!?{(5`Pbw0A`Jd<%V#_0@`wH@!KjcSnaY78UC)oHooT*zQQi;cXW@PM zV)dW2zqpT4ftPZolpBo-Egzl`dE}05<3WwOzm6|4A2Rjzl}aoBQK<7peDSi<)gCAR zK<>Q#86LTse631@c-a=?N3MNE5tvOhi<9dI`XvRM@MM}q<6p6mP)S1b#@Kh%fG|1^*?%{ z|8%_&lL^;Fsa7~QT06%Jl0fJK*?h^!S_6Ja1~lzn-y$-~(3>khhW2X#T9u5$~>PkT91b|6~!r<5IDr2RSG1l-aV8_s&k zt!W+6@}VVP1k&JF-oCzUVW|7+4mLS6 zAcWtloMTzCpeQ>rT~U_$vOdthQc=cZ(n~)0`suev+SWfhJkj*0lDUgX;CH6X(e<{bMKe}m9_*TX>9?Ebi5KKj2SNf?L!3Y`3-k}AmQ zh!Fc0bpMZU`;)ViM=A;yxC<$hyT%KHt3&%4Mx%f<=x%cWB3&1 zO1gOCs-q9Fx@s6qK`n==Kjhdy#S8RbaQJ0|U(4N{tBvKI04_fwXEoE`z!XLdlRLNx z)~|if6}k@iD@zSH(JZq38~Bga%0Tzz=Impt48rBamq-^m`h&z6 z=0+_VO-b_J(2BUh&4DfP?%Hd$wnA^?XyztP73$?1oQq?fd!4^}ta)Zv8tnrE!GxQg zr(ZL3Qyyj3*%ZLHYA{sS<+sj8s$cLc38Li;wNS7t<5O(+3jJ9NJ9_Q^2NnV*V_x0K zKx0F+lk`#u<#Lr%wZ$pZ=+Q5fw2m8)+Hg=$+2+8$U}9aI!LJten6@nU9+Df)6DDpg z3;wzJYnt^t%P%T+XAI4{)RHH>Y>-AqP8$b3y9-H|Tjh~ay*ecrTrCNR_;L3Un|%}5 zX#5#3DOjJZ0G1SoFpzWAuvysM0q=V5MWH;c1WxbreX;h|uL4{2AhkjAyYVUvo^2E~qs{n16J#1`9`A|L6-ccN$bR6lq@t#8L46BbV(@rT1P`6OX%W z)3cyb;9|L(PWNR5zt?UFB)j~$1Kz&p<1Nr4U1N!*bKK2KR#tM>BU=wc9Fh${49JmJ zGK$(YTOsC^rCvehRCV18d$lhdd6gkjeX8q(>xF}Rg@LXZx8aItYeh*T&G?^CA|32$ zMGUe)Hjhh_fIVnz|8$Ud^mLh`i0zHSK?9y(`4?cyz4rT#JOVeDhi4&D5v@KEig{Hn z#w_`kcrF`@5p2w$1C)tvrXB5UJTaQFv&qWAgumx$wb}m@8B{l}mO1%mYXdJ=T0Le>) zAR`Pn#pPlYOCR2{kc{5i5BBlhDEBGZB$y2-NM@r^&#%twMGkrJpxbM+Qn!Ahc}{f> zA1G8TZW?Dk7~G2*iye~~GH?}JS`v!ymr2M=_gD1S{ZyoXnE^AU=%cN6DC|H&nvzs5 zVW@Df(<~303YJ-09DP43k5H3qFna}JSbokgt%D!&P(cW;5)t2-B5sZMvJ^j-lGh#O&6eNe!Q6+N>RQ~+_EUqUmypvspUUd%;1B) z-O?~34twc#_-16n-b7f2L9z*_oHB#u)J*6dM}=nuC7 zyiORg@dYy62(XnE%Id4(`eG~s;5R!&{{}5%=crhRVzG1%jdL~bAQKL-h<5?o9a&br zxmcBI1}0qI;yl)fkd+S+JBEG0d9Kdal=ZJ-7wSz}fISSdHxdHy_3=OW zs!S~NVOAW9`h&@ug0^_v2bbpzL}n${`NN5452a>?-?cZHhmMHEg`NQ%X3)vS)QF96XzU*6;>(81@(UrYA1oKtF3Vr- z(SSmlR#bcHD0Ohhe+}lkt2jJHnU*~)YVPaHrQ5wdOsWb^J_h_}3jbfQH?_-C#PB)c zw(7gtSH?{v!Plolz(XvBhtzPVB;W(f2gzbNT6!~HHSz#223zrVdsQA+lqa*jP(XL( zwK|8*lI?QH=Sbj5cq2UXHItg#0btDxW^K7y-Xy@d=3_sszOH6`V0>P~&DR_itBccxbx zN=4EBu*OcrH!yDM95Q6C0)jqb zv9;;%*I<4&7K+Z5GZo6$7ikqWmKe-Z_C&&E0S6fck%L-6>&T3N|3F^~&pRkH68d(j z;6Qs6$5+4|{OQ9;@VAlHPiZ9;z|xuqp~5*YIEfk`nCJtrKl8*i_?$sd%2uD;t2O2P zO)gJ~HSh90c8Pd(qK`IUg+}&M{^_4-YyZrD z{|K=EM}_vkJ?GdF&lnNhg}EGcn)%cG{ta_T;-A_Q&td*?F-{~jQuE$8 zBr1?)(sWx^wz;yz-EMM42L&dEo&JRA8*2=>l*4b!_5paom*F#I=?qazSH@YsS=sma;()2^hxia!Q-UbSqBH<&q)xLZknu*m_xSrgK z8)L-<#&btEFe$%hVhXCu5N%tlJ>_Q}4=$i3q`(Z-fMCsPD>k;)hCM7JY{if91IGs4 zRkSGERzsbcv0~#F2E1x9F|sm|zj$}~yycR`ZL!N8c7qj`B-=rp>DBS^&&q4RSK>cZ z5uPB;1{%voSWh6j2;$(lF&=brVYP*>(Fxmzlc09Y0C0a2@w1c67sSU|8D-Hg$DT4c z^nmX4GosS~udGACndJ{t(5}Oa3va^8EJ;Aj& z)4~NCmfP>AoH0mv<9$rjaAe|dU*OmO=ocWaT zJ!)s*qUY69u|K_=-D>x+B+;MJJTPMpxXc2lwT{Y&_!S`JP+0Y^?dvbiOg2QRnz`fDfB1QuGn*ZA_` zCnVzf^~EK3_Uq|a?er{5#X@!~ugiEfmqYKtgT3c#l)x{2tDa{wM=$BZ>3TdQpwhr~ zf-j~yexk{6xY%NQ{8IC<;%HD4qy@(L$)U-hY_Lm>SC0K&A?g+OsfeJU2g3`6mONlI zip5nzu<4Bc_P4e*`gV%ChDQP|w5E^ZdSA;50$G4b>qOUz%8p{9MjGU0&oxNy+|MeA zi_5luCl@E`RedEmKS*GoQr;PJa36ZV?I1u^GBE5z-B;$VSUcwPcJ^x?s!a!PVNC!0 z9euET8Rw7G`MCi@j`-6oLFLB&gE=8pdl!8_dNSs((b$SoOv_xZ)WJoyxfk#Db_v(BsH2m zhvwi$K^YLl5lPs{m>M{TqRuMw=E(m=-FwG1mG1k(%sA>Os6$tpBOoYMN7q-*F21Sv@*p(wotq=Xg%(tDNOyxC`;bN0-A_j&id`W*lLn(4PGy86%JXiSzfV+ zUORYdqUv0FB;aa%)~T-(YParELNu`G1Jz6lxe87Mm#(Y?jp2h*#=SF@|2C3*QDT9e zR15J`*L@uecy*}zf8~tx+fsJbbLoRkh(=^OD|xVMD^|k5ZAM`(zT>M-OLx~=V|e&~ z)VBVa_y2o&E04*H;>*MruIM#$pVLWOJpS=ECg%%mAPS=~Q9NG5opV*3VLys3)InFjrR5cmoNF-NGy=VzmaQAVXhPwwgfu&Z4e+csidY`j5w_ z{_r{L2mgmJD`8yz*f3HY#=%!TTcu=fQ;mqq-n*0^hnZp{X^rljTthmhNz+DOGlXHN z-5tH1QQ}i}=dw6-NUwF>924^UAn5YmAmcjj#6NC__1+IWe>gn*$B$Kh`hW1UeT5uV z>b>c#@y4+aedZNJ71MRFW5#a@| zVLKVwLRF3=tWLK(1x&pIJ^M`bxrL-NVzw zbWiJ|sAm;y(X%?a;IcyMKA3+fqNYH_yPpb)zBYImDt?c??Z>U_mdIO4&P*5Wvmwus zs4o_uZ7^j@y1CS%qnN<;rkqewyqtCp=2YrP z)NRec!$@w41a4(@L16E(Q=@EJPKK?wfN{n3E>RMV-t(a!#Vz$_Yl+uPL`|rSP}rO^ zvg+)Pw;({@Tw>MUWF2^if_s!k@y~!k##d!pY!vsd2m>LI;x)6%OIpcJ z>UUg)()*T(HbwoY0|ZYmboz3Il=-?TNMB)SI8|Rw10NSD%D~63>2CTl-45sFZB~n? zkMwL6OS${Gn#;)UO5yv`+C1%uG@^NJdA{^}-%cN}&;Tjbeh?$7hek*ywUm(O$7<&M zk!R2dC6jRdm-UN!GATAe5(!JFocthxp-k33Y(a3Q4TmmKx4^B+I(^xtUo{{wZ*Zv= ztAUO50PJO62)_YdTm8K-9FK8Uq0Y=qTXgn=bR|}!hcctyCod2j*!fbFd}3)!QasKN zpoW^F3~Y!g}f#LAiAaUetZR&4qo}tJgziupV>7!4Q$@< za!-nR#x1fmGN-fcD1ps^bV9TlejqwhgU_%4ReW)!5V;$Ly_wVDy%>GWVFp~aT$s+! zkK`9uu&LO8ABa^>RWe^$$J`F?qYNa@kI5CJaznU{nmdd{0USNRwP#(v-GSbcBZCs| z)9VB^)G6h@YBQk$Y2W^%srxJDq``-zw`I10&nGyY3y7Zu6-}v%Pk`J-qP>RX)*>p? z#Tu-3kz|4QV_c}uw#u{g1A4T6W1S&3XwklupAV2+oOPF@-j5f7Ebv3Rb_bIwg8LPrx!lX8ed$|Z@%>>XG zT%EUGQjq|KVw6Hn3mQ_6=`hj)))M`vL)5=Ws{#Z$Y5}lRae0giw?IL3)F`0TjKFCw zWlqK)J!*<{GI~c;jiTxT&8p_V#ybWTpgR}e;%AL_i@n>Yp%_46Q1}9|d{OLSB!iGf zxsY2vf#Ry^{Q`@_rtY#viv&OJP?&QI%-0OyKzbsbPnaEmNm=z9olt8#X z!1smiZ`c^`R&CV3@m=3+k3|S;rt!*9p|I)u0lA7QT$5$h}wq7PO)M3Gg!E?NRFFz;k4KN z6OYm8k#ymm<;!QBv4K7QJpy&M?tudzYmjNXHeUHnMN&Ka=^SQ*(h4`>NNv-51XDoa zmbtmnv}fl~N!cPln%JUs2UXKQCi&oHaaL{qWlZw>L%*8NmnCRy?KkTPJxgQFLe8e3 zN&AjmRcQSEaX0Md5~NQQ8v;0y^hxh#bJ_W#KAWnV zxggO0X8!^{d4XGfyk2`4PFN3HM8EU-sPksLyk^l5Z$P^Pj`Zrk0um2*=c+m`k z6uH_fsM-pUy%}%g-ZGyJm9*LJtx~(f8O9`)7Mr|m1*u+Z2-j_{Z)q&$+X7p^LG*t$T`mKktcjd_5|2)r>#w18Q(6$!^JIYzqXSX6wSG2Vr*7!gltzIYbO zadXm1ZrbK12%;LwR-6580Srs9xz<)7ghQvn&ljSoQUQpPR!(nYMvK zWn&!Gzr!>W!dCd-o?_dMT~C@8xpI{Foy8^apC~D=U_iVc6|J+fViG{0MMUn#iw$3x z{^9vSHn*f140H?@4-kC! zouzvqbZ_kGW!Ykr-`7McukIgok6*p9$2)OX*+*Gdy1j13f>xzj1Xq4~Mo|1Gb#a5$ z0AB_Epp@qMX~;1%b@fl&3Jr4BX@6bpv#rf}3)KO=bcyDK=IO&Ox1P4WH;hkLvksat zRVKRIwzhZHd;G~p&*h0XHkake0TQls6Oo=GMFSjJScW?1jT@Rld{e>B<}qGA;t{;l z=)T`93uRcOuW&)OyjRM}H~C_X`Wl&{djO)bNdkdbudi&#U33<`N?lt#l@*U?xrqRpVOdE~yr+-+6 z{!^&yt^HW&qt8#&x?ErP6SIb4@3SVL!dP)Bu$=u0X=6Dva>_35vHr2x6{JUYc-yTY z$-#NzyRmt>c0Kxb_iSQGp!lbv^K#Imy5HGIdX>8JQzK=!f1kA8_jzHmh!Z+8`zfb5 zfzR1YuDy#0M_@1#q^0zVvBH^Iw*asU*^_zS^PaugaIsLGEmH!;UymP0cLick006XR z;|)b7`?%$Un~jKvjHX*2v8i>;+@gWgs&@R64AZq@_v^!~zqR2@e{1yU&L6`6*o6Ps z>XmPux$?Ir^5u`Me)Q92=f8CqEoS#}c+oHZ*BC&FUN=Fzq=OyD<#RzF$98d zJ|d>NtfYl);hxNlrOm-`$yXi(io>b|=CoHCDYb}FXUF%=kKY%mR^*cVe7`o>mvh(k zf1%e#J|yjfJFYiJ7Gld(x*$;RGJzs0neZ^Fx=Y*DIbN4NQP-+hvVnl@-1ZntW<18> zEDs$*NCVSd;l+hvn~vzHUD-)(Q^WbL%0WBd9N7U1{pyy9 z+2-NPnKcxG%%fL~@R}Nd6rOyL`sE+~d=3Zw0XGPG{WCPmx+>eJtCUOWyi1M)7RY@Z z)WbPu@wv5bHzG?urgvE)#i)|b(|4c&i595np|exhfe#~#p&`4H5J)g0H?`^N?$A`u zZ@xy^5KMF6a@TC*inISrf>LYtcb1nOq5f%)okgQJm3_RiJDb}FS@y9v$??FKY!b`t?SoBMRj|8Y$*WI(Q?(pFrJEJdZ?Cy2A63A32 zeXp?vb2fu#NYdpFc2#69LwbpyP21E&5rAVR46XJjHwnJR?<^F0eUyc$X1(ri!IVP; z@Lb}eIjRWLDGio|UEv=~0G1sdulRbz{TC~z|BM6gV>|R4|DW5iM}6? zYzwha)l!7rv)Oj@%N)U0NIq94h!lEb8#=QN^iA}N>YiO+UN3U_Q$6hRNZ<(>}Jham<(XNnw#elt%zkdX`e-I_g+X1Iw=@z80*;lCLdm3MG?E;2)m zE)Rq6EXAi2{=LNi{LX(b2H^))-{*_x7v|1YHQ92iGO6E+e&;8T5W z6f&K=?~B&*YSy+0@*S6Whgd{kUVPjE8zf{-C8*f(9UsVe94{QIaS_`Ta`?|26#er##28l2|h7jhD}4Iz+}*d-#~p$-B*p%(wlb|?l$0L z)s>W0E57Oaev<9yZ52bS?Z`Rwt9d;WRP=HOxeAN4nboL0wNp4OH&{rF#WBz(PBOz2k&(G8gLEw{mf*dn+4cW1W** zVlo$@G~K9LVZez4wh!bReX-Iwvm^wlL`_T?19<>Mb~e7P*5u{h1M&|EywyE7)MN(} zNZPmEw&J#?5bP`3IyjS{1l02z(6HYNp8l~K|Ag?yMP~9IVW-r04|iWuXrL)}cyZNk z7opOlJx8GU(`=bGU{gScO1;@C)@jJDjCX}z|<|n~Q+814)EPA967;Xn`>7+RS zYpI%7DqMK7^ONTD*$Z&zbpf$0`bOpv>0V|uOxIeAL`~Qg>5a1E?T@&LrB@NPxO*w$ zGtj88^ZG{oyGF-rMZE(|p}m=ue>}DR@oxWveU3kA=>9q8_}5GSK=9*4-HKHOw)4H* zknl46{bKj4t3CrMCugjHXE?PLYX8XnV_tjqMR4`~DWYNc9p4ljhG^Phb^kldbQ3@K znnNS{z6e#(0aBZQ)}eBD07wQ;u)&__j*%E_HsL!?ql_vKFPM^EnzgPz-WEuP1V(YomQHLHlsamJ*h|vV31s@K$}1@3_%M zh$d#n@<|6!umtb*Y>7?Uk+O#Ui@_Au_v=5Z(7&GlBLevEvZpUUirWhSiq97}y_BOan8Mnm%w{D6gn+dUY} zo>HuzoaUF^9)s!#f1Q(U0hcFd-)$ZnB&?b7JVZnWT^^eD2Cg{QjSV!8hb{h_jS`Fh z_U?IB2-l!w9ug>cU5!V-pfIVdh2N|m?~}yNIblX~+#kD?p{qV*4~NyY7)(2@5=I~5 z^fD;Rv6iFNxS^WpwI9~*EZvX~Ml8T=vxZ;OC6=j9<IQ$VztWwEq0&_9^D{FWZ4e_H>5(i|7nk15%@)&rfoU&@FrgStU*1MJ z;@i(;TnzkH=zm7dDW}bwZSE@3T87Q(4eESH#xG{(fE8W2p7vc4`zRVSsI%)q0W+`f zv^Y3F($WfeUr5m4F7)t)u!X2$v>EmZ!kaih(8{>yC-tvB{$qIy&9LkDZik1V$3=4- z+f3;m1Lu=o77gJ8b!KKvUYe+?S8%8B*>*{#^&f@Yv>LoMp7!0lX_EC{3RaOeZdLxw2 z3ZvVOcTWzTbdM1`sJG!h;m$iP_P1insbM)$#u%#=H6bP0v?TV4pzeJnoOceiJ2E4nW7`tpx;4I61}vK-|P2XaTE8a(rfW@2<^ zq?OLErrCoK8vRqp`zKiZKgvu3LLhtV%$U+KxBs#)_mz?^APHtqgWl<8x@#mwM6MaF zCr9$E7uI5{oi|S5@`XusKrX!glWl&pwx+J~HB z4R@$;!(hNuJMFkUoh4HL*T`Nq(i-45^p^PHx^Ju-PeG09;iC+?W0MPS{p)^guE}s% z?{iYc(ZrMZI#8{ogV8$@8eB_o@awltCax$hrc0IStQKh=4fLxWd$;~uY5x_k|J&iD zPow>%$NgwF>Uz4iblQY(MOXW6#@FB#V}JTCZ3Pi}OT+e$I#jpUuN7Y&%XI;~x}000 zx3&inwJ^-9g%ZRguOXCfg44etJskn;?GYK&pkQg!Se765>AgQBy7~RSl&n&0$rIq8 zLl~1@(7&K*JJ+kF&bqC4m6e3<46x zeJ~SNgL~6}B1xLp24yF2YX}7D`W~8^rt>n@`X;LQchE^u+lFvh%2*J^m9ege9qTS- z1embK23*0aPBaW&+$vWJv>DK;k{%E%l~+wj<%AEb-zY;ld%dV=K7FkrEBheXMd#ep zT4n$Yib|HKoS`2Ub?SCe{7Fe`4$Ur~Sk3?&O@84zkd1|Yb}F}UkRKdcsVV1xKFT|eGmxM)?hYoyTXPP?5)#MT-@CLR_b9UDvr zLkuh(6nKT556CH{RuE8f`Nq3s8&K5ZP(gC7`Y=KM^G|49k=~2b zh#EihwSdI6tOlV$8>!@@#d{~=>ZTI~J{?<#WCQ%XBiOt6&33$IeAM17S{dPu$?54F zhNx+ooDoTMTSY$n^g$p&`YLSm!f(|rh@1}t4wR(+lH@D1k>89)S7!oSSOapV*KD_q z;WH~c{uab(0{N9m9yu?ca{{%L`O_f3)+7bwgZT(LPY`nxgIUhDcKKn;I*q#+NBrSL zHkpFRwEXpXhX4Cd>0mPe&Ex*Co!{cf+%d0>k1avaU^%KVA?)mMo$S8u&PwS)bU{qi zc8N8=m`ZeUSpy`b(n-#4f`l7IyC=!zg7sQS=8P4$c=ZRK52leO;1aS!{%#Ejn{V^G z5>}%&EA6I=MY%Ip{%6Z+(6CedMj0>sVA?L_)8o`fL zlXoN4kgE1Bn9aKnczq_w%o#<&>~TI&di^lEajD3630!V7mN_uuU2^NCXblVr*}xxd zAU}{*3rCo!uPfx7ebllY{pYHK=M8~d0{x;i zx+roPmQfhBHLDFVI=XRYnXTeJvYh-mO)Fm&`E+1*Kd3Na2C93(-Pb&MQCG#fO#S*C^$i>pzxqU!LUtsZ75po|D;{2Uu`wf(jKj)gZRq6$84=JMVJWCIIqM3UQDwtKsa)vjpwyB= z4*g8DuKr?4l_r79tHV>~AKfh21yz&`;;rl+W1XICFUN8@N=QCR`T$_>nhTUbQQXg9 z*-W!70S8kig0qA5O{gzL@uE?x%lN3|*)my#WRWcmCP>;4l$VfoTrRLnSPU_GVJ0W7 z^orjA8-pE0epGr-i{vw_MSs9*mrSFSRlAu4U+>Me3exh$El$E*gwU_-~GUAMIPgup6xW*aY;QEE@_~b0i+Lr3=(e?mw zsH$YkR=y187m2EBNJfIo$z8BBbcy6(L*2@nx-LUCm|SWgj|4 zpwTWRjD_!$*pfKs0V(J+7GN6vO3cEMtF+XYz-8rY3Po}uIT{qvc?nsH-k1jA91bHI zXGKWYq3k3pf7#^F%O&0l+j0v2JxJhVP4crVf}kKf)<;$X3*7u{?r5rSocA)dul`Iv z8#rx0eKIA;NQN-qIpl%awc;ix@9KtxFX^8)$5n!9-tx+y;{2$(n^hU@5!m!qzqo$9 zom;eS?en#P$zG>A?Vy6s9Tx4O1=yL5Z{K{r?Ga}-p3$EN)guq>ks?BIGWC1D;{e9%Kl(&}FnmmtrKEnuB1)Gi*rE<<={9KI>tZSW@ zcebf7vXlWeI~^RDJ@%Gs4=2w?2*gRXt#>$INY=G2JLh_>im?C9x|y7RrkhuU5?#9{ zkbc-Pbee;O1tcIF780t0JhUFKthDR~zZ@B#aQ2^e!u?A|fcea2$M2@)qNl52fvV3N z=WT3PfnX(sArNQZvMr}FKVFON*EZoRQuT#DL|V?VaRt~7qHMq6YW%byB7KW-vx!BH z*u(ZA_66oLa=nl{;?EQC*$YJ@Oa>Zai>R>PW9_nDn4osbdAFq0*IlpmRx;JYAeOVSin^*G z*k}ntV!0-w#`ql~7Eti^_bcci1pdwTw&EMV5gQvT0H_(0uT%bWQBRkf{hW{2$h5IJ zWZdc0hcig$!C;|{;z8;;oxxtG0oB`XP_iS;b?Ne6PCWJ5{5F)V)WKJS9l-i{X0%2X zt>yN!Dh8&UNg}6_<_VxE+h-LbS4J011hpTlU{^goLtU*4GbrxS^g72^#%$@rlUm$_ z=|L$iu7(Qr#Tlo>B8r$S!l2OOn@1f)s#oLo0hIzl`($Jm7Df-DKH5Wg+|a#FubI%- zM>HQykG+eXzSa4%#U_1Wlv|KBMfNX_tJtWhvww#I{SOyYEG*jUOdwOB#_J1gv>j&Z zCEd*E)u`RqzocHC;0BxMRzL3ScwG9FSFLAvy)8Ty!V;q&zZcWMIyn?U+1f@8}WZ6wz_bGI*EEwVT#7d+N- zVPIt6N);rM(V{EK>!;UJ2HvQ_ef5EGs|5v_=!VbRCq3Ye3Vy}abVV1L|2#iaG8+m8 zYL|6=C@zvpsOd_DR!s~$K_$WI05CULORy(!Q7!C8k}7s2T#H*UM?!ye*Mo*bERjIF zDPMs)DqbY>(T|!)_yxrxB}oY9fMwchNHM!giCrJbBMGdrUuo;_)}vO^UOVIPyOIfp zaH+T?$KW9UzPY(3p-%%{o~PQ18~51`9%bwt?qo4_NHMAp6DJ0w&Tq$v4!FbLYz$Aq z;o4?ja@mpKVhDTda9Uy4ZhAJ-pq{eT*#$ZCgE6by!Hv%ZcoQAjf8xeC#IOWZjD$Oy#hBx_p6Aeg^Ra#m21bB=i=i92c$A#e5+-4-4rlt z`IK_K*C4Bq7c^h>S>ElEI9Xit;$lfkCp-puy*El+rwyi4h0e+ZcSi;m_%Kx~W`-|H z^mxC|pYKh`4=haOSfCoo18vih_?H`i>=64xM$Pun*t#@VA5igQ|JdUrkN#bWj~vO? zi{!<$#k^;No$;bHdA*$$vhb#G4ocgO^2-*WTG|EpIcaPAEx!}ytFEXnu znxLzfu+6Sly=orp?v{q@q=B^W%hNMov9~hy{K;&!;Za1Tugd2Ni*T2RMUsoqc^12| z%ie@cSf8(5QpEI%w)sw(&5Gq52VbUR{e01U2_Wr>;ggy^aC6MF6nk=BJdo-Ib3&^6 z?FeH5SV~&0+50rJbm>#&85-wzM@l*n@8Y*P0b7+v8+9%jgE?~smt zzQ6tJg@G)qRSPLyemFN^rYodrttc%pszovYm5hOsp;!QfGj)l0oc@FO_||upUvlP0 zDrsQL!mlOBWGd2NXu=I)1-%YY%ak{W?2KC*?YG<2*{!|U;6OXl<*ollJ)Oew;lA}% zP>O2Lslo+1M|rHFhpC3(NcyI%2+HJzk14hn2rTKd^nG4%b*|BM;pTh}31z#`!FJIN z<7FMU1cjrc$#qCN0b03Jb&(ehM-HeZozNMO+lvwgDYeEIryLn_lvV`qlNvJLjySL zh|KgAG8V1TXRBsd+}-ja8fnB`v$@Tv*#xgWvKm+2K8!hmCF0FxVhD`{_RZ zJIl}9KQqhw+xEZjNGgEGJ=z*^%eS(B2dOF&Qgg;txvx#B-pH6GO+c7=nV?0ac1o|? zTZ>_Tw@~&+KAC>~tTShThMXF;+E%J_m|)ia9Nv>}UYCU&bh0?jq92o7TRkIiK2$t} znM95|*yqt#EgWUWKf25$a+P_;N!BEnb=b41x6)O7Z-%z934^>6?omUI?k;t4DPhfj z0pR?QIDG`NT&E{#2WVtDCogde26=2>5#8}44s$Xjw1>Gn#O-L3H1_LyNzr5pnf9n4 zwr*RG%Xo+er%QeLa_u%q_d-aB4DgP?al=peK<$NWsrWMPW80_!k)(Dsg#JMBY2dQo z=4e!lR%jT9D3g+8zzQs}IZLD$VVn=+vw9eQm{8)>VFl%`9oM>Z zZ!xOfZv?9nYToQT5hD)@3BPVjAC;y`HjH2#(TYwY2N)IV!3rCMnNYpiC9(3sjLn#!#zJ$LL_y? za>gxV2f!{kzF9i3`w9H?^GqAU*ZEa(oML`nckgQ94!uypCdX5m*A{Nk*V`O5oaZR_ zO;uThZ-p`^)ArQ}#h>3+VhJavT>E%^?bkeFSasE*r=mRLyaJRR8q&BJVR^9;z>2wM?!MHB8v~<-MGP6itEhTxH#x@{j z=*dp|VwbMtiS*FM-j|-{+X7K7N?0MH%CA8JHBKRM&hk0XG-a_*e!sTJ1e+}|@`vbD zqXN-{sNm*;pL3JbUM7~n>n~4xlX>Jp!SN~^8azxCq|>kpxMpL0`^(g8Cz*Pgz$e)@ zn+p%&MrVKkJTGMQfqlsA%Z<)?cJwq#AvY-lS1yad{7`XC87+_pGNr!4tN3Iyns zHQ^LURI#nI-A3bKX}kUq%bisUQ;B5N2fUuwRKv=V`~tny|3P=CrGF%Afm^d3YCHou zTs5s_(F-Mv-Kt%Qj!Wa+{hi)&CTnr_?Smb|(2@;ajo>9}P_}0!)pOB;_wG0rB9gR3 zlF*A^A$i%YUoC3%X(au$KgVIctCehDK@TCF!4U803*2ws9R#({sp<{$6iL-oz!O?E{1@P_N zfU6U;k#QCnCPKv7{5y*!&u=W}T4F|7x!Qbp#o95Q5>i&7Dz6v})*IMK_oSWShu%~} zby?8Tukk(ZOs~^HWk0OM&F)cxxJ;)%a@Atu zrsy*5UZN`@lB6_52fVtwHD|psa;Wn#W&|O_&9gs$V|9~0nN~hN0BB9n5=l(O4yvWH zb94Fv2aA%=yydok+Z6r9bc%b+l)mWEFLzzkB-}#MNn0-f5;YBBSQpk%);?ZYMZ0Fb z8}YcEe8+pR8nfmBFHeJ7A*2Up&1zx`wA~SVU)?FnzUJnB$BUl05vNhDp8iE1tofY3 zy-Wu!Tlanbz2+NZ-&szs%@jqIc%a=NS0sANqRlF*5{rXibV94g+d5XVbhy38?y_G) zV16;7b@-;mz5FG0FwV?r?52bre>`vwVD?q5So!Cst&`@rtJmFDC4_1N3kZGsiV0N3 z*aR!lWT?s}u-hA3)dkt`XJ@J3i?8XQO=etd^{qd2^CiX1hU0r4W1nqvVTYw@v9NJ| zfff}dhaXjNRih8dnr{!@_bw7k<|iW$pomF8M0DYTr&WenzuPBDb^}{aO>Th4fTAvw}csrd$bF;wfrwiYU9>ms_9cTTt7Ieuf z`Y{!AJM@lGlJ(=?3n^bp0oUOJQ&6Ae)baL6#7rU%RnK_CwuA3M*4Zm6{8q}}CZp_v z=_n^+*M_~qZ@a?6B3lmzeLSXCQCIB)Kt+I2N20WRs}xVvbl>d(j9U}YdT8J(Cc#fG zp30F^RRu*tjN;8a8PwGmY|SNAc7wNbh@0cGzWx141kW^G+(g0LVvd{bjJpRYezCC8 zOP+%AtSQ*IRSZ{v_nQ;LHdssa;nrPblM{V0s|1DU{?WMRpS83+U_bDV|U2Ne-inv)y_ zeuMj2$8fAcOw2q&o(~<|o~`K% zT>_3}_7f@@Zj(!nsF&3nINR}B8c1Ee&Uk(K8_$7Z`*NF&i`%>S*SVXGd)cfbds%HT zA1BzzECEdQmTee$2WMg(jbM`vR_-aOS59|`=C-Wygtt>v@z41H1@W-mUX`>hZ}Ddi zb!e01n*KWh1Jdk`QkzPK$4VxElSev~+N{CT0?S#tE88(ax#$R7xe6na{61&#;%nDh ztQpvB?qdnCXJAlr9&4e04Vw=!rbS`Il`OoeI zDQ9&}Z4~~aunH#*33rOMOG~d}Uz=Ip?Psgw=ziC`bd|$uYXjL`F`Hy&)=*yRU`jj? zyK`RHe_S%hF<1s@QScSQXV_qz))1mgGn=$}`AV27rn8-iP_4k@Q|Gho`?EZe>$@ep zufHhf=t!(4tH-Vsf2`)B?HhY-&38zl&fe=_#^o1sW37a}nYadwkYI zTu95N#jpsxfg8gd2NG1AV6Hdw-8~W%(E>5v5?XvHD#X~HO0sKE>}T56$h`W_q6@E$ z)A4A@AwRUF&fP4VB}qEl1vF3LqK3@|^~UDlW|qT!@pv80R1rs1E5&1&xabq$sfFj_ z9bR}`BG*)^luU@e0QZARvvordlJO5cxC$AWWbsf6#%s9tlXC`G>y5dy_05aCkBMK# zGLvY#*Fnvx+gv@Ac@N{oy`deIwvNusSYsM!?;`1^UN(HG%Q!yM2JkseurA$e>ay-o_gk8#mEFa^ zz%C^noBxcrXp;;OXb~0`UL)_Ip8hsOupkcYnT2mK2b!CeBSB4L2?rg>_iHs@tl<<| zlNDH?G`&+>1#2RJC+^B!_NhYx2@sZZT`OmN@)*pAF0Jd@sKNSghf>lokGgl}wE)~U;YZ`Y? z7i$e9xe(tP6>yRD?IQZ1lfH6Fd~V3#a$2r50$Y)+Z@a*5L(YK+Qp}tX7~x;9Fc)gu zihb*c!HqdSPBn0dqEe8cuq+LMo5n@L^!nuDeV-W*-E)V91tOlfT$ z2%~B%`wDoa?{Le?Sm7ms6!=J06*01Sfcw3l>g`^{igk*2WKt0lJ)6we1;#R_4pQGN zAw$a%XMP%$$x7jUBfmgebo_odTM!J+tJ57$J}^InVR)9 zWa#3DM&B?7Z|QjN?YSdi5mH|bPhW^c7P0i~2dXakF-)W=3o`?;k&1D|5~{a3fUObO znux;80!qb%CG~|!-3&3^8H{Wf%}-td59+Nh1pksNCo7pz;wVQhuK}Eg*k||tx5iBA$t&ZULZDg;~2yDq`|M{F@HgTBp4IFFW@tz1l*t`w1y?Aiw_yPQCpg^ZJ5hzj|-S zixJ;%;Q1xlr1+jYKqOO_&VOusSWqPW{)|om8qB-Khc9-8PbpGhR?XaRKo2_B_a!pj zvDlndvi|!bm=zGHZAk+?5CM>61vFoz})s6<-ep zXEz#d+j2TqZ`yoj8REG>UarBOeczX%*@1tmfI_}&erz333{f(m2WI<)coM{u=(v=)uy?|1V@{`)Zva~ zk;~`@8SdAr{x!UpV zM*3K-z74tOYlRm2LAL_}pqg)`z@kJI@(y{pH<^N9w__0}qG zIZ4ZwIo623)}t`0A7l?ldA)F22A+<-`#8qS%1d?p5wbpQHADv(Xw{5$0qChEgA)OF4*WPMx425<0Dp4D)6GWNVUU@sqBqbxIwpt4 zVxI3eXh=fe*vT)eDO1-~mzEiQesPy6N?B>O?}K<;e@#{q(dSl|b+g8e;6|{xTt~~L zC+dN5LLRGYs8yvZ9`cF>0pNqnz(W#1+Ou|yazEx&z}$Z2WCCDw-Sjq=R+>LU^G7lj zciO88XA)Qek~u+Bfn~N$)^8vPtY=hVW|l}YHBhgtgDCDxSTKHzkcZQJyTZE`54kQr zOS-u1HaavHl-WVX3Ipg^VF`~aHx`k5L9dJz*LGMvcGjAXdwU$bbHef1u|wSuUBwt( z4esF;qoEm#9bs|jXXqt-Tl%6j%3%rE)vhfPqN!=FWAU(*Zf31+%?K%@%g3bPnEspLW zW5f<+#;&sWZ#{DMc_bh)yqvU#>S0rwu!`$1JC1XdJ9c-Ow(lQN85-Z#I4x0sZQ|@< z|C7W(;Z!t&>?Py1jZ9Rsl{>7~Iz7apc7^w+?@(8F)qMQU^elkB`K5J4+xfvrO)6EByp zYkOoy?23pTWXsA5FVsTJvzxqHCUenGt`YUrihWtAb@d z38V<=Yw8wR4+hW#I&^$n1nUbY>tO^HPtt7(etj+gmwWuL?!UCg1~J5~I?9=%8ja(b zkV~iT@1+;#^asB%*-+m#cw&;L{hV(kV{CeU+yNq`FAFhY^KPDPZmx=0u*I)sl<3Gx z6mmWLI_8yZ>rI!QyH*XhURjsquqKa$-(f?{iST#sVgbrNY0PmG!t|OpuBGtjg9@wz z5@3pNsj(HxWQ$=eK4pZ|@rcmhn;S7(94{F-R@H;m8ZQ%wO2;3+h(u)S6-=lp;rdfx zkinm^CFQ1d0#3`}m`uq9ZftRCmqm>ob0wFN?u|djMsR()MLxbaXnXd0LqY$N7}rsd zeC?eFt3e8j6k;Fbehc|xfRjBwFQd~!#k%zn!p(l4@vkYc*g(^7x>mOzNB^9MTSWL6 zQh}U38kDMcWBH&xv#cA|bqh%{nU?c%nVQW{D7GPX+}Lgq$hdpDiHi+pc98aJmShkP zgC;ILQh92VvEceR!`qPHt-R!zT>d_O=SaP{V4aDR-81QPw|2qGMQg9uTori3wFXQ4 zRAM<&_%7(Tf33#9ys*uwP4esdjvRb!wo8>~t#EYT>@fwK4;uaCc`(>M;y-N}Z${ug z^vo<8Iur9pt#Yu^g@=8?m<6YbA#Z=|qPL+FDcVGegQ(hWnH3Y?(>g1{P4!7k)9~~K zF>FY#$`gbS;H|VpUWWm3yJvTsagIJc+#0WHAnpC;2=}HHzqZ=833CwZ&jPjSi=M2w zx5ZcRnNIBX?lca4R*5TI@e+D1?o1dC-(VS-X}chS!4x=RN>gJWeQdVj9tk?#Ly#L< zg(yY8$mE>VlUSf}xC~|%)k$DcZ4_uD_H6YTO=VtnwL6bP>Sz*Kp8AKWG~X?5pB~Zl zl@7*}#t;5buhOBv=&SwD+b=CV%8OEiu|Sqyasd$`X9~Js$;vx6&S>Xb00|;>d$_wIIu$Wcyo#i?>TKr(~T`1FI=_<%) zF$Yta5H8kXI+QgJ^IjgTVGjU98>1*!{ZD<%0V~*uIX8f2@1KkguTzY+hwHdwXYNJ~y5Xa(6c%Iws#NbjLG5q`mq%%Cl&-GB zy{I{mK!2~!yrlJ@$|0c6+=!-l)pii=2^Q7P@6-Fa+{m>m6!FDaksZ- z&Ek@n=^pyB-*9ZUvx?xtuG+?|Q}5oyR}WU(4W!Ah*otk9i)Ya-+*H52GMo+%gj zJ|3%tNZ6O~MzyO2bEr{-^Kr2Ozs98&4%?SC?~3qYDTJa4bM*^4{YR1!tgC4gWRP#d zca|rlN5txcIVr9RIbxIqz&BC#eK$f>UPURgjN&X&W9FF7;ut8+&uIr(HFxwOA3s7+ zJZajMX3N`)_SXzQm2L6zZ0hH3@iEISpe^;4pO-XBDN)hWyLf7v7$tRT#N;-7v*N>^;e4{oK7K zGA97vE~c^Vm0^Ym?Bkaf`&r?tG!I`3Y{9e8NK^5X_PPO&Pv^wdzq1@LnP3=)UH`nw zZ_B5yoV>yuYh8TG>`&LIr%#RqMflpVCdOoXLGoUi^;v%#?z>p+T;FuhnV;qQs=@w4Jb$Ku&uV*(c}It zr=tCfHDT=^xil_79eroGLjF z0B~HyHg@gD9p*pT=N>@`mb>n?&GV08!56(uDkvYKD zp{*lHX!CPg;iB7+sb~je-cdpi4A}kq$oMw(AT8&Sh3t6lEaW>2aCj&$-@uOVGTdIR zftv^FXY7`bLg8B%r@c{YbBS0-?2+_Kq3net3CO$u)jRu-c$7>w;I+yB!QOYrHI=RH zGS+dh3?d>`rHFL;Ac25@fQ4SABuELp zLueAJ;LV)xoNt`-&H2VT-#Pbp@BQ8Uv)5i(d$0Ard#%0Kde{3tkMvf%?}OWs6oudz z|GWCir|){NDlC8E`1T}Lm(#)dUh60C8w5U4GrcR=mwxzZ??Y!@>TFKW-o5h&o+Xz) z_SsAfmk2G;h?rkn^xPYMIKqTFBlCr8Pn{3RyTHv`2rAnu2W9dUYW473=2sq!n)*xI z1tN~DyBPdzp-7ZT>+1*G6k4+fuob@EeowK$*f;?dM=Wm=T6^3!C2g;k-Fs6m!)M3O zk$U+ZlMQ99xINlf$7gzTKIT6e$jznSo=94z0*WD07Tp{e9a09O9mMN2$7)xclLov- zXksRg`Rnx|YI7F~nCX04w;NTuI^NVwM9xDaiFXFwrIx4ad*{X3#!3*Wx3#c>p*mt z?6Gzez3JZgiUwX)=CKa8p?5*@935(l{P11kY_UMxgnkYI)fZAYB^q?Q0=8{+aT9m( zxN))Fc0)^vVgQ-hRON6k_doj2?#OP#4V-mGQ1%NoV|^Lr8)fzUgSmR$1g}wyMf&6K z0}Onra_529k%Ueb3(EBaM?=yQV)mLfL%nRT8gUpSeZ&YiRp=HOL7}2--96WB)I||ICHND3(CC zS~==)f{VS*WKo?k{qd#<%!sZqlS>~6e1>LPRUZ1hU+PXROxZp_dmY`pj)C7Ae}vwg4bK7#7DSDq?1eC`5YH_fL;b<<#h>GiqK6sk5?EQC=2^c= zL1!#)7^X=GoW$$b7ZEz_ZF{L3f!Z8}JzhE@f@`xDEBisZ%n?)M;8w&$|KYm%7LQHRox7jpAJ60 zihCn#&@7PI#y-Aqt>|3b^r!g?7l>o9>sK~%k79&#i7B(Y9YTujDIqaZ2Rjg=yR$qx z@`8)WU8qdreL4-T@0tLAq_Ny4mIF|2je}Kyl#QA3P9Njf1Kv~^zZz@s9h@p@Kk{4+ zd>uYNkU^X+D=JpXo7qThs_bJmmxm06c#5bNN$u;DHGUYJCuHi*=(97coc)ta#N~u8DP?qNF)?v%*?~7?*Fr!J^#E)LqXY`IJwOl3$NKU-~g{SFQPyg$vCb8A8s$ zz0?Q$I>BaF1r^WY;qE8|xPaI3O{>piYoh`Kv=@%4`N&chRBY8q!Rwb5mrhmN>Ge*Q zSNebp_}{r$?4S{p^Ns4V<HOY2S>~W(~=F#%HVP$SI zzB8QTUs!2>^Kf!CKy zcixnRex!%}Is{{X9mqGG?ds*f4~Jd;$ZwK-#EJjs%hKs{+&L{M*jFR`tAV@^`u}hL zFH_E~jYPewgZ_D*qcG&8AAfTBxifxz66RJPImAB>Y!9F8Xp|PrJ$d1yv4}v5`UG^t zN$u0KjxMm3tPv@p?ZVPr34A8I?A(k{*?gW;2+fu%o9S5}rr()+)w=(_ zBcpF8B=mXRw5=!Y?VbgAg-fvbvo702f{wh`w#$IxtIj;lSd%*ky>^!@uPLj$WzuTN zMwph!Gj%P02`Toy^1HJk$?&+jjdhbBRJJ@MQfNJX&Sx$gMpb-@(`Cou#r!Et*QFyE z%FO+51hQ}n58Y<8=?xAA9cEopRi+qx^Fo~%C!|<<37n7Y~qREt^1$O{Dzp~U+%rTdyKy+T!Xz5DTVV+k<=^N$CnPj&;CMyJ0(B(G&)w6td z$+wDd0XffF_g;Ifr_iS@S%9qW5$URCNLLBcU=f0Zjz4P7um67y9l+tC`HH}H*I)hL zFIKp{8R^;H%&5USj=Z(OMMzjpwfp?)b*aoDWMl@h%D<9pJq z!e)Yc!JN)zaXdihK0&%2052gch&(==AZbp_Z~2h{{VsmFt9s1O^fR;*5>6vtsDZ5>klJG$UB zD_D3<=Ea+rp^q+>suDP;0W%aIAG!LxNGT5J$@`|4JdAr%r2Tqng)^j1O7Zme9*eAs zhTi%~rdTk3y*oI#YXADRQE^I4%8jx|k7g6H26`uL{f>xJUK=UJJI5(sCU}j^3aH0# zE7ts-GX96B-w@&XOAWkUdg$kyX^U7~(?O=K-SuM@Y(=k<%YGU{N)e~x^GD8!ogQru zgZTA58W4K1Nz)iSZG&7g8QvMY56Uf%U`htC!xqnJ3Kng36<&EMb70XAc$~xsfEIcb zlQ5~yoX`y1#<7k!e<+KNjgk~GU8r}1d}L-EUmKGAJ*__V6PN_ir^oDI+jPuJPmlu0oSe_aU$)z2IUU9Vab5y4k}E*kGe_Q3+Q{JPc4VNTdM zK)`~f#LP2d758aG=l11?SBO{sur+@x@W(4ujzjhS9|s3wGNrWG&gq~MS6{G$3V*)i zNqNQE8t?VQV4@$31M{_b&I_}4LsZiG?(j$q$ekSGi3@r1Vc>aEbosNo%Y=Xt-3H#o z?OpgcioG&hd+Q2ge4Z7R?xiG5@{7$!_2Av3(qodns`pp@tzo|&#SU{P(ye0-pT77L zHn`V+uZt2me51TgY%OUf!!!p-nzn(I4Iq4Z8-p!o}N$iphM zwnMlQ-xU3g{m*w^#M%Hx$0<#4BK3zv`R>c)2-sh+J|fR1F5Ne~_iLShN&QKV;GqD&%;=8$Neqj1Hyg3`7RgS{O4E;o zVN`hTYR2Z8$0Fcet^D?g)Z-&c8B+Vwj}1F?Kj{ZG-EHy2mhLqeV`2I`{CJ4@u}M#W z(>v*vMChby_PU2?s@uHMy${mn>B2>3RvDZrW5XWV*yM$LxtU5nsM`6zlj$#~d&nL3 z>G}`vWQEb%8)*La*7~uXKy|w@%(i=Omoa_dtdrMfjoJ0rE)ij9x%JTDO?i@;S@&h> z@^=HwVN`#MZb(CezG-UJu;wD4apX;fX;0K}aPY^Cleeg5pti+UOpeV$B~`k6DfN#{ zH^0}uf1LMQJJfG{VZX9m?>g1Fmwjtmsmo@35XRZ3)HtqjUFs2$gyD(xdON5!{C ztj8|5KN~0IcPG<&qMDKU8mXS{0f@fA8xt9cb!^?X^|f6?|F|80{pUOBm8ULz35QS2 zE*V_Qpp-Iue-g|<@mB>m$Xl#vty^+GtD63N*0k5}5omh;JJgW>iUW9*firM|SN8}% zsb=_uYua+miZXWr6Epcj!Q2@?mYthgf)ZNhmlm2)7F%u|TCBdxoF1M~uvD}u^~xVM z=syd53uoU&l;@ia`k|A}E30}NsS#9Y`}G~e)@UX;K0;8xzAEayn$o8pCCy`V{Dzc=+b$bzooe2CVkz1R$zBT zHz4IC-;1|*%J=cPBdqmr7Mt~*(kXEo<3QRBw7u@Q$SBz?^^Kl3f7XYa=`(-Yt{*?J zYJ7W|Xxk)ndu-9Gx$zk1?ex9P&A-+7x8t9NT70ygXb)}GToKplVZ#rqohuZIlR^lt zmO7)TQnAHIiJpk}Ta8(7v=7LfaJ`X9x4e*tl<79Mr;|x@l6``In^B^hdo+?RtlZb`R|; zhP^WZ(8s_KRLjg+0^Ux!^V~3&3{B;{!1m-t=?vr z<-hZPh>I~Gi|d453s#PsFi z<7=L1;#QJv0g?vyD^d{>v7zd4+;LTKI8}>sd6%uU(H_a6{HDuW<^CIl61xlO28x0? zF#DCxW2IfCP+Oog4(CeDe+X@JAPfcnd^-Y@C-libcI~EdaJqdj}9IAon>rLRNgyb9@(bRXgHf_QAGLfQ~ys^;!_IKPk5kqp>V3@j5Z<2$RX3b&xqIt-ER+A=V|4<5(U#V z%~ivX2%2iX5Ii}C*!P*4vEB2*@s+tyl-AVUOE+4aP<@{inOFIgU=fF>g-j20|9ohF zSNR$Jr+1~Q`3yt|YWIc2{7Rz+41g6xWTO)V+SB+r#vh*#(5Z&Pe9oEunb+ALuUt8? zHS@CT&{Bk9f~{#s9`++8?-nt(fEfo&Aw`!v2 zvhOdHDLn!W;iDe*pWM^SMC)4()`U1K(`2XZcDH+CZBDL|TPRvY3pIQyL|j$A--EQ{ z5x=JW3keG*C2?Mv19zd^u=Qf@@mST};{1(b6Xx+}yUyiKpRVixH^D65u9CrTxkV%j zjjpUJDvNnid=fNpzeLnkL_NAVknmc^Dr(xzS6r5ea}^gyr%?~stjR|Uc0r+^wcFx) zZZ;@1QPj;)7M@SR?fT8hIWia$zwgrO#V=f%ve=e${j>-S-oBYg#B2fXH{`7HPN906=>OxRN?}(ralH zLwRs{1|neH8x8$f!gXT*ffTv?BdamBx=BvPjeaN3rD>x}2O=-hW}7BGMUw;2^gSxG6O z8B=Oe!&J8->x#)EU;$iOMK;z;ewn6W^0VCs_&+CP$0tbE-`R1SCYGy2|ZJu<+wBU5)mz)W6nC)bIMvx$3`1Y}y zfEzpNa7tQF;P9sl#SE}qM<=7}x`{OZfVl<_XYxAr^%%%l?oB%|3wO-EPm<`Yf9wEY zHFF{;d#ip(pStsJ7-RoP5&xP2ow1oJmK54V2i>vF<89rkA2o2V*m|wsb2OhVmhfcP zk@BHSkh}B%JZ)A~T<*zjHlHH^K8G-+lrvLLhB7Lkxw*+i|I)_@sESTSixGJaAzU!L z&MrAt>%j?vR}SWIZ@M`Q#+?v{10Nf$L3?;OB+9VbkW>GqoBj_ozJW>W_iNBlcEM9FWJOn9rhGl?YZ;0U&<`#L+ z26*ojIu^r)pp|J4UYyRv=Q#aXi>w1I7et|q2ZIjuWf<}F%YC5LBV&SIiQzfM#(RFB z`4KBAS8lh6jLfge={f{k<=-ImTxf<%OKC5LfsozuujhRi#Q+PgCOZ1F-NJ>LXm=TX{H0Xymd(o5}S@4(83s;l#dz7^v(jOGqrg z^t!GPfcUIh3*p3ZI+%)zrULTsYmDtuteY=M`wsZ($>))ucyx6UlGf%A39B54Dh zxZ?HK!h?+t648UoTGmK`7lcSPWRRtd8SNw|vPU(aL+qSO_?Sx=RZTVSG}MLNNlx3H z+-GfxD6P&5xGxc@wb|epu;k=0ms_>pbBY)vcW0bX>Uuc%(aG!hdO=K)>(uTk(HA`;+FP|G4nT2#5HDqQ!}n(mp+)AiK^W!V{F< z%_rPC@os$0a^%&R3cc{E1S9x3Q7@X|?E|z)u4pLpq&unyGm)?;j)VW5t*k`Dow=7S z7S;0zBkn;egHgdxiY+YRbVyb3o7&P)b%E}^WhX=5-c3%Rz~K$x+_D&{cJ;hY%CcE! zMgLOg7p}O9+)3Ic?#8ywqTQcJQFbD7pD!V5L`Ap(B$-4&Js^)S)@7cM)9VdV{KW1&im8@i~9yqPF>w)56PCwac6tS z%#|>dg~X&w>Qe7KfA%%AXXFga?8OWEA$d|*GUVmhjbvb$T84-P15jRSSGkuph_NjbBho^;U#<1aES-jr z>^>OL{{7KzoCV+6W%Uavi?N(sILTb6fVr$Q4quf=*r4I7*)u{ne_s@_n-T7vpdFK; zZFM)>xHJ1#TYx9Wc8+uw-?zQ@yH{{LMh|31;sgKyNhgpNJ!D`_+^QDu`O9oIDotrZ z|MhLSr%}Ak+-u2c;nr~LG?H~dZggK(aYs2j<_wcO30Jipo#~x#-G1)<45GADQk_|r zco%JXA^ygUdBXcWDD4LU{sFivS!$Ym+l#Z#@ zxeiH;Rn%rQtXMz2$@TQp@i%j@9Z3uy-ZQO z0?LG&15u&1Q@CeHo~ya2`%&X1d-XcvT#3azwool0i%0ZvNW0a1ja`lMV2;7AN$wms z5MUtL&7c#nmy+iJXz9wpe&Mo0=Ie?9L!g4=Cc9FMxvRs|;G&kI=Nukv9W~Fg>XpML zbiem{ouyRjI86wRZGt$=CXy`vt%&zw-x5bw^ zp<)L(Gek@Ag?5lyYnJ$+M`wDWbB~F3`m}$>%<&?9X+NQh)r&ZHJM2q+v@Kye4w3KI zVNmj2<$ggFxyi+qVi8y6@l$p$QAJSyZD#Mu!>?^c`FQzO0aV5NKBs zwW<+CSio}-{s>QrcU>AIvew!8y7mT5^sw`qbkjsR`~BAa4Jtls&Jz-Chl5 z7ENBP*aDP|A);MMxJ4uzrDKK1hjO7gL}Lmu zLEE?tnU$OBbW~~?M@*K#-(p^>&Ubh*%Fp0&_vI*IEh_hwHVG1etlowiYRo_eQ?%74cL-fXSQftRswOVd^x0hb%&IhG zsIN-+wV@A%t)`kuQF!R+=#QvYg9<>~g`#NbarYt){>E5tY(7>6;^U9u1M%?~*BV`}A(uv?t?~r;sC^#q z&r*)|k`*=7iNk`X#T=SEb=72HA5x|*Ho%9^zrSUjTD@#R3DR`d%}I2xL~rNtAJqA2 z%1F>0(krK^=2{GWsJ?=B!lHaJ8Q6;JLGjN0tFIo8N-)B}op}%XvNw!X(9?8TUwXhL z9*0j+PctkH_tt zk(Yk}tW_lY-#5Kk=J#M4i$@$zA7O0mEyHKg<2p^NF|`{hi~_sdG$7(c@>a|B3?&wC z9MZ;|+@#eTs z@nGBYK_&C<{S`W-u;8R{y9OU8NPL~MO8P!ou+%n?i#{=wBpc>z_h^#OIIiVR631Ek z3PNNUts9s;G_eB)Nf>WX#ro@{3B7JnGpjs4Z+s94glxb?EP6@*U^F{kXJMqirUw*$ zDA5RPAi(JDCc1` z2iGN!C6=F2^(ZRd@WRu;U7De3bA^>>+H=h4mS)Fk`4%e10me1{EVquK-fr9gZP(z> zlfBx|MDUkl&Sr?FE+2DZ@VP*tV{}d zT`*tYm?1*TH7SH`YV*Rw)qdAga!W*_jW)1UeyBHY zbgyEYgxR&Vx?O9Oxc%}laabX?J}Q=J#Sg=45+Hu&v&DJiK@XvqR-UT3_cFbML2v7+ z2Et|rd+uC8>uqtsU78957K%-O%M|kW8u@R}ebgS==lDN%z_W>p79%hF=m3d?#d_u* zFD;0+7KTrC6{@9W>^#w=!xy?UPo}*RJaS+u(kpfpC(0XWM%n)a!F;S zJUlRm+unClR%Pj*H4xT$H&Pu26CQjnvV}dO43?=48c}tgh-XNGirq_Q{UBztxn0%Fz_f(S9wrm1h<2oSwh_Pzs+5 za4DI23cQ^fQ^xU(?BQXV{NPR)1QL@L4y0Te=il5)KT+}jzdZLZr;lM&8x)WFu%C6_qityU+Xsj6(FD4dsY^Z3ZLuFPi5(>a!80L zRl>HQEq3hrk18MTZZI+(1+Pb{oawUuZ0Ih7PRE^vO6HRwJz_cc`D~^|SsRXU$^fv3 z&sfF4@BP^Z@3u^)StsuC@#)~~u)z~Kgj{zD<+)4!`k48uB1NNja z3e3gzXRW_VBSIG|Z(4bCa1qA$W>d#GIDO%dAzE?Q-JES9cQgxF0l@?zJ7U!QT5@7? zq3;Fm8V0(?ja2`G<%>X%M#uQyw-zuvI-%yAqgLs z*a>a`_oBj%21#j7ci&T=he%f|AbV>xj``qfmmg6(FX1+R;^14Uy`E{+e>&|cq$_a% z9CpK!2%tRODl1r_)(Km`7j4)D4A8xiuS4|qpS|e0+bc%CbY|SIW7@lX?82S5I(;z$ zCqElULXA2O{pH97~0hrM)tcD^1$RAY2 z<5LCKG0_+D(8kc2LGj*hkJgx>b8r4$ssEnyfA;;z#dS~!3dDt-W^6enMmnoJ_FO<0 zr-gW=HNY(T!oYARA8FyKQH%aquM3{=%XwZf!DVUt=2T;WYL_(EBw5jOjxU-VDU?~Y z9GJt}4;OjkRPj!)>WcM2=Z}mdL`-}Hpx@^dbDrnz>1B>AUg$cxkXmgO6 zZi7%-g;R&ZiI#R^blGYth?i!1=*mB>)O{i~PoF-$Sj-zyrQ7n@QmI_yy*Nw>cXmpU z3Y5TBUhGky9$>YDU6OxrQr=q_rjWHfxFSWI-Kr|H?B6!;`@~LOUS^FBIzFL)9)A@k zC+p^~VG!);77rR(21C_v#|cK>m`?j8^aq7J$BzZO%GH;9l{N)8uiI~)Te0tg*LC}) zdO_KC6BFxIm!TzZ8%o~nZ-4jmQ@@Xu9uY5fn;zR0k}AU0$X+sLrlpSXhNFQQVb=ko z%wnU|(vlRpr;`^-e-_Zj$BI5^5#`6wIe_mEw0w=xX&2LlA8R2%Q3Wk01EX>Wx|pF- zzaVP<{%=P;*?GJ#tXyTSZEBY{c{o|US(+D8SfP(#>-0ge&-#npgL`Do*4Pp#NJ$@7+Jj(3MQzdX#Hs8_?bb2V9|8N}@H1 z#~k|!CqvnGb)3-Ut30x2c%f+~J|o~u)Xo`M=d|r0s*{CLBN9;C!!qs4GxRtp56^(( z(PxYa!%2l2yspyFYdyb^3kGOk&OZHKdstx`P@*J-vkC7Bt}?HQw9fZCAmS+NZMbII zLDYNQxI^HxYUv+~#a_}G_&bp?=Pwt#<$mFkS`1GuqBQXC-g3dkE=TO2?z=*H^LJ%A zrx#I1^k#&CLy4|miQNLfdUc%Q;O&CGbX$7}h9)B2!>t~4g0Ag@1@R_v!d$fvt1EV~ zY|5O2_Niy8-EwRo2gc*GDm54UtW>(Ynz+ySi3oDII7(kO9W7lZDh2UWN}hjKkYZjU zR6drXVz+$B#Pp68_tV+?W9LBD8U$*mh6FM)(h~EsqSeP-^~I#aJgNuO_@2^P(!W$P zz`p$Ob%N2g8VZ)#9(Ri$*CXWjoP;>4LcY+sZFUZWDIo3Dbxal%w`Z4|S$uNukx*{A z;x8pxJZtTNI5CUjK3!_o+0Z1`X)x@gJ_aw-^uV;NeK_!iOV1q_lH^?G%MvbvhMk)Z zll0Iw+MztKazo7X`Oe>WE6sAWmx*B*T$=B53f4;FgWL%GuZsJ(>Rm~+YmmutJ0c!IB*|N>gOqVjp1a`C$bdi%a zQ1(W7VEb3r>&Hb}zKsc`!J)CWv4n z#|qe}tXJT2oQg(zog>DkP70NO_pQ3-DBsgBTvs)`Uil_!+T~A;`iPKIzHkkPB;A@v z8*K%tO!U=yT{+mMdp>Fn^2puj8gCbR|%NP}EbTe=6=4l>4C47wk8 ze6mcH@iK_$U=L(7by2k|Jr4Mplx~eaxwbev&q7ZIYk0gsRGfWu4HJx<##S~Y4=gbt ziWxE$%yRStwuqum?7VX%zYOhrDvc`6V<{Bx=Yy%weow+V$HViAo1HiEifzv5G|ojL z2kLa~eU17W46)xY5Uz|(&Z>e$$F$%8@kIB{!6zjlBgL~Cz+Y>VlXJB|~>{Jvh@lOBwS+)x(#%h@xtzqv#qGUVKjyFy$x9J16 zeZ7|Cn#w#=k;#BS6Yo1^y14gi3-Zl=?vT+-_dzvmBB036)>2uS0Y>#0K zj-jAh5Z&c`1Z4i+*UJ7=_N^nwXZ?yTSTtC2%e%D52S_OsFc<{TJ*GfY@fn!(2j+4d zHnOGfG`}>`p-!kZJh#*qwZ`=-0QxkFe*h#jbu|pO2ul2rQokYT9xhs!>8`ct=~_m9 z49_BRqml*dQ}Zk&3&o$m8nftPAH;2YIQj9=E3rgmG>ki$nt4?0vZoHdwEV@OLDbab zQ3zx+BTLmO;b3uZYTG_-C#{@UAL`Qttv(7zGZgrgeR)gXR`!X_?+d^OqH(TPIggx! zOI-AgWo@ z-qP3~I_pG?z_;|`fkm=nm{YM&B22(&LOR_1F}{yWp(=*IXvP1qGO!f!!ZY$hh2 zaH(`#O|crsJJEoAMXj#})y6~C^axP1vm;|V9uiTke#(NsmsdJIa9@m5iJFmh9b0Xf zXnCkG4=Kd1U8kX+`xcO#&}xAjx3VV?DJcX&b?3$WpO@A(UOEPdNM?4a^?8Wc-HJDd zLB~o2@Q9f~d#0JPo*jDu_i+P+iY?$F8^xFSZ7KGNUVgNspPeYI{2-yvw{cn?l5`9L zD!xE|{vb&b>GpA;#s_fpOfl!1LnJf71-pZON33tl`Yw5vAxW}C^P70JKVFqF+cvs` zCfX zPVZVFVmMpl=}y{*@^SB>_&}&8`04{DwG7wvv;Wj>a&vH=XQ=mOGS;H5qCiY5mx2&3 zFC~tSW4NYPED54RI8-zl=l zc-6q<>Hc8e(FU}t;lD(=QJYBx6q1a?yX!7m2)Q5NH<^Hv|O_1uv`E6y@_ub=ev%&7#GGF7nz zm26gsT^$how#*-p-S}F^{@GB!s>5*^Y3}zDq0_-*(n*dn=3Y&@a!}(wAtCSjc0jhMf|S3~bUa0>oO;w)Rs{VslWS%It# zF(fC5pDDG1%|55BW_@!tBjTf>-nCN@_5oc&F2Z zH*xMBc<7(j)gjpq7{LKfBncLXuJM=+&ZgS{ggG`B_GT@RXTj&Skt14Y z+T<}Mf2y0fld|UD&zbCLVkhShdo6}_cC$ZM%6Zy;4hcjjM#)IYG~Go2M|b69lN!!9 zKZre3{GqE6qiwg&GZ&ZCA@6uxFB_XXKBp@k(4ztw??i??sOh&WCcAE`lt|s#mJPd3 zUi4swxq|5nU$`t=hFE>o`$IB<<3WU1nQKB7826G{U}JV&XfeA2;f9#*j~2I-a#a^b zJN7OJ*>#pHiJn}{%jd0GfIVJL!^Mj?FR+t6pDTh*# z;%O=+<-gb6{u)PAn>*SOI;X8u3a0Uds>_dD-$UxiUEmkowjX)-=@$8UftnlHoL|4? z78NW;lvtL?jRu=duwKWhxR6RMy5{=ARNW^HUsmW_t1BT)+HW8vy=~m4C6l&WBv|ka z^V^`HGdc@p;_Vl0XD~rZ66$ne_6t|j zTlLKnh2%3F&Fxw|6%U|x#*w;n)0t4aS{e^X zUEMAZP6{fGFR57$*@r;)QJa6WuNlYL*R;PMdLxGO21Z8Z=I$^0RWaXg&pV=$_!H;Ytc@P~KDt2+SK#!t$12NmRfbQs6MbZ8dJT)zAOkxzX}I zAM3q@5Rx=iiRf2Rh!?*NKQovRPE{c#q)v^^Y+!>_aimXgl#H%-B1y_9M5MH2>kkQa zw+mg42kW+ZmEu*f81rjUl*}Zn=qlwU)gY{J)FaiXX|`Nehm+-TzG}gytR$n69M0m^ z(k%oxwK0w`57s9IZPq&&YcZpR&gcXn$Fx|}fv~!>Wb@BuYmfTm%tQBm@<$t*_1MbH zdxLd%izkp#N#=T^xmXTwcOQVpvn6#=uvX+J2f+}xxSF3wyZo(vv5E{?S&2}L1hqVA z9uay-+y1C~^pKX8#?-I+{I{q6`3=|qU4BIS_-b50{?(^Cnp*JP0cDLX*YOAzBL@hO zw(RF?EC32m&^Yj$bCY5LgoTq46qWN^34Vw#T<5$t+UIElp`HmjMgaL0e!<4oX5Mf}D|DHJd)=H>ZMNMJHi3r_Hi zXA>1XJS`zGr$v!hfAr)<56w5+Zg6M6+TLOA4J#hqJq@3BbR>TVWfpow-)19Xq<^m8d0nI*=F%z zZ+~yObE~AodgcR;<6y>L9S5TWv>~R`!@tZ`Kqk_XNSzE0e7A5n$G8B2EaGz>Z(#Bd zZKftJvU5R;KT+s_b&&sCZ~l1<%#29XHRQmQt-4o37i?lgXHxA}P5&m`F0D5^J=qzb z)8B6Tca(qq^4L}Ww=(~6R5a3}%U=3G9EfZY+z9wXD31Z873bbHJhRnz&$!geY-C5S9-sxP+A@#Zz^uiRWsyZKwW|Gj752m!%C z?(!LlMfRqiD!06lc%vZOMXeyAluWY(HPOwg$074bthQ0|K)K62vz_8yO7@&Nc2f)) z&L242Hsm}Bdc`1A&*m7Hdb}FX!3jEhFVKB-CDl{~V~V%eetK8Qw-x3jZ1#ogBHCvn zx-xuk=JzFxt2OeUq9!$OCr^%kl^(LX67!p~8vo~B2-{Hk$m|N-s z6^;|me0^x?>Lrs0;ZOPp^v2)?bAC8yT_D(5+jwD7lyrP*u{%$&qwlalor{q}ak1`= zUUh%9%|Oun=A^iQO%$>c_>nu8$1CqAr2QmMYiPSlTisXbH%0f4Z`NPT+PNz{*}@z8 zIrytIx8DELmqA_&E$lDpJsM)BBPJ+I@dG8wrUel|{x;*~R%1qfl z5bKp}ZCh|w*+;Jc0WrN(rPpH3fz8-C_uMIl3rQ6N<)8_gNq(=8FR{S9+LIOZ!eGJGJdUxq5W;nW>ioW}875V{{gO2xpaq^C@y_)}OHFNSpAUz;z3#vxgXpnohq4nB%F-I6y3lddsw6TR!{#n`>*p}82Jr|! zc0x0u#K=T2H~idqPH3D0wV)ZM!*;|WlReSKUG_oXH%69+5SG!SYd1o_!?k5Xj>Ur- zz-HauV?P=RP2}KcLTcXK*Csr>EZRlMOx7g)`LUm$e&}blW|o0ETlgTCu*Vj9Ez-JG zTor=iU1Mrt5e*?NNV|X_wc_CVw_#ZVqmCvwshF!uw?KH_abAB!PM zEFN{sBoSgajy7=Htb8_xYD}}=?z!-x&d7w<5qT!#L~V9GgM&;Gy&!h-<{vj$K!wK_ z=jUHAV!_B9j&tft{9OEieqFCIr;`o!raH~in|+{G^<|R)uiiA-RSmN{(D#R@C>=O` z9{zAk=~+?w7R#52OyBjQ3sIalCU`&EwCZ4fW@e*8OwAc>hcE|Kw{%Nm%I4GliV7P{ zr3D>KQ(apUwtjVwkpSN24mcoy9}9h*YVGOE?QW^D!kZiF`rIlc{^mtgV}@E@W^SW* z6VuKhlxgIr!{=c4bZwu_*iN1W|i2IujY0Y=<;+Ndbj481WNUaeE`?~mjE1=W&l78 z|AO@wvA*$Tcd#jHb^J(&bxL4O@$8*R0^Wm>@PV{)4RNEZj@g{m12Tt!*}2I8by`pe z>#@+ju0tXnbMMbK`+C0jD;`<0xP4YL!3>9gxc2%1F{>rRLsH}#aB9aQ3$>iVLuw`s z`gwt!TV7$P4rQ~^w3T{lzcyx1D{Lt7i-5yu45?9|wR0itzub9u1L#%Sse$+6I8l=dz z6<%^x>UbP+xH&VsWYClExY|>~gGm#$HevZVV=~$@!&gb6zoC!a0@YUj>E{mCgFR>jpx3lr~K>6eCy85 zE`@2$*D%|nwtel~;)zpfS>r4I6F_xnyUy5PVO>#2=Q;b2?p+th(acz@(U~ch?~`_L z;f8`vwIlB)?q}CrGTUw%_~zvbyvd^@6mHFS1k(hd0O@C>g@6vz{1Mrg-zL(YTXvPC zFsY(r`fO_sk`9G{A@x@06TMtF`>_~e==rTF%lr^=$4pE;gT`kw&f&kh1lQ3JL4`lJ zV;4qkCXg!AmCm_&%m@1yM3vjH=MZ6)%IRj;a_yQ7a}+Rp{t2sb?&0XxMv^es2%#GVYwBs@-N zvyQcAeXx-&IdRemW}wcq)WX~8s!(5f3<7TDx_+^OG5h9lzKRJIx7k?1(=wAP8#k^- z>Zq|8U&z1=ocY2fy;dEX2MnKm5rwgX3R3gI&V2esYp$isffPA?PHV z%Dr@viX~`MzF%OH;pEntzb~_2KT;>_$1&6`eHn+(bPgYMdRN$#o0p zp<`pU^=_F|63X(U$v&@j?o9$wunNv2RDp7WYQKMQpHwG*biTYkwLJr80B$gh8lTCB zY1T|Y7B!G$?WJvfvT+|454pU;ft2<}L(BnXuhxvHWAgGz=9C)4z z%spe9Jt}l1OZFG8s0|$TYFI<~yJf^oNP zMQoRG2HVEd)Kd5WRjWLrKkwW+^8B|6cQ7Po`zl+0I31+8J~;z-q#9}Kt=M8|Kx=UI z*gEJFa4?Gf`Ka3(A%|Nq0Nu173I)44_Y(M&18gnE36OwyU08t~qEu9Uus)HfB;+4| zXTdY6h0vAKfm1_kvu<4EBV%9#T7HIJgP(i1YOqE|CfY`PA`-I5?@xThqX>l-oT)`r z+OpVptKag>z6H$bj|AUmP@R7y@Cz4@VEAWvnQzGeYr(3CuP2&)L$Ju00}c>e;vThP za#SoQltDyj)m7W;$^CqLzn`UeS(wWB6VJBi#X-2SNUbFfH7HedpvEgqEaKFW^aCkZ zoq9x^+phT4933QHgy-@4{jx%7{;w+(U$W7N*Oel_LKRcC`CE75eLnjuy-#z=b4vl2 zY&yPht`sl%+7G^pSTV*led=+2qx0(9z%D; z{KZT-C<-uDC^Uo_l#?5+uKF4FAKU5B1+Q*VhK&8_vI2qYA6Xv2`HU}A^}1N zaV-^spnw7CQWFvg5=bJUDM)WpLVysE4xyLO!JGZw^X{|H{jiVs{`S7--1~b!G07a6 z`Oh)Om}87*{GaDxnA=G3en;pDLc;eHw|}{H1k6-54s87NaHa<)MIE9`&$il}I2&IZ zQXD;h0KlK1mM&S+*fnJhLo_eP8?rmivhttfC%_-q~%tf89OB9eFkI1up&Ii@4D_ zjvQzDPHM~{Vf4t6XIgeEn#s_kwd|*^%1P#^J}s{xK|cSDq90s#3Lg0F9H6JdIIlJ- z{1&rdH|x#FbbJ-Fh1=1}f@5O{%-GW(ZS2$PTwO<5Jw_*fk(fwO65~LV9Dhq`4lDXQ z_}IanW2=IH>^=;P>2A60Nx^d*2sF-j_}A=-q?L4u6_k|BP}Ck`~`u@ zdvU!-tKTZj4gw48n!mq^n9yjA%G`pLINZ7n5};PZQ`NN2rRvH+Ghu3#Nf49{ym*uD zmGE#1R5Sy(OWV$MA}rWJl(+#sw!Yf(LtU85^(uvnrD1m29R4LW8QG?`xmv;43`|59 z4n#dszcl9p3cywSSmL`iZF^17&XjsNtyzZkB27`=u790$g&3IY6t1L<|CtW=KkH2Y zH_!jv`s+Bn#|KHMa!=yP-qbDW)-Y}#o#AnCOa?AxcQ#Kmj=~zc);;V05J}(k$ zRh$ZX-SyT&LCqBH8|F|_%@99ZBm9iBOByT`+;Q(Qsexw7aCgYXxUM5tt~lqP02}ZfZLP*4BY& z*b!Jur?Us7>P^@e*ILg)jv=*;G87D3V_J?&GF2uK7>6)6QeY=bq`Y`@@m8;%EKk3* zCf6p+Al`hgT816`p#U0}4MHnT2j}3;#QtVU{vVb^N3tJRsm~YWSHwJ@lZFJmG$I$i z90Z!*IOLv2TzB6de&+fCiw&0BZY_dCrIXEi#1bR$ql(>+Px&Zx4Hj$dIPK=*sTS+UU27aq8SgtUU`y8VbS0KNNJAm-|GY?|5AU^3?BJB%& zD#ka1b1SW-P4YI-_N5Zb-GY zikc8@upPASi8c+#_U4ZppxTh2{DDTX`i!~cgm!MjX zYra-y)?)tjV+Sbo`Q-tEZx27vfOyku?(9^6YZWq75l)sVv3}y(Dy5|A3S~TOUcR(6 z3uoP8rH#~P6mlF{rtzs$+SBm(@Z;Q%{xkl|0RqYf_TAdE|sNGhI}gj2qpsmqEw!x_AUMsi>$H3}}HU7QnZFrNyA`HWCWfYjjV z{P@y_bEX*h$X0c+_77`5xmHPg1atQ-nmB!vf z1TYZG?Uf5zb{aVFR`G+b75z%bTi3q)Mg~bW>X%#e-6fnBhge9MiazYopiCq8mPZy& zASx^Qm;9=A_!V!+$U7yQxceYj(v%>?)ER?`=RhD+I+K2JZ&DQP>KQa2 z;U~#|ta-W-9oc0@(G3=D=$F-VdX@%Iqd}?btx+4Xb5tZpl|+bUv~|q>6d;$H48jM8 zd3EHHRB7fWbA|ZDlCg)k@nqU-?R_8 zZ)7tZ;9smK=;!JO0*Ns$K1h$%E6j(ez6Y53M#CC`K;Lvea@43c%hT=_ONe zF+FF*T1kk&w)!n$tZch?6fR_x=ZZ)qeLRjLl>-Q)E|IDorOoeVCIw|bq?WUW8zH5m zc8lEvyRIV#(nWdF~4?pafTxUptx|zGs^&_iBBp?%GH* za4TFInVVUvS#nyMV(pmYCs~T4DZ|5~4Gao%MkNdbT4@{c2}?|P-f&N&F4uX`c3^-o z<-KD-Zq8Hy|E}>}E>@lvL%_^|cd9Yxtko0Ha5t6@j=JGkxa8Lraw$PSuEb?&no>Kt z0Ph~gf0v{C9Q%6KpF7pAO3_L)PP27>O>S;j1Q&L{a`Tn&~qvQ(PM30>-Wn{0pTGuB_(yCpdpUYVk z<^IsqpQb$gS2-9jT%%hCz^~#w>A_Q1$Y;~KBQ%|>xbR?If;{?|cJHrY_MXKZh9mL7 zV61h_`RiP_cuC2J=0XAlIjimqdf2ECB#=?U8ezjk32mjzYy<0(Ky=qpqI*9;C#9ct z9Bo8lCzn$`$A8f$X}H?-wQ}H88h8Q3UvrXh4sXoPIe0rmO0~oe`Dk8w_XTdil$5Gy z^2sA)&zs$B;ah<7rw~=J(<-rcJN%>zr(Su97P48A30GEi9VzF6Nuo=x7F%ZE9u2zz zob_RGnpoDk1&f6$yuc>mAhPsN;pV_-OxY?R&W-ydkoAKr_g5A6)?dY}L9Y~d98C02 z9E)D$o11Sb6Fvft$1`f0UM>dr87A$#?Qs`**@3o}O)J((AkJ9En=@2*2l$f$=f*=s zN*<_H&mc;1l?&Brk(6U~WD8q~qCPYmi7~MRn-SeP#AJeXknLAUbeF3f#CmGVQps0E&SRr7&23B-N@0Ld3*ldWk^~y6(9F%BKQjwGp}PF z);!kaQZ7X=TGFkVW}VU^JWR|&KPs7;G&-b2ObB8*ZVo~dXHCKkm7V(xsVY6dBrBKf zyzo5<7?6yKZdu8lhS&0x#(V2Qp~g=ed~$+6Nb2>=(tFDqO%7u@>6 zrL=OS@UP4!8DMY)W*O%t2Yu&O2&LjRM$$6xixY^vpJ-Qv^2zb*M? zKJLt{oRRIfj9GqeG6l`atIT^y4#}^?BMtz&FrbhKg`4j+KfuCIK=V|5g8b(M{ zNzkE)|KN(5^k{ZVp&y z&?V6ca;Pt6jjEK$(BeE#!*AzB{KcY$#?^0f>~4b_W0S_7VwvShvjF7$jbPDz^9B+Sbnm-VMLz z4N%Uff_0mmK3J$ui6Uiac9VWjMGFp=x&mrq&Bn&ye`-jLJ#P_8f<3T93{F_kCm}vJ z?GE;3>qh!s%BEx&OFP)j6*YEa*bN$MPC~U3m2~ ztqyLeIOGJlT%oV07u;Lj-FB|XLQ^Scq1e}w1mG_<1z```$GalK5rIv0q#ktC_ z;N6z}x^GJTfr05-d_4qY^64TqDmQ^S2$_lS^4XWUvnM@GBVo?bo?E}9(al?%*zefo zEL?2nY2MNWWZSX|06=(90l*4f<~rjTxg^Q^iu*wxru}x>(>iH|GbE4D+mhtMkG461i=wIf1?t|e4n$+TRWyUkY&8PwZ;R$I{P+~#=mWXVw zho0Xf9*MzpF9=ygf?z+{lQK0eL+KYXC!WZkmm z3oAK9;AfnXT=D<-zvKT<@_+W#7`gMj3Nj}fympfAH-+QO86NMw-G%+#z8b(j^pWw(zx2frt1={y;0709^t$I zd_6{z3%)s-mnU^qZ?0`Mqp)&57H8z_O zR;E`P{2Eo7$>(f)@OqCSF$>*}(dObhuVk?*DWO&eEEU?E+fZd9QcpI3TN`^ixXrKY zT?@S{)89%jC3wH`_l`98yD1_hS2S^=udm0TK+m(SXh#u*&IO{Qg@;faHKHvVcumG) z+Z8+rxZIH!Eb5i?4`Nd3kK#+Ad_I)Y&Ic5ioE*Pj04`1@^KU)a!H>5 zX0^rW();6v_=;vCT^vwHKnYMv=&Ejy(ebVL2}=b?0CY=DFfR3Rviiv|sjMq`F?@wN zHX)0C>3!Yes@so73ayJkFK{s{k;=|i)orh;Fea-8f)P}IAk*OO6O%xmt=(5T_sq`* z?9TXiJ{qQr&1HUI%HKcNEJfXVXYEg&!1 zW`b$2o!eAVM$C7M7BJi8P(I(?*7WhC*b^=W_C_uaM#-&%C829I5BgO;DrP9b(~DvL zhHxZIRGNYF!eKBmI`Vbg3b{SM$hzo8eN#Qv%dmo|nZ~`$Ch?R!dNU6&bIGMa+S)mT zG%)9-cOwMQUytz{YI(`LNJ|<6m=Z^AXzRHjO5)%7)@?2i(dJWtAzd#}aE_SMpkLRi zvd8cDpu-k0i(azsL1@=XiyXaitD2*z9oq@f+^3&u^yd}8eU%e*?LMmm&ko%<@Qe4Q z-nNp2cL=6V4z8Al@KZcF@=5oPR3F}3 zTHKmqIIS!X2rcv4%@`T)^Hc^)z6^n~&>ue`D$Ihrk$J=yTFUNUej9mp~gk1&aE zJMIs-*d@9qHq?NSEuOa6wsuQmh3WKJpY7x?qT0vV$l|Ms!K!bvD-790@bxs=Z+Nq$ zQ?i8Eo`A*hS!`4^gX*Tp2oug>8o(&^G_&qMS_8$VEfIeM#nNy%LUZ&G{?q0Dl#oJp z?XC>ZfsPOB6PC)^HwqWbRn}BEujf-WeB~{35kV)%-7dbg;~3xFcDMAv#tG}M7BB_v zF7aYkV%$?!Xt_a$5X&^DZDySfE!3pm+*~i>Q@4LnG;W}~9h33;Z~V}*#+sd_r=FL4 zGn7Ax(=QUi_pFmPNa9A2P6FAY=lU9mCWaFa&haN!w^2CKGu5%MYfjep-p+iY{8}NR zh20juarIv|+Uc@Ouu=voU{PmKQ5x{NQqe1? znByQ2Wd-v`lQR4=-Wl9AEcFi^&Z<)o?r7^6B<~@Q`~`#D$mw4VbBZx6NfLx~%MX!y zje;m`R>uktQReFkMW{!#tL;VLfV&0FlME6-JLJtb zO9=~$tA8}&R$n7qUAM@+5noviCHhiI)xe{pFC6c>bi*VT(f$Hj*Wq@4~2oizb7xU0Qrg8&LD6LMdh~osCeyX5a|gpwsdOaV(9b!8!{imtx8g zk);+EDit=Kp#R=Iogr8;k#s{-2}ss-@pxmD9>t-UOHVnDfqs{rCjq9Jn2$AZk3tPT zh(Fukua9`Mp9&1h50%9QqKk~GY=jpl&NO=OT+&K{E@p($FD2!`jdY=6At~#1v(9!F z6#|ED!_!-{ixj4!-M2djXI^qFrs=lR6f2oKeJo=Y9YDd$Gpb(G6oQsqj~mO~5#l>c z)TikIx)7z^xk?}r`#d^OSggq}*A~vQ(sir=MbxdqUL81@wD}ihz6=OyZhfhNnpzRp zWz*3Emu@0Dq=KU%upeCG5*pVx_|V;5l3x1mXuzsQ5kk?zs}G^5jZk2&Bkg*7E!^Ug zZRI;XMF4%t8=WT|4+qdw;Gd*nPeF_4H zlTd`xKc2@JDo8W1fhVt~7&jL~to#WQFEps`y+xL)*F$69ge7Uir1x^dyxNFfPjD{M6TyC*XYuR{j#XnU<-v}j<}>zqURgn{0m2=s+@*Y+rxSY}x9}_*;|8aPSX{AJ2Q(SYo8~k<>NIdYB;eE5nH{s3A6yOQmj<(J<$3j`Q<2Qu zMGYehP;|*Ba&)o)c6cZmOwD)FO9Sf1&^5Xi!dq%u2BKckBUcXcQ{BUMo$43)VK8>& z#y(qxyOES(g9e!6Io80V)y5;x-mf3rK5(6yq6noF!Q?|cgi!Gl4NBHW8AhF7PZSA*Bw?wjlJ4TAaTMaRpi8I?Ao0&g9z=DKKRT;OD% z`7#iOc6Gbicl5^#{8!dg*s(gkiixwH-8CW9AV zI)65Pw|cDpuyiWbKVwYc`@JmEq`z`6BBr7qOM5z%1$#@n#APp(<+HK7`i-G`b}!*X5aqnZ*Q zk4LjgdhTsWk7b4x?5waY=dSG~Kkd@&4c#VuzIYQ?t9NR+@@3Fw+DtvoKJU*ZXubNL z(fW8L*Tet%x&QT*8KDU8u}|>4r<*$z7A=HXpdBuKHNxxcmY&maazKEwNqtv8e& z-ig4A`N5=Hrxl>w65*HdmD#N^6OQ~} z!#PrPN3z|dqg;gkU^$l}WbzB3jWXm3Ac1Y3nv)bK(2@9!(3LjtZ&FusYN1#jImy;k z!Pp_I%hBTU#@_PsQPq`V0*k|$N_fi34cb3IF~>y4U%h-S6MdkZ#@+I$)gb?-hECkd zKzFYV4z0*k_ln&Ueb}*y5S4LEr7Jz*ibyvy?zOFaC|6mN;i^c>sTzb`Iz3pk5U(zo zpcEmXL^ACNhy|RtJ$N;zGKL(*2|O_^zT817Od12XNtx%kESHc-0r7E+x>8Zu&tvk;2tWSvaaAt=sY*6{lznSE$rFPw2yyVnNH=nz6)j@r@G`e4dcPqk`Oa96-)0W zjI7mB@0Hf=-qlF8r?)Z-gS)<7;7P#PoLIkQi0svR6|Aql`X3v#Ke$f2@z&}dW(8+F zO?z(Aalz6uI4|rlAHrb(*z|Mq*1x~_MmaEx`nel8COC27|3v52$tnzhfd}y$Cmd&e zRB_=rc#9?sR68*5f2x3~;h^sB>^N($0s?s;IknuLUZ}}n4Wu;S3|_h zkmhtRTq;Bs^@TQOs-!jrv>2Ts#X+`G-xS6&O12fY-j!jog`VZ$P1a>WZUsrhmzNpr zB1co6Vo)Rx57*x3pNsjYN`>?J{pFfCQ)NA4PW1|g3xkmY7R%HJLyx)>Zcd~T0!9&u zDcvy5`Azww zdDs_+X~qaDO<@uC+UjIc)n<`kUsz1DLx*p^(lG6>#CjT)7D)s~uA0E_PU3w6? zn-driTp_iYI<##~*E0fLZ`Zvsi|fY~>;+a{xWlec8knO0jkWjrap*6rSJQp&Qj*jGjMa zphjdQ(-oVX8W#iey`E%DfmjQl4g}GJ#F_`!6C|u>L?vhf{UqE>1%THRZO%Q`w)g?w zwQ;uA%3EDTIm@qGM8@w;j6|n~6|&A#-iTY$Ms=NU%^0m!`a)Y?;d^s_Hv_9$hG|P=*(K857g@j^ ztUasBkGIy=%nfE)pcZ>go8yovFS6ULXxOM7Fi z=Ou;kn8qQqp{u}6y?QU4o?v_j@2#$@6ZOtPQ(#FGAv5ik5K^V70PkLq zZB;(=I`+KFiH&gZOVkf8FYNp+p8aMfbF`T*3+R~ky@4nN0Bnd$NpmMRDux#nhIC$h ze|p_N$e9j&83H}0*JZYCbG*BGnxwV_3H?~+Er?cEL)v`G0Ms#1gT?fq;8vDRm^uJ7 zJw1&sC5cpSZy{vdMCx!!snjGGa6l~cZ>~U+W(q>|(w4GRY&A!?0gH{u(!Aw|6Xv52 z(~aCF;@>Ia6El8K2nK!bvi1mbm6C>f5Xw4H)k}*pR7Ys_VXzY{qM&AH z&mtm|z`u6e$5_m-bB`B&F$+jmG)k`LWnB@9-X7Tc?eN9#KlM8KHx=Sp)_c)UUCkeG zc{O+gT)~QS^e!WD@SJ1Ubt@R0q(t}HqK{E+CcQLxUM}e44_faX|ApVs5qf z2-wo3T65(RcP8z=LwWb3#kYC#NS52&?FrB^(O7Ihg(DX%^7!Xs*SxDIBujPAgNr#r zI(?I!U^ibtLLVMC2mo1#yfc7SqRWOh0(kww#iK|?BGL<0JLPS4X7SMVyV`D}zo`BnT#0S!QltCy&-wqL+VOKC{gYC=EMYnKDStK7 zo?M|KofQf40%%_I^QoP5=oWNqwCR&ZqqAGq)wbm%fdYve5CMi^XU~1U zS_tJfHM=2P*ee@B&GIFawHb%SqA472Qe4$ON$X*-074+}F1KmJ^$gYBAvI{@WqMuF z3pP*lrqOOeF3Ed5r5BC2y zP4f!Tdfn&GeNhw_3ZzGvC951Ak@t=^KF9v^Rv$s&PP6|p<1+mh#Z-slyXHt9 z^|O2!JvfBQcos|$P%NI4qtCwp=Dk}P5;okTkS=PcMgwXi0!Ok~g?`N9OKAthg0?VH zkF6&=zDPkH{gmwH;;?PK$?-|j*+QS5f4;;oy{|bz-_J5xjvrOvS1U4zyKmbhG0^0z zF?ZGui(*eF=xXeVs&o$Wy5y9+C<$I}@QQ~Sc7GpMs5Sj~`}Vbj%z{BVhV4*nGQlxH zlf)3s@vOQ%wo($MA_bl8>Z$Bon+`q|STTom*C$}JGY74Jrjmzz%ry4frRuc0>D&Ow zWWckn43VloW_D?jPM-?!&1e;57E};cTs#F+#oZL^j=3olOjPLBry;@+3b<+Wa_eo$szvAMJqyrS}odc}c3)mNKrIz4wj@llL(4Q5hK=<0{xN&q_0s-7QC1LBa|XW#=v-%FaC_8O2o-JFR!L0#R4g5S+| z81pqLV;JibKIA7c;6-t#6rjg5;5R(gi{mv53I~_BL%7Z9J6|uX2eE1=@!^k82!DMo zYyPws2VS8hDSw1BE~hP*nLT&XUc8ohF3^z1Z8^5vlIo~#%eryetEi9=o1~^;bpQ6_ zM=X&h6>MvgQUFdOx!Ra!f8j4G=>h(?K50G#YoPRO24G#hw{^$n$s>DlCxHJYI?j|G zirvzu*W#z9bR`nKz;^YKv-4kxMPe`1;ldr9G?wS{C!AY)zAT~V=k z01lOgfdOyv${bf#l!*3mPjzqN@$AP! zY!?IlsPgcAe91$RXVa8TM|C|nPbwLz*E@u@9q{a1N-d~)Q^YLx@X+xi#4bT5wU=`f zz|g&43(DUpSFkkGAC*arhy^q(1qfJBYr6b%l9F=b@~an0@#1j%w$7N=DdQa+J@E6w zh4%9)*usnKd|plu&oBt`h^8D^YsUXa4?ob-5~n^v0AWnGdf6yf-4<9Q(_DggJ1(<8 zTigDH86UKI3KaSaAJ-|4ZWK0t!AR=Y zuS6+h8+Ulxp{{=;!M-Y1$NpiV~zI_~xx`>X8(1Gbw?ioPQh~sQ;M3p|MuA&@7)h3-+$^xPAWCt$PRx0v<(~NxBXSjyT`i(=f*pq_1 z=(qO;L(j!xW8vl;rK9`JKNa*(7CN>9iVMBraW;ngAxZCOlW^GB)_Z=hrn{vVF@D=T zJr$aJ5cLPYhR1HyyE|>9Xab5hz%j%0GrAM>)7EKXuF;*TS!tubgV&q0j%yvgn*QvJ zO>Pf!ejEaci*WX)9-5+I*6!JFQL6s*u69TU z3w^V5{(tH95hn7MeN z@cYH{zd>u;_s`f6Ia9it|Lc@aJ42|n1)E|=S-oj>v2w0gG6BUDOPqKA%~C(s>rmQi z%=-tI!S|!gpNr!sOC5RZ;glkcKd>J8mCqj zb+0~CD2E`2S{CVN+;6iAo&DtMB_Jhn4{)3YZr8_2Kmu=H*r100v5~vd0Ko(&Q0HQ7 zYPVhGvwm>(L(M~m)QCBF+Q_=AwiQpPw_X6Fdib};T!QweZ4E|0+0m>$dQey3MgAT7 z5{sla3~C`HVA|^-gY%|wD0zd#<*0y|Q1w1_Ey&Y(myqXn*;Fg9Z+U%e9+|@%8a0jc^6a`|`zFxSPYE|!YVfQLk&%I`#X9iWF%f9-F|R^li6+ zsl||CY=%c`nphs#Xme1YZ{b+VxS;JCLDb)DxiH0GmjbCR{E!P-$fpDT*}SorxW$O% zXxkcQnY6&MGm!5ce8B80=fGjAc#@0{)CL7V&y&O|m%$YdVKO5ILyIa)*ILMp?jM zm-e(BM7IK0I8sq%t8pFi#6*!ssJhE~DHnm+%>X0kJ^bYf5o@^#?xIZmm{CRIJ|^&Y z(veGh5*$bOG|T;Z-SyIiBDaVHj*U6@)y}^uGX2-7|3B77+4$kRMPL!^OWbTyiLFG& zzOd@x?e}l?ImviGxXi)aWv?^zU+D+Bb`jBd4*+7wnQQ_q2_-@F`gGeUFRY2a2h+gq zU)fb>=h{=B)HR-Xg3k-n@b^4ABJpTr@W9ii-%0mov~^QyWnhKj`N2PZPBmrvIJA(O z&S872`I}h%6FRRu+4^lA_xV{~SjTQ5Y%wCIq62PP)!c}y?vi;R8(&)5_!Vv)6$`t; zVP9WAHuk)RCWww4u5*CKnbLeBVCF~bF^si$%QOCc~?#D(#!m(5I|%>YlYt7^FZ_%<=D74 z$fd6Aa#AKS1FDg;$jjqO0pmP7N2g?w+M%#Y6(037vAz-KNF_SH%%ffN8_Ooea3lMN zRVyHod611Ut}3yPtv&5XwtvA%z|}?ouRVRtrP?7+^Ss}^kR()TglOI4?vaXjE=Y7~ z?V8l*3hre4{?CFTI&&D(bMwK1N*qRD_t+ja)T5c}m;4OK(&zH;cX>d_?i zWvO)ZX?y0p!>0y{IFwA(cQ-#k0;NZf{5}>Y77BfWYVI{p+B58^$qxST9G~VLZVXQT z!Bur(_+$7(>)j{*LwqnhdB$=4pdthlM?7IapD|M#V3>(4AAa3^_6#`UFPrk#u6=b5 z5pwIu?uQG_Z4|>xwcyf)GWVrZ_uElXJCE@h9oy!tMWe%A&y~wd?mdDH{jd_JU6Q3M zCgS;7DM@+Ttl)=(9E`}O@4}Gh1KNR1kD6~Up1MG+auNa zk62S#$zAd>hvp-=seM==m!Hb?hv}iL1h9+1pNYdVbX4Ah7E2po^?o6{$UC~oi0(q- zDIC{U;fygbTh*uYSw0e2@U|ka0j;jnijb`L2oLfs7$xfg)TNht?$ONev8_2~VwZAi z@=bZx+b35lkj7odOnI|FwPX|2tPZ$FNfl?bQ@rX}QCENX)-~rF~am8|my^ z;|vP)>wVf`ivKbBedR0bTL|5lx(HV~Kp{qBn zx8=K0#t7~Jo$A0TG@6#USD7N3|gbz%DeIaT9fTG#i zaiyF$N82m$H@-=v2fi5F?5{Js9UEgx*#(xE}P=u~eEU7+>! z^~tcI?2In&7zzn$a_}CP34lX7w^A{4_UDB!1zQ&2^%CJyV5^b)7s(dg5`d&sSBw|a zdW$9~6KC|Ev$0`0aa3r`;29GapRl(F7tUNUW58nmrBAMu^R zpyDv1hfTAGujfYo8uR-kk~$ztX1MR|*t2_S9pui`AoaTsD+4V{d7U_ZVxq{m_1yBZ zy}e(XbE2`0vat_Hu^hEF9yJ~wb=~&A-_F1GKpl?O-gpN9fcx4^B~2?9qSa-ja(xC3P#`AY}07D@0 zo|Az$NyBqMo*!I6(V}_>9{0DDj~oWWx9!LE2PLwLz6onPlp-yat`vpvFRPT|Emv>P z_x`Rh=EO?WUZ+K@g(uA`9TGS?8rq*PtTQ~vT%+OTi_c?zS2zthJf#;)``XpG)ffwE zEJ%s*^IZKiu|^@$P^`?nh0_rIs6BPDd#hw!gCAT2;S*e1QXkL1k|Y*9gemAgk^=LH z=Cm0&fhO~M{oQEW!IZFZN>9xjO~6Ls6FjE3--&(;2`02$Uz!18B7@P|k^JGz z9(nt}@}6C_#Ip0wU2)S?{qqWhnd?0_IBw}1>)*)4pgj2*3 zPou9=Vp7xq5dxmuokf}Ed4X@iEYH>y>GB>OA&_z4*kmlAW1Gj+k}_sK@?;R4a@^e9 zqHX~14pABE8x+dq-n2iuJb(>KT1ag$g`-H)^4+qf7&T#0v0SimKTgJbGo8Z_{p4&J z({~PBkXWP*F{-o|RnZb@uI-m;g}#^PI`Wg*5&xE!@xR4IMJi`cl*~4D_kS+5A-9QY zAQ6bQO-@F_1&6cJ7oh%4ivcOuQfp3W>N}6zRAAA(VKOnLp{K_*8N~(9*#^S_mn|Mu z#Lq@ed3A!0E@g$Ta}BA3$vxsEa`FR0!9%kwv@M5cR8{GfQFCkzR^DypZV?w5=cLZs zfTt4%E$fG>F{vlJ=Znc_p*aOPgwbO;VHRzozPKC$t2%949T-&hh1(GHJm*G>P;~3G zijoc}$YhU;5hPSZ^?co;^r#=)$lPKvWI{MwcEBH8EWb Date: Tue, 17 Jan 2023 13:09:26 +0100 Subject: [PATCH 5/8] Wrapper fixes for global option, wrapper fix when processors_per_node < total cores job wallclock fix when reloaded from disk --- autosubmit/autosubmit.py | 5 + autosubmit/job/job.py | 7 + autosubmit/job/job_dict.py | 2 + autosubmit/job/job_packager.py | 23 +- autosubmit/platforms/paramiko_platform.py | 4 +- autosubmit/platforms/slurmplatform.py | 2 +- .../platforms/wrappers/wrapper_builder.py | 33 +- .../userguide/wrappers/fig/wrapper_all.png | Bin 0 -> 38242 bytes .../userguide/wrappers/fig/wrapper_h.png | Bin 0 -> 14342 bytes .../userguide/wrappers/fig/wrapper_hv.png | Bin 0 -> 19183 bytes .../userguide/wrappers/fig/wrapper_v.png | Bin 0 -> 37760 bytes .../userguide/wrappers/fig/wrapper_vh.png | Bin 0 -> 22776 bytes docs/source/userguide/wrappers/index.rst | 317 +++++++++++++----- docs/source/userguide/wrappers/old_index.rst | 272 --------------- 14 files changed, 291 insertions(+), 374 deletions(-) create mode 100644 docs/source/userguide/wrappers/fig/wrapper_all.png create mode 100644 docs/source/userguide/wrappers/fig/wrapper_h.png create mode 100644 docs/source/userguide/wrappers/fig/wrapper_hv.png create mode 100644 docs/source/userguide/wrappers/fig/wrapper_v.png create mode 100644 docs/source/userguide/wrappers/fig/wrapper_vh.png delete mode 100644 docs/source/userguide/wrappers/old_index.rst diff --git a/autosubmit/autosubmit.py b/autosubmit/autosubmit.py index c07b930e1..a915e2219 100644 --- a/autosubmit/autosubmit.py +++ b/autosubmit/autosubmit.py @@ -1549,6 +1549,8 @@ class Autosubmit: date_format = 'M' wrapper_jobs = dict() for wrapper_section, wrapper_data in as_conf.experiment_data.get("WRAPPERS", {}).items(): + if type(wrapper_data) is not dict: + continue wrapper_jobs[wrapper_section] = as_conf.get_wrapper_jobs(wrapper_data) Log.warning("Aux Job_list was generated successfully") submitter = Autosubmit._get_submitter(as_conf) @@ -4490,6 +4492,9 @@ class Autosubmit: wrapper_jobs = dict() for wrapper_name, wrapper_parameters in as_conf.get_wrappers().items(): + #continue if it is a global option (non-dict) + if type(wrapper_parameters) is not dict: + continue wrapper_jobs[wrapper_name] = as_conf.get_wrapper_jobs(wrapper_parameters) job_list.generate(date_list, member_list, num_chunks, chunk_ini, parameters, date_format, diff --git a/autosubmit/job/job.py b/autosubmit/job/job.py index acdad4fb4..495288ee3 100644 --- a/autosubmit/job/job.py +++ b/autosubmit/job/job.py @@ -1163,6 +1163,8 @@ class Job(object): parameters['WRAPPER' + "_EXTENSIBLE"] = as_conf.get_extensible_wallclock() for wrapper_section,wrapper_val in wrappers.items(): + if type(wrapper_val) is not dict: + continue parameters[wrapper_section] = as_conf.get_wrapper_type(as_conf.experiment_data["WRAPPERS"].get(wrapper_section)) parameters[wrapper_section+"_POLICY"] = as_conf.get_wrapper_policy(as_conf.experiment_data["WRAPPERS"].get(wrapper_section)) parameters[wrapper_section+"_METHOD"] = as_conf.get_wrapper_method(as_conf.experiment_data["WRAPPERS"].get(wrapper_section)).lower() @@ -1967,10 +1969,15 @@ class WrapperJob(Job): self._platform.send_command( self._platform.cancel_cmd + " " + str(self.id)) for job in self.job_list: + #if job.status == Status.RUNNING: + #job.inc_fail_count() + # job.packed = False + # job.status = Status.FAILED if job.status not in [Status.COMPLETED, Status.FAILED]: job.packed = False job.status = Status.WAITING + def _update_completed_jobs(self): for job in self.job_list: if job.status == Status.RUNNING: diff --git a/autosubmit/job/job_dict.py b/autosubmit/job/job_dict.py index 5cf8b2964..85b81bbc9 100644 --- a/autosubmit/job/job_dict.py +++ b/autosubmit/job/job_dict.py @@ -401,6 +401,8 @@ class DicJobs: job.wallclock = "01:59" elif job.wallclock is None and job.platform_name.upper() != "LOCAL": job.wallclock = "00:00" + elif job.wallclock is None: + job.wallclock = "00:00" if job.retrials == -1: job.retrials = None notify_on = parameters[section].get("NOTIFY_ON",None) diff --git a/autosubmit/job/job_packager.py b/autosubmit/job/job_packager.py index 8ea82de4e..7d413f459 100644 --- a/autosubmit/job/job_packager.py +++ b/autosubmit/job/job_packager.py @@ -717,7 +717,7 @@ class JobPackagerVertical(object): # self.jobs_list starts as only 1 member, but wrapped jobs are added in the recursion if len(self.jobs_list) >= self.wrapper_limits["max_v"] or len(self.jobs_list) >= self.wrapper_limits["max_by_section"][job.section] or len(self.jobs_list) >= self.wrapper_limits["max"]: return self.jobs_list - child = self.get_wrappable_child(job) + child = self.get_wrappable_child(job,section=job.section) # If not None, it is wrappable if child is not None and len(str(child)) > 0: # Calculate total wallclock per possible wrapper @@ -734,7 +734,7 @@ class JobPackagerVertical(object): # Wrapped jobs are accumulated and returned in this list return self.jobs_list - def get_wrappable_child(self, job): + def get_wrappable_child(self, job, section=None): """ Goes through the jobs with the same date and member than the input job, and return the first that satisfies self._is_wrappable() @@ -743,9 +743,11 @@ class JobPackagerVertical(object): :return: job that is wrappable. \n :rtype: Job Object """ - # Unnecessary assignment - sorted_jobs = self.sorted_jobs - + if section is None: + sorted_jobs = self.sorted_jobs + else: + #filter the jobs with the same section name + sorted_jobs = [job for job in self.sorted_jobs if job.section == section] for index in range(self.index, len(sorted_jobs)): child = sorted_jobs[index] if self._is_wrappable(child): @@ -809,9 +811,9 @@ class JobPackagerVerticalMixed(JobPackagerVertical): member = ready_job.member # Extract list of sorted jobs per date and member self.sorted_jobs = self.dict_jobs[date][member] - self.index = 0 + self.index = 1 - def get_wrappable_child(self, job): + def get_wrappable_child(self, job, section=None): """ Goes through the jobs with the same date and member than the input job, and return the first that satisfies self._is_wrappable() @@ -821,8 +823,11 @@ class JobPackagerVerticalMixed(JobPackagerVertical): :rtype: Job Object """ # Unnecessary assignment - sorted_jobs = self.sorted_jobs - + if section is None: + sorted_jobs = self.sorted_jobs + else: + #filter the jobs with the same section name + sorted_jobs = [job for job in self.sorted_jobs if job.section == section] for index in range(self.index, len(sorted_jobs)): child = sorted_jobs[index] if self._is_wrappable(child): diff --git a/autosubmit/platforms/paramiko_platform.py b/autosubmit/platforms/paramiko_platform.py index df5414469..a09b93f7a 100644 --- a/autosubmit/platforms/paramiko_platform.py +++ b/autosubmit/platforms/paramiko_platform.py @@ -534,8 +534,8 @@ class ParamikoPlatform(Platform): job.start_time = datetime.datetime.now() # URi: start time if job.start_time is not None and str(job.wrapper_type).lower() == "none": wallclock = job.wallclock - if job.wallclock == "00:00": - wallclock == job.platform.max_wallclock + if job.wallclock == "00:00" or job.wallclock is None: + wallclock = job.platform.max_wallclock if wallclock != "00:00" and wallclock != "00:00:00" and wallclock != "": if job.is_over_wallclock(job.start_time,wallclock): try: diff --git a/autosubmit/platforms/slurmplatform.py b/autosubmit/platforms/slurmplatform.py index 082f09dd6..53d0d115d 100644 --- a/autosubmit/platforms/slurmplatform.py +++ b/autosubmit/platforms/slurmplatform.py @@ -622,7 +622,7 @@ class SlurmPlatform(ParamikoPlatform): @staticmethod def allocated_nodes(): - return """os.system("scontrol show hostnames $SLURM_JOB_NODELIST > node_list")""" + return """os.system("scontrol show hostnames $SLURM_JOB_NODELIST > node_list_{0}".format(node_id))""" def check_file_exists(self, filename,wrapper_failed=False): file_exist = False diff --git a/autosubmit/platforms/wrappers/wrapper_builder.py b/autosubmit/platforms/wrappers/wrapper_builder.py index 9b2ffb3f9..15379edde 100644 --- a/autosubmit/platforms/wrappers/wrapper_builder.py +++ b/autosubmit/platforms/wrappers/wrapper_builder.py @@ -108,7 +108,7 @@ class PythonWrapperBuilder(WrapperBuilder): sample_list = list(sample_str) random.shuffle(sample_list) final_string = ''.join(sample_list) - return final_string+"_FAILED" + return final_string def build_imports(self): return textwrap.dedent(""" @@ -133,9 +133,9 @@ class PythonWrapperBuilder(WrapperBuilder): self.stream.flush() def __getattr__(self, attr): return getattr(self.stream, attr) - sys.stdout = Unbuffered(sys.stdout) - wrapper_id = "{1}" + node_id = "{1}" + wrapper_id = "{1}_FAILED" # Defining scripts to be run scripts= {0} """).format(str(self.job_scripts), self.get_random_alphanumeric_string(5,5),'\n'.ljust(13)) @@ -172,10 +172,15 @@ class PythonWrapperBuilder(WrapperBuilder): {0} os.system("mkdir -p machinefiles") - with open('node_list', 'r') as file: + with open("node_list_{{0}}".format(node_id), 'r') as file: all_nodes = file.read() + os.remove("node_list_{{0}}".format(node_id)) + all_nodes = all_nodes.split("_NEWLINE_") + if all_nodes[-1] == "": + all_nodes = all_nodes[:-1] + print(all_nodes) """).format(self.allocated_nodes, '\n'.ljust(13)) def build_cores_list(self): @@ -191,9 +196,11 @@ while total_cores > 0: total_cores -= 1 all_cores.append(all_nodes[idx]) else: - idx += 1 + if idx < len(all_nodes)-1: + idx += 1 processors_per_node = int(jobs_resources['PROCESSORS_PER_NODE']) processors_per_node = int(jobs_resources['PROCESSORS_PER_NODE']) + """).format(self.num_procs, str(self.jobs_resources), '\n'.ljust(13)) def build_machinefiles(self): @@ -312,6 +319,7 @@ processors_per_node = int(jobs_resources['PROCESSORS_PER_NODE']) parallel_threads_launcher = textwrap.dedent(""" pid_list = [] for i in range(len({0})): + print("Starting job ", {0}[i]) if type({0}[i]) != list: job = {0}[i] jobname = job.replace(".cmd", '') @@ -344,6 +352,8 @@ for i in range(len(pid_list)): parallel_threads_launcher = textwrap.dedent(""" pid_list = [] for i in range(len({0})): + print("Starting job ", {0}[i]) + if type({0}[i]) != list: job = {0}[i] jobname = job.replace(".cmd", '') @@ -380,6 +390,8 @@ for i in range(len(pid_list)): parallel_threads_launcher = textwrap.dedent(""" pid_list = [] for i in range(len({0})): + print("Starting job ", {0}[i]) + if type({0}[i]) != list: job = {0}[i] jobname = job.replace(".cmd", '') @@ -537,6 +549,7 @@ class PythonHorizontalVerticalWrapperBuilder(PythonWrapperBuilder): parallel_threads_launcher = textwrap.dedent(""" pid_list = [] for i in range(len({0})): + print("Starting job ", {0}[i]) if type({0}[i]) != list: job = {0}[i] jobname = job.replace(".cmd", '') @@ -678,10 +691,14 @@ class SrunWrapperBuilder(WrapperBuilder): {0} os.system("mkdir -p machinefiles") - with open('node_list', 'r') as file: + with open("node_list_{{0}}".format(node_id), 'r') as file: all_nodes = file.read() + os.remove("node_list_{{0}}".format(node_id)) all_nodes = all_nodes.split("_NEWLINE_") + if all_nodes[-1] == "": + all_nodes = all_nodes[:-1] + print(all_nodes) """).format(self.allocated_nodes, '\n'.ljust(13)) def build_cores_list(self): @@ -697,8 +714,10 @@ while total_cores > 0: total_cores -= 1 all_cores.append(all_nodes[idx]) else: - idx += 1 + if idx < len(all_nodes)-1: + idx += 1 processors_per_node = int(jobs_resources['PROCESSORS_PER_NODE']) + processors_per_node = int(jobs_resources['PROCESSORS_PER_NODE']) """).format(self.num_procs, str(self.jobs_resources), '\n'.ljust(13)) diff --git a/docs/source/userguide/wrappers/fig/wrapper_all.png b/docs/source/userguide/wrappers/fig/wrapper_all.png new file mode 100644 index 0000000000000000000000000000000000000000..b535ea0c55838a74f2a5a195e0fe0ae9ec2c074f GIT binary patch literal 38242 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 VNtjPJgKzRdq{QSz%Y^m)|1Z^&VN(DA literal 0 HcmV?d00001 diff --git a/docs/source/userguide/wrappers/fig/wrapper_hv.png b/docs/source/userguide/wrappers/fig/wrapper_hv.png new file mode 100644 index 0000000000000000000000000000000000000000..9d90796b40281d0362f4f0a4ece4e5325502c301 GIT binary patch literal 19183 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 HoD!Mz3YG?+96s25geVx=xO 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 literal 0 HcmV?d00001 diff --git a/docs/source/userguide/wrappers/fig/wrapper_vh.png b/docs/source/userguide/wrappers/fig/wrapper_vh.png new file mode 100644 index 0000000000000000000000000000000000000000..81114f7745e13d32071300e6f2cf069f3b428347 GIT binary patch literal 22776 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 E9bcHPy8r+H literal 0 HcmV?d00001 diff --git a/docs/source/userguide/wrappers/index.rst b/docs/source/userguide/wrappers/index.rst index 320a0f5aa..5acda29df 100644 --- a/docs/source/userguide/wrappers/index.rst +++ b/docs/source/userguide/wrappers/index.rst @@ -12,20 +12,20 @@ Job packages, or "wrappers", are jobs created as bundles of different tasks (sub .. code-block:: bash - autosubmit create -cw # Unstarted experiment + autosubmit create -cw # Unstarted experiment autosubmit monitor -cw # Ongoing experiment autosubmit inspect -cw -f # Visualize wrapper cmds -General Configuration -===================== +Basic configuration +=================== To configure a new wrapper, the user has to define a `WRAPPERS` section in any configuration file. When using the standard configuration, this one is autosubmit.yml. .. code-block:: YAML - WRAPPERS: - WRAPPER_0: - TYPE: "horizontal" + WRAPPERS: + WRAPPER_0: + TYPE: "horizontal" By default, Autosubmit will try to bundle jobs of the same type. The user can alter this behavior by setting the `JOBS_IN_WRAPPER` parameter directive in the wrapper section. @@ -33,74 +33,200 @@ When using multiple wrappers or 2-dim wrappers is essential to define the `JOBS_ .. code-block:: YAML - JOBS: - JOB_0: - FILE: test.sh - RUNNING: chunk - JOB_1: - FILE: test2.sh - DEPENDENCY: "JOB_0 JOB_1-1" - RUNNING: chunk - WRAPPERS: - WRAPPER_0: - TYPE: "horizontal" - JOBS_IN_WRAPPER: "JOB_0" - WRAPPER_1: - TYPE: "vertical" - JOBS_IN_WRAPPER: "JOB_1" - - + WRAPPERS: + WRAPPER_H: + TYPE: "horizontal" + JOBS_IN_WRAPPER: "SIM" + WRAPPER_V: + TYPE: "vertical" + JOBS_IN_WRAPPER: "SIM2" + WRAPPER_VH: + TYPE: "vertical-horizontal" + JOBS_IN_WRAPPER: "SIM3 SIM4" + WRAPPER_HV: + TYPE: "horizontal-vertical" + JOBS_IN_WRAPPER: "SIM5 SIM6" + +.. figure:: fig/wrapper_all.png + :name: wrapper all + :align: center + :alt: wrapper all .. important:: Autosubmit will not wrap tasks with external and non-fulfilled dependencies. -Wrapper check time ------------------- -The CHECK_TIME_WRAPPER parameter defines the frequency, in seconds, on which Autosubmit will check the remote platform status of all the wrapper tasks. +Wrapper parameters description +------------------------------ + +Type +~~~~ + +The type parameter allow the user to determine the wrapper algorithm. + +It affects tasks in wrapper order executions, and in hybrid cases, it adds some internal logic. + +.. code-block:: YAML + + WRAPPERS: + WRAPPER_0: + TYPE: "horizontal" + +Jobs_in_wrapper +~~~~~~~~~~~~~~~ + +The jobs_in_wrapper parameter allow the user to determine the tasks inside a wrapper by giving the job_section name. It can group multiple tasks by providing more than one job_section name. + +.. code-block:: YAML + + WRAPPERS: + WRAPPER_0: + TYPE: "horizontal" + JOBS_IN_WRAPPER: "SIM" + + +Method +~~~~~~ + +The method parameter allow the user to determine if the wrapper will use machine files or threads. + +This allows to form a wrapper with that relies on machinefiles to work. + +.. code-block:: YAML + + WRAPPERS: + WRAPPER_0: + TYPE: "horizontal" + JOBS_IN_WRAPPER: "SIM" + METHOD: ASTHREAD + +or + +.. code-block:: YAML + + WRAPPERS: + WRAPPER_0: + TYPE: "horizontal" + JOBS_IN_WRAPPER: "SIM" + +This allows to form a wrapper with shared-memory paradigm instead of rely in machinefiles to work in parallel. + + +.. code-block:: YAML + + WRAPPERS: + WRAPPER_0: + TYPE: "horizontal" + JOBS_IN_WRAPPER: "SIM" + METHOD: SRUN + +Extend_wallclock +~~~~~~~~~~~~~~~~ + +The extend_wallclock parameter allow the users to provide extra headroom for the wrapper. The accepted value is an integer. Autosubmit will translate this value automatically to the max_wallclock of the sum of wrapper inner-tasks wallclock at the horizontal level. + +.. code-block:: YAML + + WRAPPERS: + WRAPPER_0: + TYPE: "horizontal" + JOBS_IN_WRAPPER: "SIM" + extend_wallclock: 1 + +Retrials +~~~~~~~~ + +The retrials parameter allows the users to enable or disable the wrapper's retrial mechanism. This value overrides the general tasks defined. + +Vertical wrappers will retry the jobs without resubmitting the wrapper. + +.. code-block:: YAML - WRAPPERS: - CHECK_TIME_WRAPPER: 10 - WRAPPER_0: - TYPE: "horizontal" - JOBS_IN_WRAPPER: "JOB_0" - WRAPPER_1: - TYPE: "vertical" - JOBS_IN_WRAPPER: "JOB_1" + WRAPPERS: + WRAPPER_0: + TYPE: "horizontal" + JOBS_IN_WRAPPER: "SIM" + RETRIALS: 2 + +Queue +~~~~~~ + +The queue parameter allows the users to define a different queue for the wrapper. This value overrides the platform queue and job queue. + +.. code-block:: YAML + + WRAPPERS: + WRAPPER_0: + TYPE: "horizontal" + JOBS_IN_WRAPPER: "SIM" + QUEUE: BSC_ES + +Export +~~~~~~ + +The queue parameter allows the users to define a path to a script that will load environment scripts before running the wrapper tasks. This value overrides the job queue. + +.. code-block:: YAML + + WRAPPERS: + WRAPPER_0: + TYPE: "horizontal" + JOBS_IN_WRAPPER: "SIM" + EXPORT: %CURRENT_ROOTDIR%/envmodules.sh + + + +Check_time_wrapper +~~~~~~~~~~~~~~~~~~ + +The CHECK_TIME_WRAPPER parameter defines the frequency, in seconds, on which Autosubmit will check the remote platform status of all the wrapper tasks. This affects all wrappers. + +.. code-block:: YAML + + WRAPPERS: + CHECK_TIME_WRAPPER: 10 + WRAPPER_0: + TYPE: "horizontal" + JOBS_IN_WRAPPER: "SIM" + WRAPPER_1: + TYPE: "vertical" + JOBS_IN_WRAPPER: "SIM1" + +Number of jobs in a wrapper({MIN/MAX}_WRAPPED{_H/_V} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Number of jobs in a wrapper ------------------------------ Users can configure the maximum and the minimum number of jobs in each wrapper by configuring MAX_WRAPPED and MIN_WRAPPED inside the wrapper section. If the user doesn't set them, Autosubmit will default to MAX_WRAPPED: “infinite” and MIN_WRAPPED: 2. .. code-block:: YAML - WRAPPERS: - MIN_WRAPPED: 2 - MAX_WRAPPED: 999999 - WRAPPER_0: - MAX_WRAPPED: 2 - TYPE: "horizontal" - JOBS_IN_WRAPPER: "JOB_0" - WRAPPER_1: - TYPE: "vertical" - JOBS_IN_WRAPPER: "JOB_1" + WRAPPERS: + MIN_WRAPPED: 2 + MAX_WRAPPED: 999999 + WRAPPER_0: + MAX_WRAPPED: 2 + TYPE: "horizontal" + JOBS_IN_WRAPPER: "SIM" + WRAPPER_1: + TYPE: "vertical" + JOBS_IN_WRAPPER: "SIM1" For 2-dim wrappers, {MAX_MIN}_WRAPPED_{V/H} must be used instead of the general one. .. code-block:: YAML - WRAPPERS: - MIN_WRAPPED: 2 - MAX_WRAPPED: 999999 - WRAPPER_0: - MAX_WRAPPED_H: 2 - MAX_WRAPPED_V: 4 - MIN_WRAPPED_H: 2 - MIN_WRAPPED_V: 2 - TYPE: "horizontal-vertical" - JOBS_IN_WRAPPER: "JOB_0 JOB_1" + WRAPPERS: + MIN_WRAPPED: 2 + MAX_WRAPPED: 999999 + WRAPPER_0: + MAX_WRAPPED_H: 2 + MAX_WRAPPED_V: 4 + MIN_WRAPPED_H: 2 + MIN_WRAPPED_V: 2 + TYPE: "horizontal-vertical" + JOBS_IN_WRAPPER: "SIM SIM1" + +Policy +~~~~~~ -Wrapper Policy ---------------- Autosubmit will wrap as many tasks as possible while respecting the limits set in the configuration(MAX_WRAPPED, MAX_WRAPPED_H, MAX_WRAPPED_V, MIN_WRAPPED, MIN_WRAPPED_V, and MIN_WRAPPED_H parameters). However, users have three different policies available to tune the behavior in situations where there aren’t enough tasks in general, or there are uncompleted tasks remaining from a failed wrapper job: @@ -108,15 +234,16 @@ Autosubmit will wrap as many tasks as possible while respecting the limits set i * Mixed: will wait for MIN_WRAPPED jobs to be available to create a wrapper, except if one of the wrapped tasks had failed beforehand. In this case, Autosubmit will submit them individually. * Strict: will always wait for MIN_WRAPPED tasks to be ready to create a wrapper. + .. warning: Mixed and strict policies can cause deadlocks. .. code-block:: YAML - WRAPPERS: - POLICY: "flexible" - WRAPPER_0: - TYPE: "vertical" - JOBS_IN_WRAPPER: "JOB_0 JOB_1" + WRAPPERS: + POLICY: "flexible" + WRAPPER_0: + TYPE: "vertical" + JOBS_IN_WRAPPER: "SIM SIM1" .. _Vertical: @@ -129,10 +256,15 @@ Autosubmit supports wrapping together vertically jobs of different types. .. code-block:: YAML - WRAPPERS: - WRAPPER_V: - TYPE: "vertical" - JOBS_IN_WRAPPER: "JOB_0" + WRAPPERS: + WRAPPER_V: + TYPE: "vertical" + JOBS_IN_WRAPPER: "SIM" + +.. figure:: fig/wrapper_v.png + :name: wrapper vertical + :align: center + :alt: wrapper vertical .. _Horizontal: @@ -143,10 +275,17 @@ Horizontal wrappers are suited for jobs that must run parallel (e.x. members of .. code-block:: YAML - WRAPPERS: - WRAPPER_H: - TYPE: "horizontal" - JOBS_IN_WRAPPER: "JOB_0" + WRAPPERS: + WRAPPER_H: + TYPE: "horizontal" + JOBS_IN_WRAPPER: "SIM" + + +.. figure:: fig/wrapper_h.png + :name: wrapper horizontal + :align: center + :alt: wrapper horizontal + .. _Vertical-horizontal: @@ -155,6 +294,12 @@ Vertical-horizontal wrapper The vertical-horizontal wrapper allows bundling together a vertical sequence of tasks independent of the horizontal ones. Therefore, all horizontal tasks do not need to finish to progress to the next horizontal level. +.. figure:: fig/wrapper_vh.png + :name: wrapper vertical-horizontal + :align: center + :alt: wrapper vertical-horizontal + + .. _Horizontal-vertical: Horizontal-vertical wrapper @@ -162,8 +307,16 @@ Horizontal-vertical wrapper The horizontal-vertical wrapper allows bundling together tasks that could run simultaneously but need to communicate before progressing to the next horizontal level. -Example: Crossdate wrappers using the the new dependencies ----------------------------------------------------------- + +.. figure:: fig/wrapper_hv.png + :name: wrapper horizontal-vertical + :align: center + :alt: wrapper horizontal-vertical + + + +Advanced example: Set-up an crossdate wrapper +--------------------------------------------- Considering the following configuration: @@ -236,11 +389,11 @@ Considering the following configuration: COMPILE_DA: DA: DATES_FROM: - "20120201": - CHUNKS_FROM: + "20120201": + CHUNKS_FROM: 1: - DATES_TO: "20120101" - CHUNKS_TO: "1" + DATES_TO: "20120101" + CHUNKS_TO: "1" RUNNING: chunk SYNCHRONIZE: member DELAY: '0' @@ -252,13 +405,11 @@ Considering the following configuration: .. code-block:: yaml wrappers: - wrapper_simda: - TYPE: "horizontal-vertical" - JOBS_IN_WRAPPER: "SIM DA" - - + wrapper_simda: + TYPE: "horizontal-vertical" + JOBS_IN_WRAPPER: "SIM DA" .. figure:: fig/monarch-da.png :name: crossdate-example :align: center - :alt: crossdate-example \ No newline at end of file + :alt: crossdate-example diff --git a/docs/source/userguide/wrappers/old_index.rst b/docs/source/userguide/wrappers/old_index.rst deleted file mode 100644 index 42e133db3..000000000 --- a/docs/source/userguide/wrappers/old_index.rst +++ /dev/null @@ -1,272 +0,0 @@ -Configure Wrappers -================== - -In order to understand the goal of this feature, please take a look at: https://earth.bsc.es/wiki/lib/exe/fetch.php?media=library:seminars:techniques_to_improve_the_throughput.pptx - -At the moment there are 4 types of wrappers that can be used depending on the experiment's workflow: - -* Vertical -* Horizontal -* Hybrid (horizontal-vertical and vertical-horizontal approaches) -* Multiple wrappers - Same experiment - -When using the wrapper, it is useful to be able to visualize which packages are being created. -So, when executing *autosubmit monitor cxxx*, a dashed box indicates the jobs that are wrapped together in the same job package. - -How to configure ----------------- - -In ``autosubmit_cxxx.yml``, regardless of the wrapper type, you need to make sure that the values of the variables **MAXWAITINGJOBS** and **TOTALJOBS** are increased according to the number of jobs expected to be waiting/running at the same time in your experiment. - -For example: - -.. code-block:: yaml - - config: - EXPID: .... - AUTOSUBMIT_VERSION: 4.0.0 - ... - - MAXWAITINGJOBS: 100 - TOTALJOBS: 100 - ... - -and below the config: block, add the wrapper directive, indicating the wrapper type: - -.. code-block:: yaml - - wrappers: - wrapper: - TYPE: - JOBS_IN_WRAPPER: - -You can also specify which job types should be wrapped. This can be done using the **JOBS_IN_WRAPPER** parameter. -It is only required for the vertical-mixed type (in which the specified job types will be wrapped together), so if nothing is specified, all jobs will be wrapped. -By default, jobs of the same type will be wrapped together, as long as the constraints are satisfied. - -Number of jobs in a package -~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. code-block:: yaml - - wrappers: - wrapper: - TYPE: - MIN_WRAPPED: 2 - MAX_WRAPPED: 999 - POLICY: flexible #default is flexible. Values: flexible,strict,mixed - - -- **MAX_WRAPPED** can be defined in ``jobs_cxxx.yml`` in order to limit the number of jobs wrapped for the corresponding job section - - If not defined, it considers the **MAX_WRAPPED** defined under wrapper: in ``autosubmit_cxxx.yml`` - - If **MAX_WRAPPED** is not defined, then **TOTALJOBS** is used by default -- **MIN_WRAPPED** can be defined in ``autosubmit_cxxx.yml`` in order to limit the minimum number of jobs that a wrapper can contain - - If not defined, it considers that **MIN_WRAPPED** is 2. - - If **POLICY** is flexible and it is not possible to wrap **MIN_WRAPPED** or more tasks, these tasks will be submitted as individual jobs, as long as the condition is not satisfied. - - If **POLICY** is mixed and there are failed jobs inside a wrapper, these jobs will be submitted as individual jobs. - - If **POLICY** is strict and it is not possible to wrap **MIN_WRAPPED** or more tasks, these tasks will not be submitted until there are enough tasks to build a package. - - Strict and mixed policies can cause **deadlocks**. - - -Wrapper check time -~~~~~~~~~~~~~~~~~~ - -It is possible to override the **SAFETYSLEEPTIME** for the wrapper, by using **CHECK_TIME_WRAPPER** and defining a time interval (in seconds) in which the wrapper internal jobs should be checked. - -.. important:: Note that the **numbers** shown in this documentation are examples. The actual values must be set according to the specific workflow, as well as the platform configurations. - -Vertical wrapper ----------------- - -The vertical wrapper is more appropriate when there are many sequential jobs. To use it, set TYPE: vertical: - -.. code-block:: yaml - - wrappers: - wrapper: - TYPE: vertical - -In order to be able to use the vertical wrapper, in ``platforms_cxxx.yml`` set the maximum wallclock allowed by the platform in use: - -.. code-block:: yaml - - marenostrum4: - ... - MAX_WALLCLOCK: 72:00 - -Remember to add to each job the corresponding WALLCLOCK time. - -Vertical with multiple sections -------------------------------- - -This is a mode of the vertical wrapper that allows jobs of different types to be wrapped together. -Note that the solution considers the order of the sections defined in the ``jobs_cxxx.yml`` file, so the order of the sections given in **JOBS_IN_WRAPPER** is irrelevant. -Additionally, jobs are grouped within the corresponding date, member and chunk hierarchy. - -.. code-block:: yaml - - wrappers: - wrapper: - TYPE: vertical - JOBS_IN_WRAPPER: SIM&SIM2 # REQUIRED - -.. figure:: fig/vertical-mixed.png - :name: vertical-mixed - :width: 100% - :align: center - :alt: vertical-mixed wrapper - -Horizontal wrapper ------------------- - -The horizontal wrapper is more appropriate when there are multiple ensemble members that can be run in parallel. - -If the wrapped jobs have an mpirun call, they will need machine files to specify in which nodes each job will run. -Different cases may need specific approaches when creating the machine files. For auto-ecearth use COMPONENTS instead of STANDARD. - -.. code-block:: yaml - - wrappers: - wrapper: - TYPE: horizontal - JOBS_IN_WRAPPER: SIM - - - -In order to be able to use the horizontal wrapper, in ``platforms_cxxx.yml`` set the maximum number of processors allowed by the platform in use: - -.. code-block:: yaml - - marenostrum4: - ... - MAX_PROCESSORS: 2400 - -.. figure:: fig/horizontal_remote.png - :name: horizontal_remote - :width: 60% - :align: center - :alt: horizontally wrapped jobs - -Shared-memory Experiments -~~~~~~~~~~~~~~~~~~~~~~~~~ - -There is also the possibility of setting the option **METHOD** to SRUN in the wrapper directive (**ONLY** for vertical and vertical-horizontal wrappers). - -This allows to form a wrapper with shared-memory paradigm instead of rely in machinefiles to work in parallel. - -.. code-block:: yaml - - wrappers: - wrapper: - - TYPE: vertical - METHOD: srun # default ASTHREAD - -Hybrid wrapper --------------- - -The hybrid wrapper is a wrapper that works both vertically and horizontally at the same time, meaning that members and chunks can be wrapped in one single job. -Mixed approach using a combination of horizontal and vertical wrappers and the list of jobs is a list of lists. - -Horizontal-vertical -------------------- - -- There is a dependency between lists. Each list runs after the previous one finishes; the jobs within the list run in parallel at the same time -- It is particularly suitable if there are jobs of different types in the list with different wall clocks, but dependencies between jobs of different lists; it waits for all the jobs in the list to finish before starting the next list - - -.. code-block:: yaml - - wrappers: - wrapper: - TYPE: horizontal-vertical - MACHINEFILES: STANDARD - JOBS_IN_WRAPPER: SIM&DA - -.. figure:: fig/dasim.png - :name: wrapper_horizontal_vertical - :width: 100% - :align: center - :alt: hybrid wrapper - - -Vertical-horizontal -------------------- - -- In this approach, each list is independent of each other and run in parallel; jobs within the list run one after the other -- It is particularly suitable for running many sequential ensembles - - -.. code-block:: yaml - - wrappers: - wrapper: - TYPE: vertical-horizontal - MACHINEFILES: STANDARD - JOBS_IN_WRAPPER: SIM - -.. figure:: fig/vertical-horizontal.png - :name: wrapper_vertical_horizontal - :width: 100% - :align: center - :alt: hybrid wrapper - -Multiple wrappers at once -------------------------- - -This is an special mode that allows you to use multiple **independent** wrappers on the same experiment. By using an special variable that allows to define subwrapper sections - -.. code-block:: yaml - - wrappers: - wrapper_0: - TYPE: vertical - JOBS_IN_WRAPPER: SIM - - wrapper_1: - TYPE: vertical - JOBS_IN_WRAPPER: DA&REDUCE - -.. figure:: fig/multiple_wrappers.png - :name: - :width: 100% - :align: center - :alt: multi wrapper - -Summary -------- - -In `autosubmit_cxxx.yml`: - -.. code-block:: YAML - - # Basic Configuration of wrapper - #TYPE: {vertical,horizontal,horizontal-vertical,vertical-horizontal} # REQUIRED - # JOBS_IN_WRAPPER: Sections that should be wrapped together ex SIM - # METHOD: Select between MACHINESFILES or Shared-Memory. - # MIN_WRAPPED set the minim number of jobs that should be included in the wrapper. DEFAULT: 2 - # MAX_WRAPPED set the maxim number of jobs that should be included in the wrapper. DEFAULT: TOTALJOBS - # Policy: Select the behaviour of the inner jobs Strict/Flexible/Mixed - # EXTEND_WALLCLOCK: Allows to extend the wallclock by the max wallclock of the horizontal package (max inner job). Values are integer units (0,1,2) - # RETRIALS: Enables a retrial mechanism for vertical wrappers, or default retrial mechanism for the other wrappers - - wrapperS: - wrapper: - TYPE: Vertical #REQUIRED - JOBS_IN_WRAPPER: SIM # Job types (as defined in jobs_cxxx.yml) separated by space. REQUIRED only if vertical-mixed - MIN_WRAPPED: 2 - MAX_WRAPPED: 9999 # OPTIONAL. Integer value, overrides TOTALJOBS - CHECK_TIME_WRAPPER: # OPTIONAL. Time in seconds, overrides SAFETYSLEEPTIME - POLICY: flexible # OPTIONAL, Wrapper policy, mixed, flexible, strict - QUEUE: bsc_es # If not specified, queue will be the same of the first SECTION specified on JOBS_IN_WRAPPER - #EXPORT: Allows to run an env script or load some modules before running this wrapper. # If not specified, export value will be the same of the first SECTION specified on JOBS_IN_WRAPPER - -In `platforms_cxxx.yml`: - -.. code-block:: yaml - - marenostrum4: - ... - MAX_WALLCLOCK: - MAX_PROCESSORS: - PROCESSORS_PER_NODE: 48 -- GitLab From 5459dfdf7d59d85dfab7a66374145bb1464b0cd1 Mon Sep 17 00:00:00 2001 From: dbeltran Date: Tue, 17 Jan 2023 17:53:32 +0100 Subject: [PATCH 6/8] Wrappers pipelines issues --- autosubmit/job/job_packager.py | 58 ++++++++++++------------------ autosubmit/platforms/ecplatform.py | 4 +-- test/unit/test_wrappers.py | 1 + 3 files changed, 26 insertions(+), 37 deletions(-) diff --git a/autosubmit/job/job_packager.py b/autosubmit/job/job_packager.py index 7d413f459..f36ed9da5 100644 --- a/autosubmit/job/job_packager.py +++ b/autosubmit/job/job_packager.py @@ -550,7 +550,10 @@ class JobPackager(object): for job in jobs_list: if job.section.upper() in section_name.split("&"): jobs_by_section[wrapper_name][section_name].append(job) - remaining_jobs.remove(job) + try: + remaining_jobs.remove(job) + except ValueError: + pass for job in remaining_jobs: jobs_by_section["SIMPLE"][job.section].append(job) return jobs_by_section @@ -660,7 +663,6 @@ class JobPackager(object): if job.section == section: horizontal_packager.wrapper_limits["max_by_section"][section] = horizontal_packager.wrapper_limits["max_by_section"][section] - 1 horizontal_packager.wrapper_limits["max"] = horizontal_packager.wrapper_limits["max"] - actual_wrapped_jobs - for job in horizontal_package: dict_jobs = self._jobs_list.get_ordered_jobs_by_date_member(self.current_wrapper_section) job_list = JobPackagerVerticalMixed(dict_jobs, job, [job], job.wallclock, @@ -717,7 +719,7 @@ class JobPackagerVertical(object): # self.jobs_list starts as only 1 member, but wrapped jobs are added in the recursion if len(self.jobs_list) >= self.wrapper_limits["max_v"] or len(self.jobs_list) >= self.wrapper_limits["max_by_section"][job.section] or len(self.jobs_list) >= self.wrapper_limits["max"]: return self.jobs_list - child = self.get_wrappable_child(job,section=job.section) + child = self.get_wrappable_child(job) # If not None, it is wrappable if child is not None and len(str(child)) > 0: # Calculate total wallclock per possible wrapper @@ -734,27 +736,8 @@ class JobPackagerVertical(object): # Wrapped jobs are accumulated and returned in this list return self.jobs_list - def get_wrappable_child(self, job, section=None): - """ - Goes through the jobs with the same date and member than the input job, and return the first that satisfies self._is_wrappable() - - :param job: job to be evaluated. \n - :type job: Job Object \n - :return: job that is wrappable. \n - :rtype: Job Object - """ - if section is None: - sorted_jobs = self.sorted_jobs - else: - #filter the jobs with the same section name - sorted_jobs = [job for job in self.sorted_jobs if job.section == section] - for index in range(self.index, len(sorted_jobs)): - child = sorted_jobs[index] - if self._is_wrappable(child): - self.index = index + 1 - return child - continue - return None + def get_wrappable_child(self, job): + pass def _is_wrappable(self, job): """ @@ -768,7 +751,7 @@ class JobPackagerVertical(object): """ if job.packed is False and (job.status == Status.READY or job.status == Status.WAITING): for parent in job.parents: - # First part of this conditional is always going to be true because otherwise there would be a cycle + # First part of this conditional is true only if the parent is already on the wrapper package ( job_lists == current_wrapped jobs there ) # Second part is actually relevant, parents of a wrapper should be COMPLETED if parent not in self.jobs_list and parent.status != Status.COMPLETED: return False @@ -810,10 +793,11 @@ class JobPackagerVerticalMixed(JobPackagerVertical): if ready_job.member is not None and len(str(ready_job.member)) > 0: member = ready_job.member # Extract list of sorted jobs per date and member - self.sorted_jobs = self.dict_jobs[date][member] - self.index = 1 + self.sorted_jobs = dict_jobs[date][member] + self.index = 0 + - def get_wrappable_child(self, job, section=None): + def get_wrappable_child(self, job): """ Goes through the jobs with the same date and member than the input job, and return the first that satisfies self._is_wrappable() @@ -822,12 +806,8 @@ class JobPackagerVerticalMixed(JobPackagerVertical): :return: job that is wrappable. \n :rtype: Job Object """ - # Unnecessary assignment - if section is None: - sorted_jobs = self.sorted_jobs - else: - #filter the jobs with the same section name - sorted_jobs = [job for job in self.sorted_jobs if job.section == section] + sorted_jobs = self.sorted_jobs + for index in range(self.index, len(sorted_jobs)): child = sorted_jobs[index] if self._is_wrappable(child): @@ -835,6 +815,14 @@ class JobPackagerVerticalMixed(JobPackagerVertical): return child continue return None + # Not passing tests but better wrappers result to check + # for child in job.children: + # if child.name != job.name: + # if self._is_wrappable(child): + # self.index = self.index + 1 + # return child + # continue + # return None def _is_wrappable(self, job): """ @@ -848,7 +836,7 @@ class JobPackagerVerticalMixed(JobPackagerVertical): """ if job.packed is False and (job.status == Status.READY or job.status == Status.WAITING): for parent in job.parents: - # First part of this conditional is always going to be true because otherwise there would be a cycle + # First part of this conditional is true only if the parent is already on the wrapper package ( job_lists == current_wrapped jobs there ) # Second part is actually relevant, parents of a wrapper should be COMPLETED if parent not in self.jobs_list and parent.status != Status.COMPLETED: return False diff --git a/autosubmit/platforms/ecplatform.py b/autosubmit/platforms/ecplatform.py index 0533e1755..8b3849715 100644 --- a/autosubmit/platforms/ecplatform.py +++ b/autosubmit/platforms/ecplatform.py @@ -102,8 +102,8 @@ class EcPlatform(ParamikoPlatform): self.mkdir_cmd = ("ecaccess-file-mkdir " + self.host + ":" + self.scratch + "/" + self.project_dir + "/" + self.user + "/" + self.expid + "; " + "ecaccess-file-mkdir " + self.host + ":" + self.remote_log_dir) - self.check_remote_permissions_cmd = "ecaccess-file-mkdir " + os.path.join(self.scratch,self.project_dir,self.user,"_permission_checker_azxbyc") - self.check_remote_permissions_remove_cmd = "ecaccess-file-rmdir " + os.path.join(self.scratch,self.project_dir,self.user,"_permission_checker_azxbyc") + self.check_remote_permissions_cmd = "ecaccess-file-mkdir " + self.host+":"+os.path.join(self.scratch,self.project_dir,self.user,"_permission_checker_azxbyc") + self.check_remote_permissions_remove_cmd = "ecaccess-file-rmdir " + self.host+":"+os.path.join(self.scratch,self.project_dir,self.user,"_permission_checker_azxbyc") def get_checkhost_cmd(self): return self._checkhost_cmd diff --git a/test/unit/test_wrappers.py b/test/unit/test_wrappers.py index 495030c77..b3eed1a60 100644 --- a/test/unit/test_wrappers.py +++ b/test/unit/test_wrappers.py @@ -11,6 +11,7 @@ from autosubmit.job.job_list_persistence import JobListPersistenceDb from autosubmit.job.job_common import Status from random import randrange from collections import OrderedDict +import pytest class TestWrappers(TestCase): -- GitLab From c58415e953f424a73c1a2c3ae041ec3f696dd341 Mon Sep 17 00:00:00 2001 From: dbeltran Date: Wed, 18 Jan 2023 11:10:27 +0100 Subject: [PATCH 7/8] Fixed processors offset when horizontal is used --- autosubmit/job/job_packager.py | 26 +++++++++++++------------- autosubmit/job/job_packages.py | 8 ++++---- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/autosubmit/job/job_packager.py b/autosubmit/job/job_packager.py index f36ed9da5..4be82311a 100644 --- a/autosubmit/job/job_packager.py +++ b/autosubmit/job/job_packager.py @@ -808,21 +808,21 @@ class JobPackagerVerticalMixed(JobPackagerVertical): """ sorted_jobs = self.sorted_jobs - for index in range(self.index, len(sorted_jobs)): - child = sorted_jobs[index] - if self._is_wrappable(child): - self.index = index + 1 - return child - continue - return None - # Not passing tests but better wrappers result to check - # for child in job.children: - # if child.name != job.name: - # if self._is_wrappable(child): - # self.index = self.index + 1 - # return child + # for index in range(self.index, len(sorted_jobs)): + # child = sorted_jobs[index] + # if self._is_wrappable(child): + # self.index = index + 1 + # return child # continue # return None + # Not passing tests but better wrappers result to check + for child in job.children: + if child.name != job.name: + if self._is_wrappable(child): + self.index = self.index + 1 + return child + continue + return None def _is_wrappable(self, job): """ diff --git a/autosubmit/job/job_packages.py b/autosubmit/job/job_packages.py index c715eb594..4c3cc8a5f 100644 --- a/autosubmit/job/job_packages.py +++ b/autosubmit/job/job_packages.py @@ -280,7 +280,7 @@ class JobPackageArray(JobPackageBase): self._common_script = None self._array_size_id = "[1-" + str(len(jobs)) + "]" self._wallclock = '00:00' - self._num_processors = '1' + self._num_processors = '0' for job in jobs: if job.wallclock > self._wallclock: self._wallclock = job.wallclock @@ -363,7 +363,7 @@ class JobPackageThread(JobPackageBase): self._job_dependency = dependency self._common_script = None self._wallclock = '00:00' - self._num_processors = '1' + self._num_processors = '0' self._jobs_resources = jobs_resources self._wrapper_factory = self.platform.wrapper self.current_wrapper_section = wrapper_section @@ -410,7 +410,7 @@ class JobPackageThread(JobPackageBase): return jobs_scripts @property def queue(self): - if str(self._num_processors) == '1': + if str(self._num_processors) == '1' or str(self._num_processors) == '0': return self.platform.serial_platform.serial_queue else: return self._queue @@ -522,7 +522,7 @@ class JobPackageThreadWrapped(JobPackageThread): @property def queue(self): - if str(self._num_processors) == '1': + if str(self._num_processors) == '1' or str(self._num_processors) == '0': return self.platform.serial_platform.serial_queue else: return self.platform.queue -- GitLab From 901a5f92d475ddc5f9224b2fd0e4191e87469cd7 Mon Sep 17 00:00:00 2001 From: dbeltran Date: Wed, 18 Jan 2023 12:04:13 +0100 Subject: [PATCH 8/8] Fixed pipeline --- autosubmit/job/job_packager.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/autosubmit/job/job_packager.py b/autosubmit/job/job_packager.py index 4be82311a..f0eeeb1fe 100644 --- a/autosubmit/job/job_packager.py +++ b/autosubmit/job/job_packager.py @@ -668,7 +668,7 @@ class JobPackager(object): job_list = JobPackagerVerticalMixed(dict_jobs, job, [job], job.wallclock, horizontal_packager.wrapper_limits["max"], horizontal_packager.wrapper_limits, self._platform.max_wallclock).build_vertical_package(job) - current_package.append(job_list) + current_package.append(list(set(job_list))) for job in current_package[-1]: total_wallclock = sum_str_hours(total_wallclock, job.wallclock) @@ -808,21 +808,21 @@ class JobPackagerVerticalMixed(JobPackagerVertical): """ sorted_jobs = self.sorted_jobs - # for index in range(self.index, len(sorted_jobs)): - # child = sorted_jobs[index] - # if self._is_wrappable(child): - # self.index = index + 1 - # return child - # continue - # return None - # Not passing tests but better wrappers result to check - for child in job.children: - if child.name != job.name: - if self._is_wrappable(child): - self.index = self.index + 1 - return child + for index in range(self.index, len(sorted_jobs)): + child = sorted_jobs[index] + if self._is_wrappable(child): + self.index = index + 1 + return child continue return None + # Not passing tests but better wrappers result to check + # for child in job.children: + # if child.name != job.name: + # if self._is_wrappable(child): + # self.index = self.index + 1 + # return child + # continue + # return None def _is_wrappable(self, job): """ -- GitLab