From 85e100302a6741837f1beb0fd3b1b7649fa30d4f Mon Sep 17 00:00:00 2001 From: John Siirola Date: Tue, 4 Jun 2024 17:35:31 -0600 Subject: [PATCH] Initial reorganization of Pyomo documentation (replicating 91e9f59 and 6e7cd39 by @blnicho) --- doc/OnlineDocs/Makefile | 20 + doc/OnlineDocs/_static/theme_overrides.css | 74 ++ doc/OnlineDocs/conf.py | 291 +++++ doc/OnlineDocs/contribution_guide.rst | 431 +++++++ doc/OnlineDocs/developer_guide/config.rst | 3 + .../developer_guide/deprecation.rst | 62 + .../developer_guide/expressions/design.rst | 268 ++++ .../developer_guide/expressions/index.rst | 55 + .../developer_guide/expressions/managing.rst | 272 +++++ .../developer_guide/expressions/overview.rst | 300 +++++ .../expressions/performance.rst | 171 +++ doc/OnlineDocs/developer_guide/future.rst | 3 + doc/OnlineDocs/developer_guide/index.rst | 15 + doc/OnlineDocs/developer_guide/solvers.rst | 351 ++++++ doc/OnlineDocs/docutils.conf | 2 + doc/OnlineDocs/getting_started/index.rst | 5 + .../getting_started/installation.rst | 99 ++ .../pyomo_overview/abstract_concrete.rst | 54 + .../getting_started/pyomo_overview/index.rst | 10 + .../pyomo_overview/math_modeling.rst | 102 ++ .../pyomo_overview/overview_components.rst | 42 + .../pyomo_overview/simple_examples.rst | 416 +++++++ doc/OnlineDocs/index.rst | 71 ++ .../reference_guide/bibliography.rst | 68 ++ doc/OnlineDocs/reference_guide/index.rst | 9 + .../library_reference/aml/index.rst | 85 ++ .../library_reference/appsi/appsi.base.rst | 47 + .../library_reference/appsi/appsi.rst | 106 ++ .../appsi/appsi.solvers.cbc.rst | 15 + .../appsi/appsi.solvers.cplex.rst | 21 + .../appsi/appsi.solvers.gurobi.rst | 55 + .../appsi/appsi.solvers.highs.rst | 14 + .../appsi/appsi.solvers.ipopt.rst | 14 + .../appsi/appsi.solvers.maingo.rst | 14 + .../library_reference/appsi/appsi.solvers.rst | 16 + .../library_reference/common/config.rst | 85 ++ .../library_reference/common/dependencies.rst | 7 + .../library_reference/common/deprecation.rst | 6 + .../library_reference/common/enums.rst | 7 + .../library_reference/common/errors.rst | 6 + .../library_reference/common/fileutils.rst | 6 + .../library_reference/common/formatting.rst | 6 + .../library_reference/common/index.rst | 19 + .../library_reference/common/tempfiles.rst | 7 + .../library_reference/common/timing.rst | 7 + .../library_reference/data/index.rst | 11 + .../expressions/building.rst | 10 + .../library_reference/expressions/classes.rst | 105 ++ .../expressions/context_managers.rst | 10 + .../library_reference/expressions/index.rst | 13 + .../expressions/managing.rst | 19 + .../expressions/visitors.rst | 20 + .../library_reference/index.rst | 27 + .../library_reference/kernel/base.rst | 6 + .../library_reference/kernel/block.rst | 26 + .../library_reference/kernel/conic.rst | 42 + .../library_reference/kernel/constraint.rst | 34 + .../kernel/dict_container.rst | 8 + .../kernel/examples/aml_example.py | 193 +++ .../kernel/examples/conic.py | 33 + .../kernel/examples/kernel_containers.py | 18 + .../kernel/examples/kernel_example.py | 174 +++ .../kernel/examples/kernel_solving.py | 22 + .../kernel/examples/kernel_subclassing.py | 93 ++ .../kernel/examples/transformer.py | 66 + .../library_reference/kernel/expression.rst | 26 + .../kernel/heterogeneous_container.rst | 6 + .../kernel/homogeneous_container.rst | 6 + .../library_reference/kernel/index.rst | 210 ++++ .../kernel/list_container.rst | 8 + .../library_reference/kernel/objective.rst | 26 + .../library_reference/kernel/parameter.rst | 30 + .../kernel/piecewise/index.rst | 11 + .../kernel/piecewise/piecewise.rst | 53 + .../kernel/piecewise/piecewise_nd.rst | 25 + .../kernel/piecewise/util.rst | 6 + .../library_reference/kernel/sos.rst | 30 + .../library_reference/kernel/suffix.rst | 6 + .../kernel/syntax_comparison.rst | 133 ++ .../kernel/tuple_container.rst | 8 + .../library_reference/kernel/variable.rst | 26 + .../solvers/cplex_persistent.rst | 7 + .../library_reference/solvers/gams.rst | 43 + .../solvers/gurobi_direct.rst | 18 + .../solvers/gurobi_persistent.rst | 39 + .../library_reference/solvers/index.rst | 11 + .../solvers/xpress_persistent.rst | 7 + doc/OnlineDocs/related_packages.rst | 65 + .../contributed_packages/communities_8pp.png | Bin 0 -> 256159 bytes .../communities_decode_1.png | Bin 0 -> 157034 bytes .../contributed_packages/community.rst | 389 ++++++ .../contributed_packages/doe/CCSI-license.txt | 43 + .../contributed_packages/doe/doe.rst | 291 +++++ .../contributed_packages/doe/flowchart.png | Bin 0 -> 160954 bytes .../contributed_packages/doe/grid-1.png | Bin 0 -> 611702 bytes .../contributed_packages/doe/reactor.png | Bin 0 -> 114480 bytes .../contributed_packages/doe/uml.png | Bin 0 -> 199419 bytes .../contributed_packages/gdpopt.rst | 213 ++++ .../contributed_packages/gdpopt_flowchart.png | Bin 0 -> 71538 bytes .../user_guide/contributed_packages/iis.rst | 135 +++ .../contributed_packages/incidence/api.rst | 14 + .../contributed_packages/incidence/config.rst | 5 + .../incidence/connected.rst | 5 + .../incidence/dulmage_mendelsohn.rst | 5 + .../incidence/incidence.rst | 5 + .../contributed_packages/incidence/index.rst | 19 + .../incidence/interface.rst | 5 + .../incidence/matching.rst | 5 + .../incidence/overview.rst | 50 + .../incidence/scc_solver.rst | 5 + .../incidence/triangularize.rst | 5 + .../incidence/tutorial.bt.rst | 107 ++ .../incidence/tutorial.btsolve.rst | 72 ++ .../incidence/tutorial.dm.rst | 191 +++ .../incidence/tutorial.rst | 14 + .../user_guide/contributed_packages/index.rst | 46 + .../contributed_packages/latex_printer.rst | 127 ++ .../user_guide/contributed_packages/mcpp.rst | 62 + .../contributed_packages/mindtpy.rst | 319 +++++ .../contributed_packages/mpc/api.rst | 10 + .../contributed_packages/mpc/conversion.rst | 5 + .../contributed_packages/mpc/data.rst | 17 + .../contributed_packages/mpc/examples.rst | 6 + .../contributed_packages/mpc/faq.rst | 16 + .../contributed_packages/mpc/index.rst | 32 + .../contributed_packages/mpc/interface.rst | 8 + .../contributed_packages/mpc/modeling.rst | 11 + .../contributed_packages/mpc/overview.rst | 210 ++++ .../contributed_packages/multistart.rst | 34 + .../contributed_packages/parmest/api.rst | 25 + .../contributed_packages/parmest/boxplot.png | Bin 0 -> 19354 bytes .../parmest/covariance.rst | 16 + .../contributed_packages/parmest/datarec.rst | 54 + .../contributed_packages/parmest/driver.rst | 165 +++ .../contributed_packages/parmest/examples.rst | 44 + .../contributed_packages/parmest/graphics.rst | 55 + .../contributed_packages/parmest/index.rst | 35 + .../parmest/installation.rst | 33 + .../contributed_packages/parmest/overview.rst | 72 ++ .../parmest/pairwise_plot_CI.png | Bin 0 -> 84454 bytes .../parmest/pairwise_plot_LR.png | Bin 0 -> 49578 bytes .../contributed_packages/parmest/parallel.rst | 52 + .../parmest/scencreate.rst | 22 + .../contributed_packages/preprocessing.rst | 151 +++ .../contributed_packages/pynumero/api.rst | 14 + .../pynumero/backward_compatibility.rst | 14 + .../contributed_packages/pynumero/index.rst | 51 + .../pynumero/installation.rst | 47 + .../pynumero/pynumero.interfaces.ampl_nlp.rst | 8 + .../pynumero/pynumero.interfaces.asl_nlp.rst | 8 + .../pynumero.interfaces.extended_nlp.rst | 8 + ...ero.interfaces.external_grey_box_model.rst | 8 + .../pynumero/pynumero.interfaces.nlp.rst | 8 + .../pynumero.interfaces.projected_nlp.rst | 8 + ...pynumero.interfaces.pyomo_grey_box_nlp.rst | 8 + .../pynumero.interfaces.pyomo_nlp.rst | 8 + .../pynumero/pynumero.interfaces.rst | 16 + .../pynumero/pynumero.linalg.base.rst | 26 + .../pynumero/pynumero.linalg.ma27.rst | 8 + .../pynumero/pynumero.linalg.ma57.rst | 8 + .../pynumero/pynumero.linalg.mumps.rst | 8 + .../pynumero/pynumero.linalg.rst | 14 + .../pynumero/pynumero.linalg.scipy.rst | 14 + .../pynumero/pynumero.sparse.block_vector.rst | 154 +++ .../pynumero/pynumero.sparse.rst | 9 + .../tutorial.block_vectors_and_matrices.rst | 272 +++++ .../tutorial.linear_solver_interfaces.rst | 76 ++ .../pynumero/tutorial.mpi_blocks.rst | 65 + .../pynumero/tutorial.nlp_interfaces.rst | 115 ++ .../pynumero/tutorial.rst | 11 + .../user_guide/contributed_packages/pyros.rst | 1078 +++++++++++++++++ .../contributed_packages/satsolver.rst | 34 + .../sensitivity_toolbox.rst | 185 +++ .../contributed_packages/trustregion.rst | 189 +++ doc/OnlineDocs/user_guide/errors.rst | 192 +++ .../user_guide/external_tutorials.rst | 20 + doc/OnlineDocs/user_guide/flattener/index.rst | 65 + .../user_guide/flattener/motivation.rst | 26 + .../user_guide/flattener/reference.rst | 14 + doc/OnlineDocs/user_guide/index.rst | 6 + .../modeling_extensions/__init__.py | 10 + .../modeling_extensions/bilevel.rst | 6 + .../user_guide/modeling_extensions/dae.rst | 933 ++++++++++++++ .../modeling_extensions/gdp/concepts.rst | 151 +++ .../modeling_extensions/gdp/index.rst | 79 ++ .../modeling_extensions/gdp/modeling.rst | 419 +++++++ .../modeling_extensions/gdp/solving.rst | 201 +++ .../user_guide/modeling_extensions/index.rst | 12 + .../user_guide/modeling_extensions/mpec.rst | 6 + .../modeling_extensions/network.rst | 331 +++++ .../reduce_points_demo.png | Bin 0 -> 29803 bytes .../stochastic_programming.rst | 17 + .../user_guide/persistent_solvers.rst | 188 +++ .../pyomo_modeling_components/Constraints.rst | 39 + .../pyomo_modeling_components/Expressions.rst | 218 ++++ .../pyomo_modeling_components/Objectives.rst | 39 + .../pyomo_modeling_components/Parameters.rst | 102 ++ .../pyomo_modeling_components/Sets.rst | 519 ++++++++ .../pyomo_modeling_components/Suffixes.rst | 509 ++++++++ .../pyomo_modeling_components/Variables.rst | 46 + .../pyomo_modeling_components/index.rst | 13 + doc/OnlineDocs/user_guide/scaling.rst | 41 + doc/OnlineDocs/user_guide/sos_constraints.rst | 288 +++++ doc/OnlineDocs/user_guide/units_container.rst | 13 + doc/OnlineDocs/user_guide/working_models.rst | 704 +++++++++++ 205 files changed, 16351 insertions(+) create mode 100644 doc/OnlineDocs/Makefile create mode 100644 doc/OnlineDocs/_static/theme_overrides.css create mode 100644 doc/OnlineDocs/conf.py create mode 100644 doc/OnlineDocs/contribution_guide.rst create mode 100644 doc/OnlineDocs/developer_guide/config.rst create mode 100644 doc/OnlineDocs/developer_guide/deprecation.rst create mode 100644 doc/OnlineDocs/developer_guide/expressions/design.rst create mode 100644 doc/OnlineDocs/developer_guide/expressions/index.rst create mode 100644 doc/OnlineDocs/developer_guide/expressions/managing.rst create mode 100644 doc/OnlineDocs/developer_guide/expressions/overview.rst create mode 100644 doc/OnlineDocs/developer_guide/expressions/performance.rst create mode 100644 doc/OnlineDocs/developer_guide/future.rst create mode 100644 doc/OnlineDocs/developer_guide/index.rst create mode 100644 doc/OnlineDocs/developer_guide/solvers.rst create mode 100644 doc/OnlineDocs/docutils.conf create mode 100644 doc/OnlineDocs/getting_started/index.rst create mode 100644 doc/OnlineDocs/getting_started/installation.rst create mode 100644 doc/OnlineDocs/getting_started/pyomo_overview/abstract_concrete.rst create mode 100644 doc/OnlineDocs/getting_started/pyomo_overview/index.rst create mode 100644 doc/OnlineDocs/getting_started/pyomo_overview/math_modeling.rst create mode 100644 doc/OnlineDocs/getting_started/pyomo_overview/overview_components.rst create mode 100644 doc/OnlineDocs/getting_started/pyomo_overview/simple_examples.rst create mode 100644 doc/OnlineDocs/index.rst create mode 100644 doc/OnlineDocs/reference_guide/bibliography.rst create mode 100644 doc/OnlineDocs/reference_guide/index.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/aml/index.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.base.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.cbc.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.cplex.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.gurobi.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.highs.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.ipopt.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.maingo.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/common/config.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/common/dependencies.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/common/deprecation.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/common/enums.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/common/errors.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/common/fileutils.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/common/formatting.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/common/index.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/common/tempfiles.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/common/timing.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/data/index.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/expressions/building.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/expressions/classes.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/expressions/context_managers.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/expressions/index.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/expressions/managing.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/expressions/visitors.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/index.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/base.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/block.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/conic.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/constraint.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/dict_container.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/examples/aml_example.py create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/examples/conic.py create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/examples/kernel_containers.py create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/examples/kernel_example.py create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/examples/kernel_solving.py create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/examples/kernel_subclassing.py create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/examples/transformer.py create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/expression.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/heterogeneous_container.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/homogeneous_container.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/index.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/list_container.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/objective.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/parameter.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/piecewise/index.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/piecewise/piecewise.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/piecewise/piecewise_nd.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/piecewise/util.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/sos.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/suffix.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/syntax_comparison.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/tuple_container.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/kernel/variable.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/solvers/cplex_persistent.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/solvers/gams.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/solvers/gurobi_direct.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/solvers/gurobi_persistent.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/solvers/index.rst create mode 100644 doc/OnlineDocs/reference_guide/library_reference/solvers/xpress_persistent.rst create mode 100644 doc/OnlineDocs/related_packages.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/communities_8pp.png create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/communities_decode_1.png create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/community.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/doe/CCSI-license.txt create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/doe/doe.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/doe/flowchart.png create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/doe/grid-1.png create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/doe/reactor.png create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/doe/uml.png create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/gdpopt.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/gdpopt_flowchart.png create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/iis.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/incidence/api.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/incidence/config.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/incidence/connected.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/incidence/dulmage_mendelsohn.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/incidence/incidence.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/incidence/index.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/incidence/interface.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/incidence/matching.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/incidence/overview.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/incidence/scc_solver.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/incidence/triangularize.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/incidence/tutorial.bt.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/incidence/tutorial.btsolve.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/incidence/tutorial.dm.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/incidence/tutorial.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/index.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/latex_printer.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/mcpp.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/mindtpy.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/mpc/api.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/mpc/conversion.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/mpc/data.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/mpc/examples.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/mpc/faq.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/mpc/index.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/mpc/interface.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/mpc/modeling.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/mpc/overview.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/multistart.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/parmest/api.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/parmest/boxplot.png create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/parmest/covariance.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/parmest/datarec.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/parmest/driver.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/parmest/examples.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/parmest/graphics.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/parmest/index.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/parmest/installation.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/parmest/overview.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/parmest/pairwise_plot_CI.png create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/parmest/pairwise_plot_LR.png create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/parmest/parallel.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/parmest/scencreate.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/preprocessing.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/api.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/backward_compatibility.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/index.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/installation.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.ampl_nlp.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.asl_nlp.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.extended_nlp.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.external_grey_box_model.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.nlp.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.projected_nlp.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.pyomo_grey_box_nlp.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.pyomo_nlp.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.linalg.base.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.linalg.ma27.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.linalg.ma57.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.linalg.mumps.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.linalg.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.linalg.scipy.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.sparse.block_vector.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.sparse.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/tutorial.block_vectors_and_matrices.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/tutorial.linear_solver_interfaces.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/tutorial.mpi_blocks.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/tutorial.nlp_interfaces.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pynumero/tutorial.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/pyros.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/satsolver.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/sensitivity_toolbox.rst create mode 100644 doc/OnlineDocs/user_guide/contributed_packages/trustregion.rst create mode 100644 doc/OnlineDocs/user_guide/errors.rst create mode 100644 doc/OnlineDocs/user_guide/external_tutorials.rst create mode 100644 doc/OnlineDocs/user_guide/flattener/index.rst create mode 100644 doc/OnlineDocs/user_guide/flattener/motivation.rst create mode 100644 doc/OnlineDocs/user_guide/flattener/reference.rst create mode 100644 doc/OnlineDocs/user_guide/index.rst create mode 100644 doc/OnlineDocs/user_guide/modeling_extensions/__init__.py create mode 100644 doc/OnlineDocs/user_guide/modeling_extensions/bilevel.rst create mode 100644 doc/OnlineDocs/user_guide/modeling_extensions/dae.rst create mode 100644 doc/OnlineDocs/user_guide/modeling_extensions/gdp/concepts.rst create mode 100644 doc/OnlineDocs/user_guide/modeling_extensions/gdp/index.rst create mode 100644 doc/OnlineDocs/user_guide/modeling_extensions/gdp/modeling.rst create mode 100644 doc/OnlineDocs/user_guide/modeling_extensions/gdp/solving.rst create mode 100644 doc/OnlineDocs/user_guide/modeling_extensions/index.rst create mode 100644 doc/OnlineDocs/user_guide/modeling_extensions/mpec.rst create mode 100644 doc/OnlineDocs/user_guide/modeling_extensions/network.rst create mode 100644 doc/OnlineDocs/user_guide/modeling_extensions/reduce_points_demo.png create mode 100644 doc/OnlineDocs/user_guide/modeling_extensions/stochastic_programming.rst create mode 100644 doc/OnlineDocs/user_guide/persistent_solvers.rst create mode 100644 doc/OnlineDocs/user_guide/pyomo_modeling_components/Constraints.rst create mode 100644 doc/OnlineDocs/user_guide/pyomo_modeling_components/Expressions.rst create mode 100644 doc/OnlineDocs/user_guide/pyomo_modeling_components/Objectives.rst create mode 100644 doc/OnlineDocs/user_guide/pyomo_modeling_components/Parameters.rst create mode 100644 doc/OnlineDocs/user_guide/pyomo_modeling_components/Sets.rst create mode 100644 doc/OnlineDocs/user_guide/pyomo_modeling_components/Suffixes.rst create mode 100644 doc/OnlineDocs/user_guide/pyomo_modeling_components/Variables.rst create mode 100644 doc/OnlineDocs/user_guide/pyomo_modeling_components/index.rst create mode 100644 doc/OnlineDocs/user_guide/scaling.rst create mode 100644 doc/OnlineDocs/user_guide/sos_constraints.rst create mode 100644 doc/OnlineDocs/user_guide/units_container.rst create mode 100644 doc/OnlineDocs/user_guide/working_models.rst diff --git a/doc/OnlineDocs/Makefile b/doc/OnlineDocs/Makefile new file mode 100644 index 00000000000..00bc123ad45 --- /dev/null +++ b/doc/OnlineDocs/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +SPHINXPROJ = Pyomo +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/doc/OnlineDocs/_static/theme_overrides.css b/doc/OnlineDocs/_static/theme_overrides.css new file mode 100644 index 00000000000..43d48693e03 --- /dev/null +++ b/doc/OnlineDocs/_static/theme_overrides.css @@ -0,0 +1,74 @@ +/* links and fixed-with literals should NOT be bold */ +.rst-content code { + font-weight: normal !important; +} + +/* internal reference links should be purple (not grey) */ +code.xref.py { + color: #8C1AFF; +} + +/* method names should be bold */ +code.descname { + font-weight: bold !important; + color: black; +} +/* method argument lists should *not* be bold, argument names in black */ +dl.py.method dt { + font-weight: normal; +} +dl.py.method dt em span.n { + color: black; +} + +/* Fix to RTD theme to allow table cell content to wrap */ +@media screen and (min-width: 767px) { + .wy-table-responsive table td { + white-space: normal !important; + } + .wy-table-responsive { + overflow: visible !important; + } +} + +/* Remove space after tables in definition lists (e.g., for function + "Parameters" lists*/ +.rst-content dl div.wy-table-responsive { + margin-bottom: 12px !important; +} + +/* Define a new "tight-table" class that we can use to format tighter + simple banded tables */ +.rst-content table.tight-table { + border-style: solid; + border-collapse: separate !important; +} +.rst-content table.tight-table td { + border-style: hidden !important; + padding-top: 4px !important; + padding-bottom: 4px !important; + padding-left: 8px !important; + padding-right: 8px !important; +} + + +/* OLD theme overrides + +code.docutils.literal{ + color:#8C1AFF; + border: 0px; + background-color:#fcfcfc; + padding:0px; + font-size: 100%; +} + +.wy-table-responsive table td, .wy-table-responsive table th { + white-space: normal; +} + +.wy-table-responsive { + margin-bottom: 24px; + max-width: 100%; + overflow: visible; +} +*/ diff --git a/doc/OnlineDocs/conf.py b/doc/OnlineDocs/conf.py new file mode 100644 index 00000000000..630dbfcd030 --- /dev/null +++ b/doc/OnlineDocs/conf.py @@ -0,0 +1,291 @@ +# ___________________________________________________________________________ +# +# Pyomo: Python Optimization Modeling Objects +# Copyright (c) 2008-2024 +# National Technology and Engineering Solutions of Sandia, LLC +# Under the terms of Contract DE-NA0003525 with National Technology and +# Engineering Solutions of Sandia, LLC, the U.S. Government retains certain +# rights in this software. +# This software is distributed under the 3-clause BSD License. +# ___________________________________________________________________________ + +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# pyomo documentation build configuration file, created by +# sphinx-quickstart on Mon Dec 12 16:08:36 2016. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import os +import sys + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# assumes pyutilib source is next to the pyomo source directory +sys.path.insert(0, os.path.abspath('../../../pyutilib')) +# top-level pyomo source directory +sys.path.insert(0, os.path.abspath('../..')) + +# -- Options for intersphinx --------------------------------------------- + +intersphinx_mapping = { + 'python': ('https://docs.python.org/3', None), + 'matplotlib': ('https://matplotlib.org/stable/', None), + 'numpy': ('https://numpy.org/doc/stable/', None), + 'pandas': ('https://pandas.pydata.org/docs/', None), + 'scikit-learn': ('https://scikit-learn.org/stable/', None), + 'scipy': ('https://docs.scipy.org/doc/scipy/', None), + 'Sphinx': ('https://www.sphinx-doc.org/en/master/', None), +} + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +# +needs_sphinx = '1.8' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.intersphinx', + 'sphinx.ext.autodoc', + 'sphinx.ext.coverage', + 'sphinx.ext.mathjax', + 'sphinx.ext.viewcode', + 'sphinx.ext.napoleon', + 'sphinx.ext.ifconfig', + 'sphinx.ext.inheritance_diagram', + 'sphinx.ext.autosummary', + 'sphinx.ext.doctest', + 'sphinx.ext.todo', + 'sphinx_copybutton', + 'enum_tools.autoenum', + 'sphinx.ext.autosectionlabel', + #'sphinx.ext.githubpages', +] + +viewcode_follow_imported_members = True +# napoleon_include_private_with_doc = True + +copybutton_prompt_text = r">>> |\.\.\. |\$ |In \[\d*\]: | {2,5}\.\.\.: | {5,8}: " +copybutton_prompt_is_regexp = True + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'Pyomo' +copyright = u'2008-2023, Sandia National Laboratories' +author = u'Pyomo Developers' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +import pyomo.version + +version = pyomo.version.__version__ +# The full version, including alpha/beta/rc tags. +release = pyomo.version.__version__ + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = "en" + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This patterns also effect to html_static_path and html_extra_path +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = True + +# If true, doctest flags (comments looking like # doctest: FLAG, ...) at +# the ends of lines and markers are removed for all code +# blocks showing interactive Python sessions (i.e. doctests) +trim_doctest_flags = True + +# If true, figures, tables and code-blocks are automatically numbered if +# they have a caption. +numfig = True + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +# html_theme = 'alabaster' +on_rtd = os.environ.get('READTHEDOCS', None) == 'True' + +html_theme = 'sphinx_rtd_theme' + +if not on_rtd: # only import and set the theme if we're building docs locally + import sphinx_rtd_theme + + html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +# html_theme_options = {} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] +html_css_files = ['theme_overrides.css'] + +html_favicon = "../logos/pyomo/favicon.ico" + + +# -- Options for HTMLHelp output ------------------------------------------ + +# Output file base name for HTML help builder. +htmlhelp_basename = 'pyomo' + + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [(master_doc, 'pyomo.tex', 'Pyomo Documentation', 'Pyomo', 'manual')] + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [(master_doc, 'pyomo', 'Pyomo Documentation', [author], 1)] + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + ( + master_doc, + 'pyomo', + 'Pyomo Documentation', + author, + 'Pyomo', + 'One line description of project.', + 'Miscellaneous', + ) +] + +# autodoc_member_order = 'bysource' +# autodoc_member_order = 'groupwise' + +# -- Check which conditional dependencies are available ------------------ +# Used for skipping certain doctests +from sphinx.ext.doctest import doctest + +doctest_default_flags = ( + doctest.ELLIPSIS + + doctest.NORMALIZE_WHITESPACE + + doctest.IGNORE_EXCEPTION_DETAIL + + doctest.DONT_ACCEPT_TRUE_FOR_1 +) + + +class IgnoreResultOutputChecker(doctest.OutputChecker): + IGNORE_RESULT = doctest.register_optionflag('IGNORE_RESULT') + + def check_output(self, want, got, optionflags): + if optionflags & self.IGNORE_RESULT: + return True + return super().check_output(want, got, optionflags) + + +doctest.OutputChecker = IgnoreResultOutputChecker + +doctest_global_setup = ''' +import os, platform, sys +on_github_actions = bool(os.environ.get('GITHUB_ACTIONS', '')) +system_info = ( + sys.platform, + platform.machine(), + platform.python_implementation() +) + +from pyomo.common.dependencies import ( + attempt_import, numpy_available, scipy_available, pandas_available, + yaml_available, networkx_available, matplotlib_available, + pympler_available, dill_available, +) +pint_available = attempt_import('pint', defer_import=False)[1] +from pyomo.contrib.parmest.parmest import parmest_available + +import pyomo.environ as _pe # (trigger all plugin registrations) +import pyomo.opt as _opt + +# Not using SolverFactory to check solver availability because +# as of June 2020 there is no way to suppress warnings when +# solvers are not available +ipopt_available = bool(_opt.check_available_solvers('ipopt')) +sipopt_available = bool(_opt.check_available_solvers('ipopt_sens')) +k_aug_available = bool(_opt.check_available_solvers('k_aug')) +dot_sens_available = bool(_opt.check_available_solvers('dot_sens')) +baron_available = bool(_opt.check_available_solvers('baron')) +glpk_available = bool(_opt.check_available_solvers('glpk')) +gurobipy_available = bool(_opt.check_available_solvers('gurobi_direct')) + +baron = _opt.SolverFactory('baron') + +if numpy_available and scipy_available: + import pyomo.contrib.pynumero.asl as _asl + asl_available = _asl.AmplInterface.available() + import pyomo.contrib.pynumero.linalg.ma27 as _ma27 + ma27_available = _ma27.MA27Interface.available() + from pyomo.contrib.pynumero.linalg.mumps_interface import mumps_available +else: + asl_available = False + ma27_available = False + mumps_available = False +''' diff --git a/doc/OnlineDocs/contribution_guide.rst b/doc/OnlineDocs/contribution_guide.rst new file mode 100644 index 00000000000..9ad5bdfee0e --- /dev/null +++ b/doc/OnlineDocs/contribution_guide.rst @@ -0,0 +1,431 @@ +Contributing to Pyomo +===================== + +We welcome all contributions including bug fixes, feature enhancements, +and documentation improvements. Pyomo manages source code contributions +via GitHub pull requests (PRs). + +Contribution Requirements +------------------------- + +A PR should be 1 set of related changes. PRs for large-scale +non-functional changes (i.e. PEP8, comments) should be +separated from functional changes. This simplifies the review process +and ensures that functional changes aren't obscured by large amounts of +non-functional changes. + +We do not squash and merge PRs so all commits in your branch will appear +in the main history. In addition to well-documented PR descriptions, +we encourage modular/targeted commits with descriptive commit messages. + +Coding Standards +++++++++++++++++ + + * Required: `black `_ + * No use of ``__author__`` + * Inside ``pyomo.contrib``: Contact information for the contribution + maintainer (such as a Github ID) should be included in the Sphinx + documentation + +The first step of Pyomo's GitHub Actions workflow is to run +`black `_ and a +`spell-checker `_ to ensure style +guide compliance and minimize typos. Before opening a pull request, please +run: + +:: + + # Auto-apply correct formatting + pip install black + black -S -C --exclude examples/pyomobook/python-ch/BadIndent.py + # Find typos in files + conda install typos + typos --config .github/workflows/typos.toml + +If the spell-checker returns a failure for a word that is spelled correctly, +please add the word to the ``.github/workflows/typos.toml`` file. + +Online Pyomo documentation is generated using `Sphinx `_ +with the ``napoleon`` extension enabled. For API documentation we use of one of these +`supported styles for docstrings `_, +but we prefer the NumPy standard. Whichever you choose, we require compliant docstrings for: + + * Modules + * Public and Private Classes + * Public and Private Functions + +We also encourage you to include examples, especially for new features +and contributions to ``pyomo.contrib``. + +Testing ++++++++ + +Pyomo uses `unittest `_, +`pytest `_, +`GitHub Actions `_, +and Jenkins +for testing and continuous integration. Submitted code should include +tests to establish the validity of its results and/or effects. Unit +tests are preferred but we also accept integration tests. We require +at least 70% coverage of the lines modified in the PR and prefer coverage +closer to 90%. We also require that all tests pass before a PR will be +merged. + +.. note:: + If you are having issues getting tests to pass on your Pull Request, + please tag any of the core developers to ask for help. + +The Pyomo main branch provides a Github Actions workflow (configured +in the ``.github/`` directory) that will test any changes pushed to +a branch with a subset of the complete test harness that includes +multiple virtual machines (``ubuntu``, ``mac-os``, ``windows``) +and multiple Python versions. For existing forks, fetch and merge +your fork (and branches) with Pyomo's main. For new forks, you will +need to enable GitHub Actions in the 'Actions' tab on your fork. +This will enable the tests to run automatically with each push to your fork. + +At any point in the development cycle, a "work in progress" pull request +may be opened by including '[WIP]' at the beginning of the PR +title. Any pull requests marked '[WIP]' or draft will not be +reviewed or merged by the core development team. However, any +'[WIP]' pull request left open for an extended period of time without +active development may be marked 'stale' and closed. + +.. note:: + Draft and WIP Pull Requests will **NOT** trigger tests. This is an effort to + reduce our CI backlog. Please make use of the provided + branch test suite for evaluating / testing draft functionality. + +Python Version Support +++++++++++++++++++++++ + +By policy, Pyomo supports and tests the currently supported Python versions, +as can be seen on `Status of Python Versions `_. +It is expected that tests will pass for all of the supported and tested +versions of Python, unless otherwise stated. + +At the time of the first Pyomo release after the end-of-life of a minor Python +version, we will remove testing and support for that Python version. + +This will also result in a bump in the minor Pyomo version. + +For example, assume Python 3.A is declared end-of-life while Pyomo is on +version 6.3.Y. After the release of Pyomo 6.3.(Y+1), Python 3.A will be removed, +and the next Pyomo release will be 6.4.0. + +Working on Forks and Branches +----------------------------- + +All Pyomo development should be done on forks of the Pyomo +repository. In order to fork the Pyomo repository, visit +https://github.com/Pyomo/pyomo, click the "Fork" button in the +upper right corner, and follow the instructions. + +This section discusses two recommended workflows for contributing +pull-requests to Pyomo. The first workflow, labeled +:ref:`Working with my fork and the GitHub Online UI `, +does not require the use of 'remotes', and +suggests updating your fork using the GitHub online UI. The second +workflow, labeled +:ref:`Working with remotes and the git command-line `, outlines +a process that defines separate remotes for your fork and the main +Pyomo repository. + +More information on git can be found at +https://git-scm.com/book/en/v2. Section 2.5 has information on working +with remotes. + + +.. _forksgithubui: + +Working with my fork and the GitHub Online UI ++++++++++++++++++++++++++++++++++++++++++++++ + +After creating your fork (per the instructions above), you can +then clone your fork of the repository with + +:: + + git clone https://github.com//pyomo.git + +For new development, we strongly recommend working on feature +branches. When you have a new feature to implement, create +the branch with the following. + +:: + + cd pyomo/ # to make sure you are in the folder managed by git + git branch + git checkout + +Development can now be performed. When you are ready, commit +any changes you make to your local repository. This can be +done multiple times with informative commit messages for +different tasks in the feature development. + +:: + + git add + git status # to check that you have added the correct files + git commit -m 'informative commit message to describe changes' + +In order to push the changes in your local branch to a branch on your fork, use + +:: + + git push origin + + +When you have completed all the changes and are ready for a pull request, make +sure all the changes have been pushed to the branch on your fork. + + * visit https://github.com//pyomo. + * Just above the list of files and directories in the repository, + you should see a button that says "Branch: main". Click on + this button, and choose the correct branch. + * Click the "New pull request" button just to the right of the + "Branch: " button. + * Fill out the pull request template and click the green "Create + pull request" button. + +At times during your development, you may want to merge changes from +the Pyomo main development branch into the feature branch on your +fork and in your local clone of the repository. + +Using GitHub UI to merge Pyomo main into a branch on your fork +**************************************************************** + +To update your fork, you will actually be merging a pull-request from +the head Pyomo repository into your fork. + + * Visit https://github.com/Pyomo/pyomo. + * Click on the "New pull request" button just above the list of + files and directories. + * You will see the title "Compare changes" with some small text + below it which says "Compare changes across branches, commits, + tags, and more below. If you need to, you can also compare + across forks." Click the last part of this: "compare across + forks". + * You should now see four buttons just below this: "base + repository: Pyomo/pyomo", "base: main", "head repository: + Pyomo/pyomo", and "compare: main". Click the leftmost button + and choose "/Pyomo". + * Then click the button which is second to the left, and choose + the branch which you want to merge Pyomo main into. The four + buttons should now read: "base repository: /pyomo", + "base: ", "head repository: Pyomo/pyomo", and + "compare: main". This is setting you up to merge a pull-request + from Pyomo's main branch into your fork's branch. + * You should also now see a pull request template. If you fill out + the pull request template and click "Create pull request", this + will create a pull request which will update your fork and + branch with any changes that have been made to the main branch + of Pyomo. + * You can then merge the pull request by clicking the green "Merge + pull request" button from your fork on GitHub. + +.. _forksremotes: + +Working with remotes and the git command-line ++++++++++++++++++++++++++++++++++++++++++++++ + +After you have created your fork, you can clone the fork and setup +git 'remotes' that allow you to merge changes from (and to) different +remote repositories. Below, we have included a set of recommendations, +but, of course, there are other valid GitHub workflows that you can +adopt. + +The following commands show how to clone your fork and setup +two remotes, one for your fork, and one for the head Pyomo repository. + +:: + + git clone https://github.com//pyomo.git + git remote rename origin my-fork + git remote add head-pyomo https://github.com/pyomo/pyomo.git + +Note, you can see a list of your remotes with + +:: + + git remote -v + +The commands for creating a local branch and performing local commits +are the same as those listed in the previous section above. Below are +some common tasks based on this multi-remote setup. + +If you have changes that have been committed to a local feature branch +(), you can push these changes to the branch on your fork +with, + +:: + + git push my-fork + +In order to update a local branch with changes from a branch of the +Pyomo repository, + +:: + + git checkout + git fetch head-pyomo + git merge head-pyomo/ --ff-only + +The "--ff-only" only allows a merge if the merge can be done by a +fast-forward. If you do not require a fast-forward, you can drop this +option. The most common concrete example of this would be + +:: + + git checkout main + git fetch head-pyomo + git merge head-pyomo/main --ff-only + +The above commands pull changes from the main branch of the head +Pyomo repository into the main branch of your local clone. To push +these changes to the main branch on your fork, + +:: + + git push my-fork main + + +Setting up your development environment ++++++++++++++++++++++++++++++++++++++++ + +After cloning your fork, you will want to install Pyomo from source. + +Step 1 (recommended): Create a new ``conda`` environment. + +:: + + conda create --name pyomodev + +You may change the environment name from ``pyomodev`` as you see fit. +Then activate the environment: + +:: + + conda activate pyomodev + +Step 2 (optional): Install PyUtilib + +The hard dependency on PyUtilib was removed in Pyomo 6.0.0. There is still a +soft dependency for any code related to ``pyomo.dataportal.plugins.sheet``. + +If your contribution requires PyUtilib, you will likely need the main branch of +PyUtilib to contribute. Clone a copy of the repository in a new directory: + +:: + + git clone https://github.com/PyUtilib/pyutilib + +Then in the directory containing the clone of PyUtilib run: + +:: + + python setup.py develop + +Step 3: Install Pyomo + +Finally, move to the directory containing the clone of your Pyomo fork and run: + +:: + + python setup.py develop + +These commands register the cloned code with the active python environment +(``pyomodev``). This way, your changes to the source code for ``pyomo`` are +automatically used by the active environment. You can create another conda +environment to switch to alternate versions of pyomo (e.g., stable). + +Review Process +-------------- + +After a PR is opened it will be reviewed by at least two members of the +core development team. The core development team consists of anyone with +write-access to the Pyomo repository. Pull requests opened by a core +developer only require one review. The reviewers will decide if they +think a PR should be merged or if more changes are necessary. + +Reviewers look for: + + * Outside of ``pyomo.contrib``: Code rigor and standards, edge cases, + side effects, etc. + * Inside of ``pyomo.contrib``: No “glaringly obvious” problems with + the code + * Documentation and tests + +The core development team tries to review pull requests in a timely +manner but we make no guarantees on review timeframes. In addition, PRs +might not be reviewed in the order they are opened in. + +Where to put contributed code +----------------------------- + +In order to contribute to Pyomo, you must first make a fork of the Pyomo +git repository. Next, you should create a branch on your fork dedicated +to the development of the new feature or bug fix you're interested +in. Once you have this branch checked out, you can start coding. Bug +fixes and minor enhancements to existing Pyomo functionality should be +made in the appropriate files in the Pyomo code base. New examples, +features, and packages built on Pyomo should be placed in +``pyomo.contrib``. Follow the link below to find out if +``pyomo.contrib`` is right for your code. + +``pyomo.contrib`` +----------------- + +Pyomo uses the ``pyomo.contrib`` package to facilitate the inclusion +of third-party contributions that enhance Pyomo's core functionality. +The are two ways that ``pyomo.contrib`` can be used to integrate +third-party packages: + +* ``pyomo.contrib`` can provide wrappers for separate Python packages, thereby + allowing these packages to be imported as subpackages of pyomo. + +* ``pyomo.contrib`` can include contributed packages that are developed and + maintained outside of the Pyomo developer team. + +Including contrib packages in the Pyomo source tree provides a +convenient mechanism for defining new functionality that can be +optionally deployed by users. We expect this mechanism to include +Pyomo extensions and experimental modeling capabilities. However, +contrib packages are treated as optional packages, which are not +maintained by the Pyomo developer team. Thus, it is the responsibility +of the code contributor to keep these packages up-to-date. + +Contrib package contributions will be considered as pull-requests, +which will be reviewed by the Pyomo developer team. Specifically, +this review will consider the suitability of the proposed capability, +whether tests are available to check the execution of the code, and +whether documentation is available to describe the capability. +Contrib packages will be tested along with Pyomo. If test failures +arise, then these packages will be disabled and an issue will be +created to resolve these test failures. + +Contrib Packages within Pyomo ++++++++++++++++++++++++++++++ + +Third-party contributions can be included directly within the +``pyomo.contrib`` package. The ``pyomo/contrib/example`` package +provides an example of how this can be done, including a directory +for plugins and package tests. For example, this package can be +imported as a subpackage of ``pyomo.contrib``:: + + from pyomo.environ import * + from pyomo.contrib.example import a + + # Print the value of 'a' defined by this package + print(a) + +Although ``pyomo.contrib.example`` is included in the Pyomo source +tree, it is treated as an optional package. Pyomo will attempt to +import this package, but if an import failure occurs, Pyomo will +silently ignore it. Otherwise, this pyomo package will be treated +like any other. Specifically: + +* Plugin classes defined in this package are loaded when ``pyomo.environ`` is loaded. + +* Tests in this package are run with other Pyomo tests. + diff --git a/doc/OnlineDocs/developer_guide/config.rst b/doc/OnlineDocs/developer_guide/config.rst new file mode 100644 index 00000000000..23d0696ee98 --- /dev/null +++ b/doc/OnlineDocs/developer_guide/config.rst @@ -0,0 +1,3 @@ + +.. automodule:: pyomo.common.config + :noindex: diff --git a/doc/OnlineDocs/developer_guide/deprecation.rst b/doc/OnlineDocs/developer_guide/deprecation.rst new file mode 100644 index 00000000000..7fc5ec2b0ff --- /dev/null +++ b/doc/OnlineDocs/developer_guide/deprecation.rst @@ -0,0 +1,62 @@ +Deprecation and Removal of Functionality +======================================== + +During the course of development, there may be cases where it becomes +necessary to deprecate or remove functionality from the standard Pyomo +offering. + +Deprecation +----------- + +We offer a set of tools to help with deprecation in +``pyomo.common.deprecation``. + +By policy, when deprecating or moving an existing capability, one of the +following utilities should be leveraged. Each has a required +``version`` argument that should be set to current development version (e.g., +``"6.6.2.dev0"``). This version will be updated to the next actual +release as part of the Pyomo release process. The current development version +can be found by running ``pyomo --version`` on your local fork/branch. + +.. currentmodule:: pyomo.common.deprecation + +.. autosummary:: + + deprecated + deprecation_warning + relocated_module + relocated_module_attribute + RenamedClass + +.. autodecorator:: pyomo.common.deprecation.deprecated + :noindex: + +.. autofunction:: pyomo.common.deprecation.deprecation_warning + :noindex: + +.. autofunction:: pyomo.common.deprecation.relocated_module + :noindex: + +.. autofunction:: pyomo.common.deprecation.relocated_module_attribute + :noindex: + +.. autoclass:: pyomo.common.deprecation.RenamedClass + :noindex: + + +Removal +------- + +By policy, functionality should be deprecated with reasonable +warning, pending extenuating circumstances. The functionality should +be deprecated, following the information above. + +If the functionality is documented in the most recent +edition of [`Pyomo - Optimization Modeling in Python`_], it may not be removed +until the next major version release. + +.. _Pyomo - Optimization Modeling in Python: https://doi.org/10.1007/978-3-030-68928-5 + +For other functionality, it is preferred that ample time is given +before removing the functionality. At minimum, significant functionality +removal will result in a minor version bump. diff --git a/doc/OnlineDocs/developer_guide/expressions/design.rst b/doc/OnlineDocs/developer_guide/expressions/design.rst new file mode 100644 index 00000000000..ddecb39ad0c --- /dev/null +++ b/doc/OnlineDocs/developer_guide/expressions/design.rst @@ -0,0 +1,268 @@ +.. |p| raw:: html + +

+ +Design Details +============== + +.. warning:: + Pyomo expression trees are not composed of Python + objects from a single class hierarchy. Consequently, Pyomo + relies on duck typing to ensure that valid expression trees are + created. + +Most Pyomo expression trees have the following form + +1. Interior nodes are objects that inherit from the :class:`ExpressionBase ` class. These objects typically have one or more child nodes. Linear expression nodes do not have child nodes, but they are treated as interior nodes in the expression tree because they references other leaf nodes. + +2. Leaf nodes are numeric values, parameter components and variable components, which represent the *inputs* to the expression. + +Expression Classes +------------------ + +Expression classes typically represent unary and binary operations. The following table +describes the standard operators in Python and their associated Pyomo expression class: + +========== ============= ============================================================================= +Operation Python Syntax Pyomo Class +========== ============= ============================================================================= +sum ``x + y`` :class:`SumExpression ` +product ``x * y`` :class:`ProductExpression ` +negation ``- x`` :class:`NegationExpression ` +division ``x / y`` :class:`DivisionExpression ` +power ``x ** y`` :class:`PowExpression ` +inequality ``x <= y`` :class:`InequalityExpression ` +equality ``x == y`` :class:`EqualityExpression ` +========== ============= ============================================================================= + +Additionally, there are a variety of other Pyomo expression classes that capture more general +logical relationships, which are summarized in the following table: + +==================== ==================================== ======================================================================================== +Operation Example Pyomo Class +==================== ==================================== ======================================================================================== +external function ``myfunc(x,y,z)`` :class:`ExternalFunctionExpression ` +logical if-then-else ``Expr_if(IF=x, THEN=y, ELSE=z)`` :class:`Expr_ifExpression ` +intrinsic function ``sin(x)`` :class:`UnaryFunctionExpression ` +absolute function ``abs(x)`` :class:`AbsExpression ` +==================== ==================================== ======================================================================================== + +Expression objects are immutable. Specifically, the list of +arguments to an expression object (a.k.a. the list of child nodes +in the tree) cannot be changed after an expression class is +constructed. To enforce this property, expression objects have a +standard API for accessing expression arguments: + +* :attr:`args` - a class property that returns a generator that yields the expression arguments +* :attr:`arg(i)` - a function that returns the ``i``-th argument +* :attr:`nargs()` - a function that returns the number of expression arguments + +.. warning:: + + Developers should never use the :attr:`_args_` property directly! + The semantics for the use of this data has changed since earlier + versions of Pyomo. For example, in some expression classes the + the value :func:`nargs()` may not equal :const:`len(_args_)`! + +Expression trees can be categorized in four different ways: + +* constant expressions - expressions that do not contain numeric constants and immutable parameters. +* mutable expressions - expressions that contain mutable parameters but no variables. +* potentially variable expressions - expressions that contain variables, which may be fixed. +* fixed expressions - expressions that contain variables, all of which are fixed. + +These three categories are illustrated with the following example: + +.. literalinclude:: ../../src/expr/design_categories.spy + +The following table describes four different simple expressions +that consist of a single model component, and it shows how they +are categorized: + +======================== ===== ===== ===== ===== +Category m.p m.q m.x m.y +======================== ===== ===== ===== ===== +constant True False False False +not potentially variable True True False False +potentially_variable False False True True +fixed True True False True +======================== ===== ===== ===== ===== + +Expressions classes contain methods to test whether an expression +tree is in each of these categories. Additionally, Pyomo includes +custom expression classes for expression trees that are *not potentially +variable*. These custom classes will not normally be used by +developers, but they provide an optimization of the checks for +potentially variability. + +Special Expression Classes +-------------------------- + +The following classes are *exceptions* to the design principles describe above. + +Named Expressions +~~~~~~~~~~~~~~~~~ + +Named expressions allow for changes to an expression after it has +been constructed. For example, consider the expression ``f`` defined +with the :class:`Expression ` component: + +.. literalinclude:: ../../src/expr/design_named_expression.spy + +Although ``f`` is an immutable expression, whose definition is +fixed, a sub-expressions is the named expression ``M.e``. Named +expressions have a mutable value. In other words, the expression +that they point to can change. Thus, a change to the value of +``M.e`` changes the expression tree for any expression that includes +the named expression. + +.. note:: + + The named expression classes are not implemented as sub-classes + of :class:`NumericExpression `. + This reflects design constraints related to the fact that these + are modeling components that belong to class hierarchies other + than the expression class hierarchy, and Pyomo's design prohibits + the use of multiple inheritance for these classes. + +Linear Expressions +~~~~~~~~~~~~~~~~~~ + +Pyomo includes a special expression class for linear expressions. +The class :class:`LinearExpression +` provides a compact +description of linear polynomials. Specifically, it includes a +constant value :attr:`constant` and two lists for coefficients and +variables: :attr:`linear_coefs` and :attr:`linear_vars`. + +This expression object does not have arguments, and thus it is +treated as a leaf node by Pyomo visitor classes. Further, the +expression API functions described above do not work with this +class. Thus, developers need to treat this class differently when +walking an expression tree (e.g. when developing a problem +transformation). + +Sum Expressions +~~~~~~~~~~~~~~~ + +Pyomo does not have a binary sum expression class. Instead, +it has an ``n``-ary summation class, :class:`SumExpression +`. This expression class +treats sums as ``n``-ary sums for efficiency reasons; many large +optimization models contain large sums. But note that this class +maintains the immutability property described above. This class +shares an underlying list of arguments with other :class:`SumExpression +` objects. A particular +object owns the first ``n`` arguments in the shared list, but +different objects may have different values of ``n``. + +This class acts like a normal immutable expression class, and the +API described above works normally. But direct access to the shared +list could have unexpected results. + +Mutable Expressions +~~~~~~~~~~~~~~~~~~~ + +Finally, Pyomo includes several **mutable** expression classes +that are private. These are not intended to be used by users, but +they might be useful for developers in contexts where the developer +can appropriately control how the classes are used. Specifically, +immutability eliminates side-effects where changes to a sub-expression +unexpectedly create changes to the expression tree. But within the context of +model transformations, developers may be able to limit the use of +expressions to avoid these side-effects. The following mutable private classes +are available in Pyomo: + +:class:`_MutableSumExpression ` + This class + is used in the :data:`nonlinear_expression ` context manager to + efficiently combine sums of nonlinear terms. +:class:`_MutableLinearExpression ` + This class + is used in the :data:`linear_expression ` context manager to + efficiently combine sums of linear terms. + + + +Expression Semantics +-------------------- + +Pyomo clear semantics regarding what is considered a valid leaf and +interior node. + +The following classes are valid interior nodes: + +* Subclasses of :class:`ExpressionBase ` + +* Classes that that are *duck typed* to match the API of the :class:`ExpressionBase ` class. For example, the named expression class :class:`Expression `. + +The following classes are valid leaf nodes: + +* Members of :data:`nonpyomo_leaf_types `, which includes standard numeric data types like :const:`int`, :const:`float` and :const:`long`, as well as numeric data types defined by `numpy` and other commonly used packages. This set also includes :class:`NonNumericValue `, which is used to wrap non-numeric arguments to the :class:`ExternalFunctionExpression ` class. + +* Parameter component classes like :class:`ScalarParam ` and :class:`_ParamData `, which arise in expression trees when the parameters are declared as mutable. (Immutable parameters are identified when generating expressions, and they are replaced with their associated numeric value.) + +* Variable component classes like :class:`ScalarVar ` and :class:`_GeneralVarData `, which often arise in expression trees. `. + +.. note:: + + In some contexts the :class:`LinearExpression + ` class can be treated + as an interior node, and sometimes it can be treated as a leaf. + This expression object does not have any child arguments, so + ``nargs()`` is zero. But this expression references variables + and parameters in a linear expression, so in that sense it does + not represent a leaf node in the tree. + + + +Context Managers +---------------- + +Pyomo defines several context managers that can be used to declare +the form of expressions, and to define a mutable expression object that +efficiently manages sums. + +The :data:`linear_expression ` +object is a context manager that can be used to declare a linear sum. For +example, consider the following two loops: + +.. literalinclude:: ../../src/expr/design_cm1.spy + +The first apparent difference in these loops is that the value of +``s`` is explicitly initialized while ``e`` is initialized when the +context manager is entered. However, a more fundamental difference +is that the expression representation for ``s`` differs from ``e``. +Each term added to ``s`` results in a new, immutable expression. +By contrast, the context manager creates a mutable expression +representation for ``e``. This difference allows for both (a) a +more efficient processing of each sum, and (b) a more compact +representation for the expression. + +The difference between :data:`linear_expression +` and +:data:`nonlinear_expression ` +is the underlying representation that each supports. Note that +both of these are instances of context manager classes. In +singled-threaded applications, these objects can be safely used to +construct different expressions with different context declarations. + +Finally, note that these context managers can be passed into the :attr:`start` +method for the :func:`quicksum ` function. For example: + +.. literalinclude:: ../../src/expr/design_cm2.spy + +This sum contains terms for ``M.x[i]`` and ``M.y[i]``. The syntax +in this example is not intuitive because the sum is being stored +in ``e``. + +.. note:: + + We do not generally expect users or developers to use these + context managers. They are used by the :func:`quicksum + ` and :func:`sum_product + ` functions to accelerate expression + generation, and there are few cases where the direct use of + these context managers would provide additional utility to users + and developers. + diff --git a/doc/OnlineDocs/developer_guide/expressions/index.rst b/doc/OnlineDocs/developer_guide/expressions/index.rst new file mode 100644 index 00000000000..685fde25173 --- /dev/null +++ b/doc/OnlineDocs/developer_guide/expressions/index.rst @@ -0,0 +1,55 @@ +.. |p| raw:: html + +

+ +Pyomo Expressions +================= + +.. warning:: + + This documentation does not explicitly reference objects in + pyomo.core.kernel. While the Pyomo5 expression system works + with pyomo.core.kernel objects, the documentation of these + documents was not sufficient to appropriately describe the use + of kernel objects in expressions. + +Pyomo supports the declaration of symbolic expressions that represent +objectives, constraints and other optimization modeling components. +Pyomo expressions are represented in an expression tree, where the +leaves are operands, such as constants or variables, and the internal +nodes contain operators. Pyomo relies on so-called magic methods +to automate the construction of symbolic expressions. For example, +consider an expression ``e`` declared as follows: + +.. literalinclude:: ../../src/expr/index_simple.spy + +Python determines that the magic method ``__mul__`` is called on +the ``M.v`` object, with the argument ``2``. This method returns +a Pyomo expression object ``ProductExpression`` that has arguments +``M.v`` and ``2``. This represents the following symbolic expression +tree: + +.. graphviz:: + + digraph foo { + "*" -> "v"; + "*" -> "2"; + } + +.. note:: + + End-users will not likely need to know details related to how + symbolic expressions are generated and managed in Pyomo. Thus, + most of the following documentation of expressions in Pyomo is most + useful for Pyomo developers. However, the discussion of runtime + performance in the first section will help end-users write large-scale + models. + +.. toctree:: + :maxdepth: 1 + + performance.rst + overview.rst + design.rst + managing.rst + diff --git a/doc/OnlineDocs/developer_guide/expressions/managing.rst b/doc/OnlineDocs/developer_guide/expressions/managing.rst new file mode 100644 index 00000000000..a4dd2a51436 --- /dev/null +++ b/doc/OnlineDocs/developer_guide/expressions/managing.rst @@ -0,0 +1,272 @@ +.. |p| raw:: html + +

+ +Managing Expressions +==================== + +Creating a String Representation of an Expression +------------------------------------------------- + +There are several ways that string representations can be created +from an expression, but the :func:`expression_to_string +` function provides +the most flexible mechanism for generating a string representation. +The options to this function control distinct aspects of the string +representation. + +Algebraic vs. Nested Functional Form +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The default string representation is an algebraic form, which closely +mimics the Python operations used to construct an expression. The +:data:`verbose` flag can be set to :const:`True` to generate a +string representation that is a nested functional form. For example: + +.. literalinclude:: ../../src/expr/managing_ex1.spy + +Labeler and Symbol Map +~~~~~~~~~~~~~~~~~~~~~~ + +The string representation used for variables in expression can be +customized to define different label formats. If the :data:`labeler` +option is specified, then this function (or class functor) is used to +generate a string label used to represent the variable. Pyomo defines a +variety of labelers in the `pyomo.core.base.label` module. For example, +the :class:`NumericLabeler` defines a functor that can be used to +sequentially generate simple labels with a prefix followed by the +variable count: + +.. literalinclude:: ../../src/expr/managing_ex2.spy + +The :data:`smap` option is used to specify a symbol map object +(:class:`SymbolMap `), which +caches the variable label data. This option is normally specified +in contexts where the string representations for many expressions +are being generated. In that context, a symbol map ensures that +variables in different expressions have a consistent label in their +associated string representations. + + +Other Ways to Generate String Representations +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +There are two other standard ways to generate string representations: + +* Call the :func:`__str__` magic method (e.g. using the Python + :func:`str()` function. This calls :func:`expression_to_string + `, using the default values for + all arguments. + +* Call the :func:`to_string` method on the + :class:`ExpressionBase` class. This + calls :func:`expression_to_string + ` and accepts the same arguments. + + +Evaluating Expressions +---------------------- + +Expressions can be evaluated when all variables and parameters in +the expression have a value. The :func:`value ` +function can be used to walk the expression tree and compute the +value of an expression. For example: + +.. literalinclude:: ../../src/expr/managing_ex5.spy + +Additionally, expressions define the :func:`__call__` method, so the +following is another way to compute the value of an expression: + +.. literalinclude:: ../../src/expr/managing_ex6.spy + +If a parameter or variable is undefined, then the :func:`value +` function and :func:`__call__` method will +raise an exception. This exception can be suppressed using the +:attr:`exception` option. For example: + +.. literalinclude:: ../../src/expr/managing_ex7.spy + +This option is useful in contexts where adding a try block is inconvenient +in your modeling script. + +.. note:: + + Both the :func:`value ` function and + :func:`__call__` method call the :func:`evaluate_expression + ` function. In + practice, this function will be slightly faster, but the + difference is only meaningful when expressions are evaluated + many times. + +Identifying Components and Variables +------------------------------------ + +Expression transformations sometimes need to find all nodes in an +expression tree that are of a given type. Pyomo contains two utility +functions that support this functionality. First, the +:func:`identify_components ` +function is a generator function that walks the expression tree and yields all +nodes whose type is in a specified set of node types. For example: + +.. literalinclude:: ../../src/expr/managing_ex8.spy + +The :func:`identify_variables ` +function is a generator function that yields all nodes that are +variables. Pyomo uses several different classes to represent variables, +but this set of variable types does not need to be specified by the user. +However, the :attr:`include_fixed` flag can be specified to omit fixed +variables. For example: + +.. literalinclude:: ../../src/expr/managing_ex9.spy + +Walking an Expression Tree with a Visitor Class +----------------------------------------------- + +Many of the utility functions defined above are implemented by +walking an expression tree and performing an operation at nodes in +the tree. For example, evaluating an expression is performed using +a post-order depth-first search process where the value of a node +is computed using the values of its children. + +Walking an expression tree can be tricky, and the code requires intimate +knowledge of the design of the expression system. Pyomo includes +several classes that define visitor patterns for walking expression +tree: + +:class:`StreamBasedExpressionVisitor ` + The most general and extensible visitor class. This visitor + implements an event-based approach for walking the tree inspired by + the ``expat`` library for processing XML files. The visitor has + seven event callbacks that users can hook into, providing very + fine-grained control over the expression walker. + +:class:`SimpleExpressionVisitor ` + A :func:`visitor` method is called for each node in the tree, + and the visitor class collects information about the tree. + +:class:`ExpressionValueVisitor ` + When the :func:`visitor` method is called on each node in the + tree, the *values* of its children have been computed. The + *value* of the node is returned from :func:`visitor`. + +:class:`ExpressionReplacementVisitor ` + When the :func:`visitor` method is called on each node in the + tree, it may clone or otherwise replace the node using objects + for its children (which themselves may be clones or replacements + from the original child objects). The new node object is + returned from :func:`visitor`. + +These classes define a variety of suitable tree search methods: + +* :class:`StreamBasedExpressionVisitor ` + + * ``walk_expression``: depth-first traversal of the expression tree. + +* :class:`ExpressionReplacementVisitor ` + + * ``walk_expression``: depth-first traversal of the expression tree. + +* :class:`SimpleExpressionVisitor ` + + * ``xbfs``: breadth-first search where leaf nodes are immediately visited + * ``xbfs_yield_leaves``: breadth-first search where leaf nodes are + immediately visited, and the visit method yields a value + +* :class:`ExpressionValueVisitor ` + + * ``dfs_postorder_stack``: postorder depth-first search using a + nonrecursive stack + + +To implement a visitor object, a user needs to provide specializations +for specific events. For legacy visitors based on the PyUtilib +visitor pattern (e.g., :class:`SimpleExpressionVisitor` and +:class:`ExpressionValueVisitor`), one must create a subclass of one of these +classes and override at least one of the following: + +:func:`visitor` + Defines the operation that is performed when a node is visited. In + the :class:`ExpressionValueVisitor + ` and + :class:`ExpressionReplacementVisitor + ` visitor classes, + this method returns a value that is used by its parent node. + +:func:`visiting_potential_leaf` + Checks if the search should terminate with this node. If no, + then this method returns the tuple ``(False, None)``. If yes, + then this method returns ``(False, value)``, where *value* is + computed by this method. This method is not used in the + :class:`SimpleExpressionVisitor + ` visitor + class. + +:func:`finalize` + This method defines the final value that is returned from the + visitor. This is not normally redefined. + +For modern visitors based on the :class:`StreamBasedExpressionVisitor +`, one can either define a +subclass, pass the callbacks to an instance of the base class, or assign +the callbacks as attributes on an instance of the base class. The +:class:`StreamBasedExpressionVisitor +` provides seven +callbacks, which are documented in the class documentation. + +Detailed documentation of the APIs for these methods is provided +with the class documentation for these visitors. + +SimpleExpressionVisitor Example +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In this example, we describe an visitor class that counts the number +of nodes in an expression (including leaf nodes). Consider the following +class: + +.. literalinclude:: ../../src/expr/managing_visitor1.spy + +The class constructor creates a counter, and the :func:`visit` method +increments this counter for every node that is visited. The :func:`finalize` +method returns the value of this counter after the tree has been walked. The +following function illustrates this use of this visitor class: + +.. literalinclude:: ../../src/expr/managing_visitor2.spy + + +ExpressionValueVisitor Example +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In this example, we describe an visitor class that clones the +expression tree (including leaf nodes). Consider the following +class: + +.. literalinclude:: ../../src/expr/managing_visitor3.spy + +The :func:`visit` method creates a new expression node with children +specified by :attr:`values`. The :func:`visiting_potential_leaf` +method performs a :func:`deepcopy` on leaf nodes, which are native +Python types or non-expression objects. + +.. literalinclude:: ../../src/expr/managing_visitor4.spy + + +ExpressionReplacementVisitor Example +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In this example, we describe an visitor class that replaces +variables with scaled variables, using a mutable parameter that +can be modified later. the following +class: + +.. literalinclude:: ../../src/expr/managing_visitor5.spy + +No other method need to be defined. The +:func:`beforeChild` method identifies variable nodes +and returns a product expression that contains a mutable parameter. + +.. literalinclude:: ../../src/expr/managing_visitor6.spy + +The :func:`scale_expression` function is called with an expression and +a dictionary, :attr:`scale`, that maps variable ID to model parameter. For example: + +.. literalinclude:: ../../src/expr/managing_visitor7.spy diff --git a/doc/OnlineDocs/developer_guide/expressions/overview.rst b/doc/OnlineDocs/developer_guide/expressions/overview.rst new file mode 100644 index 00000000000..c1962edec22 --- /dev/null +++ b/doc/OnlineDocs/developer_guide/expressions/overview.rst @@ -0,0 +1,300 @@ +.. |p| raw:: html + +

+ +Design Overview +=============== + +Historical Comparison +--------------------- + +This document describes the "Pyomo5" expressions, which were +introduced in Pyomo 5.6. The main differences between "Pyomo5" +expressions and the previous expression system, called "Coopr3", +are: + +* Pyomo5 supports both CPython and PyPy implementations of Python, + while Coopr3 only supports CPython. + + The key difference in these implementations is that Coopr3 relies + on CPython reference counting, which is not part of the Python + language standard. Hence, this implementation is not guaranteed + to run on other implementations of Python. + + Pyomo5 does not rely on reference counting, and it has been tested + with PyPy. In the future, this should allow Pyomo to support + other Python implementations (e.g. Jython). + + |p| + +* Pyomo5 expression objects are immutable, while Coopr3 expression + objects are mutable. + + This difference relates to how expression objects are managed + in Pyomo. Once created, Pyomo5 expression objects cannot be + changed. Further, the user is guaranteed that no "side effects" + occur when expressions change at a later point in time. By + contrast, Coopr3 allows expressions to change in-place, and thus + "side effects" make occur when expressions are changed at a later + point in time. (See discussion of entanglement below.) + + |p| + +* Pyomo5 provides more consistent runtime performance than Coopr3. + + While this documentation does not provide a detailed comparison + of runtime performance between Coopr3 and Pyomo5, the following + performance considerations also motivated the creation of Pyomo5: + + * There were surprising performance inconsistencies in Coopr3. For + example, the following two loops had dramatically different + runtime: + + .. literalinclude:: ../../src/expr/overview_example1.spy + + * Coopr3 eliminates side effects by automatically cloning sub-expressions. + Unfortunately, this can easily lead to unexpected cloning in models, which + can dramatically slow down Pyomo model generation. For example: + + .. literalinclude:: ../../src/expr/overview_example2.spy + + * Coopr3 leverages recursion in many operations, including expression + cloning. Even simple non-linear expressions can result in deep + expression trees where these recursive operations fail because + Python runs out of stack space. + + |p| + + * The immutable representation used in Pyomo5 requires more memory allocations + than Coopr3 in simple loops. Hence, a pure-Python execution of Pyomo5 + can be 10% slower than Coopr3 for model construction. But when Cython is used + to optimize the execution of Pyomo5 expression generation, the + runtimes for Pyomo5 and Coopr3 are about the same. (In principle, + Cython would improve the runtime of Coopr3 as well, but the limitations + noted above motivated a new expression system in any case.) + +Expression Entanglement and Mutability +-------------------------------------- + +Pyomo fundamentally relies on the use of magic methods in Python +to generate expression trees, which means that Pyomo has very limited +control for how expressions are managed in Python. For example: + +* Python variables can point to the same expression tree + + .. literalinclude:: ../../src/expr/overview_tree1.spy + + This is illustrated as follows: + + .. graphviz:: + + digraph foo { + { + e [shape=box] + f [shape=box] + } + "*" -> 2; + "*" -> v; + subgraph cluster { "*"; 2; v; } + e -> "*" [splines=curved, style=dashed]; + f -> "*" [splines=curved, style=dashed]; + } + +* A variable can point to a sub-tree that another variable points to + + .. literalinclude:: ../../src/expr/overview_tree2.spy + + This is illustrated as follows: + + .. graphviz:: + + digraph foo { + { + e [shape=box] + f [shape=box] + } + "*" -> 2; + "*" -> v; + "+" -> "*"; + "+" -> 3; + subgraph cluster { "+"; 3; "*"; 2; v; } + e -> "*" [splines=curved, style=dashed, constraint=false]; + f -> "+" [splines=curved, style=dashed]; + } + +* Two expression trees can point to the same sub-tree + + .. literalinclude:: ../../src/expr/overview_tree3.spy + + This is illustrated as follows: + + .. graphviz:: + + digraph foo { + { + e [shape=box] + f [shape=box] + g [shape=box] + } + x [label="+"]; + "*" -> 2; + "*" -> v; + "+" -> "*"; + "+" -> 3; + x -> 4; + x -> "*"; + subgraph cluster { x; 4; "+"; 3; "*"; 2; v; } + e -> "*" [splines=curved, style=dashed, constraint=false]; + f -> "+" [splines=curved, style=dashed]; + g -> x [splines=curved, style=dashed]; + } + +In each of these examples, it is almost impossible for a Pyomo user +or developer to detect whether expressions are being shared. In +CPython, the reference counting logic can support this to a limited +degree. But no equivalent mechanisms are available in PyPy and +other Python implementations. + +Entangled Sub-Expressions +~~~~~~~~~~~~~~~~~~~~~~~~~ + +We say that expressions are *entangled* if they share one or more +sub-expressions. The first example above does not represent +entanglement, but rather the fact that multiple Python variables +can point to the same expression tree. In the second and third +examples, the expressions are entangled because the subtree represented +by ``e`` is shared. However, if a leave node like ``M.v`` is shared +between expressions, we do not consider those expressions entangled. + +Expression entanglement is problematic because shared expressions complicate +the expected behavior when sub-expressions are changed. Consider the following example: + +.. literalinclude:: ../../src/expr/overview_tree4.spy + +What is the value of ``e`` after ``M.w`` is added to it? What is the +value of ``f``? The answers to these questions are not immediately +obvious, and the fact that Coopr3 uses mutable expression objects +makes them even less clear. However, Pyomo5 and Coopr3 enforce +the following semantics: + +.. pull-quote:: + + A change to an expression *e* that is a sub-expression of *f* + does not change the expression tree for *f*. + +This property ensures a change to an expression does not create side effects that change the +values of other, previously defined expressions. + +For instance, the previous example results in the following (in Pyomo5): + +.. graphviz:: + + digraph foo { + { + e [shape=box] + f [shape=box] + } + x [label="+"]; + "*" -> 2; + "*" -> v; + "+" -> "*"; + "+" -> 3; + x -> "*"; + x -> w; + subgraph cluster { "+"; 3; "*"; 2; v; x; w;} + f -> "+" [splines=curved, style=dashed]; + e -> x [splines=curved, style=dashed]; + } + +With Pyomo5 expressions, each sub-expression is immutable. Thus, +the summation operation generates a new expression ``e`` without +changing existing expression objects referenced in the expression +tree for ``f``. By contrast, Coopr3 imposes the same property by +cloning the expression ``e`` before added ``M.w``, resulting in the following: + +.. graphviz:: + + digraph foo { + { + e [shape=box] + f [shape=box] + } + "*" -> 2; + "*" -> v; + "+" -> "*"; + "+" -> 3; + etimes [label="*"]; + etwo [label=2]; + etimes -> etwo; + etimes -> v; + x [label="+"]; + x -> w; + x -> etimes; + subgraph cluster { "+"; 3; "*"; 2; v; x; w; etimes; etwo;} + f -> "+" [splines=curved, style=dashed]; + e -> x [splines=curved, style=dashed]; + } + +This example also illustrates that leaves may be shared between expressions. + +Mutable Expression Components +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +There is one important exception to the entanglement property +described above. The ``Expression`` component is treated as a +mutable expression when shared between expressions. For example: + +.. literalinclude:: ../../src/expr/overview_tree5.spy + +Here, the expression ``M.e`` is a so-called *named expression* that +the user has declared. Named expressions are explicitly intended +for re-use within models, and they provide a convenient mechanism +for changing sub-expressions in complex applications. In this example, the +expression tree is as follows before ``M.w`` is added: + +.. graphviz:: + + digraph foo { + { + f [shape=box] + } + "*" -> 2; + "*" -> v; + "+" -> "M.e"; + "+" -> 3; + "M.e" -> "*"; + subgraph cluster { "+"; 3; "*"; 2; v; "M.e";} + f -> "+" [splines=curved, style=dashed]; + } + + +And the expression tree is as follows after ``M.w`` is added. + +.. graphviz:: + + digraph foo { + { + f [shape=box] + } + x [label="+"]; + "*" -> 2; + "*" -> v; + "+" -> "M.e"; + "+" -> 3; + x -> "*"; + x -> w; + "M.e" -> x; + subgraph cluster { "+"; 3; "*"; 2; v; "M.e"; x; w;} + f -> "+" [splines=curved, style=dashed]; + } + + +When considering named expressions, Pyomo5 and Coopr3 enforce +the following semantics: + +.. pull-quote:: + + A change to a named expression *e* that is a sub-expression of + *f* changes the expression tree for *f*, because *f* continues + to point to *e* after it is changed. + diff --git a/doc/OnlineDocs/developer_guide/expressions/performance.rst b/doc/OnlineDocs/developer_guide/expressions/performance.rst new file mode 100644 index 00000000000..8e344e50982 --- /dev/null +++ b/doc/OnlineDocs/developer_guide/expressions/performance.rst @@ -0,0 +1,171 @@ +.. |p| raw:: html + +

+ +Building Expressions Faster +=========================== + +Expression Generation +--------------------- + +Pyomo expressions can be constructed using native binary operators +in Python. For example, a sum can be created in a simple loop: + +.. literalinclude:: ../../src/expr/performance_loop1.spy + +Additionally, Pyomo expressions can be constructed using functions +that iteratively apply Python binary operators. For example, the +Python :func:`sum` function can be used to replace the previous +loop: + +.. literalinclude:: ../../src/expr/performance_loop2.spy + +The :func:`sum` function is both more compact and more efficient. +Using :func:`sum` avoids the creation of temporary variables, and +the summation logic is executed in the Python interpreter while the +loop is interpreted. + + +Linear, Quadratic and General Nonlinear Expressions +--------------------------------------------------- + +Pyomo can express a very wide range of algebraic expressions, and +there are three general classes of expressions that are recognized +by Pyomo: + + * **linear polynomials** + * **quadratic polynomials** + * **nonlinear expressions**, including higher-order polynomials and + expressions with intrinsic functions + +These classes of expressions are leveraged to efficiently generate +compact representations of expressions, and to transform expression +trees into standard forms used to interface with solvers. Note +that There not all quadratic polynomials are recognized by Pyomo; +in other words, some quadratic expressions are treated as nonlinear +expressions. + +For example, consider the following quadratic polynomial: + +.. literalinclude:: ../../src/expr/performance_loop3.spy + +This quadratic polynomial is treated as a nonlinear expression +unless the expression is explicitly processed to identify quadratic +terms. This *lazy* identification of of quadratic terms allows +Pyomo to tailor the search for quadratic terms only when they are +explicitly needed. + +Pyomo Utility Functions +----------------------- + +Pyomo includes several similar functions that can be used to +create expressions: + +:func:`prod ` + A function to compute a product of Pyomo expressions. + +:func:`quicksum ` + A function to efficiently compute a sum of Pyomo expressions. + +:func:`sum_product ` + A function that computes a generalized dot product. + +prod +~~~~ + +The :func:`prod ` function is analogous to the builtin +:func:`sum` function. Its main argument is a variable length +argument list, :attr:`args`, which represents expressions that are multiplied +together. For example: + +.. literalinclude:: ../../src/expr/performance_prod.spy + +quicksum +~~~~~~~~ + +The behavior of the :func:`quicksum ` function is +similar to the builtin :func:`sum` function, but this function often +generates a more compact Pyomo expression. Its main argument is a +variable length argument list, :attr:`args`, which represents +expressions that are summed together. For example: + +.. literalinclude:: ../../src/expr/performance_quicksum.spy + +The summation is customized based on the :attr:`start` and +:attr:`linear` arguments. The :attr:`start` defines the initial +value for summation, which defaults to zero. If :attr:`start` is +a numeric value, then the :attr:`linear` argument determines how +the sum is processed: + +* If :attr:`linear` is :const:`False`, then the terms in :attr:`args` are assumed to be nonlinear. +* If :attr:`linear` is :const:`True`, then the terms in :attr:`args` are assumed to be linear. +* If :attr:`linear` is :const:`None`, the first term in :attr:`args` is analyze to determine whether the terms are linear or nonlinear. + +This argument allows the :func:`quicksum ` +function to customize the expression representation used, and +specifically a more compact representation is used for linear +polynomials. The :func:`quicksum ` +function can be slower than the builtin :func:`sum` function, +but this compact representation can generate problem representations +more quickly. + +Consider the following example: + +.. literalinclude:: ../../src/expr/quicksum_runtime.spy + +The sum consists of linear terms because the exponents are one. +The following output illustrates that quicksum can identify this +linear structure to generate expressions more quickly: + +.. literalinclude:: ../../src/expr/quicksum.log + :language: none + +If :attr:`start` is not a numeric value, then the :func:`quicksum +` sets the initial value to :attr:`start` +and executes a simple loop to sum the terms. This allows the sum +to be stored in an object that is passed into the function (e.g. the linear context manager +:data:`linear_expression `). + +.. Warning:: + + By default, :attr:`linear` is :const:`None`. While this allows + for efficient expression generation in normal cases, there are + circumstances where the inspection of the first + term in :attr:`args` is misleading. Consider the following + example: + + .. literalinclude:: ../../src/expr/performance_warning.spy + + The first term created by the generator is linear, but the + subsequent terms are nonlinear. Pyomo gracefully transitions + to a nonlinear sum, but in this case :func:`quicksum ` + is doing additional work that is not useful. + +sum_product +~~~~~~~~~~~ + +The :func:`sum_product ` function supports +a generalized dot product. The :attr:`args` argument contains one +or more components that are used to create terms in the summation. +If the :attr:`args` argument contains a single components, then its +sequence of terms are summed together; the sum is equivalent to +calling :func:`quicksum `. If two or more components are +provided, then the result is the summation of their terms multiplied +together. For example: + +.. literalinclude:: ../../src/expr/performance_sum_product1.spy + +The :attr:`denom` argument specifies components whose terms are in +the denominator. For example: + +.. literalinclude:: ../../src/expr/performance_sum_product2.spy + +The terms summed by this function are explicitly specified, so +:func:`sum_product ` can identify +whether the resulting expression is linear, quadratic or nonlinear. +Consequently, this function is typically faster than simple loops, +and it generates compact representations of expressions.. + +Finally, note that the :func:`dot_product ` +function is an alias for :func:`sum_product `. + diff --git a/doc/OnlineDocs/developer_guide/future.rst b/doc/OnlineDocs/developer_guide/future.rst new file mode 100644 index 00000000000..531c0fdb5c6 --- /dev/null +++ b/doc/OnlineDocs/developer_guide/future.rst @@ -0,0 +1,3 @@ + +.. automodule:: pyomo.__future__ + :noindex: diff --git a/doc/OnlineDocs/developer_guide/index.rst b/doc/OnlineDocs/developer_guide/index.rst new file mode 100644 index 00000000000..9adf9eb2648 --- /dev/null +++ b/doc/OnlineDocs/developer_guide/index.rst @@ -0,0 +1,15 @@ +Developer Guide +=============== + +This guide describes utilities and design philosophies useful for Pyomo +developers or anyone interested in developing packages that use or +interrogate Pyomo models. + +.. toctree:: + :maxdepth: 1 + + Configuration System + Deprecation System + Expression System + Future Feature Preview + Solver Interfaces diff --git a/doc/OnlineDocs/developer_guide/solvers.rst b/doc/OnlineDocs/developer_guide/solvers.rst new file mode 100644 index 00000000000..9e3281246f4 --- /dev/null +++ b/doc/OnlineDocs/developer_guide/solvers.rst @@ -0,0 +1,351 @@ +Future Solver Interface Changes +=============================== + +.. note:: + + The new solver interfaces are still under active development. They + are included in the releases as development previews. Please be + aware that APIs and functionality may change with no notice. + + We welcome any feedback and ideas as we develop this capability. + Please post feedback on + `Issue 1030 `_. + +Pyomo offers interfaces into multiple solvers, both commercial and open +source. To support better capabilities for solver interfaces, the Pyomo +team is actively redesigning the existing interfaces to make them more +maintainable and intuitive for use. A preview of the redesigned +interfaces can be found in ``pyomo.contrib.solver``. + +.. currentmodule:: pyomo.contrib.solver + + +New Interface Usage +------------------- + +The new interfaces are not completely backwards compatible with the +existing Pyomo solver interfaces. However, to aid in testing and +evaluation, we are distributing versions of the new solver interfaces +that are compatible with the existing ("legacy") solver interface. +These "legacy" interfaces are registered with the current +``SolverFactory`` using slightly different names (to avoid conflicts +with existing interfaces). + +.. |br| raw:: html + +
+ +.. list-table:: Available Redesigned Solvers and Names Registered + in the SolverFactories + :header-rows: 1 + + * - Solver + - Name registered in the |br| ``pyomo.contrib.solver.factory.SolverFactory`` + - Name registered in the |br| ``pyomo.opt.base.solvers.LegacySolverFactory`` + * - Ipopt + - ``ipopt`` + - ``ipopt_v2`` + * - Gurobi (persistent) + - ``gurobi`` + - ``gurobi_v2`` + * - Gurobi (direct) + - ``gurobi_direct`` + - ``gurobi_direct_v2`` + +Using the new interfaces through the legacy interface +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Here we use the new interface as exposed through the existing (legacy) +solver factory and solver interface wrapper. This provides an API that +is compatible with the existing (legacy) Pyomo solver interface and can +be used with other Pyomo tools / capabilities. + +.. testcode:: + :skipif: not ipopt_available + + import pyomo.environ as pyo + from pyomo.contrib.solver.util import assert_optimal_termination + + model = pyo.ConcreteModel() + model.x = pyo.Var(initialize=1.5) + model.y = pyo.Var(initialize=1.5) + + def rosenbrock(model): + return (1.0 - model.x) ** 2 + 100.0 * (model.y - model.x**2) ** 2 + + model.obj = pyo.Objective(rule=rosenbrock, sense=pyo.minimize) + + status = pyo.SolverFactory('ipopt_v2').solve(model) + assert_optimal_termination(status) + model.pprint() + +.. testoutput:: + :skipif: not ipopt_available + :hide: + + 2 Var Declarations + ... + 3 Declarations: x y obj + +In keeping with our commitment to backwards compatibility, both the legacy and +future methods of specifying solver options are supported: + +.. testcode:: + :skipif: not ipopt_available + + import pyomo.environ as pyo + + model = pyo.ConcreteModel() + model.x = pyo.Var(initialize=1.5) + model.y = pyo.Var(initialize=1.5) + + def rosenbrock(model): + return (1.0 - model.x) ** 2 + 100.0 * (model.y - model.x**2) ** 2 + + model.obj = pyo.Objective(rule=rosenbrock, sense=pyo.minimize) + + # Backwards compatible + status = pyo.SolverFactory('ipopt_v2').solve(model, options={'max_iter' : 6}) + # Forwards compatible + status = pyo.SolverFactory('ipopt_v2').solve(model, solver_options={'max_iter' : 6}) + model.pprint() + +.. testoutput:: + :skipif: not ipopt_available + :hide: + + 2 Var Declarations + ... + 3 Declarations: x y obj + +Using the new interfaces directly +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Here we use the new interface by importing it directly: + +.. testcode:: + :skipif: not ipopt_available + + # Direct import + import pyomo.environ as pyo + from pyomo.contrib.solver.util import assert_optimal_termination + from pyomo.contrib.solver.ipopt import Ipopt + + model = pyo.ConcreteModel() + model.x = pyo.Var(initialize=1.5) + model.y = pyo.Var(initialize=1.5) + + def rosenbrock(model): + return (1.0 - model.x) ** 2 + 100.0 * (model.y - model.x**2) ** 2 + + model.obj = pyo.Objective(rule=rosenbrock, sense=pyo.minimize) + + opt = Ipopt() + status = opt.solve(model) + assert_optimal_termination(status) + # Displays important results information; only available through the new interfaces + status.display() + model.pprint() + +.. testoutput:: + :skipif: not ipopt_available + :hide: + + solution_loader: ... + ... + 3 Declarations: x y obj + +Using the new interfaces through the "new" SolverFactory +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Here we use the new interface by retrieving it from the new ``SolverFactory``: + +.. testcode:: + :skipif: not ipopt_available + + # Import through new SolverFactory + import pyomo.environ as pyo + from pyomo.contrib.solver.util import assert_optimal_termination + from pyomo.contrib.solver.factory import SolverFactory + + model = pyo.ConcreteModel() + model.x = pyo.Var(initialize=1.5) + model.y = pyo.Var(initialize=1.5) + + def rosenbrock(model): + return (1.0 - model.x) ** 2 + 100.0 * (model.y - model.x**2) ** 2 + + model.obj = pyo.Objective(rule=rosenbrock, sense=pyo.minimize) + + opt = SolverFactory('ipopt') + status = opt.solve(model) + assert_optimal_termination(status) + # Displays important results information; only available through the new interfaces + status.display() + model.pprint() + +.. testoutput:: + :skipif: not ipopt_available + :hide: + + solution_loader: ... + ... + 3 Declarations: x y obj + +Switching all of Pyomo to use the new interfaces +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +We also provide a mechanism to get a "preview" of the future where we +replace the existing (legacy) SolverFactory and utilities with the new +(development) version (see :doc:`future`): + +.. testcode:: + :skipif: not ipopt_available + + # Change default SolverFactory version + import pyomo.environ as pyo + from pyomo.contrib.solver.util import assert_optimal_termination + from pyomo.__future__ import solver_factory_v3 + + model = pyo.ConcreteModel() + model.x = pyo.Var(initialize=1.5) + model.y = pyo.Var(initialize=1.5) + + def rosenbrock(model): + return (1.0 - model.x) ** 2 + 100.0 * (model.y - model.x**2) ** 2 + + model.obj = pyo.Objective(rule=rosenbrock, sense=pyo.minimize) + + status = pyo.SolverFactory('ipopt').solve(model) + assert_optimal_termination(status) + # Displays important results information; only available through the new interfaces + status.display() + model.pprint() + +.. testoutput:: + :skipif: not ipopt_available + :hide: + + solution_loader: ... + ... + 3 Declarations: x y obj + +.. testcode:: + :skipif: not ipopt_available + :hide: + + from pyomo.__future__ import solver_factory_v1 + +Linear Presolve and Scaling +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The new interface allows access to new capabilities in the various +problem writers, including the linear presolve and scaling options +recently incorporated into the redesigned NL writer. For example, you +can control the NL writer in the new ``ipopt`` interface through the +solver's ``writer_config`` configuration option: + +.. autoclass:: pyomo.contrib.solver.ipopt.Ipopt + :members: solve + +.. testcode:: + + from pyomo.contrib.solver.ipopt import Ipopt + opt = Ipopt() + opt.config.writer_config.display() + +.. testoutput:: + + show_section_timing: false + skip_trivial_constraints: true + file_determinism: FileDeterminism.ORDERED + symbolic_solver_labels: false + scale_model: true + export_nonlinear_variables: None + row_order: None + column_order: None + export_defined_variables: true + linear_presolve: true + +Note that, by default, both ``linear_presolve`` and ``scale_model`` are enabled. +Users can manipulate ``linear_presolve`` and ``scale_model`` to their preferred +states by changing their values. + +.. code-block:: python + + >>> opt.config.writer_config.linear_presolve = False + + +Interface Implementation +------------------------ + +All new interfaces should be built upon one of two classes (currently): +:class:`SolverBase` or +:class:`PersistentSolverBase`. + +All solvers should have the following: + +.. autoclass:: pyomo.contrib.solver.base.SolverBase + :members: + +Persistent solvers include additional members as well as other configuration options: + +.. autoclass:: pyomo.contrib.solver.base.PersistentSolverBase + :show-inheritance: + :members: + +Results +------- + +Every solver, at the end of a +:meth:`solve` call, will +return a :class:`Results` +object. This object is a :py:class:`pyomo.common.config.ConfigDict`, +which can be manipulated similar to a standard ``dict`` in Python. + +.. autoclass:: pyomo.contrib.solver.results.Results + :show-inheritance: + :members: + :undoc-members: + + +Termination Conditions +^^^^^^^^^^^^^^^^^^^^^^ + +Pyomo offers a standard set of termination conditions to map to solver +returns. The intent of +:class:`TerminationCondition` +is to notify the user of why the solver exited. The user is expected +to inspect the :class:`Results` +object or any returned solver messages or logs for more information. + +.. autoclass:: pyomo.contrib.solver.results.TerminationCondition + :show-inheritance: + + +Solution Status +^^^^^^^^^^^^^^^ + +Pyomo offers a standard set of solution statuses to map to solver +output. The intent of +:class:`SolutionStatus` +is to notify the user of what the solver returned at a high level. The +user is expected to inspect the +:class:`Results` object or any +returned solver messages or logs for more information. + +.. autoclass:: pyomo.contrib.solver.results.SolutionStatus + :show-inheritance: + + +Solution +-------- + +Solutions can be loaded back into a model using a ``SolutionLoader``. A specific +loader should be written for each unique case. Several have already been +implemented. For example, for ``ipopt``: + +.. autoclass:: pyomo.contrib.solver.ipopt.IpoptSolutionLoader + :show-inheritance: + :members: + :inherited-members: diff --git a/doc/OnlineDocs/docutils.conf b/doc/OnlineDocs/docutils.conf new file mode 100644 index 00000000000..84f89f45e9b --- /dev/null +++ b/doc/OnlineDocs/docutils.conf @@ -0,0 +1,2 @@ +[writers] +table_style=colwidths-auto diff --git a/doc/OnlineDocs/getting_started/index.rst b/doc/OnlineDocs/getting_started/index.rst new file mode 100644 index 00000000000..2cdea1bdf8f --- /dev/null +++ b/doc/OnlineDocs/getting_started/index.rst @@ -0,0 +1,5 @@ +Getting Started +=============== + +TOOO + diff --git a/doc/OnlineDocs/getting_started/installation.rst b/doc/OnlineDocs/getting_started/installation.rst new file mode 100644 index 00000000000..83cd08e7a4a --- /dev/null +++ b/doc/OnlineDocs/getting_started/installation.rst @@ -0,0 +1,99 @@ +Installation +------------ + +Pyomo currently supports the following versions of Python: + +* CPython: 3.8, 3.9, 3.10, 3.11, 3.12 +* PyPy: 3 + +At the time of the first Pyomo release after the end-of-life of a minor Python +version, Pyomo will remove testing for that Python version. + +Using CONDA +~~~~~~~~~~~ + +We recommend installation with ``conda``, which is included with the +Anaconda distribution of Python. You can install Pyomo in your system +Python installation by executing the following in a shell: + +:: + + conda install -c conda-forge pyomo + +Optimization solvers are not installed with Pyomo, but some open source +optimization solvers can be installed with ``conda`` as well: + +:: + + conda install -c conda-forge ipopt glpk + + +Using PIP +~~~~~~~~~ + +The standard utility for installing Python packages is ``pip``. You +can install Pyomo in your system Python installation by executing +the following in a shell: + +:: + + pip install pyomo + + +Conditional Dependencies +~~~~~~~~~~~~~~~~~~~~~~~~ + +Extensions to Pyomo, and many of the contributions in ``pyomo.contrib``, +often have conditional dependencies on a variety of third-party Python +packages including but not limited to: matplotlib, networkx, numpy, +openpyxl, pandas, pint, pymysql, pyodbc, pyro4, scipy, sympy, and +xlrd. + +A full list of conditional dependencies can be found in Pyomo's +``setup.py`` and displayed using: + +:: + + python setup.py dependencies --extra optional + +Pyomo extensions that require any of these packages will generate +an error message for missing dependencies upon use. + +When using *pip*, all conditional dependencies can be installed at once +using the following command: + +:: + + pip install 'pyomo[optional]' + +When using *conda*, many of the conditional dependencies are included +with the standard Anaconda installation. + +You can check which Python packages you have installed using the command +``conda list`` or ``pip list``. Additional Python packages may be +installed as needed. + + +Installation with Cython +~~~~~~~~~~~~~~~~~~~~~~~~ + +Users can opt to install Pyomo with +`cython `_ +initialized. + +.. note:: + This can only be done via ``pip`` or from source. + +Via ``pip``: + +:: + + pip install pyomo --global-option="--with-cython" + +From source (recommended for advanced users only): + +:: + + git clone https://github.com/Pyomo/pyomo.git + cd pyomo + python setup.py install --with-cython diff --git a/doc/OnlineDocs/getting_started/pyomo_overview/abstract_concrete.rst b/doc/OnlineDocs/getting_started/pyomo_overview/abstract_concrete.rst new file mode 100644 index 00000000000..24f2f2b8187 --- /dev/null +++ b/doc/OnlineDocs/getting_started/pyomo_overview/abstract_concrete.rst @@ -0,0 +1,54 @@ +Abstract Versus Concrete Models +------------------------------- + +A mathematical model can be defined using symbols that represent data +values. For example, the following equations represent a linear program +(LP) to find optimal values for the vector :math:`x` with parameters +:math:`n` and :math:`b`, and parameter vectors :math:`a` and :math:`c`: + +.. math:: + :nowrap: + + \begin{array}{lll} + \min & \sum_{j=1}^n c_j x_j &\\ + \mathrm{s.t.} & \sum_{j=1}^n a_{ij} x_j \geq b_i & \forall i = 1 \ldots m\\ + & x_j \geq 0 & \forall j = 1 \ldots n + \end{array} + +.. note:: + + As a convenience, we use the symbol :math:`\forall` to mean "for all" + or "for each." + +We call this an *abstract* or *symbolic* mathematical model since it +relies on unspecified parameter values. Data values can be used to +specify a *model instance*. The ``AbstractModel`` class provides a +context for defining and initializing abstract optimization models in +Pyomo when the data values will be supplied at the time a solution is to +be obtained. + +In many contexts, a mathematical model can and should be directly +defined with the data values supplied at the time of the model +definition. We call these *concrete* mathematical models. For example, +the following LP model is a concrete instance of the previous abstract +model: + +.. math:: + :nowrap: + + \begin{array}{ll} + \min & 2 x_1 + 3 x_2\\ + \mathrm{s.t.} & 3 x_1 + 4 x_2 \geq 1\\ + & x_1, x_2 \geq 0 + \end{array} + +The ``ConcreteModel`` class is used to define concrete optimization +models in Pyomo. + +.. note:: + + Python programmers will probably prefer to write concrete models, + while users of some other algebraic modeling languages may tend to + prefer to write abstract models. The choice is largely a matter of + taste; some applications may be a little more straightforward using + one or the other. diff --git a/doc/OnlineDocs/getting_started/pyomo_overview/index.rst b/doc/OnlineDocs/getting_started/pyomo_overview/index.rst new file mode 100644 index 00000000000..91400825977 --- /dev/null +++ b/doc/OnlineDocs/getting_started/pyomo_overview/index.rst @@ -0,0 +1,10 @@ +Pyomo Overview +============== + +.. toctree:: + :maxdepth: 1 + + math_modeling.rst + overview_components.rst + abstract_concrete.rst + simple_examples.rst diff --git a/doc/OnlineDocs/getting_started/pyomo_overview/math_modeling.rst b/doc/OnlineDocs/getting_started/pyomo_overview/math_modeling.rst new file mode 100644 index 00000000000..ccacca8d58d --- /dev/null +++ b/doc/OnlineDocs/getting_started/pyomo_overview/math_modeling.rst @@ -0,0 +1,102 @@ +Mathematical Modeling +--------------------- + +This section provides an introduction to Pyomo: Python Optimization +Modeling Objects. A more complete description is contained in the +[PyomoBookIII]_ book. Pyomo supports the formulation and analysis of +mathematical models for complex optimization applications. This +capability is commonly associated with commercially available algebraic +modeling languages (AMLs) such as [AMPL]_, [AIMMS]_, and [GAMS]_. +Pyomo's modeling objects are embedded within Python, a full-featured, +high-level programming language that contains a rich set of supporting +libraries. + +Modeling is a fundamental process in many aspects of scientific +research, engineering and business. Modeling involves the formulation +of a simplified representation of a system or real-world object. Thus, +modeling tools like Pyomo can be used in a variety of ways: + +- *Explain phenomena* that arise in a system, + +- *Make predictions* about future states of a system, + +- *Assess key factors* that influence phenomena in a system, + +- *Identify extreme states* in a system, that might represent worst-case + scenarios or minimal cost plans, and + +- *Analyze trade-offs* to support human decision makers. + +Mathematical models represent system knowledge with a formalized +language. The following mathematical concepts are central to modern +modeling activities: + +Variables +********* + + Variables represent unknown or changing parts of a model (e.g., + whether or not to make a decision, or the characteristic of a system + outcome). The values taken by the variables are often referred to as + a *solution* and are usually an output of the optimization process. + +Parameters +********** + + Parameters represents the data that must be supplied to perform the + optimization. In fact, in some settings the word *data* is used in + place of the word *parameters*. + +Relations +********* + + These are equations, inequalities or other mathematical + relationships that define how different parts of a model are + connected to each other. + +Goals +***** + + These are functions that reflect goals and objectives for the system + being modeled. + +The widespread availability of computing resources has made the +numerical analysis of mathematical models a commonplace activity. +Without a modeling language, the process of setting up input files, +executing a solver and extracting the final results from the solver +output is tedious and error-prone. This difficulty is compounded in +complex, large-scale real-world applications which are difficult to +debug when errors occur. Additionally, there are many different formats +used by optimization software packages, and few formats are recognized +by many optimizers. Thus the application of multiple optimization +solvers to analyze a model introduces additional complexities. + + +Pyomo is an AML that extends Python to include objects for mathematical +modeling. [PyomoBookI]_, [PyomoBookII]_, [PyomoBookIII]_, and [PyomoJournal]_ +compare Pyomo with other AMLs. Although many good AMLs have been developed for +optimization models, the following are motivating factors for the +development of Pyomo: + +- *Open Source* + + Pyomo is developed within Pyomo's open source project to promote + transparency of the modeling framework and encourage community + development of Pyomo capabilities. + +- *Customizable Capability* + + Pyomo supports a customizable capability through the extensive use + of plug-ins to modularize software components. + +- *Solver Integration* + + Pyomo models can be optimized with solvers that are written either + in Python or in compiled, low-level languages. + +- *Programming Language* + + Pyomo leverages a high-level programming language, which has several + advantages over custom AMLs: a very robust language, extensive + documentation, a rich set of standard libraries, support for modern + programming features like classes and functions, and portability to + many platforms. diff --git a/doc/OnlineDocs/getting_started/pyomo_overview/overview_components.rst b/doc/OnlineDocs/getting_started/pyomo_overview/overview_components.rst new file mode 100644 index 00000000000..679e2d9bd8b --- /dev/null +++ b/doc/OnlineDocs/getting_started/pyomo_overview/overview_components.rst @@ -0,0 +1,42 @@ +Overview of Modeling Components and Processes +--------------------------------------------- + +Pyomo supports an object-oriented design for the definition of +optimization models. The basic steps of a simple modeling process are: + +* Create model and declare components +* Instantiate the model +* Apply solver +* Interrogate solver results + +In practice, these steps may be applied repeatedly with different data +or with different constraints applied to the model. However, we focus +on this simple modeling process to illustrate different strategies for +modeling with Pyomo. + +A Pyomo *model* consists of a collection of modeling *components* that +define different aspects of the model. Pyomo includes the modeling +components that are commonly supported by modern AMLs: index sets, +symbolic parameters, decision variables, objectives, and constraints. +These modeling components are defined in Pyomo through the following +Python classes: + +Set +*** + set data that is used to define a model instance + +Param +***** + parameter data that is used to define a model instance + +Var +*** + decision variables in a model + +Objective +********* + expressions that are minimized or maximized in a model + +Constraint +********** + constraint expressions that impose restrictions on variable values in a model diff --git a/doc/OnlineDocs/getting_started/pyomo_overview/simple_examples.rst b/doc/OnlineDocs/getting_started/pyomo_overview/simple_examples.rst new file mode 100644 index 00000000000..11305884c54 --- /dev/null +++ b/doc/OnlineDocs/getting_started/pyomo_overview/simple_examples.rst @@ -0,0 +1,416 @@ +Simple Models +============= + +A Simple Concrete Pyomo Model +***************************** + +It is possible to get the same flexible behavior from models +declared to be abstract and models declared to be concrete in Pyomo; +however, we will focus on a straightforward concrete example here where +the data is hard-wired into the model file. Python programmers will +quickly realize that the data could have come from other sources. + +Given the following model from the previous section: + +.. math:: + :nowrap: + + \begin{array}{ll} + \min & 2 x_1 + 3 x_2\\ + \mathrm{s.t.} & 3 x_1 + 4 x_2 \geq 1\\ + & x_1, x_2 \geq 0 + \end{array} + +This can be implemented as a concrete model as follows: + +.. testcode:: + + import pyomo.environ as pyo + + model = pyo.ConcreteModel() + + model.x = pyo.Var([1,2], domain=pyo.NonNegativeReals) + + model.OBJ = pyo.Objective(expr = 2*model.x[1] + 3*model.x[2]) + + model.Constraint1 = pyo.Constraint(expr = 3*model.x[1] + 4*model.x[2] >= 1) + +Although rule functions can also be used to specify constraints and +objectives, in this example we use the ``expr`` option that is available +only in concrete models. This option gives a direct specification of the +expression. + + +A Simple Abstract Pyomo Model +***************************** +We repeat the abstract model from the previous section: + +.. math:: + :nowrap: + + \begin{array}{lll} + \min & \sum_{j=1}^n c_j x_j &\\ + \mathrm{s.t.} & \sum_{j=1}^n a_{ij} x_j \geq b_i & \forall i = 1 \ldots m\\ + & x_j \geq 0 & \forall j = 1 \ldots n + \end{array} + +One way to implement this in Pyomo is as shown as follows: + +.. testcode:: + + import pyomo.environ as pyo + + model = pyo.AbstractModel() + + model.m = pyo.Param(within=pyo.NonNegativeIntegers) + model.n = pyo.Param(within=pyo.NonNegativeIntegers) + + model.I = pyo.RangeSet(1, model.m) + model.J = pyo.RangeSet(1, model.n) + + model.a = pyo.Param(model.I, model.J) + model.b = pyo.Param(model.I) + model.c = pyo.Param(model.J) + + # the next line declares a variable indexed by the set J + model.x = pyo.Var(model.J, domain=pyo.NonNegativeReals) + + def obj_expression(m): + return pyo.summation(m.c, m.x) + + model.OBJ = pyo.Objective(rule=obj_expression) + + def ax_constraint_rule(m, i): + # return the expression for the constraint for i + return sum(m.a[i,j] * m.x[j] for j in m.J) >= m.b[i] + + # the next line creates one constraint for each member of the set model.I + model.AxbConstraint = pyo.Constraint(model.I, rule=ax_constraint_rule) + +.. doctest:: + :hide: + + >>> # Create an instance to verify that the rules fire correctly + >>> inst = model.create_instance('src/scripting/abstract1.dat') + +.. note:: + + Python is interpreted one line at a time. A line continuation + character, ``\`` (backslash), is used for Python statements that need to span + multiple lines. In Python, indentation has meaning and must be + consistent. For example, lines inside a function definition must be + indented and the end of the indentation is used by Python to signal + the end of the definition. + +We will now examine the lines in this example. +The first import line is required in every Pyomo model. Its purpose +is to make the symbols used by Pyomo known to Python. + +.. testcode:: + + import pyomo.environ as pyo + +The declaration of a model is also required. The use of the name ``model`` +is not required. Almost any name could be used, but we will use the name +``model`` in most of our examples. In this example, we are declaring +that it will be an abstract model. + +.. testcode:: + + model = pyo.AbstractModel() + +We declare the parameters :math:`m` and :math:`n` using the Pyomo +:class:`Param` component. This component can take a variety of arguments; this +example illustrates use of the ``within`` option that is used by Pyomo +to validate the data value that is assigned to the parameter. If this +option were not given, then Pyomo would not object to any type of data +being assigned to these parameters. As it is, assignment of a value that +is not a non-negative integer will result in an error. + +.. testcode:: + + model.m = pyo.Param(within=pyo.NonNegativeIntegers) + model.n = pyo.Param(within=pyo.NonNegativeIntegers) + +Although not required, it is convenient to define index sets. In this +example we use the :class:`RangeSet` component to declare that the sets will +be a sequence of integers starting at 1 and ending at a value specified +by the the parameters ``model.m`` and ``model.n``. + +.. testcode:: + + model.I = pyo.RangeSet(1, model.m) + model.J = pyo.RangeSet(1, model.n) + +The coefficient and right-hand-side data are defined as indexed +parameters. When sets are given as arguments to the :class:`Param` component, +they indicate that the set will index the parameter. + +.. testcode:: + + model.a = pyo.Param(model.I, model.J) + model.b = pyo.Param(model.I) + model.c = pyo.Param(model.J) + +The next line that is interpreted by Python as part of the model +declares the variable :math:`x`. The first argument to the :class:`Var` +component is a set, so it is defined as an index set for the variable. In +this case the variable has only one index set, but multiple sets could +be used as was the case for the declaration of the parameter +``model.a``. The second argument specifies a domain for the +variable. This information is part of the model and will passed to the +solver when data is provided and the model is solved. Specification of +the ``NonNegativeReals`` domain implements the requirement that the +variables be greater than or equal to zero. + +.. testcode:: + + # the next line declares a variable indexed by the set J + model.x = pyo.Var(model.J, domain=pyo.NonNegativeReals) + +.. note:: + + In Python, and therefore in Pyomo, any text after pound sign is + considered to be a comment. + +In abstract models, Pyomo expressions are usually provided to objective +and constraint declarations via a function defined with a +Python ``def`` statement. The ``def`` statement establishes a name for a +function along with its arguments. When Pyomo uses a function to get +objective or constraint expressions, it always passes in the +model (i.e., itself) as the the first argument so the model is always +the first formal argument when declaring such functions in Pyomo. +Additional arguments, if needed, follow. Since summation is an extremely +common part of optimization models, Pyomo provides a flexible function +to accommodate it. When given two arguments, the :func:`summation()` function +returns an expression for the sum of the product of the two arguments +over their indexes. This only works, of course, if the two arguments +have the same indexes. If it is given only one argument it returns an +expression for the sum over all indexes of that argument. So in this +example, when :func:`summation` is passed the arguments ``m.c, m.x`` +it returns an internal representation of the expression +:math:`\sum_{j=1}^{n}c_{j} x_{j}`. + +.. testcode:: + + def obj_expression(m): + return pyo.summation(m.c, m.x) + +To declare an objective function, the Pyomo component called +:class:`Objective` is used. The ``rule`` argument gives the name of a +function that returns the objective expression. The default *sense* is +minimization. For maximization, the ``sense=pyo.maximize`` argument must be +used. The name that is declared, which is ``OBJ`` in this case, appears +in some reports and can be almost any name. + +.. testcode:: + + model.OBJ = pyo.Objective(rule=obj_expression) + +Declaration of constraints is similar. A function is declared to generate +the constraint expression. In this case, there can be multiple +constraints of the same form because we index the constraints by +:math:`i` in the expression :math:`\sum_{j=1}^n a_{ij} x_j \geq b_i +\;\;\forall i = 1 \ldots m`, which states that we need a constraint for +each value of :math:`i` from one to :math:`m`. In order to parametrize +the expression by :math:`i` we include it as a formal parameter to the +function that declares the constraint expression. Technically, we could +have used anything for this argument, but that might be confusing. Using +an ``i`` for an :math:`i` seems sensible in this situation. + +.. testcode:: + + def ax_constraint_rule(m, i): + # return the expression for the constraint for i + return sum(m.a[i,j] * m.x[j] for j in m.J) >= m.b[i] + +.. note:: + + In Python, indexes are in square brackets and function arguments are + in parentheses. + +In order to declare constraints that use this expression, we use the +Pyomo :class:`Constraint` component that takes a variety of arguments. In this +case, our model specifies that we can have more than one constraint of +the same form and we have created a set, ``model.I``, over which these +constraints can be indexed so that is the first argument to the +constraint declaration. The next argument gives the rule that +will be used to generate expressions for the constraints. Taken as a +whole, this constraint declaration says that a list of constraints +indexed by the set ``model.I`` will be created and for each member of +``model.I``, the function ``ax_constraint_rule`` will be called and it +will be passed the model object as well as the member of ``model.I`` + +.. testcode:: + + # the next line creates one constraint for each member of the set model.I + model.AxbConstraint = pyo.Constraint(model.I, rule=ax_constraint_rule) + +In the object oriented view of all of this, we would say that ``model`` +object is a class instance of the :class:`AbstractModel` class, and +``model.J`` is a :class:`Set` object that is contained by this model. Many +modeling components in Pyomo can be optionally specified as *indexed* +*components*: collections of components that are referenced using one or +more values. In this example, the parameter ``model.c`` is indexed with +set ``model.J``. + +In order to use this model, data must be given for the values of the +parameters. Here is one file that provides data (in AMPL "``.dat``" format). + +.. doctest:: + :hide: + + >>> # Create an instance to verify that the rules fire correctly + >>> inst = model.create_instance('src/scripting/abstract1.dat') + +.. literalinclude:: ../src/scripting/abstract1.dat + :language: text + +There are multiple formats that can be used to provide data to a Pyomo +model, but the AMPL format works well for our purposes because it +contains the names of the data elements together with the data. In AMPL +data files, text after a pound sign is treated as a comment. Lines +generally do not matter, but statements must be terminated with a +semi-colon. + +For this particular data file, there is one constraint, so the value of +``model.m`` will be one and there are two variables (i.e., the vector +``model.x`` is two elements long) so the value of ``model.n`` will be +two. These two assignments are accomplished with standard +assignments. Notice that in AMPL format input, the name of the model is +omitted. + +:: + + param m := 1 ; + param n := 2 ; + +There is only one constraint, so only two values are needed for +``model.a``. When assigning values to arrays and vectors in AMPL format, +one way to do it is to give the index(es) and the the value. The line 1 +2 4 causes ``model.a[1,2]`` to get the value +4. Since ``model.c`` has only one index, only one index value is needed +so, for example, the line 1 2 causes ``model.c[1]`` to get the +value 2. Line breaks generally do not matter in AMPL format data files, +so the assignment of the value for the single index of ``model.b`` is +given on one line since that is easy to read. + +:: + + param a := + 1 1 3 + 1 2 4 + ; + + param c:= + 1 2 + 2 3 + ; + + param b := 1 1 ; + +.. _abstract2.py: + +.. _abstract2.dat: + +Symbolic Index Sets +******************* + +When working with Pyomo (or any other AML), it is convenient to write +abstract models in a somewhat more abstract way by using index sets that +contain strings rather than index sets that are implied by +:math:`1,\ldots,m` or the summation from 1 to :math:`n`. When this is +done, the size of the set is implied by the input, rather than specified +directly. Furthermore, the index entries may have no real order. Often, +a mixture of integers and indexes and strings as indexes is needed in +the same model. To start with an illustration of general indexes, +consider a slightly different Pyomo implementation of the model we just +presented. + +.. literalinclude:: ../src/scripting/abstract2.py + :language: python + +To get the same instantiated model, the following data file can be used. + +.. literalinclude:: ../src/scripting/abstract2a.dat + :language: none + +However, this model can also be fed different data for problems of the +same general form using meaningful indexes. + +.. literalinclude:: ../src/scripting/abstract2.dat + :language: none + + +Solving the Simple Examples +*************************** + +Pyomo supports modeling and scripting but does not install a solver +automatically. In order to solve a model, there must be a solver +installed on the computer to be used. If there is a solver, then the +``pyomo`` command can be used to solve a problem instance. + +Suppose that the solver named glpk (also known as glpsol) is installed +on the computer. Suppose further that an abstract model is in the file +named ``abstract1.py`` and a data file for it is in the file named +``abstract1.dat``. From the command prompt, with both files in the +current directory, a solution can be obtained with the command: + +:: + + pyomo solve abstract1.py abstract1.dat --solver=glpk + +Since glpk is the default solver, there really is no need specify it so +the ``--solver`` option can be dropped. + +.. note:: + + There are two dashes before the command line option names such as + ``solver``. + +To continue the example, if CPLEX is installed then it can be listed as +the solver. The command to solve with CPLEX is + +:: + + pyomo solve abstract1.py abstract1.dat --solver=cplex + +This yields the following output on the screen: + +:: + + [ 0.00] Setting up Pyomo environment + [ 0.00] Applying Pyomo preprocessing actions + [ 0.07] Creating model + [ 0.15] Applying solver + [ 0.37] Processing results + Number of solutions: 1 + Solution Information + Gap: 0.0 + Status: optimal + Function Value: 0.666666666667 + Solver results file: results.json + [ 0.39] Applying Pyomo postprocessing actions + [ 0.39] Pyomo Finished + +The numbers in square brackets indicate how much time was required for +each step. Results are written to the file named ``results.json``, which +has a special structure that makes it useful for post-processing. To see +a summary of results written to the screen, use the ``--summary`` +option: + +:: + + pyomo solve abstract1.py abstract1.dat --solver=cplex --summary + +To see a list of Pyomo command line options, use: + +:: + + pyomo solve --help + +.. note:: + + There are two dashes before ``help``. + +For a concrete model, no data file is specified on the Pyomo command line. diff --git a/doc/OnlineDocs/index.rst b/doc/OnlineDocs/index.rst new file mode 100644 index 00000000000..d074b8ce29c --- /dev/null +++ b/doc/OnlineDocs/index.rst @@ -0,0 +1,71 @@ +Pyomo Documentation |release| +============================= + +.. image:: /../logos/pyomo/PyomoNewBlue3.png + :scale: 10% + :align: right + +Pyomo is a Python-based, open-source optimization modeling language +with a diverse set of optimization capabilities. + + +.. list-table:: + :class: index-table + + * - Getting Started + | :doc:`Installation ` + - User Guide + | :doc:`User guide index ` + * - Developer Guide + | :doc:`Index ` + - Reference Guide + | :doc:`Library Reference ` + + +.. toctree:: + :hidden: + :maxdepth: 1 + + index + Getting Started + User Guide + Developer Guide + Reference Guide + + +Pyomo Resources +--------------- + +Pyomo development is hosted at GitHub: + +* https://github.com/Pyomo/pyomo + +See the Pyomo Forum for online discussions of Pyomo or to ask a question: + +* http://groups.google.com/group/pyomo-forum/ + +Ask a question on StackOverflow using the `#pyomo` tag: + +* https://stackoverflow.com/questions/ask?tags=pyomo + + +Contributing to Pyomo +--------------------- + +Interested in contributing code or documentation to the project? Check out our +:doc:`Contribution Guide ` + +Related Packages +---------------- + +Pyomo is a key dependency for a number of other software packages for +specific domains or customized solution strategies. A non-comprehensive +list of Pyomo-related packages may be found :doc:`here `. + + +Citing Pyomo +------------ + +Bynum, Michael L., Gabriel A. Hackebeil, William E. Hart, Carl D. Laird, Bethany L. Nicholson, John D. Siirola, Jean-Paul Watson, and David L. Woodruff. Pyomo - Optimization Modeling in Python, 3rd Edition. Springer, 2021. + +Hart, William E., Jean-Paul Watson, and David L. Woodruff. "Pyomo: modeling and solving mathematical programs in Python." Mathematical Programming Computation 3, no. 3 (2011): 219-260. diff --git a/doc/OnlineDocs/reference_guide/bibliography.rst b/doc/OnlineDocs/reference_guide/bibliography.rst new file mode 100644 index 00000000000..c12d3f81d8c --- /dev/null +++ b/doc/OnlineDocs/reference_guide/bibliography.rst @@ -0,0 +1,68 @@ +Bibliography +============ + +.. [AMPL] R. Fourer, D. M. Gay, and B. W. Kernighan. AMPL: A Modeling + Language for Mathematical Programming, 2nd Edition. Duxbury + Press, 2002. + +.. [AIMMS] http://www.aimms.com/ + +.. [GAMS] http://www.gams.com + +.. [Isenberg_et_al] Isenberg, NM, Akula, P, Eslick, JC, Bhattacharyya, D, + Miller, DC, Gounaris, CE. A generalized cutting‐set approach for + nonlinear robust optimization in process systems + engineering. AIChE J. 2021; 67:e17175. DOI `10.1002/aic.17175 + `_ + +.. [mpisppy] Bernard Knueven, David Mildebrath, Christopher Muir, + John D Siirola, Jean-Paul Watson, and David L Woodruff, A Parallel + Hub-and-Spoke System for Large-Scale Scenario-Based Optimization + Under Uncertainty, pre-print, 2020 + +.. [ParmestPaper] Katherine A. Klise, Bethany L. Nicholson, Andrea + Staid, David L.Woodruff. Parmest: Parameter Estimation Via Pyomo. + Computer Aided Chemical Engineering, 47 (2019): 41-46. + +.. [PyomoBookI] William E. Hart, Carl D. Laird, Jean-Paul Watson, + David L. Woodruff. Pyomo – Optimization Modeling in + Python, Springer, 2012. + +.. [PyomoBookII] W. E. Hart, C. D. Laird, + J.-P. Watson, D. L. Woodruff, G. A. Hackebeil, B. L. Nicholson, + J. D. Siirola. Pyomo - Optimization Modeling in Python, + 2nd Edition. Springer Optimization and Its + Applications, Vol 67. Springer, 2017. + +.. [PyomoBookIII] Bynum, Michael L., Gabriel A. Hackebeil, + William E. Hart, Carl D. Laird, Bethany L. Nicholson, + John D. Siirola, Jean-Paul Watson, and David L. Woodruff. + Pyomo - Optimization Modeling in Python, 3rd Edition. + Vol. 67. Springer, 2021. + doi: `10.1007/978-3-030-68928-5 + `_ + +.. [PyomoJournal] William E. Hart, Jean-Paul Watson, David L. Woodruff. + "Pyomo: modeling and solving mathematical programs in + Python," Mathematical Programming Computation, Volume + 3, Number 3, August 2011 + +.. [PyomoDAE] Bethany Nicholson, John D. Siirola, Jean-Paul Watson, + Victor M. Zavala, and Lorenz T. Biegler. "pyomo.dae: a + modeling and automatic discretization framework for + optimization with differential and algebraic equations." + Mathematical Programming Computation 10(2) (2018): + 187-223. + +.. [RooneyBiegler] W.C. Rooney, L.T. Biegler, "Design for model parameter + uncertainty using nonlinear confidence regions", AIChE + Journal, 47(8), 2001 + +.. [SemiBatch] O. Abel, W. Marquardt, "Scenario-integrated modeling and + optimization of dynamic systems", AIChE Journal, 46(4), 2000 + +.. [Vielma_et_al] J. P. Vielma, S. Ahmed, G. Nemhauser. "Mixed-Integer + Models for Non-separable Piecewise Linear + Optimization: Unifying framework and Extensions", + Operations Research 58, 2010. pp. 303-315. + diff --git a/doc/OnlineDocs/reference_guide/index.rst b/doc/OnlineDocs/reference_guide/index.rst new file mode 100644 index 00000000000..3092b706b14 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/index.rst @@ -0,0 +1,9 @@ +Reference Guide +=============== + +Bibliography +------------ + +:doc:`Bibliography ` + + diff --git a/doc/OnlineDocs/reference_guide/library_reference/aml/index.rst b/doc/OnlineDocs/reference_guide/library_reference/aml/index.rst new file mode 100644 index 00000000000..f06ca35b087 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/aml/index.rst @@ -0,0 +1,85 @@ +AML Library Reference +===================== + +The following modeling components make up the core of the Pyomo +Algebraic Modeling Language (AML). These classes are all available +through the `pyomo.environ` namespace. + +.. currentmodule:: pyomo.environ + +.. autosummary:: + + ConcreteModel + AbstractModel + Block + Set + RangeSet + Param + Var + Objective + Constraint + ExternalFunction + Reference + SOSConstraint + + +AML Component Documentation +~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.. autoclass:: ConcreteModel + :show-inheritance: + :members: + :inherited-members: + +.. autoclass:: AbstractModel + :show-inheritance: + :members: + :inherited-members: + +.. autoclass:: Block + :show-inheritance: + :members: + :inherited-members: + +.. autoclass:: Constraint + :show-inheritance: + :members: + :inherited-members: + +.. autoclass:: ExternalFunction + :show-inheritance: + :special-members: __init__ + :members: + :inherited-members: + +.. autoclass:: Objective + :show-inheritance: + :members: + :inherited-members: + +.. autoclass:: Param + :show-inheritance: + :members: + :inherited-members: + +.. autoclass:: RangeSet + :show-inheritance: + :members: + :inherited-members: + +.. autofunction:: Reference + +.. autoclass:: Set + :show-inheritance: + :members: + :inherited-members: + +.. autoclass:: Var + :show-inheritance: + :members: + :inherited-members: + +.. autoclass:: SOSConstraint + :show-inheritance: + :members: + :inherited-members: + diff --git a/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.base.rst b/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.base.rst new file mode 100644 index 00000000000..1b6d5761182 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.base.rst @@ -0,0 +1,47 @@ +APPSI Base Classes +================== + +.. autoclass:: pyomo.contrib.appsi.base.TerminationCondition + :members: + :inherited-members: + :undoc-members: + :show-inheritance: + +.. autoclass:: pyomo.contrib.appsi.base.Results + :members: + :inherited-members: + :undoc-members: + :show-inheritance: + +.. autoclass:: pyomo.contrib.appsi.base.Solver + :members: + :inherited-members: + :undoc-members: + :show-inheritance: + +.. autoclass:: pyomo.contrib.appsi.base.PersistentSolver + :members: + :inherited-members: + :undoc-members: + :show-inheritance: + +.. autoclass:: pyomo.contrib.appsi.base.SolverConfig + :members: + :inherited-members: + :undoc-members: + :show-inheritance: + :exclude-members: NoArgument + +.. autoclass:: pyomo.contrib.appsi.base.MIPSolverConfig + :members: + :inherited-members: + :undoc-members: + :show-inheritance: + :exclude-members: NoArgument + +.. autoclass:: pyomo.contrib.appsi.base.UpdateConfig + :members: + :inherited-members: + :undoc-members: + :show-inheritance: + :exclude-members: NoArgument diff --git a/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.rst b/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.rst new file mode 100644 index 00000000000..e26e4b0e82a --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.rst @@ -0,0 +1,106 @@ +.. _api_documentation: + +APPSI +===== + +Auto-Persistent Pyomo Solver Interfaces + +.. automodule:: pyomo.contrib.appsi + :members: + :show-inheritance: + +.. toctree:: + + appsi.base + appsi.solvers + +APPSI solver interfaces are designed to work very similarly to most +Pyomo solver interfaces but are very efficient for resolving the same +model with small changes. This is very beneficial for applications +such as Benders' Decomposition, Optimization-Based Bounds Tightening, +Progressive Hedging, Outer-Approximation, and many others. Here is an +example of using an APPSI solver interface. + +.. code-block:: python + + >>> import pyomo.environ as pe + >>> from pyomo.contrib import appsi + >>> import numpy as np + >>> from pyomo.common.timing import HierarchicalTimer + >>> m = pe.ConcreteModel() + >>> m.x = pe.Var() + >>> m.y = pe.Var() + >>> m.p = pe.Param(mutable=True) + >>> m.obj = pe.Objective(expr=m.x**2 + m.y**2) + >>> m.c1 = pe.Constraint(expr=m.y >= pe.exp(m.x)) + >>> m.c2 = pe.Constraint(expr=m.y >= (m.x - m.p)**2) + >>> opt = appsi.solvers.Ipopt() + >>> timer = HierarchicalTimer() + >>> for p_val in np.linspace(1, 10, 100): + >>> m.p.value = float(p_val) + >>> res = opt.solve(m, timer=timer) + >>> assert res.termination_condition == appsi.base.TerminationCondition.optimal + >>> print(res.best_feasible_objective) + >>> print(timer) + +Extra performance improvements can be made if you know exactly what +changes will be made in your model. In the example above, only +parameter values are changed, so we can setup the +:py:class:`~pyomo.contrib.appsi.base.UpdateConfig` so that the solver +does not check for changes in variables or constraints. + +.. code-block:: python + + >>> timer = HierarchicalTimer() + >>> opt.update_config.check_for_new_or_removed_constraints = False + >>> opt.update_config.check_for_new_or_removed_vars = False + >>> opt.update_config.update_constraints = False + >>> opt.update_config.update_vars = False + >>> for p_val in np.linspace(1, 10, 100): + >>> m.p.value = float(p_val) + >>> res = opt.solve(m, timer=timer) + >>> assert res.termination_condition == appsi.base.TerminationCondition.optimal + >>> print(res.best_feasible_objective) + >>> print(timer) + +Solver independent options can be specified with the +:py:class:`~pyomo.contrib.appsi.base.SolverConfig` or derived +classes. For example: + +.. code-block:: python + + >>> opt.config.stream_solver = True + +Solver specific options can be specified with the +:py:meth:`~pyomo.contrib.appsi.base.Solver.solver_options` +attribute. For example: + +.. code-block:: python + + >>> opt.solver_options['max_iter'] = 20 + +Installation +------------ +There are a few ways to install Appsi listed below. + +Option1: + +.. code-block:: + + pyomo build-extensions + +Option2: + +.. code-block:: + + cd pyomo/contrib/appsi/ + python build.py + +Option3: + +.. code-block:: + + python + >>> from pyomo.contrib.appsi.build import build_appsi + >>> build_appsi() + diff --git a/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.cbc.rst b/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.cbc.rst new file mode 100644 index 00000000000..a0a2f7d0f27 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.cbc.rst @@ -0,0 +1,15 @@ +Cbc +=== + +.. autoclass:: pyomo.contrib.appsi.solvers.cbc.CbcConfig + :members: + :inherited-members: + :undoc-members: + :show-inheritance: + :exclude-members: NoArgument + +.. autoclass:: pyomo.contrib.appsi.solvers.cbc.Cbc + :members: + :inherited-members: + :undoc-members: + :show-inheritance: diff --git a/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.cplex.rst b/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.cplex.rst new file mode 100644 index 00000000000..0906fd7ea76 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.cplex.rst @@ -0,0 +1,21 @@ +Cplex +===== + +.. autoclass:: pyomo.contrib.appsi.solvers.cplex.CplexConfig + :members: + :inherited-members: + :undoc-members: + :show-inheritance: + :exclude-members: NoArgument + +.. autoclass:: pyomo.contrib.appsi.solvers.cplex.CplexResults + :members: + :inherited-members: + :undoc-members: + :show-inheritance: + +.. autoclass:: pyomo.contrib.appsi.solvers.cplex.Cplex + :members: + :inherited-members: + :undoc-members: + :show-inheritance: diff --git a/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.gurobi.rst b/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.gurobi.rst new file mode 100644 index 00000000000..9e0af041410 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.gurobi.rst @@ -0,0 +1,55 @@ +Gurobi +====== + + +Handling Gurobi licenses through the APPSI interface +---------------------------------------------------- + +In order to obtain performance benefits when re-solving a Pyomo model +with Gurobi repeatedly, Pyomo has to keep a reference to a gurobipy +model between calls to +:py:meth:`~pyomo.contrib.appsi.solvers.gurobi.Gurobi.solve()`. Depending +on the Gurobi license type, this may "consume" a license as long as +any APPSI-Gurobi interface exists (i.e., has not been garbage +collected). To release a Gurobi license for other processes, use the +:py:meth:`~pyomo.contrib.appsi.solvers.gurobi.Gurobi.release_license()` +method as shown below. Note that +:py:meth:`~pyomo.contrib.appsi.solvers.gurobi.Gurobi.release_license()` +must be called on every instance for this to actually release the +license. However, releasing the license will delete the gurobipy model +which will have to be reconstructed from scratch the next time +:py:meth:`~pyomo.contrib.appsi.solvers.gurobi.Gurobi.solve()` is +called, negating any performance benefit of the persistent solver +interface. + +.. code-block:: python + + >>> opt = appsi.solvers.Gurobi() # doctest: +SKIP + >>> results = opt.solve(model) # doctest: +SKIP + >>> opt.release_license() # doctest: +SKIP + + +Also note that both the +:py:meth:`~pyomo.contrib.appsi.solvers.gurobi.Gurobi.available()` and +:py:meth:`~pyomo.contrib.appsi.solvers.gurobi.Gurobi.solve()` methods +will construct a gurobipy model, thereby (depending on the type of +license) "consuming" a license. The +:py:meth:`~pyomo.contrib.appsi.solvers.gurobi.Gurobi.available()` +method has to do this so that the availability does not change between +calls to +:py:meth:`~pyomo.contrib.appsi.solvers.gurobi.Gurobi.available()` and +:py:meth:`~pyomo.contrib.appsi.solvers.gurobi.Gurobi.solve()`, leading +to unexpected errors. + + +.. autoclass:: pyomo.contrib.appsi.solvers.gurobi.GurobiResults + :members: + :inherited-members: + :undoc-members: + :show-inheritance: + +.. autoclass:: pyomo.contrib.appsi.solvers.gurobi.Gurobi + :members: + :inherited-members: + :undoc-members: + :show-inheritance: diff --git a/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.highs.rst b/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.highs.rst new file mode 100644 index 00000000000..f2f72d0ad85 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.highs.rst @@ -0,0 +1,14 @@ +HiGHS +===== + +.. autoclass:: pyomo.contrib.appsi.solvers.highs.HighsResults + :members: + :inherited-members: + :undoc-members: + :show-inheritance: + +.. autoclass:: pyomo.contrib.appsi.solvers.highs.Highs + :members: + :inherited-members: + :undoc-members: + :show-inheritance: diff --git a/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.ipopt.rst b/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.ipopt.rst new file mode 100644 index 00000000000..0d095644100 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.ipopt.rst @@ -0,0 +1,14 @@ +Ipopt +===== + +.. autoclass:: pyomo.contrib.appsi.solvers.ipopt.IpoptConfig + :members: + :inherited-members: + :undoc-members: + :show-inheritance: + +.. autoclass:: pyomo.contrib.appsi.solvers.ipopt.Ipopt + :members: + :inherited-members: + :undoc-members: + :show-inheritance: diff --git a/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.maingo.rst b/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.maingo.rst new file mode 100644 index 00000000000..21e61c38d51 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.maingo.rst @@ -0,0 +1,14 @@ +MAiNGO +====== + +.. autoclass:: pyomo.contrib.appsi.solvers.maingo.MAiNGOConfig + :members: + :inherited-members: + :undoc-members: + :show-inheritance: + +.. autoclass:: pyomo.contrib.appsi.solvers.maingo.MAiNGO + :members: + :inherited-members: + :undoc-members: + :show-inheritance: diff --git a/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.rst b/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.rst new file mode 100644 index 00000000000..f4dcb81b4be --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/appsi/appsi.solvers.rst @@ -0,0 +1,16 @@ +Solvers +======= + +.. automodule:: pyomo.contrib.appsi.solvers + :members: + :show-inheritance: + :undoc-members: + +.. toctree:: + + appsi.solvers.gurobi + appsi.solvers.ipopt + appsi.solvers.cplex + appsi.solvers.cbc + appsi.solvers.highs + appsi.solvers.maingo diff --git a/doc/OnlineDocs/reference_guide/library_reference/common/config.rst b/doc/OnlineDocs/reference_guide/library_reference/common/config.rst new file mode 100644 index 00000000000..c5dc607977a --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/common/config.rst @@ -0,0 +1,85 @@ +pyomo.common.config +=================== + +.. currentmodule:: pyomo.common.config + +Core classes +~~~~~~~~~~~~ + +.. autosummary:: + + ConfigDict + ConfigList + ConfigValue + +Utilities +~~~~~~~~~ + +.. autosummary:: + + document_kwargs_from_configdict + + +Domain validators +~~~~~~~~~~~~~~~~~ + +.. autosummary:: + + Bool + Integer + PositiveInt + NegativeInt + NonNegativeInt + NonPositiveInt + PositiveFloat + NegativeFloat + NonPositiveFloat + NonNegativeFloat + In + IsInstance + InEnum + ListOf + Module + Path + PathList + DynamicImplicitDomain + +.. autoclass:: ConfigBase + :members: + :undoc-members: + +.. autoclass:: ConfigDict + :show-inheritance: + :members: + :undoc-members: + +.. autoclass:: ConfigList + :show-inheritance: + :members: + :undoc-members: + +.. autoclass:: ConfigValue + :show-inheritance: + :members: + :undoc-members: + +.. autodecorator:: document_kwargs_from_configdict + +.. autofunction:: Bool +.. autofunction:: Integer +.. autofunction:: PositiveInt +.. autofunction:: NegativeInt +.. autofunction:: NonNegativeInt +.. autofunction:: NonPositiveInt +.. autofunction:: PositiveFloat +.. autofunction:: NegativeFloat +.. autofunction:: NonPositiveFloat +.. autofunction:: NonNegativeFloat +.. autoclass:: In +.. autoclass:: IsInstance +.. autoclass:: InEnum +.. autoclass:: ListOf +.. autoclass:: Module +.. autoclass:: Path +.. autoclass:: PathList +.. autoclass:: DynamicImplicitDomain diff --git a/doc/OnlineDocs/reference_guide/library_reference/common/dependencies.rst b/doc/OnlineDocs/reference_guide/library_reference/common/dependencies.rst new file mode 100644 index 00000000000..18d5647681c --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/common/dependencies.rst @@ -0,0 +1,7 @@ + +pyomo.common.dependencies +========================= + +.. automodule:: pyomo.common.dependencies + :members: + :member-order: bysource diff --git a/doc/OnlineDocs/reference_guide/library_reference/common/deprecation.rst b/doc/OnlineDocs/reference_guide/library_reference/common/deprecation.rst new file mode 100644 index 00000000000..41066c040c4 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/common/deprecation.rst @@ -0,0 +1,6 @@ +pyomo.common.deprecation +======================== + +.. automodule:: pyomo.common.deprecation + :members: + :member-order: bysource diff --git a/doc/OnlineDocs/reference_guide/library_reference/common/enums.rst b/doc/OnlineDocs/reference_guide/library_reference/common/enums.rst new file mode 100644 index 00000000000..5ed2dbb1e80 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/common/enums.rst @@ -0,0 +1,7 @@ + +pyomo.common.enums +================== + +.. automodule:: pyomo.common.enums + :members: + :member-order: bysource diff --git a/doc/OnlineDocs/reference_guide/library_reference/common/errors.rst b/doc/OnlineDocs/reference_guide/library_reference/common/errors.rst new file mode 100644 index 00000000000..7b2bd01fe32 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/common/errors.rst @@ -0,0 +1,6 @@ +pyomo.common.errors +=================== + +.. automodule:: pyomo.common.errors + :members: + :member-order: bysource diff --git a/doc/OnlineDocs/reference_guide/library_reference/common/fileutils.rst b/doc/OnlineDocs/reference_guide/library_reference/common/fileutils.rst new file mode 100644 index 00000000000..e582f4c2e94 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/common/fileutils.rst @@ -0,0 +1,6 @@ +pyomo.common.fileutils +====================== + +.. automodule:: pyomo.common.fileutils + :members: + :member-order: bysource diff --git a/doc/OnlineDocs/reference_guide/library_reference/common/formatting.rst b/doc/OnlineDocs/reference_guide/library_reference/common/formatting.rst new file mode 100644 index 00000000000..25f0ef2404c --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/common/formatting.rst @@ -0,0 +1,6 @@ +pyomo.common.formatting +======================= + +.. automodule:: pyomo.common.formatting + :members: + :member-order: bysource diff --git a/doc/OnlineDocs/reference_guide/library_reference/common/index.rst b/doc/OnlineDocs/reference_guide/library_reference/common/index.rst new file mode 100644 index 00000000000..c03436600f2 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/common/index.rst @@ -0,0 +1,19 @@ +Common Utilities +================ + +Pyomo provides a set of general-purpose utilities through +``pyomo.common``. These utilities are self-contained and do not import +or rely on any other parts of Pyomo. + +.. toctree:: + :maxdepth: 1 + + config.rst + dependencies.rst + deprecation.rst + enums.rst + errors.rst + fileutils.rst + formatting.rst + tempfiles.rst + timing.rst diff --git a/doc/OnlineDocs/reference_guide/library_reference/common/tempfiles.rst b/doc/OnlineDocs/reference_guide/library_reference/common/tempfiles.rst new file mode 100644 index 00000000000..03cb056dffe --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/common/tempfiles.rst @@ -0,0 +1,7 @@ + +pyomo.common.tempfiles +====================== + +.. automodule:: pyomo.common.tempfiles + :members: + :member-order: bysource diff --git a/doc/OnlineDocs/reference_guide/library_reference/common/timing.rst b/doc/OnlineDocs/reference_guide/library_reference/common/timing.rst new file mode 100644 index 00000000000..06b6fc0f588 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/common/timing.rst @@ -0,0 +1,7 @@ + +pyomo.common.timing +=================== + +.. automodule:: pyomo.common.timing + :members: + :member-order: bysource diff --git a/doc/OnlineDocs/reference_guide/library_reference/data/index.rst b/doc/OnlineDocs/reference_guide/library_reference/data/index.rst new file mode 100644 index 00000000000..fffb06240f8 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/data/index.rst @@ -0,0 +1,11 @@ +Model Data Management +===================== + +.. autoclass:: pyomo.dataportal.DataPortal.DataPortal + :members: + :special-members: + +.. autoclass:: pyomo.dataportal.TableData.TableData + :members: + :special-members: + diff --git a/doc/OnlineDocs/reference_guide/library_reference/expressions/building.rst b/doc/OnlineDocs/reference_guide/library_reference/expressions/building.rst new file mode 100644 index 00000000000..8ffcca9e310 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/expressions/building.rst @@ -0,0 +1,10 @@ + +Utilities to Build Expressions +============================== + +.. autofunction:: pyomo.core.util.prod +.. autofunction:: pyomo.core.util.quicksum +.. autofunction:: pyomo.core.util.sum_product +.. autodata:: pyomo.core.util.summation +.. autodata:: pyomo.core.util.dot_product + diff --git a/doc/OnlineDocs/reference_guide/library_reference/expressions/classes.rst b/doc/OnlineDocs/reference_guide/library_reference/expressions/classes.rst new file mode 100644 index 00000000000..4d448d2da6a --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/expressions/classes.rst @@ -0,0 +1,105 @@ +Core Classes +============ + +The following are the two core classes documented here: + + * :class:`NumericValue` + * :class:`NumericExpression` + +The remaining classes are the public classes for expressions, which +developers may need to know about. The methods for these classes are not +documented because they are described in the +:class:`NumericExpression` class. + +Sets with Expression Types +-------------------------- + +The following sets can be used to develop visitor patterns for +Pyomo expressions. + +.. autodata:: pyomo.core.expr.numvalue.native_numeric_types +.. autodata:: pyomo.core.expr.numvalue.native_types +.. autodata:: pyomo.core.expr.numvalue.nonpyomo_leaf_types + +NumericValue and NumericExpression +---------------------------------- + +.. autoclass:: pyomo.core.expr.numvalue.NumericValue + :members: + :special-members: + :private-members: + +.. autoclass:: pyomo.core.expr.NumericExpression + :members: + :show-inheritance: + :special-members: + :private-members: + +Other Public Classes +-------------------- + +.. autoclass:: pyomo.core.expr.NegationExpression + :members: + :show-inheritance: + :undoc-members: + :private-members: + +.. autoclass:: pyomo.core.expr.ExternalFunctionExpression + :members: + :show-inheritance: + :undoc-members: + :private-members: + +.. autoclass:: pyomo.core.expr.ProductExpression + :members: + :show-inheritance: + :undoc-members: + :private-members: + +.. autoclass:: pyomo.core.expr.DivisionExpression + :members: + :show-inheritance: + :undoc-members: + :private-members: + +.. autoclass:: pyomo.core.expr.InequalityExpression + :members: + :show-inheritance: + :undoc-members: + :private-members: + +.. autoclass:: pyomo.core.expr.EqualityExpression + :members: + :show-inheritance: + :undoc-members: + :private-members: + +.. autoclass:: pyomo.core.expr.SumExpression + :members: + :show-inheritance: + :undoc-members: + :private-members: + +.. autoclass:: pyomo.core.expr.GetItemExpression + :members: + :show-inheritance: + :undoc-members: + :private-members: + +.. autoclass:: pyomo.core.expr.Expr_ifExpression + :members: + :show-inheritance: + :undoc-members: + :private-members: + +.. autoclass:: pyomo.core.expr.UnaryFunctionExpression + :members: + :show-inheritance: + :undoc-members: + :private-members: + +.. autoclass:: pyomo.core.expr.AbsExpression + :members: + :show-inheritance: + :undoc-members: + :private-members: diff --git a/doc/OnlineDocs/reference_guide/library_reference/expressions/context_managers.rst b/doc/OnlineDocs/reference_guide/library_reference/expressions/context_managers.rst new file mode 100644 index 00000000000..ae6884d684f --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/expressions/context_managers.rst @@ -0,0 +1,10 @@ + +Context Managers +================ + +.. autoclass:: pyomo.core.expr.nonlinear_expression + :members: + +.. autoclass:: pyomo.core.expr.linear_expression + :members: + diff --git a/doc/OnlineDocs/reference_guide/library_reference/expressions/index.rst b/doc/OnlineDocs/reference_guide/library_reference/expressions/index.rst new file mode 100644 index 00000000000..388a7efa452 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/expressions/index.rst @@ -0,0 +1,13 @@ + +Expression Reference +==================== + +.. toctree:: + :maxdepth: 1 + + building.rst + managing.rst + context_managers.rst + classes.rst + visitors.rst + diff --git a/doc/OnlineDocs/reference_guide/library_reference/expressions/managing.rst b/doc/OnlineDocs/reference_guide/library_reference/expressions/managing.rst new file mode 100644 index 00000000000..369dd3aace1 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/expressions/managing.rst @@ -0,0 +1,19 @@ + +Utilities to Manage and Analyze Expressions +=========================================== + +Functions +~~~~~~~~~ + +.. autofunction:: pyomo.core.expr.expression_to_string +.. autofunction:: pyomo.core.expr.decompose_term +.. autofunction:: pyomo.core.expr.clone_expression +.. autofunction:: pyomo.core.expr.evaluate_expression +.. autofunction:: pyomo.core.expr.identify_components +.. autofunction:: pyomo.core.expr.identify_variables +.. autofunction:: pyomo.core.expr.differentiate + +Classes +~~~~~~~ + +.. autoclass:: pyomo.core.expr.symbol_map.SymbolMap diff --git a/doc/OnlineDocs/reference_guide/library_reference/expressions/visitors.rst b/doc/OnlineDocs/reference_guide/library_reference/expressions/visitors.rst new file mode 100644 index 00000000000..77cffe7905f --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/expressions/visitors.rst @@ -0,0 +1,20 @@ + +Visitor Classes +=============== + +.. autoclass:: pyomo.core.expr.StreamBasedExpressionVisitor + :members: + :inherited-members: + +.. autoclass:: pyomo.core.expr.SimpleExpressionVisitor + :members: + :inherited-members: + +.. autoclass:: pyomo.core.expr.ExpressionValueVisitor + :members: + :inherited-members: + +.. autoclass:: pyomo.core.expr.ExpressionReplacementVisitor + :members: + :inherited-members: + diff --git a/doc/OnlineDocs/reference_guide/library_reference/index.rst b/doc/OnlineDocs/reference_guide/library_reference/index.rst new file mode 100644 index 00000000000..35dd8d30307 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/index.rst @@ -0,0 +1,27 @@ +Library Reference +================= + +Pyomo is being increasingly used as a library to support Python +scripts. This section describes library APIs for key elements of +Pyomo's core library. This documentation serves as a reference for +both (1) Pyomo developers and (2) advanced users who are developing +Python scripts using Pyomo. + +.. toctree:: + :maxdepth: 1 + + common/index.rst + aml/index.rst + expressions/index.rst + solvers/index.rst + data/index.rst + APPSI (Auto-Persistent Pyomo Solver Interfaces) + +Pyomo is under active ongoing development. The following API +documentation describes *Beta* functionality. + +.. toctree:: + :maxdepth: 1 + + kernel/index.rst + diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/base.rst b/doc/OnlineDocs/reference_guide/library_reference/kernel/base.rst new file mode 100644 index 00000000000..47a2afef68d --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/base.rst @@ -0,0 +1,6 @@ +Base Object Storage Interface +============================= + +.. automodule:: pyomo.core.kernel.base + :show-inheritance: + :members: diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/block.rst b/doc/OnlineDocs/reference_guide/library_reference/kernel/block.rst new file mode 100644 index 00000000000..a61c12610eb --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/block.rst @@ -0,0 +1,26 @@ +Blocks +====== + +Summary +~~~~~~~ +.. autosummary:: + + pyomo.core.kernel.block.block + pyomo.core.kernel.block.block_tuple + pyomo.core.kernel.block.block_list + pyomo.core.kernel.block.block_dict + +Member Documentation +~~~~~~~~~~~~~~~~~~~~ +.. autoclass:: pyomo.core.kernel.block.block + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.block.block_tuple + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.block.block_list + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.block.block_dict + :show-inheritance: + :members: diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/conic.rst b/doc/OnlineDocs/reference_guide/library_reference/kernel/conic.rst new file mode 100644 index 00000000000..34552013623 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/conic.rst @@ -0,0 +1,42 @@ +Conic Constraints +================= + +A collection of classes that provide an easy and performant +way to declare conic constraints. The Mosek solver interface +includes special handling of these objects that recognizes +them as convex constraints. Other solver interfaces will +treat these objects as general nonlinear or quadratic +expressions, and may or may not have the ability to identify +their convexity. + +Summary +~~~~~~~ +.. autosummary:: + + pyomo.core.kernel.conic.quadratic + pyomo.core.kernel.conic.rotated_quadratic + pyomo.core.kernel.conic.primal_exponential + pyomo.core.kernel.conic.primal_power + pyomo.core.kernel.conic.dual_exponential + pyomo.core.kernel.conic.dual_power + +Member Documentation +~~~~~~~~~~~~~~~~~~~~ +.. autoclass:: pyomo.core.kernel.conic.quadratic + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.conic.rotated_quadratic + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.conic.primal_exponential + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.conic.primal_power + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.conic.dual_exponential + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.conic.dual_power + :show-inheritance: + :members: diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/constraint.rst b/doc/OnlineDocs/reference_guide/library_reference/kernel/constraint.rst new file mode 100644 index 00000000000..1645e57f9f2 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/constraint.rst @@ -0,0 +1,34 @@ +Constraints +=========== + +Summary +~~~~~~~ +.. autosummary:: + + pyomo.core.kernel.constraint.constraint + pyomo.core.kernel.constraint.linear_constraint + pyomo.core.kernel.constraint.constraint_tuple + pyomo.core.kernel.constraint.constraint_list + pyomo.core.kernel.constraint.constraint_dict + pyomo.core.kernel.matrix_constraint.matrix_constraint + +Member Documentation +~~~~~~~~~~~~~~~~~~~~ +.. autoclass:: pyomo.core.kernel.constraint.constraint + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.constraint.linear_constraint + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.constraint.constraint_tuple + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.constraint.constraint_list + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.constraint.constraint_dict + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.matrix_constraint.matrix_constraint + :show-inheritance: + :members: diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/dict_container.rst b/doc/OnlineDocs/reference_guide/library_reference/kernel/dict_container.rst new file mode 100644 index 00000000000..6e710fa76eb --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/dict_container.rst @@ -0,0 +1,8 @@ +Dict-like Object Storage +======================== + +.. autoclass:: pyomo.core.kernel.dict_container.DictContainer + :show-inheritance: + :members: + :inherited-members: + :special-members: diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/examples/aml_example.py b/doc/OnlineDocs/reference_guide/library_reference/kernel/examples/aml_example.py new file mode 100644 index 00000000000..a640b94cc76 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/examples/aml_example.py @@ -0,0 +1,193 @@ +# ___________________________________________________________________________ +# +# Pyomo: Python Optimization Modeling Objects +# Copyright (c) 2008-2024 +# National Technology and Engineering Solutions of Sandia, LLC +# Under the terms of Contract DE-NA0003525 with National Technology and +# Engineering Solutions of Sandia, LLC, the U.S. Government retains certain +# rights in this software. +# This software is distributed under the 3-clause BSD License. +# ___________________________________________________________________________ + +# @Import_Syntax +import pyomo.environ as aml + +# @Import_Syntax + +datafile = None + +# @AbstractModels +m = aml.AbstractModel() +# ... define model ... +instance = m.create_instance(datafile) + +# @AbstractModels +del datafile +del instance +# @ConcreteModels +m = aml.ConcreteModel() +m.b = aml.Block() +# @ConcreteModels + + +# @Sets_1 +m.s = aml.Set(initialize=[1, 2], ordered=True) +# @Sets_1 +# @Sets_2 +# [1,2,3] +m.q = aml.RangeSet(1, 3) +# @Sets_2 + + +# @Parameters_single +m.p = aml.Param(mutable=True, initialize=0) + + +# @Parameters_single +# @Parameters_dict +# pd[1] = 0, pd[2] = 1 +def pd_(m, i): + return m.s.ord(i) - 1 + + +m.pd = aml.Param(m.s, mutable=True, rule=pd_) +# @Parameters_dict +# @Parameters_list + +# +# No ParamList exists +# + + +# @Parameters_list + + +# @Variables_single +m.v = aml.Var(initialize=1.0, bounds=(1, 4)) + +# @Variables_single +# @Variables_dict +m.vd = aml.Var(m.s, bounds=(None, 9)) + + +# @Variables_dict +# @Variables_list +# used 1-based indexing +def vl_(m, i): + return (i, None) + + +m.vl = aml.VarList(bounds=vl_) +for j in m.q: + m.vl.add() +# @Variables_list + +# @Constraints_single +m.c = aml.Constraint(expr=sum(m.vd.values()) <= 9) + + +# @Constraints_single +# @Constraints_dict +def cd_(m, i, j): + return m.vd[i] == j + + +m.cd = aml.Constraint(m.s, m.q, rule=cd_) + + +# @Constraints_dict +# @Constraints_list +# uses 1-based indexing +m.cl = aml.ConstraintList() +for j in m.q: + m.cl.add(aml.inequality(-5, m.vl[j] - m.v, 5)) +# @Constraints_list + + +# @Expressions_single +m.e = aml.Expression(expr=-m.v) + + +# @Expressions_single +# @Expressions_dict +def ed_(m, i): + return -m.vd[i] + + +m.ed = aml.Expression(m.s, rule=ed_) +# @Expressions_dict +# @Expressions_list + +# +# No ExpressionList exists +# + +# @Expressions_list + + +# @Objectives_single +m.o = aml.Objective(expr=-m.v) + + +# @Objectives_single +# @Objectives_dict +def od_(m, i): + return -m.vd[i] + + +m.od = aml.Objective(m.s, rule=od_) +# @Objectives_dict +# @Objectives_list +# uses 1-based indexing +m.ol = aml.ObjectiveList() +for j in m.q: + m.ol.add(-m.vl[j]) + +# @Objectives_list + + +# @SOS_single +m.sos1 = aml.SOSConstraint(var=m.vl, level=1) +m.sos2 = aml.SOSConstraint(var=m.vd, level=2) + + +# @SOS_single +# @SOS_dict +def sd_(m, i): + if i == 1: + t = list(m.vd.values()) + elif i == 2: + t = list(m.vl.values()) + return t + + +m.sd = aml.SOSConstraint([1, 2], rule=sd_, level=1) +# @SOS_dict +# @SOS_list + +# +# No SOSConstraintList exists +# + +# @SOS_list + + +# @Suffix_single +m.dual = aml.Suffix(direction=aml.Suffix.IMPORT) +# @Suffix_single +# @Suffix_dict +# +# No SuffixDict exists +# +# @Suffix_dict + + +# @Piecewise_1d +breakpoints = [1, 2, 3, 4] +values = [1, 2, 1, 2] +m.f = aml.Var() +m.pw = aml.Piecewise(m.f, m.v, pw_pts=breakpoints, f_rule=values, pw_constr_type='EQ') +# @Piecewise_1d + + +m.pprint() diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/examples/conic.py b/doc/OnlineDocs/reference_guide/library_reference/kernel/examples/conic.py new file mode 100644 index 00000000000..0418d188722 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/examples/conic.py @@ -0,0 +1,33 @@ +# ___________________________________________________________________________ +# +# Pyomo: Python Optimization Modeling Objects +# Copyright (c) 2008-2024 +# National Technology and Engineering Solutions of Sandia, LLC +# Under the terms of Contract DE-NA0003525 with National Technology and +# Engineering Solutions of Sandia, LLC, the U.S. Government retains certain +# rights in this software. +# This software is distributed under the 3-clause BSD License. +# ___________________________________________________________________________ + +# @Class +import pyomo.kernel as pmo + +m = pmo.block() +m.x1 = pmo.variable(lb=0) +m.x2 = pmo.variable() +m.r = pmo.variable(lb=0) +m.q = pmo.conic.primal_exponential(x1=m.x1, x2=m.x2, r=m.r) +# @Class +del m + +# @Domain +import pyomo.kernel as pmo +import math + +m = pmo.block() +m.x = pmo.variable(lb=0) +m.y = pmo.variable(lb=0) +m.b = pmo.conic.primal_exponential.as_domain( + x1=math.sqrt(2) * m.x, x2=2.0, r=2 * (m.x + m.y) +) +# @Domain diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/examples/kernel_containers.py b/doc/OnlineDocs/reference_guide/library_reference/kernel/examples/kernel_containers.py new file mode 100644 index 00000000000..1931c6d9b56 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/examples/kernel_containers.py @@ -0,0 +1,18 @@ +# ___________________________________________________________________________ +# +# Pyomo: Python Optimization Modeling Objects +# Copyright (c) 2008-2024 +# National Technology and Engineering Solutions of Sandia, LLC +# Under the terms of Contract DE-NA0003525 with National Technology and +# Engineering Solutions of Sandia, LLC, the U.S. Government retains certain +# rights in this software. +# This software is distributed under the 3-clause BSD License. +# ___________________________________________________________________________ + +import pyomo.kernel + +# @all +vlist = pyomo.kernel.variable_list() +vlist.append(pyomo.kernel.variable_dict()) +vlist[0]['x'] = pyomo.kernel.variable() +# @all diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/examples/kernel_example.py b/doc/OnlineDocs/reference_guide/library_reference/kernel/examples/kernel_example.py new file mode 100644 index 00000000000..1f80bce9788 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/examples/kernel_example.py @@ -0,0 +1,174 @@ +# ___________________________________________________________________________ +# +# Pyomo: Python Optimization Modeling Objects +# Copyright (c) 2008-2024 +# National Technology and Engineering Solutions of Sandia, LLC +# Under the terms of Contract DE-NA0003525 with National Technology and +# Engineering Solutions of Sandia, LLC, the U.S. Government retains certain +# rights in this software. +# This software is distributed under the 3-clause BSD License. +# ___________________________________________________________________________ + +# @Import_Syntax +import pyomo.kernel as pmo + +# @Import_Syntax + +data = None + + +# @AbstractModels +def create(data): + instance = pmo.block() + # ... define instance ... + return instance + + +instance = create(data) +# @AbstractModels +del data +del instance +# @ConcreteModels +m = pmo.block() +m.b = pmo.block() +# @ConcreteModels + + +# @Sets_1 +m.s = [1, 2] + +# @Sets_1 +# @Sets_2 +# [0,1,2] +m.q = range(3) +# @Sets_2 + + +# @Parameters_single +m.p = pmo.parameter(0) + +# @Parameters_single +# @Parameters_dict +# pd[1] = 0, pd[2] = 1 +m.pd = pmo.parameter_dict() +for k, i in enumerate(m.s): + m.pd[i] = pmo.parameter(k) + + +# @Parameters_dict +# @Parameters_list +# uses 0-based indexing +# pl[0] = 0, pl[0] = 1, ... +m.pl = pmo.parameter_list() +for j in m.q: + m.pl.append(pmo.parameter(j)) +# @Parameters_list + + +# @Variables_single +m.v = pmo.variable(value=1, lb=1, ub=4) +# @Variables_single +# @Variables_dict +m.vd = pmo.variable_dict() +for i in m.s: + m.vd[i] = pmo.variable(ub=9) +# @Variables_dict +# @Variables_list +# used 0-based indexing +m.vl = pmo.variable_list() +for j in m.q: + m.vl.append(pmo.variable(lb=i)) + +# @Variables_list + + +# @Constraints_single +m.c = pmo.constraint(sum(m.vd.values()) <= 9) +# @Constraints_single +# @Constraints_dict +m.cd = pmo.constraint_dict() +for i in m.s: + for j in m.q: + m.cd[i, j] = pmo.constraint(body=m.vd[i], rhs=j) +# @Constraints_dict +# @Constraints_list +# uses 0-based indexing +m.cl = pmo.constraint_list() +for j in m.q: + m.cl.append(pmo.constraint(lb=-5, body=m.vl[j] - m.v, ub=5)) +# @Constraints_list + + +# @Expressions_single +m.e = pmo.expression(-m.v) +# @Expressions_single +# @Expressions_dict +m.ed = pmo.expression_dict() +for i in m.s: + m.ed[i] = pmo.expression(-m.vd[i]) +# @Expressions_dict +# @Expressions_list +# uses 0-based indexed +m.el = pmo.expression_list() +for j in m.q: + m.el.append(pmo.expression(-m.vl[j])) +# @Expressions_list + + +# @Objectives_single +m.o = pmo.objective(-m.v) +# @Objectives_single +# @Objectives_dict +m.od = pmo.objective_dict() +for i in m.s: + m.od[i] = pmo.objective(-m.vd[i]) +# @Objectives_dict +# @Objectives_list +# uses 0-based indexing +m.ol = pmo.objective_list() +for j in m.q: + m.ol.append(pmo.objective(-m.vl[j])) +# @Objectives_list + + +# @SOS_single +m.sos1 = pmo.sos1(m.vd.values()) + + +m.sos2 = pmo.sos2(m.vl) + + +# @SOS_single +# @SOS_dict +m.sd = pmo.sos_dict() +m.sd[1] = pmo.sos1(m.vd.values()) +m.sd[2] = pmo.sos1(m.vl) + + +# @SOS_dict +# @SOS_list +# uses 0-based indexing +m.sl = pmo.sos_list() +for i in m.s: + m.sl.append(pmo.sos1([m.vl[i], m.vd[i]])) +# @SOS_list + + +# @Suffix_single +m.dual = pmo.suffix(direction=pmo.suffix.IMPORT) +# @Suffix_single +# @Suffix_dict +m.suffixes = pmo.suffix_dict() +m.suffixes['dual'] = pmo.suffix(direction=pmo.suffix.IMPORT) +# @Suffix_dict + + +# @Piecewise_1d +breakpoints = [1, 2, 3, 4] +values = [1, 2, 1, 2] +m.f = pmo.variable() +m.pw = pmo.piecewise(breakpoints, values, input=m.v, output=m.f, bound='eq') +# @Piecewise_1d + + +pmo.pprint(m) diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/examples/kernel_solving.py b/doc/OnlineDocs/reference_guide/library_reference/kernel/examples/kernel_solving.py new file mode 100644 index 00000000000..13d7efc052a --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/examples/kernel_solving.py @@ -0,0 +1,22 @@ +# ___________________________________________________________________________ +# +# Pyomo: Python Optimization Modeling Objects +# Copyright (c) 2008-2024 +# National Technology and Engineering Solutions of Sandia, LLC +# Under the terms of Contract DE-NA0003525 with National Technology and +# Engineering Solutions of Sandia, LLC, the U.S. Government retains certain +# rights in this software. +# This software is distributed under the 3-clause BSD License. +# ___________________________________________________________________________ + +import pyomo.kernel as pmo + +model = pmo.block() +model.x = pmo.variable() +model.c = pmo.constraint(model.x >= 1) +model.o = pmo.objective(model.x) + +opt = pmo.SolverFactory("ipopt") + +result = opt.solve(model) +assert str(result.solver.termination_condition) == "optimal" diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/examples/kernel_subclassing.py b/doc/OnlineDocs/reference_guide/library_reference/kernel/examples/kernel_subclassing.py new file mode 100644 index 00000000000..d6e38f6b0e0 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/examples/kernel_subclassing.py @@ -0,0 +1,93 @@ +# ___________________________________________________________________________ +# +# Pyomo: Python Optimization Modeling Objects +# Copyright (c) 2008-2024 +# National Technology and Engineering Solutions of Sandia, LLC +# Under the terms of Contract DE-NA0003525 with National Technology and +# Engineering Solutions of Sandia, LLC, the U.S. Government retains certain +# rights in this software. +# This software is distributed under the 3-clause BSD License. +# ___________________________________________________________________________ + +import pyomo.kernel + + +# @Nonnegative +class NonNegativeVariable(pyomo.kernel.variable): + """A non-negative variable.""" + + __slots__ = () + + def __init__(self, **kwds): + if 'lb' not in kwds: + kwds['lb'] = 0 + if kwds['lb'] < 0: + raise ValueError("lower bound must be non-negative") + super(NonNegativeVariable, self).__init__(**kwds) + + # + # restrict assignments to x.lb to non-negative numbers + # + @property + def lb(self): + # calls the base class property getter + return pyomo.kernel.variable.lb.fget(self) + + @lb.setter + def lb(self, lb): + if lb < 0: + raise ValueError("lower bound must be non-negative") + # calls the base class property setter + pyomo.kernel.variable.lb.fset(self, lb) + + +# @Nonnegative + + +# @Point +class Point(pyomo.kernel.variable_tuple): + """A 3-dimensional point in Cartesian space with the + z coordinate restricted to non-negative values.""" + + __slots__ = () + + def __init__(self): + super(Point, self).__init__( + (pyomo.kernel.variable(), pyomo.kernel.variable(), NonNegativeVariable()) + ) + + @property + def x(self): + return self[0] + + @property + def y(self): + return self[1] + + @property + def z(self): + return self[2] + + +# @Point + + +# @SOC +class SOC(pyomo.kernel.constraint): + """A convex second-order cone constraint""" + + __slots__ = () + + def __init__(self, point): + assert isinstance(point.z, NonNegativeVariable) + super(SOC, self).__init__(point.x**2 + point.y**2 <= point.z**2) + + +# @SOC + +# @Usage +model = pyomo.kernel.block() +model.p = Point() +model.p.z.lb = 0 +model.soc = SOC(model.p) +# @Usage diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/examples/transformer.py b/doc/OnlineDocs/reference_guide/library_reference/kernel/examples/transformer.py new file mode 100644 index 00000000000..43a1d0675bf --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/examples/transformer.py @@ -0,0 +1,66 @@ +# ___________________________________________________________________________ +# +# Pyomo: Python Optimization Modeling Objects +# Copyright (c) 2008-2024 +# National Technology and Engineering Solutions of Sandia, LLC +# Under the terms of Contract DE-NA0003525 with National Technology and +# Engineering Solutions of Sandia, LLC, the U.S. Government retains certain +# rights in this software. +# This software is distributed under the 3-clause BSD License. +# ___________________________________________________________________________ + +import pyomo.environ +import pyomo.kernel + +import pympler.asizeof + + +def _fmt(num, suffix='B'): + """format memory output""" + if num is None: + return "" + for unit in ['', 'K', 'M', 'G', 'T', 'P', 'E', 'Z']: + if abs(num) < 1000.0: + return "%3.1f %s%s" % (num, unit, suffix) + num /= 1000.0 + return "%.1f %s%s" % (num, 'Yi', suffix) + + +# @kernel +class Transformer(pyomo.kernel.block): + def __init__(self): + super(Transformer, self).__init__() + self._a = pyomo.kernel.parameter() + self._v_in = pyomo.kernel.expression() + self._v_out = pyomo.kernel.expression() + self._c = pyomo.kernel.constraint(self._a * self._v_out == self._v_in) + + def set_ratio(self, a): + assert a > 0 + self._a.value = a + + def connect_v_in(self, v_in): + self._v_in.expr = v_in + + def connect_v_out(self, v_out): + self._v_out.expr = v_out + + +# @kernel + +print("Memory:", _fmt(pympler.asizeof.asizeof(Transformer()))) + + +# @aml +def Transformer(): + b = pyomo.environ.Block(concrete=True) + b._a = pyomo.environ.Param(mutable=True) + b._v_in = pyomo.environ.Expression() + b._v_out = pyomo.environ.Expression() + b._c = pyomo.environ.Constraint(expr=b._a * b._v_out == b._v_in) + return b + + +# @aml + +print("Memory:", _fmt(pympler.asizeof.asizeof(Transformer()))) diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/expression.rst b/doc/OnlineDocs/reference_guide/library_reference/kernel/expression.rst new file mode 100644 index 00000000000..b2d4c2d1b35 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/expression.rst @@ -0,0 +1,26 @@ +Expressions +=========== + +Summary +~~~~~~~ +.. autosummary:: + + pyomo.core.kernel.expression.expression + pyomo.core.kernel.expression.expression_tuple + pyomo.core.kernel.expression.expression_list + pyomo.core.kernel.expression.expression_dict + +Member Documentation +~~~~~~~~~~~~~~~~~~~~ +.. autoclass:: pyomo.core.kernel.expression.expression + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.expression.expression_tuple + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.expression.expression_list + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.expression.expression_dict + :show-inheritance: + :members: diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/heterogeneous_container.rst b/doc/OnlineDocs/reference_guide/library_reference/kernel/heterogeneous_container.rst new file mode 100644 index 00000000000..74dad1d754e --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/heterogeneous_container.rst @@ -0,0 +1,6 @@ +Heterogeneous Object Containers +=============================== + +.. automodule:: pyomo.core.kernel.heterogeneous_container + :show-inheritance: + :members: diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/homogeneous_container.rst b/doc/OnlineDocs/reference_guide/library_reference/kernel/homogeneous_container.rst new file mode 100644 index 00000000000..b722e026dc1 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/homogeneous_container.rst @@ -0,0 +1,6 @@ +Homogeneous Object Containers +============================= + +.. automodule:: pyomo.core.kernel.homogeneous_container + :show-inheritance: + :members: diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/index.rst b/doc/OnlineDocs/reference_guide/library_reference/kernel/index.rst new file mode 100644 index 00000000000..70c3cc715a9 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/index.rst @@ -0,0 +1,210 @@ +.. role:: python(code) + :language: python + +.. warning:: + + The :python:`pyomo.kernel` API is still in the beta phase of development. It is fully tested and functional; however, the interface may change as it becomes further integrated with the rest of Pyomo. + +.. warning:: + + Models built with :python:`pyomo.kernel` components are not yet compatible with pyomo extension modules (e.g., :python:`PySP`, :python:`pyomo.dae`, :python:`pyomo.gdp`). + +The Kernel Library +================== + +The :python:`pyomo.kernel` library is an experimental modeling interface designed to provide a better experience for users doing concrete modeling and advanced application development with Pyomo. It includes the basic set of :ref:`modeling components ` necessary to build algebraic models, which have been redesigned from the ground up to make it easier for users to customize and extend. For a side-by-side comparison of :python:`pyomo.kernel` and :python:`pyomo.environ` syntax, visit the link below. + +.. toctree:: + + syntax_comparison.rst + + +Models built from :python:`pyomo.kernel` components are fully compatible with the standard solver interfaces included with Pyomo. A minimal example script that defines and solves a model is shown below. + +.. literalinclude:: examples/kernel_solving.py + :language: python + +Notable Improvements +-------------------- + +More Control of Model Structure +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Containers in :python:`pyomo.kernel` are analogous to indexed components in :python:`pyomo.environ`. However, :python:`pyomo.kernel` containers allow for additional layers of structure as they can be nested within each other as long as they have compatible categories. The following example shows this using :python:`pyomo.kernel.variable` containers. + +.. literalinclude:: examples/kernel_containers_all.spy + :language: python + +As the next section will show, the standard modeling component containers are also compatible with user-defined classes that derive from the existing modeling components. + +Sub-Classing +^^^^^^^^^^^^ + +The existing components and containers in :python:`pyomo.kernel` are designed to make sub-classing easy. User-defined classes that derive from the standard modeling components and containers in :python:`pyomo.kernel` are compatible with existing containers of the same component category. As an example, in the following code we see that the :python:`pyomo.kernel.block_list` container can store both :python:`pyomo.kernel.block` objects as well as a user-defined :python:`Widget` object that derives from :python:`pyomo.kernel.block`. The :python:`Widget` object can also be placed on another block object as an attribute and treated itself as a block. + +.. code-block:: python + + class Widget(pyomo.kernel.block): + ... + + model = pyomo.kernel.block() + model.blist = pyomo.kernel.block_list() + model.blist.append(Widget()) + model.blist.append(pyomo.kernel.block()) + model.w = Widget() + model.w.x = pyomo.kernel.variable() + +The next series of examples goes into more detail on how to implement derived components or containers. + +The following code block shows a class definition for a non-negative variable, starting from :python:`pyomo.kernel.variable` as a base class. + +.. literalinclude:: examples/kernel_subclassing_Nonnegative.spy + :language: python + +The :python:`NonNegativeVariable` class prevents negative values from being stored into its lower bound during initialization or later on through assignment statements (e.g, :python:`x.lb = -1` fails). Note that the :python:`__slots__ == ()` line at the beginning of the class definition is optional, but it is recommended if no additional data members are necessary as it reduces the memory requirement of the new variable type. + +The next code block defines a custom variable container called :python:`Point` that represents a 3-dimensional point in Cartesian space. The new type derives from the :python:`pyomo.kernel.variable_tuple` container and uses the :python:`NonNegativeVariable` type we defined previously in the `z` coordinate. + +.. literalinclude:: examples/kernel_subclassing_Point.spy + :language: python + +The :python:`Point` class can be treated like a tuple storing three variables, and it can be placed inside of other variable containers or added as attributes to blocks. The property methods included in the class definition provide an additional syntax for accessing the three variables it stores, as the next code example will show. + +The following code defines a class for building a convex second-order cone constraint from a :python:`Point` object. It derives from the :python:`pyomo.kernel.constraint` class, overriding the constructor to build the constraint expression and utilizing the property methods on the point class to increase readability. + +.. literalinclude:: examples/kernel_subclassing_SOC.spy + :language: python + + +Reduced Memory Usage +^^^^^^^^^^^^^^^^^^^^ + +The :python:`pyomo.kernel` library offers significant opportunities to reduce memory requirements for highly structured models. The situation where this is most apparent is when expressing a model in terms of many small blocks consisting of singleton components. As an example, consider expressing a model consisting of a large number of voltage transformers. One option for doing so might be to define a `Transformer` component as a subclass of :python:`pyomo.kernel.block`. The example below defines such a component, including some helper methods for connecting input and output voltage variables and updating the transformer ratio. + +.. literalinclude:: examples/transformer_kernel.spy + :language: python + +A simplified version of this using :python:`pyomo.environ` components might look like what is below. + +.. literalinclude:: examples/transformer_aml.spy + :language: python + +The transformer expressed using :python:`pyomo.kernel` components requires roughly 2 KB of memory, whereas the :python:`pyomo.environ` version requires roughly 8.4 KB of memory (an increase of more than 4x). Additionally, the :python:`pyomo.kernel` transformer is fully compatible with all existing :python:`pyomo.kernel` block containers. + +Direct Support For Conic Constraints with Mosek +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Pyomo 5.6.3 introduced support into :python:`pyomo.kernel` +for six conic constraint forms that are directly recognized +by the new Mosek solver interface. These are + + - :python:`conic.quadratic`: + + :math:`\;\;\sum_{i}x_i^2 \leq r^2,\;\;r\geq 0` + + - :python:`conic.rotated_quadratic`: + + :math:`\;\;\sum_{i}x_i^2 \leq 2 r_1 r_2,\;\;r_1,r_2\geq 0` + + - :python:`conic.primal_exponential`: + + :math:`\;\;x_1\exp(x_2/x_1) \leq r,\;\;x_1,r\geq 0` + + - :python:`conic.primal_power` (:math:`\alpha` is a constant): + + :math:`\;\;||x||_2 \leq r_1^{\alpha} r_2^{1-\alpha},\;\;r_1,r_2\geq 0,\;0 < \alpha < 1` + + - :python:`conic.dual_exponential`: + + :math:`\;\;-x_2\exp((x_1/x_2)-1) \leq r,\;\;x_2\leq0,\;r\geq 0` + + - :python:`conic.dual_power` (:math:`\alpha` is a constant): + + :math:`\;\;||x||_2 \leq (r_1/\alpha)^{\alpha} (r_2/(1-\alpha))^{1-\alpha},\;\;r_1,r_2\geq 0,\;0 < \alpha < 1` + +Other solver interfaces will treat these objects as general +nonlinear or quadratic constraints, and may or may not have +the ability to identify their convexity. For instance, +Gurobi will recognize the expressions produced by the +:python:`quadratic` and :python:`rotated_quadratic` objects +as representing convex domains as long as the variables +involved satisfy the convexity conditions. However, other +solvers may not include this functionality. + +Each of these conic constraint classes are of the same +category type as standard :python:`pyomo.kernel.constraint` +object, and, thus, are directly supported by the standard +constraint containers (:python:`constraint_tuple`, +:python:`constraint_list`, :python:`constraint_dict`). + +Each conic constraint class supports two methods of +instantiation. The first method is to directly instantiate a +conic constraint object, providing all necessary input +variables: + +.. literalinclude:: examples/conic_Class.spy + :language: python + +This method may be limiting if utilizing the Mosek solver as +the user must ensure that additional conic constraints do +not use variables that are directly involved in any existing +conic constraints (this is a limitation the Mosek solver +itself). + +To overcome this limitation, and to provide a more general +way of defining conic domains, each conic constraint class +provides the :python:`as_domain` class method. This +alternate constructor has the same argument signature as the +class, but in place of each variable, one can optionally +provide a constant, a linear expression, or +:python:`None`. The :python:`as_domain` class method returns +a :python:`block` object that includes the core conic +constraint, auxiliary variables used to express the conic +constraint, as well as auxiliary constraints that link the +inputs (that are not :python:`None`) to the auxiliary +variables. Example: + +.. literalinclude:: examples/conic_Domain.spy + :language: python + +Reference +--------- + +.. _kernel_modeling_components: + +Modeling Components: +^^^^^^^^^^^^^^^^^^^^ + +.. toctree:: + :maxdepth: 1 + + block.rst + variable.rst + constraint.rst + parameter.rst + objective.rst + expression.rst + sos.rst + suffix.rst + piecewise/index.rst + conic.rst + +Base API: +^^^^^^^^^ + +.. toctree:: + :maxdepth: 1 + + base.rst + homogeneous_container.rst + heterogeneous_container.rst + +Containers: +^^^^^^^^^^^ + +.. toctree:: + :maxdepth: 1 + + tuple_container.rst + list_container.rst + dict_container.rst diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/list_container.rst b/doc/OnlineDocs/reference_guide/library_reference/kernel/list_container.rst new file mode 100644 index 00000000000..b82c6d9c6f0 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/list_container.rst @@ -0,0 +1,8 @@ +List-like Object Storage +======================== + +.. autoclass:: pyomo.core.kernel.list_container.ListContainer + :show-inheritance: + :members: + :inherited-members: + :special-members: diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/objective.rst b/doc/OnlineDocs/reference_guide/library_reference/kernel/objective.rst new file mode 100644 index 00000000000..77f26d2f441 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/objective.rst @@ -0,0 +1,26 @@ +Objectives +========== + +Summary +~~~~~~~ +.. autosummary:: + + pyomo.core.kernel.objective.objective + pyomo.core.kernel.objective.objective_tuple + pyomo.core.kernel.objective.objective_list + pyomo.core.kernel.objective.objective_dict + +Member Documentation +~~~~~~~~~~~~~~~~~~~~ +.. autoclass:: pyomo.core.kernel.objective.objective + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.objective.objective_tuple + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.objective.objective_list + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.objective.objective_dict + :show-inheritance: + :members: diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/parameter.rst b/doc/OnlineDocs/reference_guide/library_reference/kernel/parameter.rst new file mode 100644 index 00000000000..212b0cb125e --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/parameter.rst @@ -0,0 +1,30 @@ +Parameters +========== + +Summary +~~~~~~~ +.. autosummary:: + + pyomo.core.kernel.parameter.parameter + pyomo.core.kernel.parameter.functional_value + pyomo.core.kernel.parameter.parameter_tuple + pyomo.core.kernel.parameter.parameter_list + pyomo.core.kernel.parameter.parameter_dict + +Member Documentation +~~~~~~~~~~~~~~~~~~~~ +.. autoclass:: pyomo.core.kernel.parameter.parameter + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.parameter.functional_value + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.parameter.parameter_tuple + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.parameter.parameter_list + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.parameter.parameter_dict + :show-inheritance: + :members: diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/piecewise/index.rst b/doc/OnlineDocs/reference_guide/library_reference/kernel/piecewise/index.rst new file mode 100644 index 00000000000..2255d0fe116 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/piecewise/index.rst @@ -0,0 +1,11 @@ +Piecewise Function Library +========================== + +Modules + +.. toctree:: + :maxdepth: 1 + + piecewise.rst + piecewise_nd.rst + util.rst diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/piecewise/piecewise.rst b/doc/OnlineDocs/reference_guide/library_reference/kernel/piecewise/piecewise.rst new file mode 100644 index 00000000000..25c250d6559 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/piecewise/piecewise.rst @@ -0,0 +1,53 @@ +Single-variate Piecewise Functions +================================== + +Summary +~~~~~~~ +.. autosummary:: + pyomo.core.kernel.piecewise_library.transforms.piecewise + pyomo.core.kernel.piecewise_library.transforms.PiecewiseLinearFunction + pyomo.core.kernel.piecewise_library.transforms.TransformedPiecewiseLinearFunction + pyomo.core.kernel.piecewise_library.transforms.piecewise_convex + pyomo.core.kernel.piecewise_library.transforms.piecewise_sos2 + pyomo.core.kernel.piecewise_library.transforms.piecewise_dcc + pyomo.core.kernel.piecewise_library.transforms.piecewise_cc + pyomo.core.kernel.piecewise_library.transforms.piecewise_mc + pyomo.core.kernel.piecewise_library.transforms.piecewise_inc + pyomo.core.kernel.piecewise_library.transforms.piecewise_dlog + pyomo.core.kernel.piecewise_library.transforms.piecewise_log + +Member Documentation +~~~~~~~~~~~~~~~~~~~~ +.. autofunction:: pyomo.core.kernel.piecewise_library.transforms.piecewise +.. autoclass:: pyomo.core.kernel.piecewise_library.transforms.PiecewiseLinearFunction + :show-inheritance: + :special-members: __call__ + :members: +.. autoclass:: pyomo.core.kernel.piecewise_library.transforms.TransformedPiecewiseLinearFunction + :show-inheritance: + :special-members: __call__ + :members: +.. autoclass:: pyomo.core.kernel.piecewise_library.transforms.piecewise_convex + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.piecewise_library.transforms.piecewise_sos2 + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.piecewise_library.transforms.piecewise_dcc + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.piecewise_library.transforms.piecewise_cc + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.piecewise_library.transforms.piecewise_mc + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.piecewise_library.transforms.piecewise_inc + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.piecewise_library.transforms.piecewise_dlog + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.piecewise_library.transforms.piecewise_log + :show-inheritance: + :members: diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/piecewise/piecewise_nd.rst b/doc/OnlineDocs/reference_guide/library_reference/kernel/piecewise/piecewise_nd.rst new file mode 100644 index 00000000000..e5c71a4ec15 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/piecewise/piecewise_nd.rst @@ -0,0 +1,25 @@ +Multi-variate Piecewise Functions +================================= + +Summary +~~~~~~~ +.. autosummary:: + pyomo.core.kernel.piecewise_library.transforms_nd.piecewise_nd + pyomo.core.kernel.piecewise_library.transforms_nd.PiecewiseLinearFunctionND + pyomo.core.kernel.piecewise_library.transforms_nd.TransformedPiecewiseLinearFunctionND + pyomo.core.kernel.piecewise_library.transforms_nd.piecewise_nd_cc + +Member Documentation +~~~~~~~~~~~~~~~~~~~~ +.. autofunction:: pyomo.core.kernel.piecewise_library.transforms_nd.piecewise_nd +.. autoclass:: pyomo.core.kernel.piecewise_library.transforms_nd.PiecewiseLinearFunctionND + :show-inheritance: + :special-members: __call__ + :members: +.. autoclass:: pyomo.core.kernel.piecewise_library.transforms_nd.TransformedPiecewiseLinearFunctionND + :show-inheritance: + :special-members: __call__ + :members: +.. autoclass:: pyomo.core.kernel.piecewise_library.transforms_nd.piecewise_nd_cc + :show-inheritance: + :members: diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/piecewise/util.rst b/doc/OnlineDocs/reference_guide/library_reference/kernel/piecewise/util.rst new file mode 100644 index 00000000000..52b7b1de8f7 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/piecewise/util.rst @@ -0,0 +1,6 @@ +Utilities for Piecewise Functions +================================= + +.. automodule:: pyomo.core.kernel.piecewise_library.util + :show-inheritance: + :members: diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/sos.rst b/doc/OnlineDocs/reference_guide/library_reference/kernel/sos.rst new file mode 100644 index 00000000000..0f3f5fedf54 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/sos.rst @@ -0,0 +1,30 @@ +Special Ordered Sets +==================== + +Summary +~~~~~~~ +.. autosummary:: + + pyomo.core.kernel.sos.sos + pyomo.core.kernel.sos.sos1 + pyomo.core.kernel.sos.sos2 + pyomo.core.kernel.sos.sos_tuple + pyomo.core.kernel.sos.sos_list + pyomo.core.kernel.sos.sos_dict + +Member Documentation +~~~~~~~~~~~~~~~~~~~~ +.. autoclass:: pyomo.core.kernel.sos.sos + :show-inheritance: + :members: +.. autofunction:: pyomo.core.kernel.sos.sos1 +.. autofunction:: pyomo.core.kernel.sos.sos2 +.. autoclass:: pyomo.core.kernel.sos.sos_tuple + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.sos.sos_list + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.sos.sos_dict + :show-inheritance: + :members: diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/suffix.rst b/doc/OnlineDocs/reference_guide/library_reference/kernel/suffix.rst new file mode 100644 index 00000000000..d833f56daa9 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/suffix.rst @@ -0,0 +1,6 @@ +Suffixes +======== + +.. automodule:: pyomo.core.kernel.suffix + :show-inheritance: + :members: diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/syntax_comparison.rst b/doc/OnlineDocs/reference_guide/library_reference/kernel/syntax_comparison.rst new file mode 100644 index 00000000000..71c739214e3 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/syntax_comparison.rst @@ -0,0 +1,133 @@ +.. _kernel_syntax_comparison: + +Syntax Comparison Table (pyomo.kernel vs pyomo.environ) +======================================================= + +.. list-table:: + :header-rows: 1 + :align: center + + * - + - **pyomo.kernel** + - **pyomo.environ** + + * - **Import** + - .. literalinclude:: examples/kernel_example_Import_Syntax.spy + :language: python + - .. literalinclude:: examples/aml_example_Import_Syntax.spy + :language: python + * - **Model** [#models_fn]_ + - .. literalinclude:: examples/kernel_example_AbstractModels.spy + :language: python + .. literalinclude:: examples/kernel_example_ConcreteModels.spy + :language: python + - .. literalinclude:: examples/aml_example_AbstractModels.spy + :language: python + .. literalinclude:: examples/aml_example_ConcreteModels.spy + :language: python + * - **Set** [#sets_fn]_ + - .. literalinclude:: examples/kernel_example_Sets_1.spy + :language: python + .. literalinclude:: examples/kernel_example_Sets_2.spy + :language: python + - .. literalinclude:: examples/aml_example_Sets_1.spy + :language: python + .. literalinclude:: examples/aml_example_Sets_2.spy + :language: python + * - **Parameter** [#parameters_fn]_ + - .. literalinclude:: examples/kernel_example_Parameters_single.spy + :language: python + .. literalinclude:: examples/kernel_example_Parameters_dict.spy + :language: python + .. literalinclude:: examples/kernel_example_Parameters_list.spy + :language: python + - .. literalinclude:: examples/aml_example_Parameters_single.spy + :language: python + .. literalinclude:: examples/aml_example_Parameters_dict.spy + :language: python + .. literalinclude:: examples/aml_example_Parameters_list.spy + :language: python + * - **Variable** + - .. literalinclude:: examples/kernel_example_Variables_single.spy + :language: python + .. literalinclude:: examples/kernel_example_Variables_dict.spy + :language: python + .. literalinclude:: examples/kernel_example_Variables_list.spy + :language: python + - .. literalinclude:: examples/aml_example_Variables_single.spy + :language: python + .. literalinclude:: examples/aml_example_Variables_dict.spy + :language: python + .. literalinclude:: examples/aml_example_Variables_list.spy + :language: python + * - **Constraint** + - .. literalinclude:: examples/kernel_example_Constraints_single.spy + :language: python + .. literalinclude:: examples/kernel_example_Constraints_dict.spy + :language: python + .. literalinclude:: examples/kernel_example_Constraints_list.spy + :language: python + - .. literalinclude:: examples/aml_example_Constraints_single.spy + :language: python + .. literalinclude:: examples/aml_example_Constraints_dict.spy + :language: python + .. literalinclude:: examples/aml_example_Constraints_list.spy + :language: python + * - **Expression** + - .. literalinclude:: examples/kernel_example_Expressions_single.spy + :language: python + .. literalinclude:: examples/kernel_example_Expressions_dict.spy + :language: python + .. literalinclude:: examples/kernel_example_Expressions_list.spy + :language: python + - .. literalinclude:: examples/aml_example_Expressions_single.spy + :language: python + .. literalinclude:: examples/aml_example_Expressions_dict.spy + :language: python + .. literalinclude:: examples/aml_example_Expressions_list.spy + :language: python + * - **Objective** + - .. literalinclude:: examples/kernel_example_Objectives_single.spy + :language: python + .. literalinclude:: examples/kernel_example_Objectives_dict.spy + :language: python + .. literalinclude:: examples/kernel_example_Objectives_list.spy + :language: python + - .. literalinclude:: examples/aml_example_Objectives_single.spy + :language: python + .. literalinclude:: examples/aml_example_Objectives_dict.spy + :language: python + .. literalinclude:: examples/aml_example_Objectives_list.spy + :language: python + * - **SOS** [#sos_fn]_ + - .. literalinclude:: examples/kernel_example_SOS_single.spy + :language: python + .. literalinclude:: examples/kernel_example_SOS_dict.spy + :language: python + .. literalinclude:: examples/kernel_example_SOS_list.spy + :language: python + - .. literalinclude:: examples/aml_example_SOS_single.spy + :language: python + .. literalinclude:: examples/aml_example_SOS_dict.spy + :language: python + .. literalinclude:: examples/aml_example_SOS_list.spy + :language: python + * - **Suffix** + - .. literalinclude:: examples/kernel_example_Suffix_single.spy + :language: python + .. literalinclude:: examples/kernel_example_Suffix_dict.spy + :language: python + - .. literalinclude:: examples/aml_example_Suffix_single.spy + :language: python + .. literalinclude:: examples/aml_example_Suffix_dict.spy + :language: python + * - **Piecewise** [#pw_fn]_ + - .. literalinclude:: examples/kernel_example_Piecewise_1d.spy + :language: python + - .. literalinclude:: examples/aml_example_Piecewise_1d.spy + :language: python +.. [#models_fn] :python:`pyomo.kernel` does not include an alternative to the :python:`AbstractModel` component from :python:`pyomo.environ`. All data necessary to build a model must be imported by the user. +.. [#sets_fn] :python:`pyomo.kernel` does not include an alternative to the Pyomo :python:`Set` component from :python:`pyomo.environ`. +.. [#parameters_fn] :python:`pyomo.kernel.parameter` objects are always mutable. +.. [#sos_fn] Special Ordered Sets +.. [#pw_fn] Both :python:`pyomo.kernel.piecewise` and :python:`pyomo.kernel.piecewise_nd` create objects that are sub-classes of :python:`pyomo.kernel.block`. Thus, these objects can be stored in containers such as :python:`pyomo.kernel.block_dict` and :python:`pyomo.kernel.block_list`. diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/tuple_container.rst b/doc/OnlineDocs/reference_guide/library_reference/kernel/tuple_container.rst new file mode 100644 index 00000000000..8a2798753c4 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/tuple_container.rst @@ -0,0 +1,8 @@ +Tuple-like Object Storage +========================= + +.. autoclass:: pyomo.core.kernel.tuple_container.TupleContainer + :show-inheritance: + :members: + :inherited-members: + :special-members: diff --git a/doc/OnlineDocs/reference_guide/library_reference/kernel/variable.rst b/doc/OnlineDocs/reference_guide/library_reference/kernel/variable.rst new file mode 100644 index 00000000000..f743cee4003 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/kernel/variable.rst @@ -0,0 +1,26 @@ +Variables +========= + +Summary +~~~~~~~ +.. autosummary:: + + pyomo.core.kernel.variable.variable + pyomo.core.kernel.variable.variable_tuple + pyomo.core.kernel.variable.variable_list + pyomo.core.kernel.variable.variable_dict + +Member Documentation +~~~~~~~~~~~~~~~~~~~~ +.. autoclass:: pyomo.core.kernel.variable.variable + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.variable.variable_tuple + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.variable.variable_list + :show-inheritance: + :members: +.. autoclass:: pyomo.core.kernel.variable.variable_dict + :show-inheritance: + :members: diff --git a/doc/OnlineDocs/reference_guide/library_reference/solvers/cplex_persistent.rst b/doc/OnlineDocs/reference_guide/library_reference/solvers/cplex_persistent.rst new file mode 100644 index 00000000000..ee28ecda5e5 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/solvers/cplex_persistent.rst @@ -0,0 +1,7 @@ +CPLEXPersistent +================ + +.. autoclass:: pyomo.solvers.plugins.solvers.cplex_persistent.CPLEXPersistent + :members: + :inherited-members: + :show-inheritance: diff --git a/doc/OnlineDocs/reference_guide/library_reference/solvers/gams.rst b/doc/OnlineDocs/reference_guide/library_reference/solvers/gams.rst new file mode 100644 index 00000000000..f36de5d9e01 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/solvers/gams.rst @@ -0,0 +1,43 @@ +GAMS +==== + +.. currentmodule:: pyomo.solvers.plugins.solvers.GAMS + +GAMSShell Solver +---------------- + +.. autosummary:: + + GAMSShell.available + GAMSShell.executable + GAMSShell.solve + GAMSShell.version + GAMSShell.warm_start_capable + +.. autoclass:: GAMSShell + :members: + +GAMSDirect Solver +----------------- + +.. autosummary:: + + GAMSDirect.available + GAMSDirect.solve + GAMSDirect.version + GAMSDirect.warm_start_capable + +.. autoclass:: GAMSDirect + :members: + +.. currentmodule:: pyomo.repn.plugins.gams_writer + +GAMS Writer +----------- + +This class is most commonly accessed and called upon via +model.write("filename.gms", ...), but is also utilized +by the GAMS solver interfaces. + +.. autoclass:: ProblemWriter_gams + :members: __call__ diff --git a/doc/OnlineDocs/reference_guide/library_reference/solvers/gurobi_direct.rst b/doc/OnlineDocs/reference_guide/library_reference/solvers/gurobi_direct.rst new file mode 100644 index 00000000000..21cb79e5531 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/solvers/gurobi_direct.rst @@ -0,0 +1,18 @@ +GurobiDirect +============ + +.. currentmodule:: pyomo.solvers.plugins.solvers.gurobi_direct + +Methods +------- + +.. autosummary:: + + GurobiDirect.available + GurobiDirect.close + GurobiDirect.close_global + GurobiDirect.solve + GurobiDirect.version + +.. autoclass:: GurobiDirect + :members: available, close, close_global, solve, version diff --git a/doc/OnlineDocs/reference_guide/library_reference/solvers/gurobi_persistent.rst b/doc/OnlineDocs/reference_guide/library_reference/solvers/gurobi_persistent.rst new file mode 100644 index 00000000000..2472599c1ed --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/solvers/gurobi_persistent.rst @@ -0,0 +1,39 @@ +GurobiPersistent +================ + +.. currentmodule:: pyomo.solvers.plugins.solvers.gurobi_persistent + +Methods +------- + +.. autosummary:: + + GurobiPersistent.add_block + GurobiPersistent.add_constraint + GurobiPersistent.set_objective + GurobiPersistent.add_sos_constraint + GurobiPersistent.add_var + GurobiPersistent.available + GurobiPersistent.has_capability + GurobiPersistent.has_instance + GurobiPersistent.load_vars + GurobiPersistent.problem_format + GurobiPersistent.remove_block + GurobiPersistent.remove_constraint + GurobiPersistent.remove_sos_constraint + GurobiPersistent.remove_var + GurobiPersistent.reset + GurobiPersistent.results_format + GurobiPersistent.set_callback + GurobiPersistent.set_instance + GurobiPersistent.set_problem_format + GurobiPersistent.set_results_format + GurobiPersistent.solve + GurobiPersistent.update_var + GurobiPersistent.version + GurobiPersistent.write + +.. autoclass:: GurobiPersistent + :members: + :inherited-members: + :show-inheritance: diff --git a/doc/OnlineDocs/reference_guide/library_reference/solvers/index.rst b/doc/OnlineDocs/reference_guide/library_reference/solvers/index.rst new file mode 100644 index 00000000000..400032df076 --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/solvers/index.rst @@ -0,0 +1,11 @@ +Solver Interfaces +================= + +.. toctree:: + :maxdepth: 1 + + gams.rst + cplex_persistent.rst + gurobi_direct.rst + gurobi_persistent.rst + xpress_persistent.rst diff --git a/doc/OnlineDocs/reference_guide/library_reference/solvers/xpress_persistent.rst b/doc/OnlineDocs/reference_guide/library_reference/solvers/xpress_persistent.rst new file mode 100644 index 00000000000..2a98b4a09db --- /dev/null +++ b/doc/OnlineDocs/reference_guide/library_reference/solvers/xpress_persistent.rst @@ -0,0 +1,7 @@ +XpressPersistent +================ + +.. autoclass:: pyomo.solvers.plugins.solvers.xpress_persistent.XpressPersistent + :members: + :inherited-members: + :show-inheritance: diff --git a/doc/OnlineDocs/related_packages.rst b/doc/OnlineDocs/related_packages.rst new file mode 100644 index 00000000000..f32c726e9d6 --- /dev/null +++ b/doc/OnlineDocs/related_packages.rst @@ -0,0 +1,65 @@ +Related Packages +================ + +The following is list of software packages that utilize or build off +of Pyomo. This is certainly not a comprehensive list. [#f1]_ + +Modeling Extensions +------------------- + ++--------------------------+---------------------------------------------------------+---------------------------------------------+ +| Package Name | Link | Description | ++==========================+=========================================================+=============================================+ +| Coramin | https://github.com/coramin/coramin | A suite of tools for developing MINLP | +| | | algorithms | ++--------------------------+---------------------------------------------------------+---------------------------------------------+ +| PAO | https://github.com/or-fusion/pao | Formulation and solution of multilevel | +| | | optimization problems | ++--------------------------+---------------------------------------------------------+---------------------------------------------+ +| OMLT | https://github.com/cog-imperial/OMLT | Represent machine learning models within | +| | | an optimization formulation | ++--------------------------+---------------------------------------------------------+---------------------------------------------+ + + +Solvers and Solution Strategies +------------------------------- + ++--------------------------+---------------------------------------------------------+---------------------------------------------+ +| Package Name | Link | Description | ++==========================+=========================================================+=============================================+ +| Galini | https://github.com/cog-imperial/galini | An extensible, Python-based MIQCQP Solver | ++--------------------------+---------------------------------------------------------+---------------------------------------------+ +| mpi-sppy | https://github.com/pyomo/mpi-sppy | Parallel solution of | +| | | stochastic programming problems | ++--------------------------+---------------------------------------------------------+---------------------------------------------+ +| Parapint | https://github.com/parapint/parapint | Parallel solution of structured | +| | | NLPs. | ++--------------------------+---------------------------------------------------------+---------------------------------------------+ +| Suspect | https://github.com/cog-imperial/suspect | FBBT and convexity detection | ++--------------------------+---------------------------------------------------------+---------------------------------------------+ + + +Domain-Specific Applications +---------------------------- + ++--------------------------+---------------------------------------------------------+---------------------------------------------+ +| Package Name | Link | Description | ++==========================+=========================================================+=============================================+ +| Chama | https://github.com/sandialabs/chama | Sensor placement optimization | ++--------------------------+---------------------------------------------------------+---------------------------------------------+ +| Egret | https://github.com/grid-parity-exchange/egret | Formulation and solution of unit commitment| +| | | and optimal power flow problems | ++--------------------------+---------------------------------------------------------+---------------------------------------------+ +| IDAES | https://github.com/idaes/idaes-pse | Institute for the Design of Advanced | +| | | Energy Systems | ++--------------------------+---------------------------------------------------------+---------------------------------------------+ +| Prescient | https://github.com/grid-parity-exchange/prescient | Production Cost Model for power systems | +| | | simulation and analysis | ++--------------------------+---------------------------------------------------------+---------------------------------------------+ +| PyPSA | https://github.com/pypsa/pypsa | Python for Power system Analysis | ++--------------------------+---------------------------------------------------------+---------------------------------------------+ + + +.. rubric:: Footnotes + +.. [#f1] Please note that the Pyomo team does not evaluate or endorse the packages listed above. diff --git a/doc/OnlineDocs/user_guide/contributed_packages/communities_8pp.png b/doc/OnlineDocs/user_guide/contributed_packages/communities_8pp.png new file mode 100644 index 0000000000000000000000000000000000000000..a9bbd9fd58e473aae274e0147f013c17998f30c5 GIT binary patch literal 256159 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

0=L@0<5uw#A1c<0YNINF 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

_`{QW+isNyjuX2*DBUh($>|CXri{ zf^ZUxLwpB2pZ1@7V`F18hKVQ3fdyt66*(d4RC1^P`1|d}lFC3jikD2R7c-P;BERMJ zh5a@-Itty0isgoRWoS8}qI3y{@tuK|4g@8YGH7y7SlE$ilJy7q+^fZmQwt{X5;xQO zG1HRou4-QU>LHbFk0rKg66_9H>?25;FnGnK^$%IH;yu^h5j!PfiQ1QQn}DrS5Kv&R zjNJ%81x#z}Z&4nvBgQp(cM3VA|MS~_i?C?3C^~<U|A(ZJ1e+jn^M>N_F)mLp|ZO^O#=U?D^8Md zg91?NOu}3}t9%DkbZ9l~fr}LO!zp(!DU1y`#44WDQBqE?i80Y|7v$LUi;FJg9%*97 z`339| z2Occj3M?B}G*i$c4~=iw{APFlznxngyEUZ6JMetclEfzaq>r}>XzMqd^oAs|%bX2jpUhsH_CT4hI zUdZo6EfZ7FU{TQFe_}bfWAC~V!*)DWgyCU#-#FmqnUEI#$(&F} z748~#{mH`=p#va(@Bh;U!k$Gnh{IR&i&7>26WjO*?o%Z7 zq`^_XP@Il0^jmGBvT=@W^snY1=DP}m{dPbD`C7{NT~%_g674hDhVSPHE2Qh@3+AP+ zDh2(zpuDf_{D&q7*4SB#qen*wz&S3Qw8r~!O>iae646T?{W;P75qh42)%)LX#h(W& znk+ZF9~;Bs(CjD_Pd|D^ncsvWzCE>TeYF+3(L{7@dY9lR5N=^|EETb7P?>gi-Df+T zs+s==cy*7w@&BGz3M0=<&ufQ!z}|Q`2KyOL#M=5ouqd3>zyIV)N3fh9LL99e5bHlo z&&LYZIN0!SC0!)H?L`v;+rtkFskmb<9z37BO!ta3KhSriZZ0`Fx%?Hig`oV&?*%CK z6Brp8U8_d=nE6)p^8mi)#3k!tlZcd9{F4X%f)jNu1P;Lk!vi>Su<=Tl9d-VP;3l&#QY#f zYTX}wShps3dDCs(w6{3~UA2x%-$$>5vFcZcj&C>lgeimGLB@wic6|;!qGk-g&;l&} zoB3b52QQMFVVisY>#z9Z(mF3(V(JNeoqc3nlAFvJQAjFPr;`nL7SfIF)khXKC9x;( z%55+~>!3gw$hFPjz0jH{;Ggrs|D8gGn#e?O zQ&dv2`=Z-F?tu^loB@6D;Np=vov2B!ze8ZV`O=TlaBW(+IUQA!-$ax4Chy_! zUdP750B3j)^;yWV`JpQgYj?L9?haB&RHFX%Ylyh8`tpB{JJ1lr)m|OoD=81v$2~8f zt!;7E#GOq}fM52c#ytc|Vuh?`@V2Z(2?jp~U&11X!DZcC@G~|i=|Z(1LLMY{R#Z>L z2Iv3vy|m@FTL@HlD!apGii_bO;4~-;4&Ng+Lz1CHZD!n$-Sb#pdY9gGvu5@lr=u3> z&rSAun5Z6z(;1VAfj&3W?jfxVc1t ztF75+@S*5nRfje>5JWOn2PV)-q_H8~n>7d$j4y>z|5qN+;6g})@4!(yVE zm)6ufDA`kkc@p)Mgo77yHv!9nNA_5MajNvw++y1NP{VjcV5H!Alt*n14Grs8LNM2U zl)wvjEy&T5UO1>lc<&jEu{Nb^DR-R4-$<^TD)XADvOwtu<_L}$ z(UGY61Y9c$Ly%K(RoFR#2}1<_!zR!PVatYjEGtNCoFUG&o^aam*@%2pWGJDSsY+;Y zjF*rCBWWGm_5k#KKRa=wfdyI(R>4zz1AiV3lCgGtQ6`w(5hykUp6Zl@0*LXQm?$E2 zOLb1SpK$B^_NZnuEMS;z@wQ!}&27vRR|SqDpmQsm?;F{WRBqdr}jRD_pp z7YvoT4Wx!($Uy1&H$$XtN;Qk3Q591xEOoETjbJ{d%dQU0pwx*m$z>CbP!+8Y2V)o_ zve*taiLu*Tm%EGnGBCG9ZIQVhoJNbp3wk`ALLNJYZ3VR>WPS@{v2a{#`nNv7V zC=gu7N0)yF6g2Pem_p4}@v`!L53QawnsQ%xzm5y)tlggcB}fvLs42g({CeiZuoiT` zLtX*Z`fE10a=7_FXhdqRAj9nqP#>QGlYIK&f#t_vbS9luzTc`$$+-hn zYS8ta6(Y&;JxTK$I^MAO;-^90`o?>*0~`l-a6sb^h`CFPV5rsWhAIaLx3|t@YBpeo zq15$fV{rBUYt%D+IX$Ie02gc;1?xsZHtyEE*aoX4!V!yBcR3mXBbxrs31q`+Md+Z z+GKKEK`GHis%^tc76ltjo4Y?jNbW%jMVO?v{+3fABL-CaHI%I&>59tt*>xV<)N;%Lzv7Tqpe`$jRv~FF(6ohB!o+FvyjIfHd@{pm>Yja^A-GaYk;C2Otf;j z5rkSr%p^sL&Lz-4l74U}{;?LQtc**jlJkDBR4+KM?3K`Gv3Sp!9`EpfaVcY{sRq8Ais$*M1hw|2HP zg&Y*NmXu!7tGOGO5TX2Yz2HGt2eFfSb(ecuK-FPvJ<@mrh!2Tj4bYQ$A+my6gt69t z?$>jxTsg7`tbv5s?>l0K#l+r76*Lps7{C2nFlTnZN)mDBzWhy1VnoX2v?SB;S$5|i zR{9e<7tb_jj7g}WA>MAW4J%1;yW>xSb1Oh4=)pkdFD$qdPtSkOOC3LL^vJCA@+B_6 zMDN=etzBfAQ9(%o;&*MrgQDMwxqx<=s_k}ae{;>etJ2pE-mLUyA&oDMMiPlBvQ~*R zGwRXqS+dsUZ?EbDn=3x%{d%;4h0D|iOfX!W1ob|DtS_}91DE7x>H7Q59}iX&2ILfN zcKqX^hGhuf-vHuZ6F~_xQS#FlV@Z+P5vpz09)eL3(EifN6Q)vZ2}#BnJ{2Qir5mC@ zA@W#TLwdgs=CbuK+G5ihXwl~h1aRE>DshY~NN|?O`HiLs!nbI;^JgJ)chc^v&DdAp zV!zHbvd*ceXC^;34;!h$iO)iO_sfTFx!WVBYE{C-4mts)tl$}?1oxLxIB(o+AAGH&hM0BmE$(mx}TWKAan9CPCS7E?pM@OMJ zgL^c#4be;_vrKRcv@5J6hs3BDo?kBBv}%bj88&oA!_IkRlmPmkhH*{zvLD-mT`m>s zh8)Oel>p8;>`^_@X4OL&#ThoHy@L)dj0{xpll)bblDql?M>@t~#VoZQVhP1ST)_be zYiUL?eq-TvT%XG3LT~v}Uen6LXL-n-;LUVgnEgoITF4!tTeqt)f+*GZd*(PD2W~F2xpPm&N z8ELp-vOeRU+2)89we#<#KBg`^!oKUmsqbY_$(cB_ze%FROhe`W-ZbLv=vbLaJ8>qT zrsh0q02Kf3DmgdQ^wAmSA&+*RL%ZQ#g?`Kx+i3N%6K5z<==c&IQ>Q8C_tY8l_uHGV zK?-6?7j4K`sAGbQo?Q<=6+l6pwB&_ODJ((Og3K3QbIrP2E))U2XqvDd6{i;5YIf@>|jH%l*P01K5nSrJ_3L4Gm+^)XHAoa~&{kHT!9tUK*Q}fQg^D zGt-wmh+#iz7d@_BqIy#B!)QT3)72@$fIC_RDJrlnfw__pC_?O?<^T_7oiagtQBYS|n9 z$xwX1sR`F2AZO>PF$?|sjuUe)v2c5`mmiKOf-R;5Ha zdR|%Czepks1fDL=hyUp0)A9rDBi<306dXN+70eChp68YMC>%}P_4;X|lf=ht=PbW^7lj~BmRc)F3!H!L3dRL7AY1SLD&>Cxkpmis{~$nh`#WIPU(fPHa%17WLp z0xk2!g_r<3`-sqx@=~40eZ=b63^X%=CTi$NU~#-5qUwZRsVDNg(gdZYq}IFe*Q;xM8)=&1NA(^GXYRP_3dk;MB*Kr~@#~*p)vi2GtD# z3^5G{1<-h=C*j*|YA=8a%cLUG@p)sVXTrANuF<4Wg>cPv+4%?Cp)=z3m#Y#7megc} zH_XSc(Qc3E9o^V+4x}$x!+@-G>>Ebq5W73lyrF2`-pVdk+|I6CtVL1d+7mu|06f}H z`nk^t7N1|(lK#v<=GC=CF$U!iF>dDOB!OF$-GuLsWTJ=?49TPE1*q65y@+i0<<<`_ z!etih^Dl#e*@|c4yWO5f;uMp2E&hJu%j0hG;oI+50yP1@FHTIlKDufz@{lep1arz> z)JFu9X#1?PQs)_IpKc!f?{TxQi!Dp9+fLU4STWf|d^)bYG zW-4ZP1$}pnfaF0XIUIZj%%uY_$CgmK*y1=Ti@ma0< z;FzkyV@23bhOIF>5-AyvNNVx)4TaElQi29+sxE;>Ox0sEjtxuvdduug_1oakp{O5? z>Gl20-BARAbH|ys9u902&ht_|%2#goOZBsRVeSXcKABp7pd{}Z2#DZ?2gD0ivjzs@ z7%X|WbBD7gk(M&Id)9P-KeUAcdIpNh$<*W2BuDbVzDZvn^2#YV`rMZ_0nHg2U2O}l zP?wI!xoFG}bWW%J+H7H|yQgmLD&p2nSI;oI1?JI6e?mspz+^b6#CfUY3p+(m7sU*@ zBK*>pjTOUU?^yXtL|mGD92AD;`z~$i^OAA)Vp29Jm{|y=-|*}v_n3p$8R5IVEH_hy zUZ$36ve6v5f0*+0awi1Qg)GI(-UgiI@SI$;*h)p}vCng^vUHPl+CU(uGL(a)ks--% zHWHLVE8HcO`A;oL1;KmhmW9wQTR?-UgS^r}A+IzGR@jY$70ClK;s=E%Lg{PllTs$j zf|h(L>;$p%>R!XaMZh}>xKQL2LYj^B12waiLK=O)%YbKDNEzxFtGC%Ar2!DrRnf_L zs8jXa|Htt~BY%c`=zA3^bUt-TRd?hNhE44^47Md!la8tYL)qx4LUmZs^@*5<;+@hy ziQ!v5bz~dn?~CZtR}?87QcER0$| z2-+fhH)9!SnPm9bPHIOF#qn(CEFaFDV5K-VD^|6%Z8q_{l4t1$t^5X%jG_YZj44Gmqle8nW(Hz__k{7n#o)wH?h8P0_h>V&WVARZ^CdCr0!&=&wb}KG zCQMlSv6O7*UDC&QPc2VYidK>NC2=R+3^RWA1bXeRnI6sW?eEX8z3+%V zL}j;tN9zZ-JO()&NNPYThi;jr1`R5pw-1b)n0MeHRUu$t=CAC1*0HA+{`o$UOjTg< zezXlKakOx2;I1oK)MhZKA-3+N+ac(yaUfluq1*)e7+Xkmkr`EwmW zIewG5COZKwh#C9peh+h1L z#7s6iv&UX>89TXC*$PM-CG{U%IH6!~H=sdTqTP9(z5m@Nx!cMMjx^2uY#AQ$!z%p? zoJBfqJJ6$DMl*V;+o(8#q(yAc)GT>r83yRlgI@sd%G!g5ALMaY^o^0079qnOZ(S1+ zUEb){$o;G2Z2v!LSgj)E(?a{ZoB*1V%Z$V`?3z&lg`3nbc~S%a5PkRx1eh2M7Deg@ z@g2$?XAlW@E*E;}ca7q2vMfoyZY;eO#B`1jJDX=;A(|MMv9kQ51$DiZ+3UYyKa;17 zQ)F3YpVz7l9kb5~!Ebw%d3wP40x|j`fd-8am8pKWdvd-S|NDrUKa;z?b@y4lT_AHYf3Y*GDtKeV6UG6DoM;_}X5oSwNS-66w(5k3fnZ!D!cDHp7G=0c_tDb)ZjN#{SsU<2l!^udDhM4eL#l! z96T5YRhoZ(M!4vtjrH@HYT+)UAZwUXC) zcA|C&<f-h-(7@%k-39 zn07t}e{g|;)`1gAQP^uiSrewL!d*8Mr0`*zJcf>?L2qKAwJu~ZVOE@8Q>+y>J*0gV z+eW`nYh^Zx%l5eHTP6weXu|B~(SuBp9qm6}mtE9QAy>7%{x6lng z6W=4x2Mh9iB4El2nyLr%Cr1HgK>@q|5&RK9={tgeP)(S2fwv(8_`+W=Tv+5E{Rec3 zl6l(Ejo8h(m59znn4!H`lPN=48Cuw=J%xQej3=;?ENhT zd(KE6qp-uW@IvBy$OuzEq4|vk+uzy)F=@VE-;cEnyLu|nG|WllHwIJ3C$=qWVc)1` z-qe(GFYuDfIl?-2ATK-5>3q7@rRQ9>`0HMVZ(D@NwtqU*;oET;O+>z?Re022ovd@3 zsmo96WHrN6MvE$Ftx}&k97_hCISfXyL1wZI29f|0wOc=T0`+U~b)*8o2l4b3eRgow zf8}Ap3|1mfd87@v>TlG;6h%)E_rsDs1}?wC z#qg_2@~+3>wNG3Pb}82C;S`^~{dM_tl(&A}qe0vP@yl=qg@$X1GhC=DHE;hhUbeJW znYasgnT%J$*AkEg4(da-fNS=fd^MN66!S!9avtOhey``8!O&Dz@vKP}oqsnPYzQ$K zUi|u(QM8|zDnC3eDyDR{hdQ2Q4KfKJYKcdDM*;Otn;D>o5N|u zyw5IT;`Kx>cbIi#YPb(d8f0yTa&}@$+RzaOU)pc0N%#0KLr!7MdHrz?7UgC$k>t96__QbhM#|r3lWMBAW=Y7CP#h$yI4@DLjl;c1_mc@!-aclK~nN> z0+O901&!J(s8N6W5!9Wlci(#ovnWNR)(Z_>EtxftM?{aUU-OdLRX6fAIHFh*B%&9s zQzf}{vkv_FLztN<{D(E)phowBP}lpz508I<)~jci%YG4j8)?F{KB<(UWHxvE##an4 zoq-(V0)twGw~aOGHBFs(V?E=4!Vneyw!&R;_EGjZ)^;v>dXQgX>)X*r&&K0fpg_j& z$em@HdW2Z0`AGV@OShK%C6V1m@9gx^h;8{8Y`^d+gn{(AN_w?f{K0B+l%ySOi+fU!FIC>4bN0sv$EN;KTL$@$p zl{s>MxGk$HAy0DbbVzdOkP;A%+>F^*fm=$=K_KPw9}d0?`2M`{Ml@+hSy_fY2K5m@ zVGcyo1Hj;#Oa-|gRI)Gf|CNI<>||qC=5!+WLba1YV>T>WCH4e0Y@A{Yjs5h*a-(Lk zjHKBekplWAz=-{A5`4!}%AQ{~*Maer!OhoG-@;2bmPn2P>q4N`o+zp67gVx+BN+pva6{&$4_qQqnEw$x#&u)^*X6pg?d?P&pbObtbFR-l!lqzj0_0E2T- zUorN-S8SK_lkTMflm|AtSNo(_4IM}eczcj{ywt^DO+2|>M4#C$oN1FY(9kD+ER4kl z3?7ljuZU^A6J?%+QEY3SZlE6CGdy%$*E99KNH?M*9#~DJPuD+B(o1Y%+qml({#W{Y zo*L0sX^yj6b>DIBdR<#{?|!)wMRf0Z%NZF;H*!$sXr5iiBZK`(7sR%1f8=thnZZ^x z=BTX~{5SV}89KC95!TD+HLNVuqIYTxL=Wnt#fre0vmx596%0g9|V%(lGRw^`=t-vY53+%A!RWR-{@nj1j#P zonO0q-QnOtuw-yje_wB!qHpM)b6szqp2|5k`rxBF2&5cOGh@5!J78)c_Aq67$Jn`Z z_0LWRnZISMh&JBbmPi&2)9WH(>!%*a&`j3^ z7h+VGnfGJs1(k!N7-U{|Jaw{E?ti(fWmRC4iXD<26>lU7FuiO0<{@$*;`ALzEah1K zscnUd^u;{GmbQ$N>4D|i#Yi`Xw*mQDf3mB`_MbGI+Dr0#&AWhn z;XgN>)3Sns)H&pvnSpf*c3YkL3*7mi%AxAA@`=O~Ca-kep6}OXB)jDXxhEefwC)t| zA=-9%5|7>DvxP8W{nWw0iD;7-PbY!h!@WyPfMWy0S)e0M&doAJ$|mX=3o_Bb_{kt= zcJKy{TRT}|Oc}1;+^y=T;c}2@%Xxy^h+06Ke21actjY3|XsVX=_cblhC`dYS^my8I zmuma15Am1%71PY}EyO=Q4-4Hbf_*y|eL8{`+vUi(m9sfelxDO6>XgfFTZ3T(5pq^l zjp=seLum^uRL(DR~8Hsm>cm!;?qk zwoU(i5p7uvhKZ*yPjuu)`iz&!`8c=yelwR+CR!=eUApI~^Fq#VtBJ0@Zep(J!xQtL z3YmdDn7Y%p>R5dMCoqwUH*Z%{89TXx=L1QaBuw6`Da!MbkW!%ndW#b!xR?zCjA98s zLZGDO?V{|rol-aR*zuojWm||}Zf|{y=EHL~7&h8gU+hGi({k0%wdGCQEp9oU^7u`O zg2=UJ)I>&Pn}Tp+01R6DzJk7iaZfFgox{M}Gee=nXcPWMPEH*LGjUa=kr;SflI8b$ z;c?Ei{`|LTq@LJ)^qa<+lp~o6%}w$A4qF>n&+geD|9Gmq?8)!Q^B+hrE}xhpR`v(K zf9zRvh?=9ro?XIGrdzOEP{E!(~yc zhj%yB_fn5BPrRxZ#a0BGN()8{F#P^CBHU+3o`>O`M6;_Y(}}YVnZz(h_Rxm%*dPy_ zAlJAgNl6XZmRtI`*x04wcQMtYRF~;hM9sRj$*XYR|JgqN$pKJ@3%q4KUqAdKH3K*bhfo4>wJ61ccp?eZtahpywyv}Mgm_Oo*fi`p4(mQyfFY6NH7Bn1ks4Tb7>W>eltr?nAwcXfGOMYYeWM6{8^VUd@T~pTVmog=KeLdsUe0g<*16- zuR+GxDTB}^)pQ0oBQY0n@RKtok8-^?NFNkSi;(OVroB_mVrZmw+oto?-pTa^9xH80e9LW37}aAT(u~F=j^ZhPTwk zqQy(|>U5m~G;<~Ivk@TW+!^T9W|E=Oy7lQeJ)0jU2~7!0+cl3ZA1HPL8g`*WtZ)Zp zz*hxT+bI4}r1z|D`{$J4;+eij7Pn)Kb>7YCN9Wo1=`kC=R0h7ngjVo2jM@oH5h{QYqE+*Fy8;-#WDE+@J+ZTi-+=jZvZtGU_A;%N(7yp_1#V?zN; zRlm2CdVV{q&bf*?m;v=QRHRh*?;!y%5E30KI9#Hiy>y$AiaNlyDu5N!5mKT1FN79b z@;Q3Dx=LI8>aPO^K94q=Dn~M;63$q>a}imr?s7h8{zUJEp3*HI21A|Lt3DDXwXmyj zEL*x|>yD%4-G)2GtM-yH)dgD;uV%bEYtH`v(e>WpRR8h&cttX^l4Ns`gp`@RiX>9W zR`%W@<4DLT>nJKKIy7vKy-I{+R`!k%$I8t5K3-DqKA+F;_ebyRdLLJ=&hzzpKF0mH z@B0y%6Mqy1c0+kki(^$fRqkQTl+>-1WgnOX^llvkeGMaf$am2LUz zajitu4{nVlrmv!$6(595KjZ=0Pe)Rz4m+yDf|L-!SAsTPBH@nhB@%%e{^(B58o+*EK2 zlsA`u=yn2=t=yeY#R>Pk%^0Gm+7!E>)D7VY!Fv?1ZHO+48+AvH(zOI7NJbfUj3O$- zfLk0gAdN?61GuqOP5xg4PgwEooy|KHPnO5X3^bC~V!Ixu)cc*W%gq`p;F02SKI2kd zjdTGJzF@K%$h!CP2qP~K!~gl&AFPUlU&7t(CG*zub;+`+UrJ-5Ppv;UySwR&O1fLA zdR`tiv%0?co>Eo^>HvF$I$cK+b@@1O|M`Yhq|y&fjf)@)feTT`z|>M-Y=Jn`K#z(o z6SpqT3|l_83l4q+!A`%I4$=ttfO~mUq0q=GpdZLOP(yhpGEn1xiwzndE^K$d-7l4V~nC>nI!YuBOLtRML1NPaxPW3>2*tE9&o8<-Y|_|CTmqoAP$vQ3htx=zMUJ1 z*syvGjCChSteSG@neYrj_2%LOq->*b zLtLRrWR(T8$kE&DmOS@x#emK{@b$MBvhNj+Q~G`zkpdKfT~L+SIZdXH4_JVe1enXM z+EeGH6|m$j$xLc0f&tvHe28?2R@N!A8LV6=1ft#2!&NIjdV7Hh2vU1>U?{v-yMGRx z>j@I6)>umI#HOp+-YD>XCW7mU7Ymv|!JG~7km@xjS(!j&dodK`XryLC{w@uKZJ5CU z9`dqvtK_csF7OA_{QueyELZ*EoWd89q=8s5R9m4RNh2C8iF0231(4?BN^)f25Xv=c`R19;nmA6DQ#aGmgt^~w$ZXjB?VOEJirAJ3I|+9 z%F=-QOnwUore^a@>&sj(z@)n0nSGSQFQFJ*rX4tY|{IfOERWl_u1`Uu!sO^644#k0i>+>)k+4JFtaoBtD5^qLx8L z-V+(TrJpCQY6G6^z4qV6y1_1wug%&}v4eWbGLfwU^>s}Gd}erpaAFGwVi`u1OYTJO zB8j%4qNv60>O1yQ^Z|11k8Gl=hP!(z?i3)-DEO<;>A0Vn@;G+PRF|Qfqo;W;dPSR~ z>Tm3Qo1(b#wc(b#@z3+_SKps=xHxm5EAaC&g-zcUe|)!Oz(!xMrXk;MR~G}(SIG_D zEgj%tB9)bOC?q8CjzC)aehnpHbA^cfb9MNG@sp0eGm|+v!9gpXgf8)GZf4&o+&!ns z+^sacDe9^YgfoCE(+RskZ^F8`1wpPZNgwZZ%L= z=xrbU#X$?1>m&Rptq4FAZ`TR@JO(Z>h&QA|CENSQd^gLID@GjbJsQ2l!_YDu8KSW_&E}WzS$ef> zbh_0D-`8Z=;AKiG;6AQz_|pwhW`3KFw z^4Ej=oV~l7aZFU(p#2500j6Jfnn*B=Pa}c?*XBRO+wZ)Ywj23!PZWKL672PdW?j!g zRQXOA>ZVbXlY2oJLECEUGt83XqQ(^0s7fzBKG_2tUBh0X!IZQEQ!Suil5hqaWVyAZ z+7a|vWFViPVml#DS)LeNwns2IDuM?W;1^!*RKMOh-}A1puNE{VkFSvX(g}#|lcPO`&j#Qn4 zqt;M%j&YNNm8N9-1A|hk*o~Yw>y_h<9c^Wl3})r4vm~vmFa$^HX>d55gcHjHaA-FY zAB9K^A?WwHg|GlI1PYx$h0Xju(_o99_JJWdy4L%I^y`%Z!iKCg1M#1VI;zG#w7C^C z4`S-jhK4n0CcPGr7aTp=$pi3fUyUnusJvH9ES=BRHZqngX3^Mc8^xN`g$W$I=zIjL zO<56(REb?cvJkoPifDfrOGg=wCxwEzPe>w4dSySUk(M<;NFK$U#hcZ@IhfsyV8WE4 zM4la07U~NSJ&Cwn5bzTVjxyU*O(J}?qXI{M!M(nks;)#w^!eBclhfg*(MNgELDwV$ zE@3w>L@+)5PT~+BCMWP zcebH_?QCzF{9z)v{$N8j-!etQC%1RO$Z6l_cRgKb)LHmS;MoaX73W zl(RZ8iZ|ro$1IM|sf1}!#mv}sWhch7VpN)9tZL4%B}q}%H02BG=A(QZ-FiS%jr877 zR7|0gYEG*JNYt=KJ%VL>DU3cG^7vxkhvV`sz<$Sf^fA$%DhP4h0~`5@0ta9IP+xCc zbelHw5Pt1gEF_X`SuFa-R!roTeb2d~!a2YiKHoT14D-$-2qd>#OO`>)dup#0&Vg3g z8pJJo?M9Ni&LqxJ*i|@AhwA62 znZZ{A-(Pwbswzbj5SOnz#B*J;<31GHtdfse5uKrJI6HBh@R2r8<_nd+_|JtZ5?58; zwu>I59$%-Lvw9$+Iaa`WmhJw0%hR*+VQX`;2`O;h`hQ)TF}3n;g=wRgyRO3|1r3$c30_K4-J)%zVmt zOrB;-=TQ>Hk!+-3!plXKi`aHzPZ)lXV46bV)krbxZI=VD@eo{KQVS8br!0}xJDsb* zcu?;n+gFg}Ys8Gk-#%^Ic?wyWF3B2ICTW;K&)#yBC|NwtCBhm!yw#dE#w&wO{gp)O z57=i~mF9!I6Q=4(zj2pP9jCGGD}64*VvMqWNrjW`1IO?8o7ub)RS)SG97n$WRO6Os zB2?nB|GiM5-GF+gBG#8sUIy+)HJH2pxrQNJu&R?1?`>*uMFwune3sw4_zlqTC9Ewz z#^WsKuP%(xTaC-#I`8EOgDAg?hqUenM%_c*sb>WG#%=a8=wY3MSY22jEuGwuQvFcn zyHWP@C%D#JMR}kkdD~R=I?9MnJhV0sh{6z=?hNZF-oIKdn49p)6wsE-3OzefS`Lw- zcKSwS^|A!}$%or<XZVKPO>9)o{yMz^j&;WrBxYq|P=d$8)so$RBUJ)cQMWDV^%6 zvX2jE0LEwBMTpqdOT*}BO8@cSQ)S3~yL7PFN!RL0gbX+3`um0P{HI*XGiwF!^d`Zx zips9)(>)n+YF`t`@0BCl)DXK@8N{YcDWZsZR2)}<^yQ39Z1(igMx^Yd92gJOh6-87 zFOEU>6qV_tdK8)u(}S$)j_dKZC7Jb?IP=H-Auj@clg_Jwb*_P@V9ShRaMsD+2s_#v$Y~R)q;C_X?otvSDI?vcF)Fb&5q;pVf-=7N?z`ec|^`NURzkrf#gs!6A$stQ8FEt~^#CO~5j>`3);fI*! za56OS_NYK6;2d>s*Ia21@Ih+i+x`894O^)|_5&JN1eAk$Ft@1y@y#D9pU(Tx#6TT{ zpxMn~t(te|r$yY%i?sbyGGWwJz0#Ed$J$oz)oMW3tzqpagmA(f?uk;NWWF)$6-A+y z#*PV-aG;u^q_pDUSCB$u$#j97@Ctd%;c%?cx;~MDN?m=(> z`ql3v#WSmPrC-10zBGBoBQxf_vN#L?bA;nVNO0S??uPrbpt+@ry$;qB)Vp9s==ekL zMRn5i>|ybFK<5V40m6A&r3I=QPsLsphBP$GyH6WZ;3fief==U4hm&`|lM&dJE_Kpp zkm1R^v?{IjOSzLcWF+2T3~Sc-Hb3(blaR;|`Y#QFci;QfCyYnf1{&G+A7IL1vu)motyb%ZGM`0ySj@vvdMue_*(+Xu|`x{!Sf)A1<|AKIcthq=kJAUi%Io&Y3s#Q zuU6sNUUwREp#Ow#U;!KkMiT;^kpL%=7Wmt{Jq#QMJ@ap>+uy_Z?=4njS33|sMtUZu zgH{@IA%h5$g6c#7`7wc`Q;gLJZzaR9yhuM8i{UsO^|ou6Q<7;KCn@pSEtyrW?Zl?a zD#jvhp6n#kA@Z51ZnM)TxaP%}D4En`cQ$_}V^q#yOrGLUeaY`AYo92{aMhD-d<0XY zM4x;qoLUO82H%PAh&RrPxgIn74~1HqK}T_PH;?KKFMbr+(Nj*1HhS95MpW(t6;M$~?Qx@LQCp57M~Rri3t{N4TzTt9teM^jaeEvK~z$gJWHke|eUq>^2+ z)jJWDE@gN;<{gDr0@ER=gA0cIb_ND6FVsG#YCPT1*015sNb~5Wq_&EB%#2y}8{L9* zM$H~5lhy`t{s&ljFXZZ;FSMsZ@9Qxe4)*7&y7HD!d{D*g2H;5~V)kgI)Bik8xRS$2 zdLaQgl-3#yCz0=qAQk_8R{&8}ARYZpxFXn65Xsme<6{1ki2GX=k2%``>V@$+)nd>Q z@vGBXq0MLeOC6*!2RJI@sI<`JCr_8W{Uwnow@!hAZWBK%a=QH^p%D2QoVuK_q{pnC zZD*!)M=}%2BU+2_@zz~=_UCjYG@tVP=fSk9YpZ3Sg3C0OHMerJsWo2*_>KZ^=;|}P zq@8JmeuO#34OIoYe)_5#A>B0+utvgPfH!iVxAXQb%`ksfrTEYy8IF>@lnaqZnGy)} z2m%`Dhu}Mqb&$^K&tu>Lv1@wuRJE=y_28j`O*n)o7s;q z)U4>zVbpC9#t8&{czYNl&P>S_1`4&uwUU_V6E47ptK(H7_QOw*%3qR5!kytc=`T5BFR=gpzt0sR z+j2n_0rO*Oc%$2a*mer(l}7{ty5k4M#2;#=pk_$SC6Ho!zEOG{OOLvRXzfX3V0qHZ zcyuT713s7<$-`sG3x2vhH#KY=U@seK|(L-c?nSA(quCy)|E5~=9fqV(G9^;Edp;Ab(yV3QM)R1G~qZm%px^5>yD>L>3>yBfjO$o~9zW7}}Oj zh>doYe61O_NKDIp$tgfSQ&HGweO*-$8?Iat?!0oyO{AB3&|HgNg!&1kX$HbyBq6 z`L^SMN7>QA2cpDwfZC#47e;3o&ES}&({fa+5i6{U$!pfqBg`APBgOGl(@J#*ydUc* zh;DUKfW)7C}&|?+E>hP#P8^hQk1lEcDC>`SJ8aWPpaksHV z*ZE!|WwMr@gqNJW9f9?^#K>AegxLU7=63m6dM4netpV_*!uPuvt`YoQDuQ`s;5;il zLG6E^pjDxKZ>DMtcQ&)C@Y>eukRkN|*u37jhUl{qX&B8p`5+XP!h=syRH@<03RVa2 zQJp20iw9o)5{G%TnT^fo>IK5ShRX@y+WJE-mFSq3}b53-!%V{@qoqy-3{4c=!Q3;!^0xq|9_tWq6s1UFaOMwp=f(3 zsTsrOto%_Rq-{?dsM^`~j`Mk;OvwB05wTK*yh(%tNvNEI#^omVGI9Z@8BS63A)({a zUO2{Fw%f-jUw^TBw_OUx*KuW;+F1xMK}`AJ>4Oq|PyAVk?r`KfMkRe0NA?0CwgiRz z@^=Amn(D1%dmh815urz&%mm7cyZ2)$7BJ#R4;)Jvk!q?^^JZHax5|Z81dQN2qNW@3 zHg-N;@DG9Op9jYS5ANviFdS$cwek0r)<7cAe>HK9Ahe+M7N4GsbXbBvxO)~;>cN9j zS;tlKzh>!o*>q*&QJ%op8M#1ssFTs;0g9uFoE!DXyCVx_#drOU8RVPg%FP(h)Psit z=o;pL+wy)D%c^3|@dn4M+9>lts>5M_D6^P@!CL3HD4KAT)E#nuld8={HCTBw*T1dM z#46Yu%0@x%@b&f8daf%Vtvp_JA!O|?ihDwrraeLJD%spstg?g*!|;P(c~xq||M^9s znc00qsqO#goBQwQf2xUjvIfL(C@~7StnEdPL$hIbtrRjSYePALP`r31?HnWK<%v)( z;!`FK=gbTR^l%NK_Jp&^z-Ep)feApxY@V#dN-|{1eOUAI!#rrv@*?Ol*T>wuq>6cX z?L?g`N7HjF zC21+ZVi{D@#x-psnOhu@%@VI|tAgG>Fuk%ywnrjG-dkYZA)6`t1tXA{1axqY-hUo! z@S~DsnbijngLiLn2pEO@>0H-HI&2X}!D|K@6cE= zOTg6L^BFo(vW~P)87_^1Ev=s9rDT}_Uu9n^HU`yuF=oTS4y!3<34SyLTj2~oJ}x?X z#1I|$NYMV0Co`7mGateaYeau^S0h2RA2rBcG2j#QCzDtdNfR(TR&N!JwIBW`vpWuMq`(`+Qct{9WyAgDE0M^+&!|hi54|ho8!^(VCqu& z2J<2f)!Bvb7o+Q@k?pcMN;}|z=&-ITqWwzq9iCR+M#MF}t@my$3c9ySwY%&OUNT~b z9fAHbLnIodw_Odp)5V@EktGAoxy*hDd=BFX)4~s6d|amEt={=Sk7J6|`!o@c$f%F3 zolcJBX0lDl(IUmDoqJ>&?|4k5bwUED0E2rhA8Dxk*iX#XJM)8GCGy%Lz{8){7W&rU z=SV!Fl?O>B{OG?6dO(QN|NH}LQdhyNzA6G)N2BnFOmsvK3=#xmB6pN zhVjIir&O32T*0w(Zm($ls^7YB+)aJ;F#a>ihgU7BPiGfO6pP?{zi59~&6o{r`Oa7eC)5ycgXus$DFYQ6Qv1#qHOx;(87R8lo^ai@ZY9RZ;D15S9IX^-)Ov-_j2l?d{5Y zr5`=uW<-1C(Et7XpJamZ^+}YpK8*=QcAs+m;KD6G#}jb8z43`N&}ZC7D&P6rc_iR_ zQvlgYQrU~Q1O5f$we=cj6!KJlP^mrx?fb;WUDjL7I7l;voD8yPpD;4B?Q}W+11l|( zb0tbV_R8IqC$iD&*@TL8Y`_lu-=F_! zO-W@HrVoZKz*^e!z_c#S%+`3Z*2aCW#R%;XPx0xAZzN#?ReG!oX~dEe{7vyco(P#{ z!jSSZ)^i~5zPVB-1e8g=rUU`r$3{0#r^9v`MB29+GkQWIO1n47i3xOYO-K>sVZar5 zO>jeuw-=$eyL0;fT5>+P-bjG51T2Qppyts#vW^abEy#yBl}_J!9_#-)9Z>K$PJKz7 z7b1hwt0P_xt?pRFK>t(EjrTp~bL7BYJc`^a1i>8kT2sh#TIXtR_2WSiIp1bImKxgI z?%;F2O%1;rf@SI<8_R%BK$h9Cjs4#xi6mr1AS(UvUz1H_`{%>#p5n&yhcVqF2?+C1GA{Q%2B$3q^Ibz2ftG>t`h(fW2%9))?Q~mH<@dw7A1RG~|j3$8zcZR)k z16;Ut^GxdcWpV)=p0BL$sq!tiWqAMmFn^%<_a|bFtsuY&X1(p6%Z#)@EBq_cm?Qa3nc)87@%)0@vi<_sbzxDRs{xG0P>c8L)x0~C>9x_&O z#~es|#jSk*6XuC|8#g<7*t~dz2se=@m?cfiRo$H86K^336d~4D&8~Vic6xIA{d6O{OFGJ4;P1Gj!7Po1cg` ziDvbilo!vD40$I2j@OM?1g|)Ni^v9Z9$5RO+ZIMqX}th6xq#Ms>`|;3N@cygz<%Jp z9JRexlx0%P>e1dG#L+A|6{h7PPlVs)3%{`x>w4{QBQU+`$F%~4C&%}rGnbL^OHp~o zjl!DdBe?LoO+GkbiqbU<>9&)dw3!8>*1hIXn3#kBD4SNLuZn|<~A4w8HvvIFgiRB?XoBc5Z@p)JR;f znX%1H!~BPjPhNN7RU~3m3TYE?ciNHHFE>dnd^6B;v1A4d!ecqk0YJRsH}I|MTfO7j^@RK+#lSG|+Dgn8!c1?yQH<^y~aOy})} z=d506WoYw@IZ+E*Td`|34G#GgzoGrm`ywm8Pd)rcZ#dAVn^TfWcpR#W(Dvmo@0faz z2OF(4-KQ9-K8h&epkm*I0W;wG2jrMaSy^+Nwv@cgcB%q8Gv5(=^J+*pMX!4|CB1$# z?z6c;%kALzz5QgYpg#Y`j~4=>ezRrs#$97agw*Z+;k+oow~(VmLea|1SI!$CnRRP_u~gke9Aqe5;P(8 z2KX6dLOvFlVo;-2BX(55S%jz@z=Y_m8TwGO>&4C^TCfrQ$e$Z?)qT)9B+Lkd*N^W_ zx{O%vQ;eatNbQK9i^H?ny4&?zb4o@OI3{J;2pVn_jh8-uLRYb=&gZgRzVbsoEpsfu zSiiZLQNOR3IZJQZrnAaaGOpjuPuUK7vB}RXV`7x5rjnoNf*^gDi!4j7HQU`cpm#P^J3U6w-Mmalc%UseVyjr$ zG(*xH!#|KGEkz$axTm>5vX}r+NV&CVp`opsf1!o!QoZ3m_pAAQniwhHpGx8fMug@ zalQ&a!V7Ftv8B*6!Foh}#xtS|{hQBsPiWl8wcJ_HH*eH@n{R$%3@!6`K%#j3Ve zpV*zzu9-?6nSwKOamCS!7kah{{OlFAl0r^#eB4*x$Z-zT_r-#gV8M##A&+`^Olb7c ze$3cSS(E4YM7d`!%((s*yDH`CR`|yIirYO$=%|KQ5pHuScR~r<%7?aVuWpD<3;7v& z3UE~Z0f+aF44T=HwVUIM{MyTXtTS~6w@)>_e@s)^ATshu#MB(_K$!2MkvHQxO@8k> zAg}%nI-u*8fog=B^;BPZbe@Gd@?NXoVdx1l8a zeK5PHn)AE=lmROnh1x?`iv070DwrpuHSjFC{Z7nNfOEZudd{BVA=T zSLr1u3By^;(_+V9hC^1R3PhfLjj0a6D6d@!- zKbW!msRcVZ`Go*Wg2~-h{+(s*jiu1V*t74|V)+&2o1#;kz;XVOv>U5d!Un5y=7r|% z5ecSXQBJ7D-1_2TMRB>R4L`nS7&1OpNiBnm?641^dW>8^wSua~u#bJ4<<@!6E%7x@ zB|Ra}DU*ZEF8 zj`vS_xuXr-+kt@U+%pAby(2))W?%hDQ1;tA$2jFQ&r}!etKo@3KVl=@fT5E_v=z|e zY~RbfO)=QXLOZ5=xAUnyasMqi$N zS!zf$&)U2pJrk*joXGEV2C@$X3fhGK=RhATbB>jk%6z!x(a^Q~SKOxGYRvp(V8*vy zLA2xR`~NtXv>hkx;Tl)vJFI1fKKL484%43Rm0+X55wairL65L~^m3wV^`ZLZHK|$5 zuc9`kiG3N9Xa#IAfp{SBf6X@RD-2Pct0Bwyo>jOqUf%a0?osZ`vtt_9Tr`qY?plzA z&RJ^sS_bGn#06|b@<^z*cH|RIft^=gOn*$uZITUv4z=UQrqb#t>@Ql0#2i7wu)XG+ z8#%K@BaKs6*gFUmWBK#?2E@ucFYcaOlMU;RMc4aACR2{BJw+S1xa?*TmMMXxkirdCpStaOsliJY%qrHbRtH6W0cSnp958X{x8)XT^}W*_ zUICq+*zKq@vWf>_AXMt0OTDjGq3vj`+MP=gAdhnA3i;T`@qVYY5-1s>H{b5-18%vc zs&sGG>D+ec6}ni?KjB}q4*lwv6GTU@>exvx$bGVuM?*#Mv-hf>wc(qUJOXbx3C=8! zsH;R4Yg=RZ$o~Af^Sw`_x@S7l9w261?Y>X?))uxqt!%#nsikxv-nhEZx4U? zbPtqCD6d<#HB;$rZnl$ot0InO*FQv(AR%e5KSe?k1o|q#v#Di2JuUrUB-sDOMS4LN z@`4RWXOd2vZx6c2uFHC}U*Naxys7j%F8$8Q|Kl`2v|L{q#g?sfhdAP+Q_N{Ab45m$ ztgJo?Z|ZwnT;s|pwsQL4F)ihl5o`=lOZW=IGrAw>U{PwEtK1h|i{1b>ii+sEXMo_B zAyjs?uHI3zDSv<Ke~|-y!J%b%5GV{v6l~wiI%Yco4BieUD*(jJT{I z6YRd1$A(pBoE5N#(sK-MDfbrTmmmLHIIZQBH+_5AwugekMn8|$ORrj)?7b`X6!Sm1 z0csrt`md#Qwcsy~9JDuSmHjE(^lV{?zTCnWmv8Qu8Rolu%W}i{Nz0v4AcgHty^x3o z#|UH0zz|jodmS4`$}CHb!@Q1^5hr3M4??0n6pS{dq~tT@dRbVM!f0`Sf}=z7pT>y} z`;f2)p&s@+ozladxN_wuCvaSHLCjndOSP$VhH6xYCi;lhBN!=NzNV=&6k-Y3O~1su z2g}VamtYBF;S~l^yC?cYw~9J3V`k=;Oa> z8`kLm^MqzjTQLHK`mYq_lW7nCRa$RzmmR_fpAMSM~@`oP@Ci1M^ydF`BtTc zXBfS`t|{9V_&m%S@EgrL(INQnk!x8W>Ek^A&}mWp_K#~_XHYC`iDkge>NtswTMx=#HTe(Un2lT9E)FX144&Zr zw~acayScqFm$>QBd&HQYsD1Pnj1xLvUE$=R3{lE7BG6J)djeZ`Bww3LMEwkel|*fY zN39`~0P*<~OdUsvSUYHXs}b;%pB8_u))_spoDn{=`l8Zjx;&Ok5#98Z-MM|s)n%1F zZ(@5n%=ghMpKZsh*J>Be>I4p-xhn*VTanH0`a`I6jqj^NlzKz^eY3O^pNYC}9^7yK$?G4FyG_~M z2D*^gq0O7RK)3H>>?-E_am|Ci#AxVwk#xtKr*xA&U*7~qL4_c;b{6SrRfgXKUd zn2c)MTHB{RJK?xFjBXxBD9}MuaS9sPKw3aF0E>tT%0V?6YfrT(6=~r zxM`~vBHZ7}k_RlApCX-;@%;so>LWu7bubAuu%S^MzRmW|sKLx6Y7uKl^7^xc>-Ul! zoPioVMt}0EY#lzJ{-S=C;}88NQGNqPwjxfKk2i^|aUhc`!)x@43Ed}WGTF({ zY4*ZRTZ>d>+0)77*b#UiE?VXj>(1%(=zY>&Py3d9^z^IuH^Zo=_P0a=q0Mzp5d_X2 zua{s&Ywe)-oHXCn^oO^B98#1ybn}oxeJ!>y1HVD?EmO1AA-2?>%o}_AY}41Y0ADG$ z++|(yq0ZR|!(QVx`n?2#JV$EhYS3LZZTWx*p4bmVvkLV>0JGFuaPyO@4n5)H=E+rE z@506%Ck0%5Hy$5d+4AtUuN{^svVPw(ZxFNw7j$Rd1HXl1RloS%VW#!> z>3AK7WqQiI;&kC+DN|dWS)rYRRN86%(w+gkwqFcIBVu2dN3Z?U!bzgqt?16jAEdEa zXaG7vq8Tu8d(*DNW1Ei6xDj= zZwzO`gJp74yQ)ps1$~>1N|vs#dXLB1=szIEXX&LKcaYt-Uew4Qh@zT0i0MFVq5@>d zPdw(=@08iuboIFWl8crg;llgZ>jc4+Ju7Vs6#{Ov#tfJ^y6V~7uK-bh_w}}SoGg*Z zEK=v7-b+k#P&$##)*mw3wSJ?msm21Mo5iCV_~Jb+#;bkl;pKJ%&+tX=%kF)-vp2vv zBoaTgTFxv1{S0_Y{Jmm^OQp$v&}fesYpsB~^rfWdSk%_94H=Is)6abS?3SytiX3*_ z`@Ecr@sd7mhgm@Z2L2v@iEDH7g$pXjc;D8NE_?c$wIMv%ikKA?I}V18ag#qWh?dih zMYS5McV+$$-urdM4yfgELk?Z?XQkj1Vy zep+crjMV+Wmz-a}9rKlC$5O!iM}pMKCy90bCW-Z#DZjD2Q}knbc3t1|Zn#!iGxy%c ziA;Bvtk3oqHc=dJKYu9Ng6&&IPE|heq{{t?;)X#%y5&4isW0RDxbRn5!Q+oQy^EU@ zbWJoEt8~jV6;>MNp6^HvHt$!uw;o!#_`xI7wt%JRcGJ;SCIv#~2u>n{JFKZ9bhl}1 zHt@wmWu`WWO*Bkw=3fN;anr3q9?OH@{)F?$juyJTN(;~lsI(9dKZP|Iv;k55zhPlZ ztfsSi`{gtC;D!&nNm@PG`Ri+_G4YkPQlK?SBC0@YYsxyt*Rr)9;L0|luR+K#2kMHA zqinS&_@CQL zlM>95-&BoH`u_~%|q-a7$n*SV=9~=|N;eL-g|L^C2N1fFH zD9kF2!UcIZ2Ld@84r*vMbeCDGXex=-@;NjCVdcYvU!{(A)B*#^4|FVsf zfvWZcud+mdij?KoxeT4cxs0BjkJ`mIW_`Po8lqM;UaLENTrTFwZf@j>j4PmM5)GO- zsdRd{GDuV-A(C1jGmq>8tx;3sAB&4sOkf2~5%V@5d+Hxk#@}yU9m^gO2UIk_84dsU z^S^lR!oCh=>d0elhfzXT9$Y{SMf5b-mKx?jQDU$Wi#uW*b`GP46}vNwO>zW$N4vm6 zJ+4Mc^F`?;yK0cuH*%#Rmf&Wx(sCbZMz;2f<=IU&c6C15v1-^)r~O=Rzc;?HD^n$! zW7eZLV*V^xVYyFd756533|g=DyG9ziG;+B&i*%KYhHQ}1o!s3n_E^BMw>cQE)*fNN z6F6bX_Tp+>L}%6YL$>RNhrH+B2^wZ#5*TRc2V!2BVa@=Y_|B!87*?tokAL1uo z&CZ0|+SRCo(GMC~U%WOy(g_QCJs1ysVq+%JWKRwMeNn+kdl!}jTlif*>9-+;Vv6zsM;Ktv7DAWZOlN?YN62#6>wqN* zZ7 _QJ~LnaTDSBi`F4Kq{Ec*wmfFCZ_UMg4pl&)CYjGB=>7jvQ=byj1>VNNT6Aj zk)G(>F&(z2p)(y8fmjO|8_ys+t3q4jjL|(TKJ)VB_@chuSXj^E{YjvD)1`d-*Yvp3=>)J?AlPMpymX zZm3#o=wkn`P;*IwDK3g%i-mLg<&Nb&&w{20e1bwQcnTtRtc*;fK3`x?-DMGG8sn~k z#Y*tF%GNY30J6Jh5xaXXc7qkVvlC!R`1_qB`RAPjeDMx&tB8@X_pcX`=iL?h27%Q3 zo99W_*yM#opoii~#fAcBWUNY5mOm^LTvNL5?k6yCAz{CG$x5}ogY*TY_RdsgvOYMH zwWKfpH-GjYi38<0r5ztF&0{-B83PvJCGjQnWMd_G^QlLmq0j-7h)mCg(aR3jb6QnC zclZoSa(!2NEVJt<4kVnlyv$P^B3O;6h};Kmca_#oT-A^^hqU7E7a+`8t|CZ_318#r zozXvXO-|@*xuYQ8mM#OIer{N$%eO=9Q~Zx!4Rd2|E!6DWx3i?GB!5k`G;m^>E6Y24 z`=V!9NnouAf%jR9PfinJHtbjrkW_+6%Q<9go8+pql+a}Tos-XaJ=kd!f9D9WxJOcK z8kkw`(wbmk{NK$5U$GSg>p&`)3;z}6A%~(4Y55bghZf@dii77!j#jh)7fYOXtb44m zWA?yQBscaMLN`--h`VKC5}vS_u2%CJTf+bgtrO1g#P2EclF;xN~2^#j`Iw_+-(DsZ)o!U=c_e^!yJT zoVm~FkSjS`@;*&k^)9%hei=k>*k?dyvNczD*WzWtLVh||kiCzZh@9mnS6H?6!LwC% ztwvhiE@meZ;0#3pGLNi8_gxUZtzxx-ml5bts3jv7oH&bF!U>Fc-qL)GldxAmh8<0) z$E%zU2yDMpLKc1GH}Xvl_YekwFi8CUitUkzelH9dM0mLxa9MNy$7OZW#72235q0KJ zI*=VCbo=_|y1-V*v5w1x3*qULpIL|&6mU;Y{GbUKjdG(s$W~`;GZYwYkrdaZ{Kf`| z9{zmXoH@}o3?p2(dSD9~PeSGdxMk=;VT12;tiD~Nwn0NkC$u&CKoFEXm_(J6S*lce zVQlHZ=hlzrQ0`aaiz%NiYvPhIzB5kez5Mk?mQpCq%5s-+`JLN9f##Crok8|C#0I$W zPW(b|{nC9+sn)Z#I^gJG?a0Vk>Yw~uBXm&ph`YQ~PfGLWD zeJ5q_s=zs^-2d8kt2b%m0Zs@&&?)SMFA?F4x zftuET&n-$6bw_a{7<~KA?f+iH2B<8HRJW=OO`u!H2d?9oW2%k-qR!%`nqlFeixFY zC$jOBsp|PS(1MGCmabSzY698pxmy={ehYWsUf;=kAXwSWQo&Xr4RgXsHG37bMr?nB z66vFjR{#mLkLb|%}y@`(}e z01`~#*fyB+U%q7f<<*E%^ytIoXuT)0`E@r|G+;B0`)of$)r8Xbmc(hLaC5L`vtH{g z2q2_uJQ;X6l#Y+}{6(DQX?cRfF{D5taX39NVV+ER+ovWTPCpht; zk1*#LLFlVLgyX;SEnF;NrlTm(j3*M< zT0H2LVF(PsY`TxoY&jr>&erPoPOq!RcwrnX|E<>T0xK1p7!|Mk4z18;#6Rk$cJWqHXYM_z z-tGn%@FNDk3|#8bga3s?7g<^00n}83*r(#ZwHV4$@48y9;-Yjo`Quo2O@F#id{FV~ zASGDeg!K?Lk>cLRl%78(%8&i>YixQ)RT(jnBJs2#mG8KQ(pHt@@Rz^)k>G3d-(NHiiSJ5o`~vTMTx@E76-T$=bVM^PJMQZ~2OzD4Rs zFiD*H`RyrwoI|irU$D}aLC~w0MPh=XX|dQRmQV4Dx2U2J*cZ2~=hVbb{7BW_%=5@J zuJlGG|{GeFPv=mDD!30QQ(K`P95~JE$z;5&F-?J;vBMxzQ5Vqmu-92hy)Sw$$DOE}iV-D2 z$XvX-q_f0!ta`;xNomc*qkYfi32ykDy{q`(%5%(u>rFDIZPc!{`6Z&Yc!4ZJ#Y)M>j1_o?Tfo)jic( za7S^}=tC%Bz-iD`kyLB3Z|>h11402lm=*1m^-SCmF|J8`&(Ww(Gz{AjOpsOD^@mqo z(H+~TO#U=Fzyj|sXC3^6!H+*- zmnFN;^wW2n)RHJCWM!59H?qzhV9MEn8ez7u%_tqQH!92%;EbBzM7Ui5a|%e`&*Z2; z30bQvlH!ojBVJW6rv4M`+zS;BJ=+^w0m7B+W)fZvns}V#$a?oIRvf}j0;Tj)l$wJU z%FyZEL3c=hWx|#)RvxIWh_V@bGLf405sqsT^>kfk>;G}}-SJfR|NkvQ$}EYD<5*cm z8Cluqq$tVWBV=!~N|aGJX0l30-O32Zo=Mr1vW}IVtc>jOdtIu}eSd#{-H&b_9_6~u z`~7-7=kk}F4~-YP4Mx%H50Y|@hpnWKo`JQ{$0oqnaM>*j2+9q(7^}WVIk6-l{@vy zOQ9BI|9&4ERmUDFn&NMglbD(e&GFdx#<#rhq755_$pPFeIVTc>>>yNN2hO*c>Wf2L>a!0K?~MmHR!Haeoqgdfsa8^vtW4(oaWE5O?1}< z^^3ALLw_zB%UyOpi*-oIxgF-lybHznzj0Ty+Rd8h!`ui}~xnp}lXIJXV896L|3RV`-*-7~3 zQs@1#ERT=_?mO~%`zPQYpiBUl5gnxI{hlh2F9ASYj2tkvX>b8X{hxDsCh9!JiLvk^ z+NtA;v3T0-^HIh@Vd#m(e7jy@ZFICa-te+nhbq%ufULxAIHyXH#v5r~bI6qvqzPR+ zmxj^5=XGy8;shEOcnX{G>}80W_`aX@tN|tQ=&V<;n~CQsMo6?Hk-5OpOwbl)Jy%GT$mAEKm;1rF;fUKYTmc{H8rxac9#fSoOm`qQ30rIV?)0h@h82I)&U z6&7a!RWHg}EVX5j7^HIue#YL8om4QeiIhjh$x-5yinu3JJX2M}Wftn_)b7B*;8Omp zOW*KLY+ve~AG`_l8NVnpuj7*mLYsYw$L^BRToq?<<}U)X>**xQ1JUUdUYB_)C<#!> zo+$E7z)fB z+@Ynco5c``06OWv`s6w~3<~XZ1{n1|dPXHrX8rX|a{2)1U0;#bXSQM$LnTK2{x7s9X zmgb^MX1rO`ow-(p(_ix+JZ9>7;{3w?7x8A1OXua{V_5g-nkJ4gSgWXC{UVPz`-z?%_cs8w?I!5GA2P z{{8hz;&c!%(q8Ca7Pf6$ZRH|BR1E)FY{f8*>}+UK-a8s+jOBvG8UY583}s($GTAq) zwidP42z|t^fFdNB;?lUu`@W zK$54t|~6#Z)nK=+4k()O))Ir&RUsATs3RxV@<3r&46%2kFso zFqb|aqdJRleWUp@?B;HML}6x6 z??vrt`(M>Ix5s5R1l`)QZykT5Nx0}f-Gi(yQoJqe`W*>mw_$BIcp9@j4sfg^gMrh% z0kLIli)Y7sU!k~|yFr}pI6H)JYLdY@wcECAE-<&&()i#!0aOc!$?jBd0*UeGPTjWyjqhZ^-RBx z)K6`#FB#Te9L{T;XRgN&c{79hNrN4Vu70O3dnxQyBz=c!tT}(e``F(x({g{;>7%7X znR^Tr3?t+S1_odG3-O0}9mGC!QklUVd!172Ol_c{PB{O(^N`XY#BS{EgevG`wNfy1 z!aj(jV+yOsUrNSEE$UD-#MV^kvM4f6E%MPf671H&WY=$tm%ajOJA>D*pot1SMtUvQ zY0j>*EUq(KyBljVOYv*=3xjIkbYzv|ywp~v-^N<8*5Yt(_L?E*Y)1Lz9(~=*y6YNo z+3M}A{SfWd3$9U|8&{|ro^BoAN=AMK9W%x)fVGx|{r6Q@Wv(uV$mdGrm|<^&xG4>$bQy1h2yX{!39Q zRmcs?=P8)I1=gC^;SJ7+ZU1pBH|mwIpR8jlwva|Hex0d{`vV&L5$5~gd1;z4M_9A8 zN?k0qHB*lrx&x4&APy52dp>i>r1Gu$0#Qd)9=YNU-Pf_1b+Po^3OA$SyElyl9D-|kH9!oX=m&!^_L4C+luvu;5cSr$M(op z!nnb1-h~qDce<}?5=}rCs^$%4>56b?^BXG~V7);A(PQsgL~gGPB>_cX^v-#Fu+JT7 z0Z^EPG{C;>;=v!pc#G!vRxE$}yQPH+j8OXHWnm$W7szahl$9Rc=hWhC3`4fT8~ToH zUM%eqXHh4+4%*P|NAFl7NZM{vs-^Ik*RXvLBstRmjP<@SrAda{U9}LMKdN%r9+7?_ zEBKGi>S*6RIOic(MDfnwc?J47pkk^gCeXkdY(f>xAc^zbjDuSnc zx1;t^pcWVeFPw~S2B1aao`OFk8pd$dHJVqo7c=6pP~d71b|y2HTZt?EVV&^qm!sm> z>`>`IhN$S zs>IlewUKZr);^c8p~z2zbRw0}a|@_j^9JGp?wl302Y2^oFBe?tZt_j$JZm-|I>1s; zoP|5jo&MMRW$tuml76Qll6`eO^p&wM%;RR+NC;&Hm zqOSsD{FVr3=ua+ECDHqbVSe{GD45l~b8tgpRh*2c!TA9TXYgYY zxJze&t0j-?aU)~SAkX#`4kHse8&p$pbzO4o0;;oJW-|*hcD5c_=lq2LUKfWg2X*r; z@}P5t$ereErY^M*w3*WV7)lq@kkOJlWA=y{Dv$bepq~xoCqqb@UkQ@VcA+tr_eOu| zltnMeSp3BY^gJDsU>isvo&ZGUf0sdma7WWNK;Y=#)6G-Zh9F=5H#z?R65NtN(YahKkflkyM zj~Z6U@+jR{=}2+xDcBXfBh{H0@*On2WTEpC!84%&QdWtMEoQy0mc^cfe)XKa)L(&2 z5})F{x&H1jt9a(P=U8kVXZtRUHf5n&Tx0^+Yl;c=F*Rf7KuPC@)znL5%fXAY25dPe z^rLy3hJ@R}IWGCRa)oF+3)jH*4Qree{>g4NIQt#0?bFe25T)JjwMr{>Pmkw96*}1o z|5Gaw=6bxIb5bDU3t;LGSl!Q%32m}Xo?7v46YJ-Kv-@|@5pwE`uQhI4Z+{0~6F3pT z_`&G%hp9up2%(vviup4DE&q2NC0&#|LP3!P*egsr*uo*|TLD`O4{bR+Dt$cPAbyEX z=z33%jvhHjIM2>m0_4%p>{qpi6Yz3486rut6zez9!M9kCMRD4@^acL=@|1`u5_cr( z!OROL`Nm_Z5V8BNkaRd1+^{~}F|hs@KDc_S=kU60A%mcAtIKvarU@^0exU?8^|e`i znz6TmIxpLQxQn-A6Rt%4P+HF9SWwXSlMBpZyd2_XVZK=bZ&rC4hPR`6V`7Kv>QfzX zKK3tsh7`2o7SAESVgyo*m-KXa16Z%>D>#jcR~k4XOIElbggK5p^E03~jo3K^{%V(A zO{TkrPVjs9j&kLA^gmLvHrG>Qwy%VIt*PmO)5NeNdH>ajhlp2Z$w#A}>!2HR0!~Yj zauF^wAy`rug8vZBaG*dhB($LJElJ3M0?a7VLxD_0&!!-^Kz@9c&24=GQ~3|2~Rkre>&BbjKKvI7ZIpsEQDq_yF?3RZz~#Uob+OK3R4 zy20ww2Y;rGGZz{z% zxmqrnt+5ojN%E0^O-EJk=wRPy6_)+_{`m`MZ`5^*gd()};#eNDgp2sQv8u)K=5oy` z7{Uxq6_3#3x>s6vOD?&?mL_?Y`hZqdHy; zC~3qpFCNM!(6r>ry4bv8VVEb2tKne0Y!*ANnnMyn-I!<9&XR=G%GWcZ&CN_6x@u`0 zXm)PQW0H7vj!gvOXwmvKBU8XA#bKOf9KV2%5C zt_ggC>rhaR7cyq4x``$s=dCM(WEH{QkQ(+X`ZzLPSsRp{=8n=7@s|+(2_0Hz#&6n-lz>r;V2C(N$o44XD~h@A{&D)nKA5=5=mwE0b8p;( zY@-)tkCV=K{RkLr$+u{5>{XymLTJ6= z$A15sQB?L7AjD<3E2Sc|xKCenbDDmA?YaD%zr_;^Yl~`=YX{G9pWcA)C4$Ou7M_#m zDmji;T$GV|)XQw&<9jC}uD8iHW~@jY{yZ3D9_7kdFVfLs@`!rj(VsUPoL%r{bFWI? zSRGZ+{GGog53M`D!LGkwg}%L7SaXBK|I@uT5*K`gp-fX9f|(58ai~$zLQs|{w*!56 zp>4NE{&C*3y06d&ar}oQGBvq)W%Z7p{eJ1)oqQ=&7=1dL49oG6LeKH7yb)oG({QceFjgaW+=?{>b8c2Gr|id>RUe3d9hg=Mqp_%4De7}5fKz9+ zT^U@^o4Jz zz`OtXJ^#-B-&0v2YSX>MW23#+R;J4JEj{Nt{&cEGxX7$%9rUsZj`l_4wLv;yV z3GCnr;yLYdxJ8oVs9w0z2f!G@bxxsO&a*KMw& z_f|`)Y558ZL&1;->)Vth&)&J&S6q!e&)_WoLE&P=A&Wh)VHb1e#pwn_oeji8V&y{D z^vaCF`b-|B1V6MnxpH!qgkCA#F{(?IEq*dyA)Ra4n%bGciD*_5UMl(;2W-2)(aemd zvm-r5t%qLPn_sFnn&v83jkpVPD;C3;{xK;>A1)V;dLI}hMuKC+#gOfUW>*P)Z~<103pDO0fsXtaaZwd`#NmA<&&n>p&yD) zEF7-qnq;MIoiW}*8&*O1hvy6z$tLqbbr_&s0_tU&oSzyg= z`!BApo9kH`v$`savH0S zk60dsZcKx4Dvg3G{Rzp-i#mEnY?kDfRuB-PCQ2hZfiut#w0^$`u|z`xR48>+^!ELC zG#Vy8{sXp>UGoHzn1r714s`ZT&DU4VCl`voz4}n(-Ko{LIW4m}x+>dmj*VC-u29yS zWLu=4bgWo-P`S0(oO4!=N2q*6qkN%5pMUg&E`Q(9k&>}nX3;*i^mnf01kmSA=A5xB zWoa^Rw`ev?6t;4qRjplw`J)i{Ga|B*YCPeWg+9;l3IH0_{AqN@p6q_PO>!;`{AzRu zi8)e$ChNy0=dwjZ8fKQ4|^OBy$otcnNSOl=+3r(duOg*8pyrZef{FZCQQm+bfW{ z%snwNu>xV0V4?EIbw1bE%OgwLPX83~E1qH#*fqQlNY?%fC|Ak>g`w z1jgVS)&AQvaH0(RC|+h~RC*WMz!n0Nt*iY3jN;1tkgV=h#_YZ+wT?hC(;!Ib5|>k` zvwkZ%xHtiOE9~UQ^9lg^i z$>&Q+1biOUhK4(MH94zc+(hULnRj_CB8`^t$6IdnTn@NF%utqHAEQf{QM`iSZwaaB zdstgKjrcvDFK)36G@w85484kM82yf8f!*N^(LIV5y0`S6M2#t(puW|S>Af`JPDguh z-+9v6n8Fl z>w>1MuRgI^cW^1JkB)JX7{j>OdxO!4?CN^|?o!I?>&o44+AHqwD70pio_3Ykyoiz# zBLHE0k-T!QYw)~YFC*dhUXS*hgaX8B^DQy{rXX+X;z_- zbv1~7KUZF3kZ-{iv>@*4oH-NQhMkDTf$LlYShH9H&+e-@@>SQYpSy5_ly8|OTQ!F?^nX8MNVW_zQz4<7^7#LpfRM;Uup{3@(V^!F)ZX zHs1BJUbW4VuM}d1NU?}%QoI901CS_=5FPw>_1Ul2BA*sh_4^?^;N(+z`BQ58T*=g( z$jSg83~Sc0t^V7-#_!3;3%d<%CzD+x4DU>3sG*m}nMbLzVOy`Ql|`C9^LVt~)!j?bLA$2O-J5%idL!Qu2C0t(dH z8mW{cZlFfW=*4J3)-y3wNI(U1C*SZ1#%a*${ZT=8tSU`(8ms@>^BCujCm|Axmu+eB z@o5dDuL3B(0!WQ91ChRFOO8{V$fdh_P zjR5pcM~1?B<5pY+9di;aJbAE$m1s%g%wyTqa8cQSV3J?MKI$Z&EeAZme|lHAWkMaepDawD_%w>;s_Mz_Y@OKakN9_B zBXdaPVgA-I{6e&BT9I#aW;GxzTh%BPT@j%6d=q1KYh9gXbN(h(--k(KyWOpB*%?r1 zdNf`}M|ETPs8+BV+_k6l@j zUi;m$?i}&eGv&WN>d!*uy)*4q4UuUPT|-!p9z(SomEFM!)v}}HO4pE>rLGIJR}gr+ zyWVcCv&yljDG^F$G+#-ruMV)O(BJ&y@O^yquUC!RR76+sX-jt`IL=2wBd z@|3YfW@I{tHKdVK0$Yq|vcR8ZgGAN`K>R6-r>wo2;zlrDddgwt$cj~jI;jC>%ylMN zFqC!OXGQ2X{fZdvhh+6wmJ@Qyf0T{TDGtiU#%+yh|1C&Y_k%@!WCkA8-nIyMxFPb9 z^Mkri5Q>HrfTRC^(BK19h$wSNH|(V;hr+++A+wCprCKE8kwTl|Q(aGyeG=a-EKf(* zf&J;0`=?|(3~fl-!`D9FKFF@vhBe4fCjSzAc$JkcCa>{<2>h?a`IPE zYci?B5}Wg~!o2~G0X1ROJ7KDki$s+0<4+tb4T7jOB;5+6fddzxpA9vWMX;d%%13bo}~4i`H8cx#m>qa=NdW5!%w18I<`= zqKHdYQZ|NQp;zIR7jrmB-2CGs2NuGaVMoXESyAqSmhd#ZEbp@@G^@V&o8DK^QtP@<+`RgF1?MHUTZk0 zl_RfP9HF=oBo~LM*)uLOo;0O?6w7u0IxqGc$A_8G_EBL78!eB_@7~1 z1a#xb#gvk_c@#PiN7ac6tAmc?RXp}9532^aD}lNgnfbeV!ZY*x^UT^#z$k)@kADMI z7AQ$*NyLM%N3uxU?d8EK-o8Yzj$9zx=1S~GvT=d!UXLAP3I5(LyE_y8kiG=JA7`W} zF2MG#-1I%Ewju~`8EBO^6<2~|dP^-6{1&}Rqv|HG22ON|Ezp17mJEHC z+6K44A^ld>bdR5~FLgBBplz%ekJmR4rekbPldVoV9I8r@hOBbysAq%}Q+ba9i^dVf zSbCm7Us!u2-U08?5w&A6NcIziWphDK$9S4+Mxhrw1uto1BY!F~t^c9o7t!GTM}t@- zCQ2cf!2-E@nlClSY33(d*k?W~# z+hy(&bN(d8{*803TW^o^u0LoU%I^?mCR*CAIu;8Y_Ux-tI6T{sH&*>wsZI<=6OF&4 z3A_OWxw*;5n}EEjrEP{@0*MC-hM2!TO`3K#Q^cGjf2rw)BkkvV@-gR4K=iX0u(ybj zh~~dSHl3!)InBBtAF+0tCPEZk1;xlQUc@3rMcxd78a?0wGlo;) z2g`+;1-w7Li27m{)W=Tt*O84VIx&PhH@JE-FH&aXp8-Vo*=v~~f%TiOT|88ob@(uC7H0xl{Ykp7!sBJ8NDtsW9(5AWM}Cjm0Z9Dq_yh1b+kS7E=OU*CfH-< zETBsn{!u74P)6NDf=LBuL!Yn-<8SL1l2<-(8S32(mdT%Vpa@;7UebHcH<(`wqde!_ zTF>h$&F%-qOy*454&;uEH0Loyk#FyJu7tC;eSoG<&&koC(CIOgfOIA509C`Cy7|rK3o8Ly*7AmYB5#t8 z8mxxfuU)ObbqzkJG%&~PZPRc=WN9kJ|L=t_5F~}1Z6w-nPTi!T@iXh#pLl~(jl?DwgJh~WiAc%kqfZNs)@oXt=m0v zFmDUNb6gglzyu`uPU$wT8IYk*jq{*{p2x3dzDjk84t0wzLc3!%Vo(q3hk)~)TM(-F z8K^4w9@wblhGVQU{e|Hsn{0y(7e+3hqQgz>wnQG9fgd-p$o`trh%I;PsDPTaRUl6c zx^g6pZze)=&WTsOjzMCgkiES@sCc2wx_1#)Hp$N_wWh0shFw+Hx%n1aHno;lif4Lv z=?nQ87m=a4%w0|6#Ja$*?_ynJqeY@V{RcMf=l8D`qjrX+YVsQIQbEe2BgR`~tpL#8 zpD)y?K1d5(dvch3q~Y7K`?uxs-2V55)NzXN)Hix{q}F4M<{m3*2lJR4I*2sU|vb*iBrrB*d5AS2COba}0ZyO-NL9=hjbm^JZIkw=T!i|r^+-i{zUY3*kIjBE=Z5=nUQsiCU zRaSj`0hxo~EdIUT!}LV_)BlB|hXcEV^gsJOV;Gl)GO*L`8kd-khMmJ*PMciXnlT$0h4QTz zF9-w-GR#herxm{vsW6dfP!*6vxNtbQK?fM$dnHm;1i+jWenf#JEtU^LGkvkMcfUttIQ=e% zGj^mCMC6K)4o;$y6KlJYSzM6d{9#1Y>LX*3(C01PASK^AEnl>G^t)A3mqU^1ta9J0 z$N<}RxL+hh&{Z;t)I)ZR6vTpEUyz>6K~4EQChsKqZl3$J*7Q(ywWMgT6$F(yzb{?8 zLV6kk#-|h|gr8jiySZm74XX0*dJn=GdjxWUGUWcNE!!KbQ?^W=4h8q7U-tFgNa{PN zP$e^tf()t`@0*G5-!~z-RN224KNtP_<{)`ugL?!Vc+^Nk;vOdO`{LzZ1wj8gvCz4;pCHy8=@rQp%Zr@m!P}(KAYPG+CJ`@=BytexGCcdzZn)`bC4CeB11MzMNc^ zmc4fqLKmUBrTRwqxS{F2@TDhX#f=AFkUK zpsOGt1FW-obRPjg`xMGQd)b(oLCRe7W#rlBfkbB?Z=gKBFjQ8rkrT@@Jr;hIDjR zWT(WgZk9bN+;|=ym;9;U<#WwQD!}(@-gvzcLXzNW0{Z- zCyc|$nM`)z&pZvSeK>05X+x~i-w|2v?#fYmQ}j{Z8pR*aGxlNSY44NYNCHgBB^WHb z?%D7c6Etit;~ozE=`8p>r6E!N2z`g46hk|cO^Uo^T%AU_RBHO&+16)=0P@Du#ngSlpRHJaw__VoDiMXTBBVp$VyWA{SUYp7g; zkeol(y`$rP8U{t%q*(i8Q`dnu9wRV?iB5tPaCMARhyNjVF2=CC9TQ`D^(?O0N>SGS z9jS+|Tkb$xgfvK&b5*1BbFik-6mX=w4s0b-X@s5RC~n|yZeC%_Zk&}m+;KIX&SpZ! zVijHp6Gj8|8mR5R=Wc>6{Xz^LBomu51h%@-^ zwEA?-6s$mU8t!L2z5gVL?Hy{uM<1ET++(4AkIv-aosX@pILX7o-c)nspg!{w{igii z94izVXs%$colA(_Jl+t~ZnV8(-u$(gAT5<{m(Ea}DkXjDDGSq1wzO;!L^d?lOr-7MA7jNWVSKSD3)B zOR&bl@HIrv*{Dn#L3TP&yU0$LNye-s=KG8K2;x_o>K?1oCf!um@N&FWTZ~>(i553z zeke>QXPTlXT-P{X+t{bG5ZxFn5tFofRIL9SSL#7sUvMS&?jblIj$l)mnuF7|n2tgoVT_7m&F_xd;17$XWni>w0)Dg!mgSg&>5 z3W?|H_vEs-v38fwFM!B+wPdJGa{w7;AyjDwv9c>}{6Q7|_lRDV4B4}88o*_34e!8hvUC%nyrD$iSc^ID1(wUVSk675IDgyxGjrG`K;8l!j5bHu9o0*&?{2 z2Zla#Wx%EEPzA6Tx$KBIeG5Tn3d$^0RZyYeaB&fSu#9rXtI3WC3BwI66Ly$%S>JwI}vhbla*$bgrSVmtMWylsxRcDQv4GxxATqpRrcfsRGDkVj-=(8Y7SCz6Ty$Wb=vg zC?@X-19^(4X|Om;j*9ZgA7cE?R{if_O_}j84oY1DDaqSM>Xt=z#`MLH?l0@mYkmG5n8^;CC94)*BYePy2XTsKq%wRvPK(+@-DV=!h0N&Mu ze@(xu@+CL#Q56)86J8WJI>F8mFR1eQoI!(=*Aqa~8-AO|nykzWe7T&!YtK1!#wIw; zyEnCT0=!7+6)Vf$?fNeRtcoA*ECmhR88-CjRnqS9-j(Rims%q9C7i@O&mgO9Si3x7Cx?onF=ByjW!#pR&v=4t%0W7&WPBZG9-k1; zOL;2llx1QQ2>bP(u`N^_JM?tYs=VM4FeT1rYN`zJ+aTL0_L(cIPc4;vHNK@{+U)+I zL$$V`f;P1(*!;l>PUeTqNi+9x=J(tta2!@U*;n9mUx45&isv__4(gLfy0X_f|5=v) zcZC15X?Vh=dUL*jdr-)l@o-$;qZiexNTeedq%~H5PcqzwfTWO~KPgpm&@}D$8=Fel zL3SZXJovi{ksT=aoc9nw^GpCV5ug>EC{7bL1oH5bF;0!kWzj_(w)M{qxn}|3UF6o1I$;WykC%NBXip5D2|&ipP_iWhv`C`YY{(?IEvE5L3EYuNXpF5e*(FtaXo9(XR(9es zze+r7Xhtx3wx)G&t*wPOjT?oa5yN7O%c5t0+r?pbBj1G&9z)x!dTlCc1 z>Mq-rA;+sm>}|KMGfDblI;K^?kvgT(#JogV!S)(mB=NCL%gYM-swPw@5=U{%qLU2l zb)oTH@~dATvXBxlnv zLqFC@dkdXaOgHQzW3;B|({wK1YW62ViIi=goN%oClNAmKv0A&Kv(7{+=%r>6DawN8 zp!o>gO=%GY8bcQ|7UYEV^(5;g@M*Ud9%jFqxLMjCKNWgK3*Vy}FRd+F{-f;8%n#e# ze0_(?-nq?rzdgy;qyj$(7VoSEL`ODk!vr%RMRSE%!uGu3tiVlbg|U;)mZdhEatG*i z@fqZy?Vwc|f{5>l=%-}D9jbxH-r+6D7Q;(A| znWtoQo1dLFejSO7u+6C^&Xq36_{~T+eoEI|Ix{-KU)wqhHjW zDq6szn~^24f+7DxYXzI5;DWcP-B8s4XDVaK$l9Lg*VBIE?p@D>wmQ z*9F}ZJaa1Kng55_4y=Vs*U+>RIvBcZ517(rKCCSU-dycG_Lh=~ABPp58{6HnV*wJ@ zoD9huQ%hU(NlYaa#F- zuFM$Ig5_zp&lOzglh4QfJ6TKEb-%zf1&yF0MrU{H&gwN<)Weg^U?s66^O)! z?Ec5!eeKc%o-Pa>a?7aID*j+EZM<}Vk{etD-b-O0pn~z7G}k&FhMXRGWXDklCXhy-i@GEJ6WFj=dM+ig z#Rn&&E6@<_{MjSe<1}IUQWj2YEP7H!6Y^hB-0^rZ+=qrmWwy+wX*sQReZ3$}2)H8W zUc{E;s<&qyJ-|XQG35*1wJfFZ6KWnfRlP?Q;0JO@#2B48quFr$BH@OdJXG|J#j_5N ziN-&)G}m3%SKO#QB1BLXEUg=8cg?2^5uef{MWI6VgA%(NZFj-KI528cD1Rr;T@FRR z|5cB?zl{*!UX6wwWmyb6spAvBwx)-6U8<|MKT2x-tQuL-eBhg7h;4JFRlRe1PZUPBQu5UR~Y#%5wT6N$ybUojlv`E1M7Fi}+vg^(Ba0 z?9DRP4(@&i^|KIV0^!OC%JILKWXiSL1WtCOs`G!tHb|*?2dTrMUo7>P_Rny-=R9-0 zZ(eoUU#r*3(q*aYv};*A*M+yC%BI_Z?zr3>E#fz7ReqzSfReu7*zZ?djH=%AsIOz(yjMEH8YbX^o(hWi z%8{uN#Dqof$DWDqvzD%vqAOBoe;gKzsw3memZA2e#glQ8e-7ALN`tT+t3!03mBq1^ zsK@+=r*0C{qn;@)(^x2;BInFY7BZGesIy?C(WgMA-apS%e1rL%tYXTh?y<3?AgfwWrcNJx`I?G3&XcMdQjsxQ~2-eaCZ}Y zgzs;E{m1smiJf1iLm@cxtm_aL>Mk{{jjQ$4;BcZ(uE^JpNW}8}ose|TeGEI>z zNQ(TMQ15eU|CR_ zAw2n*bB{t$F8C9O*`522WmBy4qI*$a#62p#$LDW+3K z*i?B?cao4O_k_kKKF#}!TJZRUJI+A>{Q7kIhZ0tf)7V(;*s)GLzVhX1um$hZw<>Vy z)(S{we(9Sl=@gb(dm`=CX}{jY$?!w9)-QCr#MoLQ zdDGDA`GEhZz{>XpN`4B^8@NtMT?EzY|rZ_T`<4$J$}IBdt`Rk3!lT2{&d_|^9;+u8ZCq1sC#iN z)&CLc@LYR~6IA>M<9+5P{pn*n&Na$Z%(jj)hE0RbTcv&}FY@F3bHd_UmNGkYiJwI6 z2P{++c2R7>h`P8|>CG{GSSUT(UKZmVO|SSABaJdb*NQq0&J6y%@kQAb$}H6Ap{vpn zh(-5oNu6VQp;2ZEL~5t#6ubylEME#Oj5X-sIwYs$%VDp85l2<=yMmEFg-2uvl!q6c zE#!OFWg`_XVHKl);s?l1Gga+G&0n-1+Ipx7gII^+Ky* zTfR>V76J&0`D45M{dN}bMzy9$zbo_f>Yh;F{pjCk)b4L++CRd02i_;#q5sJpkdM10D^s7|E`<5oF z?7Z9g9M%QBIu{Lh!YbE4sc7xKKT%}Yb$N626Km0(*4v(f&z~s|g68I%1$AOr2{kr2*_LO=7ZehXF;koMr7*Rp>h}n)s~}F(8UlfsK$m>LFJ=4p{9RXf8_$nwvzz*^~FSIC?`wrtf(OQj-2W zg|m!jWVgC>&)#$41B2wS<+@H<#Yf5csxLWJb7#tTK28tVUV51XEo4Vebr&auSKG1r zZQ&qnjI*LJDB&6=#+U1P%U$XzRZ`s&fkLd8MkhqG6)=gj3tVPGwY{e`VsHD?zCuO; z@Vd)#&pG{a_gC&r((h$n550Hs*Q-z6EDNpFd7gcIE$8w02BE0(dS+=M>&0Ht-7>M| z!z%s7KFprguU)E_NBkp$`-PT0JqJ7<8oI8>d2DxfLt1Y~Mz-#ksLjqCs}DwJZnFlQ zbg6E2sn$WH5Hf!hOV3~=6;)B-b1ytS_~o5Pws*Z&t8bGBf569M4lVYZ-IGP*)l&A& zx9AIpii(9L^UrBc_omHh7rx#*nKt^{g<#+ffraLOumlB|NZdyh_>LYjhhTs?QRfL} z3E!_1R}Cy~8of66ZWnM!6qbTQ8F~-o-rq@1ZHtn1(`UCeEDOJSQnZ(|{LIaqF^#)W zVIva7tr5~di~TT}>eE(8%HHV>9l$?DQYm=VHLTDwyw7-Zu<6(F5LVj^!RMxs)a>~M zktBMke6kjhcfnbpiwATH(Xlvk38Y9{RbNDw==I-J}5ux{qkm`wy~e30_m|r+fnZP`Swf6 z?B(tZ`?Zi^Sop-cJA!}J+H#FI)?GBK{3)3qX~EG+&@^R2;`A#$@Tu|V`Lz|h7{6XB z%Pn8IxcU_H5!DtUgf~LmOy#6#liC3?K>+& zt3P`Do=?qrP7^s;FBHkgN$RybyUtAZ9*HP7&Ip4SZo0Oy_^{*6h z+bph9x%9k)H0)C~%+uJaD-} zw>CqEMr)!u|1EPCod*62;hyPsem^p71_n97tR6obhK@OJ=~s|ini2|C8F_+D@dDF| z5HvC1kXqqEEc)c4?DZZzh1rM|(}VHZ^V3HUDpI0S?3ZEc!%fp%E+ zZ3$P41R$NEObjS0Mc==OryMlWMV#(6sb489dZEvf|02ne{Aw|`@W8G5qJ9Sz(INW) zyF0a9l&uUdFSO-TqgD5W%x63wWVt74J~^ zzOv4UHHx;wyC2THdI*dm)haqPYC(^ybHTn8V{H*{X${4VwvQ2(xul3yipoYgjMiTz z$a@D75d)z%8Gjh7sD~|F6eDA8RI@mTiXa>`WxqDnOPlx z&S#6-;jzs$zDgrB3su#!lnm4O2#oq@36E-PjpV3j)o|wO&+Tg08Zyf5++Hg#snVZ}Jpxr(RIyoB zRKA~TSiCX_1G|bI<fYKVKCKe#t~v`ssr3z=@|07y6vvY)g$C<1-qQ@%eVITz+1kO1XRc zsTkE&_ElR(7bwX?fOi}vjP0Os_+OrSAZeqT;%nHG1c%XWkG6gM3+9dfF=Z4PQ(GSC zs(XnD4@4Lj^*;vODzsv0a>%XFYJo>GsTg)>0?~2>{fyFJK5rcrbH;*-Mu{1Rjy7vJ zJAyqo@b>ya+kSjr=NtW@AKf-40#6Bqxq-62Po@g?{Xxzvqu*ImsKG2zzJkz_9!vyb zxgyXFPEDxF7sv-wsQGeaE0-KC9d*R2qbl&sG$IxyaK`1NkgvvQSR`6=%6HK9DxAcc zqF!Onhbk+cDpiOm-A0DxY&jh+d^CBUWpC6i{FC$ORd9?E$+?%T{49WqAs>SbMXTM_ zfZa)aGWtxTDslPk4B3o5!;od7P=kZ6{B-J(n1WkgpYxXlDj0jXgmmXz!}Q=@pUI^3 zo^7;s?Kzq-Xu)9Qbex zzP?MRE;a1`>cWxSaJ)dMT9?HA6BwaJ15$CX*$PseXq1!HHF9$MPtWeDy5}DiUjf4p ztN+(t1t0b?@cq>vsuyik=kF{;j_QH7=Tb7MBV&a%lu=O8b_$1Cl_Jz7`UIrZ=UzN1vEMqHEr;%$vk zqYy;1Iy!%2#J{8$`O|CF1OfNS>6n4}!~&>@dpmZpsjfd4Bq-Q2)@l*y^|2W45>{3= z?g@YKJXlN@nzq+|YQh-_Avk*~^JkC+a=JcZ+f>Cf;fQg|9hJ4ft{5Q~Y3F>y;@;O& zV*0=49r9~QSc_|gDxcn2J+f_h|H08L?3a&o>1DUBCh3+J%|@0Fg$#>2Y>9ggMsGqw zbTmivyv!o1guNFVR3wROI=r2 zrss_9haY8#+I(skt(vFT7xm0I-4jp~5xjFX`TXZrx^oIAX)qH?8no|FhL_78Yx2;3 z^q1p{LoChrXyT99KyvD)fgWz1-=O4EVV&GvnhP2(m<<@e#w}t`u;Jo47!2KTuY5HQ zx%P?kbB62&HMv9E+x9<%OGIXLgy*^Cs}BA5iemFNJEWB!)8gmp6Z>65V^*7m_FO;2 z|Jr%6^@GZ9>IK$n^;Q!0)@B5=#P)PEA$C;fC-@3Eh0$<$R-`0~z z5D_lYA(a3#-6|>l6r7N2Kw6dah4nVsKiQ3Btezb;VU$*;F0=RZSP$ytzm=x^eo^*X z>uJk|>dsiL=#FvSj+10%;y_eGvDO>hUgu0cHJi&s6i5Ai9F0Z2Pl?!6byxk?-17Rc zUA9BUg<{tgQ20PUCJ;{u!meAxF}S>Ec3~jmzbHGazAhi5H z|I)7v109MyRd{=EoIsd6qtJcq53BKlZ?=KB?V-&zDhXa;eRXXRSx|2oEb_n|E8%F9 zc>JCZddy_>o#Hre4&HS&Hk_dU2L*1l|vwWFoJ%W0PJ1 zzZtQ)Ul)7SuD|cOI`WL@cx6Yu;$ZD-kJvRwtweHlfo%VNv4+N4ps>Ab9dt0Jqjt`E z8X1GRgMlS|7hq3p6rPp4&P4MdhL~22f7J=vw}{tz7H$Ix8%Hj zX#I66Kd18Q@&5!4-UQYNhwL}JKRy(nf9yWC<GkcqJu>p{FHGN}oBm_N3Cm2cp(eRuNee*}%HFkBCL1_RQKF!)i zy4V;UZeC>-iEKZ*T)!@r9kN4Def_4x@`-PO%z-;A)*BV36(@M?T(95*J&mjCFAw%M zA6>mxu-T@2zhh(5-2_c8Jw?Fzl}Q$^a5O6hY|vX({<-?bP2oe{CqX(ijmeEl4T?UK z==#0&6uM<@^1ED@Q_|B*fnm8^G7ujWldwOKp+H!{LZ8xNqF7}$C?AQB$LCJ1+xXQ6 z5Fhxwuu09^_0!UOY1*N6P#Tw0Sg*jqbiRCBp}A$B6~arS%N@4>U%NIbfTny3b88f0 zxd&;HVeogDTUfA73MbnAe$BQ9Y)CZQC^>_Gg>_!nyC6uIQAMJ~C2hRkQoRX`ogMvNvwbHi@VQ#$MyK=yX*b zTYheo)c#$!XHi0<0nPBjc&n)P`#08W$VjisYVGtQO9=wOp&UaX{6M8`b>>!y*40l~ z*o*eBC{yJURf|TbCZ6WZlQ|7XW6sg25^E7{5!1_jL&dLsy6toh%_O}~DDW_5OVh?U za42s3lNV(zBSU!lu$z`0mKDTqlO4VG!j>%isedloDH)=BCwD#_tVqwV4GJ7Nj;3mk zA!nOm0`*My@?G^;zrUdvR4_aDnk9VWT#)^y^y8R2QLK5#oPpXiRoX#*TY6~&&c^N^ zoW`t!U#`2zsMfVk{9v09d^+Gr!ID-|{+gWPpz&RxpIt|XNY?;zzpct<@zdmxJ;eyQf8-V zJ|~XJd2w}xl}k#qXa(Mc4Vnu*X?%qI@=fIP*NQJ5T@62z%T%S0H1oQV!8Vb2*xha< zzu`jfWW{fXI4h!iq;2`i^r4$~xq?PBW+1xv|HPkFp|g;u>JkdSs_P{b@A8=I>Oa*x zgLM|6V?R3&bMukd?LX%PIGG!M@2@8MA*VAQIatl;pfw{M2SR+ z5|m|dJ;vev2`iJFZfdBv4j~q{u_sm3Fj7TKu6RmHig~Mj)tyN8>_XqU1n+0?)|=L6 z>>i@0)lY($4ci;0CEZJ6c5UHk%=zJdL??OwJTYvtVkkpXLH$4_fN5GQ=y#MPzmSj+ z4bl-lJlL$PFvC;VO_0(IRuIx-WR=M27DVfyb6?1r#dXZs`)4;~d~<{O%GB@YF<&ej zAe`o+cy3ZHuoe`62gmwf4{m=sICyx&y*;nLyhA(GB>f!?{dI;LRdwjAt~JjD%8h$E ze~r}|K2Mc)d~$2E;WN(d`)E;knpcionY?P*;A~Ff%=PAx2OT4x8>Ds9t=3}FV6zmW zAGoW}&8%6RKg4f!roF*I*;G?~d&%a^0u9I>xG~PO>a-@$&U!&=U zoBFq%rmW>;PgxD|w0Emcuh)mKy8q;BeXx1N{O^wqx4Awgg>o2nrjR^Fe#`2-q0})H z%$_K>IJBfR0hl5-1Z#V@4!o~b(~(9-(D;;j-Kr$DlhmE6u)Y3rh+{Q8Tiy6XB*&+A z+Q+Gc5Pzsld>J7D^J;`5D3+{0&H-zq2VyqumIYaeW;lke&SlT@je1Jy$7-T@I>}*e zC$Y!D3`ZI8pg%BI%QxO{IOMFaVLyA6-)0YQ43ucwH-KjlT)o5%)6u!CP$OtPVZ)ac zehU8%tsaf`f+t1%Jj6_wB|1ae8;@9XxyTR9H`{=j@}z7yIqPEMcgtX4phP()wJ}56Lx&Zl z(Y0*;@mVS*T!*xcKNyrChR0VA7Pfw-5)p+vx zH3mhG;%D!cN84RDKG-SkC=xqoc>e5VZGT!co#9)Z>SkV&-`-mWXHax*_X$mPozFEX zC^wp{?d{9BZd}v4#fsx-y?{$Vf?B5)B4Vc$rv%<3g(M4(BbCO!0~B}zAp0)&&1||O zp%BX-G_9f(Y_$7*oG9XS?oQUWbAiavPU$HNXG`s>$M4OC`|orPC*4)XjrdG|G|fZ! zNFA7eZ$=Nr{?vR=Zl>WhWx9MvXZZ8f;p|RDc$LjsQdL$jL*vy$5#*Hp1SIihg%I6~ zG^)q4ASh){nYv)4N)*k7od8=y9(aUCgg6>Pni-a^W%oU0o&T?gNrMk&qFkF-mneN6 z>~yVry(hzx{V5?Y=tw|!YRI&A1dQq$SlUbQ@e0UfXT`!@eYhoiJ!?@6xpec2O|$(0@8c-(kWWvQn2$|C`mAfpRJMfpHD zRS52D#ik9J&DUuRM-W6bYyq-5Z6(-3ca4|LN0Gj}G__u(WUyh*Lrr1U+2q{5C%c{S zxxJjBLawb`2@m9mbmPOGNS5W3aMS7jD|}*m3bU$`1C?64y78&=qGq&ppWw7fo zAUsK-U5Cv_Kf^$Y3=y>JP+HfUa$oLtmBY?P)b8|}ovhTz;C~|6@F$23C2co_%2lPZ zgAt-FNxwUlC%HXO{=`1Hw<#TThZ8rDRi(GQl+SVErR1JcyZlnH<;#T(No2c@;(>hy zM>i5K){V?F`P+y4|J{d20k`QLz#E$xSO{_uw#%ITCqQ=ej^K7CD@#rcIN9BKC){W8kjXR2eR#ovwJ!k7DHSS*{S8vnApARKHWyw4g(UQ@oWX(zb>F6|58~XkOkEG|Q zT2ekSGwa$F)GhXS43{2>y}e?^~$Cdj+h zdOfVxwQK|%kf)o$w94fLf;$6t5O@-8M(Go*9y!$QRJe9ED40&(1Q@tahiN7m@e@nw z+}OLt>^-fNM~A+{1?eWX)(Vz*<||W0AVUE^Aq`;N=~=F0(8b`Z936-SNdezy-^~hm zES(p;mZEiABGmdnh3ggz4zC~9hvaHKYd_sM7+c1D8|h`9%c*p<81-Lz2@_~M(O8Xt zLy^&{pHZD(>=S5k<)!23rw{f@(OumEqA_jWuOD0ouw@w=#h=>~u>Qd^r#k<(Y1&T) z@jZ{$+7u3dJ?Wp^iSC-L*zW@~qTF>*E&uCf?#vx24j;{*na&5}Um<_HRP8%jfS37; z@X39;T(yXm=D9KkrfH4r>~pNLo}>4x=40-wO1f>zyirdpOdq$4Hy>Y4P(^M_-x6B! zWSHW;Gk59TuPhw3)S)~Y6l!Ziq3(GZiT}U8ee11Uh!K;rMCb~p*{S|{bPQzh zYasD)1ZXtS!GD&y#K|D9mZqmc3OUd!Tg&#^IY)KkYmn^1fh(i^bK zr+2LiXFynyl@kq`$%F5JEQYES)=s5-FUfV~$B*VAl;3Pr?oUW%7%kVfWdsBSPfBHo z(4*n`1mmpwH(&Sv`s*n36x~93pqR->6+`STb4yjTsw7bKzaN@m8uY*3p>X8Nck2-- zGSxE)3Hn*E#32%8W-_PG${?q~(uQ+9eeW+0A}9*o_4Hy&OSzvIyt@dS~;Lg1u=Cat`bub{+*Y*q8Q~Kbl?Ch@|-~Fe_zXDBOSLFKv>NNq<%z<9HpZ*|H7W(}M}5~{XzjN5C!@=& z9M`w6=os05ykBFZ8y&c`w9F{${8FyW#%ecrJTxK0V(dYGfE4SbjVlk&*xYjAJ@>S3 zB#sf3RUuGT*Ct~@|NW<;M@8b1$9(RQN57Y8SM!}sR$ssk560Na@^sfXlA=@BvC-zM z*l3Hj3EkGAb{8Ie!JBsfn!3aEuNupDd^{uRIXQhMH<{_vj%Fpwv=c{4sP!r0tSBEO z!zhM0{W+(aJfF+euRa*UQwW11YXFMu*D5}{j-@1RUus)0cEj{#GC#IF`yCU0Rb9%vEmu9;?ajT}f3wM07BJb~@4dGtbmI z=c{REwqbYa*ye8s);Xt_S4*M{c9z40>q_AYD>q)rDO$8e^&9OYgw_otEVHdX#K)(@ zQx#Ff;_62s8_|*%*=bSh1O=H}9f)Te>l}Hd{~=*Y!cfQuCyx@No24fra*V6+-nQ)f%`HTJlB(07=S;dx>_hPzvxMDnU~tZ4%d zhVod!`8e3~BghRMgM}mpE|l#XR;hHN^Q-gCJ|&^+*M@Ew5)P9y{DT_l1)`eJ7^v$> zlr2PvclFu{&F}nnC%WoBszv?3f8#u?miM0 zu1@QI!-ZY%QADH?9DhkjWOUMr6jwWCt;F7~RzK6rBl#6MmjpcCoxGXy8~mAm6#XsXIgU#hlHos^ZBi4>Px& z4RMc$?>1NI<^QJwb8z6c+JCELR6WeNp4o7>rrt6;-Ox`YsJBVOdg09!Hoa)ok&RIn zQTObwsQ!%N@)*D9o$QO98iT=~o-}SsdlvSnn3+*zC>V-OWF|_#_QB;V>AHv&rZ?Rd zYbZ61n0-s3t!cbdD|xVGx7iT9CxH8+W7qL64m@UW7f_YI(}Efa)9*&!?LlHQ8!XbU zXJ&_OTNea(Tr)e-<--3oOE+!a=%MA=A7iuH@73fuc#n6jJ$jbkH|SI(Zl!wTj=Jy4 zt1O(E4SoGErLnr!NFyfN&_@Piq zlwM}tW==4US3KMI3Oej$Zr=C_uNB-fdgCas8Oj=IdS~mLhO?yJed>3{1pyp&PE&n& z0c!TQ zjJ(_AJ}CZXiVvh3k4(8H>Gw^Y=2lI0wdMLbWv0SBBg=0+#$Y03<29&#dL)&c zhuL7NRDV#|2l~bjQ)2j7Ft zcO?B>*60mfDhat_*k@X;@RyECbgdo0)cNMbV3A>g+}(@VcWZuc6`!BQ$vz^Z`cja~ zbE(mI64QU!7#0)oYPm<@IXZcVRVqd6H11zxZd4S0P-Z#u#vyKL{^Z9Qa`=~fQ0^}` zf1?5`--3s3Z3aX?%1xJc0dk^nvuYRp~DDh3Vtg@Z=b26msgY^!%8Zx13lcYZnF`Z5=Zr?B{27YW7r?-~ZC84fYr zioy|4xhoze;>}OyubmvsSdBFFA8f(t_df>(c@K`?qh=fZvYcnm$y|G*8H9U8L+{I%_N_%DU)0RFrqltx=ZRc59K`vkI#=9WwHn+*5OM4Lph#-iW1E~$_g5% ze%d4e8Qy8d>6|u$-<@#;(CSQ~W zhOY2K@2gNcvZ(NIPmjCiH0i;)RS@5xlP=ud79F-Kb(Vy?e-e@JY+vE*_GE9gOla%5 zJZ`;Ob5#m4atoe{62?$?02iR?n-{hSChEZZP`KPQz1X-SpI%3%Q`Tlme9#02L&-xTaEuG@GYH^4y!(&S&O&x5 z!(2^TYMoQD$(DJsO)zb4;H_f6dC9HzeXi+d*AmSPf(?SK^cDPF3-t^zVa$K$a$N&K z6FynXnJXufs{{0UIN&ZQV=9W*#cU^9xFNu}EXi2ksJqno;~o$UcXPB5BA8JV_QL%C z;9T5&lRJV_Lv}TO-;ls02G3Ok1k@Jji-@qil2TA`1PmzH? ze_rYddZOq4Tc>a6DsySq#j0Q%A4+o5o#zZ&?Yj?L=c>EFuR*}UIA*|pd92!v%vX-D zn*UNY53*w30nPqhB`m(Npnxkc%b(_Vsv>@Y#>(ed$ULz7bsuMP_PW%1;OEiJ!pR-1 z&1pfj;vY5UEMyaZ*nrQ_9~!9|JEvhf=_#pZ_4EMWh=IWEN1Km^@EX}*oy@lbU$`!b zv`tpb)m15yoC~*znn6x*lY9@0WMX}Y6n8ieeZwqx*ZClous=jpymPL_PhNnj2#zAf zFvmOv7D4;Kg}KpNJWTj-53teX7P_)Oq0-{%;a?}tjuH;7z4ClFr^_9$<;zy`%)u)l z^b3@$&<2#u!tdHJ@HdWQ10AR7ac|kJIGou@mnxgW0 zZwCSdd1XF!@*F@eAVgtV%EE5ymMM)C2;HSqz5&XeA~xH*0W{OFMxxE!i}$T;=ir68 zr`&C1YibwLA(3S>wI*2cjJAj#609A6A+TNP>)Qkp;*; zo>eT8nCUtuqpH?DGzKPM%#x7vYr2D2U=&bf_A9^GJg<1b0;B6SaY{=+m`SL;k zp|M66`$5?v)Wewesq>>E-2y19f=gt+PS*Mf1nvYTYp+Pyn2h$6(oCLpqn_-`T$eSL z8AHS#f;CRwgx*U)q}KJh`IuY50{>#)>KB_Y90A4dD*2~~Z-7eNq#1bTpVu-@h`qw1 zy2dD56@Gob)?pQDnU>x`4EfD@v{xlsev`eFuF6lY(6`&;DE!Ys1+%H9NGWx>z3- zye#cdt^=f}X`D^AnWkOe*-dr}$i8uelbY8%o~Czq+!*yrxDa3V91SH=!pfr? zZN$XViguai7}(Fd4BdLm7Wuyx>lkr_x@gg=3Z;oc#EKGMT&91x9f6RcbbdGaU* zxL}bw#AaGqIYg3Ac_I0Voh2LM))KLUnL!5Rb)(XhO~a}i=fd@0%F?vHZ2k)tCB9ON}CSO3#tk^c*PsI#Vqyh8=Cw&C+E5z z;3{Vq;nsRg>UVlBJzI%97h;@yd#{OsW%8}ts|7d|1u(ZE62GY1h&EW(KJAh42pwV` z_6*_8`~qTaxiouM%|a6$f#(j#Q4LEsDYe;3vm}HZ;G0-y_-`Jd(w(Ag##-~2nG_9#Ob!sB7sJkIv0&?rt9(FKs z;;1>wQ%aZ|_s#kl+U;Uh#MAN$)0m28v?CY;)cwsBesbE60tYzS6A&~VXv`CjLhu@Uz1!K*E| z|GZnmI%@y(zfNFG7*I}s1)kZ^iM@U>9R2ktu=em-_X5S>x!ryTbL$UQh7gAKq)a7oMLbkZ~^DdZ$wgXI~;FUIO2Q=eY-%Huz&$J7&cp z$?69r&f#g)T?$+B82xCh%@ds?o3l!jhvkNMy55HGEl|L*r|2|G{+%GFl-7L?g}y_R zjlPW0Rs^Nb=4_|zjUq}^cwjZqgo;~{>5PrTD=G}|zcz~0GY?vxGxl@K({1cMS&tnyH7-#bC! z$BS(4YO`K9-l;^gjtZF)tz(6YHkFh3`NTdYUFWk{V|@Ae9*Atb5S$}^?~K+jbM~}i z#wu&6n)Extx_?kQ3-_B4LQAKEdcH%}&hC7&5K8L}()b!To&s+LadhXwP}}-W`3D|G zqBU^xo!E+t7m`6BUYr@D`~MAxe7bswb54*v4BTtN?kAgujnOI3$(-(jR_#rIndL+mBPuUVWF zt{A%(!Gw3&*dUROIoCr3yLzxO|}C-X2?Fll{sW zEAsP@Z{2rDUj1j*dC!p&6+a`qE&rV zo~0VQ<~@9qRs=4uFS?Pf4Orw0-0Tnl8o@UzMGN;|XfzX%8mTY1iPRDG#a<#!{(~j0 zT`CO#{z(}YaRIRp?SL%@4FklQ^gXEXEnfDE?V?oBKILm@^5mF4i1b?at5Hfq$|RfQ zvK+}U;zsN^Q6=vHT#sBU_B_$=E@N^T>nDpZKwRXi`#e#SDA6BSro6A)gwl~^Uc|)K zmrd(_$;$D2d0Ce~cQVFV|I*-m%oo2^G3gnUFnq(RS6#?yKD*6J2o|nv1z35bAXW+9 zl*^o{o!NkP1##b3i*OoTbig+$- znV(x=#tIzd#k3O(h-OuZ20i~38!t+H0dfL3e6qV`RxS0;%$VsSO#$OF>#@MCLPeG} z4YkjdcR)OL&jHkf@^aYAmvWO`Z5n-VH#c3FBO$L4@k=MUW&8JAPB<71g^bBT7o$;r z!Z#()`G?iLZ%@|zZOxsmc3hKN<07f+RP$|+ZCxPW0hs}4)jCLM?pKQYKHIh#`2IP0 zc~&&ZVh*pz$Adcy&vEovj+@l!nKE?|Dw|28f)I(dr)nwhrH;YH5G!&2YD&1pKL8>4 zMu^i#yv@8XuACRjC9Fy{hRVy!XQ3TVNzq5Sah78 zLct+BYuCYBcXYU8dKh@ZvejH~zX@sZAUlT8Zyk>!8`qBJ?@cfF9?&r*dWk>eqJB>2(d|Jn&!+n?&*a;Rvi zwIMg<-6_JNKl_$YR!VK*l8IkSRKn?k*me-KhaX|xy4R}w3$pIv!0$e!UnqE1tKo}QlL zw;Qk?XgWaw!uLeW4#F&oRZ2tkB^6>@?^}hU-5c>apQh^rlX;zQ1O&@wZKXTM@O>q4 zt38LSjQWb!V$QW+cC$ZZL|pdMDi6J98H*CDBrAl~jFJdk!EZ?tOxxX(cK5Zm2LNn8mP#ue2y7azNa3cXA zf*}%^&w&PU3#@!W6k89>tktpa6*9erN4XmFB*^5_J^O^V@5MO1WDv?_g08E6P_Z&k zyiPqMoPRSXwja#9k9V_dk1*$%kJ8Dtm;Z`%L{n-kXb0KGsDo*HxD9Jp1dEz);IhRBrL?T#pk4OI%TIA9~_H z(4AQ~k|ZKbhc6M&uQNLBv*CTP)vz|(vNQ52LPGCTy|z=cW0|?j6ncDPNH0S6+E}5k zyVUAx)#R(U{+me~0*7qtRrAN3I4jSh!O8ZUs^$0c8rhPB))V={n;oli+z!K!{CF#@ zU$-JdRE|CyeErg9RB}_{2=g{9oG%rxqGH_O%TX7(Ub-9S$>1{wyN&O6UWO9xlveKP z6(L8iqX|1oIln5Jjaurn95?+?|9PPQJHY>a?ju>aGOHSs2^;@+;xi|@18Z$sDL!|E zE#yUuMBEcDPhKL;BGZ44*D3 zz(ZZr0{{%}aawT7c$xfrtlaZXB}dgKwxp1&yCj|=*Dccl1e5EfdsVrMgw&R)-r9eK zacimu{3UQJ_{HWv$R1c*TRN}ly$W^z^LuY_aSCKm!5s+!rI)oR=sEAe>M&d262oyh zE_E4fvA#Mcvk@{k5aF;2dI8FbYYfwA9VwDt`OY;wt?8EFEjM@;BZ+U zv{xb~fy9P!27Ef8R;I9D{_*`rc5srI#gBEGMuVpZ#803>^+a^I^b%!>%UfP=e^Oi^ z!sR}_KO=J&zepB`>F>$QTjdKd8IaH)!!(XXdWeZ&2RekRWq7bAA7%P^vH{KH!oTZ z7Bl_0rOD7$k@>A&vf?syKPqp%oA=91QgOc-{g|g^Y-+7zcH*0~1eZhS?^QNoQR|BS zs3mblb^QiWliZ1yL;?+*_f*`i3$6XiMj{0yM%R-3@$J7{>^h$Qt>GPnP4e%7s2ZI7 zOAR`a^gk!vS7PI&9DhqX^w1jXYqOrdaQ$uoH~U8ugyzdi@#kyBnBv4nZ3 zci->d{0@+0!I}&y{o@lw^c=DQkd+_l@iMaN!3f}=+!P}2(`oECZuY3Dc02dVeZ4-p z+d>#70fFJ0!bGGUxoa{8Zv#jkcWjimSVGNF%*ZCv7~G zj*+GqYv^T?7=#^I^2S2=;;h5oTqs5oU5y`?z8(4!`?&9O?|R1D;)UIEr-`bvXR6N_ z>FJjZVyQqPc<1%O&x0BA@~Ezr*YD!xB0(~HCx@d3N^Rt$2bG6xHRlX;I^-_oOVWc} z#Bw(cFI0{666XF{2wsXipz_3oD}S^)^o**7gwZ`E`Rba}y}T;c>rSi6@}i=j8P{np zAc0Fxxe^)V@@_Vl$FS%2h?269jux8Zh<`zIuCPYpHouS>$_t$+DNx&$bn@I5k_8=5 zeoAnylN${=B>Ir6Sah!_red!GtXXYrSIXL+LbueBrPfeLCh@_heJUYB!oP zJ%R=Ev*{VYx}SJtpb6__r?j}CWo8IzTQ1F|)fW-;rcz+0gAN97>)sYR`As;|7a24v zlA~j;cc*9Y8}`Qk1A~JMVa+WZ{fiY@QUc07%;NdjidUr)5Q_S?4?#f{vg`#`-I!S}UhXCr) zDpm4_9X}aI>+BwNW!xCow)Tm$YBR8HITU#dChmrrB%#GYLn-&8J62B){kxF>8;@H9 zJMRA++(Dh4H=fSK>A$4n$Z1aril2UThDAD3(9oK+&}?lsWr4D~_ji5{6aM$1(aZ*U zoEJ(u=rwDUOCqF!2fBd4Jkn3FBr3@eVTx^G%eNqNs=*5p+YW&Xya+++(;h;t4|Q!I zTvRWE77)BknFv6wkoV|mBCUkfH_}0M)896VJIY609}$fC!OP405z0aooMjC{nV1=5 z4n_^@9)Gz6FNW-*Z-%mCV2-(qpZfYdZK-o_-?}4%;t!(mpx9rWo&`rhB0*9bRCYy7 zA2D5zdW4J#!3EsQxY}ktEhS~mmhRQZi+$~o`b`ehj(PR_CC=6;t8i72VCNjitq!BX1{_gkhCkG&!;Xnf4d+6~JxEuE* z7}l+iF_>qEjr3DVR4TwlWUPdKkxC#2r@@8rM?>w6+^e08Pk*F5l4HIW07y|*!p!Ua z2L=q~KbFoU3`O66VA4hmH0i+@ES2(EaQI68j$nII(Je zXF3c2`*!yEA*2`9DW=C0ZrAbY)dO3l#-Zg7R_cwyvG0<%=j+~UZ_ft5$98How3rJ1 z$r31X&?%k1ODytj=DMSZCNC~QsKm**xETNEbRBsn1Z370%4rnB=NiNg`_2!vdbf$o zoIL|49+_zTlgWph03N=YLXr5d%7-*{4BVFX`)0X9B_~6uY$E{Dm;^ueS2-;I4YO5W zcpN8=vZ=ZF0)F*WMU`-vC56H?vtc zNRrZvPzD*ktsdaxQ4BO$i-joWD~PutlC-+&x;K?1tXn5#xr0#QX&{@I>JaK0MYMej zLutx`S);tw3M^6w=U!0`Vh`EDz!!Q26L}LNB!@EKP99Rvezts0kLdJH6njycTXSz` z+z=l*-7keAMKv~9q1Wuw_YUEdZ_&icuPGT(ACJ|npij6j{C1uA7W&>v%BaO9$cHBU zM9f(I=B}Tu`T<(H$+EuLSXZxw)S6AM&M(eC#0-)Ycm?0&yJe0YCbkYjYi6jZs?G%( zydTzC53{2O$3z)DN1j2Gb=~Z_r#qTo zbeOWeJr`V^<0fBw-Qc~u6=4r@8ed`a$)4csLGE6Krq&pp7aVfdTI{ zfq-zyS^j&#TYaxiN(?o`%)h0PK{yAU;g0~q$O^N3O~{V$ih?!BOkDW9e3{r9RZ)-` z&?jaw8af+Fj{ayBrWw=xww>s=I8}kj_LULdQk#x%oi}zrai=k`%kUr&OL~^|E-9Li zs+}jqvA=l|G`ziQy#khg@Xkf(=6Yujttw%X7J9&eskx9FLC^)=l&f7^S@p0&23tlM z5+g*-&j@9VVw5(DX;OgXHLVBq{>eLF2e$2g62Wk-Hp~_pTtj>EBIv6->T*z|VLaZ4 zdb>Cip^z{lYS`9KBhsh<7ZT4?Pw6zj{=;ai9em5YfBe~ftqc#j$ll&4-;|HK8P&hg z8JfX^n{n?LuxZ|Z9WO~7qW11%8)}2-k<^;jpT+XroyP8_@unZ@Goc&l-go%pitNGg z{hw{biqLspbRnrLj*rvV=YeGiCzI?b6s>Jg7&C5__h3DA$9vy^NIMrAs>QP6Vfk#LBo zGV}bR;;+|=gh+d*(s5`uf%rZ4<=J z96ZXgJ|Tp}DVYf&)WF{TvveK^E|TTiEE4KKu>lQ-c&HdWo38(9TkHAgcKn(#_dZ7{ zFILrk{*EfcR8Cl`r1R1ON6aH!?t}Yhn`tM@_Ia-R^g_C;*U%TFd3{{xn(K&6($j0X zK9K~dx4~LROitj9R*fFnB}yLDAL-GZU&1ZoZBY`Bm7&Nm8n&Es@9sW+ynn%A?6a}P z)Qx1ZLMt3|;#$zG9<`f{{sz|lOM$xE7}Q3sLXloikB{L*PS<^VNj&{}dE7!2KpGDkmkblqXGl z@85H_jg%{AD=M_04XSqj?y5Pu_44+*&!Rd7OJZ?8HER)&L-WPqNol`)%Kji_`<0#V zn=hy()}@~;n3yNa@tV&Yw2o#JUbZ}{8*JRZu{9TzQkC_$VgMq*|42~?pEyJquayW4 zanOL?{F{5?y_ZE+u7rwUprEQe)1lHkrVV4@$h`!847D1G*HhD1HYbH#815<}B}U>8 zCSELMic&2W^CVDA$ZX$cfA}J05Cv6?q5P}}jzHTALCW(G!`uZ3Qa~$tfjz0wg`8$r z0j=454jt?8B-(BiPKuK7fscDAR*PZiOa+7#AkxaT7@|$Jflh9y9 z5?&rt8jn`hbWlMIuikX;U{Z}g|IK2q`EJwUZ{_rT3CIyh=V1R`Z8H)FbWyq?x28kb zV!h7Ul70#?w@d*SAAMk$#PR!Nwp4LdVJ$Z<-8n&#C}#>zqX}c!XTea})(nAc^??4N zFX>HQlCpu#FTF1m09Nq#n}N`+>5iCgd%d>T(>G3Cwq$V{R(nJJ85T*l{ijRKFgJCv z4+o(hXRyC!fRqnuDKojvbtbi@EnajGJRkx2oq| zqVW$0#v7$5M|Vc@!rOz2E^YtD`M#X3)^j{6`?6MHU7@+%WNm8g`Tz55I&$I(FG`r| zzj_dC->v=lp){s@3!cs)IPzve@1xmoa2ss)hETC0?!x*ZY>wop>jqC24D1&MQT4gK z*qD!VT?@?8+;n^3r1(QZU*^GOYPDs19v@2FNA>P`WyS?E+n>$$z2~Jbz-v7$eoAjZ z??FVB`yTBV>AHj|!i&}Up2@$J6vPM@831dTd?3Y_|NVi5Od00iZp4{;ty4%Xc%hoe zLp=|+daTTv>@Z)D;hU;??!9uT_r*=xSH#7L1lV4w-_oX8-)dU+WTka@$ya%a+r1Yt zXpv)@q1yTsjm^YT&MW>!S`cl6DDRE&fe^W^JR1)W1CJb-etMt`U&t-U1;GL(k1r!` z+sh2=fFNxJZ^T@tQ^%>jP_cowVWjlBkF^&*f&{Wj!3TCD*9d{Zm{Ynn4>n8FV2{E@nqn$E6e7=EMtIFKr z8?Jz0ExwEK%e$Gr1FW)NwAd`zuLLaLBZO-Qt1TMDFa6-dZeU&|`~WO!HPr%l+EsRNsDo)cnv6$y3>SzqreH2ZHdb6Q`W z8gkxP)qgkk=o921UE$VZQbyq`3udhLwiwz~zu`)XUy+=RU+l@;(`NCYL!0K~Z^4c` zE2gYC#wr3o0`nF;mcIZ%GXaSG&r(J47aMpVUuCn`&)-5?34XT_aoZh`7&lJv0>&gk zk4|CX^TB69@H=3*@Yy9vhH@#N-&RY{&TX}|g0L+7N{HnrT_oHvG#gYbJTmvV9QDbP zp?xTUtO!~R=`chD(v8g}ZiT>}kwJD^{eM}e06SzNUFEogNt&KWWWgE8=TV^s`#Lr8 zB$J041+DVANuu$4%t^dE2$?05j{~n;b_sZmj?v+3`h<=UdiJzj^4EY~EFsSc3#pnofT+A>(vL$KxXDRS2!bNS-J;vlc zU3x7562L`H5|BS;(ew8*y#)x_=%E7ac@WRzaDl>;J*lxe%i5*>eXrp(%Y0NVzctr_ z?HjSLrm|Ldoi@75nom+oyvK}9n@+a5J}YCE2obX7>eGjtHABrClt}_TDU#d}q&79-L6b3^TQt8>$(qe0{S;a16nfi(Zki7NXVn-`uvB~CTXP6|qf*?|v* z)@`iW+{~UTx3nGA?$q;9Oev@aH4J@8w37Eeu(s>SVe+{Qj#qzmjeo^Vt6&!=pqz)Z z6_vN=2%xFq{l0(8ESPBu!O4G4w%0@HO7bZ%BR%+hZKyHpY`*4EG+XjDTjKK}qNE$( z-0KF_Ze+$w#VD{s&o{O}tPQLeNJWJgZa3aX#J~zM;wRvLCjA4o$NM>QEdrH%ly_eO z|Hg|xnP^wd9Y#e|gprs(mkSvmFSpug@9BCa66XueRR+-tu5+QPXlgpr3nBN@Q=Ue9 zom1n(Q}r+jqT8u>3%T4>(sNwktMaG6m*<*Mm&Dahe|T~6!lX(=DLt`fkJd+zOQZ@7 z%LBO1j*1k4fK2%Kxl7lCuBoL_>!qCc9K-nsI$oh{XlX&gPqKzZwA_{;-v_(IYupbE zpJ$siZDPJXhvz9vZ1Jv;`yAw5y{|wKbhCq~3U%%%ApIRm5fThyZe;Jl+z_F#E@CYY zT=qs^cD|(?#~T?0zSKC;MwO{F=gz2%6)OJ`YQ>?{r#= ze=fcHL3{4$htAIjw>ZFHo(HVMt8Xk-FQ&8s}>=;g$@&Xvav&6h?} zG8N;>G#L@to5;O*Pn>~Ii(g(&d1^(Wq1RZAZtNwM_w2ZX!wV(6H8w02Is!(b73LYK zB|dJkD$>!0-=%(yZk4ZuH@oM(-!adBHIr00Gxm$I#rfq+cWZR7Cid|wzt$h=GBcAE zWS}bkTSNJ`NEZIjO#Qdr!Tzh=T{4F0Tqn&}rc|c9aCMmU)l(rdk0dA*m7@f&cyVz7 zb;b>SF_0$R;;V47`tCN(I>Gsx&6~(hIbK(W1c6-o$u8$z==E?AI8{Sw&=6h;i~7&d z3sCsFc1BH2jTE>;VarKAdpLMT!(OT%gs{;GlB_~xAQ#lWD~RhsS_sG?DZ;h;^_ES0*9dnUj-cL6O`zg^5wZlP;6(vhV9eqZOT( z^F~?FnE>&bQPeLnNiWX8ZhGTZKuGXo;zfQe%aoBrq*P$Qr*^GCDn-9qtJ% z_`FVI`BW`+fqFl4yB+5S|3&1$n8srm;W;znF9pYY&XFTrKxx@XsM!Vtn zDb}*ktI3?}U&`Vuvl<387=?@P)trm%Ek_x%>Ke=slS(7|TOz*SVSH`NR zjX6DsUxhXXhs`Yf0G`eTsvLo{!jKF~+kY^tq$-;)y?@8^zdS<#BmrIb|1k`!LDnXl zv<$H)%V=CGtYH@TrEq*)c=*BiWkeiQY8Pd(SH2?YPmK`yM4$aR3!!9VU1Ix;Xs z@6xP2WSidBgW&som*0bYVUhbglIRmG3*~NNk{D_h^#K&mt@;n4S20X_8B)%Pp>5!u zH61~&l({RwR7>_GeaGzZ z$H0kYHV~3*I!!?av}w}^aKOPiXN0am1i^9ud%#ot-t-`MgzK-&led>hF7)7gkx%j@ zoF&FbZUQa3ohl^iL$9BI|1%vubz z`04lm5F2f`5^_*-PpjK_vN=&&G)>}XV3}qACPV5r%M^Z0iua!DwEre{izj9(8s0zv zw~Gq@eMHPj_=_1G5}-!F@&fvt|C4<2LV0q<{a3TYyupOo9CFd|3W|~ROYX!%dXN4m zPeNQWQTNDZsCql+FP`LItFop`=4;M&NhH z-Ti*{dH#XH-MMq)yw7~BA*O% zr^$-)R7v;3XPwBGS)w{zx2a9^HQp+>DieaizAm-<$Q4+_uFRevxWZXBv+HOa^l16^!Z=NuSv<&%Gy%=BusjHhk1jE1o zttB!Db(5T=)Is-mc`sA>uY9#@E+?4v@-Q_-Pkg9{U#x&Y0U=o^YT4zrb}tMWi9A^oRo3e3$s`k+ctInTSr2KcJ?BmaweZ zW$u@7N3Cg4q4@iKf*Um1cM=r=S0QO3v^v{d4sDU7QMP=9iGo_v2}?wi+t!0gN3taR z07?8-S4~E`^nplS#pOToPvif-^-(h98qv;boTFLpO)$)Q|;u-i9kR9(M z*BG(HSJZpq74-a^Sj1U*$S^$c5wTkVCE|%(^68FiL^g2{{P8?Laoi`aR;%p0w)+Uu zc8ulaDGFOZ!eA3kdP4GUfMoyM4S!qobERp*NV(_kaJx#^Q7dX8mFJv3E9`+x7E1U0 zIxc;Yg=>*Ad&M2vQ1e~gsriN+T}_-KDV`O#@xFuUe` zT5!dy&GFuv@?9CR2_B}8QOpZwpYh(k0B5?ovOZGcZ8216`Au-hs8NaS#`3uNd;h2J zP-=2R?<_2C2pSt1K74$y?m#cU2ig`q3l`M=Xs;YlJyi%3-2bJobB#U+Lw`;7&Zkb6 z*VZj5%y>3;B(``qM}s{o6S#hk2ik+lrMtI_T?A42*DBqTh>t`y#m2( zZ76#IZGrk>`f2KQyQi9(Fui_S#;b-%*I&7oEh}AuXc`EfGizf$fxFX_K&A>fky%Qg z$HoQ28iGpnPe1=u2f{yN@sei;>^%|7GHrG`4i?n;D=^w3DH!Jt)56fm&c6^({}jJ} z-qMz>i4UQ490ymqdKnwHlTtS)$|mWOB6k~tLOsKgIGWZpkul(yNIS{>4lSr2qb?38 zvUbRAH4JPy8iJSC_kZPWjhq)J8XWkR>&@j^zB50|ISQ`6Cabsay4QHzE$H7OCkf1( zd#7hny$;RhxiKf^OS!=}nZ{z)dPYl;gj+Y;rGM`}{UDpKe>&+NvM;w?J3|S)TMcJt ze-s08u;Gcnj%NJN9o&%RaoP?Lj(l+4=q-S!_l;I&wZ+m$R}fTXnVW>_-lf1_GCu=p z_|xw}&i5$W7D!O`5m*En15v>>VB~c|)1VOB`WOL&dxV|C=j%TLVGOSpV&;dS0&lbB z2PhwvaO?*xb(n>q^%Ntf@K;+5`o(ZAs1F9#bc5>scE?5Qa)I`IV@v z_e6t{;Ue9Ug;N3n16wN(cb;4^)y%le`!sL29LqDee(HhMH}zAVj~w z(mqAd`j+VQ=R-DczPNvJ^^2tGQw1K*a@!WzQVB+Jg%pwAl&t_v&U15<@Kw-+{Sf?{ zOXQmp1b4Ywcr9~@-Yy%2F|c}0=1HRp;3F%cR~~+P^cVVZ*q3-$`1ex=niW8Rm}C>Q z%pf8^Jc|vWfa`~>h0`h^Lzzl0Z(8lL9Z14-c){Uf-{<`2aLH8y^ddt?hi345S&a*^ zEZ&%?a{T=JK8q--wL`lFTr~| zAu65oC7-F~_t*N3HYR}7Fg^;FP|oz{;0Qjj`>c%qD?ufa5VHNbnI~2513bx_J{@lR zhw%~;!4)J=UJlQ#8<{Jtd%e_7Ely8(LqQv@_oRE#=*>Oi7$L9(!KM6M zV9*JgazpX#NcXh5J*TLouA7Z^lZ#M!cbfkws0a0_+;_Yn-|?M!0Ls#h%-eg*<3&+2QYTp)ULZz}KxEDJm78MvIN7JOLf)3WnaOr?j z(4|9Kig?>QOI8fkL|<~$L~Euepm}=qEW^P_`E587!c<0t36+7oy01P3<%UPN&_Cm? zBqQF2BLuLVTV@g7sMrtJvf{&@oOFEtTo;6#MxEXXS&h;Z2Li-<%D?obSo7A?6z;L@ zt2QFd^qC>aK9E=I;k_tpF+^)nm)IaQg=GH`ZShC;y|<jcQNAE+xv&FJMH_S8)td zS8?B#2BVJkRj2W*aK!wxDIn5>d+bx&?nnviLz1?Z9ioXjU#`)s3fXRfspIOE{vbp;wMc9jd$R zDYX98tJFazti{L)bg&&qGg^_GH)X2((1IAUS}SZ zU#fo)%w<%B5;Q6>w#tz85#1MDT<@rQc|xNNEb=O$Aa|e_DVlcj3DvoH0IbAzG!mfEm^XD`(m^D&q{p@cf}=mX1Q|{*f0y( zthosncO&8~KjU9)HH_4FTy!!i&5`wT+d?D^^3@22Do)4m!~J%Y*rWflT?9RXzAMgX zc?i8PucH>PZst0#Ra}3#H&hkEM9SqT&mTzo7#2`Wxs58dZ1e{x6V_#HY64FU3rgvO za2cha0W;(rlK2HrTa~)hUrv`M3t73wJN9atYc^57=fA!! zb-d(ejxFVX!;A|8BQ5VPp5z)le2@Emq@ry-C(8Yb6?stSBh@UN+gVX|CK!C2{Od1? z;{}MBqKc0k^G6jG)2Z?yv3XfOd3D+|#bpI)`+`SX`7VZsyYDI3eN)FBv<#zk-mH!` zS%J$DSVmpz9i^m+KKphve{R$>|DJ(=f9BxF8J1BIZO^>kp~)7_L~F<8tjwdMOg!LX z6hHPbi!44@I!rwdMtA|6$<2ndUor`P={U~+n3N(d5W)qw)vmYp?#K5-08TtADz*Yf z2t;|JHYciefv2#^Q$kEnp0)fpfvl2lhq*PYn9xtuguvgTm0vg}PJu{hc85g9$nU2J z1FbwGXn)Kfltukg{6^owba-=V(z7D?ldLw2lv#MV=TvDeFY)~V9#sLQ5E7e%i@7e* zaZV0bKRlwXbeYosmMY~fpb61sO@J_LgH=+7*@UDbPy0>K1+*;S*mG6zY}WwhWwYV0s68s~}C1 zqE4#pI8u_~c>~r6;oBoJ{Q{`WoUdg|P0N)DnAmXjRqE{z+N^JCiAV{dF&Od2M78geQ{GWXnHz8)%e(||#I;qb z7w{@p=N>p~9OOEu_Bg!)oImtlG#%p03^tec8cJlY>48~)W|_NX&923r=Lyo)Q$7>! z(Taab*+xdp$ zF9zzAa{ZqlB?Y`znVx8ktv8Bw-6-9z796Om+fx3VQ8Id0d`Rd`b%&PF;8(kAgx#d| zPX_9$z`qM>4w#_c2h~MQLKc;~DSveR?LS@ujmZBTdB5_}T5hWtVTiSj{|e8Ne#7x<5!*YQeX9(~uGpcy zC_y-{tKe1OTl!9Ra2aj^p^jJvsGS&kFI{ZR6h!zj*X=4KHec3fm3p>H$E_Cd7oKnU{o3`&*mE_LmCRX zB%q1b>yL%FNV9~>vp$v9kQr9!Y}@NRfLzuiMZy}emypCY(2vrR`G9NGb1TVCUg4mY z4dn{!MO;CX*~bYJl@*(o&$;(S#na_;PB_@OgshL2)1X5wAm{mWgCP>u ziw_8ee>{)7KjD(>iRKI!A*Sr3Y?yDdpQvEOk@P!~;$EcDFB6}F4egYwFtA70=9nIm z74%*Bm{G6eXP3{>i<1Eo+Z5*nXXd4=;S&2#zA!&rv?Lye1dppiLjB>byX0%HhKcm} zZcu*lv_V+rKsX$o&=1B*Sv}bqlh7^@JTQ8B3ZQDXkR>?1ADM=hEuzN|91kPanUrVN z+^Gqxut9v+LdZWST)g6aK>wp4+n=a4$j?AMP0DCeQvWzy^yx8mvo=!R^sbo8XvKSt z%#TLjPdaKU5;_tEoxwcN*AOfh;4cQqi$9*D1zo@mcnu3X@!1#z%2!GJ())gFUJfI$ z>=W#%zl+_^&P#Njv^x9bl&=n5)%IQ+GLj+amA(o8_d)-sSsrOpaf3cc@q>@QF?`te zC*jWxd89ufh2|F8tcVw2m?!e1cG+KoN2TyGmdOuM%itjMeFeAgvw?7*n8xjbsbC$$ zb=EHqnU8qS25tg0G9~I%WoZTToKm6|uijn!qs6cf8>Uo^j$@KAlrO}*Gx{i5Xq8_D zGV?zW^!YfD%wa>!B8a|1>WC?sq-_tE6wg+0lu)g$RRsb1MV8tzbf;R&R3AyRa5 zTG|?f`W4ZY(EFV9HQbftwyP8DoN5~9H*+wQ(BLtWXw|Bh;dHO^nyBp6q?Fl0^?Ouo z>G%X}HDnpALv7J%b+9pnSRchrdP_f$vCsHKpPjogNQuaELkPLHTvpdO&)EQ=Y;HmO z;c`29X>K0E`rxp;X_oikTdJGPI21j9jA3U;&$&jq49}L9gsSvYd>^TCA=H(^hzYh* zN_T*CZ!S-1x!)R($g63HH&>xVq%1cDKBG7ffyWx_8qQ2&NRYB=#P-i8$uwi zGVrhaZXPW?9Q(~E>)P*6?I^1RYS6(g-)6r0m@7oL#XXK|PAE=?30go-MViV@5%RpfrKkOr9bdiViakn>r5+zGsr(A?HDppkf0 zW`qx42WS}S^Nc0}!Wy{qz?b{HC>BS%fX} z{pnFjwy-6xP3`eWXL>#2Uvvcsh!KvZbFq%^;VpD%>nXV@@+-2ie+HBN6DqF65KXyZ ze=&L`w7`SL1kDqz&YFO!o1M&Vl9s2Wd>8W`EEvE9~&gdxD@;69~h-{Xb@a+5d=D4 zmtow$TB8aeI^~#fmd^~0Smow^G-A3V_s||Wl1EgM7q^cz zvCP>}Bz(4Artd`VI-6YmJTKAujy4yJiv^87<`|gLvkNL&)#%=E%D4o98B6 z3N*!PLjA>^UmCi_2(U=Ggo%9+vphbZo>ar5&IWrH>jXF9EK>`i)0%akEXSZPUcdJk zuFQ$*$Ea^IlJaH2>%vK>`_pASSrg)V;E2ytT}^1cY-R+|@&q?E_NkGuLI%sY8VQui z+;IKbDSqmMl9Ce5l`+LldCR9#(|$Q{58OovpEt#qI}mmKkXIzcAZ^%%Ad})Q(a2^? z7V!S8qAqX7VcU)Z`$Bv%Whbm{m(II&is}WSZMEfQ*1Q|B(-`gAtmR?=E*a)EpfIij zYQ4gu67~mlF#*uW>g03uj&2ak^bAX1ObRsEk$H*Y%fME#Zosl9>sulp(_}kUeBi{A zAN%tfso2vcfbOuraUfp>F7_(uW&e&TFy_C~jn8A&^-4geA0iVf48Hh#Qd;qRY za8%om+x&Az{qMt$7r4yp{c=8}y)aruh10I7x}6XI(75MuBdE_sn^jId2)}oO;2Vel z7bLLQSnU6k1iZTp1dBmXHn3*tOywVH0q~187i_J)zN^&j^vGpQY=FzLS9s$b==x&! zU%pH_O(k|hJ{iG3d?A;Kf$MA0!|(N-O#-C%!qYZ-;6>A0{=6bT6TYq&U{@4Ty|w$XrJyFnkpvq$s*^`PHa!Qs(l z3V~~|*OJ)n0}WWcJ%uv#(1sPE#mW>Oe7!)rdyQ7&qbnkzj-JZ4IZ#*bs2Mi$5EMMK zjn3cXVWZf{DZvE3v8mYm>){h!)EUH!sr}#(ELlO$PI-B`jeKRSWjEPy06=)nwUKK4y=i3 z|30-^Uje4})pKK8@wC$e?ItsYhZip~$c_mTYdOiA&L&$0XxkLgi8DLz){q09OLA)e zXz2n$iTvlK9`6|PumACGC(s=kpRFH!ci>q4AYQ6xd=jf693NyFZ*>%#R{WGbVmAXb zNylEaKqc{K(SYd(STyGUSu_K&WPbLX&kd+JKee>mGLJ4YGBd)z08@<~pbf`aBwdmg zH36EVmOtZa2PgfAi8}q+3baA`=d!N;B?uKJLZGWP@u@S-!IhrDFt3h9U%|!4ta}uz zHk^~}6-3nf=9R4Xi5vvwxKv-C;AP0J?2*x^L5hR$`(Mb>OUXCIBu80j8qdI9{T4f~>3EnGP$ z)OPi@6TLnOomaMNO)%)Vk@KZNZgC=DWb?;)Iv}w&rka_=cAm%GM9odXGmw=?dQeVg5wd+5|@c8opYQ8?l2!e$pOCgZQ;|9UqO@h& z7%|*UsXct!+DL4$(M~s)H(%g}P&+l1ho@&Ehy_hXU@vcK+fsFKm92UP#7V*-@H{m> zWhYt)ErLs)Y`fEe!7>`lI|Gfzh_;lIPu>A3If-9vqTRC6f`8m>j2DRgp(xu|-cU1; z6#jfy9SO;w1s?tCVXx5nxiZOn3t)B_5_P4l~;vRGJ*E0ohUApIsJk3zE!G>HVXiPftdxoS-Gr@RQAaM(#lY_x{c!%xW>}l&o z3-euoEnFr95Cml31t|G@&P~yGr^PV{T2#Avm*{2<(D!lQ|GGWwfnh;hxUGI#neaJHS$YMBpnY28 zhoJ0)Ao>NYOt-8He7XHK`CoJPJY{X(q+jQ17CiN{AcN~s8}QB=K^YP>uWNRhB5P)i zai}^v(Y4?Dm?oL;M9so6Bwr^ZU3?#K7)HQ&ax**4Uv*6Tnj!NL-dDG=&v6%)D9@Nt4ajNOXhyx4v6FcrQ;&7A3YW>%f_ou6 zeoI&MQ#Yy`ZNsWdG(a}+zmTx1_m#C zr?evR;ijLWVD*nLL2gJJ5m{A!Ar^%;+ zUSn3eD;v7MMmGbtj)VLE?5)cG-CMJpj#mX6flTFwjr#N|^r8+o#io3^K7xpr5m>6J zmj+=k&JLPyX({Dp$&LIrllO--=DYlqIU2QTQ36?@h&WntRiCyBPT&tG(Gx z**milTOoZPV-!jq<(b|E=+(uAdnEi~cGO1te9%(f3yyT@zvVhnc?V4FJTK2Z|S@rGvsLw#GO%+Q+(NLI||_ z3N8%d-h`RiYYK82qx__n)d|oy%c5(jF~-V6LhVIw9YDNi(jaKId4f*0lMq?4xAHn> zKbfDL8hvX1zUkMQFdgMOVnfTEZb3wwY<+{4l+I0gY(!{R${MX>! z`R^ZW9y~~L_FQ_kpW1limR#nA!Xa8d$4@(r6-SAFu9M99)FOL>KZ3}|k2Dmmeh>3c z9rif-FD#~29;|+;bk&>|iT>kO??3A3KR|1sA;1uLGuGqLtFqC76uQy#l^uvVge z6EBE+oh7IgKIPebc-+W1&D))cXS>yV^3bzBIwMhH^{>6x%~p5kbxlT|uMOVszwMn` zX3f@7YEX9I+dC#V=zjFX+-sA%?sPMvaw)QLyxcYIkN4F3e}0>-av>~{DfG8mn$lHj zl05=z@X`wy1%j&N8sbH$KzL_=usClJB>Z0befP#aV}Lf{>c8~rN9gH&Q7w&gwmB8# z$o%Pa@pKVV_)Aa*b7z7nBRBNhZNbJ?J)Q+!Tl;&0uf8mdG&DEr3#)b+krwJALwG)O z%XJbhAU%IkJcfqXFeQV$Jgyj+-)SVEdiqH?>$V`WzPKKu8scTN2$temx_m%Y_>7F_ zkD3+|Y-c%y$&BWZ$QETB3_{O6UEN3Un%Mnt00_Pg{Ym z!2%74i!B2g;Cc7aockz}WXCp6fi)1ZO^__7Z6fun4cU<*UgmKncfDuE8IOe&Xp&Ju zD$yeNw_C_}u=)yU$F(m=L%xXeN{+v7jv6t z1Nk{cmG!uV`3D+l+~v$D`Gi2~T)k+wC4yri%e!3=Nc}RsGE1yWeLVcw%GOGEvDaD( ze{a0a1Y9J@0_NVj-wbXjr9Rdkl_Wh@IfwMs{4T4!-Wd(*Zwwln^IiA4B@cW%G1L@k zW#)Hkza*r~n?F}q*k7|>XU45dJ=m4r`=(*Ex-6WE@8x$5l2@9r)*h}hiL2aOR7?`W zpRWwIsitF>2)7q~@Q(kN*v(!K z(;ms=S{(qj zu}PeB;ddib)JFwF9s}-?#6#xj9yl?X;_m1z^N)VvPpjBVr}?M^`W9ERtId=8!^9>0 zM=vZ!U)-=|*e3pg7AGM=unFr}rV$Duw?g$0^oKmIWF@z;z5w4!Gp;rdUG@eAmbv4Q zRkg8D@wfyw@U;3;iRh-s(J%4h0v8hj{yALIV{%k@4f0l6X{@w&gZw6}Adm#IbFoL8 z^)*6l<1UA#GxiFe1N6%l(SIqY>Z7>;j|kM!VCc`$L))zqZ+mc%VjL;=9Bd%sw$%3h zv^6s7g34I*eY2+u55K>CBDfnxTR6s7;+CF{Rzz!LL4O3Q;%ry?b4xZsYea!u$Vx~U zEm6;fh9FSoI$ndy@qFT$K}QCCt9~8kH~)}0IMjQ;_a~+?r{iV+yI{LSkHBa-S~W*c z+!4z5GO~58kbG@-yD=u|g0IBE7{Ro$$8%uPulQYrCzqhYF8mWSW2*;(F6fp=Z4)1e@38l%`EW6^G&yhjdQhU= zRg)ag4S*!JZEp78^nJIUEa#E(R5$&N+r05ruQ}N#I%B&5E;!EIHOxzjtUC4lEYByI zLHja)uDh%Md*4snsY1wJ;X!mnI^}+Lo#&Fy60WVl8@y4URlop#Bg>N&D9H7~iBPH8 zuylXWatfg9;mn9EB|j9Iuh3rh3>2R3vDL7n6Y7Z2h?4FQ1`QOxIXCLr zU286fa!)?PGW9)+66NLn40Qkn8R-LbHDKC}D<{O~|03!E`P>{TQKT&J0bQmzghtm~ zLEZSp-ud7nmZsy1D|ozIk_i6oSFMmuwyuvhf-r)TxfRWbR>1=co5oQ|KoCJc>`@(G zwIJmrnp3w6Mm_45sZY0ew4W*Vvtv1i4Xs|vJ2EEVbtqZ^3o>v zIu0PBG$sgHNnztRci%)(MeAFBw9idqD>k%jZYKVV#yVxayKPh;cE{`6YpKO7$9BQ~ zn^VE~jm=Sy>7QpVj+zGcVy}Pm{e4aFUGE&-@&$Llmo%?WrbBc`ECVu_N~DeIOB=N( zM4HW3=$Qq$JsaMVYTx+e=+ znVR4CM+_)3asCJtkXv;6_uSJIP5nqEj8cUr^ zn~XJoTpL)d-(O8P5Z3qUMDD#y!?ZmJlBfZ}z#A|1M~2_5j#Ovm^=^;4|GWn@2=qy7 zt1=@CQ_1$Ai;C7*cG(L4we8tk(Xku$-Mm6F2eR_NS}z?rnExb{hKRBK$IE@G<`|5~ z(sLq}h55 zp5Q;q{bswZn|=A*F^VhY9UMccdqv(`;Rnn6X>KFMvwQ+gL6LK^ zyiR&qmsk5MqsG1WvnA!f$&d%p)W++`b}4ZppNG>+f8u#gA3INufW{$Mv!5HpRj^5O z6BtYB36lq8n`PP%mKyF1QZzXZ8jR+fz(UDce}Qo;RT=4Mc`%3~SkUOsR9jn1vs?i0`P$c~N1Bchn<%oXPr7PSQ0z~=diAE5 z*7fr1g?EaccAM~Tts<;KP14f`8Ii=I1odeO)xp+N%fiOC(UhM#80ziE(@0s06`$GqJ1@tt_?hd}YL-UwibX#g^52Q;i3ollEx_*UId7M4W87;CzRyrB3 z79$2)cK22$RHw$<_zU$L@G2v>GS*l7XZ=b~iWXPDzGhwkYnChQag8)Iu!kqD}Gw7TG{d z755`OK@K5jokxFKvTGFY9Q-rT_dsQNAb-tUjn75&%W8?Oj3X8Iz* zFDV23lGp)Ot~BiVf8N#m#xi8|Ca?=svihz|xlNi@f7?#6UQLjdaKEy4S;vPuvq2p^ z>K^tdg{;;^L>-v_86T@&`QI&pBo8^K>W9DhQisn=Y)xDLzRY!iBPhzHZ*JYs^|R=G&)@v47Z7@ZT#RB zh`6KdJHBux&Xkk6&TGKG1h-az+mCU4flO5-8ge0cHlV{}%&w%VsDQa?qQ9U9E{if_0z-CyEzXi6;nrujqX&CAHgvmR~lW^zwy0UAI_YSE{ z)+5?Rt@&4N~G?s$x)&+wL?x{`MXEHYc0#EhnfBpum6M37NANt`4)I4~=j$h~nL zT;`hp>GPrl0P2%Uu>I+%wgG_eSg89}ne^k9dw8UY`+cz^@6+3WE7SMD+gp!3cQq$g+WF6!dd&$1hLC(qhY6 z<#`7Y{qcoGinI^lmR!vsUAu<`Sd3q(m2=7&0Xtm(pHKSNeLzhW1jg|GV8+1OdA;nu zZI^8_bmX-|=88T!?qT5XpB+;km>Wl{MWvR<&+YC|ApqLx{*p4h=CHS&1NTJ%`F-vK z&p9X&Bt)7Wu7ZhpV+G3WqBWm;ibC%~#2|l-c^&*O(&-r@czbTy#=Ammr7vDY z;tYwTp}IKQZ97E<)+h)|kLolWv)G;JNu#45q$g#Y=?d+JER*x4<0x?5k_Du=sEP9t z3j`_@fx)D5*Q{zS+`MX_P+O3iLtHB;4qs@np+{`8nz!9uPEk5;z;^XX!JQ#MVb6)Y zYA9SvLVc+Q*U}lwvHt#B7_ReOi83kjvXoSpDt^nLxV3Lir#A@BdueF zb0#K;Aw+~t!bn+fO?G28uRr0w*IokdFUSk4d`O1g~V#N-RC!A6xGV-_*w8?MOxLt%_}q#>&@S zC8cbDsYp3<;f<<7v-H`uol?R>Y2Z7+V-N(Z|NQ;n&1#33JZ(VN1so~hlzO;Oc6oIw zztr6Ox!z8hU*!uOgCe&sr@`x%m6s%pD>WF6%72qvHxG(r^qw$@^m}cwcCw2bp=v1^ zB=67P)%E#i>eJLy_jC65$FI$Q?|k4t@!$7Rk^)pmTKZyV6UgxSpB^n)Y0$8GQyrq- z|D->5$nZ{rlSgk*iZo;cf7M_urS>D(?-TM&RwT{FmtTb@>ja)pso9j{nG zmTa%!l$+rs(lJnDYeK0XN@8rdEzc4r#?jVYS+h}EgbWkJOmVP=|4zhX_6cirW z6z}FexLqk`W*fMLxAluj57gsoZ_Z>p8{8&elb=r@k<4b?jHkq({J&D(4? zaM@x{LhWwh4fORVPmuxrF&K?EZoA?K@h#z`au+_g*8wAp?@fVyAfegxyYz82vF!SQcD`8LQypP=SZz`SEsG7 zrnMdWwjWTItt>`34q!h10&Dg;f@MigNp)Nk7tWv$l3YQj=Rr1VcjTX$Wi9~}1-{O= zvE??GKW0hMEKl&=f|K5N`tjjTYVd8vmo_t2;v(yL^dc|&Ur=&M_;|iM{P0seiC6DkP7R$96XQ0PeTvXKDWY2f~s?eVy=knE?Re|eB@V6bvV+M89>YJ>Ev zetof{Q@p}$A%FXKcOuA!+(r#S!Gpn44~SrB(BVP)!1x63ARt+p)%xMHV1kWLM%A7! zy#?jfmiQgs`e@Ujg8j)8uT!%hihrcCoW%dRF*K9W1fQcNSfmwh4L@%$y_n3)31%aJ&se&mH85}zv9;)ET2Kfl)o{J%uOk0OYN9V%= zfrPZ9C}f(RCH)&BK!GMQ1WrCa?h;Mbrw|rS;)YmWyScXKG@>YrU-GtE{?wdtYYu1^fpukP+;c-b+Du9ZR!^N{v5rPTl3dMmuO+ zXxIgnK1W`GS0H_=?f}!%XI_0g&p<}1r%adnDrpVE2R%y;t6zwy}k zH9Vm)s=!Kmi%^Ql`~sv3!5ijp@2Q{_SRzj#Qb%S01%u#X4PCG}s9pR`NcQ)pa98yC5ELaLq*z#w=dVvKCY^Q$~ ztmXctAC*5V273DhF8N;d>A&iIvD*BuK{bDZjeJH$i{P|#aNQa1yWo(5f~K~)uU^{l zdkr>xZf>sZe$=x_V>OSe*2Bu-m5Ec)f<4>Zq7mBJ0ZHdBVyU$^$y{!c2FqNcJQ;<(w1u(*QYyMly-ScY(gHMQB3kMo?3^UK zFh}%tTl4n-+xXsmsFnkub^B}NQBGnP=?^6KY!wG%6Rskzy`tF#xQarMr76_UjSRO& z)R}#J(BrBBl^9DBu_7;vuwy)zZw}3yNr&1-kK7ruj^_ct?)gIGxvElH(5IQV0HZw^IAsoG-yt|LnCqKvq=&(&C@Jw%kT0=A_Wj=r2FagN)c5E8Q3UpB?n4L{c{W zxZ1VdruHLE8b&rs^J{w5@Xf2!)+`O8ma|iGf^`8>+L?xRqau=$I&iU%H$2;s??Y-z ztD4&EM=*+7E+?Mq-#;hct8}z!$UHuthsBLXAS|9BhY>D$?pT3Y$VT&gzutTQQsi-=4 zFX$gmy5k_!?1~2R`R@%52fta@0}*0XP|ITjR5{A(PG(P?`Rm)9&CovLOXm3d_oMkg zMu3pnmE6yOjI*fkDvG>^?$temJ5XJ_h=kWOTOva*`N63$R1gWR2tM0&g8#HHYA3G6 z`EFEpJGj^vS-91<1KHCL6(2Xwt*4Ua$R*lcizkHJLk!B0nsd+KDGKt?YAr zoO+K1&*@#^A#oH%a?J4(p=)Ul-8x@grpbg#lF)#b&L`pY2zVRx-eejC1*Tk2K@lhV z#eGvIG^nYo^K^$ja-p^T4DIpZ&NjxY1v?@i0!3QEgEA9BWqO~m@c z;{iO~*SoDtJqWTu!FaW1@XE_H3H>SAy}<%hS)GZ-oh!|jsab_*r5d2Bi6@aGds&v; zX(liH9w<_NI8Au;4{1?wV-qF6M@Zj)M2vQX2Sw~8LSOcLlQsK=GWoxcCi^1vOutKGhn|G18M~nhEo_n?KNU`pW>H7)*W8eZ+1%OiSe^)K| z)=uNWdLdYnMoaH}`dnzzT+(VM>(pJfIlez`qkA~{LBxG-&1@^*sq02#!VMXHw)zT_ z12=h1HvG4=M!f-DmV9#OdzHWTO;Lq}JphxjTvB!?OYd+E?NtplIj4l-b@j=>(Vnt=6fm}sC`6G} zYcR{jEFgW|U_;K!us4N0H~NI>TUP${_&kBPXMWynwU#aMQi6ldT=&l;#mNcUzju0> z&eQ|9p&DwF<$@7~PQ{Or)?j~+F90vQe;NGKaa^ns(q)8xJ*(iO#h#5HmssOiAlr?A z&CE&#e~5ju()k1))${F-vxOiBSAtK3(mp;;ESV{?0d1)71hFKFAiD-Jf?Okh$E8A^O)>g2 zGaEkPU_o^iz`c@j4Mct@i@DK-k8N##E$OvYj+NRdk``bEW@gP7@F!Mj2-#O(B~5Aa z`4O6IXe(@-EL;^tmzpp)pwYFo@vTG-{3U}aHSA6^g*kJpeh6!Y3GKsc4?iqrX+{H* z4}X*L)A7oOrNbK*wM{%Kp9Q2Qg7ToJMB$f7IWss&J|jTn4!SL^rTtv_}A;Lvh^exM*V=x(}fM3q4l z?|V%S{Cl&t=(`=Sj9IELTVBf4=}%(b;oa2_c6W}fYMiu4vyL2LbnhLUm{BO<2ssiy zE52&}H~s4$KJNeT&&mgQnSfa-<9CO5S3Hsh5^UV%Z9h1K-tT^(qGeWE*79*E@0LTQ zwY?YJej%r?(_1|EZ-<`8K-VZqY z{kHJWEY$^EasFZBS06t9bnbvd@kt2CeXRkgt`}UHN`&+{Mx@n9d#T4zy-)M|_M`x=HgFIyvaX$|(jxC#>ARiEC?%J@TDnxghUf zA()OYhHF8i&=>n2Tb$ENmvYb4d=KS^-VIbeQvgh7noKhqey%5E#C~??W;LHHU!_Jc zsa`ISLK`I6y=n>IWQ^b~(Xz~iNb1;HK128sy48FcrsucYR>&n_%MeLX%HPnZAVL0R zsfN9FX|ARX6&Y|opZg0C;g|2@G4SWlXiVyVuqEhSH*mcF^qG1wvG(q@cNk)7qtbb? zp(bmG8%}+u8M3|}u6)mKhkP%^%DQgL=s_(e3xbY!QBatE6s{~c2*M8~MYE6cy}};5 zED;jRp={YPYh)?+Wx~AE;p;I?pXfB3JuS^h9Qc$d!p^aV=u4JUN4o;s3VgNfl_<~C zeEyuE=>8&F5QBuS(hZt?S6Ydr(C`d#Fl2v|2p?WaqTKA~+X~FfIy2eb)F^T7Aun;& zZ-3Pk(F+@^bp<6R)_;44OAo<;+CWf+fazNv|HSLL-pDhb)BseNq(Y*9C%u(`+>FLh zo@$*WA|6&rN?TpM)S zb*f|yx;{3zfuusa6osg198Xk)hUD#(Z8JZw~4aG+^Ygv~2D z_ZUM-nw-Zz%O{TN0@53qn&j?@YMAej_i^GxBn)bWocky|`Xsx^StvLH+FXr`5^aiJ%iI1UD&3 z7@VqH{@bIn!~q7dgtuG<@EK;F)OkJ3|KTck_1;$sm2Z=q!R3|N&)*X#Zoige6x%nf zeE!T}spN9xuM6)D6%I7F-d_$U74V(>>*ec4!+8_8fx(x_tC)`^BMqKzeHQ~Z2Zs(6 zORE)*t9>_^PDHFGJPGb-kox);2;=^pyf0T&@5*~(cmS)`-)6yy$gFJ#9MSJNk9&yw zuhuw@V03^)m!YYO#b!ucSLKS{Bao*iZ7eOMea3|GvPpj-BRn(q=TGr+jbM01V+jSU zc?8i2F@#terX5InI2YWuqMk}MECae6*_P*CkYN7cz8s`)fG(312pf%)(m^+86Fkr-Zb$LAQW(E8X27-5t`6f=YLbG}7VFEhUI_cSwhXFbv#1 zo^#&&d+-0s@X?)tnt3!24N?<|5(-Z=uU)^J=^ZzKs><=i;K664C4SH! z@j_h%i2^6(ID=S~#ubE-|0i!=mxqM=Fyiv$4O|WapfB z$1UgG)B6LV#_TEkK)eSKQeemrCrc3f_qgDr{$al62+7#EA~KLq+2a2bO4b=?qCh+L1jb^D{<)H5mZAI%uL ze?;cY!H(F?w9&?|7sS zXOC#5=kY|%1M(g*KBJNca49X2-M)i>IyQ&CP*mOSO!Ea#@gHl3lWJqn87q3ydLRlC z!;iFrNL~t-N(Zq*a0j2gzOA*FAEPbQrY!hS?eLM3N59EjTIemE4=v{yJB9TGs5nV*$UA~ zS>xv}L8g6pC2RP}0q=w!ql+sam;WWE+ZThc$_9-N)6vPpo>y(&y9@WwZx#D059^;4 z5=jup;O&slT=K2_>0k$R4j0RR=p69ZK_S4;MQ{LDmUYKzlg4DNxfEL~z4QXEc|MEf zj?kd~y>8jJkzvgvh#I-bka@?;`)V3IhdC#SgML>*g3E2H|ej(l?V9Ik(7HYN- zz7kTuTv&JX>pQb-hE@t)9P*hodBWh>szLa~{=WwA>Q`TIj)Z6_mrI!l-1N9}88+Pdce#@;4OQl zP0UmA&_sMPbAjA)0vGcZ;Sb2aW=X=Z#EE8+_~mxHScZRNG!x$V@o>rpcl|~Q7OcQT>k8U@Xt}3zJE#tF#-zJBBji2)3n2cyYLO4 zQGp$ZqdRK=5(ylyGowAPNCN=1a`MfDdtv2?-8aEp_d09OF23@o0-SX*+^>0o6A)s* zfRqGIr0Rc*Dh9j-3k?7cUznBma#*9Y#$-4pI{Kg}=1{0q4Ms2jK}F4FN0rK?vQ?SC zvbA4BYqCIYLejD$QQ0u>MRtbmVi9NdrD;}UTZ;d$j-wm9eC?(9lE)j+vY=@MOUs*B z*dJaRcp+E_!XtOu%0!X%~oZ8tr*P~EVJE^mY0*))RnDf&T?sG zP7;#;ihWg%YD1UC%+I!fIOstgKmmRm_}Ly@%#1+VjDWslzV369Zs< zfgzWR$H1`62fuy;!KDAc_6^Sj62J&a3eLD%30i5Ila)hStkiE9DrA0aiJ9jIn0osl zsN?wn+b6S=fTO0JJ(~MJZxsaGA?t>neR4OrdDz7iJ3T+dpkh`%mB z>$E5Z!PeBq3GFBYy$ype5MQH_I}qw_`JqukXb{CH-v_%{yeuH+v&*kEYA&-)EMnGa z%o<9q$^*iOJG6H!I+Y#>126Pq9pkrAW>KD%l9s-jrMA@yHl+zxH(5>a>wow2>12&3 zLxk2lH3!uda08HNrV(WlfsA2!7}1P~v7Bubt|Fr5d}K>K@V|~`N4qCa3PFf5XAwLp zIZUT^PEc$xg-_%u0+e-;u+G_>bUKqg`MoF!Z`{D1e{}F};At%6H-ZZ)k$|!|jHx(l z9U+4j8R6sS#Ndap{zjKQP@Vf{@Jxw?RpHZOgk>=PnnHCd!E@x#=u87bVp#G&`0JH5 z5a3a*sS6IL7ohfNYfSoMK;m0cQb~zZyxn+xO{i3J8OW&?Jo@8SruwPXZkpNul0wv@ zKoI?_PWQVP8J=?CjUDlBHi<@8bo=$_=De^kNAill=ZP~nbuOP?SkuwjS z@y`cZ0CJv5$i-rn`LcUQ!LwJstrHMALeE|DFW}o%YS^?9ebBU0@~~&BQi_2WM?tma zj+^*JfPDy|0UqlojThzaN6f%)ttGNSn4C2WU>{WQ=y7m{{?9n2hfui|PxO!YU&CwD z7RipjnQ5d{oX(;c|ENpm+Pa0Fli`CL1VoKNLgkleJCG4-zk`}v6+9ydDZm#=r=B6| zJlR2uSur;fXP@Z@zgE^$+*yG%7io9cYQDJ-WfVUQ;d!XM_%j!j6QpPaN@V2V_Zyd6 zsV0JN*-FD)NRaHs84v^jFKY*_PXxmuK@vsQ^3f$X04kSqWH?}#As(~J5JX7Vn?JLmQLn@kIAUP0{dL&^hZNlzFZge60s|PN4za|<%DK?$6h+k4Tx30w?!W26rR}pL# zetic1mKI-ih8r*~6gz($gxrRLi@}V4?sw9K?g?f9cC*#5M?Yd$yNTf6Zty?6eHw>2 zS?e6b5TG1{*h*CSw7ra}9U9}m z9U6SK9Ri{mI1I2x^0uap>8#Z*kS8U^4OObHyP8ewNF?y*1<8V;u{vM&P5tPCkXg=qNN zoQ_B6*V?4ltUUai`*00sIf5nOG1#||z5xw9IqEm}4tBeh%8&id6-m4fAADnTN|hgN zOj@q;Gz_Pe6xGa?O>pUZX4GrG^*ZFSU4L2e8&bhJ%i(=)xwM`A^0?ZD)QT}eZ@BYWGeXn0&2_(H7=kTxqM2axMabr&W zg(ml6iZm|9`8L0=@LYk^q41E0arVqqaP^uI0`germKT3_-#{lNIwi9E^o|&tM$YBY z(moR6qRHK!n2VtYtIP?4c=u1a3>@(d@bs-}nGSx6hQ$92kqv=F*09DbqGcO$IVyB4 zoEnWx`ef|=2EJ*R$geQVJe<|14d@F99|Qs&&`&JWtwu7NEcNRhKH-iCvJ`0ZT{!Z; zOrMf&87xSu2Svuh{Sv;W_A>m^z2`j>_vLkl-?-t96Uu`SqrDGLlXcXK5Y`}c*AFlN zSL@2uFtxS+kbfT8crQ|jsMs=9e@(tTC6VtFuZ@ebfN26tE*(0KdR497o+`WIr;4Zb zZrAdTi}h;nN!S1>jwLaPnV3b}1B$9I5F`+r>vtqDgAT0ZZo_MWg=47&jGxB%CgXz< zo#ue_o?m7MK=050Y{UwY3L)Z-|5SzWiGs({k>^@>#AxXt*W=mFQ`$r9V@wi)^Hp+q zc9?rcEh{3^;tYzU%cu1McDuFNZNq@o5cI|Cm)VdV=z@_Q(CCQ#t78XVY?D>^13=Sm zu1e26_G4MO-o!T6(X?_~KZ^Yv9di9{mxJRQLAgv5d0?)H(uc{m7MTzgg}fJJbo8i} zj-g8E4`d)Afbu$jn&;hTwAE!`YZKJ7r%{=l)=8}2_-Nr6#HP1kJeaxK47;$%zP5^f z(UDfN^|g=L(#$@>`#2wf9NrxAT?$eDohGissW$*i3bhA%4LCni8K6$ja>0);dXXJE zC0g`#oSscRr{C)I4 zbU3IC*Q&(rfhaBw+D3r}g54wG-x|;Y=GUf?Ech5`?{M4{s$9_52l_10JgA}xQ-6mC zW9*=H)(66T`D9;Q&CtAJrWsd7r~)nl*Sq2%5+|Fi0LUL%6(q=dIEvse4Z{#|&KL#C zw+JU7nP|x`r7!(`3!!+I9tIh*C4{f4d5<}jJc5X_lbkj>lYkNRC|IDP)i_|_#p*CK+*Q`Bl$AUu?3ywyPyT{ zz_q$wHyE)VoiPqGuUgo*3o1>dRc@>AE+L`7%83r;7oNjAM3>&(aUT`v7cg=)Qs-Dr zgC&lm@_&n$%ckJ5S#6Xs4Hc(>eXDu;>tuv)1+q#D{rvIvK2#yWkA7bz^Tmh+ujk`r ztdM+oKn$wzABvMLUnCE>^QG;i8yh#x`*3~>Ew~-(t`<$Z1ExOvmA0b{qjI94TPw={ zm%0Q6083EVU|J&20*#1_EY)u)D_bdvxlukWn8Ks88CH;+zmZR9Jos(=J4k8jiZ9Vb zrHRE@%9@Vxb5OH-g2p7o^>MYyu=euvkHjPo%eoTPdG4e6D+2OU7j}wv2pUf3P_CM< z`&xao{AF5il=t%K9rsECmm-HoFU6n$GW8eFoE`(W$-&QK5ZNts38tMM%p*TwW!mLM zf){(`o{BUPF+xhOHC`|$nW$vf?p~RwU)0k~F~?yPNKHh5HgfoP7L zJ6jvYc+W)R=rT^6SgBUyJ>)!fmKs z0!w>TrNOn9R+U2#TOVv_?;EJogKx&%oE!s7}A z>+m-@j2)=lHQ*|~@u9%7Pc!c9=iNRcL&LtY`kp&}n2`gmv#}^PTcI zOcJ0nT<9!JS7=U{mv{RekrsbJL?))rET~QjiKgU~aD*zVLci?pC5R|wbAKz>SQqz< zIVxm-9dEZ(^ijW|9soc7q040bH=UfW!D<630d>f!Kxp(5j_u6x-D8?ThxC#?;~wk2 z=rhemBn^Z657oc}HytM!Nwt6nu~}9_YCg1s+?2bzzX8p{HD=Xp)9^V=51uE`QWT6q zyKQPFu;{_>AV-DRx=sL4^&eZzL)~sHZY5CQ;#gjPO!bwPtZL%? zh*p!jrL)Ne5hdk;De14LT9^p(0dvj(nL)LgFobf_H#O)6(E%%KsyL+V&cLfQ8&915 z{Ir1_d0b^3-H+6J>W|fpm}ScBD=;oFqO>I4I3lFO%j{i9BO=2E`B=jkR+D+2)o1h2 zw@)%nemvADrc+3{MQdY~AtxNKT0QA~q!0v8cW6U@7h+sVfkeUoQcf!DJt^NNNFgw~ zA)-yaKrp)OW7&_-`L;8J+UPol+~r^mpG}b80xRAkEY%IHF}8A!?$UlqFc#MQ%2TKRg;CqF`J}UK=sJ3X&h6Or9&bT*^ObGYY_Cn9mx`+F z45#Pr;uM#@Ycay8 zcT6JZaoVH*GF_!Z_5+}dMXuf-6~&EG5pM+0VeISS@{dZPAU4zsXTvoOE%Ut{dWYq|H6Nn|pw!~`E6^L}sg-twQ z*a7bGK-pb3#X!qbX>BYyye;|?4YYsQpd zk?c;ip4IzvuwkU8X*Cp^ax#G#MdxXC{}}@J*l^$+z3Gst`OxIx5S5^I+k632>22pq zV8ex~yj}X^XpzcTLG1?`7ty?$bzaMN!PB#|x;yl!w{K9JLtIuNf3p~K4KCn8*ZBM{ ztKz&)i?bnIyUH%5wSiz&sQ(qDu{YS4N{^7+&3`F%Zy5IyC+C^QDG^u}eakaLB_UHOf}}!eUnvv%tbh#Z!<>wou{pnx>xuh4`asha zHypH2AM|gIJm@SzCn*oDqY-xJOn!EmDQp}4O=&>uve#G;*8c3!zj!sO0-Ypq%X3Dk zRPdB$i70tllGjd0>!Tenb~cQFK=@MOVzw%|Kadxsg&x(IOjv={I($bns7U~HJMj4@ zI3vNCSg3xz=zL}Ych8AT)Der`X+|iosI6{Ji>1O97*bT|qnaDa@nz~2k^NS$P8T`4 zYD_Yxsi8jmC)l+k8T0NPpW#*{3ues!TU-cjz)>jDotNqH3=&0VbIJ{U(Ck9L#@zEN zeBuC(WaguA5=Cq6k94tdGsZuGfEha#D;1;YhLHFN#5=f9cG00I?0p~|CqnOfnh=?6 z90_t~mlDn>pnnVi=1WORh9cKRV3P`}q8_+VAiYL-YWl){niZ@DRq-no0A z`6<93O3KbY?2J290{xnR>)}e+wY8rtsWI11b5Q1Yvd&-(Tj75zh_Bs$0z05p#U;nj4w#-^$iL$>~;&47384X z$!M@E@miW+w$5G>$BYB)eKC+zLabhf@I9EFNh3z=?#&gSCz4@^#ZBxgVvHgZ_7^;q zjoNHM&oX4)`4EkiRfHHdgp>_wgomnhZ#qvmjE7til5C$kZYS3>7qIvM0d_VEQRi01 z=Z^*WYsQLT0vCN*r<9csRGO*44=Ci#`d$)&ebniWqjf!+)jCc#+Vl zIzRuly4K1CjY^%XC6vx|~G zAV$+X*NRV^X7reEM51q`E>K)3WA7m?ml~(_#C)&n@9^Wv>kco+g)-OAkxu#c+4Buk zh1@@2>j3%i54WKJsFVI!CK@5@_Tjd5_!pVnU&ZJwC*56DUfpHha>N)yev|Ql*4l4W z4kc^#(k!2tohuKO6z}*tD|aerzvAop2%k)cv&Jsb{m(dgE`kqVk-UxAU9q|9icDFXj6cBI~LjK4lM!E>W+S^56+dbS?lhB z3HYAdpqnG;f)_9);3NbS*jiBs{&|hA+DUez15bmy1abI0%R13zE2Lk*ApuhK>TbOh}$+{5DTN8$m>)dK>K1;OMOmlScypAWd0GMed> z?WyG^FK4iGX7x>d==6%07ZfzUUTC_l=;91~=lYA=S1gkH`>L+p0hV=uI?mU$HSds^ zLrzMIuXq=tLGmNl6;AdF5~RSaiJE+Q+%MSTMS|cd>*T{@nH zN}iV_DFgtfVce8U&!(x5aW5L3%@g z@RqFj%4@esG<}zS1nVL?Hr5-8=7Fe1OB9EKFL&KVi#|i=`36k;jXL1T1Ea2bm4*Vm zj`NdE266_H`XrsiGt8^Q-t`|3&jdQ2;fUW^2-zCwl3f*5XS2Fh@BN@QME%3QK z_)yo1hbBiAw!lqC*Vkna=*3idc+|qPP1cB-9uM8??Wzq!c=KpX7YTIW%=P(~C3m$JL#p!;EyA-I>81Kx#c zQXcHY=iWho-=E*z!wmRZ?+ZqK4ow7qPZ@Z2QF!ln{V@L75p=6920L@V8xH~*9}_PQqmHO}MSpUbCG1SEOo!lnxVY`iSZu$-fMq%4dGls zYXuYUV$}CLr5lM%ij3xBs*|-Z<<$z=(uS;HlU8Y9Mw_LA{#O`Nv(*oa-f?<5N zkhfQivgrhRo9GpTXID*hBC*a>CtdY`IIlwWLV2fv)vU`CYT$ptJS;XMqRatpv-^p> zUx-#C9{)^*!AylljoGW2ZTOqiS4}JhvDNi0()c+}z<`JcpjM8Kq-Uh$5B!qlb()r~ zIThh`9YQiQ|9<0bPvSntTZT#~Sdcc+qCa^9q%n6B zOFhSsjhL0nzHWjLHSq;+rHTH6>gTJx>56@9|I{0vFb(w9({au_@tbI?hQO7h`n1S? z(r)q>zZv^6SSIi9Q*4i)6jyr{&i8>I90712o<5uHe;`BNL+~STf7*Uo4x7iuBXYdB zexeL&*6{mq@-I-bu_Glv(OG5eo#oPGvy=v}GZ2?}Cp~(y_p!_n%qH8N)eHvs~S5^%q|Zr@j{% zIIJ`g{ZecqYIl%qWo)~aTy&l5b1b(1*`$505L~k|-gw9)XbKSifFs&0^G+;e9>X`m z939UjGszT#fOQeqSg|M!lXM4cr+=Z{fLP0EM8hoeES=5?&l#hgaq~1>m2(zc!PR%? z&rmT3kbRqCTxa363WY?<86l}6wtzVJvIUar@vqJ%=&=Y?su(=$+KV;jZ-ty7goykI z_$B5(S=k7W5ahA&?yTavY7z90W(_Y?XiD0f#L{#cAZ%e6h z1zMSLT}C+tG!GX-g(yo|4B-m#LU_oJVr<(3&|F4ByVwZS!F_$01xPjZ=-%{sKLin2 zRTU^?c|*g9cFKNS47S@cj4CZw7l?M1MhT^C1q6S;`GS02`;mB9$7U(gGvlji&U17N z<|du!X3yPERt@@PIu;4iID=E~;(K`AFBM0!`DUn|s+Yu_p^!2!6t$r|*7>5lHlDsZ z*4F@}n<_2P=ONgOIVdUqm3FkL?g-+60OxVugC~=_OtyBgd5^nzkHDd-g!MEl8$8!Q zqYl?X+ztkc-QFhV-2Z41ytpo(gjRA-u0;y$xorqXEVhcj=Ht*jQNo^FhO+)Cx+ZtK zCowv?S@OMV5kqVF2!rdgI`TD2%{uz1p&zL~BMPLGbFnDdQ!7r4daKu4nsg-^TyZQI z%Xtmwc-VeeNAu7O`{t?DAb&AF97tVt`d;|AaOLpOkgB{}^jH56`46 z2~KV_?HY@y{9UUQeg3QN2KO~R{4HBnFLFhZm|6b)4moKy2-2*iU%?5qbrZR8D4m1r zuoo4NjN{XF&98yTT2Mb zF0P}6cVZ%2q7Cp5xV#Ysk_@z_q8<`tv%5M(2Z3CdC+pk2KHs33PR)ab`lbRCYnbo4 zES1Ff=IyIS?$2XET3kwq2o~NvSfYtsQQ`i?B&3JbQ=rsCtX&Od-%4cQ=Oqw4e7Lrl zh(K#ArYwB=vaq;VXy<7aL$*hP0vpl+ul@A*E?Q*lY2;u;tIMB2;r)?HOd8vYO%o0Q z#UL-)d@k_Up$wPFdQ81+aGKW!H?n3}Bo3tmQdt2TqM1*hr92fp+X8Dv2TZ^VpCIys zZMtYDbBvODd^J^j4`wuBqAzlF>y-qnWMOm07hQMJP z)ea!Sw{-B8&qc0=$7UCQW^}wsPbjL=J^@6e?An^(!3y*gwj&)= zp$jUoE7cbg4V#e{f%^0ps;mS?s~lGi)I0FvsHlctWeB=JeCg=ylltG(wQc>~n(qS9 z+P^M@APJ6=ll}X{%V566u=#0Y+a{V#YF*)9Fi0|=zEkk_;^4U(x|UM;%EDinqY;qN>`C9P@dj4|ZDf{(n>`T1|K z>R@OX@a+ngFlaF$XYYXzw?iSKa&28N zf}dx_i1?nn3@5UqTs>2kL5TBPPjB(EIXY;Px0yCr3Qb4`L~M&HBA%`(rEnbbg8Evi zBsKH2goO(=k1HGWU~y(oWaE%_+litk-}rAR{me|F2!8;!t4R={t&?FNAs5d6?c785 zqb1QT8gG=&fdxl(920q}+#$tJsdQ7qz2RD17PL7ZB91zO~q3 z+;R+&)-eo>@B-MWXk8#-s~R5&T=<$@dX2r!Z0-A@$Oyme(3#F|zdUOG%&jZY_=o=j zi*te96b_7Mz1QN^D`}Qy0}#Ghg^NQ0BBhE7)irKxf8`M-lZ(j=a$zS;2E?yF*=GLf zr}WX_AV5^-k!|9nn0v|dx*Mi4g95i&ywN}~My`PmWu8<0gVlhCw1B~U)rl7QoO5wM zI>SgNC{)UZBR(x707oB48o|m`KjCPNR9>lk_h=!RbC;;k8s`eaA;0wbvjQ8G*KStT zQNKY|K35SZi$_Pqjg-mlKt3W?B}q-B3k)#lUk6Jo}~J|q1_ z7Tr($nl6uUdmbJ2cy_wX)YPo?y#4yaJ6EdiahJk;(Q%Ma2hZThNJBVOOyEaAy0$rH zWNzRMrcR|{l%Mt=GToSU5ZO@n1y!irSZV0YnZAyxEh~~>;2DF0$_Ywvsjw(Oc?i+H zO-cztMlU;iN+gtm^r>3yOPYMapBh$-t?8dX)uOlvBaNCp)N~vRIn|}paSIW^&mm{} zkt8;xuba!MS)oo$_d5`8_`IHxgqT=o9T||eS6aAgbT|U}@#+y9D z7cxor%eY6$OFt_ET7n1*iByW1^kTv>71>EG<1poigcRysn$o&AYgL8k7|W6jMWxpY zlhmD<&WMbP_^-*MIh>gW41+}b)tQJ4{QRIneVNBy=Qgp_B4YqcN4J)w=_J%n559`B zi7$9-tw&-c^`i3~e9<8VCu(6nMh%|Y`xO-&&OW&#yTf)agWH&REp{i9&jk3N=@#_oU(sZuH3IvN)x$FOAnb*&*{mqvODgZ~ zfx1yL&rxFYK=+=s-%jsDk3QT99scxbq_V4L#$)g{fHc`16|*@fcy#cTPQ_OG{3Z%% zXyRLB_KL8-4s>DT!*JR{?^<%IZuXqg2WHk)hjJ0;6{4xO{mz9J!O+lV5$}%p^}tYC z44P0#t|`W*x0u8qJn)M#$lV>0l0-6RK#7^P3HlC2Ua#2EenF1x{9=jn9qDaP{so3^ zBUNGL=1_Ti#)~6#jSl5%uip~a(J>{PM=8Ba971lStkK6t0k0<@46H~`r-F^K9Rn)n zW3<1vIxktFd?CLKtuR4oz1{0>$$;e2Vs!UEIZ8blFx7ebjdq*@ieH1L{bc)?{#{d& z386l{@WuP1_iUH)62gDlc$AMyqfESE!Jqp_S4Xp3II=mhCH=bz9)S>TH8)8K^L53T zuPR}fE%q~&OzDNyIYQn?g>F)cr-yTOGEr=(ac14m81K7^@xjb7#}_(PtuovJ`u0Tr~Xb4_nG_l_q}If zNCV%lErxS&1l)FlvtPa9@vsT8n-R<|KmewrS6|&fG;HhDo0CZ$`5OwA7Q`6nu&& zYgy%nl9=v^^@rH{((;Er7-z!V6y>&WG}Z;2+Zl3q>=`=^t?5&*kv)JxRB)PUEi2|Y z{zZWP=Jz-X?UmV{(_y!Y9FYl4H09UuR=P8K`SwC<2)~sCsr+%q7NUa~ zHB}xc=DDbgGc^j6%sx7M@)nOq8~Uaz6jeT0Y^$z+;|MU*(*TWSuNNK`mf$LZAKn`+ zTV;yzU@b5f{941baM=1MRkA2aU~hc7pUcMq=TM&XOsFXk64G0*Y^8ne-Jrd(zr`ZKD2&G<@v2TO!-$^7p_vI z-ltG+%+1kMLew*2`SGKxLvPzS5d&%>j?D)K?=M}xQr-GjmoJmx?$pB6rfO)&XZAlj z8Tr{m?ItOfoPlocZ;?BTFRE~&oVDcA-oAyH+$JV1amZXcl>GYjfu5?Rr+h+H(}vXB zb0+1XU0k`|`^Su0RSeNOwja7vh~v0*oQRlpY2{j0ylp3F?JHXcoHZ~D?a<2++iohY z$}<|-6p{1QDm_u`Jh5a_k6x1r=`X6_qpX?ZUn#t?s4jnKP6i&pT=%!{(kL2ub_-8x z4Wj~o1~d`(PAFLY*-5QWnwc|OQ&6BOm+3; zq*U1V93zoIMVpS5k(z`4AV=6Ie<)kk_d4L^W3$~Tke;{>#+s_#3O)s`C(iO}Aciyf zLG4Qn1*?;k^#PQp3c(g58CrDYOdk(=S4Ayv65aaM85F(LF_^ObaS9U{9%bd6$?jU% z)mxM%lxVczO5;*Q%!z&P3C5LD8=0heu}i6T#==5$*UW?EZ$N}vOC;U37@@UZ>+-XE zPeix&9zYOp`Lc(uHvH!x2Sk$570OPY1mAsJuCM(;@|V^l{2`ZUBBm3dd1MaRYGoYs zXCwR!4tD8uD<(o^DcfQ)jbBXNiuG<3C!R?sK;QC#j7!qzs}U zl!i_U^>Q&YhNN>b7r7P!gk*4% zcE&L|Ub$9RwJ|Iw%&5Wka3=E8NDNK&T{mK{XkZ&k4s9>`dSEVTj=M_wbGpGMlPChZ zDZh`I{N%%Yqdl8_Qe%NGIFkovsHsJ$YRfvmpB1+rr`3heDdC;v< z%(~-4)vhv;EXSMfhTC8rG)ViR;gCqjh0EUClWNxt>kz>tutrj_mp>^>N{ZkB`p zJFW4rpo`DuR$%fes>i%`2mIfS>nUL}%Aqo!FB!Mg2?f}U;ubaiSt;n?q6KmWOK1%GJ#Y6|c(IZqS>*@%|3p`Re8PWQ==ra$=GY5fvmj zvpPQMr6JP8n!dT%H@WH0dLoIKPw58bzW(Yk_nfY6k%QH!8%kuJ(qU?ra5j{PRK&CJ z)j3vNshTk=Nhf8~^cpt>mbc3FbD)6X{_^Tdhu}L@G5BmV-?+_J{ySq+(#vetGaoDq z;Edq(*?V?d?|=w=H}4xq=6fm>iHU{`iBvfNzX6Znb1rDa|I3>a3Pn@WSz_T%5vmUq_kF2cyB(S8vf&&%_si6a#E zdv{Le&iXd^pLh?+eJxviG}DSoubdVxz)fm;@ay!~VgquSrnmH`gr@kL1tQtZ=TvSM zgJJ7^@^)2B*&a(Oet69$@!fQ4HCfyKThQ)`+q_h?#y#iOW_$jup>wHR>IqKUbsooD zkFk`RY5SvoMAW}0>dnI|!UrL@M-0!rdtncx5w%cD54?EI9z1QsYq%F{&5Fvnj3zd7ig?3bjRs8{EIe*iBs!WUdnyD8Lv;%z**NvoG<92_6BQ+rTLofS|TKE;b zMacx*3gmCpqCG5?0X-|Yl34T;>HbtEJy+{;*c5$p6B8OEvBzCouWeH^`JBt1ncLWuBxuoV>7_)-je6{k zGYM=9*0y3Q@Um)4?Q`ovy@^NE`}gfo--}XD1+!249nX*Ut+gx$pUoV9E;is8W*ez}l`x{4&f;5n zpG}-}`|cga!F=`85-$<<*}O(ZT%q-Zl|Fq22KWgP+w;pOF>UQXN(MWjBjZg0m3 zdfL7JTLcK8@Zg>H;Bla&ne^fhPO_2XKo7BzT>k8vr5`qnRYY!E-$Tr%iC-Jl;e0oE z5OOV4xmRXyMR`JwA3`E!P5Y+P1=7^=xw0|qZwVjALQJ}!h8cY%3zOx@d3-r%@~&wD zn=8n2BD`^RKeW8K&v+Dbu^KUleQMkF_w^T)$2qHVSD&QbCjB~dulB!oqtjAM#UbMq zAAEHG^Wo`7nzS(s0fm&bH)?iAD;=?bBg52GNXB(N0PTQXW+s@3j;eFBI(N-*vB^H% zltUa2INzU986@6HAQ(`mOJ|vyyV>z%?28 z`#QB*Kt?2_*+hcHsp6)K6frEZTe#>pm#$fOtG?_re9irM@UW+zJ~j5^@yLa>Z{qL# zlQU;_WV+PxQODtNM#Y5MF9Y8`QcQ6vBU&+$xnsLSwA>=>AL8)`7~!y+{MnOcKGn6Z51twS`kuQDKLbLQ^ z3YECku4l1h;&)eN$j`s6?RTyB;WDWXP_dPBg*)l~a%GvAfxQ`kio1 zDM1dZF~Q=DfrM~t9QKUz{Q7xKACUC;E*he&O?(p125(9^GD2%0>s3v-IGE!$Y;t>* z?GLoMIG}4ve2#J2d%DrDWs6z#OeI&8>Wb0jcv&QQXn(4lRM6vB9zhN`!}`E^mYh|C z910DAZUdqw^C!9Zf`M8?*;IBT&FHu%3W%1U&ucwoGk9z@krLJAPc5*LY?Y(Q3R5v< zqaP2ab6$Wf1qohfdLEy33Cu$Lvp1&tadgi;24#oX64U&}Qt;O7)7T4tHMg{UmIy=J zgE1Bo85^A?(izb!rUn1{WkWZfq@1&Q5^x>JD$+fpI?uG`pEW#qZ8e(p=<(ynx^-4K zU1qZaHlyvdLnpYZ)^&8zrC-T!(y>3cf2b=k9LbOI(J{*2DW72d|){DIdY zVMd;Z`{X4FRcLn5nXVJH9 zO7)D$xSe65ccyB%;}JNn*!~_@vR9dYuhFxDaNkaq#d+htY0#$%RaX$qA0Ovrg?e&V zf+9G52gzMqiyd4KjGBd=*&pdFqj|lUGPNegu;!h;fK?up*(Xzlt{KrGG}zBfO>@it z?eUTE|GNZbz$F-adz1=U;s_EQfep>&DbktvAJ0789zpL}7eQ~?)4wiy?NUC2*04X> z_s+&u3_PLmBo;Z=;=3xPKS&f_of`Kp?&U{SHPAOCEq8Os9u0$Mui9d zL*0(o=uRu`70UjoYZ?Ncdr9*9r{TF&_@u@;7rP!W4?va_^tY#4tXzvPL;JY4g=OB#kCd3{^B$pUmKMuCz$Wmx(Gg z)cT^UCg%)Zom%?psm+`Aj9-Z?=y8}*iOiO7uCGgpp3o)y9+x9G>3PZcDw9qlEurB2 z>>|k_d($mPQGI(bQKpT?q(?b%b=4Hqg-#K#k)fgHE=i?KBE8b2a9e9@(yDqM(+}3% z?nLS$iS)e!{yGoLh|~#Huciuq4t5&4oZ(?x#uNXK>=i@fOsq4twiEPp&5HeJ7epp6 zg1|s7(D0ausY9aq!LI6_kOF^U$=zC*k&<2aY0&ZsZ^hg8*K27!mif%k!L3b9O6Tii z95FwR?s|sdOqc7lMk}AptB72^95R4FkgZ@SOqDY$ibR#bPayw0#VLRucKA@Y;f_WO z-?-?0c@WuBW9cMbni7t6F z+NdE~wL9kGc{yIRhZ*InSQ~L*EPq`1ejZ5JhqA2$w-?A?HF%UY?c7_(MI} z`}H$@JIT9i7Hl*2tttI3Qhnu$Er|n9^u;z|{I{1?<0#L_f!0Thp%dH$Jw0#nHntft zXwVeWIBod@Zah2>xFrS>Pe?Vg6e-Vq=trlkOztHZ*19u4Evh={<%DnXdn_bp>)qaA zVqr;UzHrpEMxOYpkjkzVHRSVqyVN!fYs)@e{ruwM6$rRnTiZn}f1bjqTR>~b($qOq zg|^7j^3>qc;SWG?B%P}}fDuaRc%pE+>3l+hj6@;rnR5}oh_JBchCkC=A|raK^h%3T z{FKM9?Gi237<(0st-hzJiTp@nN==+l)n=Ll_o`NuRtnXp@FL}GeL2R7e8oC-Q81m< zW(W4QSZ+ihZ!dkxZ_@5Bzn4z7<*zp#K0IV;TATF4z3oq6t4h~)b1fxSVea}c5Azlr z@wVq_*l~HdP<}XY1tu#cO%>0r2OpH*z9`A+C#^IQq3JC1Hr+2*${c-VpX`2Pg7oIze&V+yH( z$6Laaf2&L+#wYso*E{hmWcSrS?j}SA(}-3qEnRMw)zhJqQ^pGH#}6iwjn>*MG4gR) zyY`GSABvdqN8(aHIb!gC4q9QE)@GBDoueH+Eq5_@Y@(q|no3;dlZ(n2d3L9P9IeIU zo~2`o!xx0CYzL}yg{X@TJ!|@btMeCeMQZj*-67rDKS!6v~qT(jg$CL*?53Et+ z<8hurHShn}^K9gI@835n&42Y7nPf~rK@m3lHWS~^o6*eag~WGHyk0~1m*2Jg4yRGM z`26wx%Gq3kD077QKMd}{qpyeC?r67pIF!f1I@l(hh#v&|?$Ijj6cOG0{; zoG&l;rcfB}f4<(ul0Obb#eT*{qH^+k=s6ug?{oozvzA@rVyh1!2zQePcWCmtTgNTn zS>G24&7F1gS{}?D zx%k7MpWn)>J?|Qr;gTCdVSW{hIii@M7zm8VcD~W<3LmOJD1$MxR#{@HsyusY2ZuKKaB;gwg%44~we|xbO zlMma03su>@1BvBhUdI-bbD~JgnQuGYCrmY0gdgB|e~>;2(M$7nB8-8-(4CB66q$Xn z@HgU%9IvBPuCRAW!gC&fs`hph7o9L;+}1?X(w~l0$&9T2J>4qzJFQBwT|Byq_eudw z!KGb0uG~6?k{c|i7k_k-##lkyxhK7bt#m0gyMO72c zRVjRe92yA9PKveziaCf1DvwTdNhRF9@%aCnb=05VDIA#hii$*~K{fE*i#g1kuEw0upKN!j z_lo)nAiiW|U`6aqlsB%;+2zRL36dq3m0ivf@>Zr3WTIr{J+-UVKqu^F73d=LrXPRC zMH0kmq#*Y?|M+08ZjbA(r`@a%D_OAM+-(KuP-w`6yjZ0_l1Ct;Ws}TXgS}6;;*f?5o+-qu zdZmvSkhz&0FE(k=Jpdq|(wxr_b$X@@BHa|>-O18K0`nBYPqNRA1``RR&p?Fkq^WYC zjH~_-CtWJR&64*@spTrP4h7RPht7zfjW8}rbM$@TD}HBD>4!yMxTgkD7*iwGhsWuN zUSkQ+n18;l1@-;yIZKkBJVRoUVy|1a-dT8*h8L%cQ5yBu*>7F|-I4^wq*k6I_8m*F zdyRqvlJ=*23)`d(+3?=c71@lX@Jxm<7U3N0xKuD%Qc`jf>Lzp&0BSVLZDntD$NBya zR@RH7kf8c*g|1BzjT`a1&uQKFjnI2h4A9zn!dtsI)uaCM)|_@fOtHI09I05gzRu6@ z@dNx(weLL&{_W&q|C=wz8U7!tzB(+*ZtL411O*gEMI;0zhAu%`Kx!De8>B(Hq@@Kx1cvTT z>FyGQA*8!Yx*c!;zm3m%&UwGff4saD2Jd~Zz1FYRHSD|U((+=_>*}S#@Gus&=X86e zl=mgTEX~$6D{zT%(J@PAqg;2I+yNN`u#J2FVjF~TH>n+>XY0HNJ91ymGtfIMyH{4b z!4qOJv=VUF!%jqYsq1pzDD8+mqY&jC8^3mG=#pKBR?IhpWhDxaq`_mO1loPZnrEE^ zvjm1+p$c!MrzpYJ0QqEfINugw3awm9=f?-nM;E-W&S`-GG5bZxFrVSNBmAi#QI$+$ z8#IiY-b3Nxz@K9ut&jxU^Bk<5mLuP}*l2^_Re1JZQ3TKysenJ(7pa7DAuqCHH{m(2 zKx+{Bl$5jx<|VJH@yLHo`ivhlBFtN<8kz;s&f%|Pgh=(W5v9V@ltx`c?V1tBy|g1y z?-&I{;+a*8h_!Weq8Al)p}7zT7-Q_G!KtaK{0SwabN<+PT4Ba-?XKK5^V->h&>!_D zw7G`uQMWDudR*X7N0c+01JTP7iRW5-=n*GkHCdXTK=3UVdAQ$*`}j3r_!Y`(iL^&l zf<6UPXsfKGjX%b2{@o_yK0DNj-8_}3uaCat@4WjNKbe;#8RL@+L5?xPCJ~_G7*d z6TADpj61lWC}!Fm6`$c^tB8){Qh#B$vhXlGimqKi*Xy<2n)WzqE%q>eHB;py&7(W# z^h_IxC-3cG%Ya>14?;Stgl!p#u)IsIK9X`h5pWL#z{D>bN1>}y#%ts@jlxc-?LN4` zMeIQ>wgc6X`X-9u3k8qEhEJG-3gYX?lSelrO3efa*S`jK@GqV(s(xxUQ#V5~O^3Fl z`hzm;b0zPQ^Wh1&S?*0VC;w&YB*2gKm#L!x^UCvDcT{oxs(`fOK~@m00;7xVQah$o zu)Fa42Ptokv)*4_oEI3~3Xjc{2rqzaBraOUaVGLOm~;W$dU3h`69^#Jl0FVEQ>>h3pSU=;%$^`CMgy z1|ththk8zE#G<9-V=fji&iMIm&=u8hyuZ~s{2bB^SQ_YI_A`!TSbElhVu5QSyD@Bx zZb&;eE$vwqc}hwO%)?cB(^!Le4sBa^MxG=QK_!Ox-oV??{jW%+aPhyz}h?EK5;4&>|X? z-G7;6*-q7|2TvuqV-m-`nN}7Jp6q8#`?UiaFcB1C4!Q3;*ct3U;yigKhPKJk!>Chj4MVjN} zd+1qp;|$BOqiD+EJ|(!=L7C+Iw@gMRoNNIIh2#;7Zc%3}^-a2$jB>&T4}>2$%D)GD za&kUDpy48*5WMIz%Ec!af=4QJo}KFxMxX-Zf^IdqomxcCuX<5lFdiRE$8S%TJqN&6 zZgY6t^2!S01r5XYXrZ4qSwnh?hP1Mj#>Tmd_{*WoeOM+7H;RSx$#@R*Jo_QLXEGjC zDf>-MUp(StnIjB<_wqH?I!^X&tHvu`VJf+Ij6|%g^nf>=#>!Z#0VJVL*{eMlwzRA2r27sW}W)HN@}7E4*_Hn>sYTpZFYi` za*X>@^#KYcQ3wp6M^y!CDz&Ob7~PH0iwQ&6(Iex&?lA9KFQwb~`TPokg&gl-)9p1T zc%j5RB25%E57!cqKlk>Ed*cplawMNqQC%?^iUKwKr-;zo2!jik*I1RrFyjSKiVP_87ydkNdacQic&? zW5$BC&?+(yPtQ@ozoW|8`@db^9xX8k0B!D`&#?smRZ`3{WO}TT*yb%fu(rbPDC^gs z~X zZEQ*iBjJ?nY*G)5a3iE7nX#oK9k)iMq-c~9lLE`76tWu?6rqI>85(h?Fe$kl5$GwL zsvLs<4dwj@ol5U6@?@PiFfg#-hz?>p;3ox_?It3l5rc;A^chY^m#lCiOt1QljY*>R z#ip{)6honP7m3-50C>%f1i;r4eSY5?e&nZvQ-moElhdYZ2D_>`8MH$A^d!=ssu{VMScnqga@zqlky&6B;w+dk};^&KA0?yLD~H}hMhf*b2P zFXtC7Zz<${UiX@IF0H7NVEPkiHd6m|Yup;2JJzC3Oi@bL7k!W7BY;ISXTMOQt%UO{+Q$2W#y*EWx80GNC=y{n zLk7^Af?mWcK0XGXtdBWzsk+%L&^Cx{N?xg-Kh(jCMPXXQ_XQBpY+(fE%jJkcI}p}1 zZ!`w{hox_>vzKw=1Vog7FMrP1Bm&J=R#LC)L%h9v_wK11E(^s5x`NHFHw%iHn2gPc zYTI`X;ff8|l*uvE;0;6_ul8g%|ACG*4xX;J;2_jsc3{E4P=@i{_vrWOcE{poQ#qLY z1uA03gRq0*CCop(UIzz71>?y`xx=;kGVM==H0^MgBeonh=n3Sl&J>|nPHo9~ljq^G z*x1b@s>VMcHLP%uVk8q@P>zAG)P8;Gef;;*6P;x_JQ~{D(8I2pc`4fP@cB}C4ndz< zi+gEd@zlGmu(tx95j-~dYrNU85Oh-s`Y=TN!eDY{=581X_Yd6(h>E~$)$TIxz6JU8 z1t;qGy*Fxw;Oqav?Epmb4vdPrpv%u%_p(Z9NR6c>;VugQur9NtFh!;^tE145yj^vn zelB`_Tqp(qTWLnYahYpy8N+!Xm-c>{-)T!Z`fBy@$1ja(2gM*^kZcAr-{g*39?F!k z8*CQh_o90Zh=JBJ!|rABhk}^SlB`V9QwDtASB-=m)`qYput*DWV82jy975QuY%~%h z^P^VNVf6dN{b18il@^c5l+hFg)|N}SMOgkExy;t^dBcm#*wihT}_Z{lDRC;n1g(A~jkAObIb*c3dc zXQ&m+zpcy3b8xd+)63`C8x-y`9aj5eACCQR5vuX}K+qpZXp_K=GELZ!Fg0iE}}S1uh3s0pu-=U9aOb z4N}4J;TF6NfVE!=f%j-NyO*u zXzN~%@sLkcclAfQsKr9*i@ULx!1gli1FnamziXL`DTb>ZS8=H7Cfx68kelaLI&z?1+A2*t5$=>$v-?e#Ap zaN+&8tqc`&bCUOpC()|1h=zSBBgOm{K^{EV1(b|08XRq|iww9&}|omCgO_m^|d zY_Bek<(xEFvpaYj<%&h~%SU$4P}FeZwTh! z&4ac*S}+3ZphgnxTZXgcizE%+yPNHykjxjJIu0!#4gS`5mVXD_uE{L5puN@L*ke&=6hP4qI_LR{3v>qXzg0Maei=?4oBJ%3EA?M8-4f3Awt;h zO_qsD;Zui7Nr%v`#hQ14Ou&N9^r*z=q)giSsl~WSEx&Cy*S7m`HK|;R`M*cL{1hqH z`(iDWTKc_ogz;8H4d3pcg45Rac#92n)FshlXLE<2*$_l8&kE6+FUe3 z@%Y9hh!Ftw>PXR!WHHi;n9qS7$n-s;=4(e_=bACXSi06Te&8L52alACxq*v^r_w%% zFA6GkCp^Jk;60Ui#QIfmNQg*@Zj*9vl)0R2x2w{74b=eT>#~g%{9m8xG#bIPVZ?eY zp~k3Fc@G;!CQ?G)1WKa4c8iw|8IfEHzk)APnFZO*dW!r^>r8cx=wV+Yde1=Fy}j%u z6%=kKWXgxFT(p9-{nMoMDxaaZ=(4n}ShXWD6QSk0I*|HUgTwd{iX#inW45POj;L-5 z>G(D!bKDgD%JJtNHxz!y(c0gK%KPt}@b8xeqk?&ZUa(@eLYBJStA={RDL~%gQ;6-e z{>Abh|J&Ue77a_2^S@7%O#m9quWvq@GtXro>NR;Ze{ozAx(6REBfTv*4po>%rQ#y3 zN%@@Np5k$mSr|yW<4t+n$(v$B8DFgC>Q!*?jYDsZgGtV*kVv6A)1`BESl@W-J^A zvUinve|wl~cCF&D22HTN?9kdtW44*1$@PX->Jo_JK=^X6R!Xb9rpDC^<6gvf1T+fv zMv+8A*PpN-wLRBRLns;IyxtcdO{!!D9cLsEXX^ zF*2fXav{ZJRrsai_xPf97ZkWq$Bsc$*K_kfcexZ9s1x5L>h#*$S*uv?=8}iWdkJ%^ z+x*N2+#He#!&o&SZD&wm=&kDu@vyPkK?w(;e!0#|!3wnbOpSV3dub`B#1uPzDd*Q) zh5MI_W;2Alx5P8#!h3$srn7)`9eURvK>z|cFv_X_-29aJV3w@}s*uPa^g|ZKJ28*e zORF8;K(SdME+yEOf2z$$1aDG4H_7k}znW~=|G-Q0&leE>x7{=B8!lV{9M+b92<;@C zMka;-NrUsQ;u_2QTg)$X&cbg+ne+SPeqoJ};t6AUzbs>ycCQrvImy490B|#kYaHsu z{ykDLEC%Jnb8|Y`#86kb0(-RNX4Q|?o}M ztuR!-Y6N^v<}0u#N3h4-PR}|NREmO#jnn1xkB=mMqF^yv2p4s3WoJUY!@CvGcC9ynAq ztfYGd)?!4Y&*GQt%c9bOdd0$1<5zHSFBqFH7?zT-G2_bnPH1ZYoV%$NBe3LdM{y`n zI}oE9^F4~2JH&+H<~H0p??8w8)n!S-G{rl7nz5x5F{diMj9c9Xb4mS^XU8-zy>leu zf3I%Hg4Vn4KSL!rJOF_jUiF(BggXeSnVvbBVFf+W(XZlyjDx8X5KJ;tP6CVdrP#k2 z(KicYOJ3*xB8x0WpQAg{MZ}aDZGzZMVk9q}aI-F!Ewkhlr>e1@Q@quQA9aaFtpJUY-QXRHTYRx}O7QPnkrhO=vdY12 z;Pr;4XF`s!`EoGhKW4pC%z2->*$(zZrz`l0=PBp$?z9ZQIr_x?i6zy6J^yBnjYUR; zq4deN;0+?LxDTH}NVMaNfY>l9$#bKr=eU%Zh$E@G%r6dgbPjL_#REDw;61_zdN5>9 zOxW=vK?WZDITW0991)m1z7=01Yw@s z9KyewHc_QjRRPi25Bp@8lEAyMh5|qv5i_F+g1+{5oo-HjvbVK-+ zQbEh9lbJ!?2VW`2*PTuc! zS_)3^%k*>G&o~dsfYW2w+WzUxwi~+|-lf>JbB0YOD*H*~@c#Uf#t?XqI3&7Ib@}QN zZSmweZ4OGh08ETz%N>_n6UCnbWk@;<^c~du-re0^1E@w_xkd@D&)Sy$BqN^q zE*s@fJ_|aU(23a+Q9>snD^0Ebg`!^dj>b^xkQip4(I?HKA^XG6WV#$BllQbB3<~^h zbAxOHmm!exYGFIMNexF|%kwK+2BFstySZ1+&Ezy;F=ji~cbm%K0Wscjt7M$H zcOurCbdT<#1Dq#5#ZA8r>E>(#u4kj3$Ny6QJz{P+azEp?jGzH*hF$tU(u51%wC&9` z*a7KQZN7h2E9jy}gL#My7=2o!&Ij$v0kLPy{XXg7l3dV(7!`UzS$h1zn7uZYP6h#k z5sgH`AN)Q$qpLG|g5UedI4q;<#f$9zlAKg}F_A+CjXcgi_Lu-An2pRk&&9l#x=bhE zy1L1l4}GO?5>ysZ6AEI>^#|CK7BvFv}yKC9j~qRwG>3_n9uX9n-kk*0*ZBuen@o z$p)6LKTcJ!@=Wi_<9jq;ETJW=wy>};Qmq%2A@)hR-g&CrxZobnLJ-aX(APlAs6iHw zLivEzH=_-3Fh^JXlY=hctUf*L3XFUmvN**oHprP+zc6!Ggxof65KB|43+(51oV=fo zrQm`b&6xa4Q7gveYQpfh6tFGb`~F6s{((w5FC(cy?fE3<)RN$pfIjDUX(8lVryH6i z8y}fzvsYp5^TrQ2FLWijOTEtHDLH@R^^7J`{=Xyo036YPe~xGclj-e3 z`-k$qUmw9H@B=lFchoCGyykCZDs!0L{n#+3In`>AH*H58Q@r3Kf!YrNB*K?>|F(8f zNm**xa?{s)(2W9nKwedM;prc+&tOa{`Acn`Cz^}P>UYTw&!1+HC_7tmc=ylEjAsYL zKqu)_&(cWd%zQ|(efKdlolizz*&9qDo7vBdnQb$rf(CgyxsNof%mc9Swlf=bc+SR- zM#u}lu12;?YpmjY0Le1H6BX4e-#K49 zvsvth_9yp6wD0=CuOo5&?bkpJE{4NQlni9OSu|q(gM)I>(DZ|9^ARlY7O8eW#B^M2 z^(m;t9Z7;`a)CYZOavq8aQ5B<~By`Qg@@CHDXQc#J5ER>H_%7z8N<2mC8)bB5No8ryv&n_Ma$x)x~(OhX3V&<}V z$nP<5t7nyq9y;cHkKoBAT$`5s!x(XLc%<)-lyyX%iF+@!hOTttHhqjiFm& zx7TBP;tk+C>Tef2Wh+6O7P5m7hNnas@KCOIv-kJLRhEvN@SN7hC$Q?a%t?28KZj7D znL2m3htKKmh#ZOiLoa~CiU-E`en5|=vi4tISf)E6UvuUu5v(DnTNi3*EGFDQuSSQF z2*W?PXM-6|QQz)hKY*Xn=(MyFvhv5h$FrCAPv$R4xUFxv zsOh~z>|&TE3bJSqsdzguKgP%27R*ylr%+{_4~mPc^^*iW$P=L2x<-<~(Y*$w!~xFS z+yY`wCT|SPd$E>GkeM(A3bqtj&OTG~3{!Jwn)9G5(h@UR8t?cRVOI?1BE!y0Lh>g& z7M(97HphTq#5)i2h)9)x$gua*GBS!+>It=M+|F!`O==`zN-Kx4xW<|Gf%;;P0Cm_J z_oM;UMNlyuhwqa*mLGZpXl*SL%c4GH>&HFHf*f*mWnJ&Qx4Y=HdpFgHx#Za~le=dTxX=Gt-OQJv06mBCJRTQZ?p^?Dc(+$X6#DT&qS4H6`FS)tZj*xGjW5!DT z0HV7U@Z%^i5FiX>DIPw|9uMkK#$`c%v2CLBgqSm1{yy1^0P=t8B!0W}#$(TNll}t2 zba*iP!yaV@qLd^WetvByd|NGc&jFO>Of^$dQt}sWIbBGv5^>DJw0VY>jt-uR&O?>K zGzAokMcb9797Iy<-W12$hp#%WRZSXuK{#qOJkT7*k@hvP$UO*_r5FOe1PH9E?*Jh! z#PM2g%410H*b_-za4`Z5WC-G88)snk7{xi>80;=v=`OWGbKS$C2-K{`Tl(!J^QvV- zUo9rtZd{YQ#5AXR5jak(FQ}x^L8{!G}UYAj@bzA zL(<))rCl7C{-2(Tf6fctGZ+cX{L}U1hBI^L4`U@Z+cQ?q zJS_t1Pq81e#XzU9TjhGRCf2t9Dcz{sqEvhM;dr5_K~oN2ky=1T=r5P}m+$7rzV>(N zmc|V|s$pwm%DrX{UhCI$sCS#^^z?!x_wN0VVD$o;-fUx zO#HBp#8gf%VqX{hG)(`&(ooX>{xrZoyn>!%8Mvg%$XI$jiKprl!HRdWZ&7Sxxlr@* zgE{ify_ALrxmUIH3r*leYyI~`n{KZ4@J7L|{id50H*aI*4HG}*w!T0OUx_UH{2^w& z*}Y1NX#`ZIsVeVrMnWXQ$yM5soCjd3_HxRDJA60Q$^F{;NF%IvZ#Q7+mfDw!`6Ri5*8Bm2?g|UFJq(nhp$dC7)+1Q( zM4`KW;^G;oMK5B=%XWf>eP3q$|`NyBpmopg&RbpttWGuwqi$-PWq=@+q#* zd3sP^%~urTEV_xqv^bp3{M-LmXEYMazU6RbG`vkf1Uo|^S=xBj0Vhy-O;MlDdvk8{0J?YlekJ! z{`aN4x&SF7LG5h#kv#{R%h)Z5fyf~U-IK1ysRX(#I-JpH=+e~>aI3?Q96H47mQ90` zC4fXlF`IR7!JD~$b?CDDRqY`$&96A0N6uvO0yYA*IVc}dO@dcO1tIqFWD4w=PjJ^6 zi?Uc9V)|gj&|paak00{XqoA>EZ%=*nb}1tuPSAm*OO7=BP$;y!a#N|y?2w94w^2R& zzD9j#UmqNYoUfYBItd%;1gPt5{s7Hh{+a@TQ|BD zdA#g`Igu(QHSlTp`|9)Dm4_j8NN+}3~;>WqU{2X}5bKX~znTl($ zgF?l-s%-9pkf1BBN)DKtfs`AgvVU3pJ^wE9zJh7 zm9}!7r~Apm{gRH$dfK){^2rYUbr<>H9s*#_{P<6kwCYsb@RMG3z`ZGq~?{ z<(0RoM)b1arC+SOT5Zh!-B|nI*PeOp-hht&Y9Yx#`K80uH8j%S1QWuh>9%%Omo4Kivd$jSD@#V7>E{#1oGkt>9r=`s z2JLUb5e=iL$Y#z@1vh99{HYQZk3c|#uXMce+bC2#dH*%~nXgF02i#Jf$6(94g+Scd zDrY@AEku{Wl3^8@N}y^oe!#eLy9Sc*qj{rMLAHBW{bejg{mb3YBeaA1ZE|;&d7b*= z*esIc2UgwLvwNM^Ru~W4Uoh4XA&YDi4`05UHSzKBF`I9!)AYt=L1Aadu4&fl8Y80v zva6_j*PK6y;IduU1oXG1TH*dCwX6-KMDiY93mEMpZfq_(@U**Su=T z|M>N*eNNvTuq#!6cn|rKaw{Zz-0t>Et5i#CqC%`7^+=e4QT zMd!!se%V$U%3Gs1xIX#nHwn)${|0XI;i3uub_*SsSMZ-7WDT(wPwFbvU)fxlx(Gc@ zET6VyGO*gj(kjgP*MIpG@GXbE#f?@9-nZ8KCYcwi{wa1qUA>0_qQ+n%VCa0_a_zvR zSoJb~iK?jl5bsGH_Zy?V@teGQB}uW1?RH^*C@{@y{W*9NN9Cu3DJDrc>(|*Xe-fLnRFVe^yc455yLJFHJ zh4%o5SSgsXsiPpA*50_xNSQ4%B;xDFi75h}~2*Xj%lfOAXKX0LX4df#G?YR(EF}&$N z0cRT!f$YqpN!{S*p}=LvjGy@m_9M~9_m0xqK!dccX^iTcCS8^C6{%0>0S@t610)Gg zv44+Xz{WLY!D@KNY)gLj{2}4t zR=Yq&wUE$3Z}B_bg>i{D6>RL2D*reYm(>3E3LlYEQt}qXlKr2-r};p@z}i^)IJ^F=g-opEzmE6g0%Q*V+ewz>j;Q< zEM^GEZdVyv43&IQi~)yE?H|(S@1X;+H2%U~C~!p!e!t|k+{+cvt5A@B#kGZt{BS1@ z+pAT7LRG!o`GU8b%rxZcYkOl8QWQD3<6@%$=YU3;n>%-SbF*;gV zykQSVJRqcd1kQplFc8Er3TY#G%}^Zjeg0zCz6v;wQW9hu96fs1Rnrg9*EA`QnYHtJ z5v=DI*E873F52F)Tj~wx)4T3b76qFRtG#EAD|1(BbZyxkBs$!}exxg5N53&LoO<9a zVp|8iN(C{|kqtokq>|u=>^>c$_JP)3kaAG>j#BX{z84XOT2GczGBPo#;6?>YJ2*Hf zm+0z{IV2Hm^psP8pqS@S_0lwYnRdtL(n$wrMm&*JVj<6fo9SvH0XW;DQtbC{hH28Z&hg+*Oh8?j!n-`@`O!lFW}<*{jHsnv1Y%2oSmrEc6|M zxqMp_)*oOhDX|Xei}rK1JB&mfYb9DW#cp~z3h~Uwy-~vhyS<;ot|JLN2drAV>8{}3 z&f_m)XQIfS?Kl#%+TOszBl);koo=Q~dBa-oJinaYEp|V8-Dvr?#8;=v{ov>*FY!JO zsgb+a*V*6xabX*j1$_hKR5sF7KlFV#);s69WdWORGI3Iyc7oZ?%1Rz+J2 z-pfuP5KDbxY4>xM`kF+%9+CbDEO_I#a8H^Y7(XPE&p3KGt!H1o1DqiBz3j%GjR3t1 zMl`Gasw6eVj-%vv{2+kE7p{DeY6g67w?M*4n*7gR1jv1nBts(JhcHL=@pqjkx4xhv z8bDNlDRV1>`_fV+%!g9fH znW-=mNN+5;334TJHD#Guvfm+NnCRm@FMm5l&l|0^CcA zAhS%nLZ6H+Bnblcv7n6eF2JH9%N_4*w4vVOB1$$Y-$50#UpL>wG>DDI8Qev98r&-NqQlbo>cvhoj2^3;t5rU#`OBcgcUJ?uW@G@De>K)8+@TA@_;Uuto_ z&a6L;3PNX(<^1{mbhR9c^NHLkMQ`f#Hg+qfm z8>4k?=|`}c*V<3TfYgMP+KIaf11TGiZmq*=hyw-Q;m`S|M#mWAAgT& zWY`+x`;6|Wb_(wc1)TVg`x`#N9Y7tGZ$v3qprN@A{#SA8o8*#t0{{%3XZ#!Nk6s~{ zag)C_n9LUhHYzb_WR2oKVSnRE!0IX)VGxf;W63l3$rx6vCm4f`qM$13l7AIvb}Lt6 z^n^?1YW^!p)sQIlt9$P&5 zyte*YtvFHd*ZO4rf$KRj@OH2MjmH8H7JqIZq-U_yQIx!(+C!bE8U85IbrkZ#rg?-K zLHWrmE{UO5!oNETSsQv09Ke{sZ}!ieTf9>Q#A`e`462vs)EqBs%3l2Gy^ly7dGd0a zTe!k4Z2qU$iC{ANu$T8jp%Rq(g4wq~j1|3c&?~sV;?+nPK5*%%hISpgRLqh*)CC@? z8=DR-00gGrUm*z4W@cWo+=~^!PVyA^q3U)t7TFROZ5AZ7%vSNDq8h3m7lT(A&qp1%G#OUyWc-wtrEb>khu^<>K4p zz?&s&zuU%(9vAT9i>M!Xkn(vbG?f6=oc(`Ld>e_`!2|Ht2@>{RUZLmqb<`X^(>+`F zy~H=X4i6hrz3&esyQ22J4!68^XEIEZu}V<{{u-IA2#Y6p6(1xoZ|hX4RvzjjEV&7j zyIGXfoF0O*J@CI4(^Dw!{z?y-+&!LGUuc6s1YGA>p_-W2%7Ywyo*&Ui-w1IatTEY= zW|N0)!aneFHkmj`TGo8MlQiDApxa3v%+8+dm3pGNN=&YPBByy|BsuOq>0h?)-jeZ= zsHK50^v`ADKz5qF-^ROmVNkhPmY2Z{N)J=U1mwZm1QlODKQ(9tM6y>4xUH3a%Vd*z z>D%%w8Hd`sxhtZ>V>R}^EK}f=QHg($!-kAyDX|7^N`YcL zAS?5mnwm&zdljEC-fky~CZvYtZM^ax(4yT0%R{nXA79c%T;Qi?9rML4544q$N+vRC zsm5u=WvaYpxVOW5k9>2xS>il)BW&iA?~Y38Be%-^uqawtN-BC0rsvp200*w8PjBgj}-R8r;M}JR$3Pz@|k{fz+4?auxIg_B^e0J=}&B5 zsCi`ZYSh=J4C~;cn0yBgES8zG>Z@*IPx>p#^)zFgB{QXG>!D5AM}zFV7ky+giP;K>d;`Zm`VNi zsO|1kBhBcyQgx<1_~gurhebqB`?5;-u}6=lF2Ke zPX3X7K-m)H7;gQ1<-8L&O`{zSENul{C(x%OE%0IcnS&T9mmJUd-^RF!<yDdZTqal`>e=H$lnd+r}x?90Io!!qBJHP4XIL~Hnvih(Rn<^!70K}_^j_qz zLtjedL5Ifn4n3m2Aii>l8S zZb?UGm!a~goY|EAEsw%CZ6oHa{K-{0b8ZdzV!IaLjyJ>fn)77d`~Cn_vHAZrpO+6% z=tfW?`Gd!=n}KlWmKW%T)aoYQN}HhXY(n}!LyhysY_O6V!h)>O3Z=VgFL$d&x`*;0 zN4MKei#v)92TNWsTqCvr(w)zT(FXGP>WZm2v?=lq=u5B%mVUQqn6|y!;q1UbMb~e* zeUvyL_6R|oCJ6%VF8kS^0aqSec^M7n-y|V#U9zBAXM}d|-5P2>Q#w;d9$_4l_()LD zx~1a@Jxh&n#S+YiK&G+&{DtdBa(2?IfW!g@kFAH*+?=|2h}+Z?12Z2IQCF(LTOc$d z|1(XFwJUl;&pW?6uD#iQEhHguyL%8SM^am&p5V8QB*F#U;Pa6b#^W~6UVJ=U(x?>1 zvB4;O7>jW<^=n?2y`neq*;3_3JsF*`!3yLhU?7Kmj!&s9EtOxBk2^8aJi3+-r^;K$ ze=%A?Ux${U(m&WY12?Z~wj5ofhd@-;&9Apu`7K_F|04g?TCSrEC5C-%-d!ya*vpbC zi>hv#J#x#emJq1i{vnG4T?m&_vL+%Yf|n@nO)0eQv(Bp)s>-gHtj4lVB>??{USn1N^w%hxT$r!5p*{dq! z{_6PSbd}$R+7p|vN;mIZy*hooH(UGEW%XJLY4eX15@m3GQGx@S@@CuXDVP4$tm{V- zZd~%aZkZGr43k>j^vp?i{T44`ZMc9ai|r1czo%D z5n8LRUSqV~(HXUNi?bS^^U8j=GiYsqlSm_IXYtnovUv&R%(KlWBP`Y>Ttu)E?%83q{^|#|$!g0&HwxHkZhI6?4zC7D zfa3RZ9)v&+mqxX}6r3yMnepeDC>+U{=jm}K-@gb)v!)-gJ?O=FfmvbH6Db)*gLggA z*AaNhU5|h=-NOuUk)s&em*+=oqC**CW82Ula2>_GYs&rYw~%y+LGsCJr>CkV>VD)h z=vJs7E$P(;ri9G9)Vq7fUAvuNSHOmOpj!;nqCz@Jqd-BrbF!vIJh03o94^(Tse$Wz z>rz7`pc^+fIbS1$2}OZS1Tq?^LCoG#JqHu=1>?6^G$QqObBd5P`)MC1ol@aNVr1XS zQP0R9-kT*CUU=>kQbMS34@&XS)g2I)a`QAc&6m=|3DK`c>!UG60AOfPD)9M3L?LUf~p%8(swDLT%qH zYwXqsw_mwzVqG<(4KcJg}Ixrav$nV94PG5N( zUe-0&D?$-eF>U(O;mEc~%4>`6VRx5j4|*g=rX#`0Qh5q-D3FtpE%vz9a}9fgoBE-i z8GV0T7j|&~|C0K^6T#-O=nsmkKp%Y_=~}RM9yfrU;{e^fw&RNJga+qfPY?eIxR6LJ^$*Eh+I^_=O_HtOIJH9w{~xwngnDp%2uoqG5=zfqoA#Y$O9 z=jqvx7UYf8el8r~&2TneBgS-65!Tz>Q(k zO+0I}TQJspDZZ!c@1_;hVIo6Uv|t~gs8gXkL&jCXn=Vo!UW&303OB7N@EQWaGV4a}L@K*`urB$EcPTk#{m+sf_1vDgJ z5u5fI9P7CKm8j&Rr*P(i+40`^`m7y)YO;`~@8{yvN#Alz7N zQo;65D%!$zfZ~#Dr9n2RDY(X>cwf@3{3KXnK+|k2jfvO!r+-d=0)4unA$?RZjGW^- z;6-biz>jLMlWHU!q?9tP#Y9RjIk~u~z1_Z!NJ=s90!YqtkQ7o-mL&yNn~zmOU?5;{ z3>FK*w-E9LuAv~4@J%#2O`GH47HHD4V%x!(!KKpGIW?sb%?dP?R#!3#Ig3hO@%NmZ zoJBQ`?GNlu#k#R{hO%|&na~E;LkH{XUI6(RHpu*z{7G9?zd+8QDFM`goOAr zv#?GydM#9o>#s8)3&ee0gEjy6+X5=&I#wDuiDds3HGDkjBB+m=!Myv3Zqs<#94Mvf zgH7)6z${8DKH#)ngEC}(5SkbT$-dH1ETrziY6>m-q8ln`kPunkRt{yvE_2wBRmm{| zBnYe$`WS9o4#x@S(1|CcIh;H^g380Dq&iOM_^9ZLfw@yLTk7lzVaa@3=?fgaiScp9 zZ$#ms_7AgO^F^2a^D?&9D?EuG4ZrWd&$YavMMR)Hx*EI2lcZvfPvMkWj)a)eqIHQU zxd<;iu%9s&)ey2&gQUo7PjjAbQ$78+Hb;i==gi#z1Q#@Gxj5fQ-Kwgx5Ma4%!^gy> zp^l@{EKr6{PEXSxW|As__gX9jA`F75l@p>eU_2)EQQ5FF%^X4K=nkvC)R*ZhONJ*o zKaN}ng0kUp)vJx_SN`QN9}`W)h{N2i+qYHd5&L>|FzU0h;@}t`Cd3;T>xCz$+oKX= z^ePH-H6#g~HooJ7nMc%k~!^gQUXs@ zysJl-2M^}9I9|H==W zs>p@irG?i?ehOHLEMER7H+OK{8-9}P+mNBV5}1Hi@sU$u;k5d3=X9&HP7h=vTsKjH z|D2^|?CZ-50M36$P7quKQn)0W{|9G;=@sj>dr^s$aQpf_hKJ$*qL0+Wt3u8oBxn$3HG^xS= zqwFois>=GfVGEIvJP48^b?ELABm@r9-6aCj-AaQ9N_T^FiZn=xln8=!H_{-DJZl3p zbHDHPe0gTRcsUGg&f4przqqBOR_k{dKe*tTV+E|fv$A5wKPXC(8}BM{%Ys3lJh1KK z^agZ9nGvB9)e?PQ@Hf4Nbq_I!#`lgZVl#g2gh?yJAu_i{Kh6 zcRqKzCqGw{49OhciTmAQX%7h7e@2ZYzXEfOp|WNSd?s#wylNfVVVFMYAxxX}E%PQa zwMR`a?ZE`tMgfn4EB0a2k@&>cBsd(sL-(U~6pX3**H))5T8@_+ZH{U%*N6QZ2DN_$ zX8t|+pnfu4mh<#eZ!{+*P+a_J#IXN~iAaZxaMH zHny^`x=?fVj)uMc__xK^9dqdP%yZA0N@xAv3|slnH)hXCxfxQM{iwy?D|X>f!s@v! z$8y7Ng$Tr+T9)3{2O=4CozI$$Ga_16S5}Tnjuchn_p`JW>1Z3GltUP{mU|QN!R|l- zMLCCUV`C%w)n|)gAgvWYx8Q)#+1&xeH@dPV=iAnA@#q5>G|J&-*<$5JzNZ=T>7r|u z0yi`K%IkxgnwlcEQSs<<%W0#uQYe9QkF4eG=Y4jxFl}m%(T86Sjmsn1y5~b_RM(T{ z8%-teb|=XHpdC*ND_Q)Uv(1+GeR#VD5`S=Y2+m4N9 z+?A|bxHb^Xi0=0jDPx+ir$J==q7LAa+oXR}}X4^x!v)Q^vV_5$;PEeGj# zQnV&!I80>I;du(uB#Zt&&+@W)6kSGLQcwM|W#FP7)=mf(DyhzMZ2|Wabo?-#w#Gk! zW%jGO>l&40rkG~|r&W5)fi2!=HKgpO-<5aUKhetM+B_U}ePT9mk7!eTOzRD+!XV+x z?IYt)uGR&V+Mzl@Uhj~`=jibV%51AEH|%BDVRV{U;vx7F-|Kll&}vCUanbt&!rUW( zX#!GbW~0sR=ikcVFu4%c?07rPY8!*-+N`YIqgkgdAiB4vKJy#?3zWjibY?h&g!zj3 z(2^fOymvOLrt@*AY7g(BposJ)a7Hh%edsdDNn_tw-PkBvYF~hFv9op^E68h5`w#SB ze1v8co>SQ}_>~vO1WlQ42kUt`=}~*OR;Es0Y+PyE*I8!E+Wr`?#g3orBtzv$%jp%( zsHx8vWRRfK;M0b0Kh-zb?Y8I+CU|@q)xwQBDkFIumvJ@)UC%q%0TvjffICJ&hyIJw~6f!lf zYkfVY_JhgO73oO%LfS<{dU^dFC6}m&)JVs=wFB@dqOKmG*E?9&c_@oY!m6#8!w2r; zM?MnxYlb|L4@1oZ4C^lq6=Ou7?PR`W!;?xkGLJD40LBHv%wBg#$y+U3m9sv^ev}ST zEiJfFF|Y*J&AqexqA&2(!*U9(uf%ZOYD&}v#vsH)_Pi+5mxn*R`5oX{z-CJv=o8D= zyVzD&SHrQvn}|yHa~dYOiMdHbdK>WyC|8gI>Vv9X_p{~7p@qa7i!&6@-L>5yEt%@Y6l?O z8HI=pcOa09>k{<}Anhr$Tq-i(L_Axa7jW1*O{X33^NDcVTaq2JZ8K(|vIOb^=KL!{ zG6H7$Ezx$}VRxNa221qxIw`xO<@Z}!TB2^)ldZJHj;92x$8hfa+4GOB!e8&%P~cJ% zAMskgTW3wzyjjo%zi^})$#N7e`;_x7l2*8fv4@qx4vs;_SE!f>`vEbILB*Gkj`}mF zwvF~@{DieY06Yyg_4@SED z5Ck&cyu3W=D8(!QsL79LWq_O&Jk~k%%OktR%3gHb;}=#x@$ajEp{Fjhwiy>PnIRNR zYh!$R%>FnYfmnQxEd06?5QdHk3@AW}etA%3R}jypKA>m{{?!9Q;g^Je{lfohD^7HQ z^cN?g!Avp8`l2Db9Rm*#LWJxBW-szXeMENz9aiKcJ}`L7SI6DaE;kO2pahV$@@?Ck zE%h9~3=tF(LAOs4Y&krRbDd&T?Hit-Z)WcU%M0nKBi$(69Kz$Nb)MN%`78}9ADnN8 z8CXC|C7iP>t(YU2RSK0KwVLtxVMdTGQ7NuZY8n2l(~F0=s7!|s#Ut}1QT3o*9+o}7 zomLq|K#5+h2Z|4$e_BW-H*vXIfF~U$kN3uHZd~E&#K8fp^V#ie?k=y@Tiu`VW{lSY zVq|aqsBo53&exWbvH+VUpxJ~Gy$LV}ocUn0lvSaSDUlzFDU24S8A2bM{jxtJ|Bf`k ziOeo7-F0_&j~-d@L}iqFeWWSP7g^tQw)+<6Wii^vWs76oC=*m>s)Q}6nq}5+FdE!c zVC^WMY{lR&dc15eAOwh8>W0fV#1p3F1Y$y~-ALjCzd3!gyp5I2b166kPE1-nl3Y6or3FE&m{v9hb;(shE@rAJhQ@e57zd%ZM z<1;nTdh8<`raYqeR_ksTtb6`ZCX^VY0=ZeibBdV~_oJsW*A?U7U!ssg z1P_@bT_#eu)_P_f5H@VV&)&SaB@bGWRJqUiGLb9>9Y+408cuWo%0IR6dC{F}aeqCq zr4L8O!^VBPqRq1X+#V2~h8IGU(IzA&bOpF*s}YQ!&4;9eKL&n8J~KZdPgAuRtax>E zm^l@##JuELNpX$mjI_pGX7snjK$NPq5CsT0AXIUJeaA43Y7D1@$>U@ zdQ*$VKgoH?ZrM8@Vq&dM?cc#B9+%8Fq5Dc8$CVhokm@8C>(FEyONi|1la~QgWE`*r zltQ~o=6+dWSKT=d7#FvJ3E+U})fKqZ1i0Sqa?hq~Giq1MCu^63SojPDM#Y+!omX8C z6Q&+g|NDB8OC3W*&o#L1R^+RRUx*7<%g#u5)Inew6CEX=0k4YEiFvKRd`HQeL0rVl z1rOEN%Igd{G+6Ze9+14r=Ri4R#w}sMZa!waDU&|?Ipa)`MLod}6pZ0D@rmy5eAwTwT@C~NalJ4{sX=%o3W(;@eIZ;mmQE4D5D_JCMs|TPyi-s z=Q>@#SN?B@nYb+<0Z?d}I4S}nId^vaB3GNTs0E|=rIEwwbMV4R_;VWDaOtDSsi|pe z5cLWYjwWIwH=93E$(_*Nf!(C$&=B&?mV_6=qVR{qJLRc)^cZDDN7FbeSkpVi$ocuI z!;hyRqm~5b#kuwYN~xls6zQ|3!Q(c7v7C=UKEyVOpq+GftQYXwCFnRz5sQok;{GvpvTM|Fka8Mdn}vCrPAGOYyy(`kf#@u+y2T;XJ==sY%1xf zCt&?ENWtjI{iCtjS9&YAj9$yEdBHI`rBHPsh~ z6r|Iq6MfYnxL=N#03RI!Ix>SO554`N|GxP^3-8Jl=fhOnZU5kiZ+9LksUyx&Gv4$8mGU@i;jk6u)Bd7wKO#_1TpsH~HB1 zmc{eog9ib*xp1l~#8R2Z-NQ)$tR51G%g7V}Y!WFRIq5qxk;FVUPlEdaQYU%=bq9_A zEoc<|AZvl==uQGQ7c4hVK7U%a4rIdt%c;wme^QSq!lnQFjTjs9xm_RK|)H`sSOf(|O%E}_&ut7!{Nr1?eZOr)764A6nMo~;79v#tbM~(Qw$|)(OFNH&m z8b4<|ikss|I|N#al8}n+V*|bqB-n@%yNlAFZ;}a422#pc%XpkuxH;&Dc6@PDfWC$T zl_lf;8Z4jz`5-qEF9!}NavCjttVmG-KZ5Xl}YnDKgrds%s)x=(Js>D94yjO%SIgY zE}Fj1=r)S%Gem_ikbUqo7>8n^2VNEVIDmox75M+ghO0^iXg5wUdx1Y+myQvr z|C1icq8O+tX!Q`eJAR%kKho)J+hHb#zBC<(48?=E_r`7?BI4hd+P^lD26-U}Oo{Ra z3FUTcLZi??yZw2x-jy9dxU&D+rV}egIogmoWJ|%jV0ba{vmS1L*0Q_ASQtB^CIJ0; zsJ?m=(GF_-_IMIJpd_Q1CrT@8=u$0QLpF-is>oSu3d$;g3HuF-6G+{(0rOppu|t zoLgH9xrKz9t4I^2)3SBTX~2e%ot+&R-4OyKHRwAP8op4xojz3ctf>#;qB4{5KiVT1gaJUMh zgxEi+@2VPUY6CmqkDv|4`X^Tc3f;dE15J)EemmpSj#&JvR2N=5U0D_qZ4B5jDJXs) zBrx&GFn#GV=XJbmqH^L70Hp{RW(;2XLa8hyp3nyAs-go;qIJX|gvU!>sp#nhrOnXt z8=4D5E$g4J8zuB|Eeq6SrlR4rLYw$8={2rCxm=;9#{+MSii!%l z$d=`!F$kk4(aETiA0_R*D?}Ba%<^PiY8B8e0m~PbB5Fd9+A()vQkCPJ)zCoW}`i>N#ACRc3t^F zPBnqBEU$mosl!^0ve@BVoVI?YO z1=mp4uv+BUnwxau%g2R+66D3(Dk`4}rtsKJ&vL`^M0}AUeIzTCBjP4g|-GLJ#O#rDxxTW zsT$P?B1kb5jCKn*D;A`Z`5Xt!zWdRbBy{lb+rqy9Q^YMCFWr%NO7MYGqFHXV} zyb)|PTJq_YL=BRKy@ep;cH8UmH>=z!ZF{^-XiB!=j}6wEMmG){BEcifIlMJPqk zFP9ihy{Ee8v=vAgpP1$oj1Taw$`wB~#Wxy%stwJiv?Fg))&D4cfs0NcaHBhhxfRko z&}YNz!J$UH($vtPZSIX{|47FuT2l!yYCh7VCTo$R-2*hR7o_0`2lj_u!wNC94X_1h z^=i@`lfQtHoe<9bYD7L6ZqgfrXVxTBP|5Kvij!g&zb70Ok3J3br37roLDF{RkwM9( z>nwA%_PjNW>OxWgPw|ZB3QrOH>9W)lA~AAodZke@HxBIIx+7RAP#1yVxW#CyQ&ze-RE_ze?s7V+%uHF`)_d&+-Z?LJIpA%jZL3FJ-l1t|uTaFic?$v+G= zBevR=iA}6QdIJ*1suLBdce6j3NWg1>vY0@8hA}Np$eqY20p0j-3n&6eF>H0FeWXahsr#DODupyI=an*aKS^Cu9 zhZm3r9X(i9pY6PBW*6`}A^?QHj^B;u7{E))}Mr5 z;6?lx2S}cI&!w5dO`Ntt$VP5#Y%DGRq`14jvhq42TRNY^EFsG51G%NdLQevkKN{?f zZ^LaMvhP<~Iz_}1N7z=w@}X>JHqKmhz1_=gEoIv!RG>K07M z@vFhJdt*0a=`1xpVp%E5m%saqiidpBbuU(E4Y&sk;!_W5AYie`Gr$qOEZSFrbkinH z8>Ym(SJ*|3-Wo^3Y4-30vng<@CSLY>N0?Cs%|Jyn{u@bK5BS-AQ(gvd*q{`{A;r%y z;Ee5V!M3BMUxSlF6|bB5nhpD5s)@i6l3b@rJdB!#wh(5~NEVqTF#6GEYphZxTkyE* zxmC@5IO7Bc5ED=?F#%j2S5WZ89)e~GQK_IW{2=ER?JQ_Y*j{$229Z^7jjq}PbSYIq zl(f^ztI=9hCAOM+|Emnh>xaI zQ7j?hG>-zc=|K$h>6}ku zdFT&pD(xjJVq~$#*kKFbOA5F66i@_GLZ93L2R>izp2zMk7H ziiN%En`Bm+di+hX4ITJ~io6;4W#eQo`8MYrHep7MUe@Iq8jAnBR z*1O+r95jnDG;5%AQLRGc*=h<&&MtdWGsRD3y=OP*_%sC&vO-#tUx3hwa*Gpytw`tl zXQ3#y(>zc50_Kj&fhdd7B!u2)$C4AUCp{Ge(I*}!3$%vVzIq3nqJ6r8QSZmb$6H57 z9|Ah`3K+ifIRQnAytb$eEimDvD$>=}eF@ZnYfXZ20J{+em%jnFKJDDo9+_QtEm&DW`W^oa6KLrV)5uLGP~7UGqPJOi@d zm-o*M6lK7QjZf;=d40osJ^QA0q!99Oe?e6K(@YyMtDbxK+HmR(e0B(D(W25{?rrhQ zNe%m^sf5$}SIu|m|LhI+_-UHZLCCM+Qtt?WE|%k!;zM03 z1_{%*xM-7RUuHA}N-A_A>W zJFXQP=YfL~s1zI`fU@(iiISovFH%ytm65MDXFi4VOKuneJ26s6*ijYU56#98AK<(W zSosI5?_QHm4lTd+y(u*O=mt3M+4-xEFxB?5MFa=bd+uT~tQf;}DP&jaqd)qBl3_f| zC;At|xPbN2n|?Sx3xSZOd#0n>WwvYkZ~CD-|Jtw<*D1zC|Ku$dmy2B;kg}GOHUyTu z-E8u=Mue1IP@1Y8Bf9+v0V-V@UMdj(v1gZ+D@WNCq3AVwaPYs#rEz+T+0iO0rhq62NNuow#xx(SssI{1a$fRJ7}87fQuI{ z_mDT_2TSDvnRzV?c6CW-^B(h&P6G*fNkFEP2X&j{<5o6mk4Eri-;#LQp$4xjo@KGq zD7k}2>3fuM%07%<6*0-SA?3O`kp0%YH-XzXHk@XnS70Wg8JS6MNZwadr)m2qp|##i z>c%nqu|2(`j1L+Xh!u7uXRFC~T9*N^?CKH;|9eIur<~Tm(5F-cXB4Y2Uis9f{Ydlr zhA#+1l8|Vek`Q|&ocfkH^d!>zi;pak?bhG(YEDp?VBvtVHB@f1V+h5bPSzbxoM&XT zo$r%xnrc(h9_|&QI;Zm4yc)rKAbZ+cXmW=^Q@jbtx#@pj*2EBhdlR?pWiR#RA&CY3 z+Xd;)`{>097%X?PBSkDeQ8)LsJ1|`Jp~o*aIE@gD<2OdhIgAf9YgjgP8xiP1PYqYW z9iCtL9$D?SNOwSTrqb(ss{tZp6E0X9c2d%0AAwGOq{&+tXs87N+)!>C(c22Rq2#HW5f+Wd$B`K&OB z&rzDhxAuG7Vt4F3C?VDehMU7;^t_J6Nrquc;GgK-tQEGh2_Wek-L_x^n`1NSg7Y$I zSF;R!lqM8hxVS6Hq3YhdA=T@q4|`!7}Ow)Qg$d|Zpi@rl8aC#oZ5uyGCa2?2EL0g0*w=3 z{qvAUYSvk}HnqX~#`>5mm{!et)p zo<>z*>@aA~5|86^rMrv163%I%3Q73d+IwRx#@>1&GNbZ3&MDIdaO0mxAL@s&!{PS; za9WM#FYv2W4(0~sBEJq`3OtXIPG8xrL`XxPkntn4!qQPX#Xl1`Ezna~@PwErn%1k+ z_jlt=5)Q#Ebj?1?cTR>pCs$KTt94>RJDPIVwr^gLg$0X?iz{Cn#e^I5y5C|L6Qx}g z-FQ7GYaPqn53T+@1S0(83BcZiFJwfcz3*l?t276w0tbkHJ@{qAuyJ=7F*IYIu?#f0 zUUE@K_owMwB=On^S*=22;kIjss8HO7&5y1ROV(^pcZ81?Ps~F3Y6$N;h5BqHq`)id z*?ZLPrgsIrxyQ>xBz*oCP4#a%ic*fO_=VSbnOkLbst{nZT2a^v&p%eEO^tt8*cBxr z&MX%PFtk%;trrbGzw0!^zBO;hvE$-fO^0Z?K^eL1s^<`%7fU?_D|Gb3t?8#dKed89 z>+hF22R>eMb8ORQ3XW^Cd%UFR)uvsEwE5|2&-o~iolX3bjnWUfiLH0_D-h;(=Y#rW zpQgQVpmYjct%<%zGu%gfW{t7rNu!?=9^XmlN3F|5+t}MOl1nBJ@0o=Z!xa zK9G*dqzP@y6*0nAtR!1oKoMKCHqX0h1BOJpFB@$x#>jN1IiLI?zK^BIjQ*SZJd~)) zs;&1}SbYjeH$afg0ZiD4)nsitFkfC1OQo$^>P;*-h3QiB1B0%@=S%TV7Jr8k^JYj# zmcqILw||ID*y~I^SWFS?8LIH`oAJYssa}dys_HmTSukACcPaeGdIbR?k#w-9mo^4`t8fTfvF2BvNG0=Np(kER%DU0x_&vX~mE$xplp+yEDDK&} zP}1PGf(K{=b)GV98Yr^zqGwHNOT69TH(<`_rPC8my-Sl_Vn=UGeWC&C#JrgG#zPzclHa za*)@(F?`2QymEPI&>Kv{zVsCg&wU-Tu(kgSR++Jr;o}-$>+lSIIKRB`Zj;-d`o;HD z%!|LXM_y0#7D!kTkP`=^R@|)K^b-0 z@W;7{%yh1!X0Ja@hUb-*Un|2SMd-&CxkQrZ4tPFR-Qazb=#1Nk7XhvY@K$bnjqb#0 zDCYJq5rq2LGwWp)Ug~P^HPxnjK%jcqUO`o+&5}=sa1XqW(dY0G~N)Y zU3~SG#Ee=1Hr*tU={?PH)QuRb*-pW3=54ViU^Tolkd4;T+REy2WE0I~B83;yk|OAC zvp&KaJ(I;DZx_kueYO)gh7px9?R6>}9HOty(%ECY3?!D6U9q{GCRpC&{a#2*+O7D) zVG1d`bz;-d&_J3rU{xXxkZvlgIH+512fD?UfeFEnd=>iW{RIK_Uw)5!KkY#l45whN ziwiu6zHGQx*_>=^d@5Zj6e=KN8;MSJ@B8!zOR+}SOUL;cV-<+n?|H6u-fS}`wkGTk ziCDcj_z;9a2}A+uJqhwrn*EE%kA{cR;kd&*GeaIKSdGIe?1{sqMXKR##Xpg4w^C1! zmZv;zg$2QyPdK>q+{!F9k=^?|_yBFW*$t$Occj2qxu7wI!VaqoLHxEKcsQK(CYsk= z#wUOXfspp0M77g3Jco%#tu}>6d7PwYt6?Mb;#lsq!)U(RZ`&pxNUSfO1=U0m4Tmju zY)KN%_f1#L&-&H@Z$h$vesb5jm3BwX^o7{=2$Ibv2Tl&-<9!TZ6(Y?+f*PB)6IZ>4 zuU!q$Lf}`9`=5=BfIg0`@{c>peM2+T1=VXr=!b^(EO{7Bg}qptWN#|p{xUjW`a|dc z6=n))5ZLt&595R0MHDiC<14bBZUp|q93UP9-Y4S9job$cH0Rm7m|yQ+7#NNcINh@G zqQmG@&)`LsRqBU{poE;Q#VRwrIbrczc?a zSU6?W#}e7eXfmI3&dUvaJVG9&r+9-CeS_%7d-zYL1diVe>)l-FiYFQ^H`|PzpP$_N z>=gQEtXxDVJK9%g@ApF>DYY0v7|JFb+Wvk+%VziMZ#9btP&J5gz466d@d`Y6-rTP< zWzIrh3=1NfIavyzuX&xQvVC-5Oe|cB)U9^Lu=x?7Bo|sGYf|ImPa2r@rt0DEg@x^w zyRrpSHzFstHd|>3IGl0moKyX_w8Xw>_dyq2dC$PS^mkCZ7T|$h6e9p9_7NqtV7`V{ zMx}jfWl?K?%CTmdc>B(GWumDNsc&m7y*5&~-m^ggDzg>)C~2s;>F7`) zAYKP%H#4a9up!I1TTl9*OJ_?7Jt$^g3^dUMm1C}ArO!@FBu7F zl!Buo-LAKtC>z>7aedTPi18-+*ZzGQ&oT|OUMojA<@jmbAuUd^$}UoHu0Mb}#SdVs za^?|qibtnR@OhCw?PWU7w|GuwwvT-Q)=H*N@?mBlc$HK~#=VnHCtXkO2o9I{Z?xHx zag1CKAfzBGM{(;o6zZ!_sz3MV^T&gp~c94Y@-8f+F9 zU&pROvu+nAbWV2>p!_TbZ9z1Wi{=8Jos>gEa!IX2UD>& zcTA^V0f!r1vV?)rAD_?tY7I1Rgi3}v(7!`q=1zapFOybZhB9n@bExnzqiPXsHF?HeGbo-RmdG;{}D&dXsm~(wXtUps~PK*ODu_kZ0uaVQ2Uvl-;4|al<;{y)0_%6y7yASwn#xc5m9q`@D(RDCJ!Y)tN-8z; zc@va-FR#KR z^m={z=Qn%;cU zdUwWpgR-hXCKZ!(-Q0Tao%BV4f4hESRww}n;n42jQzTqW9?#j^vCJOxLP}owJB<|w zJgEf=^+K9MmVqgg?uKW6w&smsm(&ihgr&|~x++}$k0(LtrE=2NJ&p!C1Mw|g&mSY7 zD{D0i(2(mJcSk+*;s=#~+HAX>q6*sVg%D?gUncne6+V^<^RMg4v-?hr<)3_~M2f7< zr%P5)6FCJ-*A6{hc2~-3^MkhmIjA$7yH-!F_x$et)`fVZ{;iJ*D;4P(gcF3e-%u1f zl336D&;rPu6%LWNY`=UV30o0tB_lUT{!!q}97?iBy1ATPqnFILg8Pf;kAy_#VD$$$ z2b<#74KYm3kI*CP8<2(I_+qAQ+Q=*4BrGnw@QY77@!J}6;^sD2B#U5w)Qx>ivSLJsggz) zZnq0;BPmqf?uKGu?B@hQlbdMbhrD)K<_snk7Q;;I<5ieYo2PKQBi*DuZ2OrGCR6=f zJ_@iM{X05$Ls>Vv(vHrXqZIW?+iQ4_4hw#PT8ZLxhX-bk;CQ9Q$B0az3@!rpU_-22 z-pw9oZZm3yab*u03hwtWDcxQ~!#DrdFo$@X*a+{9tFj2^}wmKDi@A=`WBbjQ6 zc3?bOhtdA-bAp;CLWyMC=3M(?0^2U}`wk?wiWXzj6moUueP-dQwxVs!qy)9O4<#Z_QWPn)TXSGML_+RCiu^)Kc}zZ_$tS8!78EP7L$jZZ40w+C?MY$H=X(&fxn~ zpGc8Qv|HFw7|=i!b#1Bz#R1pQxWpoCd)mI=w>77KF)fPs;3>)4eD3I#a=`;uTdvze zO{Ya#6@*4KeNPIu6>Qddh#wSNZ=`VTnXd0Se2Isto4x~TSzQ_1~C_iS5W(DL7zNTHVcMuy6&O*!#c(PGTbJ%X#48&eOit+?R7mG?9dE z!fMRidX}2jE?!!g6z<`zh4B?EPV4FrUJUeQ(oPyn5py!5I-g&~)1?Cp9qu15Rym_m z?{kAs^kn&-&xu+n9CfO_Iz>KlreL}aO=X(r^KJJIz+`1Ubp(uR4gJ2%1=kR$2;}|9 zm3jJ^&y8eIP4_4N{V;S(7}St5ClW|=D?IOnP5q^?dfrk1x-M>jmpZf({t{rs&SLD2 zCq`o1yd7z)X7Bm*tV-1(AYRj+sI!mP36O0 znwQL6h?|A;(MeY-8cBX}n1J&j60>A0(3`ZQ`pTeD!L_Vc=j{`zp5!+{HRib7?<=>v zeKr4l_R*vdi~CI)RqA9W<~4@s72Ef|K~k<)zB@R8|j zgEZ99K(4IULbI}@@;y0!Qr@~9Yvqa95ThTSe5s2~j10!i&nbR;@LABtZTh&H7sc8T z)YNNxpIrA|K$0Pw3gmgMZJS`>i1qMcFu0c*Et$pQaQW_Oibm36Polp`kAEUx@e*oMNyVG@l>rw9-`P zH*5{C7W5BgW7hv18WyS>8ah>zQbA58aX0!~nqBR3!Yts*pymKcniXERXUC<-U91k1 z+_zN=d<@Fio^65pIdL_lIQO$F{A-ftTNzBNuf5_fxN}}#J5OuLTzB`eKkKFV7)a7R zTC0wnx>;OO`SW=YpE`=~i>fE#f0KWtH!OMeg3FciwQVNg;OG}x6S?`a)1U?qCKEe# zfvQEbHu_j25|KB5ApPN1p4nx+2@vT}J05{qhUqP_-m4l^qkWGxcDIQo_s{)zYHu2r z{6^}qzf=g%FFmeD0rS8Gz-aEDry-~?CX(hN$tW()cYghwzL(<>s)?3lnpf4Emt=#t zllh#UynR46t8tmZqJ*28@o|EN{8n+G9`MG2wpv zSTwpS4UQs(-?a{Ae}h6M!2d!)Cg>W@!uyat44qs#*h6gxDv)Urd8_59-U zGZR^5>ED4T-(|4}C5EhYuteJ0kiE z$}C28&m0fzCX_D=m22to&cMX*Eu+8w$+@4>n+Vs8qY;FnY&j zRqG~SQoLET==+zx{y``adV!#G1)gCl@zS%=>Y97jq7!{CM+ArSPX>N^>q?GG$o z;0P^=HIj)FbM~JJDl;tAcMrsUKa1Q$S<4B_#B^%vkh3``AsVqeB39iHN*`N#YFcSh z8*qx*4v~6r`2VN*#t-~V`t-Glnv18F-u+MWX{s1qKRGAQyJ*c@xh-%J_Y&U3sZ04c zV1n@64#rt5_Dcw0Jje#_DD4i2qAIluM?3SI=iiy!nsj^ATYGkmy8_u!;y~= zW}Yb|NzCzg49o%EL3-5q8}`HLnpiLTQnMR|nY8Pi7_GiThhuj=>+F16;mn-bmwvoG zN_=yiQxMn$E9~(tA>ND-!-k|7$4?*v$^>CJzCbrDhjgo5W z@MM?*9`9D4pJF-*u7>7P6cf}A5w$MgHTe2zbfi-0ayd~0-~bSNaN%}|@WayuN<%AT z@}&fNL#9|ap|ogVS76?bWnYPIXf-I>BP^UhjIsr}#hiGAoC><_!iWx1CB_xr%I6=m z#39vB>#NxpX&^~_DeJ{@Ko9@A4rZLOpzsF2Q|JE-ygT2T%B9ZEt;z(weYX@EI_DYrvp>nGekOVEaX5edp}rdDBrA95q#iPVAM+PsXEL)b zs>{-F;%Wn|XGd|jtgo1S=`Tau#7n=pZYnH$+Nxi6UniHudsHObCQzQP&wGy56l?eY z@dOa~F^~LH+tS~Crzx0DjFWTc$aM*op?;19aF;vbUkf?;w~uCp0RX=2vcF^lW$rcA z(|UK|s8~sz)qv#1L1Or~2lGElR4MNck-b5g%qhTGNnGCgGMTu=l>P|Pj6Qn~Q3?O!W!4RTgfC}NTE5y$RDpOqU#c|gIp1Wuiv6;~-SU^tS z`-{Gs9<)hMnf}$9flWWZbU7&JzJ_}V)Lb#pgGZYzJ8~lnSl5r(#FEwD1ep?YGaUq!cGHnodk(<+X}7<>((opq=q_BLtNet zfJwb<>mx@@y~z*yU$jl6hQ!r9#kQx>t|NIJ=bnjus*epKhQzDFD4`21kRz!14gug} zgQjk}EkT0Hm_9-aoZ7*^kD8QhYZuMVG#{)WOG#J)` z0l4nZ=TqG=A>(t{-`kZY-4DQ~OcG^qeBiZcOKaN_05I493SUnGC)(3MjCRnU@63k_ z=lgB825zNVh4uffv)#BG^IRu5?EB=bzM_r}xd!wAM95!NpDPe;Sk@VJ`y|`iL)^rF zUHUeKJ%cR5H)pmwa9*7O%woiYomDTnRDsr_ac)Sd1(IuY~yD~g5!T}QOyK4lr!>Y5T z-bZCUOOkiN1ROhK=P$2s67blhog|)yp8}C*)2(xj882biT}oha=ogf0@Ny1zB%*m^ZE)-V4VG0Dnr&kLf(ZU10P^Xk`Y7dBu76^oBacMXXwLTGic$&%j zQuRhgc(u`y?WM8G)37o9iB)qRZ)^ONuix-0p%3yJPm7y^>6)Dx^w9$V@xeE_nB2Mp zo*{JQ+cPk_31TaHY>;OPCjY9{vyY&<&QkLGd_Qhp7KDk`{*UfMe{ZK_tLdWnjyaHo z15hWQ2paO8F9Vcd8{P^kG^oTzClewD?6zjmK-wOxYdE&-2$izW15u+9;D(hj{K@Pm zi{0Qev3DV2%Mv2FF?FQGi2P<<3xK;vuCZfbNOcBtar)nnF889Fm!HG6M5zy!H+Uzl zgbGgI5eJjsreLvgV7bd!b(WKi3zA! zS_rx-mhO=M1#Rktht=U*Vy-(nZkS?~VYdy&Ua^F5lb}|_fWbyhf_XT;nSi>^Q03`D z^wICH8`U+Sxw_X0Z0`QyzJezy6_5a93&1VR!tsNI!Q3UD!Q%!!_E)e0EFl2k36R)d z^vLIZ2OWw5VEpoUogKMv&;Y&gbi`}L_Yim%Ofe}K7|;dX50v+afyqyRALi3#zVuuz z_ze}MLH`P=cf*9p)w`eVLdNcWS`Sz?u(!Q9I7NZhK>A5nb*LN`B(v5QNIq%pvVRYq z?4f^dX9J6Y9!03I(tQd!Wzl^U8qVtI+j>JqPTp-O+@ZXS!O`9at;g<7GiHTX9WL)x z{UIz81X#W}WC0FM*c1U2Y;HWF$YRY^9Xun>q;JbD0|59Vi*Ul6(AnYv7D~ad{?gwp zsLi-)`r{w$?NrpDRPrATUKe~XxR}z%=k1unXRiU}igpwS=Rpo17^=PldVh}v1c;&V zASZn82cXL{z?jqJWdGcF4``u5Ko9U{`342uqpC?#Q&xrnQ5ru0G)!09(j@>EP%#YJ zAxK6skF%t`IZJ`8ZIyX#LBm*rOKw4(lPzlN*U|Cq^@uet_4^ykj7L z_;W0-->B4l!;ZMI6iA;sFAk~vLM><)VU5mqhE700#FyCb%iI84GkZ`5fi zAjQu0E1+QNqc+gG1!MZwO~V!B<8G7N zpQKO)na{J|tYfioiHHuFF5lz-P=h7ldjSSpD}>Fe|@YH4ccLL>Yy?&#^-$}6?DsOk_;ty0|{7phLiF--HBy7 z_m{zEGMYYls!mWzY{Z8UsrIH6E!dY#C2VEMnTIiu)ZML9+vw<}ubP{ZeL4a3-v04C zxqb;SQ5L-dF-gAadF!+^oI2Z_&$=enSKMsUPJJV*CSh>C2!B;Cpjao2OJi-__D-^C z)~xUh&IE!jgv1j8Mb+h7`P8RodbV}VxryI-YqlqKxXipy3ZY(x=DTe5q>0S?YZ@=n zc59c8dc*Ra@4B_*mkkyc?7tw3ME-Y1SY7M$t7g#Qv$*aWM?Zq0Bg=%@Bwhf`E3g+R zkRHPz=D`A9H64(_(`*ZpfcwEgLGJD`ShUZ8EdY<(J{;gCbEE;U0SNaMQ^s~a*CFC} zDoj{v3&yoZ?CW0a-NmpH3MoQ!o*i~X)+3#fHhvG>c|^-4uR`xt$YBT`I!|dAXl|ex zw%ywy15qW!NzZEmN>dPZ0ZPUH^MwMQAq7>Nb7zZ9wyRtGW1e|4P#&s>wB#v(8!*9# z%j+Qsxrd_2h2V52-U|TxNuvCpZ-T!!dY&2r!i0K*8|U{_;gW;<*+)8{D!$L}v@UOA z2CoF3Yf9NNBS0%cIY08TAgI0}14)zwbp3=QmJ^Am~IC_adFr=7m^=W}71;|bQe}bR9 zM;ucUmn9)od3L?{_T_6In)n_d(dI7zz?;3Y*#{tKU@%qhDlN^dQ@j5iR8an4rLKyy z2h{VTIri#41b+t$8oz)5x>Xa?yWK`dCirjY2vQR=Qs}Kp{pMTIw*(wk-q$j>2{Z7wSa$C(ftMkAMG@iJ zy~XY%RDa(|e*2DZOTG295LGA81Q&hw>>dya@2_*Vj^11_VhC&zTL!Vn7K|aPdBNG; z1CMd(33PQo&;eE)3c`ph;OXV-F5G$vDt<%&TK<1FncxM6B zi5B}y#x)7QIHW8htHliEKfJuJU>h8u-uwui1wHXq#ywOk16(l$81|hz`0`FZ3_j)l z4d4FOc#wHZWK!hDFS~jP?YSlI@rLas9_P&)xU#2iZJjDU=w2Os5whr@B9-8f&n|8a zqzMf{xiabqU)=|yk^B|%PKNle1%h-#($3Qs&6+&Sgm2_aoGRSeKxULXU6eV!DbER{ z9Ab3n5&NRu?q@q4nPp|H)QC7NK!Pl4h!s{v9o_$f@Qwp!8sAm`Jn})^>Tdynnlk!( zvlVPk4R_|+HP&-*6Ib`V{}kx8i4KOzN4BS`7++CYM z$CQd>!DkkK3+#p)NBeYEEs|~>y=>xrmYVq7H0QT$ipOqe_4&d0d;pPE5J2OsB-SeQ@rsFrsUgAz*F;#c%T{L1`f<30D z`pu)Dz2*Q5$KC5jHYhbbFOss zRP*Db`jEiqow?;7mj|SQ?c`Tu$exY@*$}ji2sLp_!Hj+W%FV!jro$?}%6Pdv1A^F7Eb;%zACkv8(ENjkRoj>?HJ_8>GHWm*OUayi zhgm(Hd1Q>9AU)mEuy7JUK7bTir5V^6T|owYXkSy_3@C}3g+6q)fLfw`YT4l2>TJ$H z<46kJUph4bHFCWpA{yzc)3OXLj7G~2fpUp~4JHLxXLGnqn_G`A?w>!Z(QQxcWkNf6S3Muub`5l`V z88p_mI+NSZ`i=GVH=S`?&ouph92$J7{pow}CoH)Ze5)&zVCoZlD|w!sIr!>L{(2>S zw~7ZJXXToE?Gq$u*=p})`L0D$lCGmDf{xn;mQ$`kk;!^Wb%qpq_ZdaZ8poG&@AN{a za6DWDZlgxuV^k0ezpwS~!`t^a9^qGrx;K$ndQ&xt*Sd1>mZa2e^UsM(hDP7$)wvcy z)3gTYO^@0Rv`F15xew9kY1}7&H>)r=*6c!!?qEF(r@lLI#k)0c_w~iTVZ283k>W`SPHHr4aW*6xB znl{JURAq=VtNEov*}N|XPzY0Z2|Ae%`&QZIqpx{)`hmN+LgoNYz&++A&p|M2mGkgS z63)9&#G080?i0E$iJ#{&7TyZ6HJX=TZ>$;iptZu*xGR)466;Jwr?f3t0qgpcQ9*8VcDyw=2n>wv=hL45NXSM$KA%+z zEMVsjqhU(`*1lbmiXSC&o;7&PYG@lcM3d>MPbbDQ>>|KB(@Y!1z(943AH-&pxNt06 zEsOgb!6-785>55{m{A1n=~vjA2zGa#d$YL#?v5#*=nYSU6Z-5&wf?2s$flT}cfTGl zIp;>&{2Dss$=>Zm-d)-&H(O8z-+jZPzT38EKpYF&qZG0Vxy1kHjP|V(Hd^a3p&3Wo zg9oeN)JJ@xlh?t+O#v0eUlr1ovni^l?halVz6*?r8kIGAa~qEeyOG}kV6qYM|5icPFPfQipu zYeluV*(S?Ycqr--3}(?<%$6gMcPW-5s6sjd%6^PZc_irW zq=1=ItA*D5csTi-Hyqd%(8_%F>pW@?g?scil5!>=176{#%5WwaQ&*$X3yd0~c3FL* zGzkxvN)?EX$u$J*itSPBzki#vDV%J-PE# z4%b|$F*aUI4jz2Od+08nP;JWIJSQbg?t^aX$wxb`7+U$D^nju1h?kdF1Z?b@FJ%0% zf0g*P4y_V82e|gVjAl2lm`3)@E`mHpNs%-d&6qfm=!Ju_(_jw-UWQa=LG=wiNa_n zv05_+>h#+~vQ{M)chborn*dO?f(IV(9-f9U3^jH^8$L=Z+wECexYn7Nd+z;fUf6Bb zGVX4IQBCZJTh_YQm;09M?~VL^DV#OCjv`C)0_5psg|?)l+Oi^C?u|#44@yL#!HqHm zee5sKE}+0VT+#doY+>Cu@HkAmXz1*G%XPbR$E|Dws|WGCt}<-6R3Bfp8y23E8m=1# z*t@OPXy}RDj^H$d;MqKtO31S0Zn4SSgPV3j+&3$QA##wwVftfWEyfCHqvt21wv*#N zYt8%Z&ppgK&}gWc2TheKM3;0D2b~Je95oRSq!By3i`*LGz-63;h7leRQ)n-21;b_L z)tSXRA3Vo8h;{olq;_Zjsn&Z=0nJDC&%S$hf2-Sm(o?t6kyFz$X#sUEl5eJfwiqFp z%h^o|+fhC!c_O{>t`-zu*4bE4Zc-EAl)he}PgmTYGr{Re85tS8!CR_y?(2JF3;qAQ z7Y^@NLVWD{;1OSPOK9roqWB_nTs!p;v3>w@D&r|fU8g+TEJl$lfl%=gB5 zW?#oh2P}zI8iYzVAz9PjiOA%0c1TxQ1k=Y1CsN3o$V$Ec#m|;Cj$@#uSfnw(eA_Xa zOJd@0Q!Dq`N1$p5RnjYVUHSTYRaMop?Ow-8u7=L6TiKh=Pri@gywXmNfZDQZJ?i9} ziC4CiTZsdZ5%7jSOFKao?=p#EKE?FroD1e_-G5p z?}QMCUp(I8n8!+j6UV=s9!_pFTmua1rHxm2K&vyXvz2cha0}yf=;H7pNH*D@Cvpb7 zVF#?6mhq>x`V#|PoB+Gn)FCLR&YdP9?*pA>QegssLl@FMn_&^0x8Z%!H{;dW z0b1ifBo2oDby?jNyb_TUi9Ky@iF#}xqIaB6+_DLPb^*p>5g!A5l}K`XC8CQec&7+P z4LeW1`0Y4!w)Yy2#=$nQExRk4wsPp?l0JIA;!jLY_$!P8-CEymME; z?#!Aik%r-)`Ux^4b*X5W18nR@`#;I8b6kwC`s7^ibqq{D{u1(1^9fRj04Qdal{(rqpeefoey{!PEoi6|j| zDt${RH$5homB{_VEm#7=F0c$oIT^3%19-CKP@eoYdxM5C$;(98hS!HOs%1ORo$B;w z9c+N42hi!#(!O?2S|r@BWP1AT{pk6`QrQ=XyN1HJl7;h-8#AmC(B)afXIQh&#MrIP z(D~``fecm>SG{O;I`yi5svo$E6U7-rR?rbWKcEdzAwl)1 zqG%aJP?6e6L92}$*l?^ESSq6qGTps5j7P5N(8{;UhI?e2ZH$NWcW@%Mp}6wOhMavo zXSL+=1niQW*f9^;Y%6#D%mxZ#;U|~xp%q|L2A0YIYJ*LwZr^y@0sA=BlaMgdhx)_f zq3p8W5AnV?z#L9z8nZgM`COEP!j+@1vNwAGRFJw}qo4;F=p4vI^L|i6R^sG8a>ET+ z(l`ZF^a2Y^**R-6#1FNJ%K?&J*&Knuqg>bx0WCfw%lcThlLjPpBf*j^q4P#B8ZD!g z3-F&K9->8|dQ?`pRyq!3I20kWVcjxSoa zWu@_tu~*UjFkFq-3%5(&0DtM0)6vv)2RNH~H)~@pRh&r;v$Hid4DY&f<;s11{9fTs zt{)3QnBU1`Q6fM<{R+9{R3QdKYG$!0418Z4?}yv|k^4$rAErZmth=xc_WKB#J6KWt zEE?UYy~r2SpWtVc0GLnw5KE{+v7o5)oHeQ9HR^gvfjEPW;cQS8-S94d zw^xDmPl*%aR)$uOxTPp}q5{$$cxZeE#cLzHWcGK@zd`c9mfN~=r5lyE%DBlTm1*>i-ql;oN99!QLQvHDfmnR zsokRi#5n*l!_)^X<2pDOH~U0h4}*dJIMc;)vE{h@7s zcYtat;pL?PB%%RskeHi^?+FQ_ASo*pw$O6#V0y9=BwfWa@et?v0!+j~%cO1db9JmCCi+o< z1nq?Zo}H8qZ+-WdH}9JSobh6p5(0JGN1C`iwi0%6}mzg z>bA!>_Fg8+p6=p|Q4R`dMc+g&)Q*U}p<=#_{J}(HTg#KM#1K&njMJ`yJhqi*XPE3l zN%Q^DrqtqxlFb4sZtOZHKugUWvqd)>BRKSRl7Y@?Jr~U~A;6Qn_h(O|x#PR+h1<)& z!`e_c*=U#dx>k-%!qS0S7a^qtu`K9m*4cbmRza=OSj;6mFhz$+F$IxzJl* ze0e^xp^`{^ks=dBuNfA_M0RoNmQyq_J4ajfRFO&x!4z@0s0}#y-b&a}a0S(4sJMV>D4gVE`xLGW z|F-wCprGR_Q#&rW(lP|Qf?HlB!Z}<#7)3sPh_R!DY8N^^sKe30O$Sd66U@@UoO>0# ziMH8TrnA1*MYU(L`Ke%%RMDHKE_{2>p{Mj?+`V5|_-P4YUazC3q>8PMTdGYxs#pZ2 zAck(tuVYSYg5EXL^d(pN9T^Rig*!)yn4tzk*=X1zK@=fTqknp!)1B9>15{?QJaeLh z99pMf7p)P7S)9gKOE@gcxRF02;Ur20wnkfwt+J#@lLhwuNt!s>NMP^Oc5eW_BMAyh zZ5SdLEEeCh5~#!&Fa`ahppIKZj{UzSZ)Xy{jjA*0=WRmY=ks^NW#{mn&uJvul~`6D z+*R9WT%J1Akx2+m4crx)Z!a1!IvM)Jv1IEaUJov0JE9EgX^u&;>bURE`Ar>UR0TFu zxuhuD?eIUaOg}gRvwR2_`ZKHrQ;|f(t--*D`8&4I{fTx7ZS)-W{8p@OaC56({?KA7 z^*Jrgqp$dQkpq0Ac@~i-*&**NrbZhqdl};s0i>gDem(EJe9XGRdOOQjiEHCDAU?}7 zU5*?&s#q=iR*k4?%kRqw)=z2zT>NhPOixTi*J+G4@viN<>RI;%a^$XJg_%45*E4=z)#rZFRNZxr-|kjN@Do`WOF zo2Nxij?<)RnQRD|lhUgIfaFV87wyTc*1B%)Su8Ns^q*>r7D^7`i5=IY?cDMLgp-@bRw+I38Yw8w=tOi|pY|+>(C`rsvO+j#T&h)()v@)2rQD zIkmpm7OT`{{c|9?&wZi$)cHSYJ)g29Q&CA>uJ`Rlb1ocHc$mpS(~#4lj{!~w_p!*i z{2U2?JiU$MGqNO5FO)9agjn325%oMibt@|7DJippQ+Zm=vByYTX0VyLy~;{c%xsGV zOm~e^JE5oOggHZ}EZO+(qKpNCH%7k*G|8PKaXxh(6^ znnASkM-SNDA)i8@1n!#Zx{xvPydsb})|_>wZZ2{pcE$*Z!qgpELz;qg>$qHdFK?gc z<29d37KT*CP+PF=!gAvzCzLxF*3V{u#@~gx3DWdMm4q)1+-Pm>o!Ff{CYa%_Z<8@i zdb*`lueawty#GF>dp_N&rpckJ&5Zx>4K2gB|Uqc`LBqL7EH;r>XOa3(F+;L^cc-$&|*VpAi9=9RS+hU<)@h@Am$swFy z-&=DqR~AJuc<1d3-?n$&y~kbZ%))c=HWm1ww+?0Ng{WbwAt|pFI!FT@WNy==MPVW< zux4G1z!p++(3@YY{lhJT_q2|+3Fb+vs0Zlg$EJL&R~UsB|6O*Fnhcv{IAez6DNCj& zFy!8C=3FgY@qh~Mukp&{?N$99<8QSj`>)D~XJuNTeLfomjfj)V<=+*YgC=!rX|*0V%Q`D4fkOyUe_*E_9XA zBDy&}V7Pw5TvP0}kXD`8vnHgVbxAw+G;K<(m*^8|Q)Id<$|TPTzN?d}v~N{H<7j%r z=}t2Hg{SxmLA;j`HzriS`t?itDkHz)!FJ1e%G_O8-dWC-f$63vye;@aMwF%py@|}d zz&XJvG4>$~xyMVI>qNk)smK z^7>=mZ4MH5B&A?h1;g^jn@#npf9mLaH-{6a8`lwgQq_C0mZuwY)Ah+UkB>vqH=SPPZZs=kiTPQ zV-Fof4xaLf!p^Mx9ZDwrfAYsd^MEzMuM+>&YVgJf$h@5DGyFLS5|&S$mZ1!NeekQh z|LVh=_VANs+~g{VlyhrF(Y!9)CKah)wG1DjztdJ+A%d-3SJ+x2Hd<*j)#1K`HYi{p z4jin{%}-W*>V1STZC`sG`h}|d=k`jPRUi_CQ;&b`IQ!1R32rqKXj4bE1%IhfchD!8 zdR1R(C;S2*h0kwvw=oe^PIUI0#YmITrjJq3Pr8*-y=e0;i3a+*Wp*-m^U)0H%*Uzu zIPxDnhaWcvv)-)lfs}$E(l>OCjoDqLA^)4uX6tn)^k&w9LMQVoQf2qPFt$ek+Xpe-|1DxSvpd z_nalFoHK7NNkcV%DWd#$q15d^Px8h1&r1A9ClKWSwH6pH6->{83^|4H273q92CF?b LyR(1#<>LPU(BzZx literal 0 HcmV?d00001 diff --git a/doc/OnlineDocs/user_guide/contributed_packages/communities_decode_1.png b/doc/OnlineDocs/user_guide/contributed_packages/communities_decode_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7432f3f9178690b19a6972dfb1317ed27caf4fb7 GIT binary patch literal 157034 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
=W{gt%@^^{jg36NKm8fpas4V{%-qauVpB* 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 cNzexl$Yf6@rYe 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≷2>&XUaPA~qlK&!?WaKC0347nB5v&rlFol<^bC2d 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
se)%M zh~LZ>MTYkF%1Y|ACjY)*p}l2&Z>Z*G>5lY>%`#%&Izo{o_I<*A^9uw1kV$DeM;)o? zdX;blcpg4x8?0&`u3YsYm~*>-aayElmQ=(G3(TBv0}bhLIXZ1vv+Z(>Z+fW-_!reD zr~wpne*FP($_DD?uxOTHc3+%``4Uw_bE#9n6R)hur?3#k(>hdAsRF*MWa!h2>iBSf zOKtJ-=VT2xFk*W;!umi2bId`|K;@qTn}svXJI9(U2qm@$tZSJ&)`9+ad*>xeQY6#ArToV%>%MvKL+zObF{4(3gyGZ13&5ye09PTGO+B zYDmz^Wj*0oL{FK3P9F>(FZn$1W)v>VBoXT`IjRgC_4Df&0skgXEKPT$#o9 zLd=lf1^fANk=iu=bQ&>3Z-&^D%%5y`S33N0&uAuX#)h;>o!`;zFZJ2J$~16hWE-8M zjg#IM9OeHQ=|YLH(@E;q{`L-;**< zO*7{xX`UodP#>vz6O_lh7qt=JaS$hSYu2M;Yq==u-mfVlDFv}#_;zxCX2uH`$qevX zY3bW>dLc^Vi2o+SjDVY_Hg)UHvhV5VlV~5^+jLw@r+cAEDJP(}|J+g9l)@>(s9o%<$AW6neI~ppZgK>uBtm z1VLhRtGi(wQt18|qGxb0uP*uIW5kpL8p2mL%-1iSDdb4O*6C_TxDm6e7Rotn!m zX-AGnbHONutYsip4vr_cL0zQbg8eqUDJ?ZxOJ{qOH|AHThTwKecd~R4VN=N9JBAzS zuIpz{WMOO~;MwC`%!nKTpEINJ^C{(4dmfe0FJL<#zgFee8P}zE1vxko0{j0aTF6PG zjg{N*JrvwG^IpDYI*h)qXogOLAG;-JNzoVy*S1()M9>g*U&Y@}Kjc`nQ}vZ)(M^~= z+v{K;#T2&%KE-Ri^3Wh?b}iIWz?-Y5U5U@r*H}89p3yY{Ct;Sp_N}m42C1A-w)QCF zAqna({~@9#%s}zX@`}G5%?qV*mhpV2CwmL#g_n*&Te|taT_Ct$I{ZHbtSH- zh&h?ocR&-VZ6Zb<-yT|Y`18{&h*_7+=ws1aiY~Kv?_27Llr|$S^?0Ea?gfm`Z|_PdH%zIy=?`%|c{VjZm{6*<)IFh}!XMGqU-kwT(Q8vh z+=9!_x8Cse9sa!{4ubjH+T#E1xiDzFHLWPxt~&nHXuZjSMK;8H+j4ua4K1w~zGA2* zliU!lZMNgbked((xrttJ+5_GUX0g8PY(qhr8?%Jd&(?QG{uk_dHQaY`_)Yb;37DVo zCun&`yw*^Z(~ZS}z$WlyiPJiyn`QMgL6fbT&gK`(>>$nzXngX{nOmh9<{ za@S_gnRBrQJ<;L1U<_YvG#2K}>PlE_mMG$c{rM+RaJ)pEG16)l+;>g9#g$UirtY0w|5z(K zdG)e+upb^;1srN1KhTqVJSIn0j9>l7z{u92|>sw zs2&Cc3Emp{lf69x&cf9@tEXFlyb4zW`~4 BP`LmA literal 0 HcmV?d00001 diff --git a/doc/OnlineDocs/user_guide/contributed_packages/community.rst b/doc/OnlineDocs/user_guide/contributed_packages/community.rst new file mode 100644 index 00000000000..b110107e604 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/community.rst @@ -0,0 +1,389 @@ +Community Detection for Pyomo models +==================================== + +This package separates model components (variables, constraints, and objectives) into different communities +distinguished by the degree of connectivity between community members. + +Description of Package and ``detect_communities`` function +---------------------------------------------------------- +The community detection package allows users to obtain a community map of a Pyomo model - a Python dictionary-like +object that maps sequential integer values to communities within the Pyomo model. The package +takes in a model, organizes the model components into a graph of nodes and edges, then uses Louvain +community detection (`Blondel et al, 2008`_) to determine the communities that exist within the model. + +.. _Blondel et al, 2008: https://dx.doi.org/10.1088/1742-5468/2008/10/P10008 + +In graph theory, a community is defined as a subset of nodes that have a greater degree of connectivity within +themselves than they do with the rest of the nodes in the graph. In the context of Pyomo models, a community +represents a subproblem within the overall optimization problem. Identifying these subproblems and then solving them +independently can save computational work compared with trying to solve the entire model at once. Thus, it +can be very useful to know the communities that exist in a model. + +The manner in which the graph of nodes and edges is constructed from the model directly affects the community +detection. Thus, this package provides the user with a lot of control over the construction of the graph. The +function we use for this community detection is shown below: + +.. autofunction:: pyomo.contrib.community_detection.detection.detect_communities + :noindex: + +As stated above, the characteristics of the NetworkX graph of the Pyomo model are very important to the +community detection. The main graph features the user can specify are the type of community map, +whether the graph is weighted or unweighted, and whether the objective function(s) is included +in the graph generation. Below, the significance and reasoning behind including each of these options are +explained in greater depth. + +Type of Community Map (`type_of_community_map`) + In this package's main function (``detect_communities``), the user can select ``'bipartite'``, ``'constraint'``, + or ``'variable'`` as an input for the 'type_of_community_map' argument, and these result in a community map + based on a bipartite graph, a constraint node graph, or a variable node graph (respectively). + + If the user sets ``type_of_community_map='constraint'``, then each entry in the community map (which is a dictionary) contains + a list of all the constraints in the community as well as all the variables contained in those constraints. + For the model graph, a node is created for every active constraint in the model, an edge between two + constraint nodes is created only if those two constraint equations share a variable, and the + weight of each edge is equal to the number of variables the two constraint equations have in common. + + If the user sets ``type_of_community_map='variable'``, then each entry in the community map (which is a dictionary) contains + a list of all the variables in the community as well as all the constraints that contain those variables. + For the model graph, a node is created for every variable in the model, an edge between two variable nodes is + created only if those two variables occur in the same constraint equation, and the weight of each edge is equal + to the number of constraint equations in which the two variables occur together. + + If the user sets ``type_of_community_map='bipartite'``, then each entry in the community map (which is a dictionary) is + simply all of the nodes in the community but split into a list of constraints and a list of variables. + For the model graph, a node is created for every variable and every constraint in the model. An edge is created + between a constraint node and a variable node only if the constraint equation contains the variable. (Edges are + not drawn between nodes of the same type in a bipartite graph.) And as for the edge weights, the edges in the + bipartite graph are unweighted regardless of what the user specifies for the ``weighted_graph`` parameter. (This is + because for our purposes, the number of times a variable appears in a constraint is not particularly + useful.) + +Weighted Graph/Unweighted Graph (`weighted_graph`) + The Louvain community detection algorithm takes edge weights into account, so depending on whether the graph is + weighted or unweighted, the communities that are found will vary. This can be valuable depending on how + the user intends to use the community detection information. For example, if a user plans on feeding that + information into an algorithm, the algorithm may be better suited to the communities detected in a weighted + graph (or vice versa). + +With/Without Objective in the Graph (`with_objective`) + This argument determines whether the objective function(s) will be included when creating the graphical + representation of the model and thus whether the objective function(s) will be included in the community map. + Some models have an objective function that contains so many of the model variables that it obscures potential + communities within a model. Thus, it can be useful to call ``detect_communities(model, with_objective=False)`` + on such a model to see whether isolating the other components of the model provides any new insights. + +External Packages +----------------- +* NetworkX +* Python-Louvain + +The community detection package relies on two external packages, the NetworkX package and the Louvain community +detection package. Both of these packages can be installed at the following URLs (respectively): + +https://pypi.org/project/networkx/ + +https://pypi.org/project/python-louvain/ + +The pip install and conda install commands are included below as well:: + + pip install networkx + pip install python-louvain + + conda install -c anaconda networkx + conda install -c conda-forge python-louvain + +Usage Examples +-------------- + +Let's start off by taking a look at how we can use ``detect_communities`` to create a CommunityMap object. +We'll first use a model from `Allman et al, 2019`_ : + +.. _Allman et al, 2019: https://doi.org/10.1007/s11081-019-09450-5 + +.. doctest:: + :skipif: not networkx_available + + Required Imports + >>> from pyomo.contrib.community_detection.detection import detect_communities, CommunityMap, generate_model_graph + >>> from pyomo.contrib.mindtpy.tests.eight_process_problem import EightProcessFlowsheet + >>> from pyomo.core import ConcreteModel, Var, Constraint + >>> import networkx as nx + + Let's define a model for our use + >>> def decode_model_1(): + ... model = m = ConcreteModel() + ... m.x1 = Var(initialize=-3) + ... m.x2 = Var(initialize=-1) + ... m.x3 = Var(initialize=-3) + ... m.x4 = Var(initialize=-1) + ... m.c1 = Constraint(expr=m.x1 + m.x2 <= 0) + ... m.c2 = Constraint(expr=m.x1 - 3 * m.x2 <= 0) + ... m.c3 = Constraint(expr=m.x2 + m.x3 + 4 * m.x4 ** 2 == 0) + ... m.c4 = Constraint(expr=m.x3 + m.x4 <= 0) + ... m.c5 = Constraint(expr=m.x3 ** 2 + m.x4 ** 2 - 10 == 0) + ... return model + >>> model = m = decode_model_1() + >>> seed = 5 # To be used as a random seed value for the heuristic Louvain community detection + + Let's create an instance of the CommunityMap class (which is what gets returned by the + function detect_communities): + >>> community_map_object = detect_communities(model, type_of_community_map='bipartite', random_seed=seed) + +This community map object has many attributes that contain the relevant information about the +community map itself (such as the parameters used to create it, the networkX representation, and other useful +information). + +An important point to note is that the community_map attribute of the CommunityMap class is the +actual dictionary that maps integers to the communities within the model. It is expected that the user will be +most interested in the actual dictionary itself, so dict-like usage is permitted. + +If a user wishes to modify the actual dictionary (the community_map attribute of the CommunityMap object), +creating a deep copy is highly recommended (or else any destructive modifications could +have unintended consequences): ``new_community_map = copy.deepcopy(community_map_object.community_map)`` + +Let's take a closer look at the actual community map object generated by `detect_communities`: + +.. doctest:: + :skipif: not networkx_available + :hide: + + >>> from pyomo.common.formatting import tostr + >>> if tostr(community_map_object[0]) == "([c3, c4, c5], [x3, x4])": + ... _ = community_map_object.community_map + ... _[0], _[1] = _[1], _[0] + +.. doctest:: + :skipif: not networkx_available + + >>> print(community_map_object) + {0: (['c1', 'c2'], ['x1', 'x2']), 1: (['c3', 'c4', 'c5'], ['x3', 'x4'])} + + + +Printing a community map object is made to be user-friendly (by showing the community map with components +replaced by their strings). However, if the default Pyomo representation of components is desired, then the +community_map attribute or the `repr()` function can be used: + +.. doctest:: + :skipif: not networkx_available + + >>> print(community_map_object.community_map) + {0: ([, ], [, ]), 1: ([, , ], [, ])} + >>> print(repr(community_map_object)) + {0: ([, ], [, ]), 1: ([, , ], [, ])} + +`generate_structured_model` method of CommunityMap objects + It may be useful to create a new model based on the communities found in the model - we can use the + ``generate_structured_model`` method of the CommunityMap class to do this. Calling this method on a CommunityMap object + returns a new model made up of blocks that correspond to each of the communities found in the original model. Let's + take a look at the example below: + + .. doctest:: + :skipif: not networkx_available + + Use the CommunityMap object made from the first code example + >>> structured_model = community_map_object.generate_structured_model() # doctest: +SKIP + >>> structured_model.pprint() # doctest: +SKIP + 2 Set Declarations + b_index : Size=1, Index=None, Ordered=Insertion + Key : Dimen : Domain : Size : Members + None : 1 : Any : 2 : {0, 1} + equality_constraint_list_index : Size=1, Index=None, Ordered=Insertion + Key : Dimen : Domain : Size : Members + None : 1 : Any : 1 : {1,} + + 1 Var Declarations + x2 : Size=1, Index=None + Key : Lower : Value : Upper : Fixed : Stale : Domain + None : None : None : None : False : True : Reals + + 1 Constraint Declarations + equality_constraint_list : Equality Constraints for the different forms of a given variable + Size=1, Index=equality_constraint_list_index, Active=True + Key : Lower : Body : Upper : Active + 1 : 0.0 : b[0].x2 - x2 : 0.0 : True + + 1 Block Declarations + b : Size=2, Index=b_index, Active=True + b[0] : Active=True + 2 Var Declarations + x1 : Size=1, Index=None + Key : Lower : Value : Upper : Fixed : Stale : Domain + None : None : None : None : False : True : Reals + x2 : Size=1, Index=None + Key : Lower : Value : Upper : Fixed : Stale : Domain + None : None : None : None : False : True : Reals + + 2 Constraint Declarations + c1 : Size=1, Index=None, Active=True + Key : Lower : Body : Upper : Active + None : -Inf : b[0].x1 + b[0].x2 : 0.0 : True + c2 : Size=1, Index=None, Active=True + Key : Lower : Body : Upper : Active + None : -Inf : b[0].x1 - 3*b[0].x2 : 0.0 : True + + 4 Declarations: x1 x2 c1 c2 + b[1] : Active=True + 2 Var Declarations + x3 : Size=1, Index=None + Key : Lower : Value : Upper : Fixed : Stale : Domain + None : None : None : None : False : True : Reals + x4 : Size=1, Index=None + Key : Lower : Value : Upper : Fixed : Stale : Domain + None : None : None : None : False : True : Reals + + 3 Constraint Declarations + c3 : Size=1, Index=None, Active=True + Key : Lower : Body : Upper : Active + None : 0.0 : x2 + b[1].x3 + 4*b[1].x4**2 : 0.0 : True + c4 : Size=1, Index=None, Active=True + Key : Lower : Body : Upper : Active + None : -Inf : b[1].x3 + b[1].x4 : 0.0 : True + c5 : Size=1, Index=None, Active=True + Key : Lower : Body : Upper : Active + None : 0.0 : b[1].x3**2 + b[1].x4**2 - 10 : 0.0 : True + + 5 Declarations: x3 x4 c3 c4 c5 + + 5 Declarations: b_index b x2 equality_constraint_list_index equality_constraint_list + + We see that there is an equality constraint list (`equality_constraint_list`) that has been created. This is due to + the fact that the ``detect_communities`` function can return a community map that has Pyomo components (variables, + constraints, or objectives) in more than one community, and thus, an equality_constraint_list is created to ensure that + the new model still corresponds to the original model. This is explained in more detail below. + + Consider the case where community detection is done on a constraint node graph - this would result in communities + that are made up of the corresponding constraints as well as all the variables that occur in the given constraints. + Thus, it is possible for certain Pyomo components to be in multiple communities (and a similar argument exists + for community detection done on a variable node graph). As a result, our structured model (the model returned by + the ``generate_structured_model`` method) may need to have several "copies" of a certain component. For example, + a variable `original_model.x1` that exists in the original model may have corresponding forms + `structured_model.b[0].x1`, `structured_model.b[0].x1`, `structured_model.x1`. In order for these components to + meaningfully correspond to their counterparts in the original model, they must be bounded by equality constraints. + Thus, we use an `equality_constraint_list` to bind different forms of a component from the original model. + + The last point to make about this method is that variables will be created outside of blocks if (1) an objective + is not inside a block (for example if the community detection is done `with_objective=False`) or if (2) an + objective/constraint contains a variable that is not in the same block as the given objective/constraint. + +`visualize_model_graph` method of CommunityMap objects + If we want a visualization of the communities within the Pyomo model, we can use ``visualize_model_graph`` to do + so. Let's take a look at how this can be done in the following example: + + .. doctest:: + :skipif: not matplotlib_available or not networkx_available + + Create a CommunityMap object (so we can demonstrate the visualize_model_graph method) + >>> community_map_object = cmo = detect_communities(model, type_of_community_map='bipartite', random_seed=seed) + + Generate a matplotlib figure (left_figure) - a constraint graph of the community map + >>> left_figure, _ = cmo.visualize_model_graph(type_of_graph='constraint') + + Now, we will generate the figure on the right (a bipartite graph of the community map) + >>> right_figure, _ = cmo.visualize_model_graph(type_of_graph='bipartite') + +An example of the two separate graphs created for these two function calls is shown below: + .. image:: communities_decode_1.png + :width: 100% + :alt: Graphical representation of the communities in the model 'decode_model_1' for two different types of graphs + + These graph drawings very clearly demonstrate the communities within this model. The constraint graph (which is colored + using the bipartite community map) shows a very simple illustration - one node for each constraint, with only one edge + connecting the two communities (which represents the variable `m.x2` common to `m.c2` and `m.c3` in separate + communities) + The bipartite graph is slightly more complicated and we can see again how there is only one edge between the two + communities and more edges within each community. This is an ideal situation for breaking a + model into separate communities since there is little connectivity between the communities. Also, note that we can + choose different graph types (such as a variable node graph, constraint node graph, or bipartite graph) for a given + community map. + + Let's try a more complicated model (taken from `Duran & Grossmann, 1986`_) - this example will demonstrate how the same + graph can be illustrated using different community maps (in the previous example we illustrated different graphs with a + single community map): + + .. _Duran & Grossmann, 1986: https://dx.doi.org/10.1007/BF02592064 + + .. doctest:: + :skipif: not matplotlib_available or not networkx_available + + Define the model + >>> model = EightProcessFlowsheet() + + Now, we follow steps similar to the example above (see above for explanations) + >>> community_map_object = cmo = detect_communities(model, type_of_community_map='constraint', random_seed=seed) + >>> left_fig, pos = cmo.visualize_model_graph(type_of_graph='variable') + + As we did before, we will use the returned 'pos' to create a consistent graph layout + >>> community_map_object = cmo = detect_communities(model, type_of_community_map='bipartite') + >>> middle_fig, _ = cmo.visualize_model_graph(type_of_graph='variable', pos=pos) + + >>> community_map_object = cmo = detect_communities(model, type_of_community_map='variable') + >>> right_fig, _ = cmo.visualize_model_graph(type_of_graph='variable', pos=pos) + +We can see an example for the three separate graphs created by these three function calls below: + .. image:: communities_8pp.png + :width: 100% + :alt: Graphical representation of the communities in the model 'decode_model_1' for slightly different function calls + + The three graphs above are all variable graphs - which means the nodes represent variables in the model, and the edges + represent constraint equations. The coloring differs because the three graphs rely on community maps that were + created based on a constraint node graph, a bipartite graph, and a variable node graph (from left to right). For + example, the community map that was generated from a constraint node graph (``type_of_community_map='constraint'``) + resulted in three communities (as seen by the purple, yellow, and blue nodes). + +`generate_model_graph` function + Now, we will take a look at ``generate_model_graph`` - this function can be used to create a NetworkX + graph for a Pyomo model (and is used in `detect_communities`). Here, we will create a NetworkX graph from + the model in our first example and then create the edge and adjacency list for the graph. + + ``generate_model_graph`` returns three things: + + * a NetworkX graph of the given model + * a dictionary that maps the numbers used to represent the model components to + the actual components (because Pyomo components cannot be directly added to a NetworkX graph) + * a dictionary that maps constraints to the variables in them. + + For this example, we will only need the NetworkX graph of the model and the number-to-component mapping. + + .. doctest:: + :skipif: not networkx_available + + Define the model + >>> model = decode_model_1() + + See above for the description of the items returned by 'generate_model_graph' + >>> model_graph, number_component_map, constr_var_map = generate_model_graph(model, type_of_graph='constraint') + + The next two lines create and implement a mapping to change the node values from numbers into + strings. The second line uses this mapping to create string_model_graph, which has + the relabeled nodes (strings instead of numbers). + + >>> string_map = dict((number, str(comp)) for number, comp in number_component_map.items()) + >>> string_model_graph = nx.relabel_nodes(model_graph, string_map) + + Now, we print the edge list and the adjacency list: + Edge List: + >>> for line in nx.generate_edgelist(string_model_graph): print(line) # doctest: +SKIP + c1 c2 {'weight': 2} + c1 c3 {'weight': 1} + c2 c3 {'weight': 1} + c3 c5 {'weight': 2} + c3 c4 {'weight': 2} + c4 c5 {'weight': 2} + + Adjacency List: + >>> print(list(nx.generate_adjlist(string_model_graph))) # doctest: +SKIP + ['c1 c2 c3', 'c2 c3', 'c3 c5 c4', 'c4 c5', 'c5'] + + It's worth mentioning that in the code above, we do not have to create ``string_map`` to create an edge list + or adjacency list, but for the sake of having an easily understandable output, it is quite helpful. (Without + relabeling the nodes, the output below would not have the strings of the components but instead would have + integer values.) This code will hopefully make it easier for a user to do the same. + +Functions in this Package +------------------------- +.. automodule:: pyomo.contrib.community_detection.detection + :members: + +.. automodule:: pyomo.contrib.community_detection.community_graph + :members: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/doe/CCSI-license.txt b/doc/OnlineDocs/user_guide/contributed_packages/doe/CCSI-license.txt new file mode 100644 index 00000000000..4b0dadd9e06 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/doe/CCSI-license.txt @@ -0,0 +1,43 @@ +# Pyomo.DoE was originally developed as part of the Carbon Capture Simulation for Industry +# Impact (CCSI2) project under the following license: +# +# *** License Agreement *** +# +# Pyomo.DoE Copyright (c) 2022, by the software owners: TRIAD National Security, LLC., Lawrence +# Livermore National Security, LLC., Lawrence Berkeley National Laboratory, +# Pacific Northwest National Laboratory, Battelle Memorial Institute, University of Notre Dame, +# The University of Pittsburgh, The University of Texas at Austin, University of Toledo, +# West Virginia University, et al. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted provided +# that the following conditions are met: +# (1) Redistributions of source code must retain the above copyright notice, this list of conditions and the +# following disclaimer. +# (2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and +# the following disclaimer in the documentation and/or other materials provided with the distribution. +# (3) Neither the name of the Carbon Capture Simulation for Industry Impact, +# TRIAD National Security, LLC., Lawrence Livermore National Security, LLC., +# Lawrence Berkeley National Laboratory, Pacific Northwest National Laboratory, +# Battelle Memorial Institute, University of Notre Dame, The University of Pittsburgh, +# U.S. Dept. of Energy nor the names of its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +# THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# You are under no obligation whatsoever to provide any bug fixes, patches, or upgrades to the features, +# functionality or performance of the source code ("Enhancements") to anyone; however, if you choose to +# make your Enhancements available either publicly, or directly to Lawrence Berkeley National Laboratory, +# without imposing a separate written license agreement for such Enhancements, then you hereby grant +# the following license: a non-exclusive, royalty-free perpetual license to install, use, modify, prepare +# derivative works, incorporate into other computer software, distribute, and sublicense such +# enhancements or derivative works thereof, in binary and source code form. +# +# Lead Developers: Jialu Wang and Alexander Dowling, University of Notre Dame diff --git a/doc/OnlineDocs/user_guide/contributed_packages/doe/doe.rst b/doc/OnlineDocs/user_guide/contributed_packages/doe/doe.rst new file mode 100644 index 00000000000..8c22ff7370d --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/doe/doe.rst @@ -0,0 +1,291 @@ +Pyomo.DoE +========= + +**Pyomo.DoE** (Pyomo Design of Experiments) is a Python library for model-based design of experiments using science-based models. + +Pyomo.DoE was developed by **Jialu Wang** and **Alexander W. Dowling** at the University of Notre Dame as part of the `Carbon Capture Simulation for Industry Impact (CCSI2) `_. +project, funded through the U.S. Department Of Energy Office of Fossil Energy. + +If you use Pyomo.DoE, please cite: + +[Wang and Dowling, 2022] Wang, Jialu, and Alexander W. Dowling. +"Pyomo.DOE: An open‐source package for model‐based design of experiments in Python." +AIChE Journal 68.12 (2022): e17813. `https://doi.org/10.1002/aic.17813` + +Methodology Overview +--------------------- + +Model-based Design of Experiments (MBDoE) is a technique to maximize the information gain of experiments by directly using science-based models with physically meaningful parameters. It is one key component in the model calibration and uncertainty quantification workflow shown below: + +.. figure:: flowchart.png + :scale: 25 % + + The exploratory analysis, parameter estimation, uncertainty analysis, and MBDoE are combined into an iterative framework to select, refine, and calibrate science-based mathematical models with quantified uncertainty. Currently, Pyomo.DoE focuses on increasing parameter precision. + +Pyomo.DoE provides the exploratory analysis and MBDoE capabilities to the Pyomo ecosystem. The user provides one Pyomo model, a set of parameter nominal values, +the allowable design spaces for design variables, and the assumed observation error model. +During exploratory analysis, Pyomo.DoE checks if the model parameters can be inferred from the postulated measurements or preliminary data. +MBDoE then recommends optimized experimental conditions for collecting more data. +Parameter estimation packages such as `Parmest `_ can perform parameter estimation using the available data to infer values for parameters, +and facilitate an uncertainty analysis to approximate the parameter covariance matrix. +If the parameter uncertainties are sufficiently small, the workflow terminates and returns the final model with quantified parametric uncertainty. +If not, MBDoE recommends optimized experimental conditions to generate new data. + +Below is an overview of the type of optimization models Pyomo.DoE can accommodate: + +* Pyomo.DoE is suitable for optimization models of **continuous** variables +* Pyomo.DoE can handle **equality constraints** defining state variables +* Pyomo.DoE supports (Partial) Differential-Algebraic Equations (PDAE) models via Pyomo.DAE +* Pyomo.DoE also supports models with only algebraic constraints + +The general form of a DAE problem that can be passed into Pyomo.DoE is shown below: + +.. math:: + \begin{align*} + & \dot{\mathbf{x}}(t) = \mathbf{f}(\mathbf{x}(t), \mathbf{z}(t), \mathbf{y}(t), \mathbf{u}(t), \overline{\mathbf{w}}, \boldsymbol{\theta}) \\ + & \mathbf{g}(\mathbf{x}(t), \mathbf{z}(t), \mathbf{y}(t), \mathbf{u}(t), \overline{\mathbf{w}},\boldsymbol{\theta})=\mathbf{0} \\ + & \mathbf{y} =\mathbf{h}(\mathbf{x}(t), \mathbf{z}(t), \mathbf{u}(t), \overline{\mathbf{w}},\boldsymbol{\theta}) \\ + & \mathbf{f}^{\mathbf{0}}\left(\dot{\mathbf{x}}\left(t_{0}\right), \mathbf{x}\left(t_{0}\right), \mathbf{z}(t_0), \mathbf{y}(t_0), \mathbf{u}\left(t_{0}\right), \overline{\mathbf{w}}, \boldsymbol{\theta})\right)=\mathbf{0} \\ + & \mathbf{g}^{\mathbf{0}}\left( \mathbf{x}\left(t_{0}\right),\mathbf{z}(t_0), \mathbf{y}(t_0), \mathbf{u}\left(t_{0}\right), \overline{\mathbf{w}}, \boldsymbol{\theta}\right)=\mathbf{0}\\ + &\mathbf{y}^{\mathbf{0}}\left(t_{0}\right)=\mathbf{h}\left(\mathbf{x}\left(t_{0}\right),\mathbf{z}(t_0), \mathbf{u}\left(t_{0}\right), \overline{\mathbf{w}}, \boldsymbol{\theta}\right) + \end{align*} + +where: + +* :math:`\boldsymbol{\theta} \in \mathbb{R}^{N_p}` are unknown model parameters. +* :math:`\mathbf{x} \subseteq \mathcal{X}` are dynamic state variables which characterize trajectory of the system, :math:`\mathcal{X} \in \mathbb{R}^{N_x \times N_t}`. +* :math:`\mathbf{z} \subseteq \mathcal{Z}` are algebraic state variables, :math:`\mathcal{Z} \in \mathbb{R}^{N_z \times N_t}`. +* :math:`\mathbf{u} \subseteq \mathcal{U}` are time-varying decision variables, :math:`\mathcal{U} \in \mathbb{R}^{N_u \times N_t}`. +* :math:`\overline{\mathbf{w}} \in \mathbb{R}^{N_w}` are time-invariant decision variables. +* :math:`\mathbf{y} \subseteq \mathcal{Y}` are measurement response variables, :math:`\mathcal{Y} \in \mathbb{R}^{N_r \times N_t}`. +* :math:`\mathbf{f}(\cdot)` are differential equations. +* :math:`\mathbf{g}(\cdot)` are algebraic equations. +* :math:`\mathbf{h}(\cdot)` are measurement functions. +* :math:`\mathbf{t} \in \mathbb{R}^{N_t \times 1}` is a union of all time sets. + +.. note:: + * Parameters and design variables should be defined as Pyomo ``Var`` components on the model to use ``direct_kaug`` mode, and can be defined as Pyomo ``Param`` object if not using ``direct_kaug``. + +Based on the above notation, the form of the MBDoE problem addressed in Pyomo.DoE is shown below: + +.. math:: + \begin{equation} + \begin{aligned} + \underset{\boldsymbol{\varphi}}{\max} \quad & \Psi (\mathbf{M}(\mathbf{\hat{y}}, \boldsymbol{\varphi})) \\ + \text{s.t.} \quad & \mathbf{M}(\boldsymbol{\hat{\theta}}, \boldsymbol{\varphi}) = \sum_r^{N_r} \sum_{r'}^{N_r} \tilde{\sigma}_{(r,r')}\mathbf{Q}_r^\mathbf{T} \mathbf{Q}_{r'} + \mathbf{V}^{-1}_{\boldsymbol{\theta}}(\boldsymbol{\hat{\theta}}) \\ + & \dot{\mathbf{x}}(t) = \mathbf{f}(\mathbf{x}(t), \mathbf{z}(t), \mathbf{y}(t), \mathbf{u}(t), \overline{\mathbf{w}}, \boldsymbol{\theta}) \\ + & \mathbf{g}(\mathbf{x}(t), \mathbf{z}(t), \mathbf{y}(t), \mathbf{u}(t), \overline{\mathbf{w}},\boldsymbol{\theta})=\mathbf{0} \\ + & \mathbf{y} =\mathbf{h}(\mathbf{x}(t), \mathbf{z}(t), \mathbf{u}(t), \overline{\mathbf{w}},\boldsymbol{\theta}) \\ + & \mathbf{f}^{\mathbf{0}}\left(\dot{\mathbf{x}}\left(t_{0}\right), \mathbf{x}\left(t_{0}\right), \mathbf{z}(t_0), \mathbf{y}(t_0), \mathbf{u}\left(t_{0}\right), \overline{\mathbf{w}}, \boldsymbol{\theta})\right)=\mathbf{0} \\ + & \mathbf{g}^{\mathbf{0}}\left( \mathbf{x}\left(t_{0}\right),\mathbf{z}(t_0), \mathbf{y}(t_0), \mathbf{u}\left(t_{0}\right), \overline{\mathbf{w}}, \boldsymbol{\theta}\right)=\mathbf{0}\\ + &\mathbf{y}^{\mathbf{0}}\left(t_{0}\right)=\mathbf{h}\left(\mathbf{x}\left(t_{0}\right),\mathbf{z}(t_0), \mathbf{u}\left(t_{0}\right), \overline{\mathbf{w}}, \boldsymbol{\theta}\right) + \end{aligned} + \end{equation} + +where: + +* :math:`\boldsymbol{\varphi}` are design variables, which are manipulated to maximize the information content of experiments. It should consist of one or more of :math:`\mathbf{u}(t), \mathbf{y}^{\mathbf{0}}({t_0}),\overline{\mathbf{w}}`. With a proper model formulation, the timepoints for control or measurements :math:`\mathbf{t}` can also be degrees of freedom. +* :math:`\mathbf{M}` is the Fisher information matrix (FIM), estimated as the inverse of the covariance matrix of parameter estimates :math:`\boldsymbol{\hat{\theta}}`. A large FIM indicates more information contained in the experiment for parameter estimation. +* :math:`\mathbf{Q}` is the dynamic sensitivity matrix, containing the partial derivatives of :math:`\mathbf{y}` with respect to :math:`\boldsymbol{\theta}`. +* :math:`\Psi` is the design criteria to measure FIM. +* :math:`\mathbf{V}_{\boldsymbol{\theta}}(\boldsymbol{\hat{\theta}})^{-1}` is the FIM of previous experiments. + +Pyomo.DoE provides four design criteria :math:`\Psi` to measure the size of FIM: + +.. list-table:: Pyomo.DoE design criteria + :header-rows: 1 + :class: tight-table + + * - Design criterion + - Computation + - Geometrical meaning + * - A-optimality + - :math:`\text{trace}({\mathbf{M}})` + - Dimensions of the enclosing box of the confidence ellipse + * - D-optimality + - :math:`\text{det}({\mathbf{M}})` + - Volume of the confidence ellipse + * - E-optimality + - :math:`\text{min eig}({\mathbf{M}})` + - Size of the longest axis of the confidence ellipse + * - Modified E-optimality + - :math:`\text{cond}({\mathbf{M}})` + - Ratio of the longest axis to the shortest axis of the confidence ellipse + +In order to solve problems of the above, Pyomo.DoE implements the 2-stage stochastic program. Please see Wang and Dowling (2022) for details. + +Pyomo.DoE Required Inputs +-------------------------------- +The required inputs to the Pyomo.DoE solver are the following: + +* A function that creates the process model +* Dictionary of parameters and their nominal value +* A measurement object +* A design variables object +* A Numpy ``array`` containing the Prior FIM +* Optimization solver + +Below is a list of arguments that Pyomo.DoE expects the user to provide. + +parameter_dict : ``dictionary`` + A ``dictionary`` of parameter names and values. If they are an indexed variable, put the variable name and index in a nested ``Dictionary``. + +design_variables: ``DesignVariables`` + A ``DesignVariables`` of design variables, provided by the DesignVariables class. + If this design var is independent of time (constant), set the time to [0] + +measurement_variables : ``MeasurementVariables`` + A ``MeasurementVariables`` of the measurements, provided by the MeasurementVariables class. + +create_model : ``function`` + A ``function`` returning a deterministic process model. + +prior_FIM : ``array`` + An ``array`` defining the Fisher information matrix (FIM) for prior experiments, default is a zero matrix. + +Pyomo.DoE Solver Interface +--------------------------- + +.. figure:: uml.png + :scale: 25 % + + +.. autoclass:: pyomo.contrib.doe.doe.DesignOfExperiments + :members: __init__, stochastic_program, compute_FIM, run_grid_search + +.. Note:: + ``stochastic_program()`` includes the following steps: + #. Build two-stage stochastic programming optimization model where scenarios correspond to finite difference approximations for the Jacobian of the response variables with respect to calibrated model parameters + #. Fix the experiment design decisions and solve a square (i.e., zero degrees of freedom) instance of the two-stage DOE problem. This step is for initialization. + #. Unfix the experiment design decisions and solve the two-stage DOE problem. + +.. autoclass:: pyomo.contrib.doe.measurements.MeasurementVariables + :members: __init__, add_variables + +.. autoclass:: pyomo.contrib.doe.measurements.DesignVariables + :members: __init__, add_variables + +.. autoclass:: pyomo.contrib.doe.scenario.ScenarioGenerator + :special-members: __init__ + +.. autoclass:: pyomo.contrib.doe.result.FisherResults + :members: __init__, result_analysis + +.. autoclass:: pyomo.contrib.doe.result.GridSearchResult + :special-members: __init__ + + +Pyomo.DoE Usage Example +----------------------- + +We illustrate the use of Pyomo.DoE using a reaction kinetics example (Wang and Dowling, 2022). +The Arrhenius equations model the temperature dependence of the reaction rate coefficient :math:`k_1, k_2`. Assuming a first-order reaction mechanism gives the reaction rate model. Further, we assume only species A is fed to the reactor. + + +.. math:: + \begin{equation} + \begin{aligned} + k_1 & = A_1 e^{-\frac{E_1}{RT}} \\ + k_2 & = A_2 e^{-\frac{E_2}{RT}} \\ + \frac{d{C_A}}{dt} & = -k_1{C_A} \\ + \frac{d{C_B}}{dt} & = k_1{C_A} - k_2{C_B} \\ + C_{A0}& = C_A + C_B + C_C \\ + C_B(t_0) & = 0 \\ + C_C(t_0) & = 0 \\ + \end{aligned} + \end{equation} + + + +:math:`C_A(t), C_B(t), C_C(t)` are the time-varying concentrations of the species A, B, C, respectively. +:math:`k_1, k_2` are the rates for the two chemical reactions using an Arrhenius equation with activation energies :math:`E_1, E_2` and pre-exponential factors :math:`A_1, A_2`. +The goal of MBDoE is to optimize the experiment design variables :math:`\boldsymbol{\varphi} = (C_{A0}, T(t))`, where :math:`C_{A0},T(t)` are the initial concentration of species A and the time-varying reactor temperature, to maximize the precision of unknown model parameters :math:`\boldsymbol{\theta} = (A_1, E_1, A_2, E_2)` by measuring :math:`\mathbf{y}(t)=(C_A(t), C_B(t), C_C(t))`. +The observation errors are assumed to be independent both in time and across measurements with a constant standard deviation of 1 M for each species. + + +Step 0: Import Pyomo and the Pyomo.DoE module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. doctest:: + + >>> # === Required import === + >>> import pyomo.environ as pyo + >>> from pyomo.dae import ContinuousSet, DerivativeVar + >>> from pyomo.contrib.doe import DesignOfExperiments, MeasurementVariables, DesignVariables + >>> import numpy as np + +Step 1: Define the Pyomo process model +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The process model for the reaction kinetics problem is shown below. + +.. literalinclude:: ../../../../pyomo/contrib/doe/examples/reactor_kinetics.py + :language: python + :pyobject: create_model + +.. literalinclude:: ../../../../pyomo/contrib/doe/examples/reactor_kinetics.py + :language: python + :pyobject: disc_for_measure + +.. note:: + The model requires at least two options: "block" and "global". Both options requires the pass of a created empty Pyomo model. + With "global" option, only design variables and their time sets need to be defined; + With "block" option, a full model needs to be defined. + + +Step 2: Define the inputs for Pyomo.DoE +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +.. literalinclude:: ../../../../pyomo/contrib/doe/examples/reactor_compute_FIM.py + :language: python + :start-at: # Control time set + :end-before: ### Compute + + +Step 3: Compute the FIM of a square MBDoE problem +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +This method computes an MBDoE optimization problem with no degree of freedom. + +This method can be accomplished by two modes, ``direct_kaug`` and ``sequential_finite``. +``direct_kaug`` mode requires the installation of the solver `k_aug `_. + +.. literalinclude:: ../../../../pyomo/contrib/doe/examples/reactor_compute_FIM.py + :language: python + :start-after: ### Compute the FIM + :end-before: # test result + +Step 4: Exploratory analysis (Enumeration) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Exploratory analysis is suggested to enumerate the design space to check if the problem is identifiable, +i.e., ensure that D-, E-optimality metrics are not small numbers near zero, and Modified E-optimality is not a big number. + +Pyomo.DoE accomplishes the exploratory analysis with the ``run_grid_search`` function. +It allows users to define any number of design decisions. Heatmaps can be drawn by two design variables, fixing other design variables. +1D curve can be drawn by one design variable, fixing all other variables. +The function ``run_grid_search`` enumerates over the design space, each MBDoE problem accomplished by ``compute_FIM`` method. +Therefore, ``run_grid_search`` supports only two modes: ``sequential_finite`` and ``direct_kaug``. + +.. literalinclude:: ../../../../pyomo/contrib/doe/examples/reactor_grid_search.py + :language: python + :pyobject: main + +Successful run of the above code shows the following figure: + +.. figure:: grid-1.png + :scale: 35 % + +A heatmap shows the change of the objective function, a.k.a. the experimental information content, in the design region. Horizontal and vertical axes are two design variables, while the color of each grid shows the experimental information content. Taking the Fig. Reactor case - A optimality as example, A-optimality shows that the most informative region is around $C_{A0}=5.0$ M, $T=300.0$ K, while the least informative region is around $C_{A0}=1.0$ M, $T=700.0$ K. + +Step 5: Gradient-based optimization +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Pyomo.DoE accomplishes gradient-based optimization with the ``stochastic_program`` function for A- and D-optimality design. + +This function solves twice: It solves the square version of the MBDoE problem first, and then unfixes the design variables as degree of freedoms and solves again. In this way the optimization problem can be well initialized. + +.. literalinclude:: ../../../../pyomo/contrib/doe/examples/reactor_optimize_doe.py + :language: python + :pyobject: main + + diff --git a/doc/OnlineDocs/user_guide/contributed_packages/doe/flowchart.png b/doc/OnlineDocs/user_guide/contributed_packages/doe/flowchart.png new file mode 100644 index 0000000000000000000000000000000000000000..2e66566d2f66774927be3362919c4cc6d5346916 GIT binary patch literal 160954 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�WR35O?8hbPT*dxy{upxr#`~4f*4x?FZ`lQsID|g_)gBLK1rpq-&g>2d zW1ALBbTr_N3rM%E1i$Uksxm{?NWYB z^$Q@_Oud%ThwlP*97k^eFVcjB`BSE7z%k`FtZ{}JHwmtom)9Y_69l-6MF#VKu(4za zB)xT-_%MgfK;C=1fC-H2ffumuC-t~pm{!mf+8mm>4%i%Trye4iZJ(|nSzchaYRQkV z*y~Sx00|btbvBG|s~0889V~FR>Wd4eWHq)80z(c%_lzAtGEuqRU$`5I1Y|xvWGmZ6 zTVoL4wUj^jVd`watIw%BI{sth*bQ;YHAHQeX;2M&pAB~W1rV4$b7Fi%f6|HQuFP_9 zDeb{xEzLIT!pXtWrhU)nd*5vfs*uzUMA26-v1pET-=xQV~AtKV?ep+ zF&rk}WkVhG*ezq{Y;D9BZ4x)SSF<0kg)a#W3DE-!UYJ_zDR>jgnj4GPrX1#Y2s%$B91I(GwULovr@3H znq^?jx}7kNc;KidD5efRL;9p4oXdb+Mm~k{!RQRtW|>h8_Y@{MZV@#1jI%nsV936- zHJDIGjdE8~?Y9di2Cg5Htg$12O~~6BV$e+wZ=ku+aC8e|ACwMU3oG2M7v23JT)Dr zMpppY<*34S;bH!9Zp1^^GWQ8jTpdV?B*m^1@+;2*4!&9Smb}*UiKq)#KqI{X%BxuP z39|8{8^|}T(h_c+e}eVUbl`xjKK?y^ezzX*7Gxf+bh|_0f1IV9)*-4zPY^#SZvR%b zFnoJ-FoB#F>s=E(PKj!&J)dvhp|u}3ad|eD>1KOWfFUAogncEeoJ3WPso72Qq*<(1 zw}y;4*l$5YHMf+eSXT}Lx8w$MJiaIvu@Ihj(Wyu-uuS1k=(G)by52fqLZ#)2TA>vd7eV>}#>TVMXX(H1_vSgJA@1J$ zrkSo3_D)FMQM|wVo0Ien{Sj7!OEs51Z7?ye4E1g80uSmYh%c~l62_h4sGX($;lkUP zr>N;`qm^dB`r!kRb1$oo*Y+HbkM+RDf862s+H;DPO*?2SJP{aoIMKg!OE1Yu7%*f? z25yG`UtR#+Je)rP<1O%FLNB!(xVX+2=`8^@S3bOBG1MDm7WA{6C(Wr3fF&bOQAYs? z!&&zMqneo!Sct6yqJFR};!xG3EU(5K6<5W&!r3d|48259(@mlkf6(Wnr$m0fxj6R- z=2-g0tc89Y%|UCKdGo+xg0aQ$OhgW=}4I#IsSoy6XY@%YO3q?-NQePDC7t=-8DLR63O{0@-bv77p6 zsooU?91hksq%+EWjoI7)ICwmwjED&1rwX}V!%XZYx7l$!D!KE>mom*8Fex+eOws@tOHV$nR^Jw!Q0E|?1Xt{9$3Ou@ z$6nHf!)olOu+*n^LQ$vT#01Q)s=1vd#`_?EFYhjsmZBmwu z6#QXb7jPuh+(b{uWBfRSSm%k)9|A%OeL5J&CaeMDV0sRu_v%QQFiso|g!oDg-|gp~ z{S;cb9H2J2^tashEMU|MlBH~or6G(vbG809ucKR?8iT7af0=}D-eo+mkGgm?Eo z`>+gov0;AIfF?3O@evr>(q^>&I_62cCBO7*^wo(Xu9={@r^?_Ja&$uJHD$PelF9O9 z?$r+Rr3MbTULtKOAKgv%4qHyxI4RRwnk~$Kfhv3gL{G)Xw<+MMV>QF~y5YMCIj?KA zfveX3GBS1I3DYAfQD&Zq)mHCV^Oy8Rb^fP*#bm`4#d`lT0lV^a8b(3mLi!ddAUrSb zmPhV}6uUF>9wjf>#Eyv7RSe`CpSbT%%iqeeXL7jeCKivTMMAZJ8gb+ACiGa@l-NM!DXz^UGsY2wF=j zoT#^9H&L+hyb>lY>msX?Oi`k()72R#(kmSX>JrtEFRjiAP&BM4p;;DPQp8xuP)%@@ z>ST-#_YzxUVB^^DmDilV>krrHdyuWSoD?5rvKFBg@Zcw(7o;gtCYo2AXgE1o)(Qgo zOxHWm_|O112dDkg?lumHNm=hG9rkBSQ3T5HPM0taJ)-RT?-ULfL|Gv>v{#T8qIXAT zW7OQVwobR;^zbGiLW4?fUjlo$XE74LniM%8*EclET7n|PTbI`_KZFf=VqWA#n8{rw zy$4j~)|?ke(VcG|p^t#RAXeoCRZa2h)*D&h;cj{L*cbO&ga=VhtdT-z;5hQQGRG5%z&N+@`2rcqbLXj{8q%QAF5P;Lpt39XE^j#9c_l+d=`)emj6O~x@o z^so3{f>XPl^ZFl)tkw4*R#sYbc4(c%crh)CXFlr zFyV&bsn_Hc9EkD$p8uxUhX{(7Z$D#NPy)eoBI4GILv7+Tn=ew%WzQQCvpsZkTIuF2 zLAL`XM$WU4#XPYgT!1 zK#%=i>3f3VV9%LzkK|hJ4qzCetIrgZOA*}t@g!4Pp!_0;7!@T`UE+IYqFI3FlB3*x z^sl*J^yFt9^6Vsw<*LlyTVg=OthL*pNju?Agdn>-Bt&pqWE3v@lqth`AbneQ~J||AXj_wk+!>y3R<2yYrq%`zoNW8a_T= z_Xlp;ROjlpG%NsO$yfFhfYp#gO%9sI#m*UJAxgg{8X6Nwa6Gu#9}T|x$83Aw#ws93 zl;n?{Jj~2|;oh6pxR%)%Jg(p;YtqI7z{VP95PWNg_;)k$)xQ)Rj`BvWqSs#z)pN1FHuDzOO`cYcOQZT;*dvq?e-eh#0^B0#VM<>ujb+ zQbH#${$0%c5vRFJuHBhO*jr?nQdY+#Ke`>WkGF`Vc5+4vhHB-V%DK~7Ie?mCzll~Z zrkj$9o8D;kan2Vj$RFNOuuH=9wgnmU)6qzadM68Y7FRjn%?|+tIZ%1`>on+;1T;3n z?ge3a0O9?H{^~sl=*t0`HOR#-hn1#9ZS$- z$9(sP6xS5Fch+@mL)UVI0&$u;EG@bX%$Hm_vT;eh4U@x7*%qX|b|` z@jUO4`&*9ZAY=Ibqf#hRJ#Ep9XN#HtRAdyl8Zmht`2Xg9Uf$qf#Q$v_Vh&;^0tgI) zSr%i!9g_s>`|ae8iOM);&$Vhx%#zwV;Gw;#Si(4w9qH8DWJ(rXrs7a&o)gK}Vg+7L zb*@stg{z5;WguQKcjep)^bOlu9n}k}87=^u&`qoEzQl<6UVTWR#OS)i@rU`7^dTU~ zv5JZ8@CKyhSn6{`IDKm-!n5!tEa@L4b2ToG(5wwFy4jxmWZknZH9!ogWak)9ZRIItzzYFZk$Txsjxv1+ma4&26pjKBy@_NI)>~mU- zy|i%~6VqGgQ0cFZ2G~%Oy@SDo7H5?Id~WP2pywafQCovzu<&iZC^f_-boFC59kS7p z(ws$*6AdViZ~}G2*mBfMXY)W#b9Yz`9m|E7PYT~UB*^#Ra#_q=^KYW`=1Gr#(b7;) zA%gJ4I1=YLSm`j^R6#`5I8VZBK`ij-9k)o`&tvsJx1#XWy*oc(+PTVatA{>`hcm%t_M^(oW76xU@pAU>68)Unj}a3ams1(1n>A`LIiPlA z4nF~|sGdsvF8IX@#fAbt+IcZv64Z}R6PRYm(rXV+Bu9hMi6il_7Yr=YCu9`wzcPa6 z#PVn;XEY>ETbKlNEmfKQTOY|le#wI2>!jfhP9QNA&TS0Wk3WP_WfnKOoY>lmU=VKn z&-+`iC{xBN6)C5B&N0%>Z7D4P3YpBk%6f-M*$XtePIczO4@xD+C+?_S_FYUGMmnmv%xJM0xF!N?cy=PHTf$Wrbe- zZ`r+h8+*v~ePSWd{`VEW3}E?h-5MMmNXXF{^0P>ZutgJg^v~?FodyT>Io8FlXPb&& zA~M|PZ}JWI{)s#bfhEvUXBbesmd&o$!=?gGx;yrWrlm(7;=eEfB$C~Z-} zTly`h0%x&V4|rW+`2CM1;M#71Jep!We@FSpC!(3=gn%A(MXAtwreBKVe277brm&Z( zkbJC`{#e~pLIp?nftFHv0j5m!eghTwj?n35TZlf3ayhsc02)rtTAWpYCG1P@dRMa4 zI52>C+p~_i)naHNH%{^T-Z??2w0cuY_AauQjDz#e=wdY3c0jRPt^Inpip;N|oD5G< zl~7^WN&a&+2$l&T8m7|5_?bOJ?5y6jr>mr1~b28GWsA3Y5m`I1fO8EKs{IDVSv7 z>voLzKzpg>OlC`>L@m3=B{(`z73q=&sA0rSljN;Ks4PgeIEM;J)q8=AY5}Z#KoU<3 zwthK8bDk6NE$)t}){4V-93Nz!t_z8PggdnOdOStIO=V#}rRJ)ciB+ zq2#77{tD3({1Xfz4J(DMk4Ou_Hgck1@lg00?}5cEej1yxLWjC>V5C>UWsu> zOQP2PeGH4;5)k-`vBvogGjPA|>Q#D*;CIHI#Awa$eIuSl1~_%i0<$)|kcVD&4JUhb zQtop$yY0J^m9OxJRrl}|HHY@1V9Ujsl9+b}liGKcVK|_CZ|PtDd4_g^l==KQOp|*~ zCYlCYCV|CUCg%d$JcRvP>)zgVSplN)^3b#XBf#6HKBY$Tt{C#jrWNksqV3CABYRRM z_TsQdii-x2TmjDonKOJ)aGTmR_18r-vNWfzMRLVJUTk=LsG@_=Id2|-Y|yeh*GOYj z=T(NZz9l<BhT2|}VSs{r>R^=!{+uD0A@7B}{1igL!3**wl zne4Y_>zekN;mT+C`N3@#^$z{TeFy8o2cNV6@mwGr#Pe^^%T1o73b19Nprl(RdVbC$ zIh{XIvn$C;G8KW96Sg0#{5@u~b?2fCQKH|QE^Z`C7EGP2q?wtS`QE~190?7%%2)b` z$R64$>>nImKr}J&2yER+)-psEO$vNw^`|iMLna0{1=YoBQ#j|t9N9+dB^Q#}QypAQ z*2d=AzwT~6#Rrd_19P_Rkf)$IPsb%0zX{d5pSbdDkwOg|OAJ_|L^ z+WPgr=>3_i+)tRN@_TLQq-EXL3|pzVVaawy%3wfq?YrO8^99F?7yh7)XwvlHv=6ye zSv(;tX@A?59sWF-ymR8rDwF218plb&3TpVz=)p}(b=~+nCB}K zXvTOf+JGdi0dy4$APJ`~_Dt;@OxZ%aH{OEX8xTct`A8PCr%Q?64A7cJ(1>g%ZpMr=<>6o{D~<`on?YdEG7D!om9E43-ihT>DX%<-KwgNelfRqHG^~i z{XK!cnTPAojU-9Q3eTy6cDJm65sb%E(Z}1LKt}4*bF=8T3(xbAIsaD#+U~^<1ScLq ztx~xM$V}D8^{DZ{iQ{qe)QD7ybY*LK{sHWD=DX zM13O7cwMas0;ZL47CYD3Gki%xUx33-6~p7aUsOo2Yk-O?cKA|FpGtO|=A%pO1n&Sp z?eCpItL7Pfxs|r8ZXe{hjEkSaHm~1_7CJ`ouCuBGC(6aQiIC49ia-K)xKXDNpwYFp zz-8(K9C7~3WVNfXpsPn|SfZqYR|a?C37QBC%-gVX&R@(HKyhF|DyZ%zPA)y_15V3T zb1hgs@j9GfiyNDv!Y*EZhfWW8>Aa$ht%?mx6f_HBmh-EHpQ7IK*v`X=@R2e*@s#S+ zSC@I~3L=nSL?(ceeP$0L-48D;ElkCSeWzH6Ze`1{^YYI(DBA)YxVE_QQa~nSz5P=S z2nki{UipFO(r=LoruK}_6@h8CbkwukNGv$^RBz}E&*SUHhHlJXU zs)gG=hh2YA{Um_1PATx&51Za8zDJ00+8ZVfIt0|4;Zrf?lRW1{#~!dX`0 zcSwi%#)Fr~vCvitiB+BbgebCGQr~#~RoHgUDge?%)6!$_+hCm&WkW67P7&zP2I=Ja zHO^a|#N3~jvb_r^2!$3IGH#@Je*1?rC<55I!dGWlK1rSVw}fpZ#@|pZvDrb$Gjnh< zAye;rloSDN(h49qoo_JWb-sV%O?`q8}`+;-19B_B@ZPFi6ED+9 zPlar@)@N^H4S?*UUSy}0`ZKYuj;(S~rEB;tTX~Z7(#D>lGX3eZqc6v+UG0w#wn?&F z*X-NgBQ1oR2cx)D$9`p~a(S~<9%Ep%m4FQs9ua1ga||n&Ajb}BEkeAYsm}PVeXy(O zjN_oGGg=|Hs93FP2NE!U;L{6F&SzX5%F!P%YR71s@$1kF)|-P8<}|k26G>iKl}=F^ z7F?ifdRA0D(eKvDbivV*Dts^GcknMyr=0S8>W#EB!opHh?K}e!bRhjPAR3kq>+@yq81?1tspI(l8aiT zAkrO+?nO7>&HkP9j_(`qIsbfr?6C)X>;cbnKl7e(&1+thk>cCC7NQ~3Y+I@1*2HT@ zMFEc7PFHbfv5~yg6dc&8i>AcMQ>zDUu;{l}P+X`{m#wN`0hZ)Wu2uw~D#~b7y%$&K zc$WV6>jHbpowuy%kDG6&>AV@P&OiW3Ea0O=WuIRyG`RJ})>$eyv2$+EaX&koo5cJu z)A9VnjQju-6_4IStWF@~1TjW0hC7}S@xq=Wceke&Worav#g(5TPY!Ked_cNUkY03f zJ_g$0=gprx_+LsDf39x=f%3~lgzEz6{CdWwya>tZEOQ16z<&X7wH9=s>Om(;;WG^E z9v}$((-nw`9k!R;v`*29*^m42tZO9t`7c=JG3T4yj2LazP~qw}zRZKTn&8FMdtWk| z$mnV7isG&D*Z5!4nPcp}03ghF0o@#?vd5RJ`@`+5TFJ6WC3Czt(e0RlnEovptGG7| z3ja1~gg!@zh%QEXxZ?;SHEEZ8Mct=|@gAbg`m!%RaX^aTb|#k_e$*THPe|)j&cfG% z!6Kg*h6wVjVRK~dd$bP*YL=6%KK7jSnIT|ffodyMwENZE9a`qZWM=!Eah6Rw(b##b zDm2*ax`Ax^!A0}@uX4vHhF@=n9!*3(w*QE*`FMOwi61i#Fbu4T=gAOpFR;gt#gk^m zaKY*TE|c3&Louy-&zXr*uJ!wsNk-soX6K z-}T7g%{wi%!HZfVDX>~Lt&_7WgTn!TArH+D;PIK5S*25@(V8=5sVS2bh-R(3#`vh5kEY(~ zoZHfvDc5z6m@2fJ^NTr9Ye&jLIZSKiV>~Eillz&()5sg|M|PKtKR%;V8Nq!m$dEWD z=uPy$*TmYOI&$jxwm2Wzuz2&zh#o4BINf%~LFQs3FS5HKbEpp$o+pg+*ZY?Td785G zW+rR34-UsBB%t)#BK2xjQ!WnfeX;%c3<(#ZWBIh;^+AqT;xfWBH>LI4SP>f)9cMUT z;tM|3hX;#-iut<-gXggtU;au4^PvL~t zde^C3wi^wO&5v^}fsVjllGJ!RJuB8XeE99|iSnh1=Gblh;$4l5s#`8zF0krvT!HA1 zYBuQ>lr3JF_@TYC)n{jymM6WRdiSS|H)uZ^kdip9yTsV-47MHZ&jlw&tQwlQ^e{Ub zV9>UwZ4fj^GL6srd)(gkS@t2Oi6)fMJlA$w4rHc6%ZE?iDJ34L zxEJ{HVs@t5*>95zWKP_47iUT4w>HMuwqrd+zK+|d3FJpjx};Cnc6LW=$VY z-oJSUX6$FJ;bYVgC+DFHLBQ)+;JR~P;P3GbKTylzZMa)kuNH8U(0n`N$KYd4TYD=Z z_u74M+ZYo$_EVR2d2N^g6VmA-<>3WJy%|^Ae(F|)S>C2w^u&Zn7cmY9ek3Xn1_U)? z^{k79p5kF_EYo9ez4$DOMLBlXUU44jM9}I5rn3%KBWR2Cxt%MzO z&gc;>_Fh6mV8@|1rvrZTSS2!!2X`#hndS^gS4zWKD^||O@rUtmeVgdG$@Pk zo0XeC+2^Q@n>-`oU3{fPKL7400>}*ww4dn+rzn^yE8Cisv~ws39Zpb~@?F+m8w;)} zo`hD`>VvGdKtVRM#r}SO$O;bD07%yq+GuP`$Adc(9MQ$^Ux0LfoXX9bBm8>D@Kfy@ zS)5ENDX~@BsdSD>9)Cb!n*IW2XfUr}sf@a(`7N~@&jz=-+J4}nB!>SO=J7+DS|!<4 zozN!JQ{T*46Ev(N0pv`LhotaFIplc{gJ|U4V0)eDLeDIKQSpzJVGsVbB%`BNISmTN zdJh+s%-2uvP|~m;24i3Z(?@1VSR@uM3jW>C771h90s6o|1)9%1)!s#VH74t0TK`B+ zXL09*f49L>?2jw~MiRmmc-B(Ah)5UokLw-Xuf=ze#(opxqB+gdvvWSKu)W!9v7@Uv z;|A8QaMGz!ZFGV^2iO@XVAyKj zvW}yK+?C-qS`qqGfuY4ivrV7ii^F?|1*ivcpU=FhGLgb#v5^crEdA7-a$KD>dX{4S zab;i|1rKdWH2y1mrJh}`+#i;k8vd_;g=OmRWPVJDbzM@U53nUC*$luZnoEim@lg4_ z^N1-sU}(N&=lev(4468a0n>L^6JtibVBRkx18C@=-}w3E6a?Sn1H%VC07UTP0dSh; zz^Lc8UEpKq@_e#+0gneBKjOJMn}*L2?gX`u>ggXGB=4`s2HC%P6CGx@MdX|-COYKK z#{1hD+vzeVjv(Wk?lUe=>!YhbguS)>fgyzJsC#uCr!fh z(|3hM0mi$VX7BWRd&o_#VOnmSk8|OXhu(sL@P)uC*YQVqimkLHiT6=%=P%^7<;$sO z*-@BNa95>wyQd2Pf)5aQ-&CvymB5Ck=f&26XhAoB(-=55V#e>&p_&t8` z1x#vo|B;*PP2|iVc{draPgTS+6Xwu~vfJp3=KL6X|$ zKQ_Pe?ch_bhDnauU8R2~c@;T61JuKs*~5m~-@XZdeZ zWcW{4`&ahr%%Vd4)m(91_qI&ZO6Xq}Un#B{UaGA^RxfWSYm=-~&Bwku0tRU2KNTq# zl6hcx7GeIi;D9CQ#*UdAk&0b^HwJ5ZhE$I>i-URE_=UzQO@edZA;3PQtH!@g`1S&2 z3R401(2dOw#BjMGC%+(c9B4m6^=)H56J0CHgJjQ%~?@LE1K~v^qtR6F| zhhIKDJP^&;5Ka?Ko2@Uf5;=&as>!{WE%3>xJIU!k8_w5QXe$XsoZhQ`pgtk36@&R3 z!%m8CXt0d&*=NZ}EdPV`#l)wP?oFOM(==n3$5mshqT7{sy3}9`A8RA0ocs?`r0|4L z%sOReGO1>fM`MYt{c_`)Pll$-UeT$NJPkmZFlT@z!$IZUBzU#E?h2-7Gq`6G`81UU{9bRxp zoiJ@TsU5T<)R{Dg_^RH07x*mLrsZX<^XZV1D4VZ%Y@-^@GC_f)2)ujGc!$vL<$&Cx zb#oV*uvVfZ=1ry|8!=r;f_%3|=v2+h7RPJ$F{%ic`n7$aoo0@2nKfw3q$u&clIMd` z7n>&ByOc{Q(8Vag$oQAt&zYKG{rMyP=Er(vmsO)umlmVF^<`QjHYTZ6GsiR#Nl$qM z%=z+)+ScUKEd}ZLaACg3sxH8u3{^r43D7oaND@1Dq~*l;foH_OEUcMju4Fd!)HzxC z?NtA^iWN8Z$C!kvK1vMNa&~(q$@J$a=}7Dun%eE???ng9q>* z(4v@<@1B>dWIusQ%sb??MS0`mAcIRo`40WA95SnCYCA*!+(Cv?;fKY{d2bdao)OzL zEqztOLeK?c(7d_$YnHyRS1WOfDZ{qdFs&@@)S}A`7G7>rZyb z{;KT`fhTN!Ay=f%8m5soES;36Bp_h3RxQgSZGSwTYVem@_D0-W^nh(NJeQzR6+WyH zYSli7*)F}S5$a6}AJZ>T-Dn9x>AB#=Drzks#Sf2fF6$8)IW~-T+vum$As@y4fvBJ^ z@`qIfjMUuz8Fyd&!V#BOP>F)ug`ev!<6h?{F=vnI?`Nc8yRLo`&r)hL!bYtU15;>Y zL8=)yKm*!O;kpa=gU|#g1=oq`gczlm3**JU$GYu-QxXTHdx=|t^ohTTO&#aRxJJ<06ONtg{W`A3gt#g(_C8YNeWen$c39%QX0{1Dk`u6E&dmN<_*Fi6TQ0tt^v2ioXb& z_=bhjWqY+C7m9_2dNKY5GOIi!>ksCov#?tj2<#P_IvyY>-&&;N`9^65<@blKJkm(z zT<(Hbp2)l9)SLenYBH~sXs#c^05vypDhcd?v(y)w7PX|GLwJ3UCL4?cd7wt~$jaGb zgcoC)x!j!hEEekBVYU{KDW3H1PRxfyW#cn>H9}T=pTuRhnUmv*-vLU(raNhWBl(LT zHr*8Me^pJeZT!WcJG}fxr{xr%icf;ZbO&OltD0q{uSWLyFvo?B<8oP3oF7a3`Hla!$^8JgoLi zV*fZqZv^$H(#&7QLkY#5_g1WQhM?&j8#wK!Yx(e?$0G<4c|!UQ!aHzMQ`A#hzs^Vo zm&U#3o2y+HLf0HVd{t}&<|tehKagKzMy?3E5Od)t&rbB1GV5yAK8>Z?gheL8*n2(u zPEXQ#j-(=MGIZ*>b(*Y>lO5|FNWksG@*wn1p4;SE>gAhg7% zP2WVYZZHCG=7ovxOI%T=D0NootZwe}lY0;*t(KKeIqVtuK{wWLjCKja>)>KRlTNEg zU}K5YX#9@qhr3TLH+HG@%1FS95+HhbBLeCy< zxI2Nrdwq!NB2O8rkuc5t48a~+ zR1z!b88knH&Ne(hETYWgV1^oznd?aG%r=S^Q8FXIOOG;B=EN`?F*jq;K!u8@0l*pyKvnEcy~lP~G-||s-Zw(%n%_$?)}RhLn1FYdgc36{>6)*cqt z4fHPGxDRpi4;F?r7eXO7T?p{5%`D&zO~D&}!Sdr~hR)WwF_2P1b~)4sMDM^)0K|?D z{`K&+ny9&`X)k?PLPD=VO9{RiQcI!5StEpVTCZm#IY@~d0gJEqVsoo_@$vqUqp%_FlzmpfuVKVfbnio>;M#Vf;>L1%mU zgpPCP_wz>SHte;aU6OV=Sy`+kyPjwqU~-c$a}Zu1nAfism!|525LLgRH&b*rZ#Js34LWDczSVcc2napQQ?$*}(_W?MwNPy+F znGD=oTkn%n(0Xnl&?*(8hNzVkA-ud*3fTzZuSeuBbWOyH(qmV!tNzQjs31-y4y+JK zB4`scFC-w~Gs5fQ)nJLnx18ITpCd5$b7S$2Slr2uH0s@X=x08Y-|O_M8R5mRO&-7w zP1pI;)WvID05hSLC4*1G1aEcUXn~ z@LQ8Z2J(x0;<1Kq9f$8WFX-9p2cZv>Unx;SN(!QnD-d3K;+!fbVvRXQEKQVSHN)@c zfD`sVxP4H-pFb8vg3lHn2638YK7U21MR^ZW67oGt19%*SI5RX|#Uco8|96y#3R0pJ zz5M~r%yq( zl!QAru!ODOzbT_{ekr4pz4O(E8#kE?*sKJZKj1><>W1-S0H?BN^BN5zOzVojGb1*(1*E4T;_FH6|VVi0y)FB_(k=mOe z^zo#GgB^U%6#Vn<;CGN9G88g!7dclWh%`Edl~s8NRY;_+D~I^N!`db=54@t5i_>CJwNb@jX5La zxX41=A6Ji|>95ojDS(0ICxq~J906-D?pbmKI#jff<~A_T6o^*GMjaf;!bKqg&&g0R zQ>O)fJ>d3BET_n`>u3Pm!LlWSTT=j&PN_V4kBi*Yu(-JW{CdEu{*Ee9K{D#>;ICPc z1LYy;J4ox*48<$9a0oS|M3Uv48TW@23phRsf{7oHAoQb5;?p?9X&{yd%)q4KgB14V zW2i)+7Y~WMb8oelM!T0p_8XZ?3;ZJS-l{ctsZ)1(sprK0Ue!op8#02<9CY7gnuxY5 zmO^jcekYh|CR#bx)$fmBTz_70$LM6Th zs*nKujYYAw1iX9L#7jy)dzI{2=AOWSI`N)rEpRn+1&TPJvw8qIR?hbC&-}G8&7zq< zKsYdvN}c|?-D~snAg=}jT)8m^W?U{1m0!1a9jTj$C6p&Cil>wZgIg#0Q>IuA@=EXv zEny_Ac;p@8u@$`%8wG12sm>=hdTbEV^o2ycx2P5k)t|m=#6tbnE>X?Cb^;gXX9tQ5 zmDF-7$8SXg$)Gm+tF`f)PIgWalk-mvFhxJ5F|-sQaFQQ2fLlHA^~eo4IkmS(mHdA8 zLFn{{o3*Z$`u4ol*X(U2?E*5zOyCN1 zCG|3X_(x+6X#snBGr3o{wF2Jh*%;e;4Hima`6pFQ2)cmwodgklb+Ag0>vJ4%0MTx@ z4&cp1!9)CEEL0I?a_TMvoImY67!NrRY2q6#17A&3^h+q>y9V60gjF6A_99)1tPPMd zNeZ*%z2aoXjpPD`a3GiqJhKD%Rd#wj>Lv{ZvXcW?s5eJH1aAF}cj&2x!JLLV-hVvb zeR#%eV)y`w=x;m_9cLc_zgG)Rr1)d?zaN9wnGX1n|KTbW@ujPQY!B>Y^x-<8G8K%p5;wZr{{MU;Jy+#}v&+Cq^L~&>P69_KIjOHR zHWmY(QoMU)t{)3^wLaRRj)gJ|5tx61g~BEr?^w9~X?XQX7-UzomXU-4l5uX5nm;^X zBqo_^t{NKMr?C=!=4L1@NwmTfL@X`g}5g5#e<+=`KQU9JW~)f>yPSJ8L9F4uI4k|oOn%j_=J98;!XUi=&PDuV zBA)~vQe*u_k>c-Qas*jw))D4QJ!uV=Ez}Fm(C^fqtzbYTokD}qxR!`hS8!exBW~kv z;AZ>QRaO>Pa07d)|N5ph4F`!oRPuWe3+2$Ra2SK|VtFt{33681RLlT!2-8c%6L9^R zNTB|aGVl!14n@<&)b}F3~RWA%ve4=&WAhB1P>4 zx){MJ=Z#(KfFN>ycuxWomi=(hmzhdu#82F=z`Z3fffn^H+HeLfa_aCo)`*=Gr2vd?^#jJ<0 zMCq*oyaVi%{Q_l9Xb~{1fw4<0)Or;-@{%`I(tyT6`$m!oo;worm;V2|1Ymd;;1y>gTWs!EP@KuqbR$W*$mRuBgUpY1X z4MlPg9@C}TRb_w`YUJ(C;UX{Mi#M@B6pb&~W#Ib>(w_K|?I2*~%L@DEZijc^?1N7& zA7uFNE93#UM8#Vwh@}2ZZsN2jFHJ6W!yy5V*NY%#HyDB{L<%#=Wd>j4TP6rUGH?SXT%;>!Vg7Ih zr%x?N=-Tv_&OxrF1U_TB+C&>05nSym1RWIuVKThe&!5|Fvm%I;tQWRD;`Acedi( z($(M`1cJ>r?!hFJz?e8b9hTdiz>xk46#V43lNoYb^e#Yy(D`?fHE^|T|5+HsIF$x|GnGmX9LVkh!QW!= zux^D?IH(#&5>lr|o}X7po7xpRrMB)~YBwLRfC~l)k@>~X-0EifzS1`zZQV7TzT1-O z1+P~$;{(iqU^Q);(R1HLU4yv>_m*T(UDm4b=rHB~Ly-%RcP&nk#UQN6b z{pIAQJ6>b|4(52Y0nAV zmjR)&KCXwo5A(F^X3pN8Va+GINJIMKvyHFL`(OJ^=#7+wy!0OrzMHV?_ds|(2z%R= z*XsXa@#2Ju(DzC7OE-@`{w?FkhV#F?SjNrW#)Y+k|fEH`Rsz8nMPlW-g7Km;-d zX&x>DMur;TFl+du`OWsTHi(+04#H`kRKQLvxgV-xG0=amE*WVmFy+p*Rb0GS_kLzfnBDvbUfLD^3 zpA~Ww0{{uO{GMnm4HJVP22vWx&2moZwrV&;((0kXLH3~YUwJF2L}%@(FWt+^Khu{< zS;?Ds??zAB+4RhN@nzaVFTcoiMEPO9%(m8J))nOcIh)A;S}x#=1n(~`toN9UtUsP; zaVFsZ#Ehh-oxA6xUc;_95}Inn?je)ER0^Rh(0ZGwSFXB~Wm9s$L3Jn1CWY!}Oo74N zG>;y3jV0^NJL;_}&z9NuyW)YTk1uMTlC<$icQ!Ko>YLtP8xVKjceI|zye`*x6BUFO ze?f?>kb_VCv>fOIA;F!uAbmj_n4#B{s&)EvaE8R0LR6f$5N3HZE;2@8qMSJh9sl>? z1tvC$9ENJW29lngDUH;s&r~2m8Nh+VIrp=M*woNGO85WGy#$d-ifJL}!D$m;WZz!u zZLz5@@$~#Tp?r|U{ScGO0A$N4AVh%eB?lLei+bBu`tR^lC5H!~`}+8P2M<`oNfsD; zsanKeg$ZaxJx3?5zXU>4AHF}INxH}+L9VmMDGsj>B`1W@;1hROxnOUWovcH|(^ zzg=sDg8g<}+PTKo>lb+*Y0K^I^1t2V3q}eGCUUBQHyA^T>o1Dre;70D_QAIyg3M{| zwcv!vLHl*e{~>*}-E~ndEqczTo-2pa^bD02y!C=n44L`Eyp&z0ML`Twdc1EW!qY5#a=H&AUH z+JxIvkNq%#k76JD5d<@Qw#BJY>1SPiy@TLd3l53o_N-fKs799KB7=b#KA(S+Fq^Ek zWh8_NA2q;f)__(YoC8jjI1fN9fmqd|pyEsu@w<8iolUSeWCCDbm6rG}sKF{M7)YJz zBL1s#*8?R&Rnx#YEy{C(7G;4r{iGxdDgrw{srSaSRWiEQHXkZ*krW~MERnY09ilc? zMmmlPfS>l9Ciib%9(6uaP->fuNeCWl7W!+)C%!9LJtd3Stqu*hPp&l!EjZR`j1TYk zG6~w@~wA<d&6pVCg)vyQK@k~~)*^h;dvT3>z>!jftsR(j7 zCRnSflqvmql={7reZV2VeJbHRk-XF*X8)&GV|HSTF^&^+8v*_N1QUPg74_wyGG4vQt@s)S)rjV7T`rt-1PId zYG+=cg?Mv!EVW$Bz;$Ea8TpLLdJK=le@(NE+%;H6bYU#MFwk(DTnyBU8qzDI z##iI?)KF13YBusAzWQ%100Z9Lysw(McFK2wZxumpdQddygivue@HI za2aW~S2_9)f}4YODP`gg$N;SyuunS;OvLgLw{@~uCbUKk7a8@%YM$4NA+}oOcWj8e znPgnK1=O&VwUqNTmH*dF>;D^HnB#&p+lZO@j$}3feAk?N3M4JS%g;d1We5{NJgvL? zLrNwnmvN42haY-fUxbHju3`Bp?jQq0onD&IbCA%pzpvK{v#Wg94*MLCZ!tPKZd5oh z?==Y3s^CH%PszmBzN)W;jej$6MUK+(D}DChu`!l@u^l)P%4hVq^ts+Q*ik&rb3{Nf zHL7-Aliv|CmYJs{UNFp0qe|r_GneP`Jlf7d{{xCmuvi$+79rxK}5vK!xk6>~U>IT1UahSx~cax$EtAV>r5swL&rp_I$?~*}o#z!HN z0p0JNTh>B~_>8dN19u1db$^7Q8=}$`6R?IirGc9d&FHzaw4SaaAtWR@&I4(Q6f}iJ?bBT&cF)y*CSfJ4jcCNFNg7hVjG|k- za0p+};WBOih5D|QHr!@|{u_yJ5kW#~H~uw>D==ykS4%CSx=0v*f39n1i(?|);Qm-= zqt-sd^F}hNDWT@_SKVG_EIE^#%@#$$47zMn9wk9&!*JQQ;s;nL&$)78U(l$0&qmai zjAaK8Fc}&bx63*L+1Q}g#&sgVRwG}|gViRcKr!#A!E<-kd2hZ23YzMPtG`pIsUGXx zTNx;k8Q&`wx4?cl5rt|xT@06^v1nqi7yt|Y%+iHjtrEq3Jo;jvzXJ<-2z=FcVqw$+ z5$^kq>>F7Px)oL(2S&BdrpyOv8R5I4Yp-tGKvVPsk~yICz}dKBKbIYM7>~Ftk z*Ln%s$bJ;W8Q+ks4Slc=d?B7jfBn z82~ygAm)!S3PDLI=gQx?o}PB3nf_jbK?Xo-i!T&0!;go|AcG9}@E06@e?1R+Y))Q4 zD5e!mzLx9(B@_MzK>aWUGF%IZ=8>UiwWvrUpoBMOzG4SJJc6qUr);gEOQZPRHEEx!69 z^9hE;8MpD7;^}Bj(|uJjbh{3zN&10891c>GbK(d6zd-FV0BTLn-9;uH0C20ScywKl z@Y+pw7r~k;rBc%9hk?e>FxSVzrA!QJg8r*l z#yTc<+qa;_EziV79<1B3sXY?YZuc6^NgMvxW<~J;PB;4^mV~~AQ`hX-2vfRg}lj%>ZwvlCju zFdak!tV-Jhy1=5X%e($3^$R~M`U$~SRV&|t{o*Td!W1VyXUhp~DNaqg_?sB+Pt}(Y zHY{yH^Ty|Y6Igy;&z>|<-x5XkBAk3#v0S6p99?YDcHcyqFF`}DBx4S24Y}WZangLl zz&bn;eIEbBkT(9YF1afBBF;czv{RXZF?+T+-N>H;vMW=>cmi6o>ZSelphq@p^F@<7KFam}}y>`LL)g$cmQMjuN{A5M)%hRz;`Pe2W}54{n~MOlFW5zNS;+jhfn6ZT8o7Fi zq;rynk#yn5`?!g0FAwGMYl|kyqYwH;d97GRK@DAB*txg2Th=g;)7d%730iqEg`lHh z@RtCW5U%!xb)D%pEW$ql>~L&Y>F303RUnB(g8VSR;`G*OA#;?~_UAXP9e7CIr*wxu zWU8`*^q2(4d3VQuS_YyS!XQk_@(g~%x7GXbv$7|p)Zq5}s22|Sfxk>y9Nq@dzI$&< z4gW>^QnCOpqMqOE_n$)qy=A?h7g@J<$^ZwgbS#rgfVj=fbxpeJabkE`ZMg2=T+Q8l z0+S#gfjsk5+4lzw7}L3G>^)O0uuihOs?uj*M-Lr4ts6cIVPAhbL0=}aMS)#xn9)6y*JARo2d&Hdsj1|i1_{Suf7i(>2B=# z_Bf-;X&DHMmX4lY83@a5oOqwj#zZw)hrb9?_IoJFH0SxJ2yyz2(8Hwx;YH1I^eY_U zmC@=R0NVa1dPnsDpl|MRmvDSKpO5fb^-w75w5Z&Men5x&avcE+^`k3NYd>YuHNSi> z2-+}rO~H5yXR?8%e9-sTfj0Imjor$@*X-~gg`dq17-O$Z@bUtzB zLDN$;PNaZ}pi_C*Z}JF?RCMGIVJ?j)ZV`C}fMqsqKtGi!t0(j^ex0%Bj5}Wm;DcdJ z%NmT5tWIO>rA~oCAQt9TgT%=+o8uC{ZM!o1Ez^D){dmsVZt0MKqeA0|p&Fmc+Nn}b zT0lVg6voqY@3xS>0eevaqW?^e@c)L=#{rbCNe4G>)!L9joIb`zRkTsaDYV0?F(+u^ zZhptNSN8;;Du341u9*=tG*UA+95F9k_F?eN74QY2iqts8UCbQg;CAKqfa4z&y@{V7 zaRA)ysol3TqEGAd(93Rkq_u+(J(k2LdR|;&e@5?71#?B1Y&WWung1WAT#Wg;AtFq6 zToQtu29!a5O!TGis^jV6hVBC-CQmgkUjEa?KMEbL7|R!p=ja@ zy%J&IfzB#?zYd^=>>Ag<0w1hK!)k9A7nv&oX~u!3zvDWp0h60$6E0jwn@<1X%=DWG zoHD$s#yKB3T<#vnbIyvAIOizm^19D2+mg_ASk~CQT_G|k*BObB*n9r7=zI}80A}vn zNZIDOvqWQI_tP!)y{Z!5Wp0;yyvyFlepPAb;LECA32mGaV@^OWEo3{J&o>Ge0M}4S zpeL$^6Q!dTp}u1w+jC(9$w@Gme9F34Sei^t!b@QEumR_C`8~E7Snsz0RR(8_#ZgIu9?6 zZh@e?G6e8vcfMY$-FC=?;z5mk%hh7XP6t@KU9$(9itH2#Kcx8%)KN8bP;B6eL)cuX=PwfR zfJQ<`MI}*i{#HQJqr-Q)_~zW-!r*1VB*fME<*aXaNeh7TabHz>Ku*rmV*+}=q&dd9 zzpRu-gZ9|J)fF%om+ z@C0*i9G}?!6N4!$MmNFUN2ciYiy`(Cn%q0{7WcS&Y17>PDxiJ*J5_Ds=}X%RAeFuI zI`)`b_<#&~m-OCMzh@Igq5`4lr?=||o{OeNk=2?nK+w(~BvI&ZO(T}F&j|&hm)5?C z?_4mtXu4Ztoun)=4&JS%QQzieFc!Q{#BJ2gO}yQw$CA2&`=J6;4uhA)NM3B-!U(6q z-kIcd@(t`Mg!9Ft*80J{PWAcK5Y{E8n^QS2unHU%{yE`pBw>G=vfqx_wHj5{bx=j((thsub}+ljHkKMwouhMdVGwmrFH)LHiTT=(CV>2Ojcxq0rxQf zY|GDkuEbmN=pyO78%DJ@z<)2^^~cS?$-|ATT~(%ZiKZ#a8RDPYCk<}X!y19|PFu=& zmKR!U(=m>#3vjc^gJ-`nky}>8kyiJrKcM}0bTfx&e19W$fiCiA;6X%ZGo-^~lA_^t zfvE8Yu@~ciz@V>FABO93OUq|*6{~=NmD=2HF*|?b`h&adx{;t`@L~l06o7W&-2ZDH zK?x`gCcfc8E;$;_7VC>&nBW7%YUA@;>?==bZK08OLwQ1Hl`^Ma{ymiMs`>IkBsKBf0pg^@%X3)vmQi)-_22dzZB(!uXVx9L4J zB|G=cvLxs!FMs#KqhZo@6}-G+#|pPiX2ouy<=fK78j%6A9LmxI&~!@^q;(?=LO;K6 z?{{f|&;;%M?dbgk@aezfp_HgUhbQQ?dtpMaE#MI2L;UtxXi zb>N%sp#FfHi#Zg+22YXy_X9Acr4BSylJtu(1%B7d=$1t;CVJMITE(st|R z&vcG=B+mzV7c4#Wq;Cx)HD8Im9QCNDaoB$ z)Z$g&H#d8;nsCjUp9n8o8SZ5QK(3HK0OX2@$Rb7HG_w2V=ZN5>#ir&2pk@sFaiMSG z%k=@B(w3cd(3%~H{&X-T=pFO*+O+qbxIbl}%Q;FSPMH5LHgZCUYqPYKt#*y4fpXTPZ#?T{E+D`lKV#GA;%&M)>wmGm0OT0M=jkt!F5=e6wjA*Cpz|r#kG3+4kPW4NJxxoU+_vbgWZEPzG#F|IxEjh zA%Z@;V&!7Z<|6zK>D7%@MAS9QR#0}}3 z8>P&Ya$SBhR7OM(clEox`vot=d>(siEx;Uq&(D3%=*Xs0W^FU3jC-~cvkrD&e&kvt z1M>@f(ORn!`=Y=#YwY09wWdBMp8Q2)PvZs1evlXK4EodI5--oy^|3EKn=cG;hCaM^ z*-?ASoN_@k3F?%1 zKjF{H6PL1QGmmP5-ZdGD(tk|9zT6sG=*HhA<+Y!q8fD-&d#9iy{`DCaXI~Y~0u}9& zvAsuKhWyGlMA|)S*-xlLyjnFB1RVp*AoS8#RgRY?zVGQ3Za|^MW&K$BU+!h*zf_lm zs1N9o@csU;GN9B!S_MlI3q$b5e3&3p^$y%a(k?iN)C5*Xlv9&y;CMllkG5N+_pK5%kmzp1vTE3t? zX5gx#Q}5xhq@*LS+3Iq>eb+ftN^FH4Md9mRE zvSlVeU$@kXR)*}GJQUBGqd6k+wb~3!!Jj-?USR*{)7vEfv^P^{cR5s%-7VpvPsR8O zKKpeybU8oz;zG5Ti3vwN%u)>qddWUEABmqzXwlzoY{6+PfQ6dXqX8VSvvxoa$=&t> z6siffQCbuYTRO297c{->Ik$`&NH>9yMEfYj6KZ6^{FJ+MFV0?X{#{+r#t@AOnwk#hZ9LR)d*$K;bnpAj zR*t#(!?H0@(@u`{PZK|0#Jrh&M^)+>G}h-Pi6n^XrS<{3#c?-5uzHQ8zcx zS36(LIo8Ps>virzKRek6ewdzBYdm2!cC})vU72W2`*-Z_`c=&=u~XCe>RyXo00CW7 zW!L^!=N|c!WglU2z+3}_g4{Io;O(nxF%m0POm>o19b@c4jL% z?I+w^G2q74_78s=CDt?_kE&xK%h(p42il#F9)7@FcD(sZ8q74P<|*+xO+o5Wl8LgF z+@nc)=imDZ35FiJGsoEmq>nm|O@6W2<1tnKR#qS9uu$6?fZIrU_u&4h5a9ch=CcP7 zxG)2v>QCE60#$%zlQFqHgx>NBp;1wtZSwPRW5MX+t(||L$k*h@<3wnFg`G-5f~2|n zt7axm%=-{SnB)V<_mBycFE8shi^GQ&)Ty&B6<}=R3Dm!x05VluB6?p{{Ad`K`I!TA zE}=-YeLD0t?!vXc81q8FzYNR*Fa_{m8UH-32L~9Q_#j2#|Ek>!i%g%Ak7kcDD{gfq z&~k$}E-%a{^ga*aE4m9&7!CeA_TNA6(Fw$GUR}tOvZEPU>s7&5bI)?y zNdRZ%t;b~k@cJhI$P|T|7+GXZ-msG|iq56_QR;JxRP4h>g+825Es@crArD=NuiVeK zw{}0MUi|V5TtqmgQXL)yg-Bx$4Oky@+TY#XM3o})G51i@G=GSGES+eo3bRdO`#xIT z*gSEK5XlL^rB~%YP4>ChNf!C=>EM0oS6_ay&#VB1LZ2LJ(*pq-z^_ZOmXQBE=BDf~~*4+g4qwKAy0}Psg7)O5wq)lxWIrGGNC262JP0 zG~l$YYs$oQ$sa%6$8d7xHDCZWBX#ZOF^}{6l4v6bp|A#e-vcw&f9UY<_hUYry*lx4 zfw3;+(|t%I6Ks%zRJADua;`fIoDNgKAkN8rlQR!QSiOAf#H1RdGFNeBA1w^Cy7up^ znYZ6fdc)-U5Rm8!gkk|bfLXp(67-70CK`bCtD zNli6!Jy@l}@m*+t@~eP(p)>UqEV@o?=rx?bKjhs=f%XxHGcza29lY^d{GZR8I`>n? zGbQe_Yr4TLm{sg&eay)zd==*b?-c$uOrJ=fv0Vy!)k@*!yM#!;mv>HbM3Es>m~Pms zWdYsNL8n@)jNRKN^ug4DDMwx1#EcL0QaPLvut8>GdCXE*o^d4csRx7aR z$!{S4^F~a@1sRx{ooo!BS{CnPpL}Gs$JdRCaC4jHKtop7TgvNVLejPd@E7z<= zI$n@f!27fRZ`R`ankKtC#_^3=_htt(ZxV@)yMdDeDw-P(nuW%WMH;sy{@(`1+F-?M z_7gJqx4i1N9V;+kQFsh6SEcwTgbDE&C?UO@P#5TR5z%Nn=P0xXU*#}iU3BQ=|6%Mb z!=n7wwojLYgfO&%v`CD=&<3G^Af3`74I+gqNa+Pa;6`-&|6 zQ-j`S6j;*pl}8=enOKiD_Me)vwXWARJi(sEYe3wQ#`Wb1A%)m5NIY0#C>$RetXog+ z(GGeviLe!Z$Ph+N-#{*za4Z8(Y39hCgJV@}un;xGgs}b?%ecJ4T`7tB|$5(22z8IMDZE5M?6!1s|Fo zqrdmge$A8Dyz$E&s%!dfIp6WbN>B`;7BzjME;3y}`eHc)oETpP$p!w7mg0KVw@MY^ z1Ny^!0DPm{Q801<(p9%Pyt$Kd; z*7e>mX|wHhzP9>d-S^PuNfW%Nq)EX4ta)C4USM?*R;2eMkh|-cDN>x_I)@iHb@Cq6 zP_P7PNShW#7h;6_1xfb=ca;82n@gQP2tBhC|6w^*y~5P}cVXWr>-*ckzdJnf+)3c9 zlgB(QDe!7$9l>jp4-f$Yq$BT9SC<_nil@~};Dp@YSU5yqXa-ZKm$$f%&NLS+2O-^7ndT0Ab6dDD&#;hRc4{2K|FpQcKdp1sSU*SyKr?#?&!F zr3?ReI1?X93GP@F3G0Py#g4(S3NGT5??(h>wDcGgtioR^ahj*;4|Pkiv&=@5-B?4i zII6&gYgH3(VU@YS(t8GuEa5=a369VK8`O zPO5r5_%GN&gZeI7vBvCI-9ILi$}3G;N3N|74X=2^uI-4K8uk9;lF6Jitu(zKY)Gz+ z*nNQ=I#A$=R1j>Q9D}p~ooi>@+2U*9tokJHoz#4G@hD^oNyqX)P{s~Uq|-sF7!@HS z2=5H8#oY&mzzHnNWU6D1kk_*^Rx8|J>jL-VGedhFh&j%$CQ{1y6TRD3OmA;j49YOZ z{OuG7pu8jDQycXwpV=K72^{n$NURsu5o{J*g2{<9DhJ5dhbMnP8&jt4{6t%FfM09^ z8zl!nz&a3a*GGJELAVMJgln13mAMBp=VY2amN5>bq)XFD-5S+W^)7Y`$R z$cm-A=T&40A9gKbkF36H?M;GfwgpQd(j{C!YUgFU?alSxU{qxOTpQp(-@m)QEp{!? zc)m2eSXwGYH<^XfEf^CLQeRgYBiw34Xa&5++mFj;j;Ft564XMsYWA9tWs>$+V zk3e<2cwYmikS59ULszHZAJu(sO#EcE$m+vu&v;2mAR(BQ)46wbD=p5z0+dm&K3x_Z zN!HB$5Eo34FunW@5o)eQXl+2*K*c#%BNL4E*jyE~-?U>*XP^Ji2e0L#EM$K2$zY)WzDgxy7O)#ww{ta;r%WxTu(56W4)VfP?k27jo*ZepQGD|0eqDso9wuDl$> zo?tuZ>_`fGutSq$T?d3FQbgALt3wKHcEoE?; zi8TX*s;i^ZmZeO*e)R_l>@B%sw^G-^hV6AQvvwKdxlmgzRr3w@VCvJG_)hUDJ;g$1 zsMk?)O;8bb0L3u%#$s}v*eC#ll9wa(6KKQAeQIq6mI##=RmBE>UeIMJm*9SMOrV<+M99)`dr;OxIe%93nGU|mlA)fel-`=t zPw;41@rY++^1O26&?JoC%p{JUbhDZR`*Rsb?O;xlF~cIPLT6}~Ygo67mIL}C70!Gy zoO%5~0VoxxIdJ6Z-;l3fUYWK1=re`28;W)~7z1iLtg4m-49F46C7P4Fma14<#Nl zh0zb)h4Hu;e4LGaOhYo>bF`nrBhU?#n}|vB5Fm#h?(K8O_nmp4Z?!bEaW!1i%Uqo{ zxoqqAwpZB%@}#+aMbvJ_TY^%{U13pvIn&01dps>^DqfN8A?L~*c9F4I3YyAqwSeTk z^j!%LN?PlObX`oXb6rw?i`G|O@NL~~vuFS=HnCQXn6ZcdwI>yn;gS;aZ3O|%nNh^1 z{-7lgh7psXk*0-i3Ii5C-H0Z78DCXSe#2WVtRV9O6*!)^fQl5au>0Ew(Rw8qY5%k*6c}79bVN@;> zX88wu!u6f(Mfx=k{hvi#KZ|*?2~Nr2L%N2rKHAi~32)*o;eqH%cR6GVeiw-s=Uz$^0p29kq0~IaI{(%J5o6q zy-jHIzRSArhRNB^$yXs&lO}x}D&fM$&zcX-7NGui3*QvCG`c_m`fGe>{>$?}qs_h* z2lhwIt z-7Hp^5-Svw3Ph!un?kEWdW>J8e{+{k3C{Y4ws;@GivuI9_PRVjERi7k?&n$r1Cl?n zpISJ-E~Q?7j#Ne7=`5FXx@kq8e7ru)QzKN@-`fOF?-e$MHP(u`=9^V49ZIZ!i#Mn7 zMWN;3AapHT$ZhuS&yIj)?}ao?j^O{Rl){VVE5Dt8%;ns>sWXijgx6-Zn_$4nsn&)Z ze3cLdZO^VwqcgocXLKe3)mQk{_?XS)w7{XK8IPsRFon$v`$)NY79?IDCxps3xwW`I zNZQ|F5Ga0``>c_l)+_^Xwc^)XpcXVxI^VZ9ush8h1o_^o6#*1zDXZozDAnA;LVbFk zd;k0b_^}HOG!H63J<%a4*9JeC^Pmh$lHSMthDjB&2{-0Cm`o>=Q=}k4UU7s}{L@(O zlM!JSU>-AU??EWPPa>$>=ynqvxba?O98&e<0rBdy6}>DO@*Bn;mIPR36q_-)ovzj8 zb4>2F(6>osU588E*;2+6FoTIWS3fVG?a|ft3N;z3j6fgX)8OYh&DVVvZ7Bv8|26D@ zr@A2Su%Rb356Fe5J}J_Ora1Bm2FSUQUg8tfvmpr+%N?=XfoFyYDPU;5;874UH-*2KKAm*SYg^_l7c$T63EnMYY{3ET;Vly{uh$CNI!12EA({ znCds!)v?`t(@XED7WHfP7%8eRlF@jk>{;n+2EzVV$WX^cRhof__0?`tuOps`I*;5z z>tDscU3i0}6(!?A&=F(ssGpi0K4>~6|Grtag)8sH>E+SwbVE45omy3paMzF1P1dJ_ zV36g64!5W%Rw$s+xlW8e>-kCwb|iEdXOJ|cmS+&E*(S!x6iOj;YFgP+KIy+MVEqO+ zS~pvZA!hr?`5zR889-66bZj^QCD_iJ4Nn0e2us-XOTz#$d;k!mQMa>xo|O@}m3^C( zw)DZV;=cY(J5#@avBG&0X#aH|A+iXH-amVO<7epNx2F?vq;l^>T5HSrdJg9qsjob? zNQAFE5>Ig63=`V8!2I26 z0)d;VNz~R`;h_=J4V7Mn5s{DdHrSeX;!;@N#vZ~WPyU#utrOFy558hdQz?!`=6f0o zf76L34rniUn0qf5!A|WRwWyY2EIWWhI6WFG1$*puN1GkVGnjs(aSICtZ*)!!S6TJZ zFNy;AnQ+a}B*yXBHrur$nWNKcm-+OX(0Ruu5g2i)fV}1<=lHqNXjy>Fl zGAX)-4O#J2^2-Z(j0mh3h`{tMqu57>bO7FDXk0lRK8f|746Zv4X=%I(3G9;6q}UO^ z$s!>Lz4SCDlc~Y^b%+wm^}n*H?$7#B<1J=L>Pzrj81X4MS4RF2#J@pWLA>|g7Oq_b zPlYRM+D!`S!xy2!uzN08Skn=3o0rShE~;d)ufNK8f{XduvTxS_$KNj!oA}+(&mp`>`H<=EgWt6JVUiezNk?bM_Ydqq0(OmXteW4GAhKEaf}L!q6hK?D(@j zw|;+>N{MQ*L9arZ)>8qocaENOv||Cbca7ZoUcqd?U8Ibhi^tHrZRg|D=CpK=Wuy(M z5jU|y6}Y^d`D4&AFCze>NJl^HLS%B?#THI~$ELZDC}*pl{L}B@`w@jfH5dFzafcs? zBhnc*E8VzbYem1u_hI#G@Z1ly8cir3Hj|2ZRnT$dT2lSSshoyz3hDDf+qO4()H-X) zK)J_WdvY_(=Rh_atxYGw@9ti;`nt4<;+W+Rz6oc4Ss<6qq-P& z3tq1z%flHVfp;}KU?J)eKL{RQAhf)+BRl$3Wh7~WKTU)l=B3CNeqJkrejE*XTF#nW zMVy)>yr6m5;7<$P!eV9GToxosvNuiS-Xf0y4Td>eUiU<29Jupry@)VB=zl$`1pe>C zky)TOoUImL>I>?%%zcbUg$ivWI^kh(alroReJU+vB~BrpLiylwASA*q81AZOP2)c* zv_gJ^iR__^@X@()3>{SvLl>O@?}DfRslxG|;b`5$a4EG_0AT%gs+_^G+6u64b4h+X zaXZRZ&je}_96lvl9D+M`f2K)56&8bO08UXSZ?MVE8?Ds09l|#E zFN*tH3>qsyzzz{|a`Cf`FZcwAJ-eQ}pFP*iHa(>P|I4j-_a{R2e5OB65pHpbJJWq7 z;fb{%!z{wSnxeFGG;R{JEYwZ2MxM`p5hwTWRsQ8IxCNo9Jr)i&>Q4Xy7Q01GgV7wy z9<_AM9dMH`fPjNKP4k`)T@XGtJmxnspk(Jej*e~ zBt~mjXCDzPcyw>Cc4fJk1O(YcZhqNu8xZGu?6l)3OJ~i|e&?y&B}k27pRft6aihml z{U)itS@1hLjFsqQre0hMn8eYgG4Ji0oA0JI-UDbTK_-eo(kUL)A2AYI*5_C%Nnzz=@y#^CE;}6K~A42!}!WZqaufNU)(v3T~pPWNOI_s6*3 zT234p`-c~Pxkq9oS0CsNqg$Dbtmbs2irG%c&-a`8MPN34G*@rXzxU=jdfRm0nWphJYK(3D37JXFVbO;cnZR965$N;rBWNb7vl zGD|e28P+9~bt^SV21c(pH!*Hw;z0PL0_u>Ed9`IDeuSG#Fap)}Bc?OXl>o8oM1f;MMINtYtzAPiqxYK*Bs-`aj?kG7X52y|Q>P zpxbgjdK$MN-`Z>m_fr`77;$>+UKhN9a52_l>eBM~v@VcR=tjncJ+u?#t}rC1&DH`< zz*nDd%yRLl^jR!ZV0w{8gcW$Uc+Voe8q@QZ7~mulL4b)JH++2i3lP@wj$Q;D29&>7 zJ_;(4C;>+nGYB?=7Uk{oSR*cYws-B!1+{Y~^4LymYNJ@lGrco7L|kwUtX>NJjZ}r-^wS z-_kXr42Fq9aeFm$m}6va?lk$kO?d2Xo6UMAzOS0sXHmV@FeWsD&k;a&`NreJ-5DUP z(-ubtCSRW}?K|A`3`H&9uOe7lhgg4igYTDAP}Ruel^k`l74wXQ8qxY^6WNo7S|wI~ zXG>bG7P^|(C?Ig^J(ewqw_i@=PngNg+R?DRbd3F^rsm9R)irz_m4MJ z6{PJS7K|qnCy1Qfd`;42ytA1f>H`V2MLP?}@3huGE|n&iOLU95sZNn;g$e0>-iVd! zlfb`X1NS=-`dbtWuxe3U^YZnC+-ji1(robOOq)%uw#H2fJH`mw3B)M>NPR0|(K4n{ z5nA1Rb-;ETg@?c|ckN2JsXxRF3`UB0qvq5yZ z5pkgv0V9FPhaB{pXf+l?TAx&URfJRhH1i?P&0AoS`i;d!s7kN^6X^YyV$l(!SY#gv zk~OOuqUIkbjMh%r!ONyn_{1po=2DrXwB}pv&ni&+cV6sqFxG>GLYHUtb_o*o zEL{qkLuys3Ys$p2pJPS9C zmk!p{&`IvDO746=sfOkGb;wgoAN!v9kzY<`D6cNT%^BN0Um-(0$j3P&-6a@RGNND76 z)yP72&Z^|$^PYx!o{{|6)jsmDv!eB%&ORB4rNNS}{gk7-Bu6b2A?Vlc$Y`pH)XCdH z=EF7FT$Gq&*N$N4WIxG>W?jTq6{|Bn;748|+9^?1c2WJWz|5(@jP+M3$H$~W>zxjT z{{;g?!1D{amh#k+2;GgFHEFdEpKtK_q+d5qh@S9q&q?Y~oH!PQ%387dFTZsk0~o6) zY60WOsA>1979+I3p^~A&&^&(5CFw|={ZL$4Z?2|^IB-+(GN$?4t>ie*l@*Mz%6y`L zH}vbznt#ZBI#G;eB|P(!uvDY^33{WiV^4_S=MPqYM{ARV9M2TTKJQr@EbP5#e6fcAs?&6Ir&{B9^OEX1NatO|anEG!iP1m=x zKc}l{h(|=cTO{GW|EflzJo{%cyHP!xTYdqQ*woMvSA`l}l5*P zauPg6I(2MSUk0To8gN$8RkcAhqNFRiRr3SFXqnE#W%}gi>F1VlIB8F*cye)AC zJ8CI3j`%+&%eX|!$xdJFI-I4-h^c%yU(38WTqPy&Tu-&+#&nD-oXEQMA+W(BZ09PrzuN~$dup?D=iS2(vT5I z3J42#3F0$p=4%qrueQCTGlt{^{egJu)wu;ZR&?}!=sSE35=#~Pj0gqp39CwsJzGut z%%O07lPqYse=t)7l^hv2vwQxbe*-vGbCs5Mfr8_P0goyMYm*T}{zq8?tCkADeQXEq z3P8Di1OPZ4qgrJx5`ohDyF~-l`&;ncfU|clXTRkaNkCzJ*zbi+!{*L%P2kk4t8Gz( z%y9IKDbqA!T*1PFhv3)JJ=60y1c;1)^L5u3_i!!N)lj!zE#F;RW+=Fkhm~?IeM}(w zZg6YFVS&#hIOdQL2I^Ezi()Nj&)=8}#@`wsVxph8$HVU6TX%n3(wpQB4r<1xPZS}& z6Y@RcH>X(_PSMr1lU3#qfe`uR$sqXi$d~Y_^`33>9o-<<;CQb<3pj!}6BPS?BORns z=S8?bgjMrHp;&9>72nsK-~ zK}m(eX7hK{c9n!1g?x#zX7M;dz^B?V*lvQh>TZMO(lOd7-uw~%w_(xTQ zOF5;!aQtnql%!M*00GkxGP>;2eyk4ACr8!I#YJpdy2$s~xDRfLFFrAx-k#6yZA%e# zhalPQpQv?KPM=pBI!`*NM)WUgg4Bk4jD#3ADK;v`8V_}tgdKX%P!327q~q7!EY{*( zseT3K4fc(!AD(F{lq^Y^-sDqe8EWY&58_AUpMf+Zq>SWA=ro=m!2_Q+lBP^HIP?vF z6lKrVnZ69x;dGXZeFDq8jH5W^qRg_a%Vc&#Ic0fB#NI+P>e?bpzBD4-l{NqQnVhE< zv&raw{)hZG4)z4T@pa?nrR85Ds8)?!L(^T_h=nv++&>nb1Xj&F0(duyuf|~(>t#S< z9P+g3N~I<|L%nB5T^eUhLNVt&%ZOdHFjr%D`+Cj8Ssw0Lq_ul7nn~yT)NPu2$Aa5d zz|75__h@eSgH!b03Cp&@{!2*}N|d(XwLhR$7L3@0hLNw}qh@CqLv}(+l#w2mJ#1Tw z=P0KGD%j5~t$m=OXAq~OM3Fu{3jPs5K2QzXu3}-OW&#$<6>#d1szp;4#54W5(v#O^ zO&HC~cZ-@b1@Y#OQH){=&F{#RbMNOAlmM8-h*Ku9P1gs6V%zCc`eyqi7jD6-JErv6 z%ofb3v^7d$a_(FY#3Q8g`+SN)c$*DP9~!0kVsC8kQ1U-40AbU>YN-V*2jd4BUIlw% z^SUOmYf17O3d0}gD|x2;H;5HRpy`r^o^M_MG3|P<4y3!LyM3LwYV>|a8T@!9S!=z3 ztNPsqK*`TAjAb+l7fWv@yC5TS5VducC)Lh_TI2M+LPh3VZtZswXsWUawG5w=4r5!g zrSp@N8p`k(Ntm$iEu86ge{`n@%eVBJTunXf#KZR$M>)_ zc;O&Fm3a|_%}n~9)9tV64OBOdUOe`46X(}wOh%eA$NWJJ`fX{cSZJSC1Q>5k1S>3iM#*5)-Cr!@-5&x_r(eoCzXBI`kw zpoivqPHC-YZBl-NRw0@7efx{?OuB}#nd8t42ceQAnTO~OI-ZhLC4d$ zUeGV_Y-!8%(w#A_X?vk>?*%d(P3pNzDgV3cI6&582h&Vz4aRw?iOus(hXe09y>q9}<`LdTO?LyYxK(9lOh&3JV3J4*z}Z-s#=V6V^vWmq`+v zL`qI6e?bbl|QEp-7wnHmnwQ3~m!bMHn6Kk!w^nPa^re;=9eG<9i-CRgp7hy8HUG()Oxe zp4U&k2n7Qc_kafqar(42u3*G1#1(Kg)eSBDF8a>&b2Yj?c0EFIhRE(QB`d}CJ2*v78ou@s4Hlk=bNRce)N6o`?QVl(7W~M z^G>SenJ|u6d5gF#jPdvwqinuk_a_c^d$xDPV*|5cJeq!$1?><&2BC4G^B`3dofB+P zOoEKKUa@)`68V%up}S0$LgIF6=#v|Yw}xAVHkfbD_C4#&_flB>=qWfUB^eqaTkVZV~}RY*j&B&{&u%(;gn$Uu{*O zi-!{02%59~BBu>2REjQH_#Na6K_QmnY+ob1$Y|V}AU|`coY@IGm+eYM^+C?w_e!0Z z_ERe7z&9WO1-@;Yw271>ephs&{!Fhgo9e0`Ka>6tZtCY}_}F9v3*G{iGreR1`pzQ2 z@YKgp|D3Xqz|hIn2eS;lNerE&SYqgMjAU-hjjH9yOUWOD0R@yDq1>cnEcJ!<=fl+&r9`6KukD1y;lO^CT!DqKrZNTJIP_9z;lIAJCaL#k^Rn0((zNs7^GwE z$u`{L$v%70J9;hYZ?ikBTN6M=`V?O;K6v+VbiEy#z?8BtEtD>D0sWYelbT#WqBnS3 zXA6hv=9U^V;!$Acl|J3)^{n` znN*if&*JjvNj0)|GK*q>VJF;mOCj;fN>rGwllUAD9v?J7dwF0X zCl=B*dt6M;)Fp%O0m}7S>v*2~%pTvl-pVg(Sw5^)s~Qki@*B6)=ae;`E&yoK(-FIv zKQ_a*QLbYwhul%T5U$VJ<9M|mHnakSo^M6?!V0GRndO*#W!Sp%x)IO1l;5f7tJFkS zz+=TMn+N}4xJ#4+$t$4MT`5xn=!1g}pa(#;e+PgI))}<3ooRuUMyl~XO7~!6={Jzh zGs-MFiDg3`gXLfvAL%5FJwb^jn8sUX>WpG#=H1Gf9 zbLBB5$gYTnO;UHkQqPZTT9^snTC|&+KyNomKxSixJT@@$JNIeMo)k0=`V|$Eu8g+0 zrs79$O04W2*l6-xT3>S$=a?PVd#JRe0CCI%XB~2O*C14}a`-`166vavmUs#su>j*h z63zE=f3+3`SS_sB%BY7@)+j0bcgYMu%|GL+X$`t=C~1wy%tE zM@3xHE)2Lf847ewrJOf`=(edD)0aNg7BX)n1$7TxNEZ(x-1}jr*R6NxBkq zkSakm%4>ni^#vBP{CV^FXerW-8shn`Dgmb-xKo_JE5|v5Po!H9Bf%Y%4< z2Lqmo_90dOOpa(SHlgr=+e)~rG?RIsZ%c#{X7+_d$4AbnY0rpbT#_ z`$I8oj*;@rDWMMlu*`hboM+zOfe|;@z2x%9_1PYnkl)Swgo_UlUlwp*MR0ox z4tRUFv=|3t_}RZOxVhXP-_GJxL&t!UY1xbCSS^$d8P6+G4rrXcxeHLgu6A z3`(kNLR`oGdcchFQF7tCGj&jfpo(gS7inudMc?art-m&;a)86&?WC)eopk;DaM-FI z!Q9eA(~o?(HkgbN$enVu^03Vlp#ra`6P4WPE%Qg-mnCs6{TT2iZzPMg! z%0XgfTG&ckgwQ zz-?%1bRHm6!5sV(E_CZrp}yp@%5pn7a8f~Vg^it!^)1#%G>b|fS|#vap5r0;zTUmg zFBqA=VUVtLb&v$goxmYo**h_Lj(05D~NzqZ|BMh2*TM0NIw~yQf19tgS+id`jZ`agM z6>k>zK6cxZ{EQJzqKNCJ}{paKW_B(*o96Mf*s4a5+;{iZ5y|nL(07H9=68PQE`|ua*|E*}N2xa#6I9DK1 zaR%3z=XtTY!3cs2oNwN3&jgn%cf^Jd;yoNdyvP5fgB_Kv5^ zM1sbzqg>_THO@>|65AM4k1LUb1CAAH&o_XO_?8aFj0D@nga zXBCVT)vr~6NTU$UiL~}TzcLt`JkMKXfn~kO$g|5E+@(gzCZ9=V(?+_g`e|M8D*b#4 zyb_pv&2l)y%5uX{EJhJ7U;?q>mvp=fh19fyQ-HXkwiPQs7-p>e`~{m&F^qC5`e|Cg zUDL^E4WPj&-tS|A9Ugzf_G~>18bBE4F7qbLe9>ZHKtaOC4Hq7Rjn36MaxaorY4jr8 z{alITJ~~SqDUzh(y8Wc+qhmp(?^xR2z-8>-z}jyYMPuX|b>IH(*a z0N%cDQW#P)y9i)lAQ_P`^2E6HGPK@zo$tRuWoFt%CJTfTomYG0 z>D!)SR#HW<(@OpKv%S5eCPREO^Fw^b{_H@u#gzT1tJMpD?eLMQV(@=*dN9)u0N5V{ zzfl0NpUshWmNIUK8=&{=&kly9ouVWdGanG78=b~aP#Oi-je6;IFPV2N5DNGHX`wvl zTVlUry&%JEnAYT@CVF^2@;# z<7zK&(FmT01i;S8Y{p=8j^fa}+~zZ*$r97Vrk4pMkj!-NDD;Nb#%gJV`VokB&6H?c zQvuU5!~nc|sAxKv7+u#{|2-$$Aad^(W8dU4mr~>7Gnb0_{>dQFcS;V1 zUj?Iiz-<2afgFgqNS`1{5&=Ov6?P?UIfyp^<0xhE;Rc+G4(!S6zEP7Lf-M6! zme%)hH1YF~hZOQ~t^_D1y#=!werN~s78n$rHYrh*Z~+Dr3%}M_NzTia-Daeh9t6~# zkdWsXTwSP0J~xlc8<0K_@TM~RJ6kNcn-QT7ns9^{qbtGHvwu?HSOCdT{cEr%;!DWD zXC;4Ao)~UKy7gzJDa_Ua5w~nKlw+Yg@9SN z{^sOXl-CaP6|enqTXA%35TFz zV2RxOHPPtu7VLjyg9;y!sIdR@34?kH<`X6cYgv_X)(N`K{a>3@5TNjH4?pmL@D2G* z)4&DpLxiqx0G^gJy+7aobppgB$AEDPu&%viaGOje|M&86u*vXU()vM@-2BgC>ifSI zQ#wfIZRI%GU!Nukm8R4HPw}(UWAM||f1aL$Y1&tuD+qn-Lz{?oNPzP@1wM0c>U}faiL&NN$b7xw^_M}*RG5w5vF?}d!5q?8} zgi+LiXmboudX54WLAyu%P#=(|LrItjP&HxhdG~JEtLam!UjO_WD)NBGuI1{(`Q)SC zHhdo0R#z zJL8;E<@`Z3d$eZWDQ%`-?^g7hqY*a8MPnE{vdAXx1bVe8uvBFopun5d+62`%O~Z)) zj8^Hw$UAK~PnrxHOzck_z%v=$)%v9WPH7PPCSzm4SGg0gYA$M%Nap0UI)g&qCebh7^NOfC z-y$i$XeskF*}YfKX9_R{EOqsjJ@9zIZ&Cq~Yj2vW@% zHa@t=N-Nl0SB>_+&9t0)~uw@DZ`zo5cTW=UN7V^~>db(IhPq2`IzP_iepy50PtgoY8 z%LJ&glW0oR^4|0W7h(ICz^xk=yZY%95;<}4r1OdSp4Hl-UHg4~2}6Fb^j{2K>5T9A z6Sg}s8ma&Mo@}czQ2n%DKhaIuz)@&}U8(XedAsTxL2c=zw9JTRd`!Xw$Hv9X!l^N% zsX8xujOTPEBFU;oZM!+@L_LMC^Zg>rQq@OBxFK|mP&KKp-oSrnnp>Oe$fe}?@7t3X z{Wfw*buB_Q}jzSS&d2&%ZK zmJ9dO))c;Wi4as#i%eYp;Y#NS8%R)?z3${W9Gv+QLlOF<6r@e$$wwVfyo|t0C|sd( z*XS}Tdegk9h2@Q;Vc$(rYPt=Xw=v7l^b5FsX;Vt}hFeZGx!EgYxlW-wc$9;xs;|6$ zMK2wC0~t}@uVB)mg`=^{oaxh`m5zlTEFKsnd5hK<*C`3}wTX^eSuo}mLA*`&GA5o; zuG{_ksz#5a4%<Nhw$_Ip6)0W^TDWo+j2x%&$WcMZ>S5S&s(hQqD7nJi8JS5WXe z=3Tbg8&JGl$E>qgL%(!L9)NHOVD&qHT@QBu87<3Tp|Qj4uEEw8q6ykMd|+E7<3CIP z;`Ivl_xC<%E6@h_b7V}vuOl@L{QQj-zp25ncYbaZ<`3AY=@cU@U?qGSj5#`a-hA~j z^GoWe)KmQ?CLpT%V8D#w5pxec1eu;7`(_$s-%S4;9*+Shn4YoGM-!)2kFXG@!qsap zz_N(U(-62NG=SM}zMO5JvOUKX2>qvxb?4;3#KZ|s>`JCm~sBz&Tfi#gFx&m-e^rdZw2p<`t@)DwjWRO2#}Kb>}#w9$dE#4 z4Yc;bBdj$EE2yBc@ien?fsHUy^Sh9fY2)SH$%b6);fK!|1O<)b>+K|AH#)u33+W*g zg|@h;N28NDP+ZhYEh>kwV6X%9G3uTKddXQ$OtJ_wAaqCFl|(l9}P?n zMxVRuZl{1q^--sI;D{fc&5{%xH7-b=Y7jf>_yhM2YguCLR&f?8| zpW|+WD|L!_YkNC8xWu_-N2l@do8i?@jgy5>U!0ngBE-o0m?&45CuJ`U9J|Z4ZseU^ z>>WlNElx%Ih$jeE^tVq}qXPCU0_5)y=@lZSGxjVpR9s52HsY_58XKb&T#pDzx-{2s zxko0n;(ucpq3F~Lpv>-gmO{$2>6E@G-}XMz)$7~6_&#P0(F|95S#1k${959$gu3Mb zddcNlcvygDaXF_6#r8?Ehs+JP&l;s`n$4f72Dwbgt^-HEWooZz?20T07Ag9ixSE)F zrCb#Ledu{nxvs(KcYR5Vh03%PMqV67oU8xR*eJaaL3V-LRA|3B^T4Iq7J=~UpcfNl zF{%T%t*G(|hzFF+&t3)(8cP7lsLoPFT%lRgGi?D`%R+VfFd=%$$>eR68DZZ3w@M?P zBL@(BCMAzNuPY1X{iN%mPRWbo1~Huz#3cct-UoF%-*TX0A9?x{D?B_Sd&XfI{8o4W7u$0u#4 zBq>jd;ltODsTkDR7C2$TVRdH+fj!aCEY!h~kSKwEOLPWr}}0)6P2mVm1VQ zb#>qMLV$6Nvl3Ly+nBHZ-~#B>wJ||$tG}!PVH;CZR$*BHc zvW*tW!E^q$%^Uakys~r!CifY5MqwF=(wYACCN+nO!`E*}X9b+CuZLtLPKv_znlp;V ze~Mlh#E{jA2(oCTrk@J~XZM|`zqY20uFQ#>tq3pi?aDb{FlYx;{xxXNn6-#-5Id?C z*fkFzEx$w1z2-?8Er=4dcJEkPxyHtM+SJ&Ck9pX*C~t#u|J4$L>Sh!aD4R-UP%DFw z723YWpU;_+u;8rED3Cp4wA`wRK5c#0J$5>R8E^5bWczUndmw6fNbJ35KZYwZbykKx ztic*&kL|N+KW0tfTAi<+RO^YQ`12SG-)}h|zMK=7Q*Y(j40{f{Z;_6RS|_l+i(gwn z%16_W`gUTd<@c6uHOuv~6;hNn{pO(OrERVRYr0mHjUw}Hp54T9OI1zsjV`gajE#6_RAnK-_2q$@ z=i0A3v6%tqJ$DpiSlmMhDQN3Je`Z!&_vP|?GR8#T4|!^t9$ab}G~!-+S!sWPNbo7^ zq5le;g4ymbJB`wtPynV z$?HHA!|ZaB$l=Pa|^-aZ!{B({ojN4A<_wy$WGRNHS5Q$C9c@jTfYA z%A=4Tgcp+|BP1q!+@Vye1)#_oY@^2mFRxP#uPr4ZyU}noR7a^vJOi&G(s~r@w%=fe zwA1cf6GjQ+25w=&!?mGo#Rm0kg*w3VpPcpCEMfEhcy@|L;S~KnMNypeaAkI%nfRgK z9ijo}yMdZZl?c-1?K^3e6k+7nFXFV+5y2MZd5qg#h26291pHUis~)>^{NvqKzqu^1 z2PlJJt2phYE!RGt?POxLpi?~-1rd7u%_z4aT6c2{;Z?#=wCIJ465%eYe*#R0d3ioD z;2xE(d_Dk*mc`XhgqK&kT?_$IoBC`TX9pdID`CuLx; zaF!3y@{lOOzPELqk2M+x%g3*8947m$p~HgF=pW@DpYX{ZAFbCjLW_9Fs9BxsPj(Yp zv-PrwG3j5_g({Vao&AQMcvgbJnkHgBZJg^<^#Ko~z;1YYNS8Zg$#Zp-_ZK^-|DRSm z=$sYCmBuRky#qBXhqTKVSQV@ld{3a!$M0|(UF#E?t80O*K^V-K!{IaqK)l#sFq(E3 zMqumj`5OR!OYs#57R&lRw?qo!Tc_5%?B1K~{y>?HisLh|hr9=5WTVyH!t>ThxoENc z1onIoC*-}oSLbX80)sYEAG++aV7aAM5b38-VI1U*2aNj7$Y}%F?jG_NK zO*?_nwa*)Mm-0l{hCJWvE_rIYhhGtNpgRUyML}r-E1U@+;{;YS%#?`?JjdZQWdE!3@h;`hRfDzJeed>z> zgTpdzm3QF0P=~p0U`M4Ivu*w!6(%%A7`#aCIr7YKL(M-J1 z!4<)#>G|%rs}fX~!TU6xOx&lW0_qa+_OR_B^8>3k z*1&s5J0lY`Y05Y|#HSg5mA99n2HeglqAoDxT%heHU$yVTuQbQC@yazYYAf3P=Rrc= zwoWI`>$>LLHi$*4{1K}l$Hbl9NOC~dynAiD?00^-z_a>4E>}FL{^SC5?F*l$J^@c) z^`Qur6?i0a>6rV%R2Ws=n-k37hK=tQfL{z12W@)YkQ8Cp{yth71S+Y+n?-_wo0Drh z;wK<}F`x>&?Wm#`Bj_1^{q+8gl_$Fs0I1IM8ME}xoj$B&-&7ncXJdtsi8mceDx_&> zYaPZUzoS~HgBDn|FYH=0y}p3Gre~u5sZUBN$?n$<{)IW$cP;9nGRx+RbV&IYqTZn2 zts65<8NM>sy+KD-aWFje7z_x&u55vYIF+BoZDa=3$bPvBr^N?t>cszCY{7X&>N1a6 zBWpxY3}isi<)tbcJUUOYAOCkh3EIi z`7N58_CjILMqbeCY06YN);r%01EH`l#HPs?!*DH7=f8g*?17ljae$!vX3BQ9$#v`S zp7V7|cDcuD%}>DW+UAqd`eU2L!U%t~)w6nRe7ZTl*Z&RPhD!2~*M&osc&HOjP8|jZ zr$?FZvC@b0QuQM~0Y|0dKIiciDQ76i1(uJ~WOqjTF~QfrM!^G^;7%?gr~UM63w(9h zLxz)DO6QkH%3W}$t&Dzc5bHLLN)=2DVZ*`0@p%+=FSef2t=v(=@&r0Uwm@LM!P_w+ z;g-> z4nRf_4qo*Ikv$ADK_`Y=eDC@VD>GE&GOI?nG72^h^i7~!*qYz1@~B|QB|#Kgr)&XS95YS>2>a9NXJvogkouu9UqU5PMQC?}bwj3_x zZf-7yqk@CUMrJjSL#8mDgEE0=!3+gXC|q%|VV}ud?Ib1Yt>gLjidzY`E8ZHgi2`t3 z6AC0V!jQXXAi2?5$lqe6P@aK(&mq*Oa*lUE}b+ehXk z+N%}8=)*No0$@v4lpMvHjXttkB%zu8mJnFeGq4GW=Z;S09XFgpVH z+9XQ0#G%c=hr&0%K2dErjR<6|$ft&IFT{wV@D)trPs1Q3?)AG-7KJ_AO6bAh^l>&L z=v2U2EjFc(+@E{*Xm4FOSP!O3MEwekTG1j_VowLxENvjtkNNyYrh*$ulhZZcwV}!k z?>5l1;pQkiCm&GgjR8XT>t&?|cO-9SENqL%lOh=8yt=4k8k-x)B> zxFuuVMHh^_K-vbYAZHfDKC%6v8!}ei7{Q#zY-_ z8gbK(^(P+ueO)iY3f#MDYe6N=4RNjI3+^rcpiYvp95*89_s&3Dr^<08%VEl<%gatYX1>ln)Tk{Cw58n;aSO*B#(&_-%zY* z@-WSmf)T8-^wWYc0u(!}{N%iFVfx>N%Utj#^a2jSM8KX`{EDLGL${_SkYHZAJSmo^ zWuGsXWt!6K+VAADp;pe83#p`j>~JzuSY{jP)OV*81P^3bd77tckfp_9A@`Y^LS)#O zW3}d>JIs_|h2u(#*pl!`^50vZ5+?kLiY@9x1+8ITPUDcBQff0ZAvh)|CtpHh-d{P@ z*SmWEsZ38mWm>kJw2&rbweeCkE!)cR2s6}bkO zejqBGt~>50=+C%seRwQ+4~4Ds&#Uv-n0}fAGSP?3J`5->YLY>bHI%*k3|!2Z`c)!)=+${MW_-fC97g|8EB1U14NuH2#4!R3RNni139>Yp_as^>QjG_B2e0qm zfl6szh$te{Up98Q_-90Qid;o8V~ozhbPN;@0>S7)99tF<^+mOg9=_;A1<~V}^|~Xi zX@#yJknq)14nfHuC#gt0 zKJ*0=WOw={HW)!rM=j|b4N7Bwv7B|A>gx%<+=w}-g;)yJ0>#GY&f;@xpAr=^JcczF zi?_9sUU`2nLhvg?K}zZ;2hf%U@g$!#u*q&J7rjL zv7!6(;vRO4o+j0dfAMWP2jY*pnh~06iWtA;{O>aM4-1kA#rL3u;c3tXm|Hc_Usv$i zwWqUxW^X&~U8dQ9*voE2j6w*CerFj$XoLH$f^y;lTt`AfAiKDXW*^9d{wX&vlU^&) z!L`Ltr}x2GZCnnUqU+$vV#{%#laC8{82%pr$0~A;3vwnu8ER^4Cb}oW#mH-njQq9f>t0Uo#;o? zrnpZHWdzeyN;xIAd2+fvu#%u26(N<#eBXnTEq4+`6K@H_lNX?$9x~_zakS9LS|SC6 zf~Ow_yo3K~T24UI0zRw-A3AY~Xz}kXFcE5f@%toeJ9?nyo$S`vR-_4gJ3)HiAyy?? zya?WkNqVLEkp#bE%BRC*LOUF;saol_A}6S>B_ZeagoV;ybT^8GG?}0f=Veohy0Z2iqhA&Q6JFBTEy#$g-wziwYxj_K2{Y9 zZ>s;su+3i)HoJL;)3US-OhWv7HvZDkY;KN+KRCTu1Sz|>cli{JuSjk{{An|KrCCI;g@gY4|BnQ&&){?}8KkVjEoBuPMcuyac=`MZvhCTJ;&p6cwFmlR1W>dgDVskj7AMAq5=;zb^uMSkB z5W-UYT%yST#Cs25I@0A66XcIGp}97l@w^6A=rIYV{V&XQ zCh&PA-LY?v{sKj3|A_<~lJ{Gpe1;}LgHvU=aL_Uh-Bjwh| ze4L!sq=?;bjc&30=|5yg)*${XPbbr9wlnX{NiTolA>bnfMstTdy*0|V@;vGsi&u-k zm(^CksP%Cl(f$5>HQce`i$EYTTHACwlbfA}I4Cb(f|lEnzo! zc}RpT(={M5A!5ZQQ3brnD&Gtz0F<2Dr}sn^;P&bc5=kIsUUMICEdn?C+oK8Te?H^^ zA3FWUph*bEYVrp73Srb<75KvnkK_+cAtFZI`U6A?c8^3QFN;VRG$r@v*_0#(4d^fS zramLevvWYG70)gt*jiY<(Yt^_7g;Roy-dy~$}C6miWGE&SX5gYTACA02K5H|u9)V; zSkS&irHz$AuADTOfbAaDcb{qVl4D zKP5(0|J(m7Y(gg@#6*BiOe>%p2tlO^pmwkDm$Oeu4`L8_RKb_*)tGNwrWX7$d+pvQ z$IfKDG1^ov=R z`Y7rK65_zTXF>(f((VM~u2A%P5tzDvdLhu~K>KYIEKMx;9%@GHbkYTvOYpF>yhl0* z6MeHVr#A)r(N0f}c=ddLgwat$tCr>X-CBg^jcJ410jez2Sp3s2{nMVegFTRkl+o?G zUwPYdLhe!H46wMJo@w*{-PFRI07Rtpf)}J0vpb?t4;FB7e}Eue!iG`j-)TjT7mC)+ z0s88%IBGqfv}Sd&9(QrD=y^J?gc6ffCwbN_)-Fm)^yfc8Q{SYfeD#P!mDu4!s)5)2 z#Y*WC#o))-_poRl)~weGO023dygc10f(vn_<-+_^^{=^>mF0$JFPdi{jn7k;aWi3Y zx1PUKa{0VK7g$k{@tP29k6yc*M3H#6QufOgG8i?rTPE)YP}NtJuh&h?@A{qA9l4wd zec!Lk9lu*z=;1jj^B5dCU@J7snj^=w4hyU3ZJvz1AvS-J#ne$)&=d!ZMw|PiPt^e7 zrZ1lkVmP}h*c(b%kQfu_F8rX|ZTm&q%=3DN7QP~Qvo5Bg!c*i`zsJyXYNIaK)LhY$PhJ0$KNCoWw@_4GYi77g>oNJ46%pV9TK;9?>wS&nB)obXPx!W=1mXUcWH>%-Op2Uo{QlIJA)=KQ_P12CXkh+rAYJ={(l z!ZTdSdIqwbnuj#g+)Z;8XXxI=Z}U!6kOki-JI4T0W6w8u5gD|3gTdg$f=?^Sy`D{e z)nDEpUwAhGuL4?yljD9@5T^ep01BQ*$9pDaYy$Ni$NWHhQ8x)8bhLpCE?Qr=pYdEA zul*SBb(%M9)~9qEw6rG24>-M_G)P6#vtC#JLU2}s{IoLGOQum(;uq-(u!5iF^{GfJ z4jSArPi_Q3 zFd`y#JrTl>`y$*IXmN^6D}noYJQ=-i=RM`ShlO?^Kz6%7mqi~-d2UCgOl+b;C#Kdo z=1wJTLaOa*g3trnVfogW&|j8s6hMa3(ZEfR;$b($>jeP2>V2UYw7TSivFlAZuUsn( z&4#mYAPXxC#tx8%Ca9WYzWHN6!v@4I-AFrm`DKP;2tFH!KpF;#(#jCS$sXBFOWJv( z$he6m^+YM7^BG!7c=2sQeCjN+(Hib6YD7f?UBv!8!{x*IR7V2FItoG_T zd7`gJ%fU9Owkgo(H|JOnhg%i8c6x(oxV%4{W-0}pA-+OOtn}*EYKoG}6B$a`Pg@AZ zf4c_h6F9v4p&F{15+jvauVzE9@7qpMzoQ3$=FM9Gr>b%Mze{Ov5iR^auJycces))o!{Va+1(yF^6;x5<}Gq`?O8RIvp{=v}K`lLA=cO4d!*=tLAhT5HjL&5(`B zyU>(Ei;h?+->!Uy6L??yYh@TAhf7}}KV5H9lLjI+Tww)|DgUi(li%X_kD#Jz`_2S6JP8>F$YNUaB|kV^I4v%)nhHav|J2`*6u-4| z$+GYt!fOf;Ugw;0jA$|~=4fZaOwm1!Mf}BElW)&raNqxG$JF{LJXdPiKipZi)^r-& zxwa4oL4J8yUHnd{c)e)x96#Fwn?_ZMO~iuem{EXPckv8^HsfxQids*d~ zW&*Qa#oeuc=KP2QBOTt{d|aeNJa*1SxdDqA_O4>}f6W5GZbL(^jU^%Ns6>7#xQ9=u zf4D^~a@r|16$a@8{u-`Nu>5Ge7|K{PVr2^eJNIK{J;XeOhoS_3?x1XVh~J5Sgt)H- zp*BgJHLWsWt^YsCgmC1zO$1-(|LS&?qM!tF|wTTj-RYB0dq6&p_#kb3JTAgZ+jPlG7DWlL^sWIULV4jTBiS z<79Rrs1;Z)zh)OAv8ig#6sD6zpmV@9p;>8uwTuK#E93a@>dlj%6)(A?sf-Jrl=ih* z@wGx4m>xP1ss=_HuC!3>6|BCW@K4(9v>V^eUp{6g7*^gZE%5LhW+vn$a{`L-c7NQ| z8zA$o4H>sX%6*Y^JrWa1&W+`i1#iGZ)QA=(<~uEXujjBw9M7N8#Z2I%!hAfLPHb_~ z9iTX(kd1veMh?XhGofGumh=7TD)vGlJEc%Ux8hmNus;@354!ZXlDtY)gRdi0MQ-tS z2mQMEWu&m&#VlpmhBy%Q9okb&!*5uCOoY%AFKCn_Zcp4=aj`g(lRS6i$dvrI7p*KA=Hd=J{W>kOhD%Wrc%M=5Yn9yD; zEk#niE4Fu72u6rlEbJX2#S1+DS~dyjKL0xKh5tq^7(`CpGO>q6L5|0P;afD+-#qJ| zVmLs43evZo*w&%ihKp!fN#f-mP9SLY!Xknlog@L9Eh9&vaf;)&@ZvR-~#D z#V*LSX+`d=@yw=Y(9_IQz|6ll-+zZmDgZC?9XV&<_`Bk^H$_i5NG-PpuE>^4oVSu^ zzrU?tQctIyx>R>o!%nf?7L~B~^oJkD&JNUTMXq0m2LX``=q>bi{A$_8fHHr_%H)2b zQQ`Z-CjDg(7uEkkpR99T^!nd6hCYY#udZzTe zwQWLAHEr8p@C?gV?Rq>j$=cFHnfDeg-s)qLrO=_I%={ut6jxAYaTIeq0=W)tqbn&d zEjOF@FLp8#qAbeG7`#wEh;#_jj2kk%%_Fn zHRCI6BBx+0Uc3Mq0n)2oYtl2L zbz7vWIa4R#rO?)hPzBuQLkkIZ06VL^k~o+FxTJRU|E7l6aG=`^^%hYO5rZoZn4Keg z|0~YhJdym|EQ%4GeA9L9N^3$%VII;0{RvrYR0*X4HkDG5Tl8O@UovhY|-qhCjMTDd z5`zw-v9hW~)va}zD^ebCq7ZPpET}V!dP_UoYZaqEGY(O2L{@ZH?yYF8Xxl5suG|Uy zW7Xd`1$JiNYu%VbtQby9(lYybI9lbF#>(7Dl^hC%)Jfo2kC>qty(M;p7Vgd!jJOuR z2=!${k%F!J(Q-_L;pMb=P=fq_zwfJ8&NH^?KkBjL2gS9SK_2IKyo-4>PndL=HHK z(dPUpR@GNeF#=#cu}JbT|nn2+j_-1JGXHPg6=>ZV}VpkZh8Pmqwi* z>&PUPtYeo^no@4c+lnI#R&nCy*t$KD^Z!%IGry`1na)nV(G+Vny%B6LjJ~dI9Z8SOb)CMzm$B_U zRGiHcJv)}!Eoa;Ouupwi3_n)n?(Mt`cFDasH6i-hVz1C@Xz!Ba&ug2dmEx`%^+I|k zB}KU}jM?ukW_j6s`)xsgFgH`FNJO^EO-$~ub$jj!u_b=R7(Txb8s*ue7Xn_koW!-z zPhS7-IT$dLQ4OZb;z%Y_IzGn~*HgQ#RVY$v&HJMyGij=CSvTCyu}#_~xI|?$^CVHk zX^9tL7F%Zh`!J99r2~y;UEe+XRk}fKUbzw;?q~UD811#6*ATw2mk^(poZGifDsrB`Zu7* zzrJHOUk^Mkfa&L{ypVCFPA{9De(?NeI+OTUzONwQQTR zo}Dr)%#qlVK(Z|vfM2lQrbnr9qW+DAqK-_2Cw%zb`>#Y-WI2UX4a8%h1v|I}TYa@k zrhCir;R*+1RV43J*OLPHmagYhYKt5roEx4NMnh^pFMD-X{?! zYAj}~RI%5(5zRFmPQH76WQ2TVXrNvORhl^fAnu1M zkY8%?$P{DtqYvwL=lsca_=6_(#5F0v;bD#{jjR50R3eRCh$bc$>{u#?158Y3(F?J*^_VXuhJkcny_T z3)FX&U+b&?%oTT1;ia5hI#O(b`zTI0W36F7q}2|y-iO&lmE$Y?CGG8)Tll|<8T^ymgO!k-%nCi>g;^~N>`j#g<59+6|s`pGjT^kj{Ys;jjA}# z`5ln%04DRuqM7Hb_Mj?kyPZD`O;acu^0#Co#3w4 z%PsgHT30C&107a$LQ?H=QlUlCS6Ds-LJsde)8}q7YZ2o8nv7!jqt|`{7B+s+T}{+h zk_j|*u(3x`Es?%OWxaQ&`NelXInXQLgH%83Ec%nidQI72{sz+bWNCgPxH`0oWREg} z8b7Ax{muFEgE-MO3-p+%Vsf|S-1q12@HFIsH6N{(5Y{QYKJw?0Zt>(RUMuN+_Qf6<+I2CYl83|A9QUTmfAs!C2X%bX6JWT-=DCFnr*(|1wnXDP~aVgqq<0)L-Of6u6&a0vdS? zCMCIT&2_%Fw+MOR~YjwkvgxE3Tam5mW|ahuW(L-kAw9~f;&$!gqqa; z$@50Sn$TK#O%f0hj%4@GPSyiF&-Pmse-v+Q_i4)# z^Sxm{Su({v{8iZ_6-hFf4#U`8Q0VeoNDKYb@sW}|WZAsVw-TFvm&^*wgJ5_pK;05* zChM)AMLf+$)|RQ6@I$l_jbOa)8JaruuNo_M4ZL2@CvF`Bu;{hH<6>A|_-8`e@16!~ zAh_1}z$?2%txCZN(BwbZTic{6(ynj)^<+rk>Pc!;6G{<$o}n)n|Iy1T=mxB3z{dBV z_f34h7k-tq1h1~`;>9SkmbNcf-?g8*kkL=M1O=kTXt2*Cb zcdFoT-HDdixRUVB*7WAVfJRq|Z3AL#Lr+=&^0SJ z9;+^T9c|>D87adAeFW;n^U&&za88Ovp9}jg-)`RM)OL2q`^|Wqb8ww|n|Nf)Ym&TB zTR7iL- ztJ9NE<|YQ7TO@Ep9FLCMQSK8etNUvQq zUS#OfO5jtH-|!Qw-uK1wHeIazFR1%7u`-Ru&k#1P?U~0c?>;^VeE;gGneO(YOhL>| zVjO~6H<;*pTWIvB)Y%1if`n4+O(X6|^0_yDFIFc!r#`rN0~y+78zO3wf~dc1*fv8>`Oo$=^$b*+2-4UW+yv{mTZHG>T4u!MOy{crCgs5bfRn^`T{HOj_RU zridKqvyQ_V^4p!mhQrRps)~PGd34$GdPMIenG3>O$_I8j_${beRV!3ijKzKw8$cHp zF0my3-5`F}55l@;L@>`Kd2_mmhB%{|M~q-E>2Fgw}#4@q6MSRB3C0jS2OzC;Pp#l=4yU{3DHEDa}~UFG6cw#2hWe!>L#qEO(+?G{*0os z9b_7M=Vto{pGZmhjQO?r$hawu^;8A>Aa|3F%F?TCs>sg{X^p_&rZiea ziDb&(W>y!Wr7U&i`ICmXhaH5U=2aP zFXAsSUnj%!H&DapN1+4+>*FI(o6R$2pRP+f$vq_1R_lZ6(*rz^jsf6-pIyeP=hAiE zLqW$)O{VXlqB*uH`{vr!1-LAP3uv zea&^y!Atw$3x|`lE45vIPtOKdo~@{g{Qx?>6-oQj05HFL4XhpeIP5*LRkgJPw4>Hc zf@+^~1*0_EFPZ19CS_5qMU^Z;TGTdeFmy!5jQfRopdxuv5NQ`+!68b z7sKD}&e|C&z4Z%)L-69?d~0cK`PDp~p)93x=F58ZdsU~>S z{tT0z(GMjsn?`rSv&NBMRq*=)9m#IFkIwxPHSL0N(myqsrLODm@g7P0{K3fj{9xR* zIQgdE$)aroCHM=9doruv(6ob1mZ-4Wm0M`?+B)!^Jmx#L*-;MmnPorm5_|gj=)J{g zL&eSD56?{Bko_*Up2>IXGb$Q%HWp3dZ?VqnN4bQX^(+`~ubyf3R1EZ;inq%+DzjzT z`U*~yPsgZ@JRV}5@z;~AG%uXGY#vHddw7Y!@ANBIZxEyH7UgaC)3PD$hoN$nbZ2Dl z&^t?$R?6x60k^$FJ129s+I3z>?c5K#XU8z9kGf0QV)!T{yw}@qrQFEdWu^1UK3YUM z(BJwi+^Nju7^I?Q%OJ(0HZPU02o+B0j0XM-k@9aQRHDT?%;{PuZc>>rw#^VJzJOucBLRzO5aGtk-7V@h!*=Q$hd9 z4M9HvQgL8mcMQ7Sh~*-Enz&$+YLN_*@zW>M!Z!xK3L2_CY1khK+zbNJx!<~aaI3Sr z_X;M7=NaPm_Vc7|)AOc2vO&A;7I#yd8z`8fEmJLthn6+I-r7-(WToR_eQClo%3qzy zGy$K0Z`zk(UL?;vdCof7f-oeo!`Ofu%B%9V7Ni}RsH0s)fA&x??O;{OFm@rb)bu3` zt*7{n7N}Am2qp!v4mx}bG-wODaJoC@r2a{IjiDj!F4K!ad!F`W)FQ|ANau-~7KvZN zK``azTteuPaum7sX=`29pQ&dlf`QYBUWs35Y=|up{-fgTquN7^iAcvwwD5aJHrAY@ zcPEf$3Si9hja^Aima1XsdxEU#e2ESsJl4%-evJ^BY}y>woIZP?ctu3v)VX;q27JW- zhI`L*bSm@C((eIf{|41pqFlZg+)ay4PvS5sMHiO;p0xrQD$$jb+RU0KtUrAvir5X? zD-BfDZABs@DWY7D$&79nFGvo!{&C7JN@gK-J@)Azv%Grnb_12kQnt~WldPwJJEY7w zcG_XA2kJ#XVV4v$G2Db?{;NUw+3{T({1GG0>+Shj92S3bh$J=h+cDS!WmSg@a`@Kp zbI2wcyO&aIHTQKmONrT049+?v(80b2uy(3SLgiw1$Yq3;rIfnf@XvLqL!kA_fo`Bt zlyw3_*U;X!X?fDUmbS5{M}0#h{x9vowrG8*=qvATROgI4T`{pdxtm4aoA$S-k@K`aC%BKb^`pLvI@xC>@zU67$d{>med z98e+^>yc;*S|JUTU!FmCnjVE*p#L)pJwjmal;xWYRvX4DEL`{J<3=I zeMbTou6^)AlLim1utK-g8?lcyKEA-$Ps7VZIAz!KxBqo*?*>Q0evaUcZ_{BLDDjjB zE%KiA&Eap3e>)dWuB9t5Rz?Z0P01jA7YS<%Htd+AvWdBayv>G~hJ7ilE*XZSR07YV z7%4a=A5`yDv-x^huj=?RZ@&aC&SeVwn;n=Z$l^@aUKgt`QXBvXCEQ?uoKv-E){S4V zQ^SVR4yZ9f?*7OBF#DH>)`X#2bYPtaZzVS;J`jg_|6wEk=X&uozRaqgU}?--J<>X$ z<4rlG^?4C;tK#F3DB!xiMw>tC7O8H2{bC0?noxBKTlJ@yWk9TCwZrRiHWB6vvByK{ z=LpZ5aKM3j6{ z3=?-=zDl<2^mig(C8@yVcR>JGMTFWxB3-GO=x}IOnTw#LIX#$9QNIT{%*vBxS|{fE zr5Hq(W=w}E{L4geeO>*^?3(6%D1Hp^Ja)-n%MQ$iz~tN6{-F45=3m1fF~WhH`Y#VT zo+-SnjuvG%Z~3gXwB$1ej+Z?^bMcKdEIILd%RGanb?z; z&bL}YV)Ll|%$@p$NL}vUE60yygzx2Qz;$XWhL?x$Ir}=-D?ChTcdEJTKhd)b>_{3h zydhVFOyTYt%Qa=UlxW3ox8<2@iiiZ^^yipY1+1XW*##t5Te_~c#v`AuWVu94&lc7l zs@e11aN;_Sh`3iI8CiU8*CL86UM^a{L(2TITGB^25m@p<`>a1EQ(`_vZBgwLXMTHlEyz?kZ#Fb>1+|gc zPk8;89>iacBjB#{pi7N=5w4~YD*v*vH@VVa8AaTDZS$ZGPJfYm;*Pey5QD} ztp%C-`=BvfehQ>)Mdh)lmh2`J@Szo=U<&8<>BO{cc4~M@JA*Mnr$=Jw+c()DB8Vr@ zy}Y%XtBXxcH+Orb^PBDKX`i;@0|>0;cXW>u=^>w8qRZxX=hUslyW}Ga*n)Yv0)c<& zZ|g%KnpKgessk#t+a!X^hoU*9+zp{_Tf!Gy75VfN9Rjf=3dr`Cv~Is#EF452 z_A~ch%&`3E{+cjsGOR(q?22N1FIZ`Kl7*)BOaKMn`PbP+JVkWc2D@)m$0l9@$?jwN0n8?fGM6yG(Ntr$SZsan zhJAPLZXe~l`{~m0n`w)35$+IW4Nbg$@{cQ#88_7h=uzvxN+hwn`5yY^XZBMyg(rPc zkIY`HX1lGKkd_9-o5AEsF-~LUnrg4#&r+tUgyqdcXM+Z4l){*}-hcY)!+p#jp!&%v z^=}i6;tKnVKXhnB2%Jxuqbv}uuzg4ZW_qi$q(z+^?Wr%iDM^@L_AQ=Hggzx8Z#$Pm z@)(Sl8Dl2N=7}1izqhk8PFlD5h6Deu9M0k^5h1ihtgUgJuEBw1gN!yQ{&d#${cd^Q zK&rhwU`jO)lq9!}B-m}wiK_uL5ERK^AC2+HohfNv1?GNs?J*$4S$yOZTX^j(ts(nE zP8loQ{4m61^IJE3YAekuJPS$yzM+RdfP;I!WB|`a8`qA~U*i^GN;8fX8hZ6a0@(Ii zn5S=Yy#lsb9s997st~`|5wDOf&qYc`9}`QSm*l;S<(JD@%0I}wDDf+cr|uqF24W%f z9AJ?Q3(iTjP9P7L%Z*4a1cb6dmRoFo5kuYHG5f(qnN^T)Z*cn@`A^i?IP(+Va+>Ggq*QFg2Q^#3xY|>v4X!@q)^GmYE7IsM zuVNEfcj3k(*|(=mp{I13gMZ*8)6O^Y^*eP9ufFCU*1ck%7w?ed06NM9Nr!hkx%>l~ z+p-Tg5VWtU*>2dCY)(y*n*xp-n}hjf>ej8naUyDjksAZ9&@shw#8 z?dw>tM`%ss!svKh2GV#3j2MBAc4Ibhi?pGV2+n6`Qc6=$yK8(`n%I`*iENm-@Re`eGA-WmB2Ib0R;o1AwBbqhui{WhAd4S1c)mo~sp&=0@}5bO@f zI^KSIODPo|(kFKk41|DXEo`LYTt`!9c4zIw`C*EJu^y-FH=D4R3n~GHb zcp2}(h_9h|X1uuiSjNKNS`qt{eq)fNDW_HP9sTy4d-%?<+6c~RMSv)tze6jwB35Te zcQJ4S7+2pSb1hIYF^)<#?kT`tN;lsH%A?u8cbmn4z0}|zdntJxI9bySUH=p!-vvnn zfly~Nyvm^YndyN#r6<}<2d;CD2N$1N4R>%3@CvRwx_}yRrM6Gc3yuR|? z-%ni`uhio{JP725?B5H&QrR5N*b$nZENYq96bdKTe4xN8?0aG3-few~7;&Y)HTW0g zMe!KN5Mc_OL?a`0kJxr-6X{F`REOGk{-i5n)4+V2ik7UL-agg*mNE>@YJQbD;%*9a zMEY#s!JW4~l$e%Zwpj`w7V6%|fwKVenKuO?3I}_6SnmrY5_K$k7g?m!l5R2rqGYpD zU;r#*(v83H-MlV-pNgTNa%{Fb+8;Sxo1Tr5AGMY#x z93nU(#4p5;Wcb>CLaJ4u)GnjPWl3g92BY6fXrk{%+AScRhKqgbT6G~+}XCj5_9 zElVXXi8yWzumXiJJDMFNGeaRoeelyz?mxB-I$xmrs8Bn;q|f)(dN7QMzH8BBF27$ctD#LQlR# z_!rmGrph+7U44DSo-EOZ90pG`y{TS&=#vI4jLVXiUT<68T@` z>%Lantyx*_^0Pi_t6TFm-Ceg27#SKtZM&Cuuh{u1{sGSqsQ(v$tolMT@i4$@0xt=; z0o)=um^mQfta#rk_ea2!2pXNwWB_-&OpgRMeu!G$uU9~nd2#6-_}}j>S5vJGRUf~h zsxu)b1OS;fslfW&waEP0JtH zH`4&2n?C04BN)7y#j&L$#|2KIrnv!ujQ^q59uF&cpqmj~dd*t*1o*E@zeDpN}0I}v?DNoa3wHMT`73;s3th^Fp$AwBdh0a`^;R0ydimyh5td}H z+`E29^p@Fx$uaJiyn$K!FEjYxWvtp^vbum?#LPck`O%zp=WsVh^wekhB|0{~ z_pPyr^e_j+#NrmtM1T^O-?p9k_DWkGd12c$satovM29@kA3K6B?%o8w2IczQ$C97y z(JLZi4aFJXdc_7}Enc$H(D%2SZ8XR5sLI4%$;@FKs4bbUMMT#=GyX?MREdaK`}OPv z_p-Z#ty&JO?cC7a!!B2Izfz@=7+8g6HlWI33S8W;o*n(;pmiU5qAPiO$hpJBym}n5 zYqoW+3lFXYH(9&w-^?y~jye9T&IP}bT|VqO*wa*+2qyLj7cSm}E0)jSHCK5ej;|Iv z(W}cEos@TOuPm#>OjM;SpnQ8T8+kmRX?#`YZmF8$$&4H9pSDNtl{<`GRVT8cxpR$( ziDvkFykO*eQX8tqqpD=~+v8Ru(}>Ro7bz9ju@j9_puGM4=iIq#dag-`Uj@p8M=ZC^ zLGhQPwRqD`_|>|6y=q;sJ($ls5i%U^Pho!d`OWEA6O-ACOl zjjB;aoZUX_gPdU*U`?gJPQ9;!^unQIi8F(*G?wUAVT5%OXQP0U`wfkj4PZZ*Q zqMxjNoDHQD>uXa}-Ijp|9PO^^YBE=c=a_Fxc&?e!y?gqfa5Gd^^dj2G>D=^6)E+b> z2eACL+C4M6cCL*yC~{t!Y+r;+ZX0WxieZc4S03O|GG`aChi>7N%;qa42Xs!#7$qa7X{} zaBS*y?(}r8UVUIG(`#deJE!*?#h0rIv{z$)28?pV>|J1Bi$_>q7AuhsOK5N~pzQgK ziOFE|e~av}7yNjz4^pjU?wFIu+!!@9i2wdFUKhxp={3SZSW)}$aRUR&-vs4YUs699 z0U@Uk414&mkOL+=iGfPL1n)%z6h5F9K7LbN`};=&|4VVc!k9{>r;Q)Y{TG2*;A-PL zvs$0M*i?J>KhtocFdnP-di+!mSq#4?wIJ(BJw5%qPaPfqnJ5K#nzCSZZfx)bZswbOuL7Gq3~zND{w6n? zB+JvsLCRlffudf9yh+NR=3{H{q$ii=f-jDCzFg&W;!k1AVR3=h_?H zz@d=wc?kh*)@*9Io0oxqQKC}^YZC}9TQn=0i&Sz9dDK+uy`WJHr*v{#W~%e&DxgH@%Fn}6S<*2)d_fQ7gS5+ zhu-O=`S_``y!3o^*m5~La=dbV?T|%;dWh#eOXl|mL#)abLF22)#CP+=@F5lm&c)E` zvz`%iT0A4=W{fI3U7GF3vcaD7S2)Mz^QyZagnL=aX>w)K|H#2ePl*emp#%J%C16}@(xmvfmKfS=DD6n29>@9}~<@F#Wg$7E!o$~l9!8U2Pg z{TcM2A*TN=fM$P`V|gQ%X9dyA+TiB&8dqyIWu=Dd~=(JEZH}o$svkk4u*> z^;h@a``TCh9}OZn$NxO&b(#dwMT7k>XiCPvUV!~ zp&&MB^u9(=QAg3rZ55haH3V}G(X{d4VFq-&EpnB6-+2W?o|^|e`V16yQ9&e3yb_h& zKnuU!e6`2Vn{u>?V$WnHfzc0AYMK2I2ImJ$O5c*}iq`!{I|e&kJP&NISpdT2J|DjTEI2Q?({2krA|_2eM_d6<6@ zl}7OMH+gU1Gi~RDKnHp-Y?+s?erf@189TFEq}wd}NxPamQT>%M{~2?=jMHAWbuwe< zFpoR`_1s~>^Q;c^i!!Y)G7JOEZM!c8M?d^{cJf?T~r%JX8eK!CyB-1 z^XfDh#A}9O_D-9b@amI4f0SzfxysAuZ-V8_?7yDd>;K+!8-q^Vstk17aw%+pR}Zse z$fk7GSw*MQd2T512tr4o9_rw;2{cZ7VdT8j;(Sg78N<7ie1&9z5sEND|I(K4;zrGU z#X+pl%wlVn4;hj2D?tNv;Osz(mG=Hfb1M2NZjw9(})Cs@*J=%ikj7!6$B7 z?#}LJE6qkKU(Hk_D~v=E{r~@=4&L=`+78{npn6;+JZ5dKG=!fA^dbBXJ-d>%ZY)@8 z)+W5HduYP>dV`eNcvVIMR4)6P@y3Lliw`UHz=!+Je*K~fmvzLF^+Aw{$} zlJgkyEAR_`pm;w@$ME9n(MMXEwvA7te3vLrQjfD+NTTMoD~x*ux)%L|T#em?k%IgcR#VL6!fseWwvV6rJLSBT3AsbcXM${;rHPW(8NnE=(|D} zF@Q5j=@;9_`U?b$GHLri6~9Ef70S(hy7yYzgG$ItI{;+`q{K*G)JH}QZ{k|Ma-`Rf zI^;gM^)M@RuQ4BEtZ_YFTd8>nN#(XliN0w7Y|qGW8+5K5u;&26haDh%=*!P7=DtV= zC%0o>aefrgre^23;Q_C;@bTW%sH(VLDv~{&WiYdz^+Gr7n!PsH?Te=3!eUCv=V$wtz>3E*{40| zHKx%>j+`~<(vO~}kCOiqk0H!=2iB9) zd0nZKVArr3^+HchK;qD*jOU$991wDO1n3zy>H(XuUQ-x4+&dijuNdl}yE72ixSv^T z$b@ERm3n$ztUmQch}NLPd$3J3=rgA6@U*>ePH?fV(dIX)p1a+G{AL1vnYiR%!RcH| zDNJ8P48{vJs3-NVLsuxYJkH&QaK@X#nR;e4Z(g@9kXRFYtoXbOvQ;gHW+FUd(BtYOZFJDL_En)e}^&^jt#3nihr3u`4OGQ$9!jDb0oJfQdyI;XnH$~ zF@bir`Q~&65A~Zx6^GxzX6knKBQk=8NV9@5>(As9fa8Jxa*Du+X@zs^R#_?ekw5So zdfY~sPW5B}(cXo%o0Dj5A1#yyyZpgsD0)s1Yr*5`a=uB!@-2I|?*BH^KDk^0CZxrr z51KoD+S5e-vunUTmuO)~XBr$N*~eR?Njy>nre+=4qp7aHnDn+LAPZ;d!iS)lQ`*9Y z)5+WYmoeQ#;3h_L04ywI7Fpt#MZ0N?z7<5F=*#~Vs3v%ybTZhD7xn<&<3;<2sxAI4 z0sG58$E{3?C-n}*Bs*YIftFD3#tW?lT5Z8S2(ED-3#FF-Ro>R&VmUI%I;x9vzR4c21RUn)%Pd&WDvGc_{zn9DnTN8@yy;tvGx zArc&QaVy&4CJ*(6rVj3(GQ~8P7I8)-Zqvlaa?YB$R$JdsR;N1r$G)M$WN)^+T;Xix zJs=yd>ZrO#rP8MsrXTiMd`<0^f|Z2-$WJ6!J5vDt`*X?DcFjF<_mT^w?^|0Ez@c)1 zYzAp}cN{`RZw)M79(mw&V3<=Q1-~xS|22?#a9-fc^)C9y_CZ+u4t1>eIMD^jsa7!c zCbd35jNKPSLF>e=)(r{AfHROueC5d~VOw*=waZxRk)*94r`nlwffhiKLhg|IDNK*V6+{r8FS+QGH$=S*89QCsR}v^5m+~no`}=fi^0hY% zH<+o%%L*vd_K|}5&eg~Vcz4SoEJjoxx(RSGOmPZEq)nz3=AS$(zK(Fuq9)5Yh9USVK`{_BjN`cD(Gwpf6=z7E!UP#QIKG zpMqjLt7&15oCjQy>ze-!)cF!ZZcq8ha~S5rv02tDV5s!HQ z(qh5~)sY8aLR3;?!UC=yVp?Mqpn8vO=A~plgy|`UPiLfz0GlouxXY~1s3+7^g&mIH z1>}S59Y)HgH7~Nhewy^1480$mZxlh(yN)uU*-K6^VBd4UFR1O51K|O%V68XrxuZG;tq1V({PAvoQO7-yV zdb^AYG<%FeEASwl8ttBc2*%mY?#qj-q^HHmay6kE!DSn5IcD2<;TIeK(>d-dC& zDPI=fw@T94o>figMpdg>dV+j6&^6L8>!OF79WXoQIAG_}_3hgw_1`r>l{>NS-Zp-bZ4r)xoY;(M1Vi}(s-?!LsB^#Wu$nOy=kjlGv*__O{$q+N3tEoS>|YVH!iSb;77Nls~oES zL&B2l#cA>rM^ewM&zH(t44V~*{gSj1hg2d<|6ghz*RBG&bH8p534?ETHh#<^=l}tz z;pzgrg*)6azoY)=I9Q>savMGxth1#rWo%~K0{al{fZi8zOZBiI zx}P16Fas+%0_k_(Gj!$(^~b$shlG|W@(L> z^HYsT0{?Yr)tw!VsqX5N-;g!yI&0yJC{mA_-4zYzQ~Va`f5&`n{JDGZRVaotFxySnnEXOY4@l{HkL52J)qa=qjwc1xUyS3q$+8a(MO`|7P;D2T{WUO$P>i)j< z{2BLiHwH%l63|mZy5?1?b4o-!Sq$+%zG2Kn*jQ>(gj-sF8S}Aw#ygfttggI_G~S?o z(Xw?B1I7383OL&FaRLmHk4%1Y?!ZB`uYUE#D7DeI#2ZbiivAlffXqZc&@TJde*&GfOOTkyN*@6384Up^AcxU!l-_E9PNppW_=Jz|-)&ocPhY1(QaA0`VP zSgF>59Z*|t`6Td(&tS}Giumsh>oOiv*AJLe;dtn=da(2neZ##@(35kW6GkBnSrmooK6tpJh1q)9mS9^C{k*f+vwa*E)N&!5G``ApqKgNc)^Wf}_`q)D>W`G}8rp+J!t` zUuYP}5FdN8p%3Tq{@V+n(gspMzlj<9{6>f&8DADyrBxE-0u%trzdjmU5#nIDiDHUp zyR`(elJ8&sGtsP5fqlVlO}5`SShLVgEpH{Ec%ipxY|GJHl+c zAl=nLaVyTe_Ra^)i$B_%QH{I6+^Eux)C+3{;2G`azqix)EtPllfem|w;vLj67ifz0 z0#^rs1CS=a64GPt9wHO;2vk;s5F0yIyh>UciVM*9%mPrFfi>ynFQj$0g|BiONy8Cv zA9bpkwGY8CHm&G)G?~QuZGzJ(z7dxllShkdM2Ajs0a}x67@yOtxAWYyw*E%n792+8 zlu~pCCz_}JuyB>2efD3`*yY&YMsCY(N&$4{8qpv!XC$zAJzN;HSBptjVF&6TaM>bu z2RtN2F-Iy;;(_n8XT}hnH*oLC|Dd|ve9pJ(;0Km^56uUrMzY& z_^15_E`ew7&jL$Kzs4m2Nx^!TwZkf9aQ(6Y?gZmzSgg?A5;kW2 z>py?!FkDPieGa*5*4D=dAZoUuOc#K4Sq~=a?jwDG7}$3&w)xKi9T~&BQqHNl$#~c5 zO6J7hv1h20!gl3D;Z#D*o-HTiT45bpr_T!+9OU9-h2zk%Em)< z*#bwxx5z%^4k*$0a#Ot`tAML$-p4o(l_faDK+p%nwodovDz*Q zYq*Dg@)kwqE$N|@C{0zz!D|a!p7&i}ml1JBI{fh%xnSB>FRBc~zN)xAQ}){yzHc)0 z=**466)#O?!UVB`1hJcS{dT}Z5e=o_19G^x6m7`t2<_}?1Lw({TT}2rwlOfK!Sl)L zel&-)6@j$yKZW5-fsmh5(6i1?FuATMYFwTnS(2L}mVca4CWI{lz8OVxn=%;pADL(v z7R|%vV7MY{PP*tn&&zJUmG?;o5t*8Jvd!i0Lj>+$g$@?PayT02yOSKwcy|>vfGY^*kV%GrW`H(T(Hds_}os56*I*E#SV}VenR?0W8&o z8C}YLKStBfUSd55koD|Rd*I86i$E$b+xx%B zMJ9x%7PFKl{({-I1AAz zSiyf_v??TU^n{*%7%EMTP@4F2F}<_D_pboV<-Q}UqeGU+Z*+586Df{3l(o}L9{RP3 z97{(VH7=*!W`UKiSmxzxP3xxNmoXu?f0qp$%bm6?(>dnYn4itnT2YcJKN@`gU2BHH zTaWI>Gey$b+g^sfnCi`v$H&SZ7Z`R?B6M42WW=r_2dJgeESjep7ec{ z(6Wf=M^q$>F271VyaT@+ z{!sHwQ4)~$(B`lZNKbfKfN^8rl1EB{pgL_H@^n%3cHXYsv>wh7v%bB)$opDiMh^T? zpi8m9GAApVPybpIG?c%ZORo0|)x3B%Rc~$K6ubPw(hY>!DHE)XT`-c7x9TiK!%xUy zL}d!&JYgZ|Sa`Kas%pLqs&gG36L%od(t4`56VjGgSRaMYPXvt)Z2%*QxDa1LTqI>A zT~UVvaiLXX&BSL=`S=+gvEyWi)6WBM=1|A0c^3q3-IH>Pz4~qD_@~c!{XTbTe*Vuo z`QR=ca9mn1PpYGe*eKO=r$8rY6?#}G?$@;DEp=NUYo@^Zq-C>gPKnbJ0&jl;j}4wG z)o46>vwLHww|fRTo-g+_yi57Z?f%Q=BQu^nXVig=@XoNK0(3owaz!S;O$yG_m|}%;#lbOjJJG zW5aSep4Wy3A-U|7ACh4VK76Z986Smg^YfT|?DhkO66H&Yo2vPtN|)^0}sx6d0;_qy!@TS-#=GTTWXXb@^T3MMq)5 zAzwqC3iCo&IANy3?85QvHjT{phK~nWs#v%n6IBZ+E276ygke!{DbPgs3qJeaL>C}_ zQ1Cm|p3S=}BvH5x*33C2^1PxCRvRc&+|t#u6Jost?q*Ii)mES1m<~LC&gx_DtwIQR z;1_qNz)RSvFOKDD`s<}ajS3{L|E-NY+SMjYaV)fsZd;@#dVyua1(W00e-L8~gTRxk z`|6D?<3htz9t?rA@Gh zl_8mib-B51XV>02KtMQZus(8wPYg(rF^>*xyzYYn@^k33&fy5DJEqha1Q5E^tqf@l zJ{wZy0HG+KH0dg{;J@%vf-LpC3z zbLh?GGL{w<%uq;QuiS&(!rPD^t$5pPG9JT_C@3`a%aG998I1ehM?G}bXM1ydpqI_7 zbKi+U5+rv6C~}Fj4QJ3e^?oJ~iGdNa;b(_a(je(%yKfHEUz>AiPg|NEjlN&3w zl)q@Jop7j@LzRuno2SrEVpE1HZNwZ7IZ9K!c_Nb2s3w#JW6;IFm7J)ROB2N=OO}xA zOUP|#KV`e|DXYLQKkG2;xXE$wVuc>(3F}faI?;aOW2Tx=*-Zn4U%R(LHJJ<9*4nRp z4_SZ{6gHg36z2WeuWD|3cDlW3?w~B{g|z4C&QzUpbg1M+_nGt}b4{i^C|!rY&Ymt9 zK>NDe?et%?MqDZW%!}*r3Tu1tHiv`t$I%=%RaZFGKBdROTd*N-+z?hT$!n-7X*x}C zUyC=LMH*eN4J2<F6-st_SjQA zCU*AbzuAZ>>S*TI6DW%qs?Ss&p^VaC!}F95z@|8O=&3x@O80jfY9GscE75X|0G_58 z{DDcK;&<~m(=)Qj@BN9-4T?*OVTvh+#0;=#BA4fO{CarZWr+!=F`u|I1=B^T7a(b> ze#+eg%zh=wTA>RwCfbj`7A9e)`U11$f1>U*S*Fbl+?nS9-1(>8>~C@`GUp=~1pz&E z=x?iz9fWi_t(<|D)7ERhq9|99FvPgOwB)=f?0_s~;cpQ0nHY*q5w3fvw9Wmt#>s=A z>DN`Krd_!spq+K7ul}wnjE)VTDD)a<(q?_P62@N~kfbXy!)O`vFu3?gADgD6C%H zb&i2owQMyCgcMBLwX9>0dw9x#Pa`*a;V8^5;2v{dJglki_!|Vpi zjr(T*89o}yzelkL9@x@rY+*5zwjbKg=bPN;{$$I{DJuxBieD-18O@b)piTIo2V zJM4i3i;pV6@c2{bE;Y~hu=TR@%m??2XVO*;w$Qik43pUar!N@qa|h<(sL99GKj0Y2&e4B?~|2Pc-5!F_xkFjIYZrES;wS znV#I=Dr7#=-T%PqRazyJw?3D+`vx~)6uci1)0NGdy5N98AfxMC`2Jz-ohfW^yJ8n9 z)37Txfd*=3bL36-ayuD zVlAX8Rlo-2_lhwv*8o(jb3nCf->z(uU?VIWQ-WCV_3W91(t50^`H(_q2U+ zC(B4`a`u>S+}*Lz9fH#H?=X19+wVCdsIcLBK<}u5p6FQGV>JF~Igc3^D0BsF7lFA4 zxPwO*zlBKVqQy<+pyTU%v-Cpu$>}UoIDct$CCb`ZX}=jHFkVERNa*PYI(~~svXhqA$fDo-$6fu)1!wp^8|^M)%eX=6S(dqb;`>VyZVTsGcT;bN zSr{Z9{U?hx%lfEug*NVV&EkA!8{UK~3 zzic{uA1@b24KT{CwTau#E5aKLp@xn3;VfIqw;h-Zf{ShEnk^5fr&Hav7*1e79E8P1 z?Q;m`r&douN{k%4D)GMQyP5F5nQ#R$K+DmrdH@TI#>LtI5F^3BPo^!IHH-t9sYAfW z#uhaR1yEMSfJ>$Y%v2^1y#f$?F)sY>;bcAJjYlMt>1%(9+{VC3qq5Rw$?o^Ph?ZZU zCLG6;=spLFho<`^>s5Ysml*Xl+OJS4Ob0Ks;~Sg8BZ85sIz5#VYM5|GlV3=C(6QXV z!0*6M2{@-_j}C59pTF7>DI>n1lN(v`8OtLz1k}-jU2rC_S#*7=F0<7&|z8T$xK zdO_@?OyJy-!xA;9f$`t)_#eYcTuvW2KW2rxr6uz7$-!L+VG2M|>!?KUSY#n**igpB zLDB(an9Sv|4*6*&O*wnhAV6ps86C0*_%E-EYvjIGqAjUR+&eJVjQ~uG&i)^4?Q-$# zV(e8t<0eJ>;+m$cx7m7R*8r|iD)$6a(#JP(TSAGvDOHhL& z53^P)R9_OmavZU^hxjY?gb(!`122tcu@;kH(c9(bWJ1hjFa_u-MlrZ*fdRKa_HTY* z&6lF;w+psuvN1aRV50v(=X;tq?N=muudr4TWl|>BGXR(ana>#@gIl;8m~h}4h62Qp zI}p9tNH^rR$MBCA|Hwmh8ll}9BmwC0Y8-3It)D_EbF-#FZkL!kUD%PW=zLULm=Vp~ zwrd0g3nB0dvWdMWa}w5y=w8tMTo@ZT?XxGRf?}eTz1bzC~mD#Oq+S_D%|y5@4Wj@5MsFrJ2nI zxaIOEF>5yA-1 zp=+QG`!H@v8xp&4%;9CaZDVz*$WL>nrQ>~Px@0u&G{jcLa)VoPRmD$J^jRKLW*dKk7mdM`J^`#w2)cI&ePGTKinidIU>(eJm$cBA4I zCl0))6|CdRkhIm_BqCAWJjd}+=)QnjqiVWdK;-VfeGRfN1luyLH;`N*OV!=fZG??5 zZ)?&bUh5Tb14NRI!NKtdWBdXf-+aVsdq66+S~+sy4sML9!6qI!pU36=_W^|Y-j_EQ zWUnbor|E!4Spt$Q?@+#7*>4H`wUeRrQbALcdRB$Ra2-aGcr(vqUAN7bH75O}+!o`n z3Cr>5Z@&H<$wll2-pGX7k(05sT$gvR^hB*{A_)=-?L2k z^lN?%V-bDPkU}=R4=|qZC-d|afo%$pp#!f1?Cc`h1^{j|_le52MB{=-j&bt`z1O8! z&`z#RfZb+lA*v&k)s%bQB~$Y5_U2w|?tN~1~urj+A=D`n{`hQP30*g=BD&o#c$;uo1@^zwObmgAal;KzGWgCzP% z?7JR0-Qp4-eeCx92m7dyp~rSn8IqJv85srCz0ZSu{IJd#g3dx&wNn}f_gzn~5T_cB z_=@jQi64Ia{%Kr z6mgsb%?Kv3`UP-xk2x6`su7qED*BO1F!^5V17+cI{n|5CR~5sC=Y2|f+&S&bnODEW zL5Q*d_R@R}Go)o&0;Y#B32S6eVwbM0JX1)k4MbqVWj=L5*>SapglBy0e0aq7^FIJb z{VzCkpz_Sl)_um=4n4!PV)>bMtA-5^)>Wgq1}T%@kDpT{7Y~0mSdirPx~^>>n&`E3 z(M3;rMNF>DLn^r*7WR`Tt#UEzm)YBw6aq1i9k5Hk7vOP+1|V5r8!mul5LvA|!&ucx zQjH|e5~R%m!k_N61T#D9wH?ZVx3_V$>6&F<{6uz59d30>L`bU`kC$g(M!x83bhxaR5d#mZ+AO7s zAUpgngaqvB(_v~5X*d?#)k&3ppn@;vOjFnU#xdCZWhU|9&FBLnT1gBh#YzD^Lpp|_ z6~V!kddzcxf*LDrgB8HNkC6{vk=eD1YA$jSYu%^EYkYCz#C4B*h$v0c9l-XF=<(Ez ze!Y$|2v$k~_>j>Q^+@bHrCo^z>oQ*lcKeFIgj(OrXhuj3d$JzDtG-9xL!^41#%t?= z-FzmBMH(kjI?3mi1JaAhI3vz9JTflX;xY4`HV}=b{dBTV^J4D6eb|2Gz{`2DVQ}ty zyZdYuj(8p2n%=&NY`u6(SUCVw#fmP(T`2`NE2z%529Dm7mI3hor?wCvDL@q*Zc&Bu zvt$wPGe+6#WR+(ux<#ztxyyCFe9SQShIOxtSAP=+*~GS@zBbR#ZaeP>QdfMC_`*!) zZb7<{?pqB`D$f+xHIm?u@B!5~Y082jqBa^aHV#=6vo+pEb&jg58HCgizpP zKlj-laeDYvNKdS`_lOyLLN9~R{Wo@%zU&jj-q`tQ9BZ%+{C2*#3>02Pnae95WBJ&} z?EK%#V+iOcPaV=oggJ;ldDftmPVo%tn5vMPtDod#SFL!$IZTiA+;+d*%$)-Uk}tpL z)p>o0)Yt~w7mG3V-78R@bWF!60ludx$5~1RKj%%NfEt^k_m6teE8OyEDDhK8gb>G< zS9E9O>=pFNZJwkR=oYKo@i_s(mR9>kDoz||wlzS*IPQcGULKy!QGhj|gI%f6a@)Cr zT`P|h7C}VsXO6V*(g8KG{fXQSAS+03`~VZGjQU-m;rQX;F@IjU?{^=`j5gnGQ3vI+ zd)@ClkA((r0RilhOVKWoMziz2ZeI7;!}rs)r&z5~y+-OgxM6Ki(*9u4&JHAS%J>L= z?-i{$d&*kuW_iY>?*XD$_W;7+=wru7lv5^`hrK}JoW^s?KS5v3$R#-O+DY)VQdeQs zVVqe%Y2heE&^_yj48hq#!9*8!w-t6{H<>JWQsHjCM1MBwH*CEI7*zSGU#oAYxSe}N z%=K0;8q(qU0zcM)8t?;SLGN6tflue8^@Ck(@ar%I!3MT4fsb?^1FCip#H7zahy2+$ zTIlP{TXW>wa&h?SZ(=Mu@YY7?UJMH9bTL6clCwfHIBLvPSlm3Gf4s($$u8zAD>6%q z#+=53wSWZUWtHbg`oMXE;k45_zeIl1JpGhVh;PHpZId2 z>iH!J)Pz{X+a=1r1DdvOOKE69h{k6b{@r+&Vx8Z!^Y#HTNBJoPNr)nkIkhWYde-hM z{(?`QXGPg=lms&IJ-DL(f-ZRWK`P#$nlo2&Hc);Kxctfg*MC<2RsiMgErp_P&{w{dcDZa`Ud<&g0^#2`eV!Gj@yFB`AYd(1JM zHAyA=WAzP_tlR2Tf~gzr23iYhxQ{L4v!or_*CnDac!w8XTU8qOJ;@^nQ8(w=GI70^ z3r4GdzyTnzfPNh0@WDk2qqKQ^!>QT>?%X;6rdAo_JlbT*!rhr_K@Okf;Qn3=Gg>Xy zw+Y(;!Gq=n+mV{GrO!qnr*so^F+UH@Msn%^7I;e9IS*cd9_H)jp=4Fs0t?=Q+?=_>P~w9{PNq23BmITUpqC1p#I>kImf3z468aD+V%iT+kNEdTeLuN_4^52yup ze;JG1{Dqw1T2^Hvi^PtgY5xB1V`C?faZ-v@Je_{L@9&*BJ)B_=PzeuiLb?+_%#0?W zbdjt2^7ZQ1rXQ%PU!K!nWV}GCYsJDLLc=lAf{!4kOm-;?d6O76O((G`^A<}QiP#Pu zm_zxk36k2>mBBB%zUudz(hfHR5L?N2tJRve8+x%471+2E^M+8HA<7+I}ZYZ~bi}iOSdS_!yzA zp`~q5mE$=0Yr}1TAyGP6m?q(D6gypoF~%k=9d5 z?bZMjtID70F>JV5_|NM#B+iWBGH!H|j;Jr2Cg_i-5d3OKq6E8P2*1x* z-_Q#=WBBmOKNP4+y^PT*(of>@T}TqDSQsX7cd~B|Ag_eLWOv9 zpz2xby2~ko9A(v9=3r-#*WBP;vHZY?hWj%?zg0$e0(1o7|2|`(CV38HzKO5m-iDd> zO$QVQ1tbLL`5)WOG)+aaB zdIB@e>~Jj-CfA{VQIhp^krR)FQIQ^*sX?P7c#}^Ii;EJ;!okDLkVQJH1KS!T1|j2yNeNctoHRFJl#`goF8qCa_M&^-ZpnLw&9 zp<=BzGEXnRr~Q@#UYo77PZ}Ueb_jLYIfL4@|{N+dBm~b}_ZaE<$ zRNLIiGSLG0-F+iLzIYuJl^_g4|IVfNK>Gtqrmm}{yU$_bBVS}pz3eCe^m}QH77{R-Kl%K$ zW0dh|x<2YtLS3zYB53OYWF-KEvwMoy+X%8-6vY?gkSr;V8S+7Y0QZxcT>~f=?x>!3 zPc~=tl=LVfaY$GBzZy)n`g8NU;(rCIDqOirqLLYMrqM_H(5`}70=Ca9&FHuVaKeJ7 zpO!6NdC0jW3xVktnNbvvt+=eR$YIupIy|Luc#>rC1hzllq&1F$5fSyx7OdvbS~=zT zgp(X6exykwV3>%%m)pKjo9aEap5pPb(0wbI zY?i|LVM$iTvjs3!5^$gfIw45A z#<~JE;Cm(g$^iQB3BA;6%K;BSiPO;=6gI$$b4+V70a@kQc?r(Hpx|Gvm}aB| ze7Oua(p!6<%0=|Qq}F-$n82=Bp%(5~3P1l@n>Tt!?r1&t_Fu}x7Bl@!!Gbw>4_&-T z-!9$_B=dW!95bH*H|u}24n|gT0=ym7b9o~ki&NBJ#4w}=2;~xJ4QGM%H&d(b8Oyj~ zgRdPsPQ-_2T0mkn@vbJEf`8fTX4NO0_HJJABnu0nKnh`@ryIfv`A4_vUqP*+gJ)gJ zf3RH!b7_fH%5}U;gqtcr(>4r|72z8$tZUe!dMp+b!A-;l?Z6GjgM;oeZ`8Xo=y0dX zutW~M$qa>OfNvhT#?@+YDl*(;Do@2FVee4TY;K=(T~D_D74YC?BDir%OmD$m0W`2| zvVS*Dll#OA^zyp>ADqdV14pYFjv_)(V}2qJOQw$kzd+Dbc-p9J6w*6^-mT8_nBO`k z2Vmbve-R%go89WU#H5gA^3}?y- z5kw7Ct!0&!qxPc=0els&R96G%+UZS_e zW$n?)q$4oRq{RpCk2kb{6?nY^$%r5fZj%cM&&mub)FETO^Z!tW8c>~m$rSt7L^cT9 zv5*~>0Z)fXQuz1iGr}B)zeBH9%=`k+n|{lDnhH9+X_)<`b$w}FlZAp9XgUH6(DQP}926Gjw+v_RpK|gRy z|JVBAQnx5wuodyu`5mP_(X<64bGqbaO16^Cx%uX}@V`>hfcticyXZb#P4G@(;<>)Z zr@ty&_gKAJsp0;*F5~JmNSYK59)o_|sQoB7)Ity_tumruAj?t~`n(2H$;beNkyj^x zG4lQKauyLXm=g){8Nr*1-|Ct-9fBg#gnJgtWOG%ubGtgPe%7e9+{QE3>SCi=u zgLrN!UyuzJGap%|Zk-~;dYRrD2+W0Qoa0be%UHgRmmhj*z1=PMA*fMEE#eg*7<^Qv`q>pmh#SCPO7L!7W7rDdNmM%$ThpTx3vn2aQ z2VZ$O-P#V$jymEW=}g{3#e}nLP*1;NrV0U3L%L=V3;EaewIAIoi|vU>`;yR?vrc)^ z52zOJ>#y-O*Q?x9+&Y)EJ!5jfk%(+T$mosKQQL~H+*M{f)DM{fT1k#WT9tN3ZQyc2 zoN4QM5%l9VOWfn)cnAw#3Q)edr%K-pp>TV_b*wl4WLpCb2b-uyB2&IElKyI7$o8FN zQKqx_*IxQpj6Bag>K%}Uds>GKg1_wiqbrMsLK#&D^V5+LbU8>9wsY{i!S=y4LQh5= zN>EDfnUlqvK#ZCg;{>grBS$Abr)PX!^T0i2Z`z{7kwzRwFhhKSy)_oADrg`x!ey2B zFk^TVr_T-$TKh~%wOCF7TR(Q;6tEDLA^fxjBi#A&4ntBXjG5ne*Ul!~S#Jwx&SS9< z;kx^=zgy!NCZ9@w5gcqFH=SG zg}c7)%tGJk{;~RTp-cv|78QNOk=1!xDCTDA$_W+*-_g#os$aj_JXiKs%xJa`Ufa~F z_j3Ebj1>_~ek+&%PLJsJMYh&uTC!4c+{+sNO&iiSM#i|U8fuYECR!GrFOoY?s>YOb zio0d3u-*)##E+`95EoNedKw+`eW)AiinV>&w3jFj!`~n6c6?C<I zgazq6%KT1*tjV5?(kE`Uxa>{A9+Z%mFNx}uGlp}pr`xHE!nxb%b1ctD53Z#z0(+_IM!d%7 zkh37wk!)UbDc12^))c4Md4%??a-A$DO0aoE!YWk=Bq`rrSUzRw^&(q$%ni@j6WB4h zUaB~x$*aP7>PqXChm{w1N$-8fCx+^?dL7_DOXY=z@_mdA5MX^?d3F_dn_2`hD$cRXNf|6MBKymYtZu^iJdCxgSZPwmPA93CgJ<$yr1vEIu^wRGyb`sciwL|wTr^>+baNTj zJIKED0}U<&VI7+2(>8tOcesru)6{SF+y^jPe%nzOG9)=sf8n45ETDey$#4bS zV^B5fu|atLv@fG2deR{!_lyV~jM&;@WDvc_YHg0y%z2}nAFoj?ki#cX9lN>C1|6bz zy+OA8+vH8B&>f^c5D5cNIFahd@HuX&_|~9k|FNkNdHx0x-v>QkMBgMTRab@+<;k_} zbyy49uLSXf_OjKKx^TD+cuHz^yI^+Yd|ZFjBxfvWuT(;0g*Pd&ScoVkpTjqlu+$!*#(*u^FHRV+yZaEKC<2&!gqsGH@8JTGkKF<{DngAG0|6ED zSSJ*!OJ@P-AqMNS4{EN(aY1(8in&Qe8+6J+EGSdE+5ye!GXcpR??rT_$Eam46O=yH zL-U(3IOIP>Og+^nzv4exO;89Pe3_`)a`Z-uBL^GKT|){%9t6ICS^yXiy{V#o-5>uPA(NsMyMVgXiGqS6 zatudU#_B1n{NGa$wPS>aLO3C+Peg&&3ZH*rEI^PHjj+sX{TzFh5k|%>zoS}Rk3YPO z-7a)@{TX%9$9B5?R_tprmV70bZPG)t1a^uUXE4g3{hm@P3$2P^z5xamk-cuKjX6|4 z&WwxX^a|cccb~@A$6B3ovhBs-On`90oUpU-`N@B9A#9{2CRtLt$+ z9$n}A{dym-<9Hs=5$GIyspe5VLfjgXH=I0f7j+!@X`NcaBViLvh?N-(+}gZh-ZZcU zS~)`~zLVZQB+VVdQlTwikXVn{C_U)mRX&E8`oDolRZe+l+);4sNvJe4sbKnNtCZ!1 z2Kf55-wKe?VpnDDO}(&k=KCLqCUu>gqn7WU3ZaQCVGt{~bpMSEh^q$7zk{hWGEK!8 z(FV$f)oUDNSVE*3eS2K9$x+@kf4mjtUq?zOaB(z~H74PyGmf3;MJ7yAuIjMRz_hF} zD$f1>qqe%T_o|lspOHYC3okxhFfAcF>yvMbtAZ**%f4`$ZqOa9UfpeWhz0^;oK@E= z8J&8{K4<8fwe(5S$4U&19W+H#_*P|OQQJw0mx^F`$a{Zb9Z?R&5=a7-Clk+G7&<5} zV%x8FXZTTA((7-QvTV6%s5j9m@{)5d{M<8zlpU95QQ_)L=7+s+q(coR4}zkoPx{Jv zj;G}|Dq4@HLHMO|i-2nVfs-og2%%U`9$xtT(76VDIMOYAAuFWs1+1S%2b(`7@hUK3 zoX=jQLY`|_d5HWhWV-7-TZ{tBN@KzH7T95`#97fjRn{JG@6G;?5(S()pKHZA5ccGA ze~c-Mj#_e@f=8mge2!k!{80VxndX!k+1y#@GNnI#4ALLsPKZ87I_AV&W>)jm?{>t| zUu9ia_ork{P~GUJ(Tgiy(Qo2~$mV1{-oE?;{R%7D!oIJQ;lgJDyR_m|yYl9mN8@0U zqJIxdpV)7(gdFp^gBj!R%x*ZsnHfs7yBcsLudBvCg#Ra^JifhXgyAs$0b)+QH8oHs z7KJpBRUasRPS^W=+hg@qo|2iukb#{b z(!kb|aju+`GSVJy{?#YCfyf9zrBa0BoVk~)7{lB}XES3T;k=ZyGP@H)_^*kl@^RI$ zuX z-fiVP;}4Iw3w#eqs3l>B%~fMG5<>l6QKB}{7lF}4^`C8fFA$Bcx@GE>{ zbULP7L9hstyG`m7kp;6lF8+>~&iXYJR@{B)JF8I{{3j#k<5&{FOC`lG!ZJ`lhwuf3 z*6>97tgGX6%P+_ES~zAp7H}@7`92GnrY0?Yq_mFUdJr4)AVU8ub%sv(ng<*8a&Dvr zrD)$N{&}7a^zXQS{)v>M#5i?!_fe`@aO=7%$H<);>rBq77TbHqLp;(VI_E5IDsG0) z&k#dUN)N-nv+>WbrAEX{SLr@4P#?tpyR zn{hoJqlr0#H+?OOBgq{kI|a^RPJD60xwgo#wOxeRdhDg}ljT+PbLQ_&t@2{v6ui{O za_aWdVO_>=yAvLw%VwUg)=etEQ=}j-U?EMhP|pvi$MS}DWC0cHk)?}V!xILV^*bi| zo1%HiN1GV3@lF9VGwG1;f^$xoliNKf@-$Lr14`Q?FW1+n`+}e@{Rw_LpP8LEB_j3Zc>@$)3a}CfeB~JHAm&wD4Vf} zq37=vN6_rbdTA#`pJld|Z|F-ufwyu>2ml<7Q8|kvemBJWjA$6i_+%~>L5~Pio>xox z@?}dz*>9}uz9X{Y7}!Fc6Z?t?z7%?e@v$Ow#{JKB4FbM;88_rP^pOdv5jTO2p5dqz zp_iwdTODu$lx;;>gf)@|%E@ufRlLS4t)4}J=8>ykA-n(&TkvyWKCOWKwcN=9lj&id zzdc?<9{Z)toom!oLYErLFR7sBr)^4-+~lreVj@`+A~SF5A5r&T}c^36IbrPBMVT8ODif5mSs746JeAaW~`>ft(MTKvE!@q zx$7x`CRzlan33gipyMyel-TA^tJK%~s0-L7>%yi89WxJ1zs5PbK-~%nxr#Y=<`K4F zR`;Ha$Ov^(>bEf|9%>T^2Tb9yke@8&nK`^V;AIWVjQPa>^saUI>s@PRVxd!*MqRV` zv(!xfGH>2`{}<+4CY=JY8`mz3=k>b!-9V#>Uu#WTyQw>TjUBCx1bsldUIIjZraKp> zpA;A_wC}xR1Dz2WbWm6xMQ1e0=K6bpOpj&)N$I zIZ~UYsu%A{$noJW<0@o2Btf*XAPfTkQO>{qqic5I)N37XQR7eaZBt&Zt1gaS*w(ya z+xvc^2Y}fpdvt&9cJsxRXDu>8^9tQ_Hk-`-pmJW|FwKIws*Ct!#gPKa0fm|MTIHa`?HA&L=dx!akypXJ)d3Jh!|6QuF2;8+LLm4(RX z@<-1EIE+%W4$}9WxkIQi^esy!DEAm}oC~+rE(((YFdd_H)Ua9>({qRz+u@8R1!N9j zzmy)QK0E=1l$K4xn7ty2x}3m|G-7JjPoiYxxtIc{R914FU`Iw_7fZ8283FeDRwIq; zXEEK6mvq><{YIY|p2PI#U+oe;$%JCh%6wa*w|1yNv;U9V3Y&EsU|M{pV&}RJ@Tr$X zm|R4ku)E{%yZCOOuyP!;vb$(Mb6#-v#(_^WIJ*^nh2MoFUbm=^iTA2t*7(z$Yh9m< z&d`eyk<90^#3yBNX4I4$H9V;&5?z(E$@Nkq9J+#wMTt|lW>>@Q-HHKtwI%;f9vBO& zo$F4M3okfQtP1DD$F7c*Q%#%x==}IEN?1i~Mvd{CR<6|x6UoA~;-lfxy+vrF%QwV4Ooo7(fA&fIfIz?1TWuJJFO!e$V+Psdcq|9PR1rW>c@ zegyVeAu8f#>vDby^9o(tC%-nA34A|oPw;q%{x<9LE20FYM(cLD5zisJCh1Y;z~1+S zUD?;zkMA9IH`_MBoVY>Ud&h0^g8130f^)5hKf_7{`*>2h0@7-P6>2PTaS~&C8Kl(w zgD;)a1(DI9ZwCx#Xjq5wa?b?(WM^d8pcgWJQkyx; z1TCsY+|I)i_x3%8KQwkV; z&vr29GB@NQOS;xmQuWubm!9iCtsVd4dm&!y%zYW2P*7ttKBMEvsmVx@O-o%aM!)Uj z-A?fBwJKlcv8=laY4|REHB7;_hrwITt)78fPQaY$C#z6bK~W*S&p*CCV!y%->s|74 zGYzXAMqgE}%g?&X)Nr2|=Ku`d682%Vr!wVd>ka%M>p5h?&NdiCO2^{W_9fdisSqdo ze5FRx=?$mWqfy+BTE}U2vgHy5V+Y)DRB2f8C3WJ*0irh36iqST?qB`l-s)ob^$770 zh`aa$*64niTk$bXsVoF$ z@WH|MN%ne2n^ZE^axshC3b=2 z2^ZoD8P6zSo}Lr?5#SAeQTRPU@n-8?BZ%$AJ`hd++d;+zYkG6qe^@l^(9xc(Iy9bZ zRkUO(LIY;a~sd{sA5b38MfhAP;=biVbFFr z8XVTi@2C;)*pg^2B(E4Po*yZF(eo&KKyfI2`a*=UYWtHM?$pAU)G?RfMDkuB-2m?_ zh!PTlxeb5u)IPWyUzWT3P@W$5IAi$iX?F>oT~@R-q3xm4LDD<2tXn{N6uL9A8JVMy zMmEAYvX?Ftf6w7c-ZOMwdtDTziI7b&or~NQKjz#eRCtD`)7mZ?Xh(v6S+!;)|H!W1 zw{*!`*bA-++1hi@3=GUAYVmu@nK~(g zQHkheB?g7id_}@o)ce3ODQAfSyp(F35t}Hb$y^Cm;^v8`XD0HC=#A~>nrzfL0y4%% z@(r>iar{&{3!^W7ktqC+RG;pDQhhdHhYG1a6(IG1R3Ge>HpA+8iiOc}+53$^yj6A> zp?@BDvpP8qweH%^_Ub27uSvs7`03%eqGUL=`l|ky4rH>su9+WtGeVd}hS)G^^Wp1W zLV>+?Tzu>-jC>k#4&HT7w*bWrj(C>#EaKVy7p0WNg=u@80Z6l5bjeUtKS%n z7y`aFw}C{B|Mv7~bEH{s1v%9F*d=n=ro_*3914bfWPuv1_FXO?OazW!4^XLJjjI7T7Opso; z^ymlk4ZN=Ao>(my6dAw9M?nATeSKzb^%cj3fGuC>2M$u{tjVxjT)mXBnWm{$?LAd; zqosCb^(?mR?h(?~E?Xc$VO<_(RZ0B(bYgY30Es%-L&5_8i8}aqy9ocLSba8GS_cfI zbU9)M++WwofhDAqIOh%yc1TM${D2>`oBB%=AcR#KUeWxMhnWuTd-GjkBzBOIwJAyE zmLrb976ipYGi{G4l!{ydZg6KWd)WbBLS~7G=L>L$N`0LRMbx#;OA=h#H$`mS&H)jv zq+PmmFU&7u3&=%|?As^>5Viv;?VOtA$=&un!0MI}%{35qv5sJ!D){(^Df$Yp1w}Ef zRAdRAW8H0**Hr#an<)smbTtw}IezpawWi<;C26>IHQ5eOM&9iIE=41SrOp<4iA916Q_Tegq= zM-#XUT~qltFG)34+OJ;~@4+0U2mbxNA{)4vg7Z8QH~c#HG~voOJ)BI1N_#0A*y>NW z0CTDX8gB!bJJcodS}Tq6-pc4wDVTAJn_*!9+NtwpB)jGxTkRTX>Wd@Zl>b%XIRRz* zQ5+@hf=hMq)>Dz>c{x}%>DR8j@NbYK#&jD~Y)|bRLc3S=v~;TmMzO#xa5TQ7BsBO= zHAO&GYalvuV^EnZLgZnUq-D=}bcL1N`W;CpsAEq_;Ma*=qXUCXLx(SIb+$}1@M#!L z4~kH_BEVXR)weV}n}blKh7mQcGN=f1Q7LFQ9M@Q~yE9?VMJxHB_zL<7yWx;;-XQX=0Oq^0$@YY4sL#hn;2N*y{NMEmyIPrh>0O;xG;tT#S z2%OC}On8?5`^|>$*$EcB)joiDka0^=>0H(emcT2(z}tA%uFD zZSAgiLFap!jQX>ToGp*o$*?F6#__MUgpnQ%g2B`$Z~~qc*-t{>TD$&PelrmoAa>~6 z|9b;esPV4`$mcf8OS#_HcT$u0p%R_jz^5B$!gScxwm|cu>@&h+$A1ZUJ8Mv-c=o!rgUu2CC`5_`d;Gqyft9xgf$75}r zI=kf4DX3`aQiw6@zkEVJAnfj~n)%Z|PI5h@3V#JU^kyHa%mr)E-23>?RAWPib*7kc zA;ShZgS7M-^)57Bu6@mafInTQXR%rXNrdj*W##?wTsz6&%l+@a@Bh`{!Ja_UZGtJG zSZxp}NJVii(|DMQ+a_iaTS)<1bC<%q?_2nk6JpDuqVRFg)aE!1rrbw45MhGOZj)V> zc?lA812KogM@WctlXe8mV?8T!+P1EA?;QPi7IoIl&{ z3UvL?yA|nk1Lut`mC*2>+4A;3jD~4j%Suyt*F&BAv%Ei09<~AS1m^#~ zV_jC?W=;TIAjQVqhXC%s&b=9vzQ!@+w~tvk{Y)|WkMah2lY&ovT6!Y(aU@WTPizzj{SXE)Eu1 z8s+~S^LM1-TuM3LY4a{>p<5GivD!iPS-=Bh6t0bg;f9jO82f5FWf~@)l&rHenn;`A zl?Cb_DmSu~xWFxqV#4mqL~%ap-x~Kta#-STjmsh^u@;3I2S`%& zkYI)zA-2P3`0=66$_1X|#ViwYA)@b=DIoN-<-)VOu-Rhd;{_C9j} zsrgu;z)+zRh^ci{79_PTUfZ_2Q?C8>$hs9Vzbebg=}^s(m?mYEFj|qLx#>r0^h{g zorQz0&VBa(=a(D?JhfYS!z5~fv06t~t6gYbrmRqS3S7M#lsv~M^sqQ}hQP2wI4cg; zyU&|@W*MW}{DJd+!?0PwJswh+x*@zy0ODd=_E$J?=fTw8^~MJ|fm@a7HXgU8XKV6t zVZH-9=jSl1|4{lbofkiH4$KU1&eDDho5)|>B|cGQdJCJGy{sWhuJJZXo-&c;RR=+C z2@-Aza5VyI5mnnB?EDVA4pseJ5nn#nsHn92=E%>@1i{U}Q#h;;LFZ#b=TpA}QPOGW z?6oP~t8yR77M{8B?K!@)7WoHYe%28?eF+BL9iT2}o0%Nr3s4HaonRpX{o&uzbv)_R zS`WLXFHk;)?*nwH^)Hjd7~T)eA*%M|f*`LDQKIMKJ3!eACtbiK9l}$CtpY0+MQk^OYTUo#vaB zf4i=Y;<~MDr|8uF)>d?^jS1P4w`3B`4%brskk~7k*Fw5Ovl4rgrAo0&{@2esA1#XI zoK5tO;ESo$O$%^iyb!kJ&othKeia_yIn3*j3+avm=2w?b$hCARN;%}m8o zZ-yBHX}To(2MlT8iSHctghP1q^qq%wq4-G?%eQAMjFzoKTZ+PUC^?RP!Fl`T6muBX zB$hd<#!6;qI#nJ$6@Kj;Cd0K@Pi$4qLoVD?h4I_VT!8-Esi-r|(ZeZQ6K`B0NV|yO zRCqZ-c)8n$_;8O8lo1}<1)ccVdhMnAON^Hy8MjTv1~SH`Y`BIxhWlpwzL{AR;VKWe zN_!siKHN}0S&-fi;I$15IuN-`absuRr9hmTaG&uPMu&Zzkfb0A=clZZkspZA$G-;ujhP1e6Kx9mz**K@mICzt0jjgZvkc#VJ!o#I+1u=f}73$VEJ5pY-Hp zuKXagbeTjG8z&k#{`X5^U+Kch=sh;>Tc( zUynA}WSZDqhJD^5y#3`%h60$5Egr{};X2c)wC#aOR&mqY@^G-n<*V=A%+R^&tS`KmoKG~8iTD3lzoqwx zi*iw;*yeZ@Txe@+FWOP7esW5Sb$>fpJgcTiA_^1FNlxFy9XK5FoQdG*)=M#L0eer5 zITs82t^6rst)rXER3dW5@BD~WAqovN}Btz`S;xAOkdiQ>4r zY>09PT?bLuH~)AdE05N!*6m0g?Af+ARUh8x{1*) z5pGo#uA%`8M;s6PcB% zSWCKH^kuv7^3VL3pvK5AP{bjoiRx2^gYOeZ)vyVcJ0lCG5D5#HW2MV=WSZF zHUKp8OYB6)fq`3J+1Ce5+mnCIGV_5Zp{e`MsRKAT+`91&!Ld)~-^zRmQBr=kl>`^i zv#l%y?>I+&GFYH>QZ%H6W^K5ss^V%Jpi{NfpOG-}<%|CKjz(I^8+*~PL+ zgL96i{)!8)G#-4A3+JG2b*Mv@kRN+Mf^uout$b4g0N6mgiL>jBh|=_U#(T3KQoBAi zgJs?ZVl*M*Fu~{fiGS=)*Q=WU6>1|MO+Asw;|~f1d6gAGUPV-MggpqY&~L_aVA*hY zAfx;EQ89nq{#^g5P_9&AczVk0eb^IRZL@ z-Wr9Je*1QzX3o@eBJwFD(77!MrJgRf40de`evn4B3qplE-r!EGQ0`z1={u1k_T$`w zj#EN{kW%jX#VTQ2XaiQDu{Aa)K$nh`NELF1M0K>3iY;j{$tgJnG3>bWTMpl&`GO!^L;??u*t~cJ76On4 z1$0jL#}XNaC1`P;`$Iay^hzL#klo|_*E2f#eW}7j;Mk{8ByWluMbawJdpHj_!3UdS za$)?6%*#8?i}8k2&AT(J8?7gPgq=5U2AyN{Ksf!x^n@!XkQ}!$jMml)VbXilZ|O79 zb;1o(78+rmSCQNpbG;cq(1Y-QAC@Orz}%CaInfF{p2j{~5pV%hT`97$cG7`fLeZjm z6D+Ab8Aj?A+T-528(PzC(*tp)X%w1yVZiEY?50b$#4|)c)M^|EdgEXlVb-|`tU9~? z$nWaNVeTtg2hY;Fx7Phiq5R=Gs%9@W9lH25BH;Vi%gH0y1ykxwJPvxO3r}6}e4%o@ zV&dS_e)H{6f~`~-g{6Q4Tz)F_ph87B71%j+Z*3zT^?{**EE>MgJzmpUnQq%#5dG^( z2opt-X8F1W?L!VyocO?Tgivz;OW0{x2QrXPf_3eUA9Xq&f)Skr;r;32lbi-sJ??I9 zcb*IM;_5g}RK0IL*l4_U`xvy>u88X;g0>B7MNd=_wOs;paM=u07bDnX3P+j0@CT3X zjSd)gf!pki5S77wZCBKJZ1HbrxQ}gc~qS;l|%H z6qn?LghF8W2?GW@Og^a|5sAR;rof06n0Z(D(24 zsqKzy`+I(f=Zvu)GU#tE-(Au-Tm^#nHN%TEIi>+WBx@RCFZ6%WNw0_GZY{HC<9K2j zF(Zl@U3R{g#vaduvPq=qL6kZA+5{#(%lup$Q?x~%JF?Pia@TRRp7==H1GIt$!O`Zg z@i#85rzKcS)1L%!cnN!sE*_Fjr!5ijsJ07zO8a5=?N9QrHzNANOJg`<%VW#GT&_Lm zj{Z7DGi$Pt&UEhX)awpz@pY>|$*)hn7sBh-MwliEL4Mar-Hk?!AEvRPjr#}3+$2+c z82k5!OvA}3omsB%9xr-l>A7j09{5#Qw#EsfPgyUpTwpWj^YtdCxGH1! zP9l`&S<^+|wH2!DJ6!2M1}WZ8MefU&nY501(tbe`n;xc3U2`1j(yLSSqq&;N^|gpb z`AVD!8TP(uYT?$EXP}%s`KFDwLuTU#O?+#q7i=z*U=Ug!?ibl;sA&4^ZyM^p*5M^$ zEontPN>W7Ji)77Exs)PiYljtPs@GuMfB%%oOKWH4RGY+%MJ)T(ei^bS0bK||tILmg@S@*Oc6{gUl z;%lN{%nz>%r9WNe9!z977+<=j{XLOqggs5|M^wVndPvh0{MH`X8xzeV;OB!Bgx&s$~5N9<{Po^HX?Ur0)zuLMXy z!=ExFO;Yc6EtOoRIjt&7&?cPn6H>FCV=GvM)QX^tOahX3KT>D8>xF=Gs;2WRG`aF^ zPY?f5PHVIPdn8}>Z6QMZ)vCM!?Alwqv75Wdx_nfmTX6@rdw1}gu0qi3-HwrFOxcRq z#?_~h2SFV={V$KBfX}poDVS*fdlic8Y9H{;G26l+iPYr}GHcDPQ64c?Hj6QTQ`ltt zo6J08_@|Jy<3ahmiWA=e+Q95>QoAWNuW%;<$O}cCb+S%?|wKH>UwqI%%NxLCo*+&_r@Q@1Z;`Lu+aP8aoGVqlA(Z7~j3#nY zHBxw=gIniVckWgh+kUSQ6W5Cy`}z3wJt~~Fmw8J~>#yZeB&k<^#V;@?IJ18H97fR1 zcx}c}j$6X6ZuN(IPh7(1xQC0N69qgp-@>krpYIhuwuBHN2lt9h-{6#D5Og$pA9?)_ zfr_1h>@*Jv#wO!CDU&=Rs#A=Tuo+~YuAYn+2pp!>&mNeX_W0=pi9;-!Y*L;(xWUER zq@PtqbDeYX_Vs1{;kK`CVY?e!kGIP=mJ2c{GyDDwMQL;~Azi<$=y5%eg^8N^ejqI2 zSiMhKwr}&QD4u+Ou9oMs*O{*&T0z_Ve7u0mUUu#DzM{W2g{4*ng+)Tk8`5h3ii3Cu z6P@J~#Y`=VunXyyPmWZymk(?O2Wa4@Wfd^ z!XMlB>E~@3MYznb7(&;y+kVb<6rc0!q%_UGA<#|8=yRFkk7aWhKH^ zcclp*5I-`+1+Tl{FC~e5##zWCUQ)OyqItas-xk$FQRo_;ug7eQAD}jSZ#Pv0{B(DR zwbd1`rCrr%*6H2Rsx1Bk!w$bekt^fheea>!U!_zJG7S}0SYAcMt9e=HVDFmSqC{x1 z4I@Bq*6-PE9IUH$36Ec&LRhU|r%?ZVt_q<>OfNlm--5PQp7wiYxr;*mV>m8S!spZ6 zmY~r{SaKUg|5A|vw?ofKhuV>V~ENNv+EGExK^z8$(I&@Mdtq7Q_ zQp~8DA@X3Kn!%s`6-s9)z+ILcT-%ilgRw%Z(3Ll_LoViALm%WG*w*7G+2F&`b^RkS zXp0+OzGeWqlM*S&4r&T!ro$#s*;?YPkH?QmQHGQAM7k2aQmqo|%XLl)cD`ICZD-1N z*+3HO%GqU_%C{mLF8QMkHO+*1dp>n+A|G$dK4rp#)3A~i<`t(4s?x1sc5sz~`YbhK z(au1|oNLayBK8km=NdxSk!FkV1@SA-(Y6;mGudiVYp)WJJ}8{;pm`q>Yu z%%AT2Ur5dl2AY`Pbvm00I_lPDj<|i*XLL4|V-~xI3s*6osg8eiR>a2Mrtg7s-pzny zofQ@7W`xhhI|MVz!k_(>;_~?S72|lhdb5>QVF%!+Wp&?$rTVX>NG&L-!3te$z@&cZ zWUXQT#z}7Uyp)$cRbSAOFZ*g3AdcHE_A3lP6Wsn0D4?hFxuu0V56KJg;`Bvw!!wI=u6W;g>-o@dvcQ4;Xl`oz za9hj<)%~LHc%b@A)wwSAy6C$sG`s%Q%1v>U?&*It#?yuo)SE&Bz5Mo3*Qd{fdzhbGInF!4upxYFBzM z!2nibOMCRLZSRe|F7@Fa9<|9WTi<}n{d=#sZv`(G_2uapRwg6C)*qFZ>{xcA={omu^aBScf(~Hh0e@%YqY;@c9 zdY7h>Defb-JYehKrjfd&C=RjAX`ZVd5W(#`UUOoLV;J{42$^3>NPG5u+ANvSXrU^% zpS;ndGC^l4-iX00rx+5MhPLx5rhIF92q6&h+ilS~fWn~|4?#Z%}2WMYBf7ZN0RFpo`a?+>SSyk2zzeu0Xgn2y$^(a)+JMs*c!AN-yRS4D6 zx|0e55bXEr=)17JzKU4;`5EGI9~XnJvev{RHF!(Wv-g)EItL(w{S*QuiMfw$O)tBM z!qQ@hXIVdxC&0kruIUZ}oKQdr;`SKHN6fLM+DK;5R8bn{iu^Rb{Mk6)UXTOvAQA^H@&#zAx(w;hm`{199M2gpl z_chzg#m6&<3N(5i*G@Q0w#`Yh0ak!Hb(WOMy`BOsUZA zM=w9O+#Oukl%6etPddur`7Us;u2&Z;Lf7I}%n2W;YUd<~@(SQn-*QW_fo-%rjq1-z z91MS4L(qJf<1h5^RfTZIz3nDL66#qnzE-@6FB%~+i1XzgPIt)&VUq+1SRq-pTx9}7 zaBAQDoVkCcBu+BXfKUG^`)s~K+QoKDXQtc1!};Q-d|wS1e8yi_g`~ar3aAPZ@9ng+ zSEPRqU`o8(hS%9ed*w*0cS5?nnFH}PQTBa7zw`q9k?;;nk%48Q*@ulr2YD}FxXSCP zu#7nfq)hJ4ZaRCn9FL2xN_eV^KY3>I!KXxBSu$5gdk%5cQA?2HTzo7qx}K1jgC}f3 zIqTOq8L{DJDV!uhP2GR}Dh3?ud8(3~;3IjAxY;8>1vEdx)ENl`;r`nlG_|&q&b3~X zHl7`-+E%aGZbx*zu(o9hS&`M8{%JH*gwK6;C>sxRf+*9iT=q{6{7=-|>VD?0xe9k{ zRmy<3Jsc6v z6l8X6N`8H|`>6=-L&EFo#0@Z~8L|(c=o$APz+dusn5hZKKDW{LRsX)_|0Iuz!EcT# zm{b9B32*Pi*9p_e3YMsSui?J6590mAQh#xcZ~qQT%9ur-cZ>G1Y8Af+V@xr6+>Mqd z!k1)?C56U=%VQ1_dYC6^mWeBPL)g33V300fBb4pV&t zyqDSO6SD1j3EQ6E&lT}lpU9sw6)=2X#?wO0y|G%7LZ~4A3G5?0xSWJnj3->)k=8A+ zKT%u!QeW3*z$Z#>C`4wMo@H2V%4jO{W37)@6gM+Pz~S{r2V%^Vn|dsHN1gGR=H*R0 z6Lwnq9Yz_eNsq%w-&u}OnfMGe|9D5z2UASBJCtU_M{AX)slU%2jw{X*@EO-V%4%Fn z_g30b^8Y=BQ}<^p=Yhwo_#4y;1cIj=Q+KC5GaA9Ja*?q7;6d$*>{kpLy{SZVBE-VI z7Tpm+%z8R{QI=Rkm^GEzN1=!~l}g7LwJdxL^O#4;kUTMo<@ZlFyd@%<;GPWLDG~!_ zR9tA0h2USH8UsM}Sm7HHkM5`BA9|g%4P1TaeoKkpD?4sb8q`ZY-=mDyTei?U(fS~l z-lM`XZld(w{o}RgC}!PweXc%+kED<2nq=nJ!)|(#AH8M$@Ea#7x#HrpEjiaR3ZYAq z=FqbfhHr`hzMQi4?v1NbKJJj3PoiKrmnz! z*)WR_E^4x|mlKMjvE!o+H$@`lSjx03Vn!&rM*PtIiFYCyRPbNFwR##D-x0K152D!} zk#TIg-wHtpZ3fR!Tir@QR;j-+NP}Myc+B0k{X$@BrWJJt(<uU+XF+GyaZy@O+c z{@5Z``}2%SP0m`p^~zn2Wa2cUiexJqQE6UrGa0etJ?y)>%Kn8CRkd~jje}==D=IIo z-WA{C86iBNq1JP#I)?W~5@|*mZjtz_BM+~WipzKnAob(d&GSL(W*RL(jL|^QeZ+J1j5=cK!-Jyo84lsWkBqVDjQ9t>qD=DADv+aLv>eKfF>}AENXKhTyMubvQzm4GRq)FS->j`BQ>Q6@VE%+#e zy0AxQ63NqhW50h`8a1w#HRj@NQA{P+whmiYMYu*u zROXqh+x=O4TPpDhOSdt^u=!X4rs(J3QvlAZ>wI-tBGX$ALs89BT z-foPnvrZ?kTTe6WiZS(PtK8ze`G}tM?nlQsMvBeZkDGCeF4R2>FR0>sw?C1JdtzgcVH_2ONyKYQe=wQp|5(#RA)*7 zQe-4LV&f@4I7HpP7LVxWX}X>t!J_q^@5_g!dF=jx6JAZ+zlv4NQ==pWY2w?n^wvyLg_Tc!c|r0*>lB8RW4bcW zFG9woK&_EQ=U3ijd!(rI%%a-2tH;Wl7k9L^%sekiE*1NqUi!l=2cNAGT#FD@;{6N~ z*H*7Chyw4oI?0J7C3f;jwqe6*RnBu+gOVre@BEm0nJ`wJDc>@{bLp%Wx|y50QSv%+^EFWo`nLHTL_|v|6 zOk7#7Xp_=(H)-NQ>Es$|MAF_csQkxD?>F9ku!F)V`Z_PAc{U&xHNdknsGh2B^*88! z(*06MkULikgy>s*2p!6?`d+GZabEmVH4bTJy+2*Kjy6NJcqLU!^Tw)Uymx zj)(m!HcCk)cX(tx5%1_+i2KDR>UU^~^&Mgbrimm|H3lB@=S|&yr2k0LLO_z1prK^J z2vQRj|K>~3|L9SSG(QX6YS7i&k%B2!cj!A60Vc&Q!dVM_&`?Jb-rsU<0~mcLk7i`H zv^Tb+<^!D5y`QKRtW?UYTqM;r6_c__f3Ij&mX!GQUKjq$T-^9m5w~vZvKHSmi_439 z@G)`j!KdU!%pamR;}sd*Gc*}#5!VVLXU8l={tlUoe_8rtUIFvFsiHldhbEI z5E}+};_yek4Y&7kyrCl-j%}NO=4|ebR_F#uBp*r?JjimP3`gZAt@kC{RCR~%g7}g$ zyU`{pg&c!)f2&mkmvnKxN>@hcXl+*Rr1ecK1C$Ug8-eI`2Mb{Y2N0;feL(QCZ=pFE z67ll?@tyvSc=?w~>iGez?}YBZv_<1!OuRVKX<}%MSdvO%JvI zdP%Ttk6Y&lzNY;gGALAJ?7hyv3+q{B+FxK;L}J8}CQ@@*lYWHKJ$0@M6|Su~qIS`% zCf+Uv8^+;LT%&wScmUhxEG0ofw++02xKN9T)1Ej_3c(sSmPNS=hy%~HXb*bY9$W0M zZbMdXb5Y?2Kvv+#T1g1X$>L=BRsi60O%L!8+*N#ma1w}Q2CoI*VeJ3erZakv z^%?maBa)=hWfI-DJVTfCV-y>~BIEnJpOF5nYqwqvf|;k-Bz$b6$NK9OGC}6cTd%Ij zOu_z|1U>lYOy;L097jj?+XBA`$R{ro--1^Ig4jCxJ9$R9q(A54)3}eLXcR@@A)%KGN+st^w(Sv3CL(8{=^6S z)SU1;TwtE7WuLE)!qQls@`H;LqAvxZ+Ey9w|J26Ca)~dEmYfRrpKITHG&VQ4_ZeYi zoXn3=pZu;Wr{tMQz&ceLDx=1q17i>zXV@R5Za0tcj9v%b;0r2x3U4aW_>e_=^dk5J z(hk3$9)EKJwp-JH+H-~6V9lXR>bo-;%qd|zTsV_lv=8fcV1(>2fMZM9TjNN0D`8J* zk3ig(Lwmy?O8d_S^e)|BEzTHdaRfQ2{YOg;w$y9?HqZck14Bm}?IcNcEl%VxSW5LV zX*v2$(RutnnbCP_C9GZ!I={qvk=t4oqtnw zqnzooD+Gx~ViTu`uNQph>ACx@^VGeC_WT)`&C%m5Do+=E<}766UC$Ur(%yQ-``ocK zA|2V`XtS!G5WUqwBG9E$Q_i883J>c7$3B(~yo=H>6F`3sIn2Mc`eIkgH4+=7<|ZJB zVi!cEl9hB|O6VstIh#W+qYA*y{Zxqc;ub1BH^`$<4EYjEH5M=s20OVbq_$?LG*fOG^VR7{)4qZ6@+9 zeqr;7ZA>_(@Ar#esCFae;Z6nt?#RBBVj~=Ee|=1@7OS}!q&AUZMgP**=hOaeb@wTc zUX*S~Dh9U2NhW@OtP~3()9!TgM>FP1wt~MyXMX9=MmdK1jJP!)!3IsjSvF+l3#LSm9wdf5Jt~ zgei9{88D8dQ|KMtLPpUjf?W~or3*4 zD)}#HG;L4^ffrYjr-eSeI{nTEZbAChFb?Vh#&J4s-oymT`_dshaeB_i4a4LI9TShs zQ_sj-=hb@&v(Ek73jiUg)^`^ye3_%xpze!GuUaYz#0ekmam4>feIoUMT@cr=DpzuB zd${h)58=4e&WH~zj>_Ptz84l)wK8R2DOhH2 z9WXuBR+w9n!(`G=7eIPr=`hJ5=dwu}WmCb?8Y$F|6OO~+hfg> z@N(%aX_D(hkPvk%lxUBKG8KfC8d*vCkE9Xggt<={){DPo_Z;^OV}zvkmUGz&VdG4& z`RegO_J?U%NoCsajSmO1b>{6}$KYcN#Ha~FJ*QyIJ8bJ;nl^}_1~;Rj#4mkEdZ?AP zcenFw`YRM!LHX?t%E1@ac*P?Z1a3s$wAaYo`_(VW)hCv%8T=C`6f4$|URrRSx*Ibb z>}+YMCEjibXAO86@eKksqiQJfIEq7(>i|ccLq=RDjAne~d6&z2} zIef>xTK8ehWv#yG#fa`d0h+foqlwdr>D~@bAvI_UtNnAW4i~pmaTX_$fC+m8$Lm*) zg*-_{1*4?B-}hW*LQB`2udb;HAM^2Ep@z{u>cc{D?;-;3I8Wrcpm21w_5J4n2#&i* z;pN&M{pRtOxpU|R;WDysc_O&6qi%Ev;-1@dnKWo-st#Rf)EB*d`HuSSlRH7tY1P_A zM=lvW&w}Y#I-X zE&1!*wOzxIDcTp1z$M-WR-9oz3>Sps8UnT$Ku)UO55~)X<|>@_0|^qxKb^7~WSCDK zd_T3aCjEaX`|7YL`)*xAKu|y_Q4kOW1d$NwR-{8(N)QyJyBiG90aQ}DOS(H020>an zm60w-1cp9q{NjB3?0sG5oImv9RbOkfj|CqvPp<91g%+D-~@s&$}cSyh>% zs`AH+*6-;MQQMgr;^kRU9#YaJ>=1!1jq&~wbT-_=eF`pp&mANP6ZP#(Y|WBfRA_Sj zIQv_Z_zzLC_Xt-e6iY&*$b5EWTI8-#i(S5TEoLht8)q^KF;V^|hY?Zt@o=&W)A^Ug}a^Z{|{Eo_DyqBoG%7Q8Z zAv7Gm6trV$iq!@|L)S&-wmC@jY|83**ENpScHmy1ryn1d`C_n#Db|`lpDK z!^_=zdOP!}MZ}5lzKmI5#e!V=;l{QN+XHIC?Sv2f+C!c1)ROaTO-0|*=Hd$B+Di)G zd={zHCL_)IDRDQ{s1p|_i|7f~lLrJ_-M!Ln?)hqt6+dVTQZ5Ny@6+!$b|@C6i0@GE zAin!rY}9GMg=@sWu78etvH_4!dGb>bvqk|^Z2Ty z?Lc927^%Y3_kx0KQSl!Ty-r!|Mx~}fvVo>G&Ro@LlbPd%!Z~@u-|pO&&3srIpd(pQ zCicOxH_ILjIp^tLU8%lvA@y~W($BNh4KyEGJtqmH@sVY3%F?aWzj3}FdPh80sd%Vu zs~3@-{BN%_De#5kNsl9x1av6ycY%nuoghddpM9+MJNP80?IT=88ewGHG5*5;8e34_ zT|LdO_e%ftpGK9YhMJuPbY8Bx-^6yVzN_fbidKHfQLf=U3>NEcvJ(B)zUM9NR0X4p zu!NK04xQi}yg#p(e3GA&#LY|Sun*wn=wI>$n*=kWR%E>IIexSJY#`9Rkq9hmb7`v9 zSRIZx`l#~8y^OB(z7loHUj8`2mqmKdYW65$fN%lfzyO`#7{R)BBgrqYuXcM z8OOq6MypN+XX=Aj|M|=IcZW4!Y|kf!dX8!Tn*K6e*DAt~|LV1E(plNpHlm`MGft0U z>>U?=-aeGKJgr!0tnx*7u-ktna%ixd5~}ZncN_^OFxALfYxV&Ex0vq7J_8h;IQz^A zv^ z<>f5Q&!_6$K4!_aKbHM-M`OJHgdyU_`fY-F9B146oPFG})}|EI!49^f^ja`vrkoGN zlf$2yAo8I}q&%c~Mp{Z(Y2JSuH&KAdDyqBA)MbcF`L%|=&^uI~tS?SY5Q@{p&iP3x z`NTlrW)hD(x6NxCK>;>=$4A$$K1md6Sr{$ckDID}oNZX`iWtuSRvadV8F$LmT&4u#m6Ob-i~Qb-j<|^wNn~a|M}B(qT~yuqsyQ0g}fv0#e5|)P1M+( z{(YMpAJkS-;@JIEg(Lb*gl@kRB`_Vvz3!a2#x~;6{wC_iYWwZ0<^}EqpW|xwReA%ZwJ(Y}~7!ZzzC>kF~0)XI+$V4;4R?KMB=8l4?QRlS|-5|04ZSlj; z5f3Tpn_u{~RS5JiK8dM^sXHtG?fyRpMkPymNpJQVb4)#MFn*GJfMheFInHcEbd@If zU-el8CEgZWg*ORhHL6%sepNxHbakQ-0(`x%_KB@fH)js}>IB8oFxMXg(Ro!2UHHw2iC9@l>IpX|8UR_LE}3CA<( z+;rg`=47{?x_u2N)90K3toz zeJ`1A={`GyPycyN%=tYHz#$_5hcri&G(S}hrHuWuh zLxw!w0uHSd*M36xakAKtZzGJ78-0wDQLhTpsUGHEMS7-{#Cc2IoAofT+Txwtmybyz z8qvm0dTelOf~2+O!bKD3$g_;UZF!u}ky~DTP9?CS!|{Ngw!h-p>rcYB)0z2rX)Z)g zYah$TnU#2b7*`K_tx{@AA>FM=w5)CSP4>9m;yvH}niIG3;73|t?&WIpB~a`{fJ9&R zxAu8wt>sE(2F`^o7x1Mu;J&&ZQM?`6^dlFoyVTK4=F0By;kt51xe-^tN3Ske1l*)e zeR}~Rh4vUEPs$k~>7Nk)Y7P-RW^4niLyf+YeHHASl$v16!PLKJeRFwR^jOzNYvW9{ z_}p5%(a&eMve{dO`wvxK8iU`kHrv8`fe%a?Yy+BI3LX4Xjhr`Iv=evr=ddElxk#B| z{_kuVWE>gw`{-iB8Z~<=Vfp0t zTaq)BcD9QetNggqr+EL>z2HQ~!Q~!gThKdIOFbnyiBxcJk+%_GK#_jyi<2jZ*i?mV$m2NhiXN35oP0+ULtMF8RQ0Tk}S7Ef@ zeeS(BZ8h?P*zO-PbCr3N%nP2(bY9HBCJf+k>sq)zL{;bNwWvHk5>kijpL5c&`FEbP zRVP1mk3)cUG4d6!aP+ZMs)vo#uIW(}qP(n$&~B38-$T$*TDmPtL>YO-S~}lclF4Qwx5RZPidpjNdlhP& zmJ_o(j59b_cu9@bkoEyxd=X`~6a5eA`N;>g5iXR86!Hv%Gs3B%JrCF~N0oy}5J~t^)X6JJacDQx!yfPxO`$p!L8hOIjeT-$lX9X|$?%P=% zdiPE2T9N0{yYnvf>}%F-PDo{i*lsV@96#R-XdtC~wELkC=`HLZLWCNb+8+90aN6a? zJmNKa^L2};mC_R9tX19CbFrGOCk$8EFNl4oXepdFO_lj>ohsm9TC0emR-ZXNW}}dT zam`s1bQYd}*EYK;y=UU8e#dDFIGOQiW(;55by7;iYs#35CJ(m$T&k*5yMvKrYa}o( z9a**nZQn-d)y*1bjSjt1*YE&MqZ%_h@5dZZ@>eSzI7;-MSdYMJzn{Vr#+}Ih*eeLE zETt@t_utGUN?ISa_ZAT#FC9XN1uNJi*dQDv)?%x8X8BIWox~4rj$$PB#nq$IiP(X~@b*ze}S%n-QL8%6v~K zf6iNXPt?yj^?}YzuKrHCu+^4ML$gonH=hwL8*0IQwCR9!oA5gvtz5Mj1y@4)P^G1^ zhlA!r^2gWa-*q#Ek^Qj)5?IlrCIdprMNE($CvN~mR+i7wuW#yp4J5{6IcZmQV_EujGyAB2MBjhbl~!o+rt& z(_GXojWy~<54d7_>#915b8ge{8AImcY9{RmftEeN(m2SZR#%!FfbMI%0({Y^Ut zg4k1a23kg%{U`VxeyX(0-V4uLMJp7!mvJSY=52iq@~!Z&#~rimV-Z`;G-|&j!Sr z_5;tGm|pLpKM07r>gNk@^&MARcyPM!pzup2P67{zMpQ27@v03hg7$o47OWH>Yd+yL zUAew)ZrJ8qW?s5?kctQD_c;+_e_3Hnv@LI6T#V>!ZXyn%!dVhoG|0!B;zz?Q0dx(; zhYnEbirbBp2RZ35&$0xRyAH6VyL8+LypNCT-|n*_Vf36Rw-nu`K2I2~3KBZ%4(;cSrlnhB+!N4fl&3VdFdJ6qiVaZnU z(u=}p1J6Y8drA{TMD-<*C}=;>@8_FnK32yK6d1#!K7EJFT}$JKx%>1%1d3q( zV`M>Rl3gn5`Z+v-!+7(gi@?{>-lzuHyS5e&s5(SrI;2-<^;nt3fxW}SSqxD5ulj-x z1bLx@tpD&XMg24>5pvFFq{wqD#0lJAo<$I$zyXQzXvGYcb7dI|vaW{xD^*OI;%%lV zKc%gmA2KSgtSkv~!D|wJCpzRMX2HTA^5O%Pi;(2HbAW6&mxp5kZu3-N6FwsPh#7>9 zB^w^eAYs7CzxY9)9~jS0-+cten{e@IdwyBA;_#|HWjb#tZNuELUzYDidM+YSP}tt$ zOcNSOhlj+)V1poJ8<%atk0d6gs&V6JU1ij^Vcuq4e?s!dMd)4VH`BCa+{PGNloEAr*`KTQ1`EYifzNkxzU+6See9n zL_{bOO2hV=-n5H}fLcLq(#m2x?#l3ufSiqQC&f6Dj|8&cuQ9#sT{lPANi`H%r@-V_ zu86Y+Ah&GOCI=v^dW5e|fbvdab*CH*SRS1z_+f5OFw9f*crU^I-ERF@etLSNan?-Zo>?=zwB3rwZMAZUIYy6gbcob`D0*W_g5JTFH-aah(gt__7Z<~} zGV2N6*Wcv~7%g>)82#0}g!Ao$$ZZ`)+7eO(Ib!=^`6ZJ0%Z2luD3B9w+q|n%A`wXw z#xW$yq^&Hd+I#RDM{s^#qmFoHZpUC?(Al5br?7N8Q`^TGz7$_F)aq`xkw$ACTyh^hfRjmj% z;72518Vzy4K7`%cce!ZizOv<&8|a_%VBBivYbnl4b|IHS;A<-`48)$P${&LeNpUm} zxC>t-ME6#>{Id2|MtY)oMpcu!&i!KhO6gCiUqJOTs{Cq8po-@77=J#^DQ=+J728K2 zc|Hk>mQ}yUjWFvp-}->3_XZ9pmJ}Zr#Z0nZyV7u^1vfQSXN;CEKF%NM{R_T3iU7q0w zqE7qMlVbtD5O(zxuBgxYImA*Q48j>z7H>olnb4gkD80N9%gM5R+4i-qc9vDmkT40D zXe7DBh-eNqSVa@y=zr_A;uI$Qe8)S4hdV@FySb9lACsPyI&i~@SuSu)dzU@odH1Cc zt}f$j1Xl$)DtmEgt+*cAgx`n(+CiAHW{QlM{g&An+&sSbVOG40DK7C7Z_`}}wj8?Th0RTNAgwrLBS z9AF>=Q=GfTcN;VDFAyi|ir7x-yb_U>;;ecH$LlNLw|EB+*|CGJK*PbWAH)UUay2jU zg5-<^OIj+~Z=5L#JA*{y*D{W|u1s&aZ1pq=M2KK{Y>sq-wr}&CZu4l|3r4T|>|%q& zEq+60p&0&WH1WfO&~EfRk0SyY9dWOD+Uk3>Ba|aS0bIZJs%khM9$cj7ESN-Ig0Z@z zqRV-(2Y$!0er^jUE95uxF)vo*2nCIYk}8*^7Wi~7nhc-DjZ&*_c_>RYYN8euWzmuv_BFoF`Kx}sq%(3 zp;VdEgVVn@2B`tn8!G8z&%4_=JK*eG2SjaR*HJg%efo0jGvlS_A3b}ki6%-lcvp3T zHJtfijNi%@ekSn4&hf)1gTBTg%J+Q!V=5vTg*KWv7b!y2Qu;Po1yLsK4^&ls+DK(lJ)mo z7CU@}<#u!EBY~!WdwzHy6hoo}g{I)=MjfiX#3rl_!V9Xh_RW9nN|tnEw|HfGgXkK5 zyPS>EAoLB(3hvB6v@SW)u)MAI6-sdw>(j*mkiU;hQ~#odWjX5S+OgQhX&5WHV6Ey1 zMPHpksl>9HC5O7QRrnvFJLehmN@Oa9LkP5At3|UK_yTx4-;eWE#Gh^5IaR&LA}yo% z&1ZK(f-BkpS6oz20^$EWTu zhD6BFPvbzl)Yjy>o%v!y0P;#=NlXcIwDeh$s&K=8oBByHm&+q)uk8lT%BEK|M;}9s;d48R60Dl%2RVkyB*1tP$=7=yS2-RA_?+m|M z)$df1Dp&bR)aQk%Z<0yCao>Z*ujAKVpJbE}=kkC<^EN>FZ#cG0i(QLs{AY9N_B!7d zdOq{bo~c=}`QzM`tFiUVZXaOu1lKIbmhS?po|2cNJ(^WlZoZk$;bcg%AjElom(^OB z4#D2&OF-qaN6xFJ1%g;CgavYmpPa~q#UtjH%6@7X$kogbEQE+thp(= zeu#ZCyLWhF_kLn?lpirt>qP%}kkpxuhun$rd~@53lx4)U-ffw3saT-6H;S2oP_VWu zrsKd5Q=@F(8{ui%_%LyQ3wtkbN}cXUVrA9@h>GhP3cP)OqWK$n*s*`N-y!^-`ku+@ zj>!-W|5E-H0yRMn%^wp@`hvZA$88t3vshuIyssIznk2n+37S-v$83tKwu>@Qt)))0;x)+1` z(k|zd;x1qb$${?2^iJhk`8S`8X@>{81`5PHbDW7(a7q)Lf>BhXJRSYHi`PUS#wI7= zy;Y+kA!sE#YsnjFZfPt#oB0xPW1`tF%7hMmI$dAo(2#QV<2yKp3Y>m~;jrC}$1b3X84)F{woMJkq zrorls*&lCjA0vc)_Gu5`*}q6Q;{$CZFUQDRY$4y5332B2uXO@K>@K2$b~^MaQned% zT9L}}T8#0X+AlVLWU;R2xMJV2;z7I)rNGo%)1#(SH&q6NP;b+eDlkULPdo>U&LA8F zcvF_&S6ci%Wk@~eLowjaU!l!hD)8DcT|nCCTHPme2K_A`i0HLH!l3Qf$ICPoCWY9Rt?iu zPv^56Xo)t?y2WX??ZN)^ouHM_)6AI-R*3q2#BC=PuulI|5EF_f-Q)=;LZ;Gg(%>N- z>I4g(z0x=L?esDM9&X9c@8%Gv{@Ja`F;>~k?B?DwSAgu(+aC|kcsF8bp1jJq{W!L& zOaEN5T^J1!f?r0jLTSZ+_Zdk%o&;RdTZ7CP2)1v-9_asBX;FgNm{J0oR7*{vlV|u! ztr%|?<83k!%V}@mzk0sm7)hykVSD~>Hq{zLkxm5l#8mZ@D6@Q{m)Z%&5 z(^{st@dwaC@$pkbL-V@DMk~m}t_Gf#qjDc`G@Q1pnPJ;I8ZS44xBmj(KF{#=ad0gP zQOtjN9`TXFi2*n{gF1x;sj)-y?XMm`dn+9nElJ?-Ns<~YsCk$*^vI*Z*^Kgt-QeKV zQ$;^(<~gag4^(S!K|F`x*&T$j_%H_1RU>!D5&;evT2 z-$nchmgwaXz%_bVPzQ>@rPYgnpj1wCrV$`)2VZ6F1XBknZP=a$rS}9%-z|v=NrQUp z92w^jT_y0<-q#vi&`}_Ge0r-+SH@@qhDx@etQjyw74yxyuV>iIcu!W@i!Bv5c-dM6 zTbEIOmMBpZUwGHuSA-us2|e-vx+X|DAD@@~APz*YkcKxJv9dJ~mt)4mbRTk#tSc~@OO zDfuseQutY?5DqAnE5%VkEFO^=$ZR5>rnIyalEd} zSwlCd7%INKtzaZDB>8N0@3C96@yw-$D>E4yw<fJ`0Itv?Jr`Hb>2e%ROq5f{W|Z0+Cu26Rhr{hu{xi0Vu~ z`y7l$&DGy$0Ch719pcpSPq1P0{&T~!g-Wp*r;5N$%~HAxl1}roVWn){3EdR;cVfp) zlLS5~zG!~@neYRx^5Tty+m?Ow`CK8ce4C0PAK`xXB;m~3P7!5?%t%=l15m-e|v4d+w$Pbu8B z>X|o?tJ)VECc#Kd5QyN8;{K3Q%iG+cnSZIyY~$9yYTVs+Do4qfBet-=H!N9UlA zEdZfuM(qrk({+vkOH4eRA0LmnN!R;c!zyp*nlaq=6`^P&RlF8!Bi`oz5GP=*zCzt| z2#*R<$Og~8ap&$TTM-m@?PIcE%CXsIFP5J%=j4Nh%{%$>+arc%A%D}5(l7wbJ^jS> zZtIDc_k0-p8N|1^BRpF6DQb8uePUY*_Y)z^>1nI5d#Gg1|8;>OnUVNwH~kZ8z?L`Y z#fIS6C4Y~3K{^_Q6v{7I+tl}sdN$Zr_IdOalF`BwC6Cv#x=Nf5Mg9fO*uVDEl5T#$ zqUPS`oCH1I{o5l|(C5_uyxC9zqSfDL_8$-t!07?!o*g{P)Nf!!0)~lpo!p=vx18pL zJlj|?wz|vw7FhFg8VO}C7FpLjO!4y8p?Bsv+Ju$wto&A0m)y_FjKzoi!>y^B{#MVy zo1bRy5Om*!<=yzNzy0+FcqPSi{+Q(lG2K@@;8&fyo_|PsM1xkQ6jiw_RlAv4G98Gq zJZX786CD!eep9NazUD8419buZ4o{rUX5&>R$RzT0d1d3jVp6U$0s~7E`%8yCRJEK? z9Q*5}xUac#z$1v$WSc&O8`DbP6l_O>uD8u$tL7m*04~m5C*GB_kY-9B>u&o7C`+5@ zw>Q_Y@BEQ$!4?Y8b@qA|}xuL@8Hk4<>=>{J6KhIAI>V5nRpm_aH018-Z z>uRFUb?~SzM_C+wZ}sD_R68;`HTh)U{X?N)fsE^y<=;ilMH^5ph82aIRP84j0%rNE z!+w!40lqQONKP1g?kLC8l0)rxF*MZ^IplxKi7wxLwS=l}bsqQ~km2XJU?CvMBLhWom> zRNP}9YkxAw$h?MRKS4@6)*VKRpd>kpq7Ar78Q12cNdorY-ITp|3JF#6B&l zkKH>N6Mz+|+K+JLX9#W3j+TW%tBLhR)V|3@A3Ksf_^vv{K6eNj;R}=rA#8PPaLD*C zTOIcNH{DxnX*iJ_Z>keZdtaVGeKm0*L0I3AN&s$Y=dTnGd56gnw?-yo!3v5^zFz{Qa~bg;5|Cki%hdtkR;2Uh)~6C6pi6#c_(v=^{Tqf|(W3Fw0 znW41IIaL9A$i`}XsxL&F>Jw-9XL!c`*-rr^zp3w3D*+0e!CbM_KkbZG#Ylgw`}R_5 z!0fGurLADEKe&+lf(U^%RMTuZIk2g5-!RCxJp>KwOw-ZtuM`|=2JWMe{y&bmu#(t< zCr974Ne|rHPj^nCfBB;}sXEiYdBSF04d*}zSQ$#K0|gyp3r>*usIX!so1BZV`Da5d zdm}`!8zNINkq_QH%Y6(Ky`OCo8~_AsX8vJ3M!rF{doTH)a2we_@rfnUM_MIT=h30|Kk1a zl(YNT6v9>v5cm0wSqhF`G5R~MgRc3XY@ozDR__lXis;89uLWw4&!j?UO+l7XyRyko z^i*9Xh)@eav35%ErKqiiYg#$M9MoMA^p8ydlKaR$`pdBWpQpmF84fFrBmTdqLYYDX zYb56p(Z8;~HAKGx0a9wyu@^q9$+m@4E35?H)+D7h1#Fr3>Ool}DL!gpCx1-~q?cWK zgMHwN`98lm98?gjCKJj3xc65iA0l+G8*u7g?Qc@?pI%`fg5o6Sya!lrDm z^EOxbgrlkblhHX|{^3rkYLKz(08;WW+EXBDos4~cl!!M0^>e@O=MyjHu6$YZZG*3%S3_aZ{TlO5GHkR!Jr+DP6|nl6pCzI9tQQ5sjdntg!Tw~iC2phI z?>H0MqesmE$OU7W`rQr&Rp|TWVTVf?oWZ)6)Mot;tE5(yx}|c-U%;2e zi-zCdarThU6N+y9I`Syt|LHOI{k=z4NH+>T)0cSE#ai_*m^BlJrtq1+%zQuVi^UQEQ+QuaPpj7L%p^iB z)@rvJM#(-6mByL(;4?QN0aiNpAi1@EB#9q!3UTLueFd>d_>EuihwAk!EEElGrM&+< z!`&T6GF&)@l;x=5HKAG0Omhh|(75XBT$buZTo%t3_TMp6$08}x@I(pTKlcHer|_+Y zTW|&b7c>=?|4r}^YxQ1CTszky=9CDHzKP4t*kcGMV7YGXi;Pa+x4gByhA(N>xC6JC z%zXiKd`;{*{JYX1*IEbmbWyiXGgxkRR~2}JDS(c$?hZKke2gu`y5;EI((e!h@5qM* z2|~j%xC~k}c0!L6Nx?U|SxlxKbHC;wYTF(Ht;KaY-2#ONr*Y8Va@EhdE=t^jJa@N` zdL^+`OMy$+(0Z_A><_=pFUR@d3N04jK9{t(0}?mZgv301&20Q8+@IS^{c*2JZ&lu( z8pbBwFMN$t9v0?J^6r<|JNt{xIZ0s`_za2#ZllzvKcm#!cd=r5jdgEdaf8ZQPTR;F zX(!mFm&RDXG{D095^vYu>REl|M=JIpwL(HF9fGPY<$F!2Ny5P6ZcJO7_h7>{bpKHR zaRUbt>&C9XXIu5(`zsxbjdN(`*Vu!W;vPI-_vFNM+wQw5qU8knRHK9Mp{q z20BgI5LLqZ(VOT$pWOV_+keY+vIsb*iZP~Z({FbnTw3ko*R9zB(<3WJz7)Xvv{zFx z0!Rt^NL(atZHSke!Us@S=i$$<$QvLg>~CXoxMp&?3gTljA=l*x zitqYZn0$VIc}Kygc1I{C4-JsC&N>gcU}}UBj@_-S&oP*5_G_2|U`#gG#(NK<3Oi;X zVkttx?E}o8^#+4=xiCGD`Ni`fM=1shWh#mXL zf??cLrKX+F{BX+^*dmF7;kqOGq+cm{278t8awuN`Qx?sH11T^VYI)hD57%Pi-JJlK zp!$<4>wo#@)fXqq@?%zA0%tz5@nV}NxU)1KN2_OVrem1NJ748IH1}0D!VVMhnsFxz zS^I2mNpF~UMkrq6tKgh>)PFNJKj94+ufcmse$OiL8u!WHNmG58uhZj7GvK+h8OEOCh_xrFT$M)K z@~VmMKqQnxFCl7T<1Jfq^qPDmgBz^axZ-4OT;}ZuU669&41fiLr zDtx*%TN=3)2s8BnH`gM^RASsUGWI4qtMr4MJR` zL(Axx&2-utVeT`{&8Xs}mUYo7KSrL8CUwey#?LiQ*TPfIj(15+bf^LUY2LkL$#-y( zV2QDo#tU9Op9JoydS2o8f84zmbF%NVBME!o`fJr)AL1%I1-PyQX3Ut8sdOtA za%$PlsiEj_Y?y?wUM{s(S{A%2We_GCh5xN}MnT6p3}A+=Qv(>1M3!Jxd{@?(&V=0J zcthr!WviRya%ysy$oP7;aS?~WW{4mi146mo^9gqBtY;@lcgrkEc^xWR&8ev=0tNhT zuacp=XRv;oJXXEX@>$4V756M{T?eP)FA3kr&96E!iNd-3vT`iL@(HP%{u|^`|!t0nYqU|CPUC_U#J2+ z=i}7K-|!rd{@^}b4GiGuHa#_TJ2uVllTz0_YMNL;U7Ddb5$l)V%(XlYS=M7-q z#&uvV7wOGr`Bk}{y0<=l+_b};CsQ< zk97haWI<9RY8ssO#5ZZcb|WDnfg**~rWG~c`OxX_H|pT!u?fHAE*Yo`$&*=mc#0mGpw3`bqp+25m&gAdpCM_EHZHF$?>1u zL3L3_%YFYG(e&orXJYN@Mv9&*uZx=_-OlX#4%CMPZBZcu@lwzt_s)p;(N+ZL>`G ze7Wqu8$eDgWo|0I>*laa_XzG%(g2bo{A<`*sAlhc^?%eS4@X1)foDM%b>Z@xD{V5d z1t~UzMW0&oBfPpTtdxm7KJDdI-k%&X@c#HK^^Z(qH~~_<>tG(@fL8n%UPn5)kSK?2aRefNay~br;4{a<989G>83OpAFhL^LnjU zc811B==&C9F(z-L&z<}@P>7>D`{w5S4|k7!g$5Qs-=5pcgycwv207~<_j0>85wdrp zMw5JE&k&q-Ul?W`Td^t6voOt3?~q!)avIOe+;R@%^;jzy&95T*i&{FRz|&ZN6(>B3 zI^e3}B5tgRg6jre2a(e;MiFO)WGr$k<7ilJ^M;*cQO<$iec8$Ffcl>e@70EjKahs0 zXD%xRu%sgKE>l)_a^mA5dAxZgtAkoG+YE?9*VVx`xU?7nHmH@`Ak|`0hezxcJpT2g zA$)=EZ-EZ#3Y;l7>}#y(&s+R-VNdymG#S0LZ7xdDM9~swd}~1JKv7kAR^~~>`IJF> z5Mhyt9-|U|+p&w({L!#xe5M@5k(hl8ANAB*T4oUCWq`k14H+`<~9`G?ASkC+!wYCkMp| zP)=jC4u|_0hR1-Va+X+3O~bb2d;moZ0rNNMg|6sKD48%n1X+B!qVRluC%&=GLkXt(9LF%(Fyio zN!XC@+ie-Y(XBYSvUQ2uqEP-+tJOILmEDDsIAb(1 zcmgqNPDXlcV#cd3{MAPSh8Y}+-c$FukKoylv$3~#2d-4WWQ3tjjx;{@)#IwYziK9m zJ)XyafGHae%Z{pM3fxvP*tMREy+0=lo)QfI3nrk$nmI1P4~IABkpXo-b?rpqNc!Ps zrMja|aB{S*z6Zr#18|z2GGLPm%8Ab5w169EmL#@&-JGt|q(fJx**3*e~a8pmx+@xTx2nsZc^rjB6BVh?=?UK#F02+<{O!XESncyX+jw4AKs zY~`w_a{Kh)U>Y{-l~*P9rcpU+$(+=t4E28(K`bl+eY59Y0HPuyvI}8XXR8G60hn@u zuOD=5;xc&6V2Jymhc~CZ&9j0CrP|zwNK*2X${!Yj|KEkMw_92lDrITOhS8b=IAb4G zJ<-{M2WH*HIoF15&qnH@Ju`^;=qm-ap^eT)EHt({g$End4}i4!s3Ft`EQGqNxC45t z4kiw+S}J6dVSNJ1+G=GXIkUNo88-DJ{uvw+oDUvAHV37pmvOA0G<{5-D~MW_e~E3@-eaz{>`Pj~`li6J zNfLLV(S*x731wJe5pD?T88Kf>>G+w53cIom5mMRgNID_4RS;&Zr+BY&2*I>!Lh_Fl z80Z=da``}(a{JkBXg+AKD(l0tQ~H3j1${1)Sqg+%cm<#F1;{-u{;|peWcJAcT+A#< zEA*K{p0D`3#=EhpQKQZ;C%pdNrbE0JQ z@Co;*_?H&|aIxG~RaN;KtgBUn{PU#+!T)Kk=4y2!F0;H_!SRF+RGu0P$q^%Jl&A zfw+W%0h(i#{k`yJD=Dqrs>n&ZTC9nDVJMmnmVXJ~tQQ+1wl1@;2=#3gG?5%(%D%v30F4c}y= zJ|LGm`VK5Y`7mChf~eoVZNUVZxC@mrq@@*Y!tP;&Ef9i2Z#BaRChNHC`$WBEc#HY6 z`BBZu1-w!Lhu)72+y8@7eF6ySh>dP91MFyxkKJ~_RONU`kci66CpT(alo3pqkecS4 zi(w+XdFS>Q2YFSUUov*#Xl-k~VKp+^(?rN?8M{nQ`tjMEfsp7g<5xCdqYZEPHy2-HczGU@f8P!pl_O#!T7kSR!{Oy^GksYfd-~d>&WsA{8KTU*XYA|t5Km50pix0 zHx=&+Ld{WAXCm0wxyg(OX>wO@ZaAtE)2ff(;3s=F)}N|Ka!DjL$%MW>x`LrLwrb}2 zZOelMyzlP!&{>Y1wr$o8qb3Q#+?g_BWpaH@T&O zYRqM&L*UPcS+{^QYm&o^T78fn@pAf7%+;6SjlVJrCBPQ<*aJ1EyYPm&gb)S#VX=z10XT?VWMDfQ@Rx1e2(a&y&rcAm!w!X&t&3-qLIAyyd z-Of708Pm;F^JC~j%}Mu;{m?q$8C3s8K7T*$s!9Lf*jTkpYg;7Uy&ypMmj|xlqGTWQ zzwM&H&(h}6y)%@cU@Of(a5>E%%9$`6lV;yK!!olMI4-8bR)b~t3Ct=a4)OXFU#b1X zV9gUW7RS97KUij!OI-Z9o(b<|o8fzM=nnkWu*B}TdGW(&v8h3Z&R!M)F_Pr|d(=>* zMRS<}WACEIst*87eg`|%P`A!f6`)*vf4TT0Uf{gZ-kVS%p<9piQkZ{Wj-K#sC}Zb` zJ=bE=nV)a1Hwg!6%o81lq}9V8oQ0NKx93Zqs3+p1LMiqpf=+i|lMGtz-G zvZX++#;sb2z_|_c6PFBGN2kNvw=LT-_m+fe4@Zc#l&Kd(9i|;QH&#qFCv6SP?O%&; z-3c^Z;^GT1K`blmj`Z+;(v8zZ@oaW|R;siJ6aQQlDrmEM6=7=L1rn^ROH_WUHSRQYJBbOVh zf_V&1!azD+wP+aJNo`v6r)(&U%o+}wZ`w5&NWz1AV@gQ-BlN zv7x~?YsOfli`1$Sx;7~*RJBbO(uQ@cJP2(haku3^Ylc5mEd+DCBU?9LsX`HfpWI4e zL2-}{Vi<_s+e{aB^tJe@y?O{u<)|C%EGYixt*dHOae)tCYkW3GIu;82iuTZ*;kmb9 zAHxD5v2gw3LxNveiq3Tm$aMhQqaDUQ3l?39!BUTu!%jz^_DA{&|Dygvh=L%6OL=}UpU3S9w8*Fm`l77~ zlJxqL%K)HS0W06SG|$zBTu zgg%dNcQgkCE#|-Xzbah}8=->HYTBWGg$-WQo+3fB&7`ZbUQ$2q@-Phf=x z!YT-C+rkH<%sPpK>V2#(!};4lcyuFq_ylP8_hpIy&@|tmB>Qzp8Eh?b@O(o6 zm=A*?F!J+T{0u$UC2YD?5L()Vi=Y1i6sVF9`U`hHvcVxWcHPiT4EhGO63%KEd%t*C zWe=p6|23ta`)do54KyI*HMbZJ1cmQ$sGi@X9b0MNxos zD^&zY(#kXA2n~V*U@PcVI}dN5fkLC;?K;Xn_MQ}}_*re$V^oM}^c&#?`iE)|Um7o) zkB`Cn7IpRr2D+H~|AQzu14Oz1b42==9hCt6Z$bfRZGcc9*Wx)WfHVvR^}(U&_K$Rp zNL9#l{KkMtb?a3=VO75LRQ&`oS$kQC;EDnkL2)hr^8h=bjbN1G#>W%oZM7Nt9CNcC zd8K0GvN$dHi3|U#CqG23Yn6S)!Kpy&e-8IX&)>HS*`UQSr4h%c>WQ`F4a6n2)q0a1 zZq6Ho`xY{AUK(*pZJ}wUygm)HupgCNR=~(n zvQ;!skZw^8P!kRtyoSno#;e_VcLnSZ6IQtx)a{ zq*`g|RINlu^KW>vIBBJPF^+7a^qz$_E~q7qpq|3ZY6NL07fr?NVqmwv!AAzI`PSr- zTz%y}(c4KrZBDr)nh!X5*xm0OXVTsG+?CM}ORPi}6Mx5!ny^kCX$ zYre5ba_;_#FFTji8F_1w&PFVo0bM6z;p^hpv%BZvyIW@1uxY&46+2?DxP3-yS)@(A zc}}C-C~Z#>z2P#bMEay$h(FmMk@>CWruo%{PEv1v9W=~*ZpIc2kwRfrplvq=OI5Yz z^)3u--l^zd85*2*1(N{c>NsbQ*WRE_g*i0i`Xh5+NPeVR8lQZIg%yRq*WqiT^0Z*K za@fN{=2Dl@Czj@gZ7@MVl?04H{k8DdcB6KOZ6&9KOs8<Xch=cW3Fa4C^`RXR z2}4)MdwsOod|alfmjW`Vud=`M$q}$H?8AD54K49W|Ax6rS0KSa^Kc;UAf9Xu zf9o$u%Bp2g_0=T2{HOMwB#>+KEr<>O;wPtA{A8?D4=9m7F?pM$aDLu;tcZ^tD^RZE z!*0wvZ*_wRkqRUWze>-jSE$eSEs{_8392Xk>%Z$Z1t5!<&3uFJBQBkN;$S2|@;3bZ zTh)#@0$={iKxM@pZ?!K_8z5BSzeYE=-A2Ud%G3BOSld^w`V>~&)pv7&PP^X_&mh{J zLP0IT)mMdc>iw0gyyWY%ptr-MOFR9IzJU0HpBm~U{+yD0)KZCG9B=1X5xoC)$@d9c zw0WZYo$}ZTp6?Ldh((%tAzj%(F^_kSTMNOqu6-O2XAb88gdFhRiaH zmZ6Y&9S|MuUIggS*xqLDat zrnw~L?Rz?7O2<}w`RXT|r^gsB&%J5K&5Xd7&Xbd^{rWH#i2pep-nFK}v0&`1ULyJP zRO9KAt6D}`hnm7?()sqnCR9_;2Hzxh__}dH& zpGa&w%E<-@a8B$xHPQcHx1*3*V=k~}2!pUt)hk{15eS%smj(vE;o3H$p!ARzZ)SZ@ z$4b7P_iEEvJJNRP2CI-PH!H&{^*q6>vj3LV8OSka_C47I+w8lau2W6RyRsf4D5P1N zxy!JRlDX@GUOVVp*En?byVoi{&lFw~deyZi-`~&B?=era@GC|+-s5D?mw+4KFJ^h7nueySf^*TlvAbhjU*^aZ#3C2dJ{1Y$Gr@p%yEfj^Pzd-{8M@q@$ENPTP@ zCBQ8oY1-5YJz@vb@F4)x-i?*ut~!b5;NqvNL}>GZWGi4^r?Y;02wO1ULK |K4W2 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

LAG!Z8vBTbUc={&?tORVm zD&ym|@1W2{UKTVp-f2E)5lUzx#etK#NmZlo0-|=xH7ay<%e(>*t)9zBm)U5{jvQKQ z1SQMB`KD9rP5`psC?irlE5zd=d?jORLm}oLB3lDA@vQ;d7uvD-czG9;pGQQJ;qSW-OL&+XhE*Op_?{@hFzL5+i z`@ToOnOKPr&J%6agx8k#4*!r&Dxh?1hH|SE*|b(#)c1Zr-FLXr*-F{5yS<}Dc9B=z zJ(P<2)?NdazX^g{0cFB2ld%7Q`EXOua~Fq?ZDK0{wT3X{h3ACx*~j(*>r$2i0fBGz z#=BcuT&75b7aPp2zaIT4G}p{Eiv=M}=O}48Agq>1j>|6aq1;hi(K#bwMAqlj+2KS_VMb|^n=ckjjHWPk4I0yzj~%~BE$Y$)w?QrwYdQg zH&3nij5=<%**GWt@kK43hfB-!^Bt2X>oPi*CtPCrqVjKH3wOA*>S*4?QIL81fVCQkgT@ zdL{xgNl^9Oc?dsv-{N#MX5^IGdNeP%KrBN`xd#_X{13XI3C;5V=wRnUPd5%))I(yo z|F$4t7^zKuVLSQHx{N22Y{iF`(_E1L%L}{=CYZABI!HrnfsWFIl^K{?A`jn^;Q~%K ztLxeC@t*}j zR6f9bo(*k{kyNyI&H~F-0h->|x(IHze+yo6qbQi&3hRK-{9D@GsFre<|-Iy9lL>YU6XfS3P@{zvaJ*+A-}C8%T!xMTrMo zlvYw#w<7N-x;6YX?gM#Y#wxn^_4u_1MdI+bHolAn&I#Cdc7&hjYF>hCF17uivce|) zZq=zmB}3L8hufD?W*pC~XY_0kM_FeWz|0lNje%34Hksb4Q7P!4HR7x_I`)7!fblia z)IQijnAem`c+{3a?S){6gC-deLe=MsYYFlP?`gvcXkLZCd8A7Ahq@eHyiE(`Jw61c z`tx&Q$4+C+onUNO=@Eo>;sqd$DR1T#;ueo1v+HDRn&CUxYbgu-P@xJ7EK(~#3MW6% zC}>edG;toCTfFS233fHdrPiU`kS@?TyI~%AKWaj#T4GiK$;$qPESNS|@C^06D-PTy|)YhJPrJR6l{s zS>KSzE1tz3HBqz1yN`Nj% zCgAG^APQrb z#08jy62#*H91IFu1(cZ{|27w0dWLd{I&q|YAs^mql@t8V1tEqWZ?~bKTTHPeaT-D$ zZnrPJfOG+`r=__&@jw0Fs2Rm*P$PQhNCTTSc8o*KcI2El5|mwfitgKNz{}fzcgmev zSn2Vb33@BxcQ)23SZsUSTz={)XY5ZOS(!y;C94o?8w2D;t_bD_e`30F}9?j zd?TA`Z`B&uoGKl(upet3#B#ufDX%*)6aDWtyKh$1bxkUGS;{n|pIrr<;0BbPag+wN z*nm<0K8e?{+E5D*1+bK1exDx$O0H3yQ2euIs!S*gztCb$Ge$O(V-ve5Cu2(a!iQV7`(LBy$K)ImQAQ^E~ z9uq;Rk8j&k2lAYSJ0XOj{y3Q=vQeVY@V#q8xyE196J~M@_aacm{wqF%5`~dBQpb@D zcReW(@EJV>J%WMc3CLlAYnkAN0qi_Y z3_Y(7r201l_iG!gd#tj7P3a2j=8{~QuBl?{RjERQQ=moZfDdH)A{xCmJXOPg1cCUF z1wbA4`WCbQ^mEED_J0YDgL00RrP!Tug$gyf{RN~cbOFYL|L(OaG0;|=CC=CZz%MI* zpi8A&3b-bpx|bSc-hxl2tS>=hbAX)jjFvFigu)gIVwa$Ff&dBfR;vO|KUMZydoDoL zF&^Qv+VB;in$plyIR>2c3CTM$k76|NYPTo0M(ve`!H(2&w9hEw4kKLYQa}WuB`up6 zB5>~qC1sxed&8$hscyvT0!wZM=^zw)@U)#|2C!W{QZd0}-$6g~R0e>_^6bIWow1x= zfq}b?v#GpU-k(Q99fFr+zA?ixD~svA`F><$-e$jJ6(LL_5&v^<0(jO6qb0G#k)!u4 zu`q(H%d{ItVE)zY;J@D>U`PF(7Nb9*G7)7F3K%TMkJIZPA)2;?^EC?Oh*q-tr5WWb z7r`f;j*38@0c08fZL0bL95}yo|LV_HfT3-vB6zW+xLq;~u3V_auhqoz2$KE~C~Z0? z%^2TlkVhQxjPBLW20AE4v&>UN*SMP^(LA>St6w1mlJ66HcL|4y76z=S>?*K?BsA4o zHbI*{;QzagQs4nd9t?Kap!=$(0FPe;Zg?JAi*i1ot1)%!6%o%4_ROv4`vzE4Jw&n= z>T8!wjbe3^fC;Z7i+r6T(?qowlEo9CS6}JQH_b=TeO&X$|94AaSLJ`CTxD?t zh`SMQuNX7!#+Ul8=j_#Akzuyb`KiHT!BRvAw{}iZK3p#u-T6j7?77!uC+Sk$sI#)M zsn9$2ASEmKu?hcR_)HGFU+!%?rB6@mD7$LSmv^?-K*H&9^GlslKaKUkRav2pn?_Mh zem#Ei(xoS{7iF_~pB*|PnGvF999D%hzD4QO^{(^XrbRg3#u;IUNZ`#jr9Pleff2Ne zCYbKZy}KW9AKXtegQ$i`dm@)!ul`Rt(BW$oz3RI_boqIu0r&_8m9GTA&y>q6)qz8d zYGH|nMb1mS=%}Jko$4tPY_aF6II6ZIX%K*?hY3-7flML@^{LOH6UV00jxI( z^dlAzE>YHjL*TOIx&sE;;$}~RGD2m!M8eE+L>chk0hMUFVV1?-KsM~grtz1b-k@<2%qh5Rf}BF_Dm9z-Wq@}>PaOl!ufam6Hw?m1L= z0m&hq%NL?VIZZc=KJYxew6w?ln$=tFl_zSu{Ry5G(F~ju@ChR;0AJ4VgKiva3+8@_ zRGbB4U~yocqnb*4m-4lx%%2S9KY*Vm4tb%22iTrat$_G0qwhCh@nHay5fFmX1qgpR zie|TyJBLYR1zIt zj4sh-Z4HtP3@YNUG)t6ceND|hI(t1RR==!Zu|L0o*H5xuZ5A%h_nduiBVA!_NxRq& z7HAX@>@vpWqz-%)xGCf2APV6j7RtZE6w zopAjXG^k$@)yfN7=hRs%kh@MrKY9#^Y;}nXGA82mlSP`mX{-<{NGVXRJR7@8DYYpR z#|)$0qEIJNSp-JKS3)4&LL0F++^@C?9g&U!NFl*!He+NZAKqUmwi`%@)>!V5zz4hf zUtFS<>Wm=kga=O*g%xFuq>6ME-}G3>x(_(+Zy6nTd0`v|*bdox2)4zmVKe6;qRFd9 z%fH}+b$M>%d@gyjF~`a z5>mUk6&RPE$8Zu=%3(mIob!T=!x)krf`xLi1V=M`qS?X(cLm$b-JxjOvHK<-yIFrZ zTV{C*;;<1b-QrK>K{wM3C}){&m8^k6InpOj;8TYJdS=UEL0t8**E$6^4sExdF@NF! z^pz6Cj}>4Ny`sI{NcQ-#s{Yn}x{^PwHLtQbenAc#%Qr4}q-XqNUT3~@&~h%%axCh! z1rV-EELr|r)Pjklq-0sSSxd6zu1ppovutj8QyMQA(HV>2!2ov%Wvh()S zKAJ>B%gGT?I<)hbZ=`?l{n;A?tQ7EeU=sE6r-Ruw;NGF#>g7rXL+TW_2KBKqLHixf zH^-5^CF&y!@{dLez?tKc4wNg;fk*JalstfWK*=Dk(*(T-0pRd5&~AzVFEHLD;Pw$K z3n>B6MnCbdv;(|bbOV(x`Q?$nt4OM;rWico@W;lpaP#es^uKT0aLxI@t#3bjrkDC6 z6RYeQ)T9W;$U1GbR6iZCOj2BMn3n>IC;4)%Koin5E82`?17jeZ3?OAPY%xM(x$H4O zDW-@z3%CZBxbu2qLgn`XXCnw2cfDyP6|28QSpl|hH zd`ETbod^CNklcAY>iB`Ou(Ynl>GN_V{4{_YmR01)0c~}9{lq65ls&}KkkdVw5Cy~# z4%Fajh7h0Twfw1(BI47W{12Wc2$?&f7zRlplWpEaBMG2)PKqFS3GyZR#>$csAL{Ji zhZ^*sJXA2OUX#G}0xRx~;stR-B)i2g4d z;=d|An>O#N=*yi8eXr;+aA0*}4z@_FED7^rF+rAus~cn3N*Yxc~t_i|MbC4JC@R5ga~E7y#hXD}y6l?tZsg0FlX3 zJN+-O+kddJf#+Wti*(==IZ9S+)HwNS(t#uyPI_h!yqY*N@c-$P2fx8UKcocx+|Y|d zm+0Op`U(7_53g1ZdCIc9H)r9%1#%+r&!C_6S`-j|DxhX(Nih|%)Lr@C32{pzZNYX9nx>zYqn|Ml?Fm&dIhct{M6f%+aaQgV9n`vT*{Pg+E|i^odc}Z!#m8tE008C~x1cSXSE%TTq+~1MP;SRxEOoYfq2QwvMeG`wQ&|jZ|ZG%rhW0esA$`fnA zUFid{*+dP6*R)4+{brw}$#KeAk`GwmpbDrK>1!p8{5oL&-FaE^=WYmr|K&}ORJ1pr zhy5w&4n1j9eE<|upzZqfdkwp{_#yLa2arf{2vF! z2}$utQQ8A=N;fK?vPC-k`rR*55dE&M)^76a%|{V&mLm{0v=Gi22m`ti56|CoZEU(b z!Tv{kgazO&Dne{7>wko?_IO}TY|6pNK%jsuOBOWje@%izaeEY%7sb`BBsAF|qKC=^ zP*<~1w+ux?f~N}?u&{fb z;{=rDNmY6_w5Y}i7f@b-_v}Y8IJI@(BUMdX{bnC*@*|GkU*24_R1VHJ2pP-2=_tA^VR7#SIvEN_DGcjIp4 zn--wSWn;?*iA`Ft7z4kZRTsrG4I2IGXKG`|cKqfNuTP5WX`y+Fle*IpVOA4qotXuji;q5^+zZ-hb?q zhW1YSoYVl8SE9tHAh2s2!wRIpa9F#jp&vLo48NZ$1+(MF{9QicF!hc)0Dw~BfE*iw znY{$n7((+afVbf__^ru_May(x*!-sa_e-+JFFlIqO^7F}gVskcW8&^)|L5-fd$ew% z#ZteOUH^N^TLu%jm14whs3(e1T%&viDSonX2u#l08L;`ftw3hZ&bC2|+L)~EN0hCo zS&98ltzLo#vn#7J`_p=NMi}$HlpGufv)aPq;;u&-VuP7xG;snH7*5~CE1QdXu?>sv zN0*}>;%E4>-3e$Pl;7b0udUV)Oi+q|YMjB$>UMa)R@A!!*1;uWP4@1tNB~%Q3H~O6 zm)|XysJ!3s)=YAJmKB)3(l~19W0FlY@XBHnX&u;ABQCwUR$!vKnco#cNY1LX8+kGm z1qNN+lDu0{G?RU4+fJZo?KfkWN&?~b?_9XH0sA?Vv{J=I#`Tx-CUN{8bh4R^WOp5# zqKNUL#6-$;Dz~qji)mp4Gm&U9#d?Kzmc%qeVUn$lpi{rij*A*~i!LP6*vAcw5M1lw z^hOWo$!|*e1-M!5eZJA+a7sK!1d~L?knhsb3~^~}JYyQ=k0+K*FM%i4zqxKdQsN{X zJG>Lr^0Mv%70_Sg30!X`;2;yz0Ke?t*X8MyAaG|-x61n@rOEAn>(>y1+mALeyB^Tg z>AMjHKZb53umSIZoO^%Cv=ki_C`%w^8!EC?NIkT5*x9qx;P<$S;bY>8C7lI!tv{FB z8fI?lm)`|Ptt-Q%zRBbLj!+8(+l`Y>*^@!iz+7y7|9$kNQiG0J&3*g}q|N?{I4Cmw z)cumC&i^f7&;I)Y7AUo>&tuXfp{+cBSa4<&y30mEBCO!IG#x(%vd39sTe5iu94=#z zbND~xjAatf*&mT7%=|Dhb1N3cWH^bf6!PoF_Z$Nx(NY&VGzDk0G z{`*Pn7m(C-)OxbgI%T-TfjW%%jm%trAw$GnvmFhm4aA9iHcxvS53t4xlfj!n0r~La zFK|2(b&h~*pqo}A3(zdXhDw1;L^Mm67noLu6LY07oT=6erWeJD`VFI`htiKFOW8m- zLG}M~PEp66*Y&t?4XsK%1RxRP?E;|65)J;JrTcqgV{*_CB;}aKnYIc%kFv~s6x_0g zk*3f556gV!d%Y1&1_TZiu#+Dy)P|Y%@NPhU3SGsh%*VV3Azb5K3A`rN-c=?x{$PP1 zGdJQGaQV+$!N}5hL~?L0KYEvMIFf@Cj?6H^XIxru52GpNkM=9}!`d_xZ`he}fs)5p z$z2ggNv$ai@oK~?i`p-Z@r4I6()8O>w`FcFBc^msviGYiYe)*r;n#P7~YmC{z zjL$Q9CGPd-GB^_SrFp~8I=qcxCwzz_8djm1aI{z`dw$*Kg3an?3tZN@ZH~mDH=09w z0#?fLt#7a5mpDP|T>iS{nz;5FgOFV6UOqLd?Ht8Tf2ziZ-2?U7If6u|%pzdT0a-~~ z+*O@3+(mko&svv4y;AtiAlRTvr()?%kK%36tG%aMFsr}|o5j*s9PO&*3PoRZq_N(d zS9A#N9hqErcd*;VwAca={0ubPLT?IcM}0$WbmK>u|K60v!bIU?Zv zY@*sO%*ZG!_F16hjhw{UHd_6d zd^$N?_d15Z+CONpz7(o>H`JWnhvYkF;GeXOS&jL|rpHo3EH3{5!$F(?mGdJRVlyP&=Oyh>h_OeGZ zJ^ej;O)UmpP3Jap-AiY#(t9fZ>8lM(*m{xL)#L7=#*=a2y!fP{v>|AEcu8kgqUeOD zzf-=M^nEGc1oNLx&Y(JJzn!}2Mz6yNQaN#YqRWLdm|HZa0}sQEv&DtN`Dw?Mj*mio zwa{p9QJZe!y}~Wier9I##E2b9-H-m59qMzrW|MiRVUFz&l<}L${E<(P(5m^RvfE=q z*I8>E~@<{4l=JIO2=iq@wVrQA>ff z(IqYz@ZYZXSsb|H^?UB#?tHRY14y840Lq%ZgOItsss_%H3THMLQEk#_H(Xf1uwd=9 zSCmpg7e2`lJlD} zB)3UxIc{MHWDR{^+rNdlm2d8D_GLy6^QZ^4d;5^2!oG`qC5f^n58zh%>{-*56FMtc zS02ig%U;OJKTccD5b(efE~ZTvWjpDk5L2awq_W{QQM%!qL`?#{Eh;tSGQ<37YIk}j?*yDxjHT(3<&MTA-}DFM?Y-lM+BjH$2K<(fLlPdcpH;W%Ao{E;Era~x*<+Ak5z{X; zG$}N}VFY?LqZa>qqdMoe8=7@MVDE3E+W)|4=4RHpPZ!C!T0m0V?t0@!1F_Q7#t*7| z1WDgcL{A$H8>NSmti@(oEj43FZ-YY!&-$u}?fR%^Xx61fS9 zAgymce=-hON79;O*XipfUSCEfL{p!xgYU>N9s;rVuN3(VUs5b}$ATm(pfh5z1yE9& zKW?Cp?I|pEWFf5tA%aH;PSR_A>q%DxHK&lpi&?rOZ3>%g36E|;k((1hj(;RG1?azl ztUE8CS?f_0l2KqN7kobD@#};DuM{~#fofsh6(O{DvSva=u~VZm15Hod)3W;`@0}8= z3Go~TlCc?H_!>4hrrJzb0Saig^kT}iPf=9AH^9<%a_^GfVOOBUxxUAwy$Nma znRa?$Fz0OM$SRa_M0XN#XUj-gFl6ULvp_Mthe^up7`$f z+#>&yeL%%`i5zjXb8v72Vx0G&i`bX~bF>Ae5n)$OE_FN!J9B0c##?CpoZj#%7g;yoy!n*@S`Q72`MN%Nua(2gJp%h(=Pa*OQc~P z-yY!?85=UbPkpn2=#w+C&8(+kKm2!j1h(yMrxs}kIRvEp1*~b+Zcb+L6;ZWW`13@2 zk0s6la#`8Igfci;cu9Y>o}M%wu2%I=jlDOL&Y>{WfuFF?u{NHb95zn_Qb^3*g?uf2 zvnm$ZxC6%Siz0n?8nt7$X^F-+$GgZ9=G4|qDnfB>wQGQ+$Om&duM zw~pCx!2mSIa5BPLZXAkZS`S3woqNmC5K0u}9nd(jI?1^%92P?4C2x|9%DJH;2=s^y zhW!!BOT30AlAMci=*3?`u$iDhhZ^2v9a0ExJc9`WkX;cXMp>+Wk5N-ZPY9M3Jw$vH+z}4x-NwYIby+o+Qcv#?PQ=v zO#->c9o*xj{GV|AaXOynhvW zo85HD={im;EA;L!XyBI=r(sulecT93@_x z`nKZ=l}tt^_2068x`lU#!Dg_j%Dc@W1os2Ri3zm#mB(a()(EMbl;)BL?NI_I$lsfsM_Y5PU$>JDkXoZZLv3Mt8wDvX8J{jakBrxFISr)5WW&DI2vLn`s z&JogE1M*h~?|vavIuhHTg&xOwCFn!cp6zeimQaUHV|F?QXe z9B`w0J6dAF0ay0ZvlVnFpO%inn#igFsCZK_;dJlrvX#I$7F2CZ(C6mnle)w0eg`(@ zZwvj|8&n0#ly5f02M2Bq7oK9^{y$zaO%anW^WKY;um;mKQ4A&XJ9FKM7urjE=jbn6 z`6Aweoii>1Ib+%FA8{Et+?=j+c+Zh~ZI9|7l9K!`eRzHGPx-LGcC?u1XfC4HySr&WOuy_4$W7v;o!tu!Ab2m|58#rL&=RaDA^`Y+vaIs zgeuNW0gS}Qj*Dar%5DEHo%Ld#eVsUBq+cz*?~dXcicNf|NYtu>`b|^))|&)Jk*hC! zm;CeCmv26DrmOMZ8GRA>;rfrIH}}et$X1iGAj-?ZV zaHk#iOLkW=pLAaAC>PWMiJNTfBryB%w{HOK+U~XQAKPOW;4qHmWQ%QTU2@-00xu@o zvo^ZPzr4#=<|IsL$gX}-5pMCt5jh~joy*ppO1IPKc6+w5uOdd#E>@8x*wSEZ?uYh> z(_PO?@2}|gFbZBdeF_4-Zm2GK#b#R=SEP0XS{-P|e7v%-pIGDXCNz18^m?At)K&b) zn+w~ovRIBeSCqN!Shf!y*)r{4i1u;##$J%onu2`?X2MvZ4imUdi&4$9RL)!JaZP4T zQ~UFs$O46^TICV3%_zZW5@K;Rujgp%rKF)wXaKRMQjf2B*WU*@Eqiae(}IUcY~M)0 zSUBB5VqzezvziAjrSEcaQBzx*H(lr}t>4kNj|ANQ=>>qTFx!Z(UZLs(p!ec%Nq>g8 zFa~MBDxwK0LK=mN8WrR<3C^5CxYan5mGv)r%wjqi&^Hn}JhA?R$8(q$LiepfI^ztq zH;=?rX@cathdRZa#HQ?&ODFq@HTf;U#J*70E5OE8@ScD3usK*DMCJ~RL-}j)s4*?Z$ypfLz>heetp91nNToo4{X!|68o0em zg*$YfVP{GkRKZ)~QjdxGb`IF`?Yy1gV3(tF60#9gl)+B3Ez|LzWAJ{@K$E`?2p-$B ztkBk@gDQdDHK?!>;QWpJL_HjB#ptCc{1F%FTbp z-RKlU*Gl-QxfIlP zzHf{gt=7r24oPJK_0jc9l=Zt3;SDPbV;7;xy34h(U0eJHRZEEu#qzN7 zmg`MatqE<|57$jC&sg%ieTH|C;1y7o0D9kibXN3I9zD940SB;ygjw0j%(j87zymut zfKs82=8hwB;2IL4Z=T?ZtlIX8mFE{sN36cy?WD^0izUa14PSS93x>uqrad~R5+A_MHC1o;19VFN5 z(7C}c@lPGSV}hwKQ}uvDzM%WGY^6zRCWA5IX_*DMVTl)>Lz;fx-{7nkAsC0Qx>>4N zJoxUn5)l@t{`G_YJHQ1ou-S-T6junk6t8u0oFO*bxpXYsWphFH7f0ZpxvW@q9KVzs zBp^XG%V*{7@237u*-!&u<-er&-f-T~$cVjolb;+n!A$1Pdyo;*BzyEbl&CO;Q%u}( zVl7?*^rGhNH)fq^Z)sz`n%GaeB(Rf(Q^0oa?2K`a!bH0UvDzZoz6u%4?ZF}*U!!+6 zjmR))|DqgN8BA#NqH$}#9OEI6>=R%qSurk>+%!#>Y~4;=kua68G`n4~Qtb$*O}5*E z+B&O+g;HOT9QU|4RL#*eClTXucJ7gXJV8~H(O+24j%9q2BG$=O%@QZo2^*OEnN6nl z%P^WenzAeB)jih?wY+nkv6{cmm`YvAS*%7sX0E$XpkN=?_$jB+D!u=~Lra>WAC4Iv~w4TP~!T`Jibi-Bx z=^lsQAN6;qsqwlYnwnd#Vi?GSG;fR3r}rZsq!m8{$x*bSDh#OshikQ7tie)>SLhkV zG(4*SIcR3%{9&k5gT)sr*%V1kpaCm^5eDNh+bl79^xWmD_+8(lg>122hWz2M9~pk9=8-*qU@!M*M?5^0QDHXot38(rFiAaB+!gcZ15ATGg?Z$6icxkomAws^$mvgSB@pKG+QqBF{f9gA9^6VmvBl0T)pN#hw7xu0I?GgTr zsTlw7R+Brl3JsnX#@Q1TTD>1J!h_a%;XeuJI@zE*u!Y==#&Tt=Cc=eFPOr{l1iL?) zXHL0ay`)|26c<5=rfFZMM5(fP6mE61p<3xc4fbJ@7Yo8h9txxbpW*3d5L6#XzYW|A zj{Rqd6TL>zX#~hwU-x+2C;-rATDI_L(k}@Jw)Lk^5&Q^5Q%s-31r+3q%0@7;N<)H7 z!jnR+Md#qr;AOz_J*>tPJ^s+HIbu(z8$4tTLv7s^35ebyEe{~=+;eAm7S15uM|0ol zLVhz>$%}niz*k$wK0XWb2ZWcyBHU2*eJT&ylymOC^tHVxr=csJ`3fu)P^;+OZIyxG z_I+P?gZkygtLw`!nCbnDL^B`*;X{PPWmYQ5&FT)JuBWQVx z+42h95+TAcjGUfE*` zjDt6+!LSFh17B5703WJ*8x|BHxK!n52r0;uFCO47Ro91rWV1(ORtTwL#r~BhaSS7B zmO&=CqUZsBj07{=cn2-!7ISegk`!aE4Vrrg?U)`@T-6<#-@r@q7pe4kj8Ng#Fdx#T z_tcL-4}=}`QG4z(w*_QPt3+?r%fzBWGA`zWrj{}d7v)_@iiig}yMDe(N6X29181As zB{;iJTFdiGal!TretUpP*&L6|yy5mH-=?!pi#{^uqs(%flv{9+&M zSSY*v*bogy@BvCN;Hn?&8WrNg*#4$aj+592%I91%V})v5F^z_c zz_NPJ5xd%Q3QXuLd!ohEbP_Xk}YY+qznwNuwtQ%>>Xlb7-uL z+}@_Z$+@67`MC{JARlx|;~@2;^F_f z>XRWN7v8HZ-`;1+b60VLsoLQfbvex4n^&{LPEO4VW8~y*I%bk3;>%~ zAxbddK84#%hGWNGUqyf2n@^n`>W$-Gvv|-ZnYnK@SSwmQ4uP!i z&IWmngl~Upt-ja%9k>ZjgJIE;!}P4CDp;C{O-&pST(Sf3@rOeD7aoC|MNWT;O0|IF zkpTpF|MirDRhh*$?eqsA8pz^DOG(mDUW=w_c4-EgBng>x8NtnrC_>ifKS}zg1jUC0 z&^r5uGLlyOka1>t`l#VoDrcU+c9hS|*oKd2=bYA~(J05Mx+Fq>^F?l$#imt>-=E)Ah=vr$vL7r$s*JzQ`{dsdkPHN zycG)_CtMMHf6rGNCs-B=N_2COwjFD4>(WmtW56EmF^b~mR{Vbui=Fnx4zdqKY5D2m zQniHu+G;Sp6G%emoZ_A-J#;65e@JI#!qCKhR$KgMHNJG?HE6R@fRVh;bXW%0-$@TB zytG{X+bsVGZ03ighu^2r-kfBQ31H>$E0kJYgy53iJsxkMz}y@z&G_`=(`6yk812XJ z0gA*werNhDtmPrNV0bNzbH4<1cw-R$*!8M%kLh!@zSB>L0M-$jlp;Qif8t(FPHcha z!xy%pcsmJFgJn0*w|M)VP<2u+TwkUnJ6~VdjW6g)Ko;n;3D=&}2xvYpLw49#C7b#l z&@QB9Bi@K(L(<%H<7nx)qa^}qh=yrV(2d&*B!2xPW(pw)D|$;6CEeoBB4P0+b0FMx zTNF5oww}YXgf=l7+@oa1vJRt!dYQ1WOmpAcKNEfqSH8EFZv;$^2FVqw0E5J~4 zdz1Q)A4wukGMS$m04NO0teZ0Kpqe!t%sQY(?b>QNRe(+9h5;XPN`bLOF4$T8HeOFD zFpULY{o*Mx*o1c&)HK|hS#p4?oh6jb^kZV?mYto2}7zolG z3Qr|UxIzg=$oelo<}AB%;hg9_qU)AZB2|0+6K5P6dRs%~xr;VmWsrOKM~$gR_4Uqf z9q#$k@S75Xb)>Ed!|@MZN(j6@)a!MC;6~r+orqHW&Abw!A##0^R+ym`+I4qCg^B*U zjO7-@Torz!X|(rK-!BG@JP7~(>#!4~C?W&zGRL7whi8)n*%C1EC0(wco*>t28b%+K zAGy(Ce2mn<`;jEGNQ&vjsGum1^MiSLv4H?K_kK`9);nw{DwS}wml z9D?f#*aLpX(;$BJ2u;g=>+?yahQXEWOW8@Y(39JP*Qsx)DAr$F(bxni7|ZrUCkI4R zwaoFp5fLN=NEP!U@j7}3?xpT=lhhCblJAcx3C8GJ(m{9aDYxASIZBYnLP|CT<`hce zq^HWi{dlF46escZQbhD=Slg=`QVsx6J(NjfJyoZKU*wB%>JqM2e9`WVkh{g`x|z`@ zp#r0I)`P`tl(uCB9TCDMfkjNVXR@6y(U4)5Lh6;or#Um^Ow+jI>z*&&g;2ReVvr;G z`OAB2Pm(RaH~ZDXkI0TpC&qfzRbYKW?VrzHItC)CV;RDuQ(}puaaxd?=tmj7EHhqt z0-6I;B|PjLW{HF(#!|r?^7@JWwX^UWfptK2YO7WR%^p4%;?_^|{1Q_>?3!U{qDwG= z@uuEhgiEGiQ=CGu%R(^X3_~W#)U7(Lp>uLJB$L{&5gF?A$T}#Ov7~%8F7z17iU*}= zKma1nkL{#>J`fR^5Z_W;i$5s!JEKx-jG$zwD?DDV*LxT(mN^e zc}=Oq((K^u-e9*!*}G4E@*+M6joB2>>J%Mtu<>sHq%`;^mi*B0JW}@vz2rUQ?(WXw z+&-{K7dR!hI%NRks_KJ;2=~Wkc+}Mk<(lH5c+3}?m*U?d$?!bkOEjSj^1iqUpmUy$ z8QdD_y1|YX%d>~EtH~>oZ9aevMX1Y?c3fo&;tA0Tjzvftms9y+{Vdt6XLPwlF zJP$5038bfQ`*8Xq0q2PPwlIp^d^3ui8V#y{sv7w);c z+S&grZUIWBG#>lAuq^t#?4~V5)Ajg=(qz!nSGvm^)^r$`9iNs8eORCH38=H1f8^1h zBbnnh%(z!YR2sLw`hBxn_{?lr{3)yGv)}Z`z$)fX-loq<5rjfkft$XB06FM->i1;s_i>$-%F>iL2%VsYgwB3 zKPtbso$3KH4u25c!3(dpZ|Iuo?#j1`VXtG^GtKuJ-Ct|99!xdJs7~PA{GGOK&c9Ed zDon#t5CaFB96@=jb$c(6zWmWy*~GPfSkIV z(Z2AJ#)`73-P~KxhQ0>WQDxK!N(qO{7HZjjZW8^&R3AKo-X+-irk3lc(lV?PowNPG zkgB-?-B4YW!#Qg>+}K{V7jvA0jCqMenEe+1t(KU{x2VqSulYo1y)F0*Dvp&l;TT zg{gM*hYA{0_-Mie=y$PqwJg^IRq6DaK<-lkhwzqw6syC;qWuE2a~Ca`BmW`-5kua7ir@^MGPI4Ny?}b>dc^8(i$v~Z-YU~5 zI@>}LU%M*X5|(tJE7vB*Zs@M=(no;T_mgy>a039LB~8cPxi;KZmLcMXb{L`f`dwNo7je%IJe{p2_k4p@)! zHz#zm0oVQZ@>&vcl${bnpmzWAUX1_v!`hwJ+sERNGG(?xFLMj_H{i#Kq9E%Ei-ZA2 zNLCaW`U(dfjDI%LJ6*CT$8~;ILgAcBI7>p)e+bQA0zG0}hwLz_6?Tn$NXifL#SZc& z@eIzHON`O@VfIJHSDVZf)$1mRhpW6OmGh|siEdiFalh&g@Q5s3=zv?I+evW*X zjd#yFC7icSun9m}4&8Ft*=-@KGS6>Qz3asTmu)Oo7~Rwxsd0H z4DMXN<;@!0i?fSp=E~G1mj-72H`QdB&SXM*)_QHdb0uLWu@b>}cTXV=HaPbicVibE z*M%3hZqy&t-r}MhVaN|t@9GGMRYCUiZ09jFQ88i*`EwLsBG`ArX)j(KUxJoa=cFp0 z`=Eq!SXz=*%L9H>iBU^4VaLES-*$8^|-zU24nd%paoh`IU}O&fVbSYOoFdsK&*M5f<-EM=7G2w3O8qgo@`vvh5=e?^0`;Rf#&wL2rW3(Uhzz|I`L^8~;;`7F{E(om)wE!qprX5A!? zgafnYNwlYPD&XMV1o^LEkiXXTJ`AH6VA^D|BsQhqwJVX=`vb_uAS z8W!C;CD&M|(rSWGn zNax?+o!=+U9J!^GojTQ`winrQAUXB*^^K5d-z8l%$p&g~mNzfBnqx?Pivl<0e3vRL z{r1w3N7mV$WY*+DeLMxFJ7sRwDN5jHiid)1UTodHN|U$gR&RB>WE>7}ZHr83foAS@ z{OYWCqn%-LEc6urij@Y%bfM~1KQ+--nlt?`U{g&5Y)TP?HSjZR;RKkF>z5ionPeuC zGvD20JcApq3Z-J3DzCVnl6z+Up^)AjvPEU)HugEz)?uTE_;u1k&Hi*rSmJx19u^rNN`$lox_X~ zR8z(Z$Nz`4_l}A(-Li*)5>O4>4As9c2v3u5UueV1FmCsw<1|vuxj#!u)Mvw%!JyO-r@SEs2P`$zO zW8~shH2KmRQz)O{$rGo1ZYGvRERHukK23Zgfl?cL(90FCnBLInquSnZa?CPSitY}t z+9hI7HOc_hE)m#}QC^?e{mImv>YSX|bbK2@x-4PEniy{`jtX(~+FwgNbh@nbX=Pqu zCRQ=j`~kCPFPNA3jG#Glv|i=Y=2hS7otFiQnc7MI1*f&O|9z`@acr>6D*@acQE~d|(sqtj~k>ak9s+FomJ#q{o@=Wni%A%rWPk)SJ%z7W>A;q}S(i5G;U%KDb_tyLW5~vlFx_mCiiU@_pCx$0Mlfy93+t3Pz^FSp*AQ({FJJT$o) z$$q{eWHJKs94IwuW~vmadZI}un+IKTA5URJD8#NP7G-3v%zXMw@x~T3;~r*JO2@tE^j+zO zB44YicMC^`+wI915d0HS35%2vUoX`PlL2iVT^iUDYcQPk_H10Dnc>t~V-Nzp#lj@k zn-nb#!nIJzN%E)RzL^QfPZ)d^R8IKn+bwa3r{S&Y05_$*xMrlN=F0Q!q2MI;lO>o^ zzMU*%lF8H<>&k3jo>RE6k#v!h-_iVTl3Xo<&Fryp&yfQTQ!%a5$Qcy&E=i(+&=f>6j#HFoM60IFZ)ZE z>m7(m@un1Ce^YMFfxB(9apEmMJ5YPZR`&AG{zL*T~p@G^pG?a1ChB-`mF?XKw#YKxyt@q+V z_90MuGsPD?hBDzymKaQzP>}1%>5$7UT5%b|`c=7+ARFFmYgmDX?JwzsLz9KM)GK`JQ8%&8nNpG@{EF4UEoa>9SVzcJ zF(SJI`_PKL<8a_FT)w>k! z{pZG3KM9t_=80a74ufqk$ulk$!ic&AjbKO&G~ zVy;At>3fmAjl6j$uFX=5ypH7C?Vx>lH|6OG?%x@`19z@au+uqxsfyas#C+{i8U8kA z)$u`~!L=jrmwWwb_lPpg*RwrrRs zV7bSK&_E7;7PH#Gx6-n8%SS>EIXh`2KrGN?Z#HDjPKC{uvV2R1>&(y{w1#>vxdy4{ z{`3D;I{M2|#r!${G$4C5Gkd8TdXSr;e#n#DCTmLk+GY!H|9~U~kj)W7i zD$R$E^9J?LoXevIzOzA>7_lneB-PLR;Ima6=d8Yhg+$Q}2VDrZ-A8u;P}GymY(X4^ zP63%hJ)m9PXv)|A^_ezUDK!nQ3VCn;@aKpp7?`O=ehE4Xmz0!vh#ZqOAF+M9vpzdw zL9|JHIUg2TZ5MXSI<3V_A1Ec65#wW`mC`*;e=fpWgi2zO*X5)kXIHg$nkFAtXrz%~ zERza}Cx{+med*j6?Iihm@i24=DV#_5P68EgPYluVB;I0r-!k@iY#TWCO9erISl5VG z5LI8L9osGgpV%dYrOMvj^c-^-sFC*^5kv0yvH~C2cB}m}D`gka8>_cRn3-C=9T!(U ze#7o92?_EKj;f&`b`}z;jR_=uxOKehnseqJ>v(s%R(GI{~qjsisZwy>%7-c zg;z}_mbH;E{vN`(-|hYyZW42=F0wmuUG`4=MEUeht$PzrL?$oA;+za#PUy4#WEcd% zDiP%gl!{@l{>(L7pWWCJC9wu=(YcH6FTz%d2#BSuLe?9du(BVo(dnmdiOV@vTvrZ4 zt0x`jG>!6S3o`MA=6f@ciyMsXMd{E04^iq;>MHTYrV!pG{#F#yVV1e3E=?* z4gkIv$#8cQw2^0W(O6Yj2#Tq_e_u=~J}0EA%*xeo-;YvfkJYtg1%SMM`+GO!x;IVL zLZn$ba51|(HkPS~2L=d4r!BN4O$@&Zp6~!^FN@HY^96>htuvnTefX75`maMaGOiy4 zxn|z`odBfz2s2UC88P~qfLcXIg(Js^4qkI4*a1qKGO8;!QD~Oiv2#4f)}-unrchA!`h+Lm;Xzt2w^>0{Zm~OVd9yYqS5fkoC@c9KM>6-18dMb5Vm_Yu`=a} z+v8=%SID>r}({2YUDSQx2*Y;!AUJsqQY*7jG|Wz@_2GNY6Xc5$jz<9 ze8_BgANGQk+qBjPfsNk1-)s9alv7L%qZeWr*^^?d&emR~t z4O~SSu?2Y;mraF&)Y)(`OY$0YKnvz1TREWsc$ri05W94Ae``P>M|j-gcP^Mh-mX*V zSgpwyF{fWaU(2MziB*Wd{o^Ldo&9_HjPUUh0xg-X;sjHwui!SUmOo zjkCiIxyL)!o`sDxBxN5toJdNkuQ_+=hhA#-Eiv6T{-fO@O9Wox zTFno=-Y_Pex}#;@@{Re_!A^0CO&fLlJoEDbLI;|v?8D}wQn`ueO}}7u7*ekuTyH2h z66Iy)tlJmT9AAFaFss(<_Nu1Wo?*YB;A@p@uEx`V3c|>4Md!T+%c?Ir*U0f&N3gn5 zUg{Tfme``)vr{zTh%&7xQp|asV=HcK9Yl-DisP1jC}f`y6j!MWae>aWCWm30y^TH-6eiAr9*8Fj)**uE7&iT{9CPHfwC`3T-TlTdg z8Z(7KFIVro1{fbs9qyMHZ0xPsgu$xElY9pyw6yzgl;pA;yb`XZ#Ma7ret%OuQPgv; zP2d&_dRAUa{3}(3WJS#b;H`c?{yDTotj)RX`0mBdZx0CLY?AD&7nFK6DmgUWhFGuq z1?9dwppG87B0n2GJ-Swt;CgmYjH#`TPbqnu-|riT4Z}P8!$cM=Q_sufRoC462^;M9 z#Rr_Q50i%!?E4WMte+E_-p{!#*b<55_hxaA2@gqd77v;Ea!o2#2Mmgvufl9zeNgKe z&7zi8?dc3{C=g+JQ{9IBlyfVe7-d&GnNY+?uv-_VuMbF5%*>?kLz2=_6c|-8u_W=n z19+qxmJ^C}w4DeLDIyVCcHcH6Uci^yJ;yurKu zQoQAYz#>s2U0mn+^bM;4kz(RNf$4McY+b611N~u}PQPlme~{n~IZXCG%Mcz}TE!Gb zY=G$|;R(j1|M{SVS4u&Xvy#UZ_NZK&fXmE#_MVJ1HsaKYj?4;2em$ZbWq3v95X??m z`daQXhBuCL?AZm4eIow|=3K32)NeiV!3#!FGM`@s7!LWVnCPX<({YulRj4VG*JeJe zQRRqn&v=bnm%wp4RCSEEU##U>a=zgIY*s(e{(Uu-+QpjgPvXwMq<-cv$Ib7llI6s` zc5N5JS~>-vdN}r7gkF!fz%GD5E#PXt#~jpm4b{}j8tMCz|Lo&*N~J&zYFEM1E#TP( z->)-V^MZXK>A%=;woM{YJGq@Cvmrku@F-X*)7Be98hBJ6J56vn-bNr&Aj_T``XQ0{ z&ft0h-2vsA8s2P7Aj1}QqCvfuC*NU`^FuTRQ7=Mc?yn1|zjTYZ)0eMJ@^f^myc4SK zb>AbCBBKV%(w~h^xfgTqzHROgCT^oQY%THt`;FZUdyGfw%YAd{QWyFFq#G^0o2~Qv zs1ttz-%r08mo&!OX(|ms`0wP~0s9^ds%R3SFc7i;l##6bdoqYB?2r*n`ok}mQ25(| z?ncW)zw`YkKt+7@gFgSemTD`*HVXR6CtlN~23+1Vv@m4Ou(}&V(xH1r%`DDHSWCQ! zL}WMRv6-yI&*=8$_wpf~u%02UASlBIBN8@@%}7TPO()J+A?ng$W)j&T-f0F)I{Fs1 zLg9D=hGA9hWAPRkD>06MsYlFWd5;sd1JUi%`ZE_k_yt>UEe+2HZ+%i1bJ~2_dQI$D z;jJa84~I88+iRtMj;F1CZvh=Eig4#noEH#q509aJ?q zU*o^8kgqg z72MvQ5*hhQlyP+Ov#jgWrKb+D4E`05d}S%+>vzm%0nF*W1xhr0il(i#q|k@jXFd`o z#p-E96pwq4SawB!IX)Wkd%hu;Vi1uT-fuE?NZJO=d5Qh-H7K*73#5=-#s9uSqy27`2Gnq&h!h@~IjcrBL;^TN*h% zRO89-q|ewtG5C8ghAYNUqVNxo-u=p*l<7;LSkJP%i$WIIHO=t?$1{qvXBv1%yO9}7 zI`E5kB0;qu#6R3R0RChF1g&tlSuW|v7}3z2_atdD&q!Cy_%y>$c~PMo8tMb)9_8A5 z_TMD+q0`c%`i!%!Pb7^iDJu>;US=Ea5kzTh7a*mdZE z!l$;4PqkzZbI-n+A;!~Ap+}vkG`XFTe;?vyMUkRK^z+lfIM81t%pYN#*HSaAYPaJ= z9VO23bcNew+r_8u6l|v;q_jkGCTU>pmyN815rpZn_brKQ@yp@+3y2X4@NBXY8NCP- z->5sa=ei(y@;g&ub<=e7i>yNkrr%R`ho%tJB0uNPKX$cE3pG63cI@U%t|x1%UsN^C zCkuixfhUWHA7N5Cy^-ig_VGNX87-PWRGRjA_){`5`hsaPnviL43-0{3Vp>LcL5%Ig z&1=IwJw1||%+pK(RFBEDQSW`fi|jUYwGKV?lzP&YAu;Wl2-3?MpBnY_10aKmVyRK8 za_M94;3ZYvNi@yUs8)4F@QVa}6V)9Kk~q=c>b+HE+Z3zbR=*3)UDVV`d^z^a8A&ct;Gvc6^}2SQlL& z#y4rtB`euRt`6P@G>`jntnnz2X|ds^5}L9#7-zKBu&JfL{hA+{ z^~L@LCi%9i&ChyXtuv8Nf|ko$e|(5Fz9=%8p^|#Sa)5C(caOtW%1EBeFOT8ZE5qJj zF}Q~ID2uVGU+r02ZVaJw zCI=oLIioCWU-v=8)mGHYJ1aYgze<7B9}C6-dI)% zm3~~>*`4wr8e&b~_>RIW+uCW=Za;}O^X#^F-3|Z`G-+Y035vfl=A7beJHpH`R&05` zZBA^D{ZVSd>>b3v#MDJB+rV9U`D?**M<&m!U8!7M_ecg`Z>OoTwP(_x-k|cpW_Z!J zqID~c`9yijh`tgN+Q=`V=+3+h`#h#LZdxKYNO!S`_Jb4<;#}u0HWgVYXIij z?um>*-~hnL>^F?ec#N|Hd+S{bwdd%5=sZEemF&uFTLwOdly5A&0$JL4jPJR|?Xe@mdWFdavpE7p_d*tvg?o+7U9W6h`OMaBE zf~_2aSHdlUS2?o^TI* z*+pL-;GX<$=u%tym7XP)N$;KPxY+naK2ff&95vTSf5aKf&|l9_YS5=D9^Uh74E)CJ zblA?M5tpyzw|9auKr>iiq;~Z2%D0M{TY*mRWtmP1)bC%?nSFzw9}_W4P?jvEq;dRA z$%__HeV%EewDP;Mx<(0a}hU2KXS0Io8o`xe1&1|?0)BIGf6MD!% zfV60CP8t4&J`tv7F-mi7x)MRA+p@s5r0~2=VdKWd8wdM#e(J5sU z6tzaP%tf}U#9AK=d>02xc8}Vzl{6iF6?R_bMnRf7$3;=vKC%5Xw4*Y1Y!!TIYb2f# zme>uVX_c$;^`i1#vM#6MTh{NRF&>~u4Jpp6SQ1MVig)|w9AaPm@y$i5zF@v@Xbg); z-flJ#b7PCQWuQx~_(nmM+QZGivqPV~$>Xgyz((>&DPsuac??qrQZ6YKTvoi-+HA{0 zen*NMPfd-HeVLFa#~+A@c8FX|OS2EjNT+LkAn~-T)233FL~D}hhEIOTDbA$|9aCET zGt-{Ji>)8k51B1_wuk45{GYkT4mrnc6p6{2Yh$W@-> z6R|4&N2&d#%)e`uRl_Ym&{jalENqat_94|c8>?pC6!6tgrr3-^1L-;kO(sxQPWfD> z#B$JO4$sGnL;1vYlF!>YP5hTuCd?ty7z`$L5%yBv!kW)FR_HykJaA{@ z2>h6inEsM9nH)Nk+!a_oQ3hz-vj9~JhjZ6YFlBrS8hiR%rqLh}GPL8cPCpAMA zt|WN|EqyJsD{n1q9h}Lw+UjRRaZh+jRfs_ZWYhbVE(fZ5tU8R7R!A5T|A{1!c^%`s zS#upk0~&C(OH%~%e%3-rzJtbwUaQjhZtDs@y80lS_SWnWg$J)BYQ1*(4l!HBZB?~E zCz&-c$CIoj<42_sH==pzMM8$3;e$gOZ8{Poq~g2go0-)fFixFqfTg^`iPz#IXJzc! zN?-qa)M`)pp_OU8nNBSp9X2g%f9hE7OY7_U@tjVZ?;7n*L~*W#K^i=~iTflIon&^E z&`l~}FFUFChnfRX|RFq=2~yg5VeEkH&Bab25Ah zV}U)@H<9aegBp9N%cg!iHJ28D&yUavG|9v>yFG|Is{H*#5&OUVti}X2Mr$8yCZOK% zVfcU2E4Idsyl>@dwTKCivp%hNYCI=wgd+DhOMqHDgQ%KhGcjyz%q#6_Xe|h~QI9Wg zgPDbA&)1B1JN?FU4H=2$mbXGV?)lvI<=zJ9p49a2XW+e3)N`9bzX@B^$GJh?a{5zq zHwY8BwCS^iZo;+w zgnXYqEnD&sB)nBq!)-qctiJ!47SiqjhW|4V-a+o;#mm-q?1Ho*H|c;d@xexl5L|x2R5;D!$edK|hq)>lF5*eo=EkInL=O|b;b{nAAi>?r zi|De6i6>E_p?G069D|V(`OF>=;3-uuSTl)u?|u6} zCCm4z7ONrPBLIO=4DN%ULHTK3mdjD@6)k*5JL`QVX_&u7>;hW&HF^l|?(dA)NMND( zcfwp=)$ ztxJv5ko_C=N@2wE()l(a6ZXrV$V;?=G2r@Zu+%(Ms^6|S$w!S2r2{>~f41ZAN$$au zmtcH}JQjEq|1lxXZ2uRIVv*M{3TJ$pb)BrlaPQ~6g1lCzbkHwx=iRlT5JBNxXbs!{ zB*S(1W&e^45shb2z<*s^fC@Tx{=667&+xJnT7JXP_&?5zGq{t@=<8IUGXa{O1v8&_ zbIw!IYmQiTXl9Be_j`7T?$*|B6G`T~=uIMYH;MQxBVee*zQ|#Sn;MokJs%*LmmDJV zm3==aT^vA|E1J(UK-VB17g5L{hQuDZATuze?uggyV zk`)m0w3CbTc*ya5>@d^s-CQu3N8N=Jf!b&uu#ZZG4}g{A-WP#UVWs;NRD|CmkFA#d zF_FxzM^-{ZN(X}%};YlAJ+xUp2sWTbi zbU>`p;RO=n|GZO5G-zX8KZLXJPD*?;hs%V*{Lhm){eRzV5d00y+2+KO+~b6Ub^LBl zYx$peo{o6w{F`{*@(=fglM>euIl?(vQsENsl9S_8b~l>}n;zLABn$K+Y|$ZQg_DUJQLc7a1vbu z0-Mk%B~YeWw^bKO-GQ?&b*JqUv+h0kDnMDC)8$82?|v(W;HnaRE)i}Lo7uP$f@_hl^S@^S;JF*@=QwMfJC0ai zeaz~E-kS^6!urCYjmw|L09PilP(e9<{WJneOqF ze3^VN?pe=N^ zMR5gW_=Y3c!-po7#pxsZthMm}X07GurOvU1=e3oikpLc_dr zCloO}O4)7H%uMghlePg|a{XQz6YOq;4I-=s+H&p$N?!V}mOk@(j-z(=fK5E|gSmE7#xjB7txUt}({nN9*&}%hK zOU&u&1CD3e9=p$S?qx>c*BiJSm~s^B?(fNdsdfn`msM9-m_K^^?&#xHrCSb+6TBY;1`hLy0_T8*d`3vIm+HlMB=Ps4e`Ie+WdTR-ku?aj*QfP zImk^qz}0E^s&m4;!?ch1^fe|hW@*KhJ*IILD&69tc3|Y8c5ZQ8dN=*y;z+q`7Hd_b zuRYLmpP2I=yn|^-vej3YZ>LL7{>f_hrt_?qH27La?}z+V65TT1RjC8vMV(mvw^O!L zz0>2rSmkT7Ab%f2^*gvf|qw(a#>Y^w#=r|nviP?ytpx!<7hc@$`$yS3ZLi18ArX< zxY(>u`9m$Oje&Y9yxv9wbwt0y0+%105N_2<3b1yW8ff0@4HoS)?kmu!&DzQq33ZAhj@W72 zVL^dr9hxql)e*TGYlfNABR#4f>E0~lhF!BU{Nz{J#j-N$zyD~+hN}GfO2F$gCz8E0wom|ocm#MWiHhirD_|LUd zT=I_l5v=%!KX&u;dOTEy>Qv=!@%KD)xaG!87Na4<;DNBiHpbTqbk->1OHgwv#pp)Q z0DVavCJ-=>*b|K$1jomfFFOqTiK@RtFP{0>#e=TVke_eBqHQ4t(&j2y{RNe9AjH5w ztuw*LVLx$1(dXGi3$Iv9mvUARJxlC0!Q1-hU{pU!0Z66XlPxiF+~GVFgPc;FnO(2Z zZQ#Fm415Ng_~{Swa;N~%xUd3xYG2Yt@@~j>J}05m>D9Jc z_Ys{a%r14KKw#Umj5`!wQUUnv1r$K;-w{$3c!-#~_XQWurVNJ8zQ zjtP8U1N9=b$~6#=_1gy!hrK;f1P0d1X+P|bJk&F#RoZ_}cu$L0Fh_tS+G~G%qDq_} zO!gMfCb-fV3U*2IK1zuddiwbF)efIjpTG<0nmgaWXMFrBSbF284&%dPCczpGKlyrS zaUw|rCA9NH7elY>$99~swhzW}@9mhAT#+7B`y^!5P8}#zAJIMf5QEPj_$9%=OE=9w zbw$sp1MAEzQP>`A!!m~(lKP8^L5lPHq~q$ez*7B|#c*b_3L||wWq5X)Mj>|NY+#K_ z*}d_JJu3NcVZGPO+J&hc+0!Y5*yi#b@7v&)TdhTYj^)-^Cxl{+zL?*REWT{{%YoP1 zEG2-D3>~$oMsY6J9bb6zmrwlAVSa{Wt(~|j!%`-uw(_eviMdpG=?;v*m;Yk&>T?byqrel~wu5%}iTf7ID+PV+sl_m2PWnarA#qql&L5 zX|dOeug4;Q%vJk)YfIH(w}!lu6-pWXshW&4TSti*G1@FTa$;v#zVc9{&IN4v>xR%i zJ&npGy2~b|*%qHD}ND!mWGU(m-gs)h}chyUP*i? zllxQ8k4tQFCvu6BRgh);sMjgkLmEbbMk*FM3(PGK3%@}Zm(P8?!p@s}V#IhY&^uA` zdarjd;d}MCH}s^5tfm7sAvMrBmoJ)lAos3>?c?a$`eMVFe{QKPj24vxw7Q{&&JNGn z3xsACXH(;W2}+yA`F9B3bP%}lHM?LL*e14TjFa}0by=+ny2ae)4x zGqbjsrnpr1VBdD@Er#IXPvhbm%CMAXPKo=<_~fGNwXt_pv|rH`RHth&VbPaw-e|k@ zal&s>#P`ZQI_%@z89l%DUSV;oboh6 z@7=#$4)pRdQy1~CR!`ryNj-eE>#`Nf=jHsc`yBa{`hBWa;}qqtt+Z8PiXdlp+c(lG z!R}H&#As)A#4b`TSu#wy&@fNhB)9_L_98C(qFMj|QN{%|b9c@-d3N>d|z7(3l7B>fWFHjJUg3d3~gV_DA#LFAIt1PzYyc zv?aRS2)E^XdfJWsG{8tf(2W@U>9Tqe=%z^i&|m-QUxR!=SF4gDp&z#6@(9G>k&c4}c+E2wQffI0*BUCioJbe>t-EMnM>b zCnlv6m4lx1#>JLwmGgpP4cr51shVx_5R=D|lKMXbHYmWmdC<1iM{o@p?$K8~fP`J% zzyd(>>qebS=&mFG4jViJ*nm#CXITiM{Xyg}7CClF?Dr*j(LU5g0HS5dmIDX}9=U_% z@H&+z{GM=c5WZ1gZk*26Md3n0({VyD=cLw{1Cp(CZ{PPMc}iw(hJf9PJ_luk;LfoN z3y~!;m*yCGy~qC|rTOgJhna`PR~{9=r(&7yB#yleWfq@8T!L+3Z_&mZraNluB4jT> zMN4Eavn$wZh=0@)GYN*Fi#BDGXN);EP7bS%6Jr%!HrHZptL<$o39mfB!d=pCS^4qd z3a$~SjH?DIXYU}aNM{!E+F7s8;`$9!f$-HM+b0zO5g=0-rtIId3X=Pt?vCERW^~(L5fM!-ViSviWI<(p6Qda z+qBhD&Nc)6=MctL)R>&vCZNiXP=)nhRc%8xUWymvWqcMqY*$BR1AClo{(5n2SV4wi z15V@s%7qP=Nu!s$_@yi9C-VyRIgXgvqc-RMcyJ}Rzh+2ZG_MzFp8(H*dx@|>_!&kF zV;o9zw8rEs$yOtK=yrxHTQ_`;`*3O&=u039KMyViSW5St-e@)hdf6cPx)p#Q$wr4m z0BvlqLBmj)rk{LRz;&2k&lb6J1mDc3Rxe^A0e;Yn{D_z+Kn|-=%93*oiOIQelO_gI zeuE<+Sk^WaBM-)ZDEV=Uzec|ooYc0DJ&#QcqZCWPt3s{D)S#CGUDJN`9aq((mg=;= z2c*9%p|*-k^zizC4>n#crjT1*U6av`7QUlzd>Vl?@oO+N@2r zut*6Qi#U3oqNBb-_FSM>nCv}{XcA+G5fRqJxU9aSctKX^1MEf?#mjmez#($F{GOvl zEOXEYCKA#-qIcqVSio?m1Xjedina2|v zD|X{uIjmmW#uGKBbN!L$v=$E;K^jZe?nktx23c897aK)A-FIh)->VK?`bx}`;Dffb zy@r!PcjnGw)hmwR@>;c1?^mcDMIUwoBF=3viJUM53;&^!x#|orBln)qAnO2B^!SCiyytr#Q zPt9J3pZ(n7wDjR@XtbAU?%H*b2QX}W?>~dwJyE5oDiG>}y7mdEYwtGoa}k+(E+R9C&Dp;D#4Q8FsJ_;S|w-x z%_8?cOfYztQo zD{pm6QQ@AhW~M+xsXP{(`1~Itm2tnJm(F|?askB3N$mEJ2`Wu)be_R9s%C$4a9DC{ z2(K4z!-QhMk9B5ZwA%K@oKCFJ$CEg55;fWP6@4Bt_Sv88Oz%8jTmIff=FU48oj0cO zY9ws6uk{;du;-F?XVVimF-FN9{jYAuGf3tpS`JpdV?v1Tk|)UjG6VgkwQIeIbAd6F zatvJBVE4(VKgs|>4AFd;2i9j#Gqdyo0l52RV;-t5e`y$R{8QB9;jQk;dE(Z;*mncj zN)bl`i>v=XxX zi8K*iOHFzBD?)t;;p^|)?pF_8+~7Bf_nn6#WrM!$vAF7=f#<{^0O+}@Rh~%W7yVr_ zP~IIKH4OdI0n?MKi`>DQQe>i<2(w@rO7&{ri^PBqf)C1Rg{oiI{l z^)AuaP%HWn&w98r`(wH}x|6ET{=nI((&y;J4Mi1cv&{L7qn_#(M^<9O4Z-lA`XzO+ zfJN&zwI3ppLR?2#!g-7;`_i>6SR6ab)nV;fUYk#O&b5jf&XwnGjlxg+#)@r*=e|lY zpLR03BQ5VAu%zYN^5X#1n*Ex0%h-BB?!^7=a%D8e!1ZIN^Ra~>Qq?`%&F4e6>VNqg zKC9v1jx<|uXyR+&?$FWozpfJ`BtF4x@vgAj*~mNA6rd<_2k2N27GP8Wx2Mq>vrF?s zvE;=LDV_mA{|+r_@$T^h9j7yH5__tc2yBAnap%U!cCpye9oTv?Li25zeI9*+(PtHy zQm$*$ZCe<(j+EQpPk5~pZVXVKLH1(%<9D}~x1_jG#e60bQaq?i-!Zh*BwViHPxlIj zsDy{c2FDydl>=|u6YavT?D1gBDkZvvsP4z7%#0Csu&wKeTY9XhV;cEt>fG$SI12B@ zr9Hd_38ynh+8Vm0z5d33euW3i5tXl9g^DJ9i;#=<`;$8Fh^J);L5~)%3&Ng$LvNjV zx?GGL7>AO|WR)SLFvc)E#**ovVyXPcFsO~ZWyO;5d@PrQzD#;93d4stToG0XBefcJFgnMq?dfW)hU(LUCP;^%P|B3^nm7Zq^KAPI5US&M;bloua+EU~Yx+7lyrv1FoeZW4xDPwpSOW29 zpPW}>dK|2A_8@b|eXiuowY+Y19L=TGxBwfB;2WmVy9KGlE57)yIumOw@oXx^yw#I! zKXMu|?7m^C-A9l0c71C2ztQ?S?s$ui7XA8ABB{^mi+$xa$M^x^Q?;Mfp)c{VrPV`2Y&gAZ-le4RNzCzJ*P>T z(J4Kb(@)sTTp*Ue{=8bA^?RA4#f6unMkPLnTQ>S@N4MJO3e2h3?j-?z!eM>UgPElY zz?vK_QmB3MWIl20KwfzHc;6GeB*)d?{7Vi$g|&Ty^baUp!=tQ@-22Ti>XbI8#Yb~n zN5SZHrD0`l#aI|tWsdk9deMXtrdMvm7T1M+t)ybu7^C`<`btCF!_R_JJo7|FMQ>g) z|D?8Ss4?>*Dp8}ydDKem%3K%4d1tik{k%m}hPdY|IOE05PH*aNMQ`lJn8oc}U)_ha zzDhrWjtsG_^!)AMgJn{q`Cet3#a4J79_nGlRaK z4RXLD4Zm)`F!iVVwFW4hI61DtMOy0;c>tMZJvSd|E;82ZZEtEIAnR9$VVC8kLOrUC zkI75bsx`xH>LAU`WP4?Nu&8%lp(aqs5I3+F}Rk3H%7Vf8_T`9#WB zq#+O%JFoLeuYGZ^^Ss8j+DEL4ZEEm-7@R}scn_d5eP(uDx|aE}tBt+b-OZ(8kLZu| zsRadf@lwvs@nT*>EtO`^J(kM)myFw5U2gf)qqj&>4``6$;t72O9h9tDvqg&kcj`O@?ym{D5iSDg!YA1dkp$LMTSp_`qU}o8t*D$Phb@Ux zx6b`2Ua^$7l(~PPB>48I3mW?FLr)PT-Oa2sB|5EWmZ+U1gHNJJhbZ<(T z7XLEw;jP>6g3yO`z=67vlW*00jkvR!ocj8uh<;%255WqCVM*&VwT!GZwNxj_ z74ZcG7Dj&a0P^W8MPmgM?@TFo9!YN8aF+DEyQk}UL$ylnml!HPI?bvn{9;I>{f0ol z+P=YtSGQ}IiwBQrF|xG98g@KbaI$}ov;2mbdb4|?Bh{)FjQ>_geJg=rU>NI;G&S1- zQU6?!?~h)0JGK1u$q$qjQhKc2t1;PobUQUc5G{Ry7EgvNC|mucqg5-4!aF;r0fcq)eJS<$npb|9VLgf1Dz6 zw)T&eC!%c@r^B>R4EMjiJ}sMcxM=IMmb{-CK}$$w>o{I?%pB-_p`lW}pqfkJ4NMH% zY)+-#!+Nw1%wEfJZX5&k2-F+`4I;F7@~ctq zFXrKPJ);=w9ao>2<|}2a%QIUMi2mATv9LIrS@Vj`GktVEyp7J}a%s=9Q*MiRSZ2DEui>L_+d8%G*^7`3EaTTawqh7r<3uI{p(z5jtY0Rjdt&#Mb z8|xducC0>~wFE*C-5M`V3&J?AZei=k4tqS9raDvcbz) zM_vxN=ii6jTGNR>BaF!%^ctbGq-xg%F%14JG9mb!M1p(>j@oGmgA~+#fX}UT{ z*Ma%nOh2opFCt%K3!4!`S1s17)54RfEz&SrIpv!K9X87bl9#40XR1Ra^`O{qHQR`x`N}dl4N?Vp>ULkD#u*_}OP2MoTJc z-0-WkTYmu2);s!w^C1vgR?;DeA@9KbQ)ycPw#(!0sEKEJGaroUML=c*t%!RxQvAvK z0xs339xAuvpsLzRWbN6G>>^e_hO2#u;jg}Ukdvlrp=JX?&i=k?VbOEzxl6nBQrAo> zQ&Yd?fFHy#^vp|eN?o7?`oL<~O5_-CQJH6!VzXzuXU6soRwjc<{=8?(HaJ;VwW$gT zCUyK!{iqh{2|%Q9NBvsN*G2v6h~Gb?pSk7??u>ZYwDJ<_6hiH^{5NHP&byy~H{o5e z`YOfWvgpj%*V~y#{{yOljVOFXl(s zqQp%022?KUSH%R_*KVVMcA=G;vwHb1aS*JG5}-jJw)q_3jh>B@vR1V;ILftsaT`=br_mychcTY-Q8UFb;9f&V9dGwsX1q zi6>+n*gAfzboOmr%=b}@kX}W~fM5dXx^@o%Tk7UZzoR{YpNdAh}q3qM|C9QM)pI z$Lcz7u2Kq+o&HFo=8t1*7GQjKK`KKY@gJgr9?oUFZ#qqe2!Xy&@afQjGYLb(Jr>v$ zOa2paa8+*?0_b~*(_!Of)J;Y~(b2I0DC!Bq zwH|*Ln$6dR!P+l_DD7n^io)~Sf}sxN(iqMGLeU=AACkg<4Z^&h6N2AqX0`>K<~x9O z?0-iGQNV>QfacwKIbwp{RQ6?djT^YZFDp-YT>2_f&8p?Z_kod7+~pJNv-?*Z45v}) zMyj#7i5kN6y(_}^vWRhn*RL0Ph<_~@h`w}L@yiE2xjVS(J9|1VBzP2X)_H*x}j`U7X{)w51xVvGp>Q%=HUv5z#8^d}Re?=EaLy>+pm?$=<&M!@bUImL6nse+A*( z{R036<;Z3Ju?SI|psA-}8u#LWvx?>gz>2lavpr=l*M68rnnLgLD@kAY_~ZC8VtSjX zg%%Y%n=NXe?A^fL=-l?Bq~_5MD1O8%{2^Y&T-HBP!mYzKV7!JT-nS2I|0yRfm3y?t ziH->Ogz$AL@-PozRdIzr@N7-u?aN`Ta|59BUU6Au05ytf1JH_Sk&$JE;@jK z(g?`V2r7+(bfY3DDJ6o$NOvRMA~m2$H_{E#9RhE zEQ_b7@l}dPH-uS!T9lBO{CkmJ)LsPJaMlU+Fvw#}Z(|6>d#~|u==Y%I9bZ{96YiPS z70q)peY~OHP(J9L!8{4$Cf^S@`!arcj|0CBPdZ3&%}712R`xN}BVdO<%-Zjc41SDD z^jylQ>*jeU=w!9(05ePCGnVVi#(IyF7BG2!v|TlS*1viL2=<8}kr2KQts_;zF3t9z z^*Gzxu*=L*zuqV=?_U{6*&YbSg5W_PC?}hMjg?Y_-!*nLe>~Y(t%pIb&JH(Al>yL` z_tLyoctyEqWX_#`d|}Fs04c6f@N?JW;1$fEAbh)48#b>(vdct?@Jguu!KDe?xu#@? z9+wvu4_{5i`nh*w$Nt6xjfMOVCapPuQk*Xk*Z5GaCS6=100U^K;L7<8KXza~1}o@F zqJ`2P^JVd`y)in_C;jd{O;ogW5xK-ZAS4@|&q=h#2bIq`e23MOBW%9+<5>w=K;W=Y z(gftUh_m?O;Noju95_)WpP?wSbtK{bZH69agzwjgz}{MeGo&5!NXy9aJJWLdNm?4h z6PGFVeG9FJ`_HdA`E^&JZh!w=7QrR#*Bb{u5Fjrz!n?99GBNNyFo&Tp#cCb(8d(+E zxTxUu1iQ`OH^7$(xq-rI9^#9tV(0!~ZXU?axA^tPhZ_=jpK-o<*rf|v$NP}1P9?1# zX?9DJ#(W9m2!PRRzkM!am0rWQSeFu?U>TC=d-KB||LSrJ+w^e;=fDtj|6rBaAml*U z0^eN6og$SeNS-gQJY`UL+;O8aJ=;GJ%_5fIvi0I=2$~T#IPiUdZ*btA*4<@MY47%v zCgDwksiA>D-*EgKErBLx_U@6P zLJGhS-q5^sR^t>2s3P|1*9^Yma{#g&U>);oXR!QBsg1(;XQVIx%2`>vN2W)u1O0bM zwVQL?=)!}>l#Vt)TKa!kjuoXM*aq32pHfqU0jrb$<~Mh zCE`3m8qH3-27nyHj{0loH7oGrSoSS&li!}@&ggcyi45x^Eis08p3xqNhg$TkWm~K#{pT|G zNz4P?ia0vsn!~jvxqyU7Ahaa>yj>Ym?xkKBqn<`bC0vEsQzIAYO!2+Wp$cm(hUMdT zmsPExI?`xVT7aWnlwHQJHUMl*r`(x;PQ(e5PEmAS{b9`RSweu!w(3HsN5uv@miKW& zk2%dl`X~`@pK{iy!CCteP$AAI$Hpx{CqlZ}2ulGShz`MyYR!$PqM8cDPt z7APM`;7Xk=;_R3EUHgb-GC#ru-=Ja$LK_aHj6SzWdYSSc7&= zm5+0#2#z^DQ_^hW2GN=dM^1T~cPargh6=r}(^1dF&{TN`T*q-$iEum&3a$<8k-m|3 zdx7VaY{#ZC-fN;b5bZu_?ih%^wK9GmNYMPOaF?|#tZ7Wv+yMN#^oSQcBv5?l_0f#I zP`3yf^a?xsF5T^A0E$*m&_F{Z-^!+UdbyXaHYAH-Ewx+h$V-$rtvc1;o=SUeIylx0 zb_>NuJ}^)5_7||N*IeI&oiT}2HeUK?FWpn@bD7S)_HVenn|1~k>I?wL_>D&KzIS=9 zIcFxkIdqWAV4Y6bt{O@FV@_htn?gsqM@nl+4v%OxPfk-fU3|75ldD+=yG$?up4DuC znh)4*1oKPqa^@G)_q=yPJ zsfHgm=ptvL#=_8)@^n_T{kIIk({Ju1A!^Z6iMFss{-IOoRL*NAwh2ALL!9|unP-MZ zAeWkOS79@bVV*Ev1%{^28_RZ&aAy_eb5Xt(FTo#sX&GyT|d!kF0~ z3twWF#)LVL!QKNdd1xdXj`A2f*X$-{hrz#seP!146vC1cCqTReG#^Xw{ff4Ic)(a^ zuGx07sncldT}x5(#BQUwxaHR5=NdyiI=&huyaUIM++_(0);M*yD9sHdxHa>`--%3o zIGHK2g(=t3D(%}&6KEuFE(^OC4+})##>775inH@?Q~IP6W*VbI`DvJ?Snjj-Z|L%C zMUi=#+y)iA*Y(Bmw646r^E{W3U3O1txc{D$KD*@|4g-77eSGVW!bdad z0{-zL{ay2~W^P&MN!smV%~bbaNqqHjmnbbP4{0t=&v!Wx`Map_!SHz(gozx zgYLW`WYhVtS)3`1L?9>sjY)2^TDFJ$uNi46RbDhY_}e?_%~Fbyh<>okk*xied%iTb@KgLFI(&m899|*7i?TkDTw_Jh z377eE=?QNSg3z)%XwGK2;QyU>Tmc+Y{TL$QJIjo{`RE#Zes`7#P4+DdB#cYW`#1Xd+xI|2Eg8%<&(LukI%ap^ zgwV-1da%{2@yT=$haT(^aXM(2&>OsMlm>(ZF`$l?VtMW?)* z-Is?T`5<-$*zZY+k#~iv=|-?1R!_Vv=ytP>Q4Mr?OI?Da4zz3`u-wx;nX!n&32rjN zVVj3ZOpY>195gTO6#n>pQfKL;^U3j=m7m_Giu#^#6mxoiSw!*NEb7kR!pA66MO`gZ*ZexVSfbM2FMdLR=-bJ@Pd0zom= z^z-esyN6=%mtD|Bagf(veb}9#I4B@7&!2DmQ$s{zs;>Au$&)?B3u9oaRJmA2KLdMKaAx z;!S;6!txV)R|J?F3T;-0C=k zpIBNSU9m8wHSDdGHKsbAvLfBJ4sp1h1wn@Nb`C%9l~bd-sjkSMi*5V$v;U_?8;f8L zIvvZt-LjisN^G;24s12to~Lq?1Upx-lgo$vJwHzjzvUB@roqy^`Eg!=xW_K(fg|2c zt-cSvq6})53i#b=x9&N~{uLG(wvOVCK$Xs7{~Uk*Ak55BqMlXZXJ;((B-j*v@H!7JK|SoEuf?1N zQTf^KcvgNuO7kacmjG&hR-%auQ@Q?(RSLK)x~x{L6i`(y)gmw*k-+oDEOIQAw}#~q zXTgzZNYg>c?Og7G@Yyuj=GTUMq!`crHCm|MmBskKvqcG~kO;N=qG=|ju?RD&k&gs% z&5=74ZGPOEZv}$U)1RJ!T&_mcdICEgtPJuUO#7%i-F^}>f`8wL9ws#_KW@2MP$mU5 zfn~YLQI>RZ4@2jDcUzA8+paI|={(YS04~9{APOVVc5?QL(IE)Bh1JcMcw24m)Zg)S z4B_H?osORsm=;}RkNk6ZjWw?kQ6LwpuUFpI=@O)Kq$>^MUpjZ2Bc-i_0>+ZIicJ= zdw0GS#Q3!DhiKBd|8PcSF(3q}Wy@lsNXk8qA}Hw#3CPmvD9&*gduGyo?&mThl|PC7 zPVf0bj3_6A&3}TR%KLATfetF0n1D%_yLNyhoXJ5#)4VglF)HC09oP7DRe5`dKX2(= z5iR&x(|KR(MFTOk4FXj?dsOyu`Oz3mN#bIMJR}+p)cU*JdVS;}u3@qlA2>}rO~u01 zT9l_M`d%t0e~7_G`Ze0o`ZkkqX{(F9Y(L3q&3jT(&53A*%r3OF;uqy@_xs9P9mj1lW;p zaH95G!I;8S_%rEbERjVKALX-d6LI5Agpe2x%EX2>Fm21W$8^V8y$Cg?d?t^#5BZ&g z=qj8ATJbw?hGl*J9h*rhDAS7vjDZmObt9;3$}J0MsSrKcF6dl!e1xhE7K-&Zd2a5+ z#s&osygB1o6v@Bst_L2(c2PtrOkhLS+#YO#{Hg7K3(Za3{$MR;)iF`C40rKrIl)ku zHLVf#T4|EdUV-Y87{^&{W%#NGXeZm{JF@swz{(sXCaZ=oCjshlIi$A9=!Ao1XACjL zy9HYmc$qRrN_lLIYhuj%?8aW|O-JDj?DQ>YCLrLU&{61lEa&NN_Az<3g*l=V#Hw@< zfo!7mUOUb^ct8qu5H^u-4(C=|gpiwoXvyYEOeXIU55sF!Epw?Kl!(=AUEUe8no@9` zyT#sUcetAqP#v`dqQ4#d0DTO!(#D_Dv_P~(@Q-)=xTq;kDyx<*dLVn}2KTNsfrbM< zewI$v#4`jJl+?AXCM`W1Qh19d6Z;cG6BQW}*FwVE_1BcyJvuUZXG+^m5 zdOGDLa0%B4wHbm}!w$CAiJ)FT?QFsuqLr}O z(_N^u&rn`pVd-1{gcH{g{d3r@eYyp^jA0fp+}RoXLyS|}pcD>S`w`#?y&+Q#$w;A| z--Xzh{Y=gNA6fu-M38Nw2aC2rd_$*u7l=GzLjc7Mr(?b>+z3I^AXdylUAR zbiCJB=}kD)6r7{J+Aw3v_koN2XRl_XgsMiJu`a}k-b^Q9)iO`#+xO?G9KRloI-;A~ zJP)lvAC>k;_48gSFvY+RR8y=?*j0FMe7LPYSluDxd3IB_@_PB9-`7zQAXf6g^mT%< zWv}bn>Tj^X%iS?u*bB8N7f9|i@R3>-iiZyi5BfC=`5YP#>9yO=7@k$rQj5nbK+TPFfcLawsFsgL5_has>`QS z4VJ#neR`tOQBO*h?aGd^)oWm@80>%wA%0(?^%0cWa*R(ocSmh)=!rw!hmqKDT=_bd;Bqb#CNK@~_LgpAe6x$nL8wZ}&DX3(nx{`HTKGI1%* zePu>sV_qQE+rE1qfo&)=Yc`Y8rk^4k`RMCa^+DaR*y!mxr^(GJ1)YH9q!!#B#^j%3>>t^ znVIy%>EZqU-t2oa;&xJcOv$EiuRl*nf&~ggs z^;qXCvG9-8JA%cg->&M%b^v&GnDjScaiHyT+kPUNS{~=@&Q?PFe?V!;gxTkN1*>wu zo2}PMs#38a;Z0$CC|7Ctu@phsy1RM-Av8)&SQxM0W4ekYGubnZx;5wz5wkK5`D^M3(`I0w1nWFki(cDpazTfb%k?H+fxU6M zI%QmbtyBo}LM?-04(O0#EmU~pCNlp9wC! zuSKs4f0AdAU)uZi#emwAUE5q-w7$sdpAin>JZ8?iybR=DtW=_ ze^&Ay!9Po$nOa&b9AY;sgkQcuf`?=y*|2>;TKMSrVDskN-y(mkT_f{Wz9~D)Y!v}x zL>?8wNEKEh3ytm)K#un!b)99mNHNxUJSw(>`upMfH|OmMlfLB#(~3K}GJnaspM48K zj@VB`6<1Q2$1AtgTV{W-AL@rY)58O< zZx~`<>*Vv-#%`RrzcQ?~Nz!TcZt$^lOa62>T&7=hXk&}|aSBx9esnm47pS4P=urpM ziv}dW@~yNJsPaKRAF@T%uIK!}kjqon5M&RqAk$f3o~F86-)v zn>G~dce$XuN;ywjwP6OKo{lyt;MD4XX3w+c!>0jg6i6~fzUZzpe1WW!^Wmku+nKe@ z?g%5uUv${UOLqAD4#%uyD3jJd<+%-B6=bdR194U19e~|h)4CdoI5#~O!W+?(4RQXP zCzU`vP%1y?@5U^79`KCe``j%fzc7)W+0=ES6TWg0yhZ%))VI@6(|rdZO^6XY^#fJC z-}dJ^O;~zKXvPpopw<$>MkKV!v%l9MtMc0xn^DK)e!-`$JQxo^g7}E2L2DI9C4(V< z!H|z*G^sGYMH{EP*$;=lK&N8dmE)WwJ(^rH2ysy&vA>}aeD=qHPi0djvs4m}P93Te zL{>>+c5t6J4~@OZ333ZaSU=*M`|ARh#H;wRXv3~RS8zJianjK7GQwqh^Y3r)cHO~# z;JG(L0AxDmwg}ny*HLK4B|s8VR>TZYA>3GAVi|HlAIdblq;LXC1R{T#04aHEy)-!r z?roI`1XKu+Eosk6*Hkq83vBUzWsSb$lleg2tt=os)d~5<`y)w_x|f+|z4wK-ia=e8 zJ()iVy)^HB9AN!UP9zc_u!JfzL>&efsmM~dq0A&P(fE4nApnz zaBtunog%i)cZ36V7JR2FHOo##bkLf)`lm+G}1Ii1yap z^rpi_rCG-g(Gno{)p!nt2#^|^zl{qqneQC~d3l)BGoTeCY}DL%CS2uo=;(aq%~S-REb2)D1N&h*lw_8;`1#r=wh)W=ty*0QX5rGz`jZ&Ir+qp zS*%CI=caIvh)&j;_C4yO(Oh4kEfO=nK9xa*INsVXmY)m*enFhPV6hxD6S&{112c`e zfxZA8UGvAR;~dbBp-Y>kfsTd>d4=*F?zC?kZ5-*K*M0ACL5~-Bh)Rlb;^UjRP-dLK z7%B3f{mrPvh#fPsfn4Q#!7M>^i;+wAOO=$&CFuH0==~85va1fp8VO7600gTH zGC?UYj%wZhE}lXyy^w6_8#Cki_6lvjFWw|8rP3TY?mUPjr38q4-uRZ>Sbn^7gf_IL^)O zpUHjz{nb~mJL>J9%}nOQn_C#Aq(O(c&`c5RUNR;V)Xfb<7tqcv`G7;`k@?SvO^<+4 zv$)=kM$)2oh7!MP2rEkouG?y$Q z2Ec@*1iFi&_UexU*fCfo_HHW?OiX>mJp}xEKCu3%_B7-Al!*}e)Z~N0{KHH7HVig2 z`TETo68N}}=YReWFXj#C^=pX+eZWZcwkT%{viTwy{hQycAC@CIgpY_(-T;j|ffOOzO7cZsg-bxZ zVR&#R8e<>vKLHBc?FumcoT8W z0>1$Cw;m6t8api+sx?jUX=w_vlLWvieCAn}15Tk&eeVgN7$_!If>tGmX|MH{KyQ`OloAwRr(wFj8exBRA9uJLROZe;?{HVpAuuR_ zH^Xmfyvl@2JA>1J|VM|I|Sx2*vDtWIsR%6v!&Np_vbU<>a;3iw*O@bd*u{x zZ%akaL;N@GCl#-cv-4I`a{zqD1ezAbBf1TonFKC*z(ovF_U(cQbGjaH#RUS5CWkj@ zaeot3(h3ShYZm>f1F4;FqiI!KAlgPV+%N6uKfO1=3ciNVb~v=d{An|Zi1PLroc$hx zJuh;qK;kqRPZKkHi~tP=NG@M{otLERMyx215-7FaTkLpe2ZVUN>ad-rvBM1;oVrsb zy(Va*=b%5&F=T;#e+*`41}1e^(!HkD$1|k;<}bkZ*$MhFCK%j5@)6qz{V!##ObpRr z;%IkafuI@dd~E1q8IvX=TR(ZGHDaM;lPMgfJP#}guSIuy7`^%#t4j5**Bvp9JI8!Y zQg%#A0PdR<=Dx|-D9x}#!QQ>41rF##y-pWFc92#nVf_FhjoCm5Bw0gpxt}(x101RO zt^l`-6pT&)pwA<#h6h}|=a|NIY$av$%MSOB+qJ;_nzabZ?EzaWuBzq{E~-?W@&W)+ z9k=sJ!DZ034D|i#cgo0J!u|11df z{3_%S_|mB9Okjwzz_|Y_Rb;H8=PuM>S~KTlJLJz}iJllU+%B{(I$tU(oOA6Kpl?j_ z#9dI_OjaH(cg;Js33{J*S|;HNaBGcC^)>Z>#ceG>ZiRTf+cYqc_QeM1?tjz;RUo+c zYNuN9%df`A9~IjoF7&^-fMnJd4(8m|Cq)odxs_?5zcllCLA8my|B7s3vkAv1+Wh4))7Pd%f zA;TD2ROGVr>YyOlHTt!u+g#gib8sz%5yMbpbmlyi`Kt!(NUCVLGBOaYH`ZsS51eN~ z?6ny1{F7x>JmBi*y<}Vff$nLwo)7?@B6ROgY~Mthht?hMy-q1B6a|WEe(|A>Ak!cy zjVs13lF7$h3(c%%z(E5(lS6nU^nV(3UJ3YZ3OavvfxCG)RXGiO?W;%Ktw8MH`ZY@m zxM+w4I_swK@wS^#X?j8^eyCx+Lx-HAJ(zyU<7dki!QE53Cn%>W2#0=G77#>wQIo42 z9D;ypBTyUB2!OhZxhM-484sr-4a5Jht3S+$P^E@l!67i;99)F9`$s5# zI8G~Ym3G+`V7kwOHLr?1u6h+>f)H&=3Q0MwpYvXlvDxSeoy9A|DGp;ae3RhLVjcAUMy5$>92xVj^e^CoqG1p{pOk6(*!DROxV+ zB{H-J#3A)Z%0Oae^ya8(gs}b9Y>Ce0*Bpx(qdN~tZX%0Gd+DtSkWE`%)}2NEoN&x_ z9tzHc&t?E%{nC=A6eOCO#C`y6Iv-W zFqXcUA0X*`v&!m5z5ub6Im&qvW0Tf91NkHRU?jIG)N!N^XY)m!inuHo`Psr>8R?FB z0;n*RS(3X|f#`HMmBUb{m%!9XjFxMP{v}Ekz-tlxc0W<*sK+NC)dcBeBrKR4aB@RE zbueiRVRT^GX9!9W7h!LQg(3|GdyqR$?gH!ZtgYe0SjQ{yag{8-QXoQSv(|tl_kWjx zlLP)hg)E{62dN*ve|F~SyuYGsox?Pg2SH%gk1+Pk^hsLhYn!0jW{S) zqq&;oWPUScLHI=`NQeQ`t_+hRascDz5B_@&nm@jcxzh?A?wnc#hI#O22V#wJ@O$Do zPkF!<&#;@a$;G6kzYX(Qp?=R#!qhyg*nsZ)zkO|W0qBo!SdaiP3j+WDO00FUn?E?jUH_PpkVFHJ@vqmQ z_alK2pIGfU$hVavMCL)o{d8P54OB%xU;Qu7Vh^qvcou$~em>vE`$iXRkVTaf zP6vF$w4x=Nv5@YUj$^QoB0{M5LPD?oE zp+c}xpmyI))+j5T#{wqMhNDu+Xyl1|8}1#f)3ib{ny(tQ6Elg6XU1dc+ZHFg;ezC4%b4IC|s)7u(%GCO1`OrLrtRlcRl zvvDYg+X|%?^B=a&3J}ZN)@P{EEV|;2=w#|B7eBP+0ANlj2P+k%WP|T>WVhEze#DMbmFj1TB-F z!9}~wc52?*)g86Ydn+Eaj9VnreG~9p`7iQUbzTR;7hWrC^sx4h(keZz6%NYqhm;sh z>QM--lVMFB9_;EVA=Gcsir?#KYnE$-M-vP9S@xG$kAkKp_^Em_$epN*b|F{$ZW!!MpgjFguaX&K)=1XSS9}r!8*M&RN&Y{2qgP zDUVXGEZn$2aoouR_f{%t($V(;ZVwA(3N(3N<<|Ta$6z#W8%dL>S^`j^QUO`g8wlyU z@QW8f-{k4nm6(w$j;~x;L$cDA)}azhLL51j zaYIhf&<>`Yu>1=B2Y3)Wxz;v~8c419C z!>zrMS$4HT*O9Ulr}rCsu}8dAuentq*pZIjH`V`$&<#!|$?>%t7O1oISd|9y8YHT- zv?blPd}wF8RNHPz`10ApOI-P=vrb{1p7~K_jjlE-^-`I->?4 z7yukXRk@TO8v-2ddFwkmE~q_QNF6EW(odCvOTYbxeGL?qfq#C~^UeK~(N}9?0%?0j z6acRCzz)_JPg7Mz3iyRQE-L+C%t|xB1Y9*XuB?n*c3fVAW_Fx3u&{7hPC-)*(1}&qP`o=#}Al|~5VkcH1<+Evk5YDp&r`xtB zRkFVmkZEtRltpPEa0Q@^6a?i_0@wV%DgUp>KXdHC)~Bik|dO zI^BlvjC*0nm|cqr?Yr*_@eyx*+09cF`d4dmSE?Eb_*aG-=I9ZAZzoC&IGqvpwt&FQ z{gTtQ{p9$wf<7zq>E%T=CMjJj0P!>``Q&vLd^RLJObp{bAL+(mkix5Z5VP`u6ZF%4 zFnLdM7@l2N4Hz${ME9h27use@3_wDsZpeulHSxO#fnL7=g(=7d&tliqwKC!0EU3A^ zyn5MBP>qk0Yd_HlXg^_$CKdtVoHXGmkKk+4oxNCBwJ!InoE#Del0t30nu>%3SHdGY z&z%zg=WALf9mdr+)6MJ;MoDhu6dblG+}nz#%R{@Rase}3io1rc5@c!rp;qeJ9_s^9< z-tXLwyj?C44_wZyQe3br+3p3F0xDR{*{c(GbgyRi{9d<5s8g*@yL+}jI!}S$>=n5` zTJT5zj((0ho6&_DU^N-XaYQRzf;aeDYobpJON*Hfd~Ne=^_@-NPV}o>-u#0G-eRBu z40WCgk+1RK81!G9C%I>M);{2Egiq^(#P+Noyd!>Ggfu7I+h!w9lBcxnN)4P8Hd0YA zu8~c-hE|KY2>g};+Ow-D4NOjvuLu4h2r10yall16T7qNYHKjPjP_N4WCr>~f0E&RN zR|>!Q3WHy?zo;@R4MdNb%O(_oD(*QhH}u-?+B*LFe8J4hG%0DiZUj*f>OlY#ZSV5; zPJHWeacOnmSkYEPqd&%|Cas|ig1W2s_D7#We@^e^Kx`7uz)!DlCV89;ukHFwr&A1$ zj|KCn`;dkkB>KXx=jF+AN#PHkgARVoVcwsQavFgP?*2|+TRZ5RwAfzJ5q*kW*M5s6 zDG_*j-sSi4@i*(k$d&wvx_;FJyQIxWTAHCw_PYjV3T>SHYCE}i38HFymL(Vy_T9ho z_IE#3=iAAj)kbO7Xxag0Rd1Ufch_a)z82@PNK*QA>jyEvy5;F+o>3dYy`G|w`0&5# z8h1514}a(2vDYo%V=Ue>j?yL(h%s|p1;fiwLr!uO6IhMT3WjY6AxJ+9EYy7hB#vIh zbXQtFcx+KsuV5go-1(xay`X&;N5ei6ljBy2_KM$g6SO$-8cHI zh8Pi}kQNFCB(7v;F>OJnpPCzmsu8?e!0X8nh=4o>NZ|UT|DNb3@Sz{K^bKVGeKeZS zP4uUE_?L-qo4&a(1BmUlI1Sxm0C*ZSSRzo?=|V-HuNbMOlhsd#a5U|BYWlqO~SJ*`g*V5KF}C@ zWmf&HGn=I@NOTh)AOla~Dk_T!!aCwn?w9lH;B4zMRr2T{ZUMbHW{*}{bLHP_)g z*5Q1(cfxl4f16@;oahI6^2d&hM^C6V|(t24=eh^JcS8ow*?f&F+q$oRbwk=iJRA>?wfSf?C?8g%N|8)vJPWqIxP4jW&Smy1s%j<~Kfqd?_4jAuNHTSP@`=OL9ye)>P!Jyq85xKF5r}wF-=Tg7D8QjhhAc4wpr!u4|Bcb)C2e z?4pV}`{x|7PeSRbH)sdStcCl_xP%8>1IX@%2mSU>dl{UU+CBcDXH-7#c>RrhyG>}nl0@>JK~<>a9>DG$OH?aCBZiOndV6Oz_%u~m8T-Z}K!6e~fUnv5OdqIT}f-ps=UKmUd=3R;$hg`b7O%1G24 zU@WNi+z)aT`E6M8IL*Yjkh=-}l>FwTd>V|jlur~i-pp9M^Y)tG`sFyBdM6~63^$~d z;0ucC$n%!-fD)BHQ##-GSwF)zvJea2h}aZg+edVM{441%sv&I1d$9z~%e`uy+wn<*`DzL{%+F#G66G zs|P0tO&bXv^7cG<142otPQbRIJs%U8Ib=cR-(*i=$+U6rkB*8tKN5=RlGFSUCSu0B zT$)gxQkqbfQv9X8KDF+40Ez5MFy|t%i2Q6KPNF(F*@fWE;Tv6Zcy@TVt8}Kjf>|h) zaC4$4<;g1rHF5iLV4CW_s`S5Rl<3FAkF1etwUX5K$!XMODTZYqu>3C=Z*x2x_2ho-nrUD0l5FK!2NAxIdbP-&NO-->n12 z?>wl#QyF=9I8iFMKc2_GQd~Zmw4gd0Rl}n#+7_nJu9S1wQj!@i@uf(={}-Fa7eE z(S^2~@Fil|jzP@hwT@2G`gn0dVL?H~?x`N>lj@BHme#2YMZZ5OfDC-r(rS(_dzjMmf4_b zIl14KY`R=-YIeCvyLrPrf4xAyCq4Jb7F5j`LPgImD2%Sas3+h}h?zPW0`qbksGQ0= zX+L@NB6l8)3GUU~knrug7ENLU->eNwuM2Jb!ujbjrX=fHA2e*};KoY_BCF;q8B(@a zCn!?q!woIx?P);`ZEbV>W+(!i+ZfQ%__O6AD}_L__q+jMi=`nR%Y9TD8XCqxJrK?d z+768pGr~m4bFP#66LL}XmOBlrjGe_?Tm0w2U%@iBBz|-5&^AZZhn(C(Tii3C z4(Le$L_B;s35MIY;50a9X~f?fgv7nHFz-6pw;bO561S-b@T5=@AcaL~0#-0RAUFJ1 zfz59{!-$b0zKz)3``+{sXo!~On~4gTeUi=br}n4jJ>q;N(&v`#W^2J;Cwp$p*gH&xqq z9+Lv>!aX|um&HB2AQd3s5hUue_DR(1s3dq`vfR)<5*zCgPCJc7GSJoYI9Un-ii^hm z7{D7pGxY|L7!%0w{u`zPq&k;;%5XmoWYPc`T$dS=^0JB{h{M+2QsinnBw7@J#5+`CO9x#5TVedsI#?k6Ob|sLzvyxw!a~XH8TUjbp?W^1V3ed%!Fn{Q za}@N4n?&*ctct)Xg{s6`j2;WW-<9{%3~bh9aSg0+`(G6uC1AsNpj)Nd5+tSYM1bkz>v~7%qsiIMTj}Uav>Y^us#-%_kdoDV*zce z3i!+FzjgWGYi#+$y$wHxL038fol z$D^0Sb>B6=%hcFRJ*sk9S5Kh{cXhN{o?>J@*Koo@0NIU8Gr)Pg69oq9avA}rD)(SN z?H>hU@c)B?@E_DrZnD)L2k`0Hj3n+s?STYM)6s$TrX;4T{mjK^Zgy5?9jKvlpKik|T|6_yvSNV0t`HztTj=4LsRc7y1>59q-QouwWp5!l{V{sy5X--K@W zrw9*8oc@Us>I(|s$?CC8*?pdJ1#Dc0HLfv&(J^{cw#FF&#c`7TT*Z{5!4@e7r(cZX zD_CK*0!evZ)fP$|pnIBIXP}nq@gMP!2Hfg}C4 zC_L5NCVdWYA#Abzn+g*h%9hUoz2|k$4A9M?ynzf@Q(BU3!&!YrbTeJg!4tHiF0s!z zax{9pC3e~Baxo4xPlklu9UsZGpDmuD_J0O=Y;EMQRDgMTzE z3xJztTb%$`4p7?viO)xt`7AIZ6jvSrI2%6OzqI;uHL#}q3pVpT4U`Ywl8 zm*)dO*3!mB7?z54Z)GW6!1A*oUfgq06*eY+kYu3PX{l4{PpYV@Yw88^N-OQR+~+z)|flq@VQY zZ{TucQ_flc^*n2Er-D4fN#tAk!uAGh)NP53cs6gS$Mw4>$?H+WT++}WflE31_FmmZ zf*F*13*bS#DSwl`&E@J88AUHTQv3MLpkq+0u+J-m6zeES#n9G6AM3M$lFqBj$jvtz z_;PbH-et>A&P#UODFFfe0>t^_{QUnOPW;blxon>Um?XXeac(qMXqD7wy}Z%#AM#5Z z28lP2HD4fRfqiOE{S9W!`4_zRBP07B%rV1g>k(K{>+g--M~op>!rvhR`8c~`SKnpw z8QoRHF=qo~B^Ikl`F^P1^lr-b&O-wm1K(3q@rw3ENDws-rL3ZD+wQ5ap=`S^DjxG!%Od@PV=|Hnmz9D$blA18_g-fN5W6e;YX%fz5~36%X*WjF0qCIRR>hBh^Hu9xp^sowA?`rYn*AUN*XSRz6N@oXxv zUcI3_?c>IS-Lqcq#4s|H&2*~*qZuN&D57)20pb?C4NBzenA>wpjB*XNaHU<7Vyy^S{)&v z&b4LpHZ9(BHZ3l5dbZys9z^?;CQSnNiB5)ID|ihNx>M!g%X^hN=>U7=wK6pTq0h|c z?zP0x_|zve7{qiXZy4jTW3@tLVYTG%9~V@;NXjXGJcf(sNxiX~19JdRD{$ zbr@!pjcfWIi;*R?0U>da=>(`FB?S{wPj~!lSqB~Dyfn9a3b~**^nNP^r0F)JRRzS< z)^mdJbMnJQ)@?vo0kQi3B&-17lpYJ^jEh)E@yNz*D=j<)E1W=otjUWAiZ9WKP=`34 zK_ssCFNkm68xR}Xl<<=V)G=HzqIcIh*jUC9a&PFekYJB2yZrZjzOHHlRRZ=PI?#Ft zjK;oGfXVEKQLvRb<3&x$nmQ9Z@fh)r&_3TTOIdS)t6-gFV%7w-7!`K^7&`4_{M%AH|_ip1B#yOsVT#-#`2BAA|JA z=0N0!4`n3u_=`~waQSXy_Z9$tu&>3t|Be93zZtU&FoS)qG8FhHajW0PVHoD+Sz)#$ z6ll%|2B0OsX#&hmG(tCm^CzZBvwgTWkpV4WQKn!2y_Oo&M_=(Hbsl0S_LqoVq+%N{ zmi|Wm)17(##aPw15dUv_e?XwCiPY_RlOF5jzKhX^m&iBx>U^V;5eJu-z~2@M$8q6@ zpeNg|#+$FsHig0&LI>f2Ttp%;_s4U)ZP%@lH!>roFV|Hk_IAu2-m}LlbrV~?WJ1bh z()Gie!1~@^cwfHJrYTvD9^UJW&zF7*>OZwjifZ?ElaHS>NQdgPH79slL+=O*XaEuERYZ_3y(dTs zNRj7@*i~Zb^%W%gX;9){ z|INpOnr$2aSJYWH@1J1pc2YLZMsJ90;bd(yz{CKWfv0Qvetn*$GJab!X0)$Q$fAq3 z1+#U;0B*46l8|PYVAlJuCRaKhf1z7-KW5H2{p^dM2IBKSHTKG2Fwj*+!H*{wku3iZiZX$$pPoMqsEtPf&^pC}JgN0a1O z*}RWBz=*I=2tmGD7(@L%`^ajXr|!!8n_taea=5lLWfAFZe(A6hV3lrY!w8_auldpg z6A#J(J^(@XPx2bj6TPwp>a2iX`7P2vo&VNv8aKk;m)ZX0*BLCy z{jpP$Kq-=C5j9~wMkV>z8%Z1NLQ4e6_N?@EYdi8zUzGo(qOs_gQ6TW>Sb0ygFG;Pc zziz?zQ)U-o+hK|RrL0AcJ{UV;V6eENEw6J%LS+r{4l&3JB#VlAl~5mTO0+a)KG-)e znxAQ$pd{od_@DuF?907fE{T}f9Sankz4}yx!=%tZ<{?$|tc`3d2|)rbIs!S=XgZL} zYp@3F){lP<0h>QF<9{VQ{|HF4_Kh#;klvm7u? z5S>L%=_|=R(`Mdd=Ij?!jXm22CYi7DKP<8-9#XVteOkAEK^~Ef(oXp}f9H@r`YOHr z(YIu|0AK$1IIq_gcgLv4qSQ+JL^y9vdN6tX$?aF+fpnim)gh8U!1Fsvu+FMNY4tz6 z0b)vqW^$=@P%Pj{TEUVZ*_PXrjxr9cS2T>4VTxrGh>~F%yh@8R1NYSgn{1*yB;`sD z9=rwUvtczPD3x!c=LtmA6ic^r06hNA+V@)Zr7D{e zneOS0n%Eq4!Pt6i1m5(+2S&r&IHDric1F8|PljFa?O z)9Tjl(MCU6UVdRaqY0FgwNj{;;#&V)2>5$F{qYZ`|TL5)wEnTg%e%WrEQ z{q4Y)XX94R=i-e*_q*HHZVrw5KX!?vUf~_hb9(!}+C>%-muUz4d^B_kRxXB@KCc5@ zLmoiMfGQIuR_iQCrAe{;)yZ0C;q>e;YhHUV;W}>+;+eZ4v+yyKj4Dx{fW{f(P#0}Y zT_J^7DBh;C7fKM^)(d_O3AiZoK$uPPTN;8UAk2iz2dnqkprrA!XI4SxQ=z~ayiRDSeB35=Y;&c3>FQ9>_2uK&Y-U0LfS=vO_Vd)! zaAa@|3I&}UfR_s-;^nkzbd3RE<%{ZEH)wU0SQcCapxUR`k+vY*4;5DwgH#~*N$mz` z>iej*)k-|4B*V^7L0o=D;9c{KjO#;*5NAc+RFywK-L}~u)KaQN`xQ8}Z<4%xik$P= zNN{`R{u5u>5z6&d-IDty{2c3GgYch^PM0;fZcX9|#0d!+@A?`Y-1kW*y?+kPL4!=t zDijy~eCvSFx?R{%@O?T4u3d%q%5O+@s&FX!@W}a(Kk!DACWu;4(B=tLlYfBn(QXRY zlG-ecG!iFpQy)qZDwW`r-guUeg08 zk^R52bB$m;i%3VUB3!MqHVTp{A+@DM9te=cdWDF4{02^m%w0oHxGS9Zbyx@OkC_Rq&RthIT}|!yaaX-4&W${sq$bI!<5m&X zoT0%UiIj>*k4R`)Z1-~>;e6dtJE3^flJ@&BLYs|1YsAF`QKvg5wLf1u5aLUIdQrS3 z>rdAa4=^rIw`_KjgUL3u-0Quk9yDSr{h9kOZ${Rv{K`+tK3$U+-dR#e`otU4PFqci zpIsOh5pHWnqE*>F>TAZ9O1f=+G0BrPHObe+vPGsnCxtTr#m`vK9Q-jAH{f9GyRhC+ z3)Ha=b@cx^?&RNy6!p6S91!z6I=@L!nLyMH0iZfwe2@*aPHFMp-)`x^4_UAEv;&~e z?KJc@j=JyBlUXO=dEFbEDG{^^uxj$!9)&a2etXWw z3mLM0J?1ByY!0-}Lc#avYdG4hgkFUR!UJv`6L>TIt#syu_uI1~Fud80CX(KNvYbM7 z-AQ%;mVY2ue*yBiqH~tqBK`YEN9w~l)$QXiYHZi<9jlh<<(Ar18y|J);Nsi2Jfhur z^}m+_x0mqESQqqX`i8(?|Ghr|vU(tPk@*q&qk5sE$9Q4SNu$@T!fuVuM}N{j!v|+5 zZSKmP{m8+iA9wp5BBo@>bms6Z_Kps7Y@G!DSL3@@l3U-Fcu5Xj(e2)&dGh!5d9zoA zGd6tspwrN?yv36Gr9h7ok}V%%!44?#od^frtRDUkEdb7Jx34&s4%@V^AuS|O_(pK2 z#7k+Yb9HwW38t=^v{&M}HPHC#1cdwFQr6S11|(>cm|#38A52~xTbDn<(>vIRHqTwB zUbb(oYGt;7L{HzTxESC;m@=73rnZ=}HMaJfu8=QD`w&35A1E5WyCFJ64%b@Iu~$OT z76E$p&N1Rltm-_E8TK~Ipvoir$XlPwNQg|gE8tF~OsuN7|EANqar&{#RG?=Hm6Sh3 zNUfuJlbj4&-}Jh~{-XXm`yvAEj`H6bk=#0@%5{b#0R+q(>u9`q4%k#q?FDqnab?x9 zX}PMwsM)(o3GQ_xA+VHs{u9U{0h_Wwg9Lj@7(+TLr%IwBoLO;wX&CqA$c)@jExrd7 z*gvQ|*!ea9qv&hmIGeR457;IRrqyI#?p1@WXLLX; z#v6SqE)zI9`=q?lWNpF}>?W4MZM}(_!&HZKKT$)00DSKm{W1|T58L98Z6iu% zSbUTtBf-}#WK>XGBai04wCC|CtQ1O@eiQH__jk*pJQhgw46<;FE!GTD0w5+g5T%pjl!d}h{1ianM3 z)J4zATKvHznNjW3yYrA^nQ|)EKrY=}^Ch_4Wu+iCZ&_;;Er#A5)(Hxw+Ll*2;NzNw0RxPdprpyzpB?Cu$neGK2+wp zT6HCM72FV?r#nR7ze|aFoUZIH5z0(UE!5epKn2U+;tKUsToF=vs-pc59ISdGV*o3o z{7*Yu7vTN$B%ob4bEm%0YadGg^_H#FZqH33ttZTtxY_xq9Z7Qhv~;!kI->6ISR{&_Vm`OOw_YM|c9=_JB4Zgc$q5wrDcX2H zOvjTA2AK&SZoSS4%e;|4oVUn{)l7K>qCDF*^M)t@0*!0MP?BS(a~ur-@Z0kx^EN1T z+~52%_3STeCny%Eoh6NkS()T+Q!^5k>C$_LySMl?`-}h#p_wRmb-W14Va--1PUzVJ z?VD%MXs_7?)5Lhqde<-7ODzRIhteX1krJ>_(ZzWS_xey*E*J&#I{*Gt3BU}sPiC{wf@Ntv2F-TN&)Z)coOa^g9xSR({-8#p zu&d%lsm677g_m38gFiClg96df)oR+EoPj;}q6a>mVrEY4ih(973Aqww(9ZG*YqY4v z&ajS_A#D1@n*ilg^v9C-Um^`X?~SzX>GgJmCNV}c-p%%B*B`(Q$vpPl=h z%pw_g^i&@8ib~mMlEx?~G~2vf;uGpCi>psLXZh5b=~K5HaD1BSkHg~3 z2ILtD4>D8@pd=0D#XaESg%V0htoy`K9zUx3U9141q`F^KKEZ+2nqx4tKV4dUB{cW6 z0T9ZzfOaK%7?&f?d-eOT_IJI2A?sMmPq||H<%m^?kiVT8d15C|vb!Bw$9f=(UnUHc z1gY_`@v^}Yf&*)i3s`DYdP}l-|L6$7k^DQBF(7Y1~gNDADcyI^*-3>^tBfcOUdv zOaR(gF=-i(-)hNAgx8&5A@J?Md1EpdKJvDv9XKoqIRXK?(;o;Wnihra916 zIDoVCLn%?D!xECNav^QRDL@)q8zpLlknPh&%JmuKj8atG68yO%{M;58n9#c`Um@#z zr9X221W-^{U4m!GZcVTW7}NCf@qW zW;!!|TTmF$S{8cSW!q8`XOcbj`4Btp0I&xw8$`JW-+#_A|IY?5U_&fW5+!8D{%bvL zkk1+9{TIKb+!vr=4F1(GcUZ)ATg5|y#EpUl^hNTxuWk~6-dIJIZYXI9HwF3l^vK-P zpBJinCt1DGacG9C)YmgxvdEN-nRmm7mlb0e*tMvo(?}t~79?aGpkKx1ZSn2Xd%%!j z*eRa?Z5J`nUjcmU4xi|Mmb;3Pq6{jDJX!hc@A=n>;4|^E5I2P^KUU8TpB=qL{`WVe zsCjf`4=d(vi-TblrSSFMyT@AfNRD17hgRz$ z8JOqcK%$%-c`x3VZ|AM`1enX@2=EcIsTb1`94L?WdynMB^geC;@KE7NI9L#FmKX}2 zyBnMT=g=+sMviqJ&jBF5VI;r16;No(gDhoK#I$=`<3RSOxec{Y4bQf=sU2mY8f5I& zlQiqr%Uqu~sBd>9oq>OKBh0>L{!2CwG$wLJe(Zq!y^b$o3RJx+hHi~j0V-_4Gr|r4 zvySDy2h3Hr?2H*FOsLyZ_#IL>TS9wvg=|sDw55It0YJ>450>@{6fywVpvx z7GRn%cilT;cxqtIq8nmaNsCTWn0#uWzV}x2+ic@BDaLzJbn)X0*PfBqV3Pa=h%V4D zs-s_;M1rZ!)pVo1y5WWVi3Sw72wICE;$Wl|+Tg3f9M`T!$%NV*DCR5gwT9sDIq0V# z0^m6#sV-(03X6K^Hlk3WyU?kV&+_N*Pg0V_{r78CSyZU9Uq@uvC}wAUqw z{G4Ev6BJtIp48(cd0(M5>||11+IVVcFHMJ3u=iy4T^`q#nZ}k!a?8V_1O3l?^+S5k zo?h2Z4rnL1s~e;_r#2>Z+dDdc47!-|Tlb}A>qm}}1@$SkTJ8bcI^I(C$8nQ-dv~bD zO#5rew%?UC*-o%xMM0~Od8hhkQ0HQ##YF_dxhGx-*>qkfjkqdV`3YvPk8tbgppz~prj%jWt7VIQsO-sACR&W$)vdL@$Xre{9I6z6n~zxAb8q!b3Zn&~fe#)L1$Qoj&o2o_dR>fpAv zXknqa5%HAwylKJOl<$B61^u6IP>T>JNJO(*<~df{jX?4JW)k+pZakj*s*_ACdB5yl z+T{RgGWyqaA50s)r;7~BbXTo)Y)euSaT=_tR($+jpBvVX113xv*Me#k;!fOKAI2jF ze=3l=kUh9}bB*M+Z`HG}cAwZtgl;>3xICMEP*8cb^gDIdwPAc+=mTXE2y0DliAMBR z%J}&*sT!f(F%->CF5WTSzHyPb|D;W&vU)z!C;H6^xph*twWqptyJa9Rdv@O)3lDKo zYIZt~rx?04dM!&>Hy<*A(SmnyUG8~$ zPp3w?B=hrJVCt98-5RA!dbw77LESCPD|t`(TC&};2Cr#ydQg@m6E<9uaNU+^l6}+8 zVjP<9(r*b{=l0*B6G9k2%@+)mx&+`>149@<@areR-VsS(@V|7WR3?w?SSaJbG=cAm z!(;nCQTbr>{pHP<2O3=!jolXQT5Yl&%I1$v&)=ONDOO9})_Jx8Xr`=hPmi|x-?%UL z+zTXLBrDheM zkVTTtyKf6OPN(llr~AXBxfm{D>R@?X>J|;c)~Ioxx}_whov1SBmu_Tsv?ju(l3T~I zuL6d@YL70?G6}R=7*>;i)6zYMB00k_bKaA*(|!dc9;444W)K0MS#S>_iXULo4D|ed zf3S&MDEq*1llL5bh27Gj-A?&wO4kZ+?>l-rQNakkgbwL*W^zlHb%cEqZXux$+`X&< z>6@FbnQW={tSJ@2T|Iuk1N$upGl}p-R`|N!}xhZ;Y*Ie=Ue$7zK;~RqQy)TRPsWDk_efC zskl_jZSv-^6ElZp%}DI`9aoFSy|nweGud;w{qXN0eP8bmJ%OgIyl7v#WaspI!|Sn& zTX_L9v?S@&`BA$=<0YM}G#3#KgNIY0IXhi~!h# zQEoC6>0DpPXw#Ye$cW#DX$!8|H2`m?Mst<)Ef6TJ=?6W!G@bNNzWzT74g@A=zdf0L ze(lO0{$Bq6b%@gkDw@{0#K7~xlajbWt?w5SJo8f*0tj?QZ*@q^gJKhcK;B$DMrV;$ z1l5u|u;~hI(LMt%L~l~NXtIvif%?}{<5TD1^7nGQV@ww5DqG+-JnrjSdFi}#EQSd3 zOX&A_l*#fLsXm9M{4i7R(Jd8R3aTO&Ca1)S8C6tFH^${8G)ey@zr1!c?FiKSo0Jax z!55y9UlTV-QSxQ3NAc|+>Kv&o{GZB1RSg@N9v3UZUE*|?0ltXEh#zVF7hjZ@K_{Wj zNh>8B+-730_)^qm0?4JfpkjDjRAkRJ=7#oJFj-8Vzxj=ejJnwsCr);E=&_cb$wCI5 z+|q_ncFoi-pg4->Sohmz+@+vYiR)CL1c*C7YsL2x#AY_FjZn>`+hcaEE=l;!Juor( zr|&e|#arvq2fq$rc00b3snZ-(e zDNWMelSB7@-%l*h6zSMs=K@ze8nR$KASNEI5O?hman}yITq1S5$>8F*L z_c@K^&G`27E|2R{iBrHDH?<=`TD|Y$%!7*WiCd)QH?!V;_WmXB60%&bRKb}x>v%!_ zbfOW+vfQe1qp7R*Tti>qi<}z$5$aTjNTOJc5}*F2`MdA&)%eibLf)xD*zD{GOQ5vL zDYP$5m^h3^ds#7o?3XZMrSE04($M{wLdsduP#|bap z5;$+MQz%F1k^9O40OKBKJ(`G`qYeUN#cJQ=zW^jP)%X&_Q3_D90(m>vC7^YV06^oh zw3kjhbpPgwZ5jus((H0B=2XN8H#d8^<491nMtJUhxbXhjS)6oscNq~9;y#~qO-m2L zY@OjkQ8P-!N8i8mwA4E8hQ^C1Zmp_-0$YV+fEs_c5ri{oP0hr*kulQValI`;Qp@ad z`?CPWZ&Xci&@8gl9f&jQq~FQ}oy0?3QSC$`hfB%f>^=bJ^8H!?3}$mxrRCTQCgj)) zvNA|Lp>@M2^dnBwoa9)VYe1RAKP^0E$Us|%3^H@&La8hzkRa2d$Rkd+8zBkbW*5pB z0-;&qUSDOfYzDH7C`z(m#OZjzouwhhOQ3^be$l?u&Sqfzsex>NG&QLFNxpg04U01T zESnZ6Jf@`*^kzGCy@W&?qrUP;{->n+?4O=W6GdI@H4XWA*jfoqmIP*2g47*Ff^Bvu zWaqyn8#O`NNH^E^Ex`tP0nMlE_3*YpMP13){+-Vg87oPvwb|=TvyG*mT-ox30rON#Ug+}o|;QB4&8oJy7OxQRa`;mso<@_Qk=m zP5`WWXST3)t(bq?v`SJ7wAUj#ghN zE4VIzVpa5%^H3Hj1aTzy$;DmC=zK|`RnFd{;w(P`a8LQV_&W9PwOaR>Jcwh->?@Us z>T&)+Cgp#LCK|_6qcD|=cQ(K^<~5*XCU7$eYs$Y;G3ohIc*B?}fR?}kv>BOKw%Hc7 zY8PBGzPo+1y~s-|p~*ugLHE9GF_oc=X8f8j+aHb7wjEm%cuD53?6&+kM_rjMGE7KB zQo=8T;1j+vwp#?#YvRW;gI{6iNuz{I-T|BxMviv{NPGrpbJj&xqw4(DC+j=|H+2hY z14T5sbDYg9?4pWedMJiB22)}{N;rb!O3>zM=D_YL@UV>cy1bIRMb68VCEL-t5xGiP z;-bbXe(5Cp(K|=9XZ0L}=2nAepmjpfQHJ5xk8s>l^3`Gu2n!Fx`!eq>%x)ZR-Yc*7 zx9Ax4#7YWaPy_QvdP!MH|9 z$Ys^j0ufPLZyr$(MV=w8axwB-UIs}|LxOFs56{|{JifUTgXv4nM8sdpi4za4{NWO0 z;gigMi8ZgFYV$KvSI|(C!^Y^Vf_QMjecRmAZ`4CB&;9AF)-*rti+oHg7XOlH!`CQe z0_xC?ACMa7ag9d-E%=*?>>@cP8BKiGR&*eyD=BKdODH)jvbF(BO+cAt`SqL%Vh-`+ z+o>AC*u209v;;H5!)te|qNKHm9V_2H_PZo^t)1!a;TSrua=&|EN0CB;?F;U8Ul#S? zj98cR+05A~&kOC(Vo&#{V9p36*wd7-UurEE$WgP&f`?q#jgKIuxHCCRde|CFMsXI3 z6yEhpqqTVdN_a>P+Q2igL!@Fv5Y^sK3y2ii|NY*SdWC-k5a8l8&sP94-~OHJ)AmJW ziSQA}e$m+!`*@*@5z=6ZsWVikX@-WUmKQcBcwV=rBfdSY#R&DiU(-tQn()LEjK4~lD)0y zmk4gKZ+<=``F{4?ug|Mf6{Zv_@s5QWTY`OC8F}G9|^H&p$lnQQ4VKLOQ{GkFwe`w9M`OG zhmz0glmGfPnATk5+MLu)@5OZGSL8gMwnWfN!s=P;Pm|&iExd)_oqWCkN@~pFgmOvx z6K%ZLo}f4l?|Bg#UV1UF9qX>#eYJ@&xm>H!)BfoI38SZahGc?S+8-`3T|u9tc*4w- zWUKf{TL`ZClWN&q>_=oDuOWlBP?VGiA1*j6`_);Nv)Aq(kCfIMczNsvY~TY~a z^*coP_2*Y;5M0umA~`uGG%+SJB2DFvu_~b=#6od zbb#fjAHNdF&(dhi@!nNqO=Z*}o#c7oop491&IbF8;O8)v}CqZZ$YR$5t2I0vVVMK*5RAyRJVFSe8 z_?x%vzjs{kEeyl6ysww45%Jin!E}#VMd9H7dcz&NRUegR{+0W;1YD{&0(cZ{^ z4l54FwR!u$6h1pM$xrGx+NR|-h`D8QB6XD&_t8f_@K5r1n8i|?1PtTub~cU;#>RId zSAie(dNa)+&5s~Vf1{1qOVSuKKj<=$VsgNhkVNXV$J;*)a~J-qD6$6B3LE~ie3AD$T(E1BfaJII4+vyEcA&z(6Y*NyP=&~U zjJqs%%hLZGYxocB6U(FGwMcvv1FBTe(m#o>$mDIvL�bBL>yw(ALNhMwEdm<~p3d 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

?5#(K?g6iD2o`iew%``i6I6g10An_=?+26w48oM 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


6rXWpUmB4Rw(jbT_s=Zx58j+*1Srd} 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%0D`hbfNbc%U0 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

T@!GIU;_ui0NBn<%s-

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 literal 0 HcmV?d00001 diff --git a/doc/OnlineDocs/user_guide/contributed_packages/parmest/parallel.rst b/doc/OnlineDocs/user_guide/contributed_packages/parmest/parallel.rst new file mode 100644 index 00000000000..3b60c5777de --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/parmest/parallel.rst @@ -0,0 +1,52 @@ +.. _parallelsection: + +Parallel Implementation +======================= + +Parallel implementation in parmest is **preliminary**. To run parmest +in parallel, you need the mpi4py Python package and a *compatible* MPI +installation. If you do NOT have mpi4py or a MPI installation, parmest +still works (you should not get MPI import errors). + +For example, the following command can be used to run the semibatch +model in parallel:: + + mpiexec -n 4 python parallel_example.py + +The file **parallel_example.py** is shown below. +Results are saved to file for later analysis. + +.. literalinclude:: ../../../../pyomo/contrib/parmest/examples/semibatch/parallel_example.py + :language: python + +Installation +------------ + +The mpi4py Python package should be installed using conda. The +following installation instructions were tested on a Mac with Python +3.5. + +Create a conda environment and install mpi4py using the following +commands:: + + conda create -n parmest-parallel python=3.5 + source activate parmest-parallel + conda install -c conda-forge mpi4py + +This should install libgfortran, mpi, mpi4py, and openmpi. + +To verify proper installation, create a Python file with the following:: + + from mpi4py import MPI + import time + comm = MPI.COMM_WORLD + rank = comm.Get_rank() + print('Rank = ',rank) + time.sleep(10) + +Save the file as test_mpi.py and run the following command:: + + time mpiexec -n 4 python test_mpi.py + time python test_mpi.py + +The first one should be faster and should start 4 instances of Python. diff --git a/doc/OnlineDocs/user_guide/contributed_packages/parmest/scencreate.rst b/doc/OnlineDocs/user_guide/contributed_packages/parmest/scencreate.rst new file mode 100644 index 00000000000..b63ac5893c2 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/parmest/scencreate.rst @@ -0,0 +1,22 @@ +Scenario Creation +================= + +In addition to model-based parameter estimation, parmest can create +scenarios for use in optimization under uncertainty. To do this, one +first creates an ``Estimator`` object, then a ``ScenarioCreator`` +object, which has methods to add ``ParmestScen`` scenario objects to a +``ScenarioSet`` object, which can write them to a csv file or output them +via an iterator method. + +This example is in the semibatch subdirectory of the examples directory in +the file ``scenario_example.py``. It creates a csv file with scenarios that +correspond one-to-one with the experiments used as input data. It also +creates a few scenarios using the bootstrap methods and outputs prints the +scenarios to the screen, accessing them via the ``ScensItator`` a ``print`` + +.. literalinclude:: ../../../../pyomo/contrib/parmest/examples/semibatch/scenario_example.py + :language: python + +.. note:: + This example may produce an error message if your version of Ipopt is not based + on a good linear solver. diff --git a/doc/OnlineDocs/user_guide/contributed_packages/preprocessing.rst b/doc/OnlineDocs/user_guide/contributed_packages/preprocessing.rst new file mode 100644 index 00000000000..fd26f2bf6db --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/preprocessing.rst @@ -0,0 +1,151 @@ +Nonlinear Preprocessing Transformations +======================================= + +``pyomo.contrib.preprocessing`` is a contributed library of preprocessing +transformations intended to operate upon nonlinear and mixed-integer nonlinear +programs (NLPs and MINLPs), as well as generalized disjunctive programs (GDPs). + +This contributed package is maintained by `Qi Chen +`_ and `his colleagues from Carnegie Mellon +University `_. + +The following preprocessing transformations are available. However, some may +later be deprecated or combined, depending on their usefulness. + +.. currentmodule:: pyomo.contrib.preprocessing.plugins + +.. autosummary:: + :nosignatures: + + var_aggregator.VariableAggregator + bounds_to_vars.ConstraintToVarBoundTransform + induced_linearity.InducedLinearity + constraint_tightener.TightenConstraintFromVars + deactivate_trivial_constraints.TrivialConstraintDeactivator + detect_fixed_vars.FixedVarDetector + equality_propagate.FixedVarPropagator + equality_propagate.VarBoundPropagator + init_vars.InitMidpoint + init_vars.InitZero + remove_zero_terms.RemoveZeroTerms + strip_bounds.VariableBoundStripper + zero_sum_propagator.ZeroSumPropagator + + +Variable Aggregator +------------------- + +The following code snippet demonstrates usage of the variable aggregation +transformation on a concrete Pyomo model: + +.. doctest:: + + >>> from pyomo.environ import * + >>> m = ConcreteModel() + >>> m.v1 = Var(initialize=1, bounds=(1, 8)) + >>> m.v2 = Var(initialize=2, bounds=(0, 3)) + >>> m.v3 = Var(initialize=3, bounds=(-7, 4)) + >>> m.v4 = Var(initialize=4, bounds=(2, 6)) + >>> m.c1 = Constraint(expr=m.v1 == m.v2) + >>> m.c2 = Constraint(expr=m.v2 == m.v3) + >>> m.c3 = Constraint(expr=m.v3 == m.v4) + >>> TransformationFactory('contrib.aggregate_vars').apply_to(m) + +To see the results of the transformation, you could then use the command + +.. code:: + + >>> m.pprint() + +.. autoclass:: pyomo.contrib.preprocessing.plugins.var_aggregator.VariableAggregator + :members: apply_to, create_using, update_variables + + +Explicit Constraints to Variable Bounds +--------------------------------------- + +.. doctest:: + + >>> from pyomo.environ import * + >>> m = ConcreteModel() + >>> m.v1 = Var(initialize=1) + >>> m.v2 = Var(initialize=2) + >>> m.v3 = Var(initialize=3) + >>> m.c1 = Constraint(expr=m.v1 == 2) + >>> m.c2 = Constraint(expr=m.v2 >= -2) + >>> m.c3 = Constraint(expr=m.v3 <= 5) + >>> TransformationFactory('contrib.constraints_to_var_bounds').apply_to(m) + +.. autoclass:: pyomo.contrib.preprocessing.plugins.bounds_to_vars.ConstraintToVarBoundTransform + :members: apply_to, create_using + + +Induced Linearity Reformulation +------------------------------- + +.. autoclass:: pyomo.contrib.preprocessing.plugins.induced_linearity.InducedLinearity + :members: apply_to, create_using + + +Constraint Bounds Tightener +--------------------------- + +This transformation was developed by `Sunjeev Kale +`_ at Carnegie Mellon University. + +.. autoclass:: pyomo.contrib.preprocessing.plugins.constraint_tightener.TightenConstraintFromVars + :members: apply_to, create_using + +Trivial Constraint Deactivation +------------------------------- + +.. autoclass:: pyomo.contrib.preprocessing.plugins.deactivate_trivial_constraints.TrivialConstraintDeactivator + :members: apply_to, create_using, revert + +Fixed Variable Detection +------------------------ + +.. autoclass:: pyomo.contrib.preprocessing.plugins.detect_fixed_vars.FixedVarDetector + :members: apply_to, create_using, revert + +Fixed Variable Equality Propagator +---------------------------------- + +.. autoclass:: pyomo.contrib.preprocessing.plugins.equality_propagate.FixedVarPropagator + :members: apply_to, create_using, revert + +Variable Bound Equality Propagator +---------------------------------- + +.. autoclass:: pyomo.contrib.preprocessing.plugins.equality_propagate.VarBoundPropagator + :members: apply_to, create_using, revert + +Variable Midpoint Initializer +----------------------------- + +.. autoclass:: pyomo.contrib.preprocessing.plugins.init_vars.InitMidpoint + :members: apply_to, create_using + +Variable Zero Initializer +------------------------- + +.. autoclass:: pyomo.contrib.preprocessing.plugins.init_vars.InitZero + :members: apply_to, create_using + +Zero Term Remover +----------------- + +.. autoclass:: pyomo.contrib.preprocessing.plugins.remove_zero_terms.RemoveZeroTerms + :members: apply_to, create_using + +Variable Bound Remover +---------------------- + +.. autoclass:: pyomo.contrib.preprocessing.plugins.strip_bounds.VariableBoundStripper + :members: apply_to, create_using, revert + +Zero Sum Propagator +------------------- + +.. autoclass:: pyomo.contrib.preprocessing.plugins.zero_sum_propagator.ZeroSumPropagator + :members: apply_to, create_using diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/api.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/api.rst new file mode 100644 index 00000000000..3d1ac8a189e --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/api.rst @@ -0,0 +1,14 @@ +.. _pynumero_api: + +PyNumero API +============ + +.. automodule:: pyomo.contrib.pynumero + :members: + :undoc-members: + +.. toctree:: + + pynumero.sparse + pynumero.interfaces + pynumero.linalg diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/backward_compatibility.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/backward_compatibility.rst new file mode 100644 index 00000000000..036a00bee62 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/backward_compatibility.rst @@ -0,0 +1,14 @@ +Backward Compatibility +====================== + +While PyNumero is a third-party contribution to Pyomo, we intend to maintain +the stability of its core functionality. The core functionality of PyNumero +consists of: + +1. The ``NLP`` API and ``PyomoNLP`` implementation of this API +2. HSL and MUMPS linear solver interfaces +3. ``BlockVector`` and ``BlockMatrix`` classes +4. CyIpopt and SciPy solver interfaces + +Other parts of PyNumero, such as ``ExternalGreyBoxBlock`` and +``ImplicitFunctionSolver``, are experimental and subject to change without notice. diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/index.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/index.rst new file mode 100644 index 00000000000..711bb83eb3b --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/index.rst @@ -0,0 +1,51 @@ +.. _pynumero: + +PyNumero +======== + +PyNumero is a package for developing parallel algorithms for nonlinear +programs (NLPs). This documentation provides a brief introduction to +PyNumero. For more details, see the API documentation (:ref:`pynumero_api`). + +.. toctree:: + :maxdepth: 2 + + installation.rst + tutorial.rst + api.rst + backward_compatibility.rst + + +Developers +---------- + +The development team includes: + +* Jose Santiago Rodriguez +* Michael Bynum +* Carl Laird +* Bethany Nicholson +* Robby Parker +* John Siirola + + +Packages built on PyNumero +-------------------------- + * https://github.com/Pyomo/pyomo/tree/main/pyomo/contrib/interior_point + * https://github.com/parapint/parapint + + +Papers utilizing PyNumero +------------------------- + + * Rodriguez, J. S., Laird, C. D., & Zavala, V. M. (2020). Scalable + preconditioning of block-structured linear algebra systems using + ADMM. Computers & Chemical Engineering, 133, 106478. + + +Indices and Tables +------------------ + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/installation.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/installation.rst new file mode 100644 index 00000000000..9ac6961d2de --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/installation.rst @@ -0,0 +1,47 @@ +PyNumero Installation +===================== + +PyNumero is a module within Pyomo. Therefore, Pyomo must be installed +to use PyNumero. PyNumero also has some extensions that need +built. There are many ways to build the PyNumero extensions. Common +use cases are listed below. However, more information can always be +found at +https://github.com/Pyomo/pyomo/blob/main/pyomo/contrib/pynumero/build.py +and +https://github.com/Pyomo/pyomo/blob/main/pyomo/contrib/pynumero/src/CMakeLists.txt. + +Note that you will need a C++ compiler and CMake installed to build the +PyNumero libraries. + +Method 1 +-------- + +One way to build PyNumero extensions is with the pyomo +`download-extensions` and `build-extensions` subcommands. Note that +this approach will build PyNumero without support for the HSL linear +solvers. :: + + pyomo download-extensions + pyomo build-extensions + +Method 2 +-------- + +If you want PyNumero support for the HSL solvers and you have an IPOPT compilation +for your machine, you can build PyNumero using the build script :: + + python -m pyomo.contrib.pynumero.build -DBUILD_ASL=ON -DBUILD_MA27=ON -DIPOPT_DIR= + +Method 3 +-------- + +You can build the PyNumero libraries from source using `cmake`. This +generally works best when building from a source distribution of Pyomo. +Assuming that you are starting in the root of the Pyomo source +distribution, you can follow the normal CMake build process :: + + mkdir build + cd build + ccmake ../pyomo/contrib/pynumero/src + make + make install diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.ampl_nlp.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.ampl_nlp.rst new file mode 100644 index 00000000000..37dd5852351 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.ampl_nlp.rst @@ -0,0 +1,8 @@ +AMPL NLP Interface +================== + +.. autoclass:: pyomo.contrib.pynumero.interfaces.ampl_nlp.AmplNLP + :members: + :undoc-members: + :inherited-members: + :show-inheritance: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.asl_nlp.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.asl_nlp.rst new file mode 100644 index 00000000000..2537bd52fdb --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.asl_nlp.rst @@ -0,0 +1,8 @@ +ASL NLP Interface +================= + +.. autoclass:: pyomo.contrib.pynumero.interfaces.ampl_nlp.AslNLP + :members: + :undoc-members: + :inherited-members: + :show-inheritance: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.extended_nlp.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.extended_nlp.rst new file mode 100644 index 00000000000..75528ac4b45 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.extended_nlp.rst @@ -0,0 +1,8 @@ +Extended NLP Interface +====================== + +.. autoclass:: pyomo.contrib.pynumero.interfaces.nlp.ExtendedNLP + :members: + :undoc-members: + :inherited-members: + :show-inheritance: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.external_grey_box_model.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.external_grey_box_model.rst new file mode 100644 index 00000000000..10187b4156e --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.external_grey_box_model.rst @@ -0,0 +1,8 @@ +External Grey Box Model +======================= + +.. autoclass:: pyomo.contrib.pynumero.interfaces.external_grey_box.ExternalGreyBoxModel + :members: + :undoc-members: + :inherited-members: + :show-inheritance: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.nlp.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.nlp.rst new file mode 100644 index 00000000000..d8532873c22 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.nlp.rst @@ -0,0 +1,8 @@ +NLP Interface +============= + +.. autoclass:: pyomo.contrib.pynumero.interfaces.nlp.NLP + :members: + :undoc-members: + :inherited-members: + :show-inheritance: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.projected_nlp.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.projected_nlp.rst new file mode 100644 index 00000000000..b9c6941bd93 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.projected_nlp.rst @@ -0,0 +1,8 @@ +Projected NLP Interface +======================= + +.. autoclass:: pyomo.contrib.pynumero.interfaces.nlp_projections.ProjectedNLP + :members: + :undoc-members: + :inherited-members: + :show-inheritance: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.pyomo_grey_box_nlp.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.pyomo_grey_box_nlp.rst new file mode 100644 index 00000000000..c7200038f5e --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.pyomo_grey_box_nlp.rst @@ -0,0 +1,8 @@ +Pyomo Grey Box NLP Interface +============================ + +.. autoclass:: pyomo.contrib.pynumero.interfaces.pyomo_nlp.PyomoGreyBoxNLP + :members: + :undoc-members: + :inherited-members: + :show-inheritance: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.pyomo_nlp.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.pyomo_nlp.rst new file mode 100644 index 00000000000..e52ce33c2d9 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.pyomo_nlp.rst @@ -0,0 +1,8 @@ +Pyomo NLP Interface +=================== + +.. autoclass:: pyomo.contrib.pynumero.interfaces.pyomo_nlp.PyomoNLP + :members: + :undoc-members: + :inherited-members: + :show-inheritance: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.rst new file mode 100644 index 00000000000..ec0b94960f6 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.interfaces.rst @@ -0,0 +1,16 @@ +PyNumero NLP Interfaces +======================= + +.. automodule:: pyomo.contrib.pynumero.interfaces + :members: + +.. toctree:: + + pynumero.interfaces.nlp + pynumero.interfaces.extended_nlp + pynumero.interfaces.asl_nlp + pynumero.interfaces.ampl_nlp + pynumero.interfaces.pyomo_nlp + pynumero.interfaces.projected_nlp + pynumero.interfaces.external_grey_box_model + pynumero.interfaces.pyomo_grey_box_nlp diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.linalg.base.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.linalg.base.rst new file mode 100644 index 00000000000..0a94f87c6be --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.linalg.base.rst @@ -0,0 +1,26 @@ +Linear Solver Base Classes +========================== + +.. autoclass:: pyomo.contrib.pynumero.linalg.base.LinearSolverStatus + :members: + :inherited-members: + :show-inheritance: + :undoc-members: + +.. autoclass:: pyomo.contrib.pynumero.linalg.base.LinearSolverResults + :members: + :inherited-members: + :show-inheritance: + :undoc-members: + +.. autoclass:: pyomo.contrib.pynumero.linalg.base.LinearSolverInterface + :members: + :inherited-members: + :show-inheritance: + :undoc-members: + +.. autoclass:: pyomo.contrib.pynumero.linalg.base.DirectLinearSolverInterface + :members: + :inherited-members: + :show-inheritance: + :undoc-members: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.linalg.ma27.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.linalg.ma27.rst new file mode 100644 index 00000000000..f1d2eed3ed0 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.linalg.ma27.rst @@ -0,0 +1,8 @@ +HSL MA27 +======== + +.. autoclass:: pyomo.contrib.pynumero.linalg.ma27_interface.MA27 + :members: + :inherited-members: + :show-inheritance: + :undoc-members: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.linalg.ma57.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.linalg.ma57.rst new file mode 100644 index 00000000000..c97f193b5f8 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.linalg.ma57.rst @@ -0,0 +1,8 @@ +HSL MA57 +======== + +.. autoclass:: pyomo.contrib.pynumero.linalg.ma57_interface.MA57 + :members: + :inherited-members: + :show-inheritance: + :undoc-members: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.linalg.mumps.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.linalg.mumps.rst new file mode 100644 index 00000000000..1fd5998dd4d --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.linalg.mumps.rst @@ -0,0 +1,8 @@ +MUMPS +===== + +.. autoclass:: pyomo.contrib.pynumero.linalg.mumps_interface.MumpsCentralizedAssembledLinearSolver + :members: + :inherited-members: + :show-inheritance: + :undoc-members: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.linalg.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.linalg.rst new file mode 100644 index 00000000000..70b091becbd --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.linalg.rst @@ -0,0 +1,14 @@ +PyNumero Linear Solver Interfaces +================================= + +.. automodule:: pyomo.contrib.pynumero.linalg + :members: + +.. toctree:: + + pynumero.linalg.base + pynumero.linalg.ma27 + pynumero.linalg.ma57 + pynumero.linalg.mumps + pynumero.linalg.scipy + diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.linalg.scipy.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.linalg.scipy.rst new file mode 100644 index 00000000000..7e0a1d0b865 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.linalg.scipy.rst @@ -0,0 +1,14 @@ +Scipy +===== + +.. autoclass:: pyomo.contrib.pynumero.linalg.scipy_interface.ScipyLU + :members: + :inherited-members: + :show-inheritance: + :undoc-members: + +.. autoclass:: pyomo.contrib.pynumero.linalg.scipy_interface.ScipyIterative + :members: + :inherited-members: + :show-inheritance: + :undoc-members: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.sparse.block_vector.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.sparse.block_vector.rst new file mode 100644 index 00000000000..c17d3d1df86 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.sparse.block_vector.rst @@ -0,0 +1,154 @@ +BlockVector +=========== + +Methods specific to :py:class:`pyomo.contrib.pynumero.sparse.block_vector.BlockVector`: + + * :py:meth:`~pyomo.contrib.pynumero.sparse.block_vector.BlockVector.set_block` + * :py:meth:`~pyomo.contrib.pynumero.sparse.block_vector.BlockVector.get_block` + * :py:meth:`~pyomo.contrib.pynumero.sparse.block_vector.BlockVector.block_sizes` + * :py:meth:`~pyomo.contrib.pynumero.sparse.block_vector.BlockVector.get_block_size` + * :py:meth:`~pyomo.contrib.pynumero.sparse.block_vector.BlockVector.is_block_defined` + * :py:meth:`~pyomo.contrib.pynumero.sparse.block_vector.BlockVector.copyfrom` + * :py:meth:`~pyomo.contrib.pynumero.sparse.block_vector.BlockVector.copyto` + * :py:meth:`~pyomo.contrib.pynumero.sparse.block_vector.BlockVector.copy_structure` + * :py:meth:`~pyomo.contrib.pynumero.sparse.block_vector.BlockVector.set_blocks` + * :py:meth:`~pyomo.contrib.pynumero.sparse.block_vector.BlockVector.pprint` + +Attributes specific to :py:class:`pyomo.contrib.pynumero.sparse.block_vector.BlockVector`: + + * :py:attr:`~pyomo.contrib.pynumero.sparse.block_vector.BlockVector.nblocks` + * :py:attr:`~pyomo.contrib.pynumero.sparse.block_vector.BlockVector.bshape` + * :py:attr:`~pyomo.contrib.pynumero.sparse.block_vector.BlockVector.has_none` + + +NumPy compatible methods: + + * `numpy.ndarray.dot() `_ + * `numpy.ndarray.sum() `_ + * `numpy.ndarray.all() `_ + * `numpy.ndarray.any() `_ + * `numpy.ndarray.max() `_ + * `numpy.ndarray.astype() `_ + * `numpy.ndarray.clip() `_ + * `numpy.ndarray.compress() `_ + * `numpy.ndarray.conj() `_ + * `numpy.ndarray.conjugate() `_ + * `numpy.ndarray.nonzero() `_ + * `numpy.ndarray.ptp() `_ + * `numpy.ndarray.round() `_ + * `numpy.ndarray.std() `_ + * `numpy.ndarray.var() `_ + * `numpy.ndarray.tofile() `_ + * `numpy.ndarray.min() `_ + * `numpy.ndarray.mean() `_ + * `numpy.ndarray.prod() `_ + * `numpy.ndarray.fill() `_ + * `numpy.ndarray.tolist() `_ + * `numpy.ndarray.flatten() `_ + * `numpy.ndarray.ravel() `_ + * `numpy.ndarray.argmax() `_ + * `numpy.ndarray.argmin() `_ + * `numpy.ndarray.cumprod() `_ + * `numpy.ndarray.cumsum() `_ + * `numpy.ndarray.copy() `_ + +For example, + +.. code-block:: python + + >>> import numpy as np + >>> from pyomo.contrib.pynumero.sparse import BlockVector + >>> v = BlockVector(2) + >>> v.set_block(0, np.random.normal(size=100)) + >>> v.set_block(1, np.random.normal(size=30)) + >>> avg = v.mean() + +NumPy compatible functions: + + * `numpy.log10() `_ + * `numpy.sin() `_ + * `numpy.cos() `_ + * `numpy.exp() `_ + * `numpy.ceil() `_ + * `numpy.floor() `_ + * `numpy.tan() `_ + * `numpy.arctan() `_ + * `numpy.arcsin() `_ + * `numpy.arccos() `_ + * `numpy.sinh() `_ + * `numpy.cosh() `_ + * `numpy.abs() `_ + * `numpy.tanh() `_ + * `numpy.arccosh() `_ + * `numpy.arcsinh() `_ + * `numpy.arctanh() `_ + * `numpy.fabs() `_ + * `numpy.sqrt() `_ + * `numpy.log() `_ + * `numpy.log2() `_ + * `numpy.absolute() `_ + * `numpy.isfinite() `_ + * `numpy.isinf() `_ + * `numpy.isnan() `_ + * `numpy.log1p() `_ + * `numpy.logical_not() `_ + * `numpy.expm1() `_ + * `numpy.exp2() `_ + * `numpy.sign() `_ + * `numpy.rint() `_ + * `numpy.square() `_ + * `numpy.positive() `_ + * `numpy.negative() `_ + * `numpy.rad2deg() `_ + * `numpy.deg2rad() `_ + * `numpy.conjugate() `_ + * `numpy.reciprocal() `_ + * `numpy.signbit() `_ + * `numpy.add() `_ + * `numpy.multiply() `_ + * `numpy.divide() `_ + * `numpy.subtract() `_ + * `numpy.greater() `_ + * `numpy.greater_equal() `_ + * `numpy.less() `_ + * `numpy.less_equal() `_ + * `numpy.not_equal() `_ + * `numpy.maximum() `_ + * `numpy.minimum() `_ + * `numpy.fmax() `_ + * `numpy.fmin() `_ + * `numpy.equal() `_ + * `numpy.logical_and() `_ + * `numpy.logical_or() `_ + * `numpy.logical_xor() `_ + * `numpy.logaddexp() `_ + * `numpy.logaddexp2() `_ + * `numpy.remainder() `_ + * `numpy.heaviside() `_ + * `numpy.hypot() `_ + +For example, + +.. code-block:: python + + >>> import numpy as np + >>> from pyomo.contrib.pynumero.sparse import BlockVector + >>> v = BlockVector(2) + >>> v.set_block(0, np.random.normal(size=100)) + >>> v.set_block(1, np.random.normal(size=30)) + >>> inf_norm = np.max(np.abs(v)) + +.. autoclass:: pyomo.contrib.pynumero.sparse.block_vector.BlockVector +.. automethod:: pyomo.contrib.pynumero.sparse.block_vector.BlockVector.set_block +.. automethod:: pyomo.contrib.pynumero.sparse.block_vector.BlockVector.get_block +.. automethod:: pyomo.contrib.pynumero.sparse.block_vector.BlockVector.block_sizes +.. automethod:: pyomo.contrib.pynumero.sparse.block_vector.BlockVector.get_block_size +.. automethod:: pyomo.contrib.pynumero.sparse.block_vector.BlockVector.is_block_defined +.. automethod:: pyomo.contrib.pynumero.sparse.block_vector.BlockVector.copyfrom +.. automethod:: pyomo.contrib.pynumero.sparse.block_vector.BlockVector.copyto +.. automethod:: pyomo.contrib.pynumero.sparse.block_vector.BlockVector.copy_structure +.. automethod:: pyomo.contrib.pynumero.sparse.block_vector.BlockVector.set_blocks +.. automethod:: pyomo.contrib.pynumero.sparse.block_vector.BlockVector.pprint +.. autoproperty:: pyomo.contrib.pynumero.sparse.block_vector.BlockVector.nblocks +.. autoproperty:: pyomo.contrib.pynumero.sparse.block_vector.BlockVector.bshape +.. autoproperty:: pyomo.contrib.pynumero.sparse.block_vector.BlockVector.has_none diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.sparse.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.sparse.rst new file mode 100644 index 00000000000..6d903abb5a4 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/pynumero.sparse.rst @@ -0,0 +1,9 @@ +PyNumero Block Linear Algebra +============================= + +.. automodule:: pyomo.contrib.pynumero.sparse + :members: + +.. toctree:: + + pynumero.sparse.block_vector diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/tutorial.block_vectors_and_matrices.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/tutorial.block_vectors_and_matrices.rst new file mode 100644 index 00000000000..1ce98ce4a63 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/tutorial.block_vectors_and_matrices.rst @@ -0,0 +1,272 @@ +Block Vectors and Matrices +========================== + +Block vectors and matrices +(:py:class:`~pyomo.contrib.pynumero.sparse.block_vector.BlockVector` +and +:py:class:`~pyomo.contrib.pynumero.sparse.block_matrix.BlockMatrix`) +provide a mechanism to perform linear algebra operations with very +structured matrices and vectors. + +When a BlockVector or BlockMatrix is constructed, the number of blocks +must be specified. + +.. doctest:: + :skipif: not numpy_available or not scipy_available + + >>> import numpy as np + >>> from scipy.sparse import coo_matrix + >>> from pyomo.contrib.pynumero.sparse import BlockVector, BlockMatrix + >>> v = BlockVector(3) + >>> m = BlockMatrix(3, 3) + +Setting blocks: + +.. doctest:: + :skipif: not numpy_available or not scipy_available + + >>> v.set_block(0, np.array([-0.67025575, -1.2])) + >>> v.set_block(1, np.array([0.1, 1.14872127])) + >>> v.set_block(2, np.array([1.25])) + >>> v.flatten() + array([-0.67025575, -1.2 , 0.1 , 1.14872127, 1.25 ]) + +The `flatten` method converts the BlockVector into a NumPy array. + +.. doctest:: + :skipif: not numpy_available or not scipy_available + + >>> m.set_block(0, 0, coo_matrix(np.array([[1.67025575, 0], [0, 2]]))) + >>> m.set_block(0, 1, coo_matrix(np.array([[0, -1.64872127], [0, 1]]))) + >>> m.set_block(0, 2, coo_matrix(np.array([[-1.0], [-1]]))) + >>> m.set_block(1, 0, coo_matrix(np.array([[0, -1.64872127], [0, 1]])).transpose()) + >>> m.set_block(1, 2, coo_matrix(np.array([[-1.0], [0]]))) + >>> m.set_block(2, 0, coo_matrix(np.array([[-1.0], [-1]])).transpose()) + >>> m.set_block(2, 1, coo_matrix(np.array([[-1.0], [0]])).transpose()) + >>> m.tocoo().toarray() + array([[ 1.67025575, 0. , 0. , -1.64872127, -1. ], + [ 0. , 2. , 0. , 1. , -1. ], + [ 0. , 0. , 0. , 0. , -1. ], + [-1.64872127, 1. , 0. , 0. , 0. ], + [-1. , -1. , -1. , 0. , 0. ]]) + +The `tocoo` method converts the `BlockMatrix` to a SciPy sparse `coo_matrix`. + +Once the dimensions of a block have been set, they cannot be changed: + +.. doctest:: + :skipif: not numpy_available or not scipy_available + + >>> v.set_block(0, np.ones(3)) + Traceback (most recent call last): + ... + ValueError: Incompatible dimensions for block 0; got 3; expected 2 + +Properties: + +.. doctest:: + :skipif: not numpy_available or not scipy_available + + >>> v.shape + (5,) + >>> v.size + 5 + >>> v.nblocks + 3 + >>> v.bshape + (3,) + >>> m.shape + (5, 5) + >>> m.bshape + (3, 3) + >>> m.nnz + 12 + +Much of the `BlockVector` API matches that of NumPy arrays: + +.. doctest:: + :skipif: not numpy_available or not scipy_available + + >>> v.sum() + 0.62846552 + >>> v.max() + 1.25 + >>> np.abs(v).flatten() + array([0.67025575, 1.2 , 0.1 , 1.14872127, 1.25 ]) + >>> (2*v).flatten() + array([-1.3405115 , -2.4 , 0.2 , 2.29744254, 2.5 ]) + >>> (v + v).flatten() + array([-1.3405115 , -2.4 , 0.2 , 2.29744254, 2.5 ]) + >>> v.dot(v) + 4.781303326558476 + +Similarly, `BlockMatrix` behaves very similarly to SciPy sparse matrices: + +.. doctest:: + :skipif: not numpy_available or not scipy_available + + >>> (2*m).tocoo().toarray() + array([[ 3.3405115 , 0. , 0. , -3.29744254, -2. ], + [ 0. , 4. , 0. , 2. , -2. ], + [ 0. , 0. , 0. , 0. , -2. ], + [-3.29744254, 2. , 0. , 0. , 0. ], + [-2. , -2. , -2. , 0. , 0. ]]) + >>> (m - m).tocoo().toarray() + array([[0., 0., 0., 0., 0.], + [0., 0., 0., 0., 0.], + [0., 0., 0., 0., 0.], + [0., 0., 0., 0., 0.], + [0., 0., 0., 0., 0.]]) + >>> m * v + BlockVector(3,) + >>> (m * v).flatten() + array([-4.26341971, -2.50127873, -1.25 , -0.09493509, 1.77025575]) + +Accessing blocks + +.. doctest:: + :skipif: not numpy_available or not scipy_available + + >>> v.get_block(1) + array([0.1 , 1.14872127]) + >>> m.get_block(1, 0).toarray() + array([[ 0. , 0. ], + [-1.64872127, 1. ]]) + +Empty blocks in a `BlockMatrix` return `None`: + +.. doctest:: + :skipif: not numpy_available or not scipy_available + + >>> print(m.get_block(1, 1)) + None + +The dimensions of a blocks in a `BlockMatrix` can be set without setting a block: + +.. doctest:: + :skipif: not numpy_available or not scipy_available + + >>> m2 = BlockMatrix(2, 2) + >>> m2.set_row_size(0, 5) + >>> m2.set_block(0, 0, m.get_block(0, 0)) + Traceback (most recent call last): + ... + ValueError: Incompatible row dimensions for row 0; got 2; expected 5.0 + +Note that operations on `BlockVector` and `BlockMatrix` cannot be performed until the dimensions are fully specified: + +.. doctest:: + :skipif: not numpy_available or not scipy_available + + >>> v2 = BlockVector(3) + >>> v + v2 + Traceback (most recent call last): + ... + NotFullyDefinedBlockVectorError: Operation not allowed with None blocks. + >>> m2 = BlockMatrix(3, 3) + >>> m2 * 2 + Traceback (most recent call last): + ... + NotFullyDefinedBlockMatrixError: Operation not allowed with None rows. Specify at least one block in every row + +The `has_none` property can be used to see if a `BlockVector` is fully +specified. If `has_none` returns `True`, then there are `None` blocks, +and the `BlockVector` is not fully specified. + +.. doctest:: + :skipif: not numpy_available or not scipy_available + + >>> v.has_none + False + >>> v2.has_none + True + +For `BlockMatrix`, use the `has_undefined_row_sizes()` and `has_undefined_col_sizes()` methods: + +.. doctest:: + :skipif: not numpy_available or not scipy_available + + >>> m.has_undefined_row_sizes() + False + >>> m.has_undefined_col_sizes() + False + >>> m2.has_undefined_row_sizes() + True + >>> m2.has_undefined_col_sizes() + True + +To efficiently iterate over non-empty blocks in a `BlockMatrix`, use +the `get_block_mask()` method, which returns a 2-D array indicating +where the non-empty blocks are: + +.. doctest:: + :skipif: not numpy_available or not scipy_available + + >>> m.get_block_mask(copy=False) + array([[ True, True, True], + [ True, False, True], + [ True, True, False]]) + >>> for i, j in zip(*np.nonzero(m.get_block_mask(copy=False))): + ... assert m.get_block(i, j) is not None + +Copying data: + +.. doctest:: + :skipif: not numpy_available or not scipy_available + + >>> v2 = v.copy() + >>> v2.flatten() + array([-0.67025575, -1.2 , 0.1 , 1.14872127, 1.25 ]) + >>> v2 = v.copy_structure() + >>> v2.block_sizes() # doctest: +SKIP + array([2, 2, 1]) + >>> v2.copyfrom(v) + >>> v2.flatten() + array([-0.67025575, -1.2 , 0.1 , 1.14872127, 1.25 ]) + >>> m2 = m.copy() + >>> (m - m2).tocoo().toarray() + array([[0., 0., 0., 0., 0.], + [0., 0., 0., 0., 0.], + [0., 0., 0., 0., 0.], + [0., 0., 0., 0., 0.], + [0., 0., 0., 0., 0.]]) + >>> m2 = m.copy_structure() + >>> m2.has_undefined_row_sizes() + False + >>> m2.has_undefined_col_sizes() + False + >>> m2.copyfrom(m) + >>> (m - m2).tocoo().toarray() + array([[0., 0., 0., 0., 0.], + [0., 0., 0., 0., 0.], + [0., 0., 0., 0., 0.], + [0., 0., 0., 0., 0.], + [0., 0., 0., 0., 0.]]) + +Nested blocks: + +.. doctest:: + :skipif: not numpy_available or not scipy_available + + >>> v2 = BlockVector(2) + >>> v2.set_block(0, v) + >>> v2.set_block(1, np.ones(2)) + >>> v2.block_sizes() # doctest: +SKIP + array([5, 2]) + >>> v2.flatten() + array([-0.67025575, -1.2 , 0.1 , 1.14872127, 1.25 , + 1. , 1. ]) + >>> v3 = v2.copy_structure() + >>> v3.fill(1) + >>> (v2 + v3).flatten() + array([ 0.32974425, -0.2 , 1.1 , 2.14872127, 2.25 , + 2. , 2. ]) + >>> np.abs(v2).flatten() + array([0.67025575, 1.2 , 0.1 , 1.14872127, 1.25 , + 1. , 1. ]) + >>> v2.get_block(0) + BlockVector(3,) + +Nested `BlockMatrix` applications work similarly. + +For more information, see the API documentation (:ref:`pynumero_api`). diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/tutorial.linear_solver_interfaces.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/tutorial.linear_solver_interfaces.rst new file mode 100644 index 00000000000..02ffe761778 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/tutorial.linear_solver_interfaces.rst @@ -0,0 +1,76 @@ +Linear Solver Interfaces +======================== + +PyNumero's interfaces to linear solvers are very thin wrappers, and, +hence, are rather low-level. It is relatively easy to wrap these again +for specific applications. For example, see the linear solver +interfaces in +https://github.com/Pyomo/pyomo/tree/main/pyomo/contrib/interior_point/linalg, +which wrap PyNumero's linear solver interfaces. + +The motivation to keep PyNumero's interfaces as such thin wrappers is +that different linear solvers serve different purposes. For example, +HSL's MA27 can factorize symmetric indefinite matrices, while MUMPS +can factorize unsymmetric, symmetric positive definite, or general +symmetric matrices. PyNumero seeks to be independent of the +application, giving more flexibility to algorithm developers. + +Interface to MA27 +----------------- + +.. doctest:: + :skipif: not numpy_available or not scipy_available or not ma27_available + + >>> import numpy as np + >>> from scipy.sparse import coo_matrix + >>> from scipy.sparse import tril + >>> from pyomo.contrib.pynumero.linalg.ma27_interface import MA27 + >>> row = np.array([0, 1, 0, 1, 0, 1, 2, 3, 3, 4, 4, 4]) + >>> col = np.array([0, 1, 3, 3, 4, 4, 4, 0, 1, 0, 1, 2]) + >>> data = np.array([1.67025575, 2, -1.64872127, 1, -1, -1, -1, -1.64872127, 1, -1, -1, -1]) + >>> A = coo_matrix((data, (row, col)), shape=(5,5)) + >>> A.toarray() + array([[ 1.67025575, 0. , 0. , -1.64872127, -1. ], + [ 0. , 2. , 0. , 1. , -1. ], + [ 0. , 0. , 0. , 0. , -1. ], + [-1.64872127, 1. , 0. , 0. , 0. ], + [-1. , -1. , -1. , 0. , 0. ]]) + >>> rhs = np.array([-0.67025575, -1.2, 0.1, 1.14872127, 1.25]) + >>> solver = MA27() + >>> solver.set_cntl(1, 1e-6) # set the pivot tolerance + >>> status = solver.do_symbolic_factorization(A) + >>> status = solver.do_numeric_factorization(A) + >>> x, status = solver.do_back_solve(rhs) + >>> np.max(np.abs(A*x - rhs)) <= 1e-15 + True + + +Interface to MUMPS +------------------ + +.. doctest:: + :skipif: not numpy_available or not scipy_available or not mumps_available + + >>> import numpy as np + >>> from scipy.sparse import coo_matrix + >>> from scipy.sparse import tril + >>> from pyomo.contrib.pynumero.linalg.mumps_interface import MumpsCentralizedAssembledLinearSolver + >>> row = np.array([0, 1, 0, 1, 0, 1, 2, 3, 3, 4, 4, 4]) + >>> col = np.array([0, 1, 3, 3, 4, 4, 4, 0, 1, 0, 1, 2]) + >>> data = np.array([1.67025575, 2, -1.64872127, 1, -1, -1, -1, -1.64872127, 1, -1, -1, -1]) + >>> A = coo_matrix((data, (row, col)), shape=(5,5)) + >>> A.toarray() + array([[ 1.67025575, 0. , 0. , -1.64872127, -1. ], + [ 0. , 2. , 0. , 1. , -1. ], + [ 0. , 0. , 0. , 0. , -1. ], + [-1.64872127, 1. , 0. , 0. , 0. ], + [-1. , -1. , -1. , 0. , 0. ]]) + >>> rhs = np.array([-0.67025575, -1.2, 0.1, 1.14872127, 1.25]) + >>> solver = MumpsCentralizedAssembledLinearSolver(sym=2, par=1, comm=None) # symmetric matrix; solve in serial + >>> solver.do_symbolic_factorization(A) + >>> solver.do_numeric_factorization(A) + >>> x = solver.do_back_solve(rhs) + >>> np.max(np.abs(A*x - rhs)) <= 1e-15 + True + +Of course, SciPy solvers can also be used. See SciPy documentation for details. diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/tutorial.mpi_blocks.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/tutorial.mpi_blocks.rst new file mode 100644 index 00000000000..b9cb1d5db7a --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/tutorial.mpi_blocks.rst @@ -0,0 +1,65 @@ +MPI-Based Block Vectors and Matrices +==================================== + +PyNumero's MPI-based block vectors and matrices +(:py:class:`~pyomo.contrib.pynumero.sparse.mpi_block_vector.MPIBlockVector` +and +:py:class:`~pyomo.contrib.pynumero.sparse.mpi_block_matrix.MPIBlockMatrix`) +behave very similarly to `BlockVector` and `BlockMatrix`. The primary +difference is in construction. With `MPIBlockVector` and +`MPIBlockMatrix`, each block is owned by either a single process/rank +or all processes/ranks. + +Consider the following example (in a file called "parallel_vector_ops.py"). + +.. literalinclude:: ../../../../pyomo/contrib/pynumero/examples/parallel_vector_ops.py + +This example can be run with + +.. code-block:: + + mpirun -np 3 python -m mpi4py parallel_vector_ops.py + +The output is + +.. code-block:: + + [6. 6. 6. 2. 2. 2. 4. 4. 4. 2. 4. 6.] + 56.0 + 3 + +Note that the `make_local_copy()` method is not efficient and should +only be used for debugging. + +The -1 in `owners` means that the block at that index (index 3 in this +example) is owned by all processes. The non-negative integer values +indicate that the block at that index is owned by the process with +rank equal to the value. In this example, rank 0 owns block 1, rank 1 +owns block 2, and rank 2 owns block 0. Block 3 is owned by all ranks. +Note that blocks should only be set if the process/rank owns that +block. + +The operations performed with `MPIBlockVector` are identical to the +same operations performed with `BlockVector` (or even NumPy arrays), +except that the operations are now performed in parallel. + +`MPIBlockMatrix` construction is very similar. Consider the following +example in a file called "parallel_matvec.py". + +.. literalinclude:: ../../../../pyomo/contrib/pynumero/examples/parallel_matvec.py + +Which can be run with + +.. code-block:: + + mpirun -np 3 python -m mpi4py parallel_matvec.py + +The output is + +.. code-block:: + + error: 4.440892098500626e-16 + +The most difficult part of using `MPIBlockVector` and `MPIBlockMatrix` +is determining the best structure and rank ownership to maximize +parallel efficiency. diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/tutorial.nlp_interfaces.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/tutorial.nlp_interfaces.rst new file mode 100644 index 00000000000..28818709330 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/tutorial.nlp_interfaces.rst @@ -0,0 +1,115 @@ +NLP Interfaces +============== + +Below are examples of using PyNumero's interfaces to ASL for function +and derivative evaluation. More information can be found in the API +documentation (:ref:`pynumero_api`). + +Relevant imports + +.. doctest:: + :skipif: not numpy_available or not scipy_available or not asl_available + + >>> import pyomo.environ as pe + >>> from pyomo.contrib.pynumero.interfaces.pyomo_nlp import PyomoNLP + >>> import numpy as np + +Create a Pyomo model + +.. doctest:: + :skipif: not numpy_available or not scipy_available or not asl_available + + >>> m = pe.ConcreteModel() + >>> m.x = pe.Var(bounds=(-5, None)) + >>> m.y = pe.Var(initialize=2.5) + >>> m.obj = pe.Objective(expr=m.x**2 + m.y**2) + >>> m.c1 = pe.Constraint(expr=m.y == (m.x - 1)**2) + >>> m.c2 = pe.Constraint(expr=m.y >= pe.exp(m.x)) + +Create a :py:class:`pyomo.contrib.pynumero.interfaces.pyomo_nlp.PyomoNLP` instance + +.. doctest:: + :skipif: not numpy_available or not scipy_available or not asl_available + + >>> nlp = PyomoNLP(m) + +Get values of primals and duals + +.. doctest:: + :skipif: not numpy_available or not scipy_available or not asl_available + + >>> nlp.get_primals() + array([0. , 2.5]) + >>> nlp.get_duals() + array([0., 0.]) + +Get variable and constraint bounds + +.. doctest:: + :skipif: not numpy_available or not scipy_available or not asl_available + + >>> nlp.primals_lb() + array([ -5., -inf]) + >>> nlp.primals_ub() + array([inf, inf]) + >>> nlp.constraints_lb() + array([ 0., -inf]) + >>> nlp.constraints_ub() + array([0., 0.]) + +Objective and constraint evaluations + +.. doctest:: + :skipif: not numpy_available or not scipy_available or not asl_available + + >>> nlp.evaluate_objective() + 6.25 + >>> nlp.evaluate_constraints() + array([ 1.5, -1.5]) + +Derivative evaluations + +.. doctest:: + :skipif: not numpy_available or not scipy_available or not asl_available + + >>> nlp.evaluate_grad_objective() + array([0., 5.]) + >>> nlp.evaluate_jacobian() # doctest: +SKIP + <2x2 sparse matrix of type '' + with 4 stored elements in COOrdinate format> + >>> nlp.evaluate_jacobian().toarray() + array([[ 2., 1.], + [ 1., -1.]]) + >>> nlp.evaluate_hessian_lag().toarray() + array([[2., 0.], + [0., 2.]]) + +Set values of primals and duals + +.. doctest:: + :skipif: not numpy_available or not scipy_available or not asl_available + + >>> nlp.set_primals(np.array([0, 1])) + >>> nlp.evaluate_constraints() + array([0., 0.]) + >>> nlp.set_duals(np.array([-2/3, 4/3])) + >>> nlp.evaluate_grad_objective() + nlp.evaluate_jacobian().transpose() * nlp.get_duals() + array([0., 0.]) + +Equality and inequality constraints separately + +.. doctest:: + :skipif: not numpy_available or not scipy_available or not asl_available + + >>> nlp.evaluate_eq_constraints() + array([0.]) + >>> nlp.evaluate_jacobian_eq().toarray() + array([[2., 1.]]) + >>> nlp.evaluate_ineq_constraints() + array([0.]) + >>> nlp.evaluate_jacobian_ineq().toarray() + array([[ 1., -1.]]) + >>> nlp.get_duals_eq() + array([-0.66666667]) + >>> nlp.get_duals_ineq() + array([1.33333333]) diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pynumero/tutorial.rst b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/tutorial.rst new file mode 100644 index 00000000000..83593c94040 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pynumero/tutorial.rst @@ -0,0 +1,11 @@ +10 Minutes to PyNumero +====================== + +.. toctree:: + + tutorial.nlp_interfaces + tutorial.linear_solver_interfaces + tutorial.block_vectors_and_matrices + tutorial.mpi_blocks + +Other examples may be found at https://github.com/Pyomo/pyomo/tree/main/pyomo/contrib/pynumero/examples. diff --git a/doc/OnlineDocs/user_guide/contributed_packages/pyros.rst b/doc/OnlineDocs/user_guide/contributed_packages/pyros.rst new file mode 100644 index 00000000000..95049eded8a --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/pyros.rst @@ -0,0 +1,1078 @@ +############ +PyROS Solver +############ + +PyROS (Pyomo Robust Optimization Solver) is a Pyomo-based meta-solver +for non-convex, two-stage adjustable robust optimization problems. + +It was developed by **Natalie M. Isenberg**, **Jason A. F. Sherman**, +and **Chrysanthos E. Gounaris** of Carnegie Mellon University, +in collaboration with **John D. Siirola** of Sandia National Labs. +The developers gratefully acknowledge support from the U.S. Department of Energy's +`Institute for the Design of Advanced Energy Systems (IDAES) `_. + +Methodology Overview +----------------------------- + +Below is an overview of the type of optimization models PyROS can accommodate. + + +* PyROS is suitable for optimization models of **continuous variables** + that may feature non-linearities (including **non-convexities**) in + both the variables and uncertain parameters. +* PyROS can handle **equality constraints** defining state variables, + including implicit state variables that cannot be eliminated via + reformulation. +* PyROS allows for **two-stage** optimization problems that may + feature both first-stage and second-stage degrees of freedom. + +PyROS is designed to operate on deterministic models of the general form + +.. _deterministic-model: + +.. math:: + \begin{array}{clll} + \displaystyle \min_{\substack{x \in \mathcal{X}, \\ z \in \mathbb{R}^{n_z}, y\in\mathbb{R}^{n_y}}} & ~~ f_1\left(x\right) + f_2(x,z,y; q^{\text{nom}}) & \\ + \displaystyle \text{s.t.} & ~~ g_i(x, z, y; q^{\text{nom}}) \leq 0 & \forall\,i \in \mathcal{I} \\ + & ~~ h_j(x,z,y; q^{\text{nom}}) = 0 & \forall\,j \in \mathcal{J} \\ + \end{array} + +where: + +* :math:`x \in \mathcal{X}` are the "design" variables + (i.e., first-stage degrees of freedom), + where :math:`\mathcal{X} \subseteq \mathbb{R}^{n_x}` is the feasible space defined by the model constraints + (including variable bounds specifications) referencing :math:`x` only. +* :math:`z \in \mathbb{R}^{n_z}` are the "control" variables + (i.e., second-stage degrees of freedom) +* :math:`y \in \mathbb{R}^{n_y}` are the "state" variables +* :math:`q \in \mathbb{R}^{n_q}` is the vector of model parameters considered + uncertain, and :math:`q^{\text{nom}}` is the vector of nominal values + associated with those. +* :math:`f_1\left(x\right)` are the terms of the objective function that depend + only on design variables +* :math:`f_2\left(x, z, y; q\right)` are the terms of the objective function + that depend on all variables and the uncertain parameters +* :math:`g_i\left(x, z, y; q\right)` is the :math:`i^\text{th}` + inequality constraint function in set :math:`\mathcal{I}` + (see :ref:`Note `) +* :math:`h_j\left(x, z, y; q\right)` is the :math:`j^\text{th}` + equality constraint function in set :math:`\mathcal{J}` + (see :ref:`Note `) + +.. _var-bounds-to-ineqs: + +.. note:: + PyROS accepts models in which bounds are directly imposed on + ``Var`` objects representing components of the variables :math:`z` + and :math:`y`. These models are cast to + :ref:`the form above ` + by reformulating the bounds as inequality constraints. + +.. _unique-mapping: + +.. note:: + A key requirement of PyROS is that each value of :math:`\left(x, z, q \right)` + maps to a unique value of :math:`y`, a property that is assumed to + be properly enforced by the system of equality constraints + :math:`\mathcal{J}`. + If the mapping is not unique, then the selection of 'state' + (i.e., not degree of freedom) variables :math:`y` is incorrect, + and one or more of the :math:`y` variables should be appropriately + redesignated to be part of either :math:`x` or :math:`z`. + +In order to cast the robust optimization counterpart of the +:ref:`deterministic model `, +we now assume that the uncertain parameters may attain +any realization in a compact uncertainty set +:math:`\mathcal{Q} \subseteq \mathbb{R}^{n_q}` containing +the nominal value :math:`q^{\text{nom}}`. +The set :math:`\mathcal{Q}` may be **either continuous or discrete**. + +Based on the above notation, the form of the robust counterpart addressed by PyROS is + +.. math:: + \begin{array}{ccclll} + \displaystyle \min_{x \in \mathcal{X}} + & \displaystyle \max_{q \in \mathcal{Q}} + & \displaystyle \min_{\substack{z \in \mathbb{R}^{n_z},\\y \in \mathbb{R}^{n_y}}} \ \ & \displaystyle ~~ f_1\left(x\right) + f_2\left(x, z, y, q\right) \\ + & & \text{s.t.}~ & \displaystyle ~~ g_i\left(x, z, y, q\right) \leq 0 & & \forall\, i \in \mathcal{I}\\ + & & & \displaystyle ~~ h_j\left(x, z, y, q\right) = 0 & & \forall\,j \in \mathcal{J} + \end{array} + +PyROS solves problems of this form using the +Generalized Robust Cutting-Set algorithm developed in [Isenberg_et_al]_. + +When using PyROS, please consider citing the above paper. + +PyROS Required Inputs +----------------------------- +The required inputs to the PyROS solver are: + +* The deterministic optimization model +* List of first-stage ("design") variables +* List of second-stage ("control") variables +* List of parameters considered uncertain +* The uncertainty set +* Subordinate local and global nonlinear programming (NLP) solvers + +These are more elaborately presented in the +:ref:`Solver Interface ` section. + +.. note:: + Any variables in the model not specified to be first-stage or second-stage + variables are automatically considered to be state variables. + +.. _solver-interface: + +PyROS Solver Interface +----------------------------- + +.. autoclass:: pyomo.contrib.pyros.PyROS + :members: solve + +.. note:: + Upon successful convergence of PyROS, the solution returned is + certified to be robust optimal only if: + + 1. master problems are solved to global optimality + (by specifying ``solve_master_globally=True``) + 2. a worst-case objective focus is chosen + (by specifying ``objective_focus=ObjectiveType.worst_case``) + + Otherwise, the solution returned is certified to only be robust feasible. + + +PyROS Uncertainty Sets +----------------------------- +Uncertainty sets are represented by subclasses of +the :class:`~pyomo.contrib.pyros.uncertainty_sets.UncertaintySet` +abstract base class. +PyROS provides a suite of pre-implemented subclasses representing +commonly used uncertainty sets. +Custom user-defined uncertainty set types may be implemented by +subclassing the +:class:`~pyomo.contrib.pyros.uncertainty_sets.UncertaintySet` class. +The intersection of a sequence of concrete +:class:`~pyomo.contrib.pyros.uncertainty_sets.UncertaintySet` +instances can be easily constructed by instantiating the pre-implemented +:class:`~pyomo.contrib.pyros.uncertainty_sets.IntersectionSet` +subclass. + +The table that follows provides mathematical definitions of +the various abstract and pre-implemented +:class:`~pyomo.contrib.pyros.uncertainty_sets.UncertaintySet` subclasses. + +.. _table-uncertsets: + +.. list-table:: Mathematical definitions of PyROS uncertainty sets of dimension :math:`n`. + :header-rows: 1 + :class: tight-table + + * - Uncertainty Set Type + - Input Data + - Mathematical Definition + * - :class:`~pyomo.contrib.pyros.uncertainty_sets.BoxSet` + - :math:`\begin{array}{l} q ^{\text{L}} \in \mathbb{R}^{n}, \\ q^{\text{U}} \in \mathbb{R}^{n} \end{array}` + - :math:`\{q \in \mathbb{R}^n \mid q^\mathrm{L} \leq q \leq q^\mathrm{U}\}` + * - :class:`~pyomo.contrib.pyros.uncertainty_sets.CardinalitySet` + - :math:`\begin{array}{l} q^{0} \in \mathbb{R}^{n}, \\ \hat{q} \in \mathbb{R}_{+}^{n}, \\ \Gamma \in [0, n] \end{array}` + - :math:`\left\{ q \in \mathbb{R}^{n} \middle| \begin{array}{l} q = q^{0} + \hat{q} \circ \xi \\ \displaystyle \sum_{i=1}^{n} \xi_{i} \leq \Gamma \\ \xi \in [0, 1]^{n} \end{array} \right\}` + * - :class:`~pyomo.contrib.pyros.uncertainty_sets.BudgetSet` + - :math:`\begin{array}{l} q^{0} \in \mathbb{R}^{n}, \\ b \in \mathbb{R}_{+}^{L}, \\ B \in \{0, 1\}^{L \times n} \end{array}` + - :math:`\left\{ q \in \mathbb{R}^{n} \middle| \begin{array}{l} \begin{pmatrix} B \\ -I \end{pmatrix} q \leq \begin{pmatrix} b + Bq^{0} \\ -q^{0} \end{pmatrix} \end{array} \right\}` + * - :class:`~pyomo.contrib.pyros.uncertainty_sets.FactorModelSet` + - :math:`\begin{array}{l} q^{0} \in \mathbb{R}^{n}, \\ \Psi \in \mathbb{R}^{n \times F}, \\ \beta \in [0, 1] \end{array}` + - :math:`\left\{ q \in \mathbb{R}^{n} \middle| \begin{array}{l} q = q^{0} + \Psi \xi \\ \displaystyle\bigg| \sum_{j=1}^{F} \xi_{j} \bigg| \leq \beta F \\ \xi \in [-1, 1]^{F} \\ \end{array} \right\}` + * - :class:`~pyomo.contrib.pyros.uncertainty_sets.PolyhedralSet` + - :math:`\begin{array}{l} A \in \mathbb{R}^{m \times n}, \\ b \in \mathbb{R}^{m}\end{array}` + - :math:`\{q \in \mathbb{R}^{n} \mid A q \leq b\}` + * - :class:`~pyomo.contrib.pyros.uncertainty_sets.AxisAlignedEllipsoidalSet` + - :math:`\begin{array}{l} q^0 \in \mathbb{R}^{n}, \\ \alpha \in \mathbb{R}_{+}^{n} \end{array}` + - :math:`\left\{ q \in \mathbb{R}^{n} \middle| \begin{array}{l} \displaystyle\sum_{\substack{i = 1: \\ \alpha_{i} > 0}}^{n} \left(\frac{q_{i} - q_{i}^{0}}{\alpha_{i}}\right)^2 \leq 1 \\ q_{i} = q_{i}^{0} \,\forall\,i : \alpha_{i} = 0 \end{array} \right\}` + * - :class:`~pyomo.contrib.pyros.uncertainty_sets.EllipsoidalSet` + - :math:`\begin{array}{l} q^0 \in \mathbb{R}^n, \\ P \in \mathbb{S}_{++}^{n}, \\ s \in \mathbb{R}_{+} \end{array}` + - :math:`\{q \in \mathbb{R}^{n} \mid (q - q^{0})^{\intercal} P^{-1} (q - q^{0}) \leq s\}` + * - :class:`~pyomo.contrib.pyros.uncertainty_sets.UncertaintySet` + - :math:`g: \mathbb{R}^{n} \to \mathbb{R}^{m}` + - :math:`\{q \in \mathbb{R}^{n} \mid g(q) \leq 0\}` + * - :class:`~pyomo.contrib.pyros.uncertainty_sets.DiscreteScenarioSet` + - :math:`q^{1}, q^{2},\dots , q^{S} \in \mathbb{R}^{n}` + - :math:`\{q^{1}, q^{2}, \dots , q^{S}\}` + * - :class:`~pyomo.contrib.pyros.uncertainty_sets.IntersectionSet` + - :math:`\mathcal{Q}_{1}, \mathcal{Q}_{2}, \dots , \mathcal{Q}_{m} \subset \mathbb{R}^{n}` + - :math:`\displaystyle \bigcap_{i=1}^{m} \mathcal{Q}_{i}` + +.. note:: + Each of the PyROS uncertainty set classes inherits from the + :class:`~pyomo.contrib.pyros.uncertainty_sets.UncertaintySet` + abstract base class. + +PyROS Uncertainty Set Classes +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. autoclass:: pyomo.contrib.pyros.uncertainty_sets.BoxSet + :show-inheritance: + :special-members: bounds, type, parameter_bounds, dim, point_in_set + +.. autoclass:: pyomo.contrib.pyros.uncertainty_sets.CardinalitySet + :show-inheritance: + :special-members: origin, positive_deviation, gamma, type, parameter_bounds, dim, point_in_set + +.. autoclass:: pyomo.contrib.pyros.uncertainty_sets.BudgetSet + :show-inheritance: + :special-members: coefficients_mat, rhs_vec, origin, budget_membership_mat, budget_rhs_vec, type, parameter_bounds, dim, point_in_set + +.. autoclass:: pyomo.contrib.pyros.uncertainty_sets.FactorModelSet + :show-inheritance: + :special-members: origin, number_of_factors, psi_mat, beta, type, parameter_bounds, dim, point_in_set + +.. autoclass:: pyomo.contrib.pyros.uncertainty_sets.PolyhedralSet + :show-inheritance: + :special-members: coefficients_mat, rhs_vec, type, parameter_bounds, dim, point_in_set + +.. autoclass:: pyomo.contrib.pyros.uncertainty_sets.AxisAlignedEllipsoidalSet + :show-inheritance: + :special-members: center, half_lengths, type, parameter_bounds, dim, point_in_set + +.. autoclass:: pyomo.contrib.pyros.uncertainty_sets.EllipsoidalSet + :show-inheritance: + :special-members: center, shape_matrix, scale, type, parameter_bounds, dim, point_in_set + +.. autoclass:: pyomo.contrib.pyros.uncertainty_sets.UncertaintySet + :show-inheritance: + :special-members: parameter_bounds, dim, point_in_set + +.. autoclass:: pyomo.contrib.pyros.uncertainty_sets.DiscreteScenarioSet + :show-inheritance: + :special-members: scenarios, type, parameter_bounds, dim, point_in_set + +.. autoclass:: pyomo.contrib.pyros.uncertainty_sets.IntersectionSet + :show-inheritance: + :special-members: all_sets, type, parameter_bounds, dim, point_in_set + + +PyROS Usage Example +----------------------------- + +In this section, we illustrate the usage of PyROS with a modeling example. +The deterministic problem of interest is called *hydro* +(available `here `_), +a QCQP taken from the +`GAMS Model Library `_. +We have converted the model to Pyomo format using the +`GAMS Convert tool `_. + +The *hydro* model features 31 variables, +of which 13 are degrees of freedom and 18 are state variables. +Moreover, there are +6 linear inequality constraints, +12 linear equality constraints, +6 non-linear (quadratic) equality constraints, +and a quadratic objective. +We have extended this model by converting one objective coefficient, +two constraint coefficients, and one constraint right-hand side +into ``Param`` objects so that they can be considered uncertain later on. + +.. note:: + Per our analysis, the *hydro* problem satisfies the requirement that + each value of :math:`\left(x, z, q \right)` maps to a unique + value of :math:`y`, which, in accordance with + :ref:`our earlier note `, + indicates a proper partitioning of the model variables + into (first-stage and second-stage) degrees of freedom and + state variables. + +Step 0: Import Pyomo and the PyROS Module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +In anticipation of using the PyROS solver and building the deterministic Pyomo +model: + +.. doctest:: + + >>> # === Required import === + >>> import pyomo.environ as pyo + >>> import pyomo.contrib.pyros as pyros + + >>> # === Instantiate the PyROS solver object === + >>> pyros_solver = pyo.SolverFactory("pyros") + +Step 1: Define the Deterministic Problem +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The deterministic Pyomo model for *hydro* is shown below. + +.. note:: + Primitive data (Python literals) that have been hard-coded within a + deterministic model cannot be later considered uncertain, + unless they are first converted to ``Param`` objects within + the ``ConcreteModel`` object. + Furthermore, any ``Param`` object that is to be later considered + uncertain must have the property ``mutable=True``. + +.. note:: + In case modifying the ``mutable`` property inside the deterministic + model object itself is not straightforward in your context, + you may consider adding the following statement **after** + ``import pyomo.environ as pyo`` but **before** defining the model + object: ``pyo.Param.DefaultMutable = True``. + For all ``Param`` objects declared after this statement, + the attribute ``mutable`` is set to ``True`` by default. + Hence, non-mutable ``Param`` objects are now declared by + explicitly passing the argument ``mutable=False`` to the + ``Param`` constructor. + +.. doctest:: + + + >>> # === Construct the Pyomo model object === + >>> m = pyo.ConcreteModel() + >>> m.name = "hydro" + + >>> # === Define variables === + >>> m.x1 = pyo.Var(within=pyo.Reals,bounds=(150,1500),initialize=150) + >>> m.x2 = pyo.Var(within=pyo.Reals,bounds=(150,1500),initialize=150) + >>> m.x3 = pyo.Var(within=pyo.Reals,bounds=(150,1500),initialize=150) + >>> m.x4 = pyo.Var(within=pyo.Reals,bounds=(150,1500),initialize=150) + >>> m.x5 = pyo.Var(within=pyo.Reals,bounds=(150,1500),initialize=150) + >>> m.x6 = pyo.Var(within=pyo.Reals,bounds=(150,1500),initialize=150) + >>> m.x7 = pyo.Var(within=pyo.Reals,bounds=(0,1000),initialize=0) + >>> m.x8 = pyo.Var(within=pyo.Reals,bounds=(0,1000),initialize=0) + >>> m.x9 = pyo.Var(within=pyo.Reals,bounds=(0,1000),initialize=0) + >>> m.x10 = pyo.Var(within=pyo.Reals,bounds=(0,1000),initialize=0) + >>> m.x11 = pyo.Var(within=pyo.Reals,bounds=(0,1000),initialize=0) + >>> m.x12 = pyo.Var(within=pyo.Reals,bounds=(0,1000),initialize=0) + >>> m.x13 = pyo.Var(within=pyo.Reals,bounds=(0,None),initialize=0) + >>> m.x14 = pyo.Var(within=pyo.Reals,bounds=(0,None),initialize=0) + >>> m.x15 = pyo.Var(within=pyo.Reals,bounds=(0,None),initialize=0) + >>> m.x16 = pyo.Var(within=pyo.Reals,bounds=(0,None),initialize=0) + >>> m.x17 = pyo.Var(within=pyo.Reals,bounds=(0,None),initialize=0) + >>> m.x18 = pyo.Var(within=pyo.Reals,bounds=(0,None),initialize=0) + >>> m.x19 = pyo.Var(within=pyo.Reals,bounds=(0,None),initialize=0) + >>> m.x20 = pyo.Var(within=pyo.Reals,bounds=(0,None),initialize=0) + >>> m.x21 = pyo.Var(within=pyo.Reals,bounds=(0,None),initialize=0) + >>> m.x22 = pyo.Var(within=pyo.Reals,bounds=(0,None),initialize=0) + >>> m.x23 = pyo.Var(within=pyo.Reals,bounds=(0,None),initialize=0) + >>> m.x24 = pyo.Var(within=pyo.Reals,bounds=(0,None),initialize=0) + >>> m.x25 = pyo.Var(within=pyo.Reals,bounds=(100000,100000),initialize=100000) + >>> m.x26 = pyo.Var(within=pyo.Reals,bounds=(60000,120000),initialize=60000) + >>> m.x27 = pyo.Var(within=pyo.Reals,bounds=(60000,120000),initialize=60000) + >>> m.x28 = pyo.Var(within=pyo.Reals,bounds=(60000,120000),initialize=60000) + >>> m.x29 = pyo.Var(within=pyo.Reals,bounds=(60000,120000),initialize=60000) + >>> m.x30 = pyo.Var(within=pyo.Reals,bounds=(60000,120000),initialize=60000) + >>> m.x31 = pyo.Var(within=pyo.Reals,bounds=(60000,120000),initialize=60000) + + >>> # === Define parameters === + >>> m.set_of_params = pyo.Set(initialize=[0, 1, 2, 3]) + >>> nominal_values = {0:82.8*0.0016, 1:4.97, 2:4.97, 3:1800} + >>> m.p = pyo.Param(m.set_of_params, initialize=nominal_values, mutable=True) + + >>> # === Specify the objective function === + >>> m.obj = pyo.Objective(expr=m.p[0]*m.x1**2 + 82.8*8*m.x1 + 82.8*0.0016*m.x2**2 + + ... 82.8*82.8*8*m.x2 + 82.8*0.0016*m.x3**2 + 82.8*8*m.x3 + + ... 82.8*0.0016*m.x4**2 + 82.8*8*m.x4 + 82.8*0.0016*m.x5**2 + + ... 82.8*8*m.x5 + 82.8*0.0016*m.x6**2 + 82.8*8*m.x6 + 248400, + ... sense=pyo.minimize) + + >>> # === Specify the constraints === + >>> m.c2 = pyo.Constraint(expr=-m.x1 - m.x7 + m.x13 + 1200<= 0) + >>> m.c3 = pyo.Constraint(expr=-m.x2 - m.x8 + m.x14 + 1500 <= 0) + >>> m.c4 = pyo.Constraint(expr=-m.x3 - m.x9 + m.x15 + 1100 <= 0) + >>> m.c5 = pyo.Constraint(expr=-m.x4 - m.x10 + m.x16 + m.p[3] <= 0) + >>> m.c6 = pyo.Constraint(expr=-m.x5 - m.x11 + m.x17 + 950 <= 0) + >>> m.c7 = pyo.Constraint(expr=-m.x6 - m.x12 + m.x18 + 1300 <= 0) + >>> m.c8 = pyo.Constraint(expr=12*m.x19 - m.x25 + m.x26 == 24000) + >>> m.c9 = pyo.Constraint(expr=12*m.x20 - m.x26 + m.x27 == 24000) + >>> m.c10 = pyo.Constraint(expr=12*m.x21 - m.x27 + m.x28 == 24000) + >>> m.c11 = pyo.Constraint(expr=12*m.x22 - m.x28 + m.x29 == 24000) + >>> m.c12 = pyo.Constraint(expr=12*m.x23 - m.x29 + m.x30 == 24000) + >>> m.c13 = pyo.Constraint(expr=12*m.x24 - m.x30 + m.x31 == 24000) + >>> m.c14 = pyo.Constraint(expr=-8e-5*m.x7**2 + m.x13 == 0) + >>> m.c15 = pyo.Constraint(expr=-8e-5*m.x8**2 + m.x14 == 0) + >>> m.c16 = pyo.Constraint(expr=-8e-5*m.x9**2 + m.x15 == 0) + >>> m.c17 = pyo.Constraint(expr=-8e-5*m.x10**2 + m.x16 == 0) + >>> m.c18 = pyo.Constraint(expr=-8e-5*m.x11**2 + m.x17 == 0) + >>> m.c19 = pyo.Constraint(expr=-8e-5*m.x12**2 + m.x18 == 0) + >>> m.c20 = pyo.Constraint(expr=-4.97*m.x7 + m.x19 == 330) + >>> m.c21 = pyo.Constraint(expr=-m.p[1]*m.x8 + m.x20 == 330) + >>> m.c22 = pyo.Constraint(expr=-4.97*m.x9 + m.x21 == 330) + >>> m.c23 = pyo.Constraint(expr=-4.97*m.x10 + m.x22 == 330) + >>> m.c24 = pyo.Constraint(expr=-m.p[2]*m.x11 + m.x23 == 330) + >>> m.c25 = pyo.Constraint(expr=-4.97*m.x12 + m.x24 == 330) + +Step 2: Define the Uncertainty +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +First, we need to collect into a list those ``Param`` objects of our model +that represent potentially uncertain parameters. +For the purposes of our example, we shall assume uncertainty in the model +parameters ``[m.p[0], m.p[1], m.p[2], m.p[3]]``, for which we can +conveniently utilize the object ``m.p`` (itself an indexed ``Param`` object). + +.. doctest:: + + >>> # === Specify which parameters are uncertain === + >>> # We can pass IndexedParams this way to PyROS, + >>> # or as an expanded list per index + >>> uncertain_parameters = [m.p] + +.. note:: + Any ``Param`` object that is to be considered uncertain by PyROS + must have the property ``mutable=True``. + +PyROS will seek to identify solutions that remain feasible for any +realization of these parameters included in an uncertainty set. +To that end, we need to construct an +:class:`~pyomo.contrib.pyros.uncertainty_sets.UncertaintySet` +object. +In our example, let us utilize the +:class:`~pyomo.contrib.pyros.uncertainty_sets.BoxSet` +constructor to specify +an uncertainty set of simple hyper-rectangular geometry. +For this, we will assume each parameter value is uncertain within a +percentage of its nominal value. Constructing this specific +:class:`~pyomo.contrib.pyros.uncertainty_sets.UncertaintySet` +object can be done as follows: + +.. doctest:: + + >>> # === Define the pertinent data === + >>> relative_deviation = 0.15 + >>> bounds = [ + ... (nominal_values[i] - relative_deviation*nominal_values[i], + ... nominal_values[i] + relative_deviation*nominal_values[i]) + ... for i in range(4) + ... ] + + >>> # === Construct the desirable uncertainty set === + >>> box_uncertainty_set = pyros.BoxSet(bounds=bounds) + +Step 3: Solve with PyROS +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +PyROS requires the user to supply one local and one global NLP solver to use +for solving sub-problems. +For convenience, we shall have PyROS invoke BARON as both the local and the +global NLP solver: + +.. doctest:: + :skipif: not (baron.available() and baron.license_is_valid()) + + >>> # === Designate local and global NLP solvers === + >>> local_solver = pyo.SolverFactory('baron') + >>> global_solver = pyo.SolverFactory('baron') + +.. note:: + Additional NLP optimizers can be automatically used in the event the primary + subordinate local or global optimizer passed + to the PyROS :meth:`~pyomo.contrib.pyros.PyROS.solve` method + does not successfully solve a subproblem to an appropriate termination + condition. These alternative solvers are provided through the optional + keyword arguments ``backup_local_solvers`` and ``backup_global_solvers``. + +The final step in solving a model with PyROS is to construct the +remaining required inputs, namely +``first_stage_variables`` and ``second_stage_variables``. +Below, we present two separate cases. + +PyROS Termination Conditions +""""""""""""""""""""""""""""" + +PyROS will return one of six termination conditions upon completion. +These termination conditions are defined through the +:class:`~pyomo.contrib.pyros.util.pyrosTerminationCondition` enumeration +and tabulated below. + +.. table:: PyROS termination conditions. + + +----------------------------------------------------------------------------------+----------------------------------------------------------------+ + | Termination Condition | Description | + +==================================================================================+================================================================+ + | :attr:`~pyomo.contrib.pyros.util.pyrosTerminationCondition.robust_optimal` | The final solution is robust optimal | + +----------------------------------------------------------------------------------+----------------------------------------------------------------+ + | :attr:`~pyomo.contrib.pyros.util.pyrosTerminationCondition.robust_feasible` | The final solution is robust feasible | + +----------------------------------------------------------------------------------+----------------------------------------------------------------+ + | :attr:`~pyomo.contrib.pyros.util.pyrosTerminationCondition.robust_infeasible` | The posed problem is robust infeasible | + +----------------------------------------------------------------------------------+----------------------------------------------------------------+ + | :attr:`~pyomo.contrib.pyros.util.pyrosTerminationCondition.max_iter` | Maximum number of GRCS iteration reached | + +----------------------------------------------------------------------------------+----------------------------------------------------------------+ + | :attr:`~pyomo.contrib.pyros.util.pyrosTerminationCondition.time_out` | Maximum number of time reached | + +----------------------------------------------------------------------------------+----------------------------------------------------------------+ + | :attr:`~pyomo.contrib.pyros.util.pyrosTerminationCondition.subsolver_error` | Unacceptable return status(es) from a user-supplied sub-solver| + +----------------------------------------------------------------------------------+----------------------------------------------------------------+ + + +A Single-Stage Problem +""""""""""""""""""""""""" +If we choose to designate all variables as either design or state variables, +without any control variables (i.e., all degrees of freedom are first-stage), +we can use PyROS to solve the single-stage problem as shown below. +In particular, let us instruct PyROS that variables +``m.x1`` through ``m.x6``, ``m.x19`` through ``m.x24``, and ``m.x31`` +correspond to first-stage degrees of freedom. + +.. _single-stage-problem: + +.. doctest:: + :skipif: not (baron.available() and baron.license_is_valid()) + + >>> # === Designate which variables correspond to first-stage + >>> # and second-stage degrees of freedom === + >>> first_stage_variables = [ + ... m.x1, m.x2, m.x3, m.x4, m.x5, m.x6, + ... m.x19, m.x20, m.x21, m.x22, m.x23, m.x24, m.x31, + ... ] + >>> second_stage_variables = [] + >>> # The remaining variables are implicitly designated to be state variables + + >>> # === Call PyROS to solve the robust optimization problem === + >>> results_1 = pyros_solver.solve( + ... model=m, + ... first_stage_variables=first_stage_variables, + ... second_stage_variables=second_stage_variables, + ... uncertain_params=uncertain_parameters, + ... uncertainty_set=box_uncertainty_set, + ... local_solver=local_solver, + ... global_solver=global_solver, + ... objective_focus=pyros.ObjectiveType.worst_case, + ... solve_master_globally=True, + ... load_solution=False, + ... ) + ============================================================================== + PyROS: The Pyomo Robust Optimization Solver... + ... + ------------------------------------------------------------------------------ + Robust optimal solution identified. + ------------------------------------------------------------------------------ + ... + ------------------------------------------------------------------------------ + All done. Exiting PyROS. + ============================================================================== + >>> # === Query results === + >>> time = results_1.time + >>> iterations = results_1.iterations + >>> termination_condition = results_1.pyros_termination_condition + >>> objective = results_1.final_objective_value + >>> # === Print some results === + >>> single_stage_final_objective = round(objective,-1) + >>> print(f"Final objective value: {single_stage_final_objective}") + Final objective value: 48367380.0 + >>> print(f"PyROS termination condition: {termination_condition}") + PyROS termination condition: pyrosTerminationCondition.robust_optimal + +PyROS Results Object +""""""""""""""""""""""""""" +The results object returned by PyROS allows you to query the following information +from the solve call: + +* ``iterations``: total iterations of the algorithm +* ``time``: total wallclock time (or elapsed time) in seconds +* ``pyros_termination_condition``: the GRCS algorithm termination condition +* ``final_objective_value``: the final objective function value. + +The :ref:`preceding code snippet ` +demonstrates how to retrieve this information. + +If we pass ``load_solution=True`` (the default setting) +to the :meth:`~pyomo.contrib.pyros.PyROS.solve` method, +then the solution at which PyROS terminates will be loaded to +the variables of the original deterministic model. +Note that in the :ref:`preceding code snippet `, +we set ``load_solution=False`` to ensure the next set of runs shown here can +utilize the initial point loaded to the original deterministic model, +as the initial point may affect the performance of sub-solvers. + +.. note:: + The reported ``final_objective_value`` and final model variable values + depend on the selection of the option ``objective_focus``. + The ``final_objective_value`` is the sum of first-stage + and second-stage objective functions. + If ``objective_focus = ObjectiveType.nominal``, + second-stage objective and variables are evaluated at + the nominal realization of the uncertain parameters, :math:`q^{\text{nom}}`. + If ``objective_focus = ObjectiveType.worst_case``, second-stage objective + and variables are evaluated at the worst-case realization + of the uncertain parameters, :math:`q^{k^\ast}` + where :math:`k^\ast = \mathrm{argmax}_{k \in \mathcal{K}}~f_2(x,z^k,y^k,q^k)`. + + +A Two-Stage Problem +"""""""""""""""""""""" +For this next set of runs, we will +assume that some of the previously designated first-stage degrees of +freedom are in fact second-stage degrees of freedom. +PyROS handles second-stage degrees of freedom via the use of polynomial +decision rules, of which the degree is controlled through the +optional keyword argument ``decision_rule_order`` to the PyROS +:meth:`~pyomo.contrib.pyros.PyROS.solve` method. +In this example, we select affine decision rules by setting +``decision_rule_order=1``: + +.. _example-two-stg: + +.. doctest:: + :skipif: not (baron.available() and baron.license_is_valid()) + + >>> # === Define the variable partitioning + >>> first_stage_variables =[m.x5, m.x6, m.x19, m.x22, m.x23, m.x24, m.x31] + >>> second_stage_variables = [m.x1, m.x2, m.x3, m.x4, m.x20, m.x21] + >>> # The remaining variables are implicitly designated to be state variables + + >>> # === Call PyROS to solve the robust optimization problem === + >>> results_2 = pyros_solver.solve( + ... model=m, + ... first_stage_variables=first_stage_variables, + ... second_stage_variables=second_stage_variables, + ... uncertain_params=uncertain_parameters, + ... uncertainty_set=box_uncertainty_set, + ... local_solver=local_solver, + ... global_solver=global_solver, + ... objective_focus=pyros.ObjectiveType.worst_case, + ... solve_master_globally=True, + ... decision_rule_order=1, + ... ) + ============================================================================== + PyROS: The Pyomo Robust Optimization Solver... + ... + ------------------------------------------------------------------------------ + Robust optimal solution identified. + ------------------------------------------------------------------------------ + ... + ------------------------------------------------------------------------------ + All done. Exiting PyROS. + ============================================================================== + >>> # === Compare final objective to the single-stage solution + >>> two_stage_final_objective = round( + ... pyo.value(results_2.final_objective_value), + ... -1, + ... ) + >>> percent_difference = 100 * ( + ... two_stage_final_objective - single_stage_final_objective + ... ) / (single_stage_final_objective) + >>> print("Percent objective change relative to constant decision rules " + ... f"objective: {percent_difference:.2f}") + Percent objective change relative to constant decision rules objective: -24... + +For this example, we notice a ~25% decrease in the final objective +value when switching from a static decision rule (no second-stage recourse) +to an affine decision rule. + + +Specifying Arguments Indirectly Through ``options`` +""""""""""""""""""""""""""""""""""""""""""""""""""" +Like other Pyomo solver interface methods, +:meth:`~pyomo.contrib.pyros.PyROS.solve` +provides support for specifying options indirectly by passing +a keyword argument ``options``, whose value must be a :class:`dict` +mapping names of arguments to :meth:`~pyomo.contrib.pyros.PyROS.solve` +to their desired values. +For example, the ``solve()`` statement in the +:ref:`two-stage problem snippet ` +could have been equivalently written as: + +.. doctest:: + :skipif: not (baron.available() and baron.license_is_valid()) + + >>> results_2 = pyros_solver.solve( + ... model=m, + ... first_stage_variables=first_stage_variables, + ... second_stage_variables=second_stage_variables, + ... uncertain_params=uncertain_parameters, + ... uncertainty_set=box_uncertainty_set, + ... local_solver=local_solver, + ... global_solver=global_solver, + ... options={ + ... "objective_focus": pyros.ObjectiveType.worst_case, + ... "solve_master_globally": True, + ... "decision_rule_order": 1, + ... }, + ... ) + ============================================================================== + PyROS: The Pyomo Robust Optimization Solver... + ... + ------------------------------------------------------------------------------ + Robust optimal solution identified. + ------------------------------------------------------------------------------ + ... + ------------------------------------------------------------------------------ + All done. Exiting PyROS. + ============================================================================== + +In the event an argument is passed directly +by position or keyword, *and* indirectly through ``options``, +an appropriate warning is issued, +and the value passed directly takes precedence over the value +passed through ``options``. + + +The Price of Robustness +"""""""""""""""""""""""" +In conjunction with standard Python control flow tools, +PyROS facilitates a "price of robustness" analysis for a model of interest +through the evaluation and comparison of the robust optimal +objective function value across any appropriately constructed hierarchy +of uncertainty sets. +In this example, we consider a sequence of +box uncertainty sets centered on the nominal uncertain +parameter realization, such that each box is parameterized +by a real value specifying a relative box size. +To this end, we construct an iterable called ``relative_deviation_list`` +whose entries are ``float`` values representing the relative sizes. +We then loop through ``relative_deviation_list`` so that for each relative +size, the corresponding robust optimal objective value +can be evaluated by creating an appropriate +:class:`~pyomo.contrib.pyros.uncertainty_sets.BoxSet` +instance and invoking the PyROS solver: + +.. code:: + + >>> # This takes a long time to run and therefore is not a doctest + >>> # === An array of maximum relative deviations from the nominal uncertain + >>> # parameter values to utilize in constructing box sets + >>> relative_deviation_list = [0.00, 0.10, 0.20, 0.30, 0.40] + >>> # === Final robust optimal objectives + >>> robust_optimal_objectives = [] + >>> for relative_deviation in relative_deviation_list: # doctest: +SKIP + ... bounds = [ + ... (nominal_values[i] - relative_deviation*nominal_values[i], + ... nominal_values[i] + relative_deviation*nominal_values[i]) + ... for i in range(4) + ... ] + ... box_uncertainty_set = pyros.BoxSet(bounds = bounds) + ... results = pyros_solver.solve( + ... model=m, + ... first_stage_variables=first_stage_variables, + ... second_stage_variables=second_stage_variables, + ... uncertain_params=uncertain_parameters, + ... uncertainty_set= box_uncertainty_set, + ... local_solver=local_solver, + ... global_solver=global_solver, + ... objective_focus=pyros.ObjectiveType.worst_case, + ... solve_master_globally=True, + ... decision_rule_order=1, + ... ) + ... is_robust_optimal = ( + ... results.pyros_termination_condition + ... == pyros.pyrosTerminationCondition.robust_optimal + ... ) + ... if not is_robust_optimal: + ... print(f"Instance for relative deviation: {relative_deviation} " + ... "not solved to robust optimality.") + ... robust_optimal_objectives.append("-----") + ... else: + ... robust_optimal_objectives.append(str(results.final_objective_value)) + +For this example, we obtain the following price of robustness results: + +.. table:: Price of robustness results. + + +------------------------------------------+------------------------------+-----------------------------+ + | Uncertainty Set Size (+/-) :sup:`o` | Robust Optimal Objective | % Increase :sup:`x` | + +==========================================+==============================+=============================+ + | 0.00 | 35,837,659.18 | 0.00 % | + +------------------------------------------+------------------------------+-----------------------------+ + | 0.10 | 36,135,182.66 | 0.83 % | + +------------------------------------------+------------------------------+-----------------------------+ + | 0.20 | 36,437,979.81 | 1.68 % | + +------------------------------------------+------------------------------+-----------------------------+ + | 0.30 | 43,478,190.91 | 21.32 % | + +------------------------------------------+------------------------------+-----------------------------+ + | 0.40 | ``robust_infeasible`` | :math:`\text{-----}` | + +------------------------------------------+------------------------------+-----------------------------+ + +Notice that PyROS was successfully able to determine the robust +infeasibility of the problem under the largest uncertainty set. + +:sup:`o` **Relative Deviation from Nominal Realization** + +:sup:`x` **Relative to Deterministic Optimal Objective** + +This example clearly illustrates the potential impact of the uncertainty +set size on the robust optimal objective function value +and demonstrates the ease of implementing a price of robustness study +for a given optimization problem under uncertainty. + +PyROS Solver Log Output +------------------------------- + +The PyROS solver log output is controlled through the optional +``progress_logger`` argument, itself cast to +a standard Python logger (:py:class:`logging.Logger`) object +at the outset of a :meth:`~pyomo.contrib.pyros.PyROS.solve` call. +The level of detail of the solver log output +can be adjusted by adjusting the level of the +logger object; see :ref:`the following table `. +Note that by default, ``progress_logger`` is cast to a logger of level +:py:obj:`logging.INFO`. + +We refer the reader to the +:doc:`official Python logging library documentation ` +for customization of Python logger objects; +for a basic tutorial, see the :doc:`logging HOWTO `. + +.. _table-logging-levels: + +.. list-table:: PyROS solver log output at the various standard Python :py:mod:`logging` levels. + :widths: 10 50 + :header-rows: 1 + + * - Logging Level + - Output Messages + * - :py:obj:`logging.ERROR` + - * Information on the subproblem for which an exception was raised + by a subordinate solver + * Details about failure of the PyROS coefficient matching routine + * - :py:obj:`logging.WARNING` + - * Information about a subproblem not solved to an acceptable status + by the user-provided subordinate optimizers + * Invocation of a backup solver for a particular subproblem + * Caution about solution robustness guarantees in event that + user passes ``bypass_global_separation=True`` + * - :py:obj:`logging.INFO` + - * PyROS version, author, and disclaimer information + * Summary of user options + * Breakdown of model component statistics + * Iteration log table + * Termination details: message, timing breakdown, summary of statistics + * - :py:obj:`logging.DEBUG` + - * Termination outcomes and summary of statistics for + every master feasility, master, and DR polishing problem + * Progress updates for the separation procedure + * Separation subproblem initial point infeasibilities + * Summary of separation loop outcomes: performance constraints + violated, uncertain parameter scenario added to the + master problem + * Uncertain parameter scenarios added to the master problem + thus far + +An example of an output log produced through the default PyROS +progress logger is shown in +:ref:`the snippet that follows `. +Observe that the log contains the following information: + + +* **Introductory information** (lines 1--18). + Includes the version number, author + information, (UTC) time at which the solver was invoked, + and, if available, information on the local Git branch and + commit hash. +* **Summary of solver options** (lines 19--38). +* **Preprocessing information** (lines 39--41). + Wall time required for preprocessing + the deterministic model and associated components, + i.e. standardizing model components and adding the decision rule + variables and equations. +* **Model component statistics** (lines 42--58). + Breakdown of model component statistics. + Includes components added by PyROS, such as the decision rule variables + and equations. +* **Iteration log table** (lines 59--69). + Summary information on the problem iterates and subproblem outcomes. + The constituent columns are defined in detail in + :ref:`the table following the snippet `. +* **Termination message** (lines 70--71). Very brief summary of the termination outcome. +* **Timing statistics** (lines 72--88). + Tabulated breakdown of the solver timing statistics, based on a + :class:`pyomo.common.timing.HierarchicalTimer` printout. + The identifiers are as follows: + + * ``main``: Total time elapsed by the solver. + * ``main.dr_polishing``: Total time elapsed by the subordinate solvers + on polishing of the decision rules. + * ``main.global_separation``: Total time elapsed by the subordinate solvers + on global separation subproblems. + * ``main.local_separation``: Total time elapsed by the subordinate solvers + on local separation subproblems. + * ``main.master``: Total time elapsed by the subordinate solvers on + the master problems. + * ``main.master_feasibility``: Total time elapsed by the subordinate solvers + on the master feasibility problems. + * ``main.preprocessing``: Total preprocessing time. + * ``main.other``: Total overhead time. + +* **Termination statistics** (lines 89--94). Summary of statistics related to the + iterate at which PyROS terminates. +* **Exit message** (lines 95--96). + + +.. _solver-log-snippet: + +.. code-block:: text + :caption: PyROS solver output log for the :ref:`two-stage problem example `. + :linenos: + + ============================================================================== + PyROS: The Pyomo Robust Optimization Solver, v1.2.11. + Pyomo version: 6.7.2 + Commit hash: unknown + Invoked at UTC 2024-03-28T00:00:00.000000 + + Developed by: Natalie M. Isenberg (1), Jason A. F. Sherman (1), + John D. Siirola (2), Chrysanthos E. Gounaris (1) + (1) Carnegie Mellon University, Department of Chemical Engineering + (2) Sandia National Laboratories, Center for Computing Research + + The developers gratefully acknowledge support from the U.S. Department + of Energy's Institute for the Design of Advanced Energy Systems (IDAES). + ============================================================================== + ================================= DISCLAIMER ================================= + PyROS is still under development. + Please provide feedback and/or report any issues by creating a ticket at + https://github.com/Pyomo/pyomo/issues/new/choose + ============================================================================== + Solver options: + time_limit=None + keepfiles=False + tee=False + load_solution=True + symbolic_solver_labels=False + objective_focus= + nominal_uncertain_param_vals=[0.13248000000000001, 4.97, 4.97, 1800] + decision_rule_order=1 + solve_master_globally=True + max_iter=-1 + robust_feasibility_tolerance=0.0001 + separation_priority_order={} + progress_logger= + backup_local_solvers=[] + backup_global_solvers=[] + subproblem_file_directory=None + bypass_local_separation=False + bypass_global_separation=False + p_robustness={} + ------------------------------------------------------------------------------ + Preprocessing... + Done preprocessing; required wall time of 0.175s. + ------------------------------------------------------------------------------ + Model statistics: + Number of variables : 62 + Epigraph variable : 1 + First-stage variables : 7 + Second-stage variables : 6 + State variables : 18 + Decision rule variables : 30 + Number of uncertain parameters : 4 + Number of constraints : 81 + Equality constraints : 24 + Coefficient matching constraints : 0 + Decision rule equations : 6 + All other equality constraints : 18 + Inequality constraints : 57 + First-stage inequalities (incl. certain var bounds) : 10 + Performance constraints (incl. var bounds) : 47 + ------------------------------------------------------------------------------ + Itn Objective 1-Stg Shift 2-Stg Shift #CViol Max Viol Wall Time (s) + ------------------------------------------------------------------------------ + 0 3.5838e+07 - - 5 1.8832e+04 1.741 + 1 3.5838e+07 3.5184e-15 3.9404e-15 10 4.2516e+06 3.766 + 2 3.5993e+07 1.8105e-01 7.1406e-01 13 5.2004e+06 6.288 + 3 3.6285e+07 5.1968e-01 7.7753e-01 4 1.7892e+04 8.247 + 4 3.6285e+07 9.1166e-13 1.9702e-15 0 7.1157e-10g 11.456 + ------------------------------------------------------------------------------ + Robust optimal solution identified. + ------------------------------------------------------------------------------ + Timing breakdown: + + Identifier ncalls cumtime percall % + ----------------------------------------------------------- + main 1 11.457 11.457 100.0 + ------------------------------------------------------ + dr_polishing 4 0.682 0.171 6.0 + global_separation 47 1.109 0.024 9.7 + local_separation 235 5.810 0.025 50.7 + master 5 1.353 0.271 11.8 + master_feasibility 4 0.247 0.062 2.2 + preprocessing 1 0.429 0.429 3.7 + other n/a 1.828 n/a 16.0 + ====================================================== + =========================================================== + + ------------------------------------------------------------------------------ + Termination stats: + Iterations : 5 + Solve time (wall s) : 11.457 + Final objective value : 3.6285e+07 + Termination condition : pyrosTerminationCondition.robust_optimal + ------------------------------------------------------------------------------ + All done. Exiting PyROS. + ============================================================================== + + +The iteration log table is designed to provide, in a concise manner, +important information about the progress of the iterative algorithm for +the problem of interest. +The constituent columns are defined in the +:ref:`table that follows `. + +.. _table-iteration-log-columns: + +.. list-table:: PyROS iteration log table columns. + :widths: 10 50 + :header-rows: 1 + + * - Column Name + - Definition + * - Itn + - Iteration number. + * - Objective + - Master solution objective function value. + If the objective of the deterministic model provided + has a maximization sense, + then the negative of the objective function value is displayed. + Expect this value to trend upward as the iteration number + increases. + If the master problems are solved globally + (by passing ``solve_master_globally=True``), + then after the iteration number exceeds the number of uncertain parameters, + this value should be monotonically nondecreasing + as the iteration number is increased. + A dash ("-") is produced in lieu of a value if the master + problem of the current iteration is not solved successfully. + * - 1-Stg Shift + - Infinity norm of the relative difference between the first-stage + variable vectors of the master solutions of the current + and previous iterations. Expect this value to trend + downward as the iteration number increases. + A dash ("-") is produced in lieu of a value + if the current iteration number is 0, + there are no first-stage variables, + or the master problem of the current iteration is not solved successfully. + * - 2-Stg Shift + - Infinity norm of the relative difference between the second-stage + variable vectors (evaluated subject to the nominal uncertain + parameter realization) of the master solutions of the current + and previous iterations. Expect this value to trend + downward as the iteration number increases. + A dash ("-") is produced in lieu of a value + if the current iteration number is 0, + there are no second-stage variables, + or the master problem of the current iteration is not solved successfully. + * - #CViol + - Number of performance constraints found to be violated during + the separation step of the current iteration. + Unless a custom prioritization of the model's performance constraints + is specified (through the ``separation_priority_order`` argument), + expect this number to trend downward as the iteration number increases. + A "+" is appended if not all of the separation problems + were solved successfully, either due to custom prioritization, a time out, + or an issue encountered by the subordinate optimizers. + A dash ("-") is produced in lieu of a value if the separation + routine is not invoked during the current iteration. + * - Max Viol + - Maximum scaled performance constraint violation. + Expect this value to trend downward as the iteration number increases. + A 'g' is appended to the value if the separation problems were solved + globally during the current iteration. + A dash ("-") is produced in lieu of a value if the separation + routine is not invoked during the current iteration, or if there are + no performance constraints. + * - Wall time (s) + - Total time elapsed by the solver, in seconds, up to the end of the + current iteration. + + +Feedback and Reporting Issues +------------------------------- +Please provide feedback and/or report any problems by opening an issue on +the `Pyomo GitHub page `_. diff --git a/doc/OnlineDocs/user_guide/contributed_packages/satsolver.rst b/doc/OnlineDocs/user_guide/contributed_packages/satsolver.rst new file mode 100644 index 00000000000..4cac9170b55 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/satsolver.rst @@ -0,0 +1,34 @@ +z3 SMT Sat Solver Interface +=========================== + +The z3 Satisfiability Solver interface can convert pyomo variables and expressions for +use with the z3 Satisfiability Solver + +Installation +------------ +z3 is required for use of the Sat Solver can be installed via the command + +.. code:: + + pip install z3-solver + +Using z3 Sat Solver +------------------- +To use the sat solver define your pyomo model as usual: + +.. doctest:: + + Required import + >>> from pyomo.environ import * + >>> from pyomo.contrib.satsolver.satsolver import SMTSatSolver + + Create a simple model + >>> m = ConcreteModel() + >>> m.x = Var() + >>> m.y = Var() + >>> m.obj = Objective(expr=m.x**2 + m.y**2) + >>> m.c = Constraint(expr=m.y >= -2*m.x + 5) + + Invoke the sat solver using optional argument model to automatically process + pyomo model + >>> is_feasible = SMTSatSolver(model = m).check()# doctest: +SKIP diff --git a/doc/OnlineDocs/user_guide/contributed_packages/sensitivity_toolbox.rst b/doc/OnlineDocs/user_guide/contributed_packages/sensitivity_toolbox.rst new file mode 100644 index 00000000000..2a2ccff4b09 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/sensitivity_toolbox.rst @@ -0,0 +1,185 @@ +Sensitivity Toolbox +=================== + +The sensitivity toolbox provides a Pyomo interface to sIPOPT and k_aug to very quickly compute approximate solutions to nonlinear programs with a small perturbation in model parameters. + +See the `sIPOPT documentation `_ or the `following paper `_ for additional details: + + H. Pirnay, R. Lopez-Negrete, and L.T. Biegler, Optimal Sensitivity based on IPOPT, Math. Prog. Comp., 4(4):307--331, 2012. + +The details of `k_aug` can be found in the following link: + + David Thierry (2020). k_aug, https://github.com/dthierry/k_aug + +Using the Sensitivity Toolbox +----------------------------- + +We will start with a motivating example: + +.. math:: + \begin{align*} + \min_{x_1,x_2,x_3} \quad & x_1^2 + x_2^2 + x_3^2 \\ + \mathrm{s.t.} \qquad & 6 x_1 + 3 x_2 + 2 x_3 - p_1 = 0 \\ + & p_2 x_1 + x_2 - x_3 - 1 = 0 \\ + & x_1, x_2, x_3 \geq 0 + \end{align*} + +Here :math:`x_1`, :math:`x_2`, and :math:`x_3` are the decision variables while :math:`p_1` and :math:`p_2` are parameters. At first, let's consider :math:`p_1 = 4.5` and :math:`p_2 = 1.0`. Below is the model implemented in Pyomo. + +.. doctest:: python + + # Import Pyomo and the sensitivity toolbox + >>> from pyomo.environ import * + >>> from pyomo.contrib.sensitivity_toolbox.sens import sensitivity_calculation + + # Create a concrete model + >>> m = ConcreteModel() + + # Define the variables with bounds and initial values + >>> m.x1 = Var(initialize = 0.15, within=NonNegativeReals) + >>> m.x2 = Var(initialize = 0.15, within=NonNegativeReals) + >>> m.x3 = Var(initialize = 0.0, within=NonNegativeReals) + + # Define the parameters + >>> m.eta1 = Param(initialize=4.5,mutable=True) + >>> m.eta2 = Param(initialize=1.0,mutable=True) + + # Define the constraints and objective + >>> m.const1 = Constraint(expr=6*m.x1+3*m.x2+2*m.x3-m.eta1 ==0) + >>> m.const2 = Constraint(expr=m.eta2*m.x1+m.x2-m.x3-1 ==0) + >>> m.cost = Objective(expr=m.x1**2+m.x2**2+m.x3**2) + + +The solution of this optimization problem is :math:`x_1^* = 0.5`, :math:`x_2^* = 0.5`, and :math:`x_3^* = 0.0`. But what if we change the parameter values to :math:`\hat{p}_1 = 4.0` and :math:`\hat{p}_2 = 1.0`? Is there a quick way to approximate the new solution :math:`\hat{x}_1^*`, :math:`\hat{x}_2^*`, and :math:`\hat{x}_3^*`? Yes! This is the main functionality of sIPOPT and k_aug. + +Next we define the perturbed parameter values :math:`\hat{p}_1` and :math:`\hat{p}_2`: + +.. doctest:: python + + >>> m.perturbed_eta1 = Param(initialize = 4.0) + >>> m.perturbed_eta2 = Param(initialize = 1.0) + +And finally we call sIPOPT or k_aug: + +.. doctest:: python + :skipif: not sipopt_available or not k_aug_available or not dot_sens_available + + >>> m_sipopt = sensitivity_calculation('sipopt', m, [m.eta1, m.eta2], [m.perturbed_eta1, m.perturbed_eta2], tee=False) + >>> m_kaug_dsdp = sensitivity_calculation('k_aug', m, [m.eta1, m.eta2], [m.perturbed_eta1, m.perturbed_eta2], tee=False) + +The first argument specifies the method, either 'sipopt' or 'k_aug'. The second argument is the Pyomo model. The third argument is a list of the original parameters. The fourth argument is a list of the perturbed parameters. It's important that these two lists are the same length and in the same order. + +First, we can inspect the initial point: + +.. doctest:: python + :skipif: not sipopt_available or not k_aug_available or not dot_sens_available + + >>> print("eta1 = %0.3f" % m.eta1()) + eta1 = 4.500 + + >>> print("eta2 = %0.3f" % m.eta2()) + eta2 = 1.000 + + # Initial point (not feasible): + >>> print("Objective = %0.3f" % m.cost()) + Objective = 0.045 + + >>> print("x1 = %0.3f" % m.x1()) + x1 = 0.150 + + >>> print("x2 = %0.3f" % m.x2()) + x2 = 0.150 + + >>> print("x3 = %0.3f" % m.x3()) + x3 = 0.000 + +Next, we inspect the solution :math:`x_1^*`, :math:`x_2^*`, and :math:`x_3^*`: + +.. doctest:: python + :skipif: not sipopt_available or not k_aug_available or not dot_sens_available + + # Solution with the original parameter values: + >>> print("Objective = %0.3f" % m_sipopt.cost()) + Objective = 0.500 + + >>> print("x1 = %0.3f" % m_sipopt.x1()) + x1 = 0.500 + + >>> print("x2 = %0.3f" % m_sipopt.x2()) + x2 = 0.500 + + >>> print("x3 = %0.3f" % m_sipopt.x3()) + x3 = 0.000 + +Note that k_aug does not save the solution with the original parameter values. Finally, we inspect the approximate solution :math:`\hat{x}_1^*`, :math:`\hat{x}_2^*`, and :math:`\hat{x}_3^*`: + +.. doctest:: python + :skipif: not sipopt_available or not k_aug_available or not dot_sens_available + + # *sIPOPT* + # New parameter values: + >>> print("eta1 = %0.3f" %m_sipopt.perturbed_eta1()) + eta1 = 4.000 + + >>> print("eta2 = %0.3f" % m_sipopt.perturbed_eta2()) + eta2 = 1.000 + + # (Approximate) solution with the new parameter values: + >>> x1 = m_sipopt.sens_sol_state_1[m_sipopt.x1] + >>> x2 = m_sipopt.sens_sol_state_1[m_sipopt.x2] + >>> x3 = m_sipopt.sens_sol_state_1[m_sipopt.x3] + >>> print("Objective = %0.3f" % (x1**2 + x2**2 + x3**2)) + Objective = 0.556 + + >>> print("x1 = %0.3f" % x1) + x1 = 0.333 + + >>> print("x2 = %0.3f" % x2) + x2 = 0.667 + + >>> print("x3 = %0.3f" % x3) + x3 = -0.000 + + # *k_aug* + # New parameter values: + >>> print("eta1 = %0.3f" %m_kaug_dsdp.perturbed_eta1()) + eta1 = 4.000 + + >>> print("eta2 = %0.3f" % m_kaug_dsdp.perturbed_eta2()) + eta2 = 1.000 + + # (Approximate) solution with the new parameter values: + >>> x1 = m_kaug_dsdp.x1() + >>> x2 = m_kaug_dsdp.x2() + >>> x3 = m_kaug_dsdp.x3() + >>> print("Objective = %0.3f" % (x1**2 + x2**2 + x3**2)) + Objective = 0.556 + + >>> print("x1 = %0.3f" % x1) + x1 = 0.333 + + >>> print("x2 = %0.3f" % x2) + x2 = 0.667 + + >>> print("x3 = %0.3f" % x3) + x3 = -0.000 + + +Installing sIPOPT and k_aug +--------------------------- + +The sensitivity toolbox requires either sIPOPT or k_aug to be installed and available in your system PATH. See the sIPOPT and k_aug documentation for detailed instructions: + +* https://coin-or.github.io/Ipopt/INSTALL.html +* https://projects.coin-or.org/Ipopt/wiki/sIpopt +* https://coin-or.github.io/coinbrew/ +* https://github.com/dthierry/k_aug + +.. note:: + If you get an error that ``ipopt_sens`` or ``k_aug`` and ``dot_sens`` cannot be found, double check your installation and make sure the build directories containing the executables were added to your system PATH. + + +Sensitivity Toolbox Interface +----------------------------- + +.. autofunction:: pyomo.contrib.sensitivity_toolbox.sens.sensitivity_calculation diff --git a/doc/OnlineDocs/user_guide/contributed_packages/trustregion.rst b/doc/OnlineDocs/user_guide/contributed_packages/trustregion.rst new file mode 100644 index 00000000000..f477c905e33 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/trustregion.rst @@ -0,0 +1,189 @@ +#################################### +Trust Region Framework Method Solver +#################################### + +The Trust Region Framework (TRF) method solver allows users to solve hybrid +glass box/black box optimization problems in which parts of the system are +modeled with open, equation-based models and parts of the system are black +boxes. This method utilizes surrogate models that substitute high-fidelity +models with low-fidelity basis functions, thus avoiding the direct implementation +of the large, computationally expensive high-fidelity models. This is done +iteratively, resulting in fewer calls to the computationally expensive functions. + +This module implements the method from Yoshio & Biegler +[`Yoshio & Biegler, 2021`_] and represents a rewrite of the original 2018 +implementation of the algorithm from Eason & Biegler [`Eason & Biegler, 2018`_]. + +In the context of this updated module, black box functions are implemented as +Pyomo External Functions. + +This work was conducted as part of the Institute for the Design of Advanced +Energy Systems (`IDAES `_) with support through the +Simulation-Based Engineering, Crosscutting Research Program within the U.S. +Department of Energy’s Office of Fossil Energy and Carbon Management. + +.. _Eason & Biegler, 2018: https://doi.org/10.1002/aic.16364 +.. _Yoshio & Biegler, 2021: https://doi.org/10.1002/aic.17054 + +Methodology Overview +--------------------- + +The formulation of the original hybrid problem is: + +.. math:: + \begin{align*} + \displaystyle \min_{} & ~~ f\left(z, w, d\left(w\right)\right) & \\ + \displaystyle \text{s.t.} \quad \: & ~~ h\left(z, w, d\left(w\right)\right) = 0 \\ + \displaystyle & ~~ g\left(z, w, d\left(w\right)\right) \leq 0 + \end{align*} + +where: + +* :math:`w \in \mathbb{R}^m` are the inputs to the external functions +* :math:`z \in \mathbb{R}^n` are the remaining decision variables (i.e., degrees of freedom) +* :math:`d(w) : \mathbb{R}^m \to \mathbb{R}^p` are the outputs of the external functions as a function of :math:`w` +* :math:`f`, `h`, `g`, `d` are all assumed to be twice continuously differentiable + +This formulation is reworked to separate all external function information as +follows to enable the usage of the trust region method: + +.. math:: + \begin{align*} + \displaystyle \min_{x} & ~~ f\left(x\right) & \\ + \displaystyle \text{s.t.} \quad \: & ~~ h\left(x\right) = 0 \\ + \displaystyle & ~~ g\left(x\right) \leq 0 \\ + \displaystyle & ~~ y = d\left(w\right) + \end{align*} + +where: + +* :math:`y \in \mathbb{R}^p` are the outputs of the external functions +* :math:`x^T = [w^T, y^T, z^T]` is a set of all inputs and outputs + +Using this formulation and a user-supplied low-fidelity/ideal model basis function +:math:`b\left(w\right)`, the algorithm iteratively solves subproblems using +the surrogate model: + +.. math:: + \begin{align*} + r_k\left(w\right) = b\left(w\right) + \left( d\left(w_k\right) - b\left(w_k\right) \right) + \left( \nabla d\left(w_k\right) - \nabla b\left(w_k\right) \right)^T \left( w - w_k \right) + \end{align*} + +This acts similarly to Newton's method in that small, incremental steps are taken +towards an optimal solution. At each iteration, the current solution of the +subproblem is compared to the previous solution to ensure that +the iteration has moved in a direction towards an optimal solution. If not true, +the step is rejected. If true, the step is accepted and the surrogate +model is updated for the next iteration. + +When using TRF, please consider citing the above papers. + +TRF Inputs +----------- + +The required inputs to the TRF +:py:meth:`solve ` +method are the following: + +* The optimization model +* List of degree of freedom variables within the model + +The optional input to the TRF +:py:meth:`solve ` +method is the following: + +* The external function surrogate model rule ("basis function") + + +TRF Solver Interface +--------------------- + +.. note:: + The keyword arguments can be updated at solver instantiation or later when the ``solve`` method is called. + +.. autoclass:: pyomo.contrib.trustregion.TRF.TrustRegionSolver + :members: solve + +TRF Usage Example +------------------ +Two examples can be found in the examples_ subdirectory. One of them is +implemented below. + +.. _examples: https://github.com/Pyomo/pyomo/tree/main/pyomo/contrib/trustregion/examples + +Step 0: Import Pyomo +^^^^^^^^^^^^^^^^^^^^^ + +.. doctest:: + + >>> # === Required imports === + >>> import pyomo.environ as pyo + +Step 1: Define the external function and its gradient +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. doctest:: + + >>> # === Define a 'black box' function and its gradient === + >>> def ext_fcn(a, b): + ... return pyo.sin(a - b) + >>> def grad_ext_fcn(args, fixed): + ... a, b = args[:2] + ... return [ pyo.cos(a - b), -pyo.cos(a - b) ] + +Step 2: Create the model +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. doctest:: + + >>> # === Construct the Pyomo model object === + >>> def create_model(): + ... m = pyo.ConcreteModel() + ... m.name = 'Example 1: Eason' + ... m.z = pyo.Var(range(3), domain=pyo.Reals, initialize=2.) + ... m.x = pyo.Var(range(2), initialize=2.) + ... m.x[1] = 1.0 + ... + ... m.ext_fcn = pyo.ExternalFunction(ext_fcn, grad_ext_fcn) + ... + ... m.obj = pyo.Objective( + ... expr=(m.z[0]-1.0)**2 + (m.z[0]-m.z[1])**2 + (m.z[2]-1.0)**2 \ + ... + (m.x[0]-1.0)**4 + (m.x[1]-1.0)**6 + ... ) + ... + ... m.c1 = pyo.Constraint( + ... expr=m.x[0] * m.z[0]**2 + m.ext_fcn(m.x[0], m.x[1]) == 2*pyo.sqrt(2.0) + ... ) + ... m.c2 = pyo.Constraint(expr=m.z[2]**4 * m.z[1]**2 + m.z[1] == 8+pyo.sqrt(2.0)) + ... return m + >>> model = create_model() + +Step 3: Solve with TRF +^^^^^^^^^^^^^^^^^^^^^^^ + +.. note:: + Reminder from earlier that the ``solve`` method requires the user pass the model and a list of variables + which represent the degrees of freedom in the model. The user may also pass + a low-fidelity/ideal model (or "basis function") to this method to improve + convergence. + +.. doctest:: + :skipif: not ipopt_available + + >>> # === Instantiate the TRF solver object === + >>> trf_solver = pyo.SolverFactory('trustregion') + >>> # === Solve with TRF === + >>> result = trf_solver.solve(model, [model.z[0], model.z[1], model.z[2]]) + EXIT: Optimal solution found. + ... + +The :py:meth:`solve ` +method returns a clone of the original model which has been run +through TRF algorithm, thus leaving the original model intact. + + +.. warning:: + + TRF is still under a beta release. Please provide feedback and/or + report any problems by opening an issue on the Pyomo + `GitHub page `_. diff --git a/doc/OnlineDocs/user_guide/errors.rst b/doc/OnlineDocs/user_guide/errors.rst new file mode 100644 index 00000000000..162c2e10257 --- /dev/null +++ b/doc/OnlineDocs/user_guide/errors.rst @@ -0,0 +1,192 @@ +Common Warnings/Errors +====================== + +.. + NOTE to developers: as we use section links to direct users, it is + critical that the "IDs" are unique. When adding a new extended + warning / error description, DO NOT renumber existing entries. Also, + for backwards compatibility, DO NOT recycle old ID (no longer used) + numbers. + +.. doctest:: + :hide: + + >>> import pyomo.environ as pyo + +.. py:currentmodule:: pyomo.environ + + +.. =================================================================== +.. Extended descriptions for Pyomo warnings +.. =================================================================== + +Warnings +-------- + +.. _W1001: + +W1001: Setting Var value not in domain +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +When setting :class:`Var` values (by either calling :meth:`Var.set_value()` +or setting the :attr:`value` attribute), Pyomo will validate the +incoming value by checking that the value is ``in`` the +:attr:`Var.domain`. Any values not in the domain will generate this +warning: + +.. doctest:: + + >>> m = pyo.ConcreteModel() + >>> m.x = pyo.Var(domain=pyo.Integers) + >>> m.x = 0.5 + WARNING (W1001): Setting Var 'x' to a value `0.5` (float) not in domain + Integers. + See also https://pyomo.readthedocs.io/en/stable/errors.html#w1001 + >>> print(m.x.value) + 0.5 + + +Users can bypass all domain validation by setting the value using: + +.. doctest:: + + >>> m.x.set_value(0.75, skip_validation=True) + >>> print(m.x.value) + 0.75 + + + +.. _W1002: + +W1002: Setting Var value outside the bounds +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +When setting :py:class:`Var` values (by either calling :meth:`set_value()` +or setting the :attr:`value` attribute), Pyomo will validate the +incoming value by checking that the value is within the range specified by +:attr:`Var.bounds`. Any values outside the bounds will generate this +warning: + +.. doctest:: + + >>> m = pyo.ConcreteModel() + >>> m.x = pyo.Var(domain=pyo.Integers, bounds=(1, 5)) + >>> m.x = 0 + WARNING (W1002): Setting Var 'x' to a numeric value `0` outside the bounds + (1, 5). + See also https://pyomo.readthedocs.io/en/stable/errors.html#w1002 + >>> print(m.x.value) + 0 + +Users can bypass all domain validation by setting the value using: + +.. doctest:: + + >>> m.x.set_value(10, skip_validation=True) + >>> print(m.x.value) + 10 + + + +.. _W1003: + +W1003: Unexpected RecursionError walking an expression tree +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Pyomo leverages a recursive walker (the +:py:class:`~pyomo.core.expr.visitor.StreamBasedExpressionVisitor`) to +traverse (walk) expression trees. For most expressions, this recursive +walker is the most efficient. However, Python has a relatively shallow +recursion limit (generally, 1000 frames). The recursive walker is +designed to monitor the stack depth and cleanly switch to a nonrecursive +walker before hitting the stack limit. However, there are two (rare) +cases where the Python stack limit can still generate a +:py:exc:`RecursionError` exception: + +#. Starting the walker with fewer than + :py:data:`pyomo.core.expr.visitor.RECURSION_LIMIT` available frames. +#. Callbacks that require more than 2 * + :py:data:`pyomo.core.expr.visitor.RECURSION_LIMIT` frames. + +The (default) recursive walker will catch the exception and restart the +walker from the beginning in non-recursive mode, issuing this warning. +The caution is that any partial work done by the walker before the +exception was raised will be lost, potentially leaving the walker in an +inconsistent state. Users can avoid this by + +- avoiding recursive callbacks +- restructuring the system design to avoid triggering the walker with + few available stack frames +- directly calling the + :py:meth:`~pyomo.core.expr.visitor.StreamBasedExpressionVisitor.walk_expression_nonrecursive()` + walker method + +.. doctest:: + :skipif: (on_github_actions and system_info[0].startswith('win')) \ + or system_info[2] == 'PyPy' + + >>> import sys + >>> import pyomo.core.expr.visitor as visitor + >>> from pyomo.core.tests.unit.test_visitor import fill_stack + >>> expression_depth = visitor.StreamBasedExpressionVisitor( + ... exitNode=lambda node, data: max(data) + 1 if data else 1) + >>> m = pyo.ConcreteModel() + >>> m.x = pyo.Var() + >>> @m.Expression(range(35)) + ... def e(m, i): + ... return m.e[i-1] if i else m.x + >>> expression_depth.walk_expression(m.e[34]) + 36 + >>> fill_stack(sys.getrecursionlimit() - visitor.get_stack_depth() - 30, + ... expression_depth.walk_expression, + ... m.e[34]) + WARNING (W1003): Unexpected RecursionError walking an expression tree. + See also https://pyomo.readthedocs.io/en/stable/errors.html#w1003 + 36 + >>> fill_stack(sys.getrecursionlimit() - visitor.get_stack_depth() - 30, + ... expression_depth.walk_expression_nonrecursive, + ... m.e[34]) + 36 + + +.. =================================================================== +.. Extended descriptions for Pyomo errors +.. =================================================================== + +Errors +------ + +.. _E2001: + +E2001: Variable domains must be an instance of a Pyomo Set +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Variable domains are always Pyomo :class:`Set` or :class:`RangeSet` +objects. This includes global sets like ``Reals``, ``Integers``, +``Binary``, ``NonNegativeReals``, etc., as well as model-specific +:class:`Set` instances. The :attr:`Var.domain` setter will attempt to +convert assigned values to a Pyomo `Set`, with any failures leading to +this warning (and an exception from the converter): + +.. doctest:: + + >>> m = pyo.ConcreteModel() + >>> m.x = pyo.Var() + >>> m.x.domain = 5 + Traceback (most recent call last): + ... + TypeError: Cannot create a Set from data that does not support __contains__... + ERROR (E2001): 5 is not a valid domain. Variable domains must be an instance + of a Pyomo Set or convertible to a Pyomo Set. + See also https://pyomo.readthedocs.io/en/stable/errors.html#e2001 + + + +.. =================================================================== +.. Extended descriptions for Pyomo exceptions +.. =================================================================== + +.. Exceptions +.. ---------- + +.. .. _X101: diff --git a/doc/OnlineDocs/user_guide/external_tutorials.rst b/doc/OnlineDocs/user_guide/external_tutorials.rst new file mode 100644 index 00000000000..a18f9d77d42 --- /dev/null +++ b/doc/OnlineDocs/user_guide/external_tutorials.rst @@ -0,0 +1,20 @@ +Pyomo Tutorial Examples +======================= + +Additional Pyomo tutorials and examples can be found at the following links: + +* `Pyomo — Optimization Modeling in Python + `_ ([PyomoBookIII]_) + +* `Pyomo Workshop Slides and Exercises + `_ + +* `Prof. Jeffrey Kantor's Pyomo Cookbook + `_ + +* The `companion notebooks `_ + for *Hands-On Mathematical Optimization with Python* + +* `Pyomo Gallery `_ + + diff --git a/doc/OnlineDocs/user_guide/flattener/index.rst b/doc/OnlineDocs/user_guide/flattener/index.rst new file mode 100644 index 00000000000..f9dd8ea6abb --- /dev/null +++ b/doc/OnlineDocs/user_guide/flattener/index.rst @@ -0,0 +1,65 @@ +"Flattening" a Pyomo model +========================== + +.. autosummary:: + + pyomo.dae.flatten + +.. toctree:: + :maxdepth: 1 + + motivation.rst + reference.rst + +What does it mean to flatten a model? +------------------------------------- +When accessing components in a block-structured model, we use +``component_objects`` or ``component_data_objects`` to access all objects +of a specific ``Component`` or ``ComponentData`` type. +The generated objects may be thought of as a "flattened" representation +of the model, as they may be accessed without any knowledge of the model's +block structure. +These methods are very useful, but it is still challenging to use them +to access specific components. +Specifically, we often want to access "all components indexed by some set," +or "all component data at a particular index of this set." +In addition, we often want to generate the components in a block that +is indexed by our particular set, as these components may be thought of as +"implicitly indexed" by this set. +The ``pyomo.dae.flatten`` module aims to address this use case by providing +utilities to generate all components indexed, explicitly or implicitly, by +user-provided sets. + +**When we say "flatten a model," we mean "recursively generate all components in +the model," where a component can be indexed only by user-specified indexing +sets (or is not indexed at all)**. + +Data structures +--------------- +The components returned are either ``ComponentData`` objects, for components +not indexed by any of the provided sets, or references-to-slices, for +components indexed, explicitly or implicitly, by the provided sets. +Slices are necessary as they can encode "implicit indexing" -- where a +component is contained in an indexed block. It is natural to return references +to these slices, so they may be accessed and manipulated like any other +component. + +Citation +-------- +If you use the ``pyomo.dae.flatten`` module in your research, we would appreciate +you citing the following paper, which gives more detail about the motivation for +and examples of using this functinoality. + +.. code-block:: bibtex + + @article{parker2023mpc, + title = {Model predictive control simulations with block-hierarchical differential-algebraic process models}, + journal = {Journal of Process Control}, + volume = {132}, + pages = {103113}, + year = {2023}, + issn = {0959-1524}, + doi = {https://doi.org/10.1016/j.jprocont.2023.103113}, + url = {https://www.sciencedirect.com/science/article/pii/S0959152423002007}, + author = {Robert B. Parker and Bethany L. Nicholson and John D. Siirola and Lorenz T. Biegler}, + } diff --git a/doc/OnlineDocs/user_guide/flattener/motivation.rst b/doc/OnlineDocs/user_guide/flattener/motivation.rst new file mode 100644 index 00000000000..046d888a215 --- /dev/null +++ b/doc/OnlineDocs/user_guide/flattener/motivation.rst @@ -0,0 +1,26 @@ +Motivation +========== + +The ``pyomo.dae.flatten`` module was originally developed to assist with +dynamic optimization. A very common operation in dynamic or multi-period +optimization is to initialize all time-indexed variables to their values +at a specific time point. However, for variables indexed by time and +arbitrary other indexing sets, this is difficult to do in a way that does +does not depend on the variable we are initializing. Things get worse +when we consider that a time index can exist on a parent block rather +than the component itself. + +By "reshaping" time-indexed variables in a model into references indexed +only by time, the ``flatten_dae_components`` function allows us to perform +operations that depend on knowledge of time indices without knowing +anything about the variables that we are operating on. + +This "flattened representation" of a model turns out to be useful for +dynamic optimization in a variety of other contexts. Examples include +constructing a tracking objective function and plotting results. +This representation is also useful in cases where we want to preserve +indexing along more than one set, as in PDE-constrained optimization. +The ``flatten_components_along_sets`` function allows partitioning +components while preserving multiple indexing sets. +In such a case, time and space-indexed data for a given variable is useful +for purposes such as initialization, visualization, and stability analysis. diff --git a/doc/OnlineDocs/user_guide/flattener/reference.rst b/doc/OnlineDocs/user_guide/flattener/reference.rst new file mode 100644 index 00000000000..22c7b67e1f6 --- /dev/null +++ b/doc/OnlineDocs/user_guide/flattener/reference.rst @@ -0,0 +1,14 @@ +API reference +============= + +.. autosummary:: + + pyomo.dae.flatten.slice_component_along_sets + pyomo.dae.flatten.flatten_components_along_sets + pyomo.dae.flatten.flatten_dae_components + +.. autofunction:: pyomo.dae.flatten.slice_component_along_sets + +.. autofunction:: pyomo.dae.flatten.flatten_components_along_sets + +.. autofunction:: pyomo.dae.flatten.flatten_dae_components diff --git a/doc/OnlineDocs/user_guide/index.rst b/doc/OnlineDocs/user_guide/index.rst new file mode 100644 index 00000000000..d2fa7377d39 --- /dev/null +++ b/doc/OnlineDocs/user_guide/index.rst @@ -0,0 +1,6 @@ +User Guide +========== + +:doc:`Common Warnings/Errors ` +:doc:`External Pyomo Tutorials ` + diff --git a/doc/OnlineDocs/user_guide/modeling_extensions/__init__.py b/doc/OnlineDocs/user_guide/modeling_extensions/__init__.py new file mode 100644 index 00000000000..a4a626013c4 --- /dev/null +++ b/doc/OnlineDocs/user_guide/modeling_extensions/__init__.py @@ -0,0 +1,10 @@ +# ___________________________________________________________________________ +# +# Pyomo: Python Optimization Modeling Objects +# Copyright (c) 2008-2024 +# National Technology and Engineering Solutions of Sandia, LLC +# Under the terms of Contract DE-NA0003525 with National Technology and +# Engineering Solutions of Sandia, LLC, the U.S. Government retains certain +# rights in this software. +# This software is distributed under the 3-clause BSD License. +# ___________________________________________________________________________ diff --git a/doc/OnlineDocs/user_guide/modeling_extensions/bilevel.rst b/doc/OnlineDocs/user_guide/modeling_extensions/bilevel.rst new file mode 100644 index 00000000000..5e9ee9b0a7c --- /dev/null +++ b/doc/OnlineDocs/user_guide/modeling_extensions/bilevel.rst @@ -0,0 +1,6 @@ +Bilevel Programming +=================== + +``pyomo.bilevel`` provides extensions supporting modeling of multi-level +optimization problems. + diff --git a/doc/OnlineDocs/user_guide/modeling_extensions/dae.rst b/doc/OnlineDocs/user_guide/modeling_extensions/dae.rst new file mode 100644 index 00000000000..ff0fb75e610 --- /dev/null +++ b/doc/OnlineDocs/user_guide/modeling_extensions/dae.rst @@ -0,0 +1,933 @@ +Dynamic Optimization with pyomo.DAE +=================================== + +.. image:: /../logos/dae/Pyomo-DAE-150.png + :scale: 35% + :align: right + +The pyomo.DAE modeling extension [PyomoDAE]_ allows users to incorporate systems of +differential algebraic equations (DAE)s in a Pyomo model. The modeling +components in this extension are able to represent ordinary or partial +differential equations. The differential equations do not have to be +written in a particular format and the components are flexible enough to +represent higher-order derivatives or mixed partial +derivatives. Pyomo.DAE also includes model transformations which use +simultaneous discretization approaches to transform a DAE model into an +algebraic model. Finally, pyomo.DAE includes utilities for simulating +DAE models and initializing dynamic optimization problems. + + + +Modeling Components +------------------- + +.. (Replace these definitions with in-code documentation) + +Pyomo.DAE introduces three new modeling components to Pyomo: + +.. autosummary:: + :nosignatures: + + pyomo.dae.ContinuousSet + pyomo.dae.DerivativeVar + pyomo.dae.Integral + +As will be shown later, differential equations can be declared using +using these new modeling components along with the standard Pyomo +:py:class:`Var ` and +:py:class:`Constraint ` components. + +ContinuousSet +************* + +This component is used to define continuous bounded domains (for example +'spatial' or 'time' domains). It is similar to a Pyomo +:py:class:`Set ` component and can be used to index things +like variables and constraints. Any number of +:py:class:`ContinuousSets ` can be used to index a +component and components can be indexed by both +:py:class:`Sets ` and +:py:class:`ContinuousSets ` in arbitrary order. + +In the current implementation, models with +:py:class:`ContinuousSet` components may not be solved +until every :py:class:`ContinuousSet` has been +discretized. Minimally, a :py:class:`ContinuousSet` +must be initialized with two numeric values representing the upper and lower +bounds of the continuous domain. A user may also specify additional points in +the domain to be used as finite element points in the discretization. + +.. autoclass:: pyomo.dae.ContinuousSet + :members: + +The following code snippet shows examples of declaring a +:py:class:`ContinuousSet ` component on a +concrete Pyomo model: + +.. doctest:: + + Required imports + >>> from pyomo.environ import * + >>> from pyomo.dae import * + + >>> model = ConcreteModel() + + Declaration by providing bounds + >>> model.t = ContinuousSet(bounds=(0,5)) + + Declaration by initializing with desired discretization points + >>> model.x = ContinuousSet(initialize=[0,1,2,5]) + +.. note:: + A :py:class:`ContinuousSet ` may not be + constructed unless at least two numeric points are provided to bound the + continuous domain. + +The following code snippet shows an example of declaring a +:py:class:`ContinuousSet ` component on an +abstract Pyomo model using the example data file. + +.. code-block:: ampl + + set t := 0 0.5 2.25 3.75 5; + +.. doctest:: + + Required imports + >>> from pyomo.environ import * + >>> from pyomo.dae import * + + >>> model = AbstractModel() + + The ContinuousSet below will be initialized using the points + in the data file when a model instance is created. + >>> model.t = ContinuousSet() + +.. note:: + If a separate data file is used to initialize a + :py:class:`ContinuousSet `, it is done using + the 'set' command and not 'continuousset' + +.. note:: + Most valid ways to declare and initialize a + :py:class:`Set ` can be used to + declare and initialize a :py:class:`ContinuousSet`. + See the documentation for :py:class:`Set ` for additional + options. + +.. warning:: + Be careful using a :py:class:`ContinuousSet + ` as an implicit index in an expression, + i.e. ``sum(m.v[i] for i in m.myContinuousSet)``. The expression will + be generated using the discretization points contained in the + :py:class:`ContinuousSet ` at the time the + expression was constructed and will not be updated if additional + points are added to the set during discretization. + +.. note:: + :py:class:`ContinuousSet ` components are + always ordered (sorted) therefore the ``first()`` and ``last()`` + :py:class:`Set ` methods can be used to access the lower + and upper boundaries of the + :py:class:`ContinuousSet ` respectively + +DerivativeVar +************* + +.. autoclass:: pyomo.dae.DerivativeVar + :members: + +The code snippet below shows examples of declaring +:py:class:`DerivativeVar ` components on a +Pyomo model. In each case, the variable being differentiated is supplied +as the only positional argument and the type of derivative is specified +using the 'wrt' (or the more verbose 'withrespectto') keyword +argument. Any keyword argument that is valid for a Pyomo +:py:class:`Var ` component may also be specified. + +.. doctest:: + + Required imports + >>> from pyomo.environ import * + >>> from pyomo.dae import * + + >>> model = ConcreteModel() + >>> model.s = Set(initialize=['a','b']) + >>> model.t = ContinuousSet(bounds=(0,5)) + >>> model.l = ContinuousSet(bounds=(-10,10)) + + >>> model.x = Var(model.t) + >>> model.y = Var(model.s,model.t) + >>> model.z = Var(model.t,model.l) + + Declare the first derivative of model.x with respect to model.t + >>> model.dxdt = DerivativeVar(model.x, withrespectto=model.t) + + Declare the second derivative of model.y with respect to model.t + Note that this DerivativeVar will be indexed by both model.s and model.t + >>> model.dydt2 = DerivativeVar(model.y, wrt=(model.t,model.t)) + + Declare the partial derivative of model.z with respect to model.l + Note that this DerivativeVar will be indexed by both model.t and model.l + >>> model.dzdl = DerivativeVar(model.z, wrt=(model.l), initialize=0) + + Declare the mixed second order partial derivative of model.z with respect + to model.t and model.l and set bounds + >>> model.dz2 = DerivativeVar(model.z, wrt=(model.t, model.l), bounds=(-10, 10)) + +.. note:: + The 'initialize' keyword argument will initialize the value of a + derivative and is **not** the same as specifying an initial + condition. Initial or boundary conditions should be specified using a + :py:class:`Constraint` or + :py:class:`ConstraintList` or + by fixing the value of a :py:class:`Var` at a boundary + point. + +Declaring Differential Equations +-------------------------------- + +A differential equations is declared as a standard Pyomo +:py:class:`Constraint` and is not required to have +any particular form. The following code snippet shows how one might declare +an ordinary or partial differential equation. + +.. doctest:: + + Required imports + >>> from pyomo.environ import * + >>> from pyomo.dae import * + + >>> model = ConcreteModel() + >>> model.s = Set(initialize=['a', 'b']) + >>> model.t = ContinuousSet(bounds=(0, 5)) + >>> model.l = ContinuousSet(bounds=(-10, 10)) + + >>> model.x = Var(model.s, model.t) + >>> model.y = Var(model.t, model.l) + >>> model.dxdt = DerivativeVar(model.x, wrt=model.t) + >>> model.dydt = DerivativeVar(model.y, wrt=model.t) + >>> model.dydl2 = DerivativeVar(model.y, wrt=(model.l, model.l)) + + An ordinary differential equation + >>> def _ode_rule(m, s, t): + ... if t == 0: + ... return Constraint.Skip + ... return m.dxdt[s, t] == m.x[s, t]**2 + >>> model.ode = Constraint(model.s, model.t, rule=_ode_rule) + + A partial differential equation + >>> def _pde_rule(m, t, l): + ... if t == 0 or l == m.l.first() or l == m.l.last(): + ... return Constraint.Skip + ... return m.dydt[t, l] == m.dydl2[t, l] + >>> model.pde = Constraint(model.t, model.l, rule=_pde_rule) + +By default, a :py:class:`Constraint` declared over a +:py:class:`ContinuousSet` will be applied at every +discretization point contained in the set. Often a modeler does not want to +enforce a differential equation at one or both boundaries of a continuous +domain. This may be addressed explicitly in the +:py:class:`Constraint` declaration using +``Constraint.Skip`` as shown above. Alternatively, the desired constraints can +be deactivated just before the model is sent to a solver as shown below. + +.. doctest:: + :hide: + + >>> model.del_component('ode_index') + >>> model.del_component('pde_index') + >>> model.del_component('ode') + >>> model.del_component('pde') + +.. doctest:: + + >>> def _ode_rule(m, s, t): + ... return m.dxdt[s, t] == m.x[s, t]**2 + >>> model.ode = Constraint(model.s, model.t, rule=_ode_rule) + + >>> def _pde_rule(m, t, l): + ... return m.dydt[t, l] == m.dydl2[t, l] + >>> model.pde = Constraint(model.t, model.l, rule=_pde_rule) + + Declare other model components and apply a discretization transformation + ... + + Deactivate the differential equations at certain boundary points + >>> for con in model.ode[:, model.t.first()]: + ... con.deactivate() + + >>> for con in model.pde[0, :]: + ... con.deactivate() + + >>> for con in model.pde[:, model.l.first()]: + ... con.deactivate() + + >>> for con in model.pde[:, model.l.last()]: + ... con.deactivate() + + Solve the model + ... + +.. note:: + If you intend to use the pyomo.DAE + :py:class:`Simulator` on your model then you + **must** use **constraint deactivation** instead of **constraint + skipping** in the differential equation rule. + +Declaring Integrals +------------------- + +.. warning:: + The :py:class:`Integral` component is still under + development and considered a prototype. It currently includes only basic + functionality for simple integrals. We welcome feedback on the interface + and functionality but **we do not recommend using it** on general + models. Instead, integrals should be reformulated as differential + equations. + +.. autoclass:: pyomo.dae.Integral + :members: + +Declaring an :py:class:`Integral` component is similar to +declaring an :py:class:`Expression` component. A +simple example is shown below: + +.. doctest:: + + >>> model = ConcreteModel() + >>> model.time = ContinuousSet(bounds=(0,10)) + >>> model.X = Var(model.time) + >>> model.scale = Param(initialize=1E-3) + + >>> def _intX(m,t): + ... return m.X[t] + >>> model.intX = Integral(model.time,wrt=model.time,rule=_intX) + + >>> def _obj(m): + ... return m.scale*m.intX + >>> model.obj = Objective(rule=_obj) + +Notice that the positional arguments supplied to the +:py:class:`Integral` declaration must include all indices +needed to evaluate the integral expression. The integral expression is defined +in a function and supplied to the 'rule' keyword argument. Finally, a user must +specify a :py:class:`ContinuousSet` that the integral +is being evaluated over. This is done using the 'wrt' keyword argument. + +.. note:: + The :py:class:`ContinuousSet` specified using the + 'wrt' keyword argument must be explicitly specified as one of the indexing + sets (meaning it must be supplied as a positional argument). This is to + ensure consistency in the ordering and dimension of the indexing sets + +After an :py:class:`Integral` has been declared, it can be +used just like a Pyomo :py:class:`Expression` +component and can be included in constraints or the objective function as shown +above. + +If an :py:class:`Integral` is specified with multiple +positional arguments, i.e. multiple indexing sets, the final component will be +indexed by all of those sets except for the +:py:class:`ContinuousSet` that the integral was +taken over. In other words, the +:py:class:`ContinuousSet` specified with the +'wrt' keyword argument is removed from the indexing sets of the +:py:class:`Integral` even though it must be specified as a +positional argument. This should become more clear with the following example +showing a double integral over the +:py:class:`ContinuousSet` components ``model.t1`` and +``model.t2``. In addition, the expression is also indexed by the +:py:class:`Set` ``model.s``. The mathematical representation +and implementation in Pyomo are shown below: + +.. math:: + \sum_{s} \int_{t_2} \int_{t_1} \! X(t_1, t_2, s) \, dt_1 \, dt_2 + +.. doctest:: + + >>> model = ConcreteModel() + >>> model.t1 = ContinuousSet(bounds=(0, 10)) + >>> model.t2 = ContinuousSet(bounds=(-1, 1)) + >>> model.s = Set(initialize=['A', 'B', 'C']) + + >>> model.X = Var(model.t1, model.t2, model.s) + + >>> def _intX1(m, t1, t2, s): + ... return m.X[t1, t2, s] + >>> model.intX1 = Integral(model.t1, model.t2, model.s, wrt=model.t1, + ... rule=_intX1) + + >>> def _intX2(m, t2, s): + ... return m.intX1[t2, s] + >>> model.intX2 = Integral(model.t2, model.s, wrt=model.t2, rule=_intX2) + + >>> def _obj(m): + ... return sum(m.intX2[k] for k in m.s) + >>> model.obj = Objective(rule=_obj) + +Discretization Transformations +------------------------------ + +Before a Pyomo model with :py:class:`DerivativeVar` +or :py:class:`Integral` components can be sent to a +solver it must first be sent through a discretization transformation. These +transformations approximate any derivatives or integrals in the model by +using a numerical method. The numerical methods currently included in pyomo.DAE +discretize the continuous domains in the problem and introduce equality +constraints which approximate the derivatives and integrals at the +discretization points. Two families of discretization schemes have been +implemented in pyomo.DAE, Finite Difference and Collocation. These schemes are +described in more detail below. + +.. note:: + The schemes described here are for derivatives only. All integrals will + be transformed using the trapezoid rule. + +The user must write a Python script in order to use these discretizations, +they have not been tested on the pyomo command line. Example scripts are +shown below for each of the discretization schemes. The transformations are +applied to Pyomo model objects which can be further manipulated before being +sent to a solver. Examples of this are also shown below. + +Finite Difference Transformation +******************************** + +This transformation includes implementations of several finite +difference methods. For example, the Backward Difference method (also +called Implicit or Backward Euler) has been implemented. The +discretization equations for this method are shown below: + +.. math:: + \begin{array}{l} + \mathrm{Given: } \\ + \frac{dx}{dt} = f(t, x) , \quad x(t_0) = x_{0} \\ + \text{discretize $t$ and $x$ such that } \\ + x(t_0 + kh) = x_{k} \\ + x_{k + 1} = x_{k} + h * f(t_{k + 1}, x_{k + 1}) \\ + t_{k + 1} = t_{k} + h + \end{array} + +where :math:`h` is the step size between discretization points or the size of +each finite element. These equations are generated automatically as +:py:class:`Constraints` when the backward +difference method is applied to a Pyomo model. + +There are several discretization options available to a +``dae.finite_difference`` transformation which can be specified as keyword +arguments to the ``.apply_to()`` function of the transformation object. These +keywords are summarized below: + +.. Replace with in-code documentation. The autoclass that works with the +.. plugins: pyomo.dae.plugins.finitedifference.Finite_Difference_Transformation + + +Keyword arguments for applying a finite difference transformation: + +'nfe' + The desired number of finite element points to be included in the + discretization. The default value is 10. + +'wrt' + Indicates which :py:class:`ContinuousSet` the + transformation should be applied to. If this keyword argument is not + specified then the same scheme will be applied to every + :py:class:`ContinuousSet` . + +'scheme' + Indicates which finite difference method to apply. Options are + 'BACKWARD', 'CENTRAL', or 'FORWARD'. The default scheme is the backward + difference method. + +If the existing number of finite element points in a +:py:class:`ContinuousSet` is less than the desired +number, new discretization points will be added to the set. If a user specifies +a number of finite element points which is less than the number of points +already included in the :py:class:`ContinuousSet` then +the transformation will ignore the specified number and proceed with the larger +set of points. Discretization points will never be removed from a +:py:class:`ContinuousSet` during the discretization. + +The following code is a Python script applying the backward difference +method. The code also shows how to add a constraint to a discretized model. + +.. doctest:: + :hide: + + >>> model = ConcreteModel() + >>> model.time = ContinuousSet(bounds=(0, 10)) + >>> model.x1 = Var(model.time, bounds=(-10, 10)) + >>> model.dx1 = DerivativeVar(model.x1) + +.. doctest:: + :skipif: not ipopt_available + + Discretize model using Backward Difference method + >>> discretizer = TransformationFactory('dae.finite_difference') + >>> discretizer.apply_to(model,nfe=20,wrt=model.time,scheme='BACKWARD') + + Add another constraint to discretized model + >>> def _sum_limit(m): + ... return sum(m.x1[i] for i in m.time) <= 50 + >>> model.con_sum_limit = Constraint(rule=_sum_limit) + + Solve discretized model + >>> solver = SolverFactory('ipopt') + >>> results = solver.solve(model) + +Collocation Transformation +************************** + +This transformation uses orthogonal collocation to discretize the +differential equations in the model. Currently, two types of collocation +have been implemented. They both use Lagrange polynomials with either +Gauss-Radau roots or Gauss-Legendre roots. For more information on +orthogonal collocation and the discretization equations associated with this +method please see chapter 10 of the book "Nonlinear Programming: Concepts, +Algorithms, and Applications to Chemical Processes" by L.T. Biegler. + +The discretization options available to a ``dae.collocation`` transformation +are the same as those described above for the finite difference transformation +with different available schemes and the addition of the 'ncp' option. + +.. Replace with in-code documentation. The autoclass that works with the +.. plugins: pyomo.dae.plugins.finitedifference.Finite_Difference_Transformation + +Additional keyword arguments for collocation discretizations: + +'scheme' + The desired collocation scheme, either 'LAGRANGE-RADAU' or + 'LAGRANGE-LEGENDRE'. The default is 'LAGRANGE-RADAU'. + +'ncp' + The number of collocation points within each finite element. The + default value is 3. + +.. note:: + If the user's version of Python has access to the package Numpy then any + number of collocation points may be specified, otherwise the maximum number + is 10. + +.. note:: + Any points that exist in a + :py:class:`ContinuousSet` before discretization + will be used as finite element boundaries and not as collocation points. + The locations of the collocation points cannot be specified by the user, + they must be generated by the transformation. + +The following code is a Python script applying collocation with Lagrange +polynomials and Radau roots. The code also shows how to add an objective +function to a discretized model. + +.. doctest:: + :hide: + + >>> model = ConcreteModel() + >>> model.time = ContinuousSet(bounds=(0, 10)) + >>> model.x = Var(model.time, bounds=(-10, 10)) + >>> model.dx = DerivativeVar(model.x) + >>> model.x_ref = Param(initialize=5) + +.. doctest:: + :skipif: not ipopt_available + + Discretize model using Radau Collocation + >>> discretizer = TransformationFactory('dae.collocation') + >>> discretizer.apply_to(model,nfe=20,ncp=6,scheme='LAGRANGE-RADAU') + + Add objective function after model has been discretized + >>> def obj_rule(m): + ... return sum((m.x[i]-m.x_ref)**2 for i in m.time) + >>> model.obj = Objective(rule=obj_rule) + + Solve discretized model + >>> solver = SolverFactory('ipopt') + >>> results = solver.solve(model) + +Restricting Optimal Control Profiles +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +When solving an optimal control problem a user may want to restrict the +number of degrees of freedom for the control input by forcing, for example, +a piecewise constant profile. Pyomo.DAE provides the +``reduce_collocation_points`` function to address this use-case. This function +is used in conjunction with the ``dae.collocation`` discretization +transformation to reduce the number of free collocation points within a finite +element for a particular variable. + +.. autoclass:: pyomo.dae.plugins.colloc.Collocation_Discretization_Transformation + :members: reduce_collocation_points + +An example of using this function is shown below: + +.. doctest:: + :hide: + + >>> model = ConcreteModel() + >>> model.time = ContinuousSet(bounds=(0, 10)) + >>> model.x = Var(model.time, bounds=(-10, 10)) + >>> model.dx = DerivativeVar(model.x) + >>> model.x_ref = Param(initialize=5) + >>> model.u = Var(model.time) + +.. doctest:: + + >>> discretizer = TransformationFactory('dae.collocation') + >>> discretizer.apply_to(model, nfe=10, ncp=6) + >>> model = discretizer.reduce_collocation_points(model, + ... var=model.u, + ... ncp=1, + ... contset=model.time) + +In the above example, the ``reduce_collocation_points`` function restricts +the variable ``model.u`` to have only **1** free collocation point per +finite element, thereby enforcing a piecewise constant profile. +:numref:`Fig. %s ` shows the solution profile before and +after applying +the ``reduce_collocation_points`` function. + +.. _reduce_points_fig: +.. figure:: reduce_points_demo.png + :scale: 100 % + :align: center + + (left) Profile before applying the ``reduce_collocation_points`` + function (right) Profile after applying the function, restricting + ``model.u`` to have a piecewise constant profile. + + +Applying Multiple Discretization Transformations +************************************************ + +Discretizations can be applied independently to each +:py:class:`ContinuousSet` in a model. This allows the +user great flexibility in discretizing their model. For example the same +numerical method can be applied with different resolutions: + +.. doctest:: + :hide: + + >>> model = ConcreteModel() + >>> model.t1 = ContinuousSet(bounds=(0, 10)) + >>> model.t2 = ContinuousSet(bounds=(-2, 2)) + +.. doctest:: + + >>> discretizer = TransformationFactory('dae.finite_difference') + >>> discretizer.apply_to(model,wrt=model.t1,nfe=10) + >>> discretizer.apply_to(model,wrt=model.t2,nfe=100) + +This also allows the user to combine different methods. For example, applying +the forward difference method to one +:py:class:`ContinuousSet` and the central finite +difference method to another +:py:class:`ContinuousSet`: + +.. doctest:: + :hide: + + >>> model = ConcreteModel() + >>> model.t1 = ContinuousSet(bounds=(0, 10)) + >>> model.t2 = ContinuousSet(bounds=(-2, 2)) + +.. doctest:: + + >>> discretizer = TransformationFactory('dae.finite_difference') + >>> discretizer.apply_to(model,wrt=model.t1,scheme='FORWARD') + >>> discretizer.apply_to(model,wrt=model.t2,scheme='CENTRAL') + +In addition, the user may combine finite difference and collocation +discretizations. For example: + +.. doctest:: + :hide: + + >>> model = ConcreteModel() + >>> model.t1 = ContinuousSet(bounds=(0, 10)) + >>> model.t2 = ContinuousSet(bounds=(-2, 2)) + +.. doctest:: + + >>> disc_fe = TransformationFactory('dae.finite_difference') + >>> disc_fe.apply_to(model,wrt=model.t1,nfe=10) + >>> disc_col = TransformationFactory('dae.collocation') + >>> disc_col.apply_to(model,wrt=model.t2,nfe=10,ncp=5) + +If the user would like to apply the same discretization to all +:py:class:`ContinuousSet` components in a model, just +specify the discretization once without the 'wrt' keyword argument. This will +apply that scheme to all :py:class:`ContinuousSet` +components in the model that haven't already been discretized. + +Custom Discretization Schemes +***************************** + +A transformation framework along with certain utility functions has been +created so that advanced users may easily implement custom discretization +schemes other than those listed above. The transformation framework consists of +the following steps: + + 1. Specify Discretization Options + 2. Discretize the ContinuousSet(s) + 3. Update Model Components + 4. Add Discretization Equations + 5. Return Discretized Model + +If a user would like to create a custom finite difference scheme then they only +have to worry about step (4) in the framework. The discretization equations for +a particular scheme have been isolated from of the rest of the code for +implementing the transformation. The function containing these discretization +equations can be found at the top of the source code file for the +transformation. For example, below is the function for the forward +difference method: + +.. code-block:: python + + def _forward_transform(v,s): + """ + Applies the Forward Difference formula of order O(h) for first derivatives + """ + def _fwd_fun(i): + tmp = sorted(s) + idx = tmp.index(i) + return 1/(tmp[idx+1]-tmp[idx])*(v(tmp[idx+1])-v(tmp[idx])) + return _fwd_fun + +In this function, 'v' represents the continuous variable or function that the +method is being applied to. 's' represents the set of discrete points in the +continuous domain. In order to implement a custom finite difference method, a +user would have to copy the above function and just replace the equation next +to the first return statement with their method. + +After implementing a custom finite difference method using the above function +template, the only other change that must be made is to add the custom method +to the 'all_schemes' dictionary in the ``dae.finite_difference`` +class. + +In the case of a custom collocation method, changes will have to be made in +steps (2) and (4) of the transformation framework. In addition to implementing +the discretization equations, the user would also have to ensure that the +desired collocation points are added to the ContinuousSet being discretized. + +Dynamic Model Simulation +------------------------ + +The pyomo.dae Simulator class can be used to simulate systems of ODEs and +DAEs. It provides an interface to integrators available in other Python +packages. + +.. note:: + The pyomo.dae Simulator does not include integrators directly. The user + must have at least one of the supported Python packages installed in + order to use this class. + +.. autoclass:: pyomo.dae.Simulator + :members: + +.. note:: + Any keyword options supported by the integrator may be specified as + keyword options to the simulate function and will be passed to the + integrator. + +Supported Simulator Packages +**************************** + +The Simulator currently includes interfaces to SciPy and CasADi. ODE +simulation is supported in both packages however, DAE simulation is only +supported by CasADi. A list of available integrators for each package is +given below. Please refer to the `SciPy +`_ +and `CasADi +`_ documentation directly for the most up-to-date information about +these packages and for more information about the various integrators and +options. + +SciPy Integrators: + - **'vode'** : Real-valued Variable-coefficient ODE solver, options for + non-stiff and stiff systems + - **'zvode'** : Complex-values Variable-coefficient ODE solver, options for + non-stiff and stiff systems + - **'lsoda'** : Real-values Variable-coefficient ODE solver, automatic + switching of algorithms for non-stiff or stiff systems + - **'dopri5'** : Explicit runge-kutta method of order (4)5 ODE solver + - **'dop853'** : Explicit runge-kutta method of order 8(5,3) ODE solver + +CasADi Integrators: + - **'cvodes'** : CVodes from the Sundials suite, solver for stiff or + non-stiff ODE systems + - **'idas'** : IDAS from the Sundials suite, DAE solver + - **'collocation'** : Fixed-step implicit runge-kutta method, ODE/DAE + solver + - **'rk'** : Fixed-step explicit runge-kutta method, ODE solver + +Using the Simulator +******************* + +We now show how to use the Simulator to simulate the following system of ODEs: + +.. math:: + \begin{array}{l} + \frac{d\theta}{dt} = \omega \\ + \frac{d\omega}{dt} = -b*\omega -c*sin(\theta) + \end{array} + +We begin by formulating the model using pyomo.DAE + +.. doctest:: + + >>> m = ConcreteModel() + + >>> m.t = ContinuousSet(bounds=(0.0, 10.0)) + + >>> m.b = Param(initialize=0.25) + >>> m.c = Param(initialize=5.0) + + >>> m.omega = Var(m.t) + >>> m.theta = Var(m.t) + + >>> m.domegadt = DerivativeVar(m.omega, wrt=m.t) + >>> m.dthetadt = DerivativeVar(m.theta, wrt=m.t) + + Setting the initial conditions + >>> m.omega[0].fix(0.0) + >>> m.theta[0].fix(3.14 - 0.1) + + >>> def _diffeq1(m, t): + ... return m.domegadt[t] == -m.b * m.omega[t] - m.c * sin(m.theta[t]) + >>> m.diffeq1 = Constraint(m.t, rule=_diffeq1) + + >>> def _diffeq2(m, t): + ... return m.dthetadt[t] == m.omega[t] + >>> m.diffeq2 = Constraint(m.t, rule=_diffeq2) + +Notice that the initial conditions are set by `fixing` the values of +``m.omega`` and ``m.theta`` at t=0 instead of being specified as extra +equality constraints. Also notice that the differential equations are +specified without using ``Constraint.Skip`` to skip enforcement at t=0. The +Simulator cannot simulate any constraints that contain if-statements in +their construction rules. + +To simulate the model you must first create a Simulator object. Building +this object prepares the Pyomo model for simulation with a particular Python +package and performs several checks on the model to ensure compatibility +with the Simulator. Be sure to read through the list of limitations at the +end of this section to understand the types of models supported by the +Simulator. + +.. doctest:: + + >>> sim = Simulator(m, package='scipy') # doctest: +SKIP + +After creating a Simulator object, the model can be simulated by calling the +simulate function. Please see the API documentation for the +:py:class:`Simulator` for more information about the +valid keyword arguments for this function. + +.. doctest:: + + >>> tsim, profiles = sim.simulate(numpoints=100, integrator='vode') # doctest: +SKIP + +The ``simulate`` function returns numpy arrays containing time points and +the corresponding values for the dynamic variable profiles. + +`Simulator Limitations`: + - Differential equations must be first-order and separable + - Model can only contain a single ContinuousSet + - Can't simulate constraints with if-statements in the construction rules + - Need to provide initial conditions for dynamic states by setting the + value or using fix() + +Specifying Time-Varying Inputs +****************************** +The :py:class:`Simulator` supports simulation of a system +of ODE's or DAE's with time-varying parameters or control inputs. Time-varying +inputs can be specified using a Pyomo ``Suffix``. We currently only support +piecewise constant profiles. For more complex inputs defined by a continuous +function of time we recommend adding an algebraic variable and constraint to +your model. + +The profile for a time-varying input should be specified +using a Python dictionary where the keys correspond to the switching times +and the values correspond to the value of the input at a time point. A +``Suffix`` is then used to associate this dictionary with the appropriate +``Var`` or ``Param`` and pass the information to the +:py:class:`Simulator`. The code snippet below shows an +example. + +.. doctest:: + + >>> m = ConcreteModel() + + >>> m.t = ContinuousSet(bounds=(0.0, 20.0)) + + Time-varying inputs + >>> m.b = Var(m.t) + >>> m.c = Param(m.t, default=5.0) + + >>> m.omega = Var(m.t) + >>> m.theta = Var(m.t) + + >>> m.domegadt = DerivativeVar(m.omega, wrt=m.t) + >>> m.dthetadt = DerivativeVar(m.theta, wrt=m.t) + + Setting the initial conditions + >>> m.omega[0] = 0.0 + >>> m.theta[0] = 3.14 - 0.1 + + >>> def _diffeq1(m, t): + ... return m.domegadt[t] == -m.b[t] * m.omega[t] - \ + ... m.c[t] * sin(m.theta[t]) + >>> m.diffeq1 = Constraint(m.t, rule=_diffeq1) + + >>> def _diffeq2(m, t): + ... return m.dthetadt[t] == m.omega[t] + >>> m.diffeq2 = Constraint(m.t, rule=_diffeq2) + + Specifying the piecewise constant inputs + >>> b_profile = {0: 0.25, 15: 0.025} + >>> c_profile = {0: 5.0, 7: 50} + + Declaring a Pyomo Suffix to pass the time-varying inputs to the Simulator + >>> m.var_input = Suffix(direction=Suffix.LOCAL) + >>> m.var_input[m.b] = b_profile + >>> m.var_input[m.c] = c_profile + + Simulate the model using scipy + >>> sim = Simulator(m, package='scipy') # doctest: +SKIP + >>> tsim, profiles = sim.simulate(numpoints=100, + ... integrator='vode', + ... varying_inputs=m.var_input) # doctest: +SKIP + +.. note:: + The Simulator does not support multi-indexed inputs (i.e. if ``m.b`` in + the above example was indexed by another set besides ``m.t``) + +Dynamic Model Initialization +---------------------------- +Providing a good initial guess is an important factor in solving dynamic +optimization problems. There are several model initialization tools under +development in pyomo.DAE to help users initialize their models. These tools +will be documented here as they become available. + +From Simulation +*************** +The :py:class:`Simulator` includes a function for +initializing discretized dynamic optimization models using the profiles +returned from the simulator. An example using this function is shown below + +.. doctest:: + + Simulate the model using scipy + >>> sim = Simulator(m, package='scipy') # doctest: +SKIP + >>> tsim, profiles = sim.simulate(numpoints=100, integrator='vode', + ... varying_inputs=m.var_input) # doctest: +SKIP + + Discretize the model using Orthogonal Collocation + >>> discretizer = TransformationFactory('dae.collocation') + >>> discretizer.apply_to(m, nfe=10, ncp=3) + + Initialize the discretized model using the simulator profiles + >>> sim.initialize_model() # doctest: +SKIP + +.. note:: + A model must be simulated before it can be initialized using this function diff --git a/doc/OnlineDocs/user_guide/modeling_extensions/gdp/concepts.rst b/doc/OnlineDocs/user_guide/modeling_extensions/gdp/concepts.rst new file mode 100644 index 00000000000..95629bc48fd --- /dev/null +++ b/doc/OnlineDocs/user_guide/modeling_extensions/gdp/concepts.rst @@ -0,0 +1,151 @@ +.. image:: /../logos/gdp/Pyomo-GDP-150.png + :scale: 20% + :class: no-scaled-link + :align: right + +************ +Key Concepts +************ + +Generalized Disjunctive Programming (GDP) provides a way to bridge high-level propositional logic and algebraic constraints. +The GDP standard form from the :ref:`index page ` is repeated below. + +.. math:: + + \min\ obj = &\ f(x, z) \\ + \text{s.t.} \quad &\ Ax+Bz \leq d\\ + &\ g(x,z) \leq 0\\ + &\ \bigvee_{i\in D_k} \left[ + \begin{gathered} + Y_{ik} \\ + M_{ik} x + N_{ik} z \leq e_{ik} \\ + r_{ik}(x,z)\leq 0\\ + \end{gathered} + \right] \quad k \in K\\ + &\ \Omega(Y) = True \\ + &\ x \in X \subseteq \mathbb{R}^n\\ + &\ Y \in \{True, False\}^{p}\\ + &\ z \in Z \subseteq \mathbb{Z}^m + +Original support in Pyomo.GDP focused on the disjuncts and disjunctions, allowing the modelers to group relational expressions in disjuncts, with disjunctions describing logical-OR relationships between the groupings. +As a result, we implemented the ``Disjunct`` and ``Disjunction`` objects before ``BooleanVar`` and the rest of the logical expression system. +Accordingly, we also describe the disjuncts and disjunctions first below. + +Disjuncts +========= + +Disjuncts represent groupings of relational expressions (e.g. algebraic constraints) summarized by a Boolean indicator variable :math:`Y` through implication: + +.. math:: + + \left. + \begin{aligned} + & Y_{ik} \Rightarrow & M_{ik} x + N_{ik} z &\leq e_{ik}\\ + & Y_{ik} \Rightarrow & r_{ik}(x,z) &\leq 0 + \end{aligned} + \right.\qquad \forall i \in D_k, \forall k \in K + + +Logically, this means that if :math:`Y_{ik} = True`, then the constraints :math:`M_{ik} x + N_{ik} z \leq e_{ik}` and :math:`r_{ik}(x,z) \leq 0` must be satisfied. +However, if :math:`Y_{ik} = False`, then the corresponding constraints are ignored. +Note that :math:`Y_{ik} = False` does **not** imply that the corresponding constraints are *violated*. + +.. _gdp-disjunctions-concept: + +Disjunctions +============ + +Disjunctions describe a logical *OR* relationship between two or more Disjuncts. +The simplest and most common case is a 2-term disjunction: + +.. math:: + + \left[\begin{gathered} + Y_1 \\ + \exp(x_2) - 1 = x_1 \\ + x_3 = x_4 = 0 + \end{gathered} + \right] \bigvee \left[\begin{gathered} + Y_2 \\ + \exp\left(\frac{x_4}{1.2}\right) - 1 = x_3 \\ + x_1 = x_2 = 0 + \end{gathered} + \right] + + +The disjunction above describes the selection between two units in a process network. +:math:`Y_1` and :math:`Y_2` are the Boolean variables corresponding to the selection of process units 1 and 2, respectively. +The continuous variables :math:`x_1, x_2, x_3, x_4` describe flow in and out of the first and second units, respectively. +If a unit is selected, the nonlinear equality in the corresponding disjunct enforces the input/output relationship in the selected unit. +The final equality in each disjunct forces flows for the absent unit to zero. + +Boolean Variables +================= + +Boolean variables are decision variables that may take a value of ``True`` or ``False``. +These are most often encountered as the indicator variables of disjuncts. +However, they can also be independently defined to represent other problem decisions. + +.. note:: + + Boolean variables are not intended to participate in algebraic expressions. + That is, :math:`3 \times \text{True}` does not make sense; hence, :math:`x = 3 Y_1` does not make sense. + Instead, you may have the disjunction + + .. math:: + + \left[\begin{gathered} + Y_1 \\ + x = 3 + \end{gathered} + \right] \bigvee \left[\begin{gathered} + \neg Y_1 \\ + x = 0 + \end{gathered} + \right] + +Logical Propositions +==================== + +Logical propositions are constraints describing relationships between the Boolean variables in the model. + +These logical propositions can include: + +.. |neg| replace:: :math:`\neg Y_1` +.. |equiv| replace:: :math:`Y_1 \Leftrightarrow Y_2` +.. |land| replace:: :math:`Y_1 \land Y_2` +.. |lor| replace:: :math:`Y_1 \lor Y_2` +.. |xor| replace:: :math:`Y_1 \veebar Y_2` +.. |impl| replace:: :math:`Y_1 \Rightarrow Y_2` + ++-----------------+---------+-------------+-------------+-------------+ +| Operator | Example | :math:`Y_1` | :math:`Y_2` | Result | ++=================+=========+=============+=============+=============+ +| Negation | |neg| | | ``True`` | | | ``False`` | +| | | | ``False`` | | | ``True`` | ++-----------------+---------+-------------+-------------+-------------+ +| Equivalence | |equiv| | | ``True`` | | ``True`` | | ``True`` | +| | | | ``True`` | | ``False`` | | ``False`` | +| | | | ``False`` | | ``True`` | | ``False`` | +| | | | ``False`` | | ``False`` | | ``True`` | ++-----------------+---------+-------------+-------------+-------------+ +| Conjunction | |land| | | ``True`` | | ``True`` | | ``True`` | +| | | | ``True`` | | ``False`` | | ``False`` | +| | | | ``False`` | | ``True`` | | ``False`` | +| | | | ``False`` | | ``False`` | | ``False`` | ++-----------------+---------+-------------+-------------+-------------+ +| Disjunction | |lor| | | ``True`` | | ``True`` | | ``True`` | +| | | | ``True`` | | ``False`` | | ``True`` | +| | | | ``False`` | | ``True`` | | ``True`` | +| | | | ``False`` | | ``False`` | | ``False`` | ++-----------------+---------+-------------+-------------+-------------+ +| Exclusive OR | |xor| | | ``True`` | | ``True`` | | ``False`` | +| | | | ``True`` | | ``False`` | | ``True`` | +| | | | ``False`` | | ``True`` | | ``True`` | +| | | | ``False`` | | ``False`` | | ``False`` | ++-----------------+---------+-------------+-------------+-------------+ +| Implication | |impl| | | ``True`` | | ``True`` | | ``True`` | +| | | | ``True`` | | ``False`` | | ``False`` | +| | | | ``False`` | | ``True`` | | ``True`` | +| | | | ``False`` | | ``False`` | | ``True`` | ++-----------------+---------+-------------+-------------+-------------+ diff --git a/doc/OnlineDocs/user_guide/modeling_extensions/gdp/index.rst b/doc/OnlineDocs/user_guide/modeling_extensions/gdp/index.rst new file mode 100644 index 00000000000..0c8529c60cb --- /dev/null +++ b/doc/OnlineDocs/user_guide/modeling_extensions/gdp/index.rst @@ -0,0 +1,79 @@ +.. _gdp-main-page: + +*********************************** +Generalized Disjunctive Programming +*********************************** + +.. image:: /../logos/gdp/Pyomo-GDP-150.png + :scale: 35% + :align: right + :class: no-scaled-link + +The Pyomo.GDP modeling extension\ [#gdp-main-paper]_ provides support for Generalized Disjunctive Programming (GDP)\ [#gdp]_, an extension of Disjunctive Programming\ [#dp]_ from the operations research community to include nonlinear relationships. The classic form for a GDP is given by: + +.. math:: + + \min\ obj = &\ f(x, z) \\ + \text{s.t.} \quad &\ Ax+Bz \leq d\\ + &\ g(x,z) \leq 0\\ + &\ \bigvee_{i\in D_k} \left[ + \begin{gathered} + Y_{ik} \\ + M_{ik} x + N_{ik} z \leq e_{ik} \\ + r_{ik}(x,z)\leq 0\\ + \end{gathered} + \right] \quad k \in K\\ + &\ \Omega(Y) = True \\ + &\ x \in X \subseteq \mathbb{R}^n\\ + &\ Y \in \{True, False\}^{p}\\ + &\ z \in Z \subseteq \mathbb{Z}^m + +Here, we have the minimization of an objective :math:`obj` subject to global linear constraints :math:`Ax+Bz \leq d` and nonlinear constraints :math:`g(x,z) \leq 0`, with conditional linear constraints :math:`M_{ik} x + N_{ik} z \leq e_{ik}` and nonlinear constraints :math:`r_{ik}(x,z)\leq 0`. +These conditional constraints are collected into disjuncts :math:`D_k`, organized into disjunctions :math:`K`. Finally, there are logical propositions :math:`\Omega(Y) = True`. +Decision/state variables can be continuous :math:`x`, Boolean :math:`Y`, and/or integer :math:`z`. + +GDP is useful to model discrete decisions that have implications on the system behavior\ [#gdpreview]_. +For example, in process design, a disjunction may model the choice between processes A and B. +If A is selected, then its associated equations and inequalities will apply; otherwise, if B is selected, then its respective constraints should be enforced. + +Modelers often ask to model if-then-else relationships. +These can be expressed as a disjunction as follows: + +.. math:: + :nowrap: + + \begin{gather*} + \left[\begin{gathered} + Y_1 \\ + \text{constraints} \\ + \text{for }\textit{then} + \end{gathered}\right] + \vee + \left[\begin{gathered} + Y_2 \\ + \text{constraints} \\ + \text{for }\textit{else} + \end{gathered}\right] \\ + Y_1 \veebar Y_2 + \end{gather*} + +Here, if the Boolean :math:`Y_1` is ``True``, then the constraints in the first disjunct are enforced; otherwise, the constraints in the second disjunct are enforced. +The following sections describe the key concepts, modeling, and solution approaches available for Generalized Disjunctive Programming. + +.. toctree:: + :caption: Pyomo.GDP Contents + :maxdepth: 2 + + concepts + modeling + solving + +Literature References +===================== +.. [#gdp-main-paper] Chen, Q., Johnson, E. S., Bernal, D. E., Valentin, R., Kale, S., Bates, J., Siirola, J. D. and Grossmann, I. E. (2021). Pyomo.GDP: an ecosystem for logic based modeling and optimization development, *Optimization and Engineering* (pp. 1-36).https://doi.org/10.1007/s11081-021-09601-7 + +.. [#gdp] Raman, R., & Grossmann, I. E. (1994). Modelling and computational techniques for logic based integer programming. *Computers & Chemical Engineering*, 18(7), 563–578. https://doi.org/10.1016/0098-1354(93)E0010-7 + +.. [#dp] Balas, E. (1985). Disjunctive Programming and a Hierarchy of Relaxations for Discrete Optimization Problems. *SIAM Journal on Algebraic Discrete Methods*, 6(3), 466–486. https://doi.org/10.1137/0606047 + +.. [#gdpreview] Grossmann, I. E., & Trespalacios, F. (2013). Systematic modeling of discrete-continuous optimization models through generalized disjunctive programming. *AIChE Journal*, 59(9), 3276–3295. https://doi.org/10.1002/aic.14088 diff --git a/doc/OnlineDocs/user_guide/modeling_extensions/gdp/modeling.rst b/doc/OnlineDocs/user_guide/modeling_extensions/gdp/modeling.rst new file mode 100644 index 00000000000..996ebcb0366 --- /dev/null +++ b/doc/OnlineDocs/user_guide/modeling_extensions/gdp/modeling.rst @@ -0,0 +1,419 @@ +.. image:: /../logos/gdp/Pyomo-GDP-150.png + :scale: 20% + :class: no-scaled-link + :align: right + +********************* +Modeling in Pyomo.GDP +********************* + +.. testsetup:: + + from pyomo.environ import ( + ConcreteModel, RangeSet, BooleanVar, LogicalConstraint, + TransformationFactory, atleast, SolverFactory, Objective, + Constraint, Var, land, Reference + ) + from pyomo.gdp import Disjunct, Disjunction + from pyomo.core.plugins.transform.logical_to_linear import update_boolean_vars_from_binary + + # This is to make unicode comparison work in python 2.7. + import sys + if sys.version[0] == '2': + reload(sys) + sys.setdefaultencoding("utf-8") + +Disjunctions +============ + +To demonstrate modeling with disjunctions in Pyomo.GDP, we revisit the small example from :ref:`the previous page `. + +.. math:: + + \left[\begin{gathered} + Y_1 \\ + \exp(x_2) - 1 = x_1 \\ + x_3 = x_4 = 0 + \end{gathered} + \right] \bigvee \left[\begin{gathered} + Y_2 \\ + \exp\left(\frac{x_4}{1.2}\right) - 1 = x_3 \\ + x_1 = x_2 = 0 + \end{gathered} + \right] + +Explicit syntax: more descriptive +--------------------------------- + +Pyomo.GDP explicit syntax (see below) provides more clarity in the declaration of each modeling object, and gives the user explicit control over the ``Disjunct`` names. +Assuming the ``ConcreteModel`` object :code:`m` and variables have been defined, lines 1 and 5 declare the ``Disjunct`` objects corresponding to selection of unit 1 and 2, respectively. +Lines 2 and 6 define the input-output relations for each unit, and lines 3-4 and 7-8 enforce zero flow through the unit that is not selected. +Finally, line 9 declares the logical disjunction between the two disjunctive terms. + +.. code-block:: python + :linenos: + + m.unit1 = Disjunct() + m.unit1.inout = Constraint(expr=exp(m.x[2]) - 1 == m.x[1]) + m.unit1.no_unit2_flow1 = Constraint(expr=m.x[3] == 0) + m.unit1.no_unit2_flow2 = Constraint(expr=m.x[4] == 0) + m.unit2 = Disjunct() + m.unit2.inout = Constraint(expr=exp(m.x[4] / 1.2) - 1 == m.x[3]) + m.unit2.no_unit1_flow1 = Constraint(expr=m.x[1] == 0) + m.unit2.no_unit1_flow2 = Constraint(expr=m.x[2] == 0) + m.use_unit1or2 = Disjunction(expr=[m.unit1, m.unit2]) + +The indicator variables for each disjunct :math:`Y_1` and :math:`Y_2` are automatically generated by Pyomo.GDP, accessible via :code:`m.unit1.indicator_var` and :code:`m.unit2.indicator_var`. + +Compact syntax: more concise +---------------------------- + +For more advanced users, a compact syntax is also available below, taking advantage of the ability to declare disjuncts and constraints implicitly. +When the ``Disjunction`` object constructor is passed a list of lists, the outer list defines the disjuncts and the inner list defines the constraint expressions associated with the respective disjunct. + +.. code-block:: python + :linenos: + + m.use1or2 = Disjunction(expr=[ + # First disjunct + [exp(m.x[2])-1 == m.x[1], + m.x[3] == 0, m.x[4] == 0], + # Second disjunct + [exp(m.x[4]/1.2)-1 == m.x[3], + m.x[1] == 0, m.x[2] == 0]]) + +.. note:: + + By default, Pyomo.GDP ``Disjunction`` objects enforce an implicit "exactly one" relationship among the selection of the disjuncts (generalization of exclusive-OR). + That is, exactly one of the ``Disjunct`` indicator variables should take a ``True`` value. + This can be seen as an implicit logical proposition, in our example, :math:`Y_1 \veebar Y_2`. + +Logical Propositions +==================== + +Pyomo.GDP also supports the use of logical propositions through the use of the ``BooleanVar`` and ``LogicalConstraint`` objects. +The ``BooleanVar`` object in Pyomo represents Boolean variables, analogous to ``Var`` for numeric variables. +``BooleanVar`` can be indexed over a Pyomo ``Set``, as below: + +.. doctest:: + + >>> m = ConcreteModel() + >>> m.my_set = RangeSet(4) + >>> m.Y = BooleanVar(m.my_set) + >>> m.Y.display() + Y : Size=4, Index=my_set + Key : Value : Fixed : Stale + 1 : None : False : True + 2 : None : False : True + 3 : None : False : True + 4 : None : False : True + +Using these Boolean variables, we can define ``LogicalConstraint`` objects, analogous to algebraic ``Constraint`` objects. + +.. doctest:: + + >>> m.p = LogicalConstraint(expr=m.Y[1].implies(m.Y[2] & m.Y[3]) | m.Y[4]) + >>> m.p.pprint() + p : Size=1, Index=None, Active=True + Key : Body : Active + None : (Y[1] --> Y[2] ∧ Y[3]) ∨ Y[4] : True + +Supported Logical Operators +--------------------------- + +Pyomo.GDP logical expression system supported operators and their usage are listed in the table below. + ++--------------+------------------------+-----------------------------------+--------------------------------+ +| Operator | Operator | Method | Function | ++==============+========================+===================================+================================+ +| Negation | :code:`~Y[1]` | | :code:`lnot(Y[1])` | ++--------------+------------------------+-----------------------------------+--------------------------------+ +| Conjunction | :code:`Y[1] & Y[2]` | :code:`Y[1].land(Y[2])` | :code:`land(Y[1],Y[2])` | ++--------------+------------------------+-----------------------------------+--------------------------------+ +| Disjunction | :code:`Y[1] | Y[2]` | :code:`Y[1].lor(Y[2])` | :code:`lor(Y[1],Y[2])` | ++--------------+------------------------+-----------------------------------+--------------------------------+ +| Exclusive OR | :code:`Y[1] ^ Y[2]` | :code:`Y[1].xor(Y[2])` | :code:`xor(Y[1], Y[2])` | ++--------------+------------------------+-----------------------------------+--------------------------------+ +| Implication | | :code:`Y[1].implies(Y[2])` | :code:`implies(Y[1], Y[2])` | ++--------------+------------------------+-----------------------------------+--------------------------------+ +| Equivalence | | :code:`Y[1].equivalent_to(Y[2])` | :code:`equivalent(Y[1], Y[2])` | ++--------------+------------------------+-----------------------------------+--------------------------------+ + +.. note:: + + We omit support for some infix operators, e.g. :code:`Y[1] >> Y[2]`, due to concerns about non-intuitive Python operator precedence. + That is :code:`Y[1] | Y[2] >> Y[3]` would translate to :math:`Y_1 \lor (Y_2 \Rightarrow Y_3)` rather than :math:`(Y_1 \lor Y_2) \Rightarrow Y_3` + +In addition, the following constraint-programming-inspired operators are provided: ``exactly``, ``atmost``, and ``atleast``. +These predicates enforce, respectively, that exactly, at most, or at least N of their ``BooleanVar`` arguments are ``True``. + +Usage: + +- :code:`atleast(3, Y[1], Y[2], Y[3])` +- :code:`atmost(3, Y)` +- :code:`exactly(3, Y)` + +.. doctest:: + + >>> m = ConcreteModel() + >>> m.my_set = RangeSet(4) + >>> m.Y = BooleanVar(m.my_set) + >>> m.p = LogicalConstraint(expr=atleast(3, m.Y)) + >>> m.p.pprint() + p : Size=1, Index=None, Active=True + Key : Body : Active + None : atleast(3: [Y[1], Y[2], Y[3], Y[4]]) : True + >>> TransformationFactory('core.logical_to_linear').apply_to(m) + >>> # constraint auto-generated by transformation + >>> m.logic_to_linear.transformed_constraints.pprint() + transformed_constraints : Size=1, Index={1}, Active=True + Key : Lower : Body : Upper : Active + 1 : 3.0 : Y_asbinary[1] + Y_asbinary[2] + Y_asbinary[3] + Y_asbinary[4] : +Inf : True + +We elaborate on the ``logical_to_linear`` transformation :ref:`on the next page `. + +Indexed logical constraints +--------------------------- + +Like ``Constraint`` objects for algebraic expressions, ``LogicalConstraint`` objects can be indexed. +An example of this usage may be found below for the expression: + +.. math:: + + Y_{i+1} \Rightarrow Y_{i}, \quad i \in \{1, 2, \dots, n-1\} + +.. doctest:: + + >>> m = ConcreteModel() + >>> n = 5 + >>> m.I = RangeSet(n) + >>> m.Y = BooleanVar(m.I) + + >>> @m.LogicalConstraint(m.I) + ... def p(m, i): + ... return m.Y[i+1].implies(m.Y[i]) if i < n else Constraint.Skip + + >>> m.p.pprint() + p : Size=4, Index=I, Active=True + Key : Body : Active + 1 : Y[2] --> Y[1] : True + 2 : Y[3] --> Y[2] : True + 3 : Y[4] --> Y[3] : True + 4 : Y[5] --> Y[4] : True + +Integration with Disjunctions +----------------------------- + +.. note:: + + Historically, the ``indicator_var`` on ``Disjunct`` objects was + implemented as a binary ``Var``. Beginning in Pyomo 6.0, that has + been changed to the more mathematically correct ``BooleanVar``, with + the associated binary variable available as + ``binary_indicator_var``. + +The logical expression system is designed to augment the previously +introduced ``Disjunct`` and ``Disjunction`` components. Mathematically, +the disjunct indicator variable is Boolean, and can be used directly in +logical propositions. + +Here, we demonstrate this capability with a toy example: + +.. math:: + + \min~&x\\ + \text{s.t.}~&\left[\begin{gathered}Y_1\\x \geq 2\end{gathered}\right] \vee \left[\begin{gathered}Y_2\\x \geq 3\end{gathered}\right]\\ + &\left[\begin{gathered}Y_3\\x \leq 8\end{gathered}\right] \vee \left[\begin{gathered}Y_4\\x = 2.5\end{gathered}\right] \\ + &Y_1 \veebar Y_2\\ + &Y_3 \veebar Y_4\\ + &Y_1 \Rightarrow Y_4 + +.. doctest:: + :skipif: not glpk_available + + >>> m = ConcreteModel() + >>> m.s = RangeSet(4) + >>> m.ds = RangeSet(2) + >>> m.d = Disjunct(m.s) + >>> m.djn = Disjunction(m.ds) + >>> m.djn[1] = [m.d[1], m.d[2]] + >>> m.djn[2] = [m.d[3], m.d[4]] + >>> m.x = Var(bounds=(-2, 10)) + >>> m.d[1].c = Constraint(expr=m.x >= 2) + >>> m.d[2].c = Constraint(expr=m.x >= 3) + >>> m.d[3].c = Constraint(expr=m.x <= 8) + >>> m.d[4].c = Constraint(expr=m.x == 2.5) + >>> m.o = Objective(expr=m.x) + + >>> # Add the logical proposition + >>> m.p = LogicalConstraint( + ... expr=m.d[1].indicator_var.implies(m.d[4].indicator_var)) + >>> # Note: the implicit XOR enforced by m.djn[1] and m.djn[2] still apply + + >>> # Apply the Big-M reformulation: It will convert the logical + >>> # propositions to algebraic expressions. + >>> TransformationFactory('gdp.bigm').apply_to(m) + + >>> # Before solve, Boolean vars have no value + >>> Reference(m.d[:].indicator_var).display() + IndexedBooleanVar : Size=4, Index=s, ReferenceTo=d[:].indicator_var + Key : Value : Fixed : Stale + 1 : None : False : True + 2 : None : False : True + 3 : None : False : True + 4 : None : False : True + + >>> # Solve the reformulated model + >>> run_data = SolverFactory('glpk').solve(m) + >>> Reference(m.d[:].indicator_var).display() + IndexedBooleanVar : Size=4, Index=s, ReferenceTo=d[:].indicator_var + Key : Value : Fixed : Stale + 1 : True : False : False + 2 : False : False : False + 3 : False : False : False + 4 : True : False : False + +.. _gdp-advanced-examples: + +Advanced LogicalConstraint Examples +=================================== + +Support for complex nested expressions is a key benefit of the logical expression system. +Below are examples of expressions that we support, and with some, an explanation of their implementation. + +Composition of standard operators +--------------------------------- + +.. math:: + Y_1 \vee Y_2 \implies Y_3 \wedge \neg Y_4 \wedge (Y_5 \vee Y_6) + +.. code:: + + m.p = LogicalConstraint(expr=(m.Y[1] | m.Y[2]).implies( + m.Y[3] & ~m.Y[4] & (m.Y[5] | m.Y[6])) + ) + +Expressions within CP-type operators +------------------------------------ + +.. math:: + \text{atleast}(3, Y_1, Y_2 \vee Y_3, Y_4 \Rightarrow Y_5, Y_6) + +Here, augmented variables may be automatically added to the model as follows: + +.. math:: + \text{atleast}(3, &Y_1, Y_A, Y_B, Y_6)\\ + &Y_A \Leftrightarrow Y_2 \vee Y_3\\ + &Y_B \Leftrightarrow (Y_4 \Rightarrow Y_5) + +.. code:: + + m.p = LogicalConstraint( + expr=atleast(3, m.Y[1], Or(m.Y[2], m.Y[3]), m.Y[4].implies(m.Y[5]), m.Y[6])) + +Nested CP-style operators +------------------------- + +.. math:: + \text{atleast}(2, Y_1, \text{exactly}(2, Y_2, Y_3, Y_4), Y_5, Y_6) + +Here, we again need to add augmented variables: + +.. math:: + \text{atleast}(2, Y_1, Y_A, Y_5, Y_6)\\ + Y_A \Leftrightarrow \text{exactly}(2, Y_2, Y_3, Y_4) + +However, we also need to further interpret the second statement as a disjunction: + +.. math:: + :nowrap: + + \begin{gather*} + \text{atleast}(2, Y_1, Y_A, Y_5, Y_6)\\ + \left[\begin{gathered}Y_A\\\text{exactly}(2, Y_2, Y_3, Y_4)\end{gathered}\right] + \vee + \left[\begin{gathered}\neg Y_A\\ + \left[\begin{gathered}Y_B\\\text{atleast}(3, Y_2, Y_3, Y_4)\end{gathered}\right] \vee \left[\begin{gathered}Y_C\\\text{atmost}(1, Y_2, Y_3, Y_4)\end{gathered}\right] + \end{gathered}\right] + \end{gather*} + +or equivalently, + +.. math:: + :nowrap: + + \begin{gather*} + \text{atleast}(2, Y_1, Y_A, Y_5, Y_6)\\ + \text{exactly}(1, Y_A, Y_B, Y_C)\\ + \left[\begin{gathered}Y_A\\\text{exactly}(2, Y_2, Y_3, Y_4)\end{gathered}\right] + \vee + \left[\begin{gathered}Y_B\\\text{atleast}(3, Y_2, Y_3, Y_4)\end{gathered}\right] \vee \left[\begin{gathered}Y_C\\\text{atmost}(1, Y_2, Y_3, Y_4)\end{gathered}\right] + \end{gather*} + +.. code:: + + m.p = LogicalConstraint( + expr=atleast(2, m.Y[1], exactly(2, m.Y[2], m.Y[3], m.Y[4]), m.Y[5], m.Y[6])) + +In the ``logical_to_linear`` transformation, we automatically convert these special disjunctions to linear form using a Big M reformulation. + +Additional Examples +=================== + +The following models all work and are equivalent for :math:`\left[x = 0\right] \veebar \left[y = 0\right]`: + +.. doctest:: + + Option 1: Rule-based construction + + >>> from pyomo.environ import * + >>> from pyomo.gdp import * + >>> model = ConcreteModel() + + >>> model.x = Var() + >>> model.y = Var() + + >>> # Two conditions + >>> def _d(disjunct, flag): + ... model = disjunct.model() + ... if flag: + ... # x == 0 + ... disjunct.c = Constraint(expr=model.x == 0) + ... else: + ... # y == 0 + ... disjunct.c = Constraint(expr=model.y == 0) + >>> model.d = Disjunct([0,1], rule=_d) + + >>> # Define the disjunction + >>> def _c(model): + ... return [model.d[0], model.d[1]] + >>> model.c = Disjunction(rule=_c) + + Option 2: Explicit disjuncts + + >>> from pyomo.environ import * + >>> from pyomo.gdp import * + >>> model = ConcreteModel() + + >>> model.x = Var() + >>> model.y = Var() + + >>> model.fix_x = Disjunct() + >>> model.fix_x.c = Constraint(expr=model.x == 0) + + >>> model.fix_y = Disjunct() + >>> model.fix_y.c = Constraint(expr=model.y == 0) + + >>> model.c = Disjunction(expr=[model.fix_x, model.fix_y]) + + Option 3: Implicit disjuncts (disjunction rule returns a list of + expressions or a list of lists of expressions) + + >>> from pyomo.environ import * + >>> from pyomo.gdp import * + >>> model = ConcreteModel() + + >>> model.x = Var() + >>> model.y = Var() + + >>> model.c = Disjunction(expr=[model.x == 0, model.y == 0]) diff --git a/doc/OnlineDocs/user_guide/modeling_extensions/gdp/solving.rst b/doc/OnlineDocs/user_guide/modeling_extensions/gdp/solving.rst new file mode 100644 index 00000000000..9fea90ebf5f --- /dev/null +++ b/doc/OnlineDocs/user_guide/modeling_extensions/gdp/solving.rst @@ -0,0 +1,201 @@ +.. image:: /../logos/gdp/Pyomo-GDP-150.png + :scale: 20% + :class: no-scaled-link + :align: right + +***************************************** +Solving Logic-based Models with Pyomo.GDP +***************************************** + + +Flexible Solution Suite +======================= + +Once a model is formulated as a GDP model, a range of solution +strategies are available to manipulate and solve it. + +The traditional approach is reformulation to a MI(N)LP, but various +other techniques are possible, including direct solution via the +:ref:`GDPopt solver `. Below, we describe some of +these capabilities. + +.. _gdp-reformulations: + +Reformulations +============== + +Logical constraints +------------------- + +.. note:: + + Historically users needed to explicitly convert logical propositions + to algebraic form prior to invoking the GDP MI(N)LP reformulations + or the GDPopt solver. However, this is mathematically incorrect + since the GDP MI(N)LP reformulations themselves convert logical + formulations to algebraic formulations. The current recommended + practice is to pass the entire (mixed logical / algebraic) model to + the MI(N)LP reformulations or GDPopt directly. + +There are several approaches to convert logical constraints into +algebraic form. + +Conjunctive Normal Form +^^^^^^^^^^^^^^^^^^^^^^^ + +The first transformation (`core.logical_to_linear`) leverages the +`sympy` package to generate the conjunctive normal form of the logical +constraints and then adds the equivalent as a list algebraic +constraints. The following transforms logical propositions on the model +to algebraic form: + +.. code:: + + TransformationFactory('core.logical_to_linear').apply_to(model) + +The transformation creates a constraint list with a unique name starting +with ``logic_to_linear``, within which the algebraic equivalents of the +logical constraints are placed. If not already associated with a binary +variable, each ``BooleanVar`` object will receive a generated binary +counterpart. These associated binary variables may be accessed via the +``get_associated_binary()`` method. + +.. code:: + + m.Y[1].get_associated_binary() + +Additional augmented variables and their corresponding constraints may +also be created, as described in :ref:`gdp-advanced-examples`. + +Following solution of the GDP model, values of the Boolean variables may be updated from their algebraic binary counterparts using the ``update_boolean_vars_from_binary()`` function. + +.. autofunction:: pyomo.core.plugins.transform.logical_to_linear.update_boolean_vars_from_binary + +Factorable Programming +^^^^^^^^^^^^^^^^^^^^^^ + +The second transformation (`contrib.logical_to_disjunctive`) leverages +ideas from factorable programming to first generate an equivalent set of +"factored" logical constraints form by traversing each logical +proposition and replacing each logical operator with an additional +Boolean variable and then adding the "simple" logical constraint that +equates the new Boolean variable with the single logical operator. + +The resulting "simple" logical constraints are converted to either MIP +or GDP form: if the constraint contains only Boolean variables, then +then MIP representation is emitted. Logical constraints with mixed +integer-Boolean arguments (e.g., `atmost`, `atleast`, `exactly`, etc.) +are converted to a disjunctive representation. + +As this transformation both avoids the conversion into `sympy` and only +requires a single traversal of each logical constraint, +`contrib.logical_to_disjunctive` is significantly faster than +`core.logical_to_linear` at the cost of a larger model. In practice, +the cost of the larger model is negated by the effectiveness of the MIP +presolve in most solvers. + +Reformulation to MI(N)LP +------------------------ + +To use standard commercial solvers, you must convert the disjunctive +model to a standard MILP/MINLP model. The two classical strategies for +doing so are the (included) Big-M and Hull reformulations. + + +Big-M (BM) Reformulation +^^^^^^^^^^^^^^^^^^^^^^^^ + +The Big-M reformulation\ [#gdp-bm]_ results in a smaller transformed model, avoiding the need to add extra variables; however, it yields a looser continuous relaxation. +By default, the BM transformation will estimate reasonably tight M values for you if variables are bounded. +For nonlinear models where finite expression bounds may be inferred from variable bounds, the BM transformation may also be able to automatically compute M values for you. +For all other models, you will need to provide the M values through a "BigM" Suffix, or through the `bigM` argument to the transformation. +We will raise a ``GDP_Error`` for missing M values. + +To apply the BM reformulation within a python script, use: + +.. code:: + + TransformationFactory('gdp.bigm').apply_to(model) + +From the Pyomo command line, include the ``--transform pyomo.gdp.bigm`` option. + +Multiple Big-M (MBM) Reformulation +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +We also implement the multiple-parameter Big-M (MBM) approach described in literature\ [#gdp-mbm]_. +By default, the MBM transformation will solve continuous subproblems in order to calculate M values. +This process can be time-consuming, so the transformation also provides a method to export the M values used as a dictionary and allows for M values to be provided through the `bigM` argument. + +For example, to apply the transformation and store the M values, use: + +.. code:: + + mbigm = TransformationFactory('gdp.mbigm') + mbigm.apply_to(model) + + # These can be stored... + M_values = mbigm.get_all_M_values(model) + # ...so that in future runs, you can write: + mbigm.apply_to(m, bigM=M_values) + +From the Pyomo command line, include the ``--transform pyomo.gdp.mbigm`` option. + +.. warning:: + The Multiple Big-M transformation does not currently support Suffixes and will + ignore "BigM" Suffixes. + +Hull Reformulation (HR) +^^^^^^^^^^^^^^^^^^^^^^^ + +The Hull Reformulation requires a lifting into a higher-dimensional space and consequently introduces disaggregated variables and their corresponding constraints. + +.. note:: + + - All variables that appear in disjuncts need upper and lower bounds. + + - The hull reformulation is an exact reformulation at the solution + points even for nonconvex GDP models, but the resulting MINLP will + also be nonconvex. + +To apply the Hull reformulation within a python script, use: + +.. code:: + + TransformationFactory('gdp.hull').apply_to(model) + +From the Pyomo command line, include the ``--transform pyomo.gdp.hull`` option. + +Hybrid BM/HR Reformulation +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +An experimental (for now) implementation of the cutting plane approach described in literature\ [#gdp-cuttingplanes]_ is provided for linear GDP models. +The transformation augments the BM reformulation by a set of cutting planes generated from the HR model by solving separation problems. +This gives a model that is not as large as the HR, but with a stronger continuous relaxation than the BM. + +This transformation is accessible via: + +.. code:: + + TransformationFactory('gdp.cuttingplane').apply_to(model) + +Direct GDP solvers +================== + +Pyomo includes the contributed GDPopt solver, which can directly solve +GDP models. Its usage is described within the :ref:`contributed +packages documentation `. + +References +========== + +.. [#gdp-pse-paper] Chen, Q., Johnson, E. S., Siirola, J. D., & Grossmann, I. E. (2018). Pyomo.GDP: Disjunctive Models in Python. In M. R. Eden, M. G. Ierapetritou, & G. P. Towler (Eds.), *Proceedings of the 13th International Symposium on Process Systems Engineering* (pp. 889–894). San Diego: Elsevier B.V. https://doi.org/10.1016/B978-0-444-64241-7.50143-9 + +.. [#gdp-main-paper] Chen, Q., Johnson, E. S., Bernal, D. E., Valentin, R., Kale, S., Bates, J., Siirola, J. D. and Grossmann, I. E. (2021). Pyomo.GDP: an ecosystem for logic based modeling and optimization development, *Optimization and Engineering* (pp. 1-36).https://doi.org/10.1007/s11081-021-09601-7 + +.. [#gdp-review-2013] Grossmann, I. E., & Trespalacios, F. (2013). Systematic modeling of discrete-continuous optimization models through generalized disjunctive programming. *AIChE Journal*, 59(9), 3276–3295. https://doi.org/10.1002/aic.14088 + +.. [#gdp-mbm] Trespalacios, F., & Grossmann, I. E. (2015). Improved Big-M reformulation for generalized disjunctive programs. *Computers and Chemical Engineering*, 76, 98–103. https://doi.org/10.1016/j.compchemeng.2015.02.013 + +.. [#gdp-bm] Nemhauser, G. L., & Wolsey, L. A. (1988). *Integer and combinatorial optimization*. New York: Wiley. + +.. [#gdp-cuttingplanes] Sawaya, N. W., & Grossmann, I. E. (2003). A cutting plane method for solving linear generalized disjunctive programming problems. *Computer Aided Chemical Engineering*, 15(C), 1032–1037. https://doi.org/10.1016/S1570-7946(03)80444-3 diff --git a/doc/OnlineDocs/user_guide/modeling_extensions/index.rst b/doc/OnlineDocs/user_guide/modeling_extensions/index.rst new file mode 100644 index 00000000000..3a3370e510a --- /dev/null +++ b/doc/OnlineDocs/user_guide/modeling_extensions/index.rst @@ -0,0 +1,12 @@ +Modeling Extensions +=================== + +.. toctree:: + :maxdepth: 1 + + bilevel.rst + dae.rst + gdp/index.rst + mpec.rst + stochastic_programming.rst + network.rst diff --git a/doc/OnlineDocs/user_guide/modeling_extensions/mpec.rst b/doc/OnlineDocs/user_guide/modeling_extensions/mpec.rst new file mode 100644 index 00000000000..b7ba19712ca --- /dev/null +++ b/doc/OnlineDocs/user_guide/modeling_extensions/mpec.rst @@ -0,0 +1,6 @@ +MPEC +==== + +``pyomo.mpec`` supports modeling complementarity conditions and +optimization problems with equilibrium constraints. + diff --git a/doc/OnlineDocs/user_guide/modeling_extensions/network.rst b/doc/OnlineDocs/user_guide/modeling_extensions/network.rst new file mode 100644 index 00000000000..3fce9448997 --- /dev/null +++ b/doc/OnlineDocs/user_guide/modeling_extensions/network.rst @@ -0,0 +1,331 @@ +Pyomo Network +============= + +Pyomo Network is a package that allows users to easily represent their model +as a connected network of units. Units are blocks that contain ports, which +contain variables, that are connected to other ports via arcs. The connection +of two ports to each other via an arc typically represents a set of constraints +equating each member of each port to each other, however there exist other +connection rules as well, in addition to support for custom rules. Pyomo +Network also includes a model transformation that will automatically expand +the arcs and generate the appropriate constraints to produce an algebraic +model that a solver can handle. Furthermore, the package also introduces a +generic sequential decomposition tool that can leverage the modeling +components to decompose a model and compute each unit in the model in a +logically ordered sequence. + +Modeling Components +------------------- + +Pyomo Network introduces two new modeling components to Pyomo: + +.. autosummary:: + :nosignatures: + + pyomo.network.Port + pyomo.network.Arc + +Port +**** + +.. autoclass:: pyomo.network.Port + :members: + :exclude-members: construct, display + +.. autoclass:: pyomo.network.port._PortData + :members: + :special-members: __getattr__ + :exclude-members: set_value + +The following code snippet shows examples of declaring and using a +:py:class:`Port ` component on a +concrete Pyomo model: + +.. doctest:: + + >>> from pyomo.environ import * + >>> from pyomo.network import * + >>> m = ConcreteModel() + >>> m.x = Var() + >>> m.y = Var(['a', 'b']) # can be indexed + >>> m.z = Var() + >>> m.e = 5 * m.z # you can add Pyomo expressions too + >>> m.w = Var() + + >>> m.p = Port() + >>> m.p.add(m.x) # implicitly name the port member "x" + >>> m.p.add(m.y, "foo") # name the member "foo" + >>> m.p.add(m.e, rule=Port.Extensive) # specify a rule + >>> m.p.add(m.w, rule=Port.Extensive, write_var_sum=False) # keyword arg + +Arc +*** + +.. autoclass:: pyomo.network.Arc + :members: + :exclude-members: construct + +.. autoclass:: pyomo.network.arc._ArcData + :members: + :special-members: __getattr__ + +The following code snippet shows examples of declaring and using an +:py:class:`Arc ` component on a +concrete Pyomo model: + +.. doctest:: + + >>> from pyomo.environ import * + >>> from pyomo.network import * + >>> m = ConcreteModel() + >>> m.x = Var() + >>> m.y = Var(['a', 'b']) + >>> m.u = Var() + >>> m.v = Var(['a', 'b']) + >>> m.w = Var() + >>> m.z = Var(['a', 'b']) # indexes need to match + + >>> m.p = Port(initialize=[m.x, m.y]) + >>> m.q = Port(initialize={"x": m.u, "y": m.v}) + >>> m.r = Port(initialize={"x": m.w, "y": m.z}) # names need to match + >>> m.a = Arc(source=m.p, destination=m.q) # directed + >>> m.b = Arc(ports=(m.p, m.q)) # undirected + >>> m.c = Arc(ports=(m.p, m.q), directed=True) # directed + >>> m.d = Arc(src=m.p, dest=m.q) # aliases work + >>> m.e = Arc(source=m.r, dest=m.p) # ports can have both in and out + +Arc Expansion Transformation +---------------------------- + +The examples above show how to declare and instantiate a +:py:class:`Port ` and an +:py:class:`Arc `. These two components form the basis of +the higher level representation of a connected network with sets of related +variable quantities. Once a network model has been constructed, Pyomo Network +implements a transformation that will expand all (active) arcs on the model +and automatically generate the appropriate constraints. The constraints +created for each port member will be indexed by the same indexing set as +the port member itself. + +During transformation, a new block is created on the model for each arc +(located on the arc's parent block), which serves to contain all of the +auto generated constraints for that arc. At the end of the +transformation, a reference is created on the arc that points to this +new block, available via the arc property `arc.expanded_block`. + +The constraints produced by this transformation depend on the rule assigned +for each port member and can be different between members on the same port. +For example, you can have two different members on a port where one member's +rule is :py:func:`Port.Equality ` and the other +member's rule is :py:func:`Port.Extensive `. + +:py:func:`Port.Equality ` is the default rule +for port members. This rule simply generates equality constraints on the +expanded block between the source port's member and the destination port's +member. Another implemented expansion method is +:py:func:`Port.Extensive `, which essentially +represents implied splitting and mixing of certain variable quantities. +Users can refer to the documentation of the static method itself for more +details on how this implicit splitting and mixing is implemented. +Additionally, should users desire, the expansion API supports custom rules +that can be implemented to generate whatever is needed for special cases. + +The following code demonstrates how to call the transformation to expand +the arcs on a model: + +.. doctest:: + + >>> from pyomo.environ import * + >>> from pyomo.network import * + >>> m = ConcreteModel() + >>> m.x = Var() + >>> m.y = Var(['a', 'b']) + >>> m.u = Var() + >>> m.v = Var(['a', 'b']) + + >>> m.p = Port(initialize=[m.x, (m.y, Port.Extensive)]) # rules must match + >>> m.q = Port(initialize={"x": m.u, "y": (m.v, Port.Extensive)}) + >>> m.a = Arc(source=m.p, destination=m.q) + + >>> TransformationFactory("network.expand_arcs").apply_to(m) + +Sequential Decomposition +------------------------ + +Pyomo Network implements a generic +:py:class:`SequentialDecomposition ` +tool that can be used to compute each unit in a network model in a logically +ordered sequence. + +The sequential decomposition procedure is commenced via the +:py:func:`run ` method. + +Creating a Graph +**************** + +To begin this procedure, the Pyomo Network model is first utilized to create +a networkx `MultiDiGraph` by adding edges to the graph for every arc on the +model, where the nodes of the graph are the parent blocks of the source and +destination ports. This is done via the +:py:func:`create_graph ` +method, which requires all arcs on the model to be both directed and already +expanded. The `MultiDiGraph` class of networkx supports both direccted edges +as well as having multiple edges between the same two nodes, so users can +feel free to connect as many ports as desired between the same two units. + +Computation Order +***************** + +The order of computation is then determined by treating the resulting graph +as a tree, starting at the roots of the tree, and making sure by the time +each node is reached, all of its predecessors have already been computed. +This is implemented through the :py:func:`calculation_order +` and +:py:func:`tree_order ` +methods. Before this, however, the procedure will first select a set of tear +edges, if necessary, such that every loop in the graph is torn, while +minimizing both the number of times any single loop is torn as well as the +total number of tears. + +Tear Selection +************** + +A set of tear edges can be selected in one of two ways. By default, a Pyomo +MIP model is created and optimized resulting in an optimal set of tear edges. +The implementation of this MIP model is based on a set of binary "torn" +variables for every edge in the graph, and constraints on every loop in the +graph that dictate that there must be at least one tear on the loop. Then +there are two objectives (represented by a doubly weighted objective). The +primary objective is to minimize the number of times any single loop is torn, +and then secondary to that is to minimize the total number of tears. This +process is implemented in the :py:func:`select_tear_mip +` method, which uses +the model returned from the :py:func:`select_tear_mip_model +` method. + +Alternatively, there is the :py:func:`select_tear_heuristic +` method. This +uses a heuristic procedure that walks back and forth on the graph to find +every optimal tear set, and returns each equally optimal tear set it finds. +This method is much slower than the MIP method on larger models, but it +maintains some use in the fact that it returns every possible optimal tear set. + +A custom tear set can be assigned before calling the +:py:func:`run ` method. This is +useful so users can know what their tear set will be and thus what arcs will +require guesses for uninitialized values. See the +:py:func:`set_tear_set ` +method for details. + +Running the Sequential Decomposition Procedure +********************************************** + +After all of this computational order preparation, the sequential +decomposition procedure will then run through the graph in the order it +has determined. Thus, the `function` that was passed to the +:py:func:`run ` method will be +called on every unit in sequence. This function can perform any arbitrary +operations the user desires. The only thing that +:py:class:`SequentialDecomposition ` +expects from the function is that after returning from it, every variable +on every outgoing port of the unit will be specified (i.e. it will have a +set current value). Furthermore, the procedure guarantees to the user that +for every unit, before the function is called, every variable on every +incoming port of the unit will be fixed. + +In between computing each of these units, port member values are passed +across existing arcs involving the unit currently being computed. This means +that after computing a unit, the expanded constraints from each arc coming +out of this unit will be satisfied, and the values on the respective +destination ports will be fixed at these new values. While running the +computational order, values are not passed across tear edges, as tear edges +represent locations in loops to stop computations (during iterations). This +process continues until all units in the network have been computed. This +concludes the "first pass run" of the network. + +Guesses and Fixing Variables +**************************** + +When passing values across arcs while running the computational order, +values at the destinations of each of these arcs will be fixed at the +appropriate values. This is important to the fact that the procedure +guarantees every inlet variable will be fixed before calling the function. +However, since values are not passed across torn arcs, there is a need for +user-supplied guesses for those values. See the :py:func:`set_guesses_for +` method for details +on how to supply these values. + +In addition to passing dictionaries of guesses for certain ports, users can +also assign current values to the variables themselves and the procedure +will pick these up and fix the variables in place. Alternatively, users can +utilize the `default_guess` option to specify a value to use as a default +guess for all free variables if they have no guess or current value. If a +free variable has no guess or current value and there is no default guess +option, then an error will be raised. + +Similarly, if the procedure attempts to pass a value to a destination port +member but that port member is already fixed and its fixed value is different +from what is trying to be passed to it (by a tolerance specified by the +`almost_equal_tol` option), then an error will be raised. Lastly, if there +is more than one free variable in a constraint while trying to pass values +across an arc, an error will be raised asking the user to fix more variables +by the time values are passed across said arc. + +Tear Convergence +**************** + +After completing the first pass run of the network, the sequential +decomposition procedure will proceed to converge all tear edges in the +network (unless the user specifies not to, or if there are no tears). +This process occurs separately for every strongly connected component (SCC) +in the graph, and the SCCs are computed in a logical order such that each +SCC is computed before other SCCs downstream of it (much like +:py:func:`tree_order `). + +There are two implemented methods for converging tear edges: direct +substitution and Wegstein acceleration. Both of these will iteratively run +the computation order until every value in every tear arc has converged to +within the specified tolerance. See the +:py:class:`SequentialDecomposition ` +parameter documentation for details on what can be controlled about this +procedure. + +The following code demonstrates basic usage of the +:py:class:`SequentialDecomposition ` +class: + +.. doctest:: + :skipif: not __import__("pyomo.network").network.decomposition.imports_available + + >>> from pyomo.environ import * + >>> from pyomo.network import * + >>> m = ConcreteModel() + >>> m.unit1 = Block() + >>> m.unit1.x = Var() + >>> m.unit1.y = Var(['a', 'b']) + >>> m.unit2 = Block() + >>> m.unit2.x = Var() + >>> m.unit2.y = Var(['a', 'b']) + >>> m.unit1.port = Port(initialize=[m.unit1.x, (m.unit1.y, Port.Extensive)]) + >>> m.unit2.port = Port(initialize=[m.unit2.x, (m.unit2.y, Port.Extensive)]) + >>> m.a = Arc(source=m.unit1.port, destination=m.unit2.port) + >>> TransformationFactory("network.expand_arcs").apply_to(m) + + >>> m.unit1.x.fix(10) + >>> m.unit1.y['a'].fix(15) + >>> m.unit1.y['b'].fix(20) + + >>> seq = SequentialDecomposition(tol=1.0E-3) # options can go to init + >>> seq.options.select_tear_method = "heuristic" # or set them like so + >>> # seq.set_tear_set([...]) # assign a custom tear set + >>> # seq.set_guesses_for(m.unit.inlet, {...}) # choose guesses + >>> def initialize(b): + ... # b.initialize() + ... pass + ... + >>> seq.run(m, initialize) + +.. autoclass:: pyomo.network.SequentialDecomposition + :members: set_guesses_for, set_tear_set, tear_set_arcs, indexes_to_arcs, + run, create_graph, select_tear_mip, select_tear_mip_model, + select_tear_heuristic, calculation_order, tree_order diff --git a/doc/OnlineDocs/user_guide/modeling_extensions/reduce_points_demo.png b/doc/OnlineDocs/user_guide/modeling_extensions/reduce_points_demo.png new file mode 100644 index 0000000000000000000000000000000000000000..00195f26dd7b6af03315c11372b3094a3aebf7ef GIT binary patch literal 29803 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 O_)=5R!W1i6KKu_f`Icb- literal 0 HcmV?d00001 diff --git a/doc/OnlineDocs/user_guide/modeling_extensions/stochastic_programming.rst b/doc/OnlineDocs/user_guide/modeling_extensions/stochastic_programming.rst new file mode 100644 index 00000000000..227a8d9aa8d --- /dev/null +++ b/doc/OnlineDocs/user_guide/modeling_extensions/stochastic_programming.rst @@ -0,0 +1,17 @@ +Stochastic Programming in Pyomo +=============================== + +There are two extensions for modeling and solving Stochastic Programs in +Pyomo. Both are currently distributed as independent Python packages. +PySP was the original extension (and up through Pyomo 5.7.3 was +distributed as part of Pyomo). You can find the documentation here: + + `https://pysp.readthedocs.io `_ + +In 2020, the PySP developers released the mpi-sppy package, which +reimplemented much of the functionality from PySP in a new scalable +framework built on top of MPI and the mpi4py package. Future +development of stochastic programming capabilities is occurring in +mpi-sppy. The documentation is available here: + + `https://mpi-sppy.readthedocs.io `_ diff --git a/doc/OnlineDocs/user_guide/persistent_solvers.rst b/doc/OnlineDocs/user_guide/persistent_solvers.rst new file mode 100644 index 00000000000..aebb0545dd0 --- /dev/null +++ b/doc/OnlineDocs/user_guide/persistent_solvers.rst @@ -0,0 +1,188 @@ +Persistent Solvers +================== + +The purpose of the persistent solver interfaces is to efficiently +notify the solver of incremental changes to a Pyomo model. The +persistent solver interfaces create and store model instances from the +Python API for the corresponding solver. For example, the +:class:`GurobiPersistent` +class maintaints a pointer to a gurobipy Model object. Thus, we can +make small changes to the model and notify the solver rather than +recreating the entire model using the solver Python API (or rewriting +an entire model file - e.g., an lp file) every time the model is +solved. + +.. warning:: Users are responsible for notifying persistent solver + interfaces when changes to a model are made! + + +Using Persistent Solvers +------------------------ + +The first step in using a persistent solver is to create a Pyomo model +as usual. + +>>> import pyomo.environ as pe +>>> m = pe.ConcreteModel() +>>> m.x = pe.Var() +>>> m.y = pe.Var() +>>> m.obj = pe.Objective(expr=m.x**2 + m.y**2) +>>> m.c = pe.Constraint(expr=m.y >= -2*m.x + 5) + +You can create an instance of a persistent solver through the SolverFactory. + +>>> opt = pe.SolverFactory('gurobi_persistent') # doctest: +SKIP + +This returns an instance of :py:class:`GurobiPersistent`. Now we need +to tell the solver about our model. + +>>> opt.set_instance(m) # doctest: +SKIP + +This will create a gurobipy Model object and include the appropriate +variables and constraints. We can now solve the model. + +>>> results = opt.solve() # doctest: +SKIP + +We can also add or remove variables, constraints, blocks, and +objectives. For example, + +>>> m.c2 = pe.Constraint(expr=m.y >= m.x) # doctest: +SKIP +>>> opt.add_constraint(m.c2) # doctest: +SKIP + +This tells the solver to add one new constraint but otherwise leave +the model unchanged. We can now resolve the model. + +>>> results = opt.solve() # doctest: +SKIP + +To remove a component, simply call the corresponding remove method. + +>>> opt.remove_constraint(m.c2) # doctest: +SKIP +>>> del m.c2 # doctest: +SKIP +>>> results = opt.solve() # doctest: +SKIP + +If a pyomo component is replaced with another component with the same +name, the first component must be removed from the solver. Otherwise, +the solver will have multiple components. For example, the following +code will run without error, but the solver will have an extra +constraint. The solver will have both y >= -2*x + 5 and y <= x, which +is not what was intended! + +>>> m = pe.ConcreteModel() # doctest: +SKIP +>>> m.x = pe.Var() # doctest: +SKIP +>>> m.y = pe.Var() # doctest: +SKIP +>>> m.c = pe.Constraint(expr=m.y >= -2*m.x + 5) # doctest: +SKIP +>>> opt = pe.SolverFactory('gurobi_persistent') # doctest: +SKIP +>>> opt.set_instance(m) # doctest: +SKIP +>>> # WRONG: +>>> del m.c # doctest: +SKIP +>>> m.c = pe.Constraint(expr=m.y <= m.x) # doctest: +SKIP +>>> opt.add_constraint(m.c) # doctest: +SKIP + +The correct way to do this is: + +>>> m = pe.ConcreteModel() # doctest: +SKIP +>>> m.x = pe.Var() # doctest: +SKIP +>>> m.y = pe.Var() # doctest: +SKIP +>>> m.c = pe.Constraint(expr=m.y >= -2*m.x + 5) # doctest: +SKIP +>>> opt = pe.SolverFactory('gurobi_persistent') # doctest: +SKIP +>>> opt.set_instance(m) # doctest: +SKIP +>>> # Correct: +>>> opt.remove_constraint(m.c) # doctest: +SKIP +>>> del m.c # doctest: +SKIP +>>> m.c = pe.Constraint(expr=m.y <= m.x) # doctest: +SKIP +>>> opt.add_constraint(m.c) # doctest: +SKIP + +.. warning:: Components removed from a pyomo model must be removed + from the solver instance by the user. + +Additionally, unexpected behavior may result if a component is +modified before being removed. + +>>> m = pe.ConcreteModel() # doctest: +SKIP +>>> m.b = pe.Block() # doctest: +SKIP +>>> m.b.x = pe.Var() # doctest: +SKIP +>>> m.b.y = pe.Var() # doctest: +SKIP +>>> m.b.c = pe.Constraint(expr=m.b.y >= -2*m.b.x + 5) # doctest: +SKIP +>>> opt = pe.SolverFactory('gurobi_persistent') # doctest: +SKIP +>>> opt.set_instance(m) # doctest: +SKIP +>>> m.b.c2 = pe.Constraint(expr=m.b.y <= m.b.x) # doctest: +SKIP +>>> # ERROR: The constraint referenced by m.b.c2 does not +>>> # exist in the solver model. +>>> opt.remove_block(m.b) # doctest: +SKIP + +In most cases, the only way to modify a component is to remove it from +the solver instance, modify it with Pyomo, and then add it back to the +solver instance. The only exception is with variables. Variables may +be modified and then updated with with solver: + +>>> m = pe.ConcreteModel() # doctest: +SKIP +>>> m.x = pe.Var() # doctest: +SKIP +>>> m.y = pe.Var() # doctest: +SKIP +>>> m.obj = pe.Objective(expr=m.x**2 + m.y**2) # doctest: +SKIP +>>> m.c = pe.Constraint(expr=m.y >= -2*m.x + 5) # doctest: +SKIP +>>> opt = pe.SolverFactory('gurobi_persistent') # doctest: +SKIP +>>> opt.set_instance(m) # doctest: +SKIP +>>> m.x.setlb(1.0) # doctest: +SKIP +>>> opt.update_var(m.x) # doctest: +SKIP + +Working with Indexed Variables and Constraints +---------------------------------------------- + +The examples above all used simple variables and constraints; in order to use +indexed variables and/or constraints, the code must be slightly adapted: + +>>> for v in indexed_var.values(): # doctest: +SKIP +... opt.add_var(v) +>>> for v in indexed_con.values(): # doctest: +SKIP +... opt.add_constraint(v) + +This must be done when removing variables/constraints, too. Not doing this would +result in AttributeError exceptions, for example: + +>>> opt.add_var(indexed_var) # doctest: +SKIP +>>> # ERROR: AttributeError: 'IndexedVar' object has no attribute 'is_binary' +>>> opt.add_constraint(indexed_con) # doctest: +SKIP +>>> # ERROR: AttributeError: 'IndexedConstraint' object has no attribute 'body' + +The method "is_indexed" can be used to automate the process, for example: + +>>> def add_variable(opt, variable): # doctest: +SKIP +... if variable.is_indexed(): +... for v in variable.values(): +... opt.add_var(v) +... else: +... opt.add_var(v) + +Persistent Solver Performance +----------------------------- +In order to get the best performance out of the persistent solvers, use the +"save_results" flag: + +>>> import pyomo.environ as pe +>>> m = pe.ConcreteModel() +>>> m.x = pe.Var() +>>> m.y = pe.Var() +>>> m.obj = pe.Objective(expr=m.x**2 + m.y**2) +>>> m.c = pe.Constraint(expr=m.y >= -2*m.x + 5) +>>> opt = pe.SolverFactory('gurobi_persistent') # doctest: +SKIP +>>> opt.set_instance(m) # doctest: +SKIP +>>> results = opt.solve(save_results=False) # doctest: +SKIP + +Note that if the "save_results" flag is set to False, then the following +is not supported. + +>>> results = opt.solve(save_results=False, load_solutions=False) # doctest: +SKIP +>>> if results.solver.termination_condition == TerminationCondition.optimal: +... m.solutions.load_from(results) # doctest: +SKIP + +However, the following will work: + +>>> results = opt.solve(save_results=False, load_solutions=False) # doctest: +SKIP +>>> if results.solver.termination_condition == TerminationCondition.optimal: +... opt.load_vars() # doctest: +SKIP + +Additionally, a subset of variable values may be loaded back into the model: + +>>> results = opt.solve(save_results=False, load_solutions=False) # doctest: +SKIP +>>> if results.solver.termination_condition == TerminationCondition.optimal: +... opt.load_vars(m.x) # doctest: +SKIP diff --git a/doc/OnlineDocs/user_guide/pyomo_modeling_components/Constraints.rst b/doc/OnlineDocs/user_guide/pyomo_modeling_components/Constraints.rst new file mode 100644 index 00000000000..0cc42cb2abe --- /dev/null +++ b/doc/OnlineDocs/user_guide/pyomo_modeling_components/Constraints.rst @@ -0,0 +1,39 @@ +Constraints +=========== + +Most constraints are specified using equality or inequality expressions +that are created using a rule, which is a Python function. For example, +if the variable ``model.x`` has the indexes 'butter' and 'scones', then +this constraint limits the sum over these indexes to be exactly three: + +.. literalinclude:: ../src/scripting/spy4Constraints_Constraint_example.spy + :language: python + +Instead of expressions involving equality (==) or inequalities (`<=` or +`>=`), constraints can also be expressed using a 3-tuple if the form +(lb, expr, ub) where lb and ub can be ``None``, which is interpreted as +lb `<=` expr `<=` ub. Variables can appear only in the middle expr. For +example, the following two constraint declarations have the same +meaning: + +.. literalinclude:: ../src/scripting/spy4Constraints_Inequality_constraints_2expressions.spy + :language: python + +For this simple example, it would also be possible to declare +``model.x`` with a ``bounds`` option to accomplish the same thing. + +Constraints (and objectives) can be indexed by lists or sets. When the +declaration contains lists or sets as arguments, the elements are +iteratively passed to the rule function. If there is more than one, then +the cross product is sent. For example the following constraint could be +interpreted as placing a budget of :math:`i` on the +:math:`i^{\mbox{th}}` item to buy where the cost per item is given by +the parameter ``model.a``: + +.. literalinclude:: ../src/scripting/spy4Constraints_Passing_elements_crossproduct.spy + :language: python + +.. note:: + + Python and Pyomo are case sensitive so ``model.a`` is not the same as + ``model.A``. diff --git a/doc/OnlineDocs/user_guide/pyomo_modeling_components/Expressions.rst b/doc/OnlineDocs/user_guide/pyomo_modeling_components/Expressions.rst new file mode 100644 index 00000000000..16c206e2fe8 --- /dev/null +++ b/doc/OnlineDocs/user_guide/pyomo_modeling_components/Expressions.rst @@ -0,0 +1,218 @@ +Expressions +=========== + +In this section, we use the word "expression" in two ways: first in the +general sense of the word and second to describe a class of Pyomo objects +that have the name ``Expression`` as described in the subsection on +expression objects. + +Rules to Generate Expressions +----------------------------- + +Both objectives and constraints make use of rules to generate +expressions. These are Python functions that return the appropriate +expression. These are first-class functions that can access +global data as well as data passed in, including the model object. + +Operations on model elements results in expressions, which seems natural +in expressions like the constraints we have seen so far. It is also +possible to build up expressions. The following example illustrates +this, along with a reference to global Python data in the form of a +Python variable called ``switch``: + +.. literalinclude:: ../src/scripting/spy4Expressions_Buildup_expression_switch.spy + :language: python + +In this example, the constraint that is generated depends on the value +of the Python variable called ``switch``. If the value is 2 or greater, +then the constraint is ``summation(model.c, model.x) - model.d >= 0.5``; +otherwise, the ``model.d`` term is not present. + +.. warning:: + + Because model elements result in expressions, not values, the + following does not work as expected in an abstract model! + + .. literalinclude:: ../src/scripting/spy4Expressions_Abstract_wrong_usage.spy + :language: python + + The trouble is that ``model.d >= 2`` results in an expression, not + its evaluated value. Instead use ``if value(model.d) >= 2`` + +.. note:: + + Pyomo supports non-linear expressions and can call non-linear solvers such as Ipopt. + +.. _piecewise: + +.. _abstract2piece.py: + +Piecewise Linear Expressions +---------------------------- + +Pyomo has facilities to add piecewise constraints of the form y=f(x) for +a variety of forms of the function f. + +The piecewise types other than SOS2, BIGM_SOS1, BIGM_BIN are implement +as described in the paper [Vielma_et_al]_. + +There are two basic forms for the declaration of the constraint: + +.. literalinclude:: ../src/scripting/spy4Expressions_Declare_piecewise_constraints.spy + :language: python + +where ``pwconst`` can be replaced by a name appropriate for the +application. The choice depends on whether the x and y variables are +indexed. If so, they must have the same index sets and these sets are +give as the first arguments. + +Keywords: +********* + +* **pw_pts={ },[ ],( )** + + A dictionary of lists (where keys are the index set) or a single list + (for the non-indexed case or when an identical set of breakpoints is + used across all indices) defining the set of domain breakpoints for + the piecewise linear function. + + .. note:: + + pw_pts is always required. These give the breakpoints for the + piecewise function and are expected to fully span the bounds for + the independent variable(s). + +* **pw_repn=

h#VUT{g!CQ~)Lx4gcLE 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. + +Credit for prototyping and development can be found in the ``GDPopt`` class documentation, below. + +.. _Turkay & Grossmann, 1996: https://dx.doi.org/10.1016/0098-1354(95)00219-7 +.. _Lee & Grossmann, 2001: https://doi.org/10.1016/S0098-1354(01)00732-3 +.. _Lee & Grossmann, 2000: https://doi.org/10.1016/S0098-1354(00)00581-0 +.. _Chen et al., 2018: https://doi.org/10.1016/B978-0-444-64241-7.50143-9 + +GDPopt can be used to solve a Pyomo.GDP concrete model in two ways. +The simplest is to instantiate the generic GDPopt solver and specify the desired algorithm as an argument to the ``solve`` method: + +.. code:: + + >>> SolverFactory('gdpopt').solve(model, algorithm='LOA') + +The alternative is to instantiate an algorithm-specific GDPopt solver: + +.. code:: + + >>> SolverFactory('gdpopt.loa').solve(model) + +In the above examples, GDPopt uses the GDPopt-LOA algorithm. +Other algorithms may be used by specifying them in the ``algorithm`` argument when using the generic solver or by instantiating the algorithm-specific GDPopt solvers. All GDPopt options are listed below. + +.. note:: + + The generic GDPopt solver allows minimal configuration outside of the arguments to the ``solve`` method. To avoid repeatedly specifying the same configuration options to the ``solve`` method, use the algorithm-specific solvers. + +Logic-based Outer Approximation (LOA) +------------------------------------- + +`Chen et al., 2018`_ contains the following flowchart, taken from the preprint version: + +.. image:: gdpopt_flowchart.png + :scale: 70% + +An example that includes the modeling approach may be found below. + +.. doctest:: + :skipif: not glpk_available + + Required imports + >>> from pyomo.environ import * + >>> from pyomo.gdp import * + + Create a simple model + >>> model = ConcreteModel(name='LOA example') + + >>> model.x = Var(bounds=(-1.2, 2)) + >>> model.y = Var(bounds=(-10,10)) + >>> model.c = Constraint(expr= model.x + model.y == 1) + + >>> model.fix_x = Disjunct() + >>> model.fix_x.c = Constraint(expr=model.x == 0) + + >>> model.fix_y = Disjunct() + >>> model.fix_y.c = Constraint(expr=model.y == 0) + + >>> model.d = Disjunction(expr=[model.fix_x, model.fix_y]) + >>> model.objective = Objective(expr=model.x + 0.1*model.y, sense=minimize) + + Solve the model using GDPopt + >>> results = SolverFactory('gdpopt.loa').solve( + ... model, mip_solver='glpk') # doctest: +IGNORE_RESULT + + Display the final solution + >>> model.display() + Model LOA example + + Variables: + x : Size=1, Index=None + Key : Lower : Value : Upper : Fixed : Stale : Domain + None : -1.2 : 0.0 : 2 : False : False : Reals + y : Size=1, Index=None + Key : Lower : Value : Upper : Fixed : Stale : Domain + None : -10 : 1.0 : 10 : False : False : Reals + + Objectives: + objective : Size=1, Index=None, Active=True + Key : Active : Value + None : True : 0.1 + + Constraints: + c : Size=1 + Key : Lower : Body : Upper + None : 1.0 : 1.0 : 1.0 + +.. note:: + + When troubleshooting, it can often be helpful to turn on verbose + output using the ``tee`` flag. + +.. code:: + + >>> SolverFactory('gdpopt.loa').solve(model, tee=True) + +Global Logic-based Outer Approximation (GLOA) +--------------------------------------------- + +The same algorithm can be used to solve GDPs involving nonconvex nonlinear constraints by solving the subproblems globally: + +.. code:: + + >>> SolverFactory('gdpopt.gloa').solve(model) + +.. warning:: + + The ``nlp_solver`` option must be set to a global solver for the solution returned by GDPopt to also be globally optimal. + +Relaxation with Integer Cuts (RIC) +---------------------------------- + +Instead of outer approximation, GDPs can be solved using the same MILP relaxation as in the previous two algorithms, but instead of using the subproblems to generate outer-approximation cuts, the algorithm adds only no-good cuts for every discrete solution encountered: + +.. code:: + + >>> SolverFactory('gdpopt.ric').solve(model) + +Again, this is a global algorithm if the subproblems are solved globally, and is not otherwise. + +.. note:: + + The RIC algorithm will not necessarily enumerate all discrete solutions as it is possible for the bounds to converge first. However, full enumeration is not uncommon. + +Logic-based Branch-and-Bound (LBB) +---------------------------------- + +The GDPopt-LBB solver branches through relaxed subproblems with inactive disjunctions. +It explores the possibilities based on best lower bound, +eventually activating all disjunctions and presenting the globally optimal solution. + +To use the GDPopt-LBB solver, define your Pyomo GDP model as usual: + +.. doctest:: + :skipif: not baron_available + + Required imports + >>> from pyomo.environ import * + >>> from pyomo.gdp import Disjunct, Disjunction + + Create a simple model + >>> m = ConcreteModel() + >>> m.x1 = Var(bounds = (0,8)) + >>> m.x2 = Var(bounds = (0,8)) + >>> m.obj = Objective(expr=m.x1 + m.x2, sense=minimize) + >>> m.y1 = Disjunct() + >>> m.y2 = Disjunct() + >>> m.y1.c1 = Constraint(expr=m.x1 >= 2) + >>> m.y1.c2 = Constraint(expr=m.x2 >= 2) + >>> m.y2.c1 = Constraint(expr=m.x1 >= 3) + >>> m.y2.c2 = Constraint(expr=m.x2 >= 3) + >>> m.djn = Disjunction(expr=[m.y1, m.y2]) + + Invoke the GDPopt-LBB solver + + >>> results = SolverFactory('gdpopt.lbb').solve(m) + WARNING: 09/06/22: The GDPopt LBB algorithm currently has known issues. Please + use the results with caution and report any bugs! + + >>> print(results) # doctest: +SKIP + >>> print(results.solver.status) + ok + >>> print(results.solver.termination_condition) + optimal + + >>> print([value(m.y1.indicator_var), value(m.y2.indicator_var)]) + [True, False] + +GDPopt implementation and optional arguments +-------------------------------------------- + +.. warning:: + + GDPopt optional arguments should be considered beta code and are + subject to change. + +.. autoclass:: pyomo.contrib.gdpopt.GDPopt.GDPoptSolver + :members: + +.. autoclass:: pyomo.contrib.gdpopt.loa.GDP_LOA_Solver + :members: + +.. autoclass:: pyomo.contrib.gdpopt.gloa.GDP_GLOA_Solver + :members: + +.. autoclass:: pyomo.contrib.gdpopt.ric.GDP_RIC_Solver + :members: + +.. autoclass:: pyomo.contrib.gdpopt.branch_and_bound.GDP_LBB_Solver + :members: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/gdpopt_flowchart.png b/doc/OnlineDocs/user_guide/contributed_packages/gdpopt_flowchart.png new file mode 100644 index 0000000000000000000000000000000000000000..5bd52426dd62e4d9f6de567b0eab71ebcdfb7f14 GIT binary patch literal 71538 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 literal 0 HcmV?d00001 diff --git a/doc/OnlineDocs/user_guide/contributed_packages/iis.rst b/doc/OnlineDocs/user_guide/contributed_packages/iis.rst new file mode 100644 index 00000000000..fa97c2f8c61 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/iis.rst @@ -0,0 +1,135 @@ +Infeasibility Diagnostics +!!!!!!!!!!!!!!!!!!!!!!!!! + +There are two closely related tools for infeasibility diagnosis: + + - :ref:`Infeasible Irreducible System (IIS) Tool` + - :ref:`Minimal Intractable System finder (MIS) Tool` + +The first simply provides a conduit for solvers that compute an +infeasible irreducible system (e.g., Cplex, Gurobi, or Xpress). The +second provides similar functionality, but uses the ``mis`` package +contributed to Pyomo. + + +Infeasible Irreducible System (IIS) Tool +======================================== + +.. automodule:: pyomo.contrib.iis.iis + +.. autofunction:: pyomo.contrib.iis.write_iis + +Minimal Intractable System finder (MIS) Tool +============================================ + +The file ``mis.py`` finds sets of actions that each, independently, +would result in feasibility. The zero-tolerance is whatever the +solver uses, so users may want to post-process output if it is going +to be used for analysis. It also computes a minimal intractable system +(which is not guaranteed to be unique). It was written by Ben Knueven +as part of the watertap project (https://github.com/watertap-org/watertap) +and is therefore governed by a license shown +at the top of ``mis.py``. + +The algorithms come from John Chinneck's slides, see: https://www.sce.carleton.ca/faculty/chinneck/docs/CPAIOR07InfeasibilityTutorial.pdf + +Solver +------ + +At the time of this writing, you need to use IPopt even for LPs. + +Quick Start +----------- + +The file ``trivial_mis.py`` is a tiny example listed at the bottom of +this help file, which references a Pyomo model with the Python variable +`m` and has these lines: + +.. code-block:: python + + from pyomo.contrib.mis import compute_infeasibility_explanation + ipopt = pyo.SolverFactory("ipopt") + compute_infeasibility_explanation(m, solver=ipopt) + +.. Note:: + This is done instead of solving the problem. + +.. Note:: + IDAES users can pass ``get_solver()`` imported from ``ideas.core.solvers`` + as the solver. + +Interpreting the Output +----------------------- + +Assuming the dependencies are installed, running ``trivial_mis.py`` +(shown below) will +produce a lot of warnings from IPopt and then meaningful output (using a logger). + +Repair Options +^^^^^^^^^^^^^^ + +This output for the trivial example shows three independent ways that the model could be rendered feasible: + + +.. code-block:: text + + Model Trivial Quad may be infeasible. A feasible solution was found with only the following variable bounds relaxed: + ub of var x[1] by 4.464126126706818e-05 + lb of var x[2] by 0.9999553410114216 + Another feasible solution was found with only the following variable bounds relaxed: + lb of var x[1] by 0.7071067726864677 + ub of var x[2] by 0.41421355687130673 + ub of var y by 0.7071067651855212 + Another feasible solution was found with only the following inequality constraints, equality constraints, and/or variable bounds relaxed: + constraint: c by 0.9999999861866736 + + +Minimal Intractable System (MIS) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +This output shows a minimal intractable system: + + +.. code-block:: text + + Computed Minimal Intractable System (MIS)! + Constraints / bounds in MIS: + lb of var x[2] + lb of var x[1] + constraint: c + +Constraints / bounds in guards for stability +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +This part of the report is for nonlinear programs (NLPs). + +When we’re trying to reduce the constraint set, for an NLP there may be constraints that when missing cause the solver +to fail in some catastrophic fashion. In this implementation this is interpreted as failing to get a `results` +object back from the call to `solve`. In these cases we keep the constraint in the problem but it’s in the +set of “guard” constraints – we can’t really be sure they’re a source of infeasibility or not, +just that “bad things” happen when they’re not included. + +Perhaps ideally we would put a constraint in the “guard” set if IPopt failed to converge, and only put it in the +MIS if IPopt converged to a point of local infeasibility. However, right now the code generally makes the +assumption that if IPopt fails to converge the subproblem is infeasible, though obviously that is far from the truth. +Hence for difficult NLPs even the “Phase 1” may “fail” – in that when finished the subproblem containing just the +constraints in the elastic filter may be feasible -- because IPopt failed to converge and we assumed that meant the +subproblem was not feasible. + +Dealing with NLPs is far from clean, but that doesn’t mean the tool can’t return useful results even when its assumptions are not satisfied. + +trivial_mis.py +-------------- + +.. code-block:: python + + import pyomo.environ as pyo + m = pyo.ConcreteModel("Trivial Quad") + m.x = pyo.Var([1,2], bounds=(0,1)) + m.y = pyo.Var(bounds=(0, 1)) + m.c = pyo.Constraint(expr=m.x[1] * m.x[2] == -1) + m.d = pyo.Constraint(expr=m.x[1] + m.y >= 1) + + from pyomo.contrib.mis import compute_infeasibility_explanation + ipopt = pyo.SolverFactory("ipopt") + compute_infeasibility_explanation(m, solver=ipopt) diff --git a/doc/OnlineDocs/user_guide/contributed_packages/incidence/api.rst b/doc/OnlineDocs/user_guide/contributed_packages/incidence/api.rst new file mode 100644 index 00000000000..38bf0be125b --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/incidence/api.rst @@ -0,0 +1,14 @@ +.. _incidence_api: + +API Reference +============= + +.. toctree:: + incidence.rst + config.rst + interface.rst + matching.rst + connected.rst + triangularize.rst + dulmage_mendelsohn.rst + scc_solver.rst diff --git a/doc/OnlineDocs/user_guide/contributed_packages/incidence/config.rst b/doc/OnlineDocs/user_guide/contributed_packages/incidence/config.rst new file mode 100644 index 00000000000..06e4f5c5626 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/incidence/config.rst @@ -0,0 +1,5 @@ +Incidence Options +================= + +.. automodule:: pyomo.contrib.incidence_analysis.config + :members: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/incidence/connected.rst b/doc/OnlineDocs/user_guide/contributed_packages/incidence/connected.rst new file mode 100644 index 00000000000..4cf60f62eba --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/incidence/connected.rst @@ -0,0 +1,5 @@ +Weakly Connected Components +=========================== + +.. automodule:: pyomo.contrib.incidence_analysis.connected + :members: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/incidence/dulmage_mendelsohn.rst b/doc/OnlineDocs/user_guide/contributed_packages/incidence/dulmage_mendelsohn.rst new file mode 100644 index 00000000000..6fe2bd59324 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/incidence/dulmage_mendelsohn.rst @@ -0,0 +1,5 @@ +Dulmage-Mendelsohn Partition +============================ + +.. automodule:: pyomo.contrib.incidence_analysis.dulmage_mendelsohn + :members: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/incidence/incidence.rst b/doc/OnlineDocs/user_guide/contributed_packages/incidence/incidence.rst new file mode 100644 index 00000000000..ebf481c00a7 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/incidence/incidence.rst @@ -0,0 +1,5 @@ +Incident Variables +================== + +.. automodule:: pyomo.contrib.incidence_analysis.incidence + :members: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/incidence/index.rst b/doc/OnlineDocs/user_guide/contributed_packages/incidence/index.rst new file mode 100644 index 00000000000..ab0e07f6abc --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/incidence/index.rst @@ -0,0 +1,19 @@ +Incidence Analysis +================== + +Tools for constructing and analyzing the incidence graph of variables +and constraints. + +This documentation contains the following resources: + +.. toctree:: + :maxdepth: 1 + + overview.rst + tutorial.rst + api.rst + +If you are wondering what Incidence Analysis is and would like to learn more, +please see :ref:`incidence_overview`. If you already know what +Incidence Analysis is and are here for reference, see :ref:`incidence_tutorial` +or :ref:`incidence_api` as needed. diff --git a/doc/OnlineDocs/user_guide/contributed_packages/incidence/interface.rst b/doc/OnlineDocs/user_guide/contributed_packages/incidence/interface.rst new file mode 100644 index 00000000000..29c92d8193c --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/incidence/interface.rst @@ -0,0 +1,5 @@ +Pyomo Interfaces +================ + +.. automodule:: pyomo.contrib.incidence_analysis.interface + :members: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/incidence/matching.rst b/doc/OnlineDocs/user_guide/contributed_packages/incidence/matching.rst new file mode 100644 index 00000000000..1941c7116cd --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/incidence/matching.rst @@ -0,0 +1,5 @@ +Maximum Matching +================ + +.. automodule:: pyomo.contrib.incidence_analysis.matching + :members: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/incidence/overview.rst b/doc/OnlineDocs/user_guide/contributed_packages/incidence/overview.rst new file mode 100644 index 00000000000..3a49ee2d258 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/incidence/overview.rst @@ -0,0 +1,50 @@ +.. _incidence_overview: + +Overview +======== + +What is Incidence Analysis? +--------------------------- + +A Pyomo extension for constructing the bipartite incidence graph of variables +and constraints, and an interface to useful algorithms for analyzing or +decomposing this graph. + +Why is Incidence Analysis useful? +--------------------------------- + +It can identify the source of certain types of singularities in a system of +variables and constraints. These singularities often violate assumptions made +while modeling a physical system or assumptions required for an optimization +solver to guarantee convergence. In particular, interior point methods used for +nonlinear local optimization require the Jacobian of equality constraints (and +active inequalities) to be full row rank, and this package implements the +Dulmage-Mendelsohn partition, which can be used to determine if this Jacobian +is structurally rank-deficient. + +Who develops and maintains Incidence Analysis? +---------------------------------------------- + +This extension was developed by Robert Parker while a PhD student in +Professor Biegler's lab at Carnegie Mellon University, with guidance +from Bethany Nicholson and John Siirola at Sandia. + +How can I cite Incidence Analysis? +---------------------------------- + +If you use Incidence Analysis in your research, we would appreciate you citing +the following paper: + +.. code-block:: bibtex + + @article{parker2023dulmage, + title = {Applications of the {Dulmage-Mendelsohn} decomposition for debugging nonlinear optimization problems}, + journal = {Computers \& Chemical Engineering}, + volume = {178}, + pages = {108383}, + year = {2023}, + issn = {0098-1354}, + doi = {https://doi.org/10.1016/j.compchemeng.2023.108383}, + url = {https://www.sciencedirect.com/science/article/pii/S0098135423002533}, + author = {Robert B. Parker and Bethany L. Nicholson and John D. Siirola and Lorenz T. Biegler}, + } diff --git a/doc/OnlineDocs/user_guide/contributed_packages/incidence/scc_solver.rst b/doc/OnlineDocs/user_guide/contributed_packages/incidence/scc_solver.rst new file mode 100644 index 00000000000..35f494af1a1 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/incidence/scc_solver.rst @@ -0,0 +1,5 @@ +Block Triangular Decomposition Solver +===================================== + +.. automodule:: pyomo.contrib.incidence_analysis.scc_solver + :members: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/incidence/triangularize.rst b/doc/OnlineDocs/user_guide/contributed_packages/incidence/triangularize.rst new file mode 100644 index 00000000000..a051086a859 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/incidence/triangularize.rst @@ -0,0 +1,5 @@ +Block Triangularization +======================= + +.. automodule:: pyomo.contrib.incidence_analysis.triangularize + :members: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/incidence/tutorial.bt.rst b/doc/OnlineDocs/user_guide/contributed_packages/incidence/tutorial.bt.rst new file mode 100644 index 00000000000..6710c0dbb50 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/incidence/tutorial.bt.rst @@ -0,0 +1,107 @@ +Debugging a numeric singularity using block triangularization +============================================================= + +We start with some imports. To debug a *numeric* singularity, we will need +``PyomoNLP`` from :ref:`pynumero` to get the constraint Jacobian, +and will need NumPy to compute condition numbers. + +.. doctest:: + :skipif: not scipy_available or not asl_available or not networkx_available + + >>> import pyomo.environ as pyo + >>> from pyomo.contrib.pynumero.interfaces.pyomo_nlp import PyomoNLP + >>> from pyomo.contrib.incidence_analysis import IncidenceGraphInterface + >>> import numpy as np + +We now build the model we would like to debug. Compared to the model in +:ref:`incidence_tutorial_dm`, we have converted the sum equation to use a sum +over component flow rates rather than a sum over mass fractions. + +.. doctest:: + :skipif: not scipy_available or not asl_available or not networkx_available + + >>> m = pyo.ConcreteModel() + >>> m.components = pyo.Set(initialize=[1, 2, 3]) + >>> m.x = pyo.Var(m.components, initialize=1.0/3.0) + >>> m.flow_comp = pyo.Var(m.components, initialize=10.0) + >>> m.flow = pyo.Var(initialize=30.0) + >>> m.density = pyo.Var(initialize=1.0) + >>> # This equation is new! + >>> m.sum_flow_eqn = pyo.Constraint( + ... expr=sum(m.flow_comp[j] for j in m.components) == m.flow + ... ) + >>> m.holdup_eqn = pyo.Constraint(m.components, expr={ + ... j: m.x[j]*m.density - 1 == 0 for j in m.components + ... }) + >>> m.density_eqn = pyo.Constraint( + ... expr=1/m.density - sum(1/m.x[j] for j in m.components) == 0 + ... ) + >>> m.flow_eqn = pyo.Constraint(m.components, expr={ + ... j: m.x[j]*m.flow - m.flow_comp[j] == 0 for j in m.components + ... }) + +We now construct the incidence graph and check unmatched variables and +constraints to validate structural nonsingularity. + +.. doctest:: + :skipif: not scipy_available or not asl_available or not networkx_available + + >>> igraph = IncidenceGraphInterface(m, include_inequality=False) + >>> var_dmp, con_dmp = igraph.dulmage_mendelsohn() + >>> print(len(var_dmp.unmatched)) + 0 + >>> print(len(con_dmp.unmatched)) + 0 + +Our system is structurally nonsingular. Now we check whether we are numerically +nonsingular (well-conditioned) by checking the condition number. +Admittedly, deciding if a matrix is "singular" by looking at its condition +number is somewhat of an art. We might define "numerically singular" as having a +condition number greater than the inverse of machine precision (approximately +``1e16``), but poorly conditioned matrices can cause problems even if they don't +meet this definition. Here we use ``1e10`` as a somewhat arbitrary condition +number threshold to indicate a problem in our system. + +.. doctest:: + :skipif: not scipy_available or not asl_available or not networkx_available + + >>> # PyomoNLP requires exactly one objective function + >>> m._obj = pyo.Objective(expr=0.0) + >>> nlp = PyomoNLP(m) + >>> cond_threshold = 1e10 + >>> cond = np.linalg.cond(nlp.evaluate_jacobian_eq().toarray()) + >>> print(cond > cond_threshold) + True + +The system is poorly conditioned. Now we can check diagonal blocks of a block +triangularization to determine which blocks are causing the poor conditioning. + +.. code-block:: python + + >>> var_blocks, con_blocks = igraph.block_triangularize() + >>> for i, (vblock, cblock) in enumerate(zip(var_blocks, con_blocks)): + ... submatrix = nlp.extract_submatrix_jacobian(vblock, cblock) + ... cond = np.linalg.cond(submatrix.toarray()) + ... print(f"block {i}: {cond}") + ... if cond > cond_threshold: + ... for var in vblock: + ... print(f" {var.name}") + ... for con in cblock: + ... print(f" {con.name}") + block 0: 24.492504515710433 + block 1: 1.2480741394486336e+17 + flow + flow_comp[1] + flow_comp[2] + flow_comp[3] + sum_flow_eqn + flow_eqn[1] + flow_eqn[2] + flow_eqn[3] + +We see that the second block is causing the singularity, and that this block +contains the sum equation that we modified for this example. This suggests that +converting this equation to sum over flow rates rather than mass fractions just +converted a structural singularity to a numeric singularity, and didn't really +solve our problem. To see a fix that *does* resolve the singularity, see +:ref:`incidence_tutorial_dm`. diff --git a/doc/OnlineDocs/user_guide/contributed_packages/incidence/tutorial.btsolve.rst b/doc/OnlineDocs/user_guide/contributed_packages/incidence/tutorial.btsolve.rst new file mode 100644 index 00000000000..1ff0b6c5afe --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/incidence/tutorial.btsolve.rst @@ -0,0 +1,72 @@ +Solving a square system with a block triangular decomposition +============================================================= + +We start with imports. The key function from Incidence Analysis we will use is +``solve_strongly_connected_components``. + +.. doctest:: + :skipif: not networkx_available or not scipy_available or not asl_available + + >>> import pyomo.environ as pyo + >>> from pyomo.contrib.incidence_analysis import ( + ... solve_strongly_connected_components + ... ) + +Now we construct the model we would like to solve. This is a model with the +same structure as the "fixed model" in :ref:`incidence_tutorial_dm`. + +.. doctest:: + :skipif: not networkx_available or not scipy_available or not asl_available + + >>> m = pyo.ConcreteModel() + >>> m.components = pyo.Set(initialize=[1, 2, 3]) + >>> m.x = pyo.Var(m.components, initialize=1.0/3.0) + >>> m.flow_comp = pyo.Var(m.components, initialize=10.0) + >>> m.flow = pyo.Var(initialize=30.0) + >>> m.dens_bulk = pyo.Var(initialize=1.0) + >>> m.dens_skel = pyo.Var(initialize=1.0) + >>> m.porosity = pyo.Var(initialize=0.25) + >>> m.velocity = pyo.Param(initialize=1.0) + >>> m.holdup = pyo.Param( + ... m.components, initialize={j: 1.0+j/10.0 for j in m.components} + ... ) + >>> m.sum_eqn = pyo.Constraint( + ... expr=sum(m.x[j] for j in m.components) - 1 == 0 + ... ) + >>> m.holdup_eqn = pyo.Constraint(m.components, expr={ + ... j: m.x[j]*m.dens_bulk - m.holdup[j] == 0 for j in m.components + ... }) + >>> m.dens_skel_eqn = pyo.Constraint( + ... expr=1/m.dens_skel - sum(1e-3/m.x[j] for j in m.components) == 0 + ... ) + >>> m.dens_bulk_eqn = pyo.Constraint( + ... expr=m.dens_bulk == (1 - m.porosity)*m.dens_skel + ... ) + >>> m.flow_eqn = pyo.Constraint(m.components, expr={ + ... j: m.x[j]*m.flow - m.flow_comp[j] == 0 for j in m.components + ... }) + >>> m.flow_dens_eqn = pyo.Constraint( + ... expr=m.flow == m.velocity*m.dens_bulk + ... ) + +Solving via a block triangular decomposition is useful in cases where the full +model does not converge when considered simultaneously by a Newton solver. +In this case, we specify a solver to use for the diagonal blocks and call +``solve_strongly_connected_components``. + +.. doctest:: + :skipif: not networkx_available or not scipy_available or not asl_available + + >>> # Suppose a solve like this does not converge + >>> # pyo.SolverFactory("scipy.fsolve").solve(m) + + >>> # We solve via block-triangular decomposition + >>> solver = pyo.SolverFactory("scipy.fsolve") + >>> res_list = solve_strongly_connected_components(m, solver=solver) + +We can now display the variable values at the solution: + +.. code-block:: python + + for var in m.component_objects(pyo.Var): + var.pprint() diff --git a/doc/OnlineDocs/user_guide/contributed_packages/incidence/tutorial.dm.rst b/doc/OnlineDocs/user_guide/contributed_packages/incidence/tutorial.dm.rst new file mode 100644 index 00000000000..c14861e9fc8 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/incidence/tutorial.dm.rst @@ -0,0 +1,191 @@ +.. _incidence_tutorial_dm: + +Debugging a structural singularity with the Dulmage-Mendelsohn partition +======================================================================== + +We start with some imports and by creating a Pyomo model we would like +to debug. Usually the model is much larger and more complicated than this. +This particular system appeared when debugging a dynamic 1-D partial +differential-algebraic equation (PDAE) model representing a chemical looping +combustion reactor. + +.. doctest:: + :skipif: not scipy_available or not networkx_available or not asl_available + + >>> import pyomo.environ as pyo + >>> from pyomo.contrib.incidence_analysis import IncidenceGraphInterface + + >>> m = pyo.ConcreteModel() + >>> m.components = pyo.Set(initialize=[1, 2, 3]) + >>> m.x = pyo.Var(m.components, initialize=1.0/3.0) + >>> m.flow_comp = pyo.Var(m.components, initialize=10.0) + >>> m.flow = pyo.Var(initialize=30.0) + >>> m.density = pyo.Var(initialize=1.0) + >>> m.sum_eqn = pyo.Constraint( + ... expr=sum(m.x[j] for j in m.components) - 1 == 0 + ... ) + >>> m.holdup_eqn = pyo.Constraint(m.components, expr={ + ... j: m.x[j]*m.density - 1 == 0 for j in m.components + ... }) + >>> m.density_eqn = pyo.Constraint( + ... expr=1/m.density - sum(1/m.x[j] for j in m.components) == 0 + ... ) + >>> m.flow_eqn = pyo.Constraint(m.components, expr={ + ... j: m.x[j]*m.flow - m.flow_comp[j] == 0 for j in m.components + ... }) + +To check this model for structural singularity, we apply the Dulmage-Mendelsohn +partition. ``var_dm_partition`` and ``con_dm_partition`` are named tuples +with fields for each of the four subsets defined by the partition: +``unmatched``, ``overconstrained``, ``square``, and ``underconstrained``. + +.. doctest:: + :skipif: not scipy_available or not networkx_available or not asl_available + + >>> igraph = IncidenceGraphInterface(m) + >>> # Make sure we have a square system + >>> print(len(igraph.variables)) + 8 + >>> print(len(igraph.constraints)) + 8 + >>> var_dm_partition, con_dm_partition = igraph.dulmage_mendelsohn() + +If any variables or constraints are unmatched, the (Jacobian of the) model +is structurally singular. + +.. code-block:: python + + >>> # Note that the unmatched variables/constraints are not mathematically + >>> # unique and could change with implementation! + >>> for var in var_dm_partition.unmatched: + ... print(var.name) + flow_comp[1] + >>> for con in con_dm_partition.unmatched: + ... print(con.name) + density_eqn + +This model has one unmatched constraint and one unmatched variable, so it is +structurally singular. However, the unmatched variable and constraint are not +unique. For example, ``flow_comp[2]`` could have been unmatched instead of +``flow_comp[1]``. The exact variables and constraints that are unmatched depends +on both the order in which variables are identified in Pyomo expressions and +the implementation of the matching algorithm. For a given implementation, +however, these variables and constraints should be deterministic. + +Unique subsets of variables and constraints that are useful when debugging a +structural singularity are the underconstrained and overconstrained subsystems. +The variables in the underconstrained subsystem are contained in the +``unmatched`` and ``underconstrained`` fields of the ``var_dm_partition`` named tuple, +while the constraints are contained in the ``underconstrained`` field of the +``con_dm_partition`` named tuple. +The variables in the overconstrained subsystem are contained in the +``overconstrained`` field of the ``var_dm_partition`` named tuple, while the constraints +are contained in the ``overconstrained`` and ``unmatched`` fields of the +``con_dm_partition`` named tuple. + +We now construct the underconstrained and overconstrained subsystems: + +.. doctest:: + :skipif: not scipy_available or not networkx_available or not asl_available + + >>> uc_var = var_dm_partition.unmatched + var_dm_partition.underconstrained + >>> uc_con = con_dm_partition.underconstrained + >>> oc_var = var_dm_partition.overconstrained + >>> oc_con = con_dm_partition.overconstrained + con_dm_partition.unmatched + +And display the variables and constraints contained in each: + +.. code-block:: python + + >>> # Note that while these variables/constraints are uniquely determined, + >>> # their order is not! + + >>> # Overconstrained subsystem + >>> for var in oc_var: + >>> print(var.name) + x[1] + density + x[2] + x[3] + >>> for con in oc_con: + >>> print(con.name) + sum_eqn + holdup_eqn[1] + holdup_eqn[2] + holdup_eqn[3] + density_eqn + + >>> # Underconstrained subsystem + >>> for var in uc_var: + >>> print(var.name) + flow_comp[1] + flow + flow_comp[2] + flow_comp[3] + >>> for con in uc_con: + >>> print(con.name) + flow_eqn[1] + flow_eqn[2] + flow_eqn[3] + +At this point we must use our intuition about the system being modeled to +identify "what is causing" the singularity. Looking at the under and over- +constrained systems, it appears that we are missing an equation to calculate +``flow``, the total flow rate, and that ``density`` is over-specified as it +is computed by both the bulk density equation and one of the component density +equations. + +With this knowledge, we can eventually figure out (a) that we need an equation +to calculate ``flow`` from density and (b) that our "bulk density equation" +is actually a *skeletal* density equation. Admittedly, this is difficult to +figure out without the full context behind this particular system. + +The following code constructs a new version of the model and verifies that it +is structurally nonsingular: + +.. doctest:: + :skipif: not scipy_available or not networkx_available or not asl_available + + >>> import pyomo.environ as pyo + >>> from pyomo.contrib.incidence_analysis import IncidenceGraphInterface + + >>> m = pyo.ConcreteModel() + >>> m.components = pyo.Set(initialize=[1, 2, 3]) + >>> m.x = pyo.Var(m.components, initialize=1.0/3.0) + >>> m.flow_comp = pyo.Var(m.components, initialize=10.0) + >>> m.flow = pyo.Var(initialize=30.0) + >>> m.dens_bulk = pyo.Var(initialize=1.0) + >>> m.dens_skel = pyo.Var(initialize=1.0) + >>> m.porosity = pyo.Var(initialize=0.25) + >>> m.velocity = pyo.Param(initialize=1.0) + >>> m.sum_eqn = pyo.Constraint( + ... expr=sum(m.x[j] for j in m.components) - 1 == 0 + ... ) + >>> m.holdup_eqn = pyo.Constraint(m.components, expr={ + ... j: m.x[j]*m.dens_bulk - 1 == 0 for j in m.components + ... }) + >>> m.dens_skel_eqn = pyo.Constraint( + ... expr=1/m.dens_skel - sum(1/m.x[j] for j in m.components) == 0 + ... ) + >>> m.dens_bulk_eqn = pyo.Constraint( + ... expr=m.dens_bulk == (1 - m.porosity)*m.dens_skel + ... ) + >>> m.flow_eqn = pyo.Constraint(m.components, expr={ + ... j: m.x[j]*m.flow - m.flow_comp[j] == 0 for j in m.components + ... }) + >>> m.flow_dens_eqn = pyo.Constraint( + ... expr=m.flow == m.velocity*m.dens_bulk + ... ) + + >>> igraph = IncidenceGraphInterface(m, include_inequality=False) + >>> print(len(igraph.variables)) + 10 + >>> print(len(igraph.constraints)) + 10 + >>> var_dm_partition, con_dm_partition = igraph.dulmage_mendelsohn() + + >>> # There are now no unmatched variables or equations + >>> print(len(var_dm_partition.unmatched)) + 0 + >>> print(len(con_dm_partition.unmatched)) + 0 diff --git a/doc/OnlineDocs/user_guide/contributed_packages/incidence/tutorial.rst b/doc/OnlineDocs/user_guide/contributed_packages/incidence/tutorial.rst new file mode 100644 index 00000000000..4b22fc16c53 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/incidence/tutorial.rst @@ -0,0 +1,14 @@ +.. _incidence_tutorial: + +Incidence Analysis Tutorial +=========================== + +This tutorial walks through examples of the most common use cases for +Incidence Analysis: + +.. toctree:: + :maxdepth: 1 + + tutorial.dm.rst + tutorial.bt.rst + tutorial.btsolve.rst diff --git a/doc/OnlineDocs/user_guide/contributed_packages/index.rst b/doc/OnlineDocs/user_guide/contributed_packages/index.rst new file mode 100644 index 00000000000..b1d9cbbad3b --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/index.rst @@ -0,0 +1,46 @@ +Third-Party Contributions +========================= + +Pyomo includes a variety of additional features and functionality +provided by third parties through the ``pyomo.contrib`` package. This +package includes both contributions included with the main Pyomo +distribution and wrappers for third-party packages that must be +installed separately. + +These packages are maintained by the original contributors and are +managed as *optional* Pyomo packages. + +Contributed packages distributed with Pyomo: + +.. toctree:: + :maxdepth: 1 + + community.rst + doe/doe.rst + gdpopt.rst + iis.rst + incidence/index.rst + latex_printer.rst + mindtpy.rst + mpc/index.rst + multistart.rst + preprocessing.rst + parmest/index.rst + pynumero/index.rst + pyros.rst + sensitivity_toolbox.rst + trustregion.rst + +Contributed Pyomo interfaces to other packages: + +.. toctree:: + :maxdepth: 1 + + mcpp.rst + satsolver.rst + + +Contributed packages distributed independently of Pyomo, but accessible +through ``pyomo.contrib``: + +* `pyomo.contrib.simplemodel `_ diff --git a/doc/OnlineDocs/user_guide/contributed_packages/latex_printer.rst b/doc/OnlineDocs/user_guide/contributed_packages/latex_printer.rst new file mode 100644 index 00000000000..ff3f628c0c8 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/latex_printer.rst @@ -0,0 +1,127 @@ +Latex Printing +============== + +Pyomo models can be printed to a LaTeX compatible format using the ``pyomo.contrib.latex_printer.latex_printer`` function: + +.. autofunction:: pyomo.contrib.latex_printer.latex_printer.latex_printer + +.. note:: + + If operating in a Jupyter Notebook, it may be helpful to use: + + ``from IPython.display import display, Math`` + + ``display(Math(latex_printer(m))`` + +Examples +-------- + +A Model ++++++++ + +.. doctest:: + + >>> import pyomo.environ as pyo + >>> from pyomo.contrib.latex_printer import latex_printer + + >>> m = pyo.ConcreteModel(name = 'basicFormulation') + >>> m.x = pyo.Var() + >>> m.y = pyo.Var() + >>> m.z = pyo.Var() + >>> m.c = pyo.Param(initialize=1.0, mutable=True) + >>> m.objective = pyo.Objective( expr = m.x + m.y + m.z ) + >>> m.constraint_1 = pyo.Constraint(expr = m.x**2 + m.y**2.0 - m.z**2.0 <= m.c ) + + >>> pstr = latex_printer(m) + + +A Constraint +++++++++++++ + +.. doctest:: + + >>> import pyomo.environ as pyo + >>> from pyomo.contrib.latex_printer import latex_printer + + >>> m = pyo.ConcreteModel(name = 'basicFormulation') + >>> m.x = pyo.Var() + >>> m.y = pyo.Var() + + >>> m.constraint_1 = pyo.Constraint(expr = m.x**2 + m.y**2 <= 1.0) + + >>> pstr = latex_printer(m.constraint_1) + +A Constraint with Set Summation ++++++++++++++++++++++++++++++++ + +.. doctest:: + + >>> import pyomo.environ as pyo + >>> from pyomo.contrib.latex_printer import latex_printer + >>> m = pyo.ConcreteModel(name='basicFormulation') + >>> m.I = pyo.Set(initialize=[1, 2, 3, 4, 5]) + >>> m.v = pyo.Var(m.I) + + >>> def ruleMaker(m): return sum(m.v[i] for i in m.I) <= 0 + + >>> m.constraint = pyo.Constraint(rule=ruleMaker) + + >>> pstr = latex_printer(m.constraint) + +Using a ComponentMap to Specify Names ++++++++++++++++++++++++++++++++++++++ + +.. doctest:: + + >>> import pyomo.environ as pyo + >>> from pyomo.contrib.latex_printer import latex_printer + >>> from pyomo.common.collections.component_map import ComponentMap + + >>> m = pyo.ConcreteModel(name='basicFormulation') + >>> m.I = pyo.Set(initialize=[1, 2, 3, 4, 5]) + >>> m.v = pyo.Var(m.I) + + >>> def ruleMaker(m): return sum(m.v[i] for i in m.I) <= 0 + + >>> m.constraint = pyo.Constraint(rule=ruleMaker) + + >>> lcm = ComponentMap() + >>> lcm[m.v] = 'x' + >>> lcm[m.I] = ['\\mathcal{A}',['j','k']] + + >>> pstr = latex_printer(m.constraint, latex_component_map=lcm) + + +An Expression ++++++++++++++ + +.. doctest:: + + >>> import pyomo.environ as pyo + >>> from pyomo.contrib.latex_printer import latex_printer + + >>> m = pyo.ConcreteModel(name = 'basicFormulation') + >>> m.x = pyo.Var() + >>> m.y = pyo.Var() + + >>> m.expression_1 = pyo.Expression(expr = m.x**2 + m.y**2) + + >>> pstr = latex_printer(m.expression_1) + + +A Simple Expression ++++++++++++++++++++ + +.. doctest:: + + >>> import pyomo.environ as pyo + >>> from pyomo.contrib.latex_printer import latex_printer + + >>> m = pyo.ConcreteModel(name = 'basicFormulation') + >>> m.x = pyo.Var() + >>> m.y = pyo.Var() + + >>> pstr = latex_printer(m.x + m.y) + + + diff --git a/doc/OnlineDocs/user_guide/contributed_packages/mcpp.rst b/doc/OnlineDocs/user_guide/contributed_packages/mcpp.rst new file mode 100644 index 00000000000..18cea7f9b20 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/mcpp.rst @@ -0,0 +1,62 @@ +MC++ Interface +============== + +The Pyomo-MC++ interface allows for bounding of factorable functions using the MC++ library developed by +the OMEGA research group at Imperial College London. +Documentation for MC++ may be found on the `MC++ website`_. + +.. _MC++ website: https://github.com/omega-icl/mcpp + + +Default Installation +-------------------- +Pyomo now supports automated downloading and compilation of MC++. +To install MC++ and other third party compiled extensions, run: + +.. code:: + + pyomo download-extensions + pyomo build-extensions + +To get and install just MC++, run the following commands in the ``pyomo/contrib/mcpp`` directory: + +.. code:: + + python getMCPP.py + python build.py + +This should install MC++ to the pyomo plugins directory, by default located at ``$HOME/.pyomo/``. + + +Manual Installation +------------------- + +Support for MC++ has only been validated by Pyomo developers using Linux and OSX. +Installation instructions for the MC++ library may be found on the `MC++ website`_. + +We assume that you have installed MC++ into a directory of your choice. +We will denote this directory by ``$MCPP_PATH``. +For example, you should see that the file ``$MCPP_PATH/INSTALL`` exists. + +Navigate to the ``pyomo/contrib/mcpp`` directory in your pyomo installation. +This directory should contain a file named ``mcppInterface.cpp``. +You will need to compile this file using the following command: + +.. code:: + + g++ -I $MCPP_PATH/src/3rdparty/fadbad++ -I $MCPP_PATH/src/mc -I /usr/include/python3.7 -fPIC -O2 -c mcppInterface.cpp + +This links the MC++ required library FADBAD++, MC++ itself, and Python to compile the Pyomo-MC++ interface. +If successful, you will now have a file named ``mcppInterface.o`` in your working directory. +If you are not using Python 3.7, you will need to link to the appropriate Python version. +You now need to create a shared object file with the following command: + +.. code:: + + g++ -shared mcppInterface.o -o mcppInterface.so + +You may then test your installation by running the test file: + +.. code:: + + python test_mcpp.py diff --git a/doc/OnlineDocs/user_guide/contributed_packages/mindtpy.rst b/doc/OnlineDocs/user_guide/contributed_packages/mindtpy.rst new file mode 100644 index 00000000000..a850a42c740 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/mindtpy.rst @@ -0,0 +1,319 @@ +MindtPy Solver +============== + +The Mixed-Integer Nonlinear Decomposition Toolbox in Pyomo (MindtPy) solver +allows users to solve Mixed-Integer Nonlinear Programs (MINLP) using decomposition algorithms. +These decomposition algorithms usually rely on the solution of Mixed-Integer Linear Programs +(MILP) and Nonlinear Programs (NLP). + +The following algorithms are currently available in MindtPy: + +- **Outer-Approximation (OA)** [`Duran & Grossmann, 1986`_] +- **LP/NLP based Branch-and-Bound (LP/NLP BB)** [`Quesada & Grossmann, 1992`_] +- **Extended Cutting Plane (ECP)** [`Westerlund & Petterson, 1995`_] +- **Global Outer-Approximation (GOA)** [`Kesavan & Allgor, 2004`_, `MC++`_] +- **Regularized Outer-Approximation (ROA)** [`Bernal & Peng, 2021`_, `Kronqvist & Bernal, 2018`_] +- **Feasibility Pump (FP)** [`Bernal & Vigerske, 2019`_, `Bonami & Cornuéjols, 2009`_] + +Usage and early implementation details for MindtPy can be found in the PSE 2018 paper Bernal et al., +(`ref `_, +`preprint `_). +This solver implementation has been developed by `David Bernal `_ +and `Zedong Peng `_ as part of research efforts at the `Bernal Research Group +`_ and the `Grossmann Research Group `_ +at Purdue University and Carnegie Mellon University. + +.. _Duran & Grossmann, 1986: https://dx.doi.org/10.1007/BF02592064 +.. _Westerlund & Petterson, 1995: http://dx.doi.org/10.1016/0098-1354(95)87027-X +.. _Kesavan & Allgor, 2004: https://link.springer.com/article/10.1007/s10107-004-0503-1 +.. _MC++: https://pyomo.readthedocs.io/en/stable/contributed_packages/mcpp.html +.. _Bernal & Peng, 2021: http://www.optimization-online.org/DB_HTML/2021/06/8452.html +.. _Kronqvist & Bernal, 2018: https://link.springer.com/article/10.1007%2Fs10107-018-1356-3 +.. _Bonami & Cornuéjols, 2009: https://link.springer.com/article/10.1007/s10107-008-0212-2 +.. _Bernal & Vigerske, 2019: https://www.tandfonline.com/doi/abs/10.1080/10556788.2019.1641498 +.. _Kronqvist et al., 2019: https://link.springer.com/article/10.1007/s11081-018-9411-8 + +MINLP Formulation +----------------- + +The general formulation of the mixed integer nonlinear programming (MINLP) models is as follows. + +.. math:: + :nowrap: + + \begin{equation} + \label{eq:MINLP} + \tag{MINLP} + \begin{aligned} + &\min_{\mathbf{x,y}} &&f(\mathbf{x,y})\\ + & \text{s.t.} \ &&g_j(\mathbf{x,y}) \leq 0 \quad \ \forall j=1,\dots l,\\ + & &&\mathbf{A}\mathbf{x} +\mathbf{B}\mathbf{y} \leq \mathbf{b}, \\ + & &&\mathbf{x}\in {\mathbb R}^n,\ \mathbf{y} \in {\mathbb Z}^m. + \end{aligned} + \end{equation} + +where + +- :math:`\mathbf{x}\in {\mathbb R}^n` are continuous variables, +- :math:`\mathbf{y} \in {\mathbb Z}^m` are discrete variables, +- :math:`f, g_1, \dots, g_l` are non-linear smooth functions, +- :math:`\mathbf{A}\mathbf{x} +\mathbf{B}\mathbf{y} \leq \mathbf{b}`` are linear constraints. + +Solve Convex MINLPs +------------------- + +Usage of MindtPy to solve a convex MINLP Pyomo model involves: + +.. code:: + + >>> SolverFactory('mindtpy').solve(model) + +An example which includes the modeling approach may be found below. + +.. doctest:: + + Required imports + >>> from pyomo.environ import * + + Create a simple model + >>> model = ConcreteModel() + + >>> model.x = Var(bounds=(1.0,10.0),initialize=5.0) + >>> model.y = Var(within=Binary) + + >>> model.c1 = Constraint(expr=(model.x-4.0)**2 - model.x <= 50.0*(1-model.y)) + >>> model.c2 = Constraint(expr=model.x*log(model.x)+5.0 <= 50.0*(model.y)) + + >>> model.objective = Objective(expr=model.x, sense=minimize) + + Solve the model using MindtPy + >>> SolverFactory('mindtpy').solve(model, mip_solver='glpk', nlp_solver='ipopt') # doctest: +SKIP + +The solution may then be displayed by using the commands + +.. code:: + + >>> model.objective.display() + >>> model.display() + >>> model.pprint() + +.. note:: + + When troubleshooting, it can often be helpful to turn on verbose + output using the ``tee`` flag. + +.. code:: + + >>> SolverFactory('mindtpy').solve(model, mip_solver='glpk', nlp_solver='ipopt', tee=True) + +MindtPy also supports setting options for mip solvers and nlp solvers. + +.. code:: + + >>> SolverFactory('mindtpy').solve(model, + strategy='OA', + time_limit=3600, + mip_solver='gams', + mip_solver_args=dict(solver='cplex', warmstart=True), + nlp_solver='ipopt', + tee=True) + +There are three initialization strategies in MindtPy: ``rNLP``, ``initial_binary``, ``max_binary``. In OA and GOA strategies, the default initialization strategy is ``rNLP``. In ECP strategy, the default initialization strategy is ``max_binary``. + +LP/NLP Based Branch-and-Bound +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +MindtPy also supports single-tree implementation of Outer-Approximation (OA) algorithm, which is known as LP/NLP based branch-and-bound algorithm originally described in [`Quesada & Grossmann, 1992`_]. +The LP/NLP based branch-and-bound algorithm in MindtPy is implemented based on the LazyConstraintCallback function in commercial solvers. + +.. _Quesada & Grossmann, 1992: https://www.sciencedirect.com/science/article/abs/pii/0098135492800288 + +.. note:: + + In Pyomo, `persistent solvers`_ are necessary to set or register callback functions. The single tree implementation currently only works with CPLEX and GUROBI, more exactly ``cplex_persistent`` and ``gurobi_persistent``. To use the `LazyConstraintCallback`_ function of CPLEX from Pyomo, the `CPLEX Python API`_ is required. This means both IBM ILOG CPLEX Optimization Studio and the CPLEX-Python modules should be installed on your computer. To use the `cbLazy`_ function of GUROBI from pyomo, `gurobipy`_ is required. + +.. _`persistent solvers`: https://pyomo.readthedocs.io/en/stable/advanced_topics/persistent_solvers.html?highlight=persistent +.. _CPLEX Python API: https://www.ibm.com/docs/en/icos/20.1.0?topic=cplex-setting-up-python-api +.. _gurobipy: https://www.gurobi.com/documentation/9.1/quickstart_mac/cs_grbpy_the_gurobi_python.html +.. _LazyConstraintCallback: https://www.ibm.com/docs/en/icos/20.1.0?topic=classes-cplexcallbackslazyconstraintcallback +.. _cbLazy: https://www.gurobi.com/documentation/9.1/refman/py_model_cblazy.html + +A usage example for LP/NLP based branch-and-bound algorithm is as follows: + +.. code:: + + >>> pyo.SolverFactory('mindtpy').solve(model, + ... strategy='OA', + ... mip_solver='cplex_persistent', # or 'gurobi_persistent' + ... nlp_solver='ipopt', + ... single_tree=True) + >>> model.objective.display() + + +Regularized Outer-Approximation +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +As a new implementation in MindtPy, we provide a flexible regularization technique implementation. In this technique, an extra mixed-integer problem is solved in each decomposition iteration or incumbent solution of the single-tree solution methods. The extra mixed-integer program is constructed to provide a point where the NLP problem is solved closer to the feasible region described by the non-linear constraint. This approach has been proposed in [`Kronqvist et al., 2020`_], and it has shown to be efficient for highly non-linear convex MINLP problems. In [`Kronqvist et al., 2020`_], two different regularization approaches are proposed, using a squared Euclidean norm which was proved to make the procedure equivalent to adding a trust-region constraint to Outer-approximation, and a second-order approximation of the Lagrangian of the problem, which showed better performance. We implement these methods, using PyomoNLP as the interface to compute the second-order approximation of the Lagrangian, and extend them to consider linear norm objectives and first-order approximations of the Lagrangian. Finally, we implemented an approximated second-order expansion of the Lagrangian, drawing inspiration from the Sequential Quadratic Programming (SQP) literature. The details of this implementation are included in [`Bernal et al., 2021`_]. + +.. _Kronqvist et al., 2020: https://link.springer.com/article/10.1007/s10107-018-1356-3 +.. _Bernal et al., 2021: http://www.optimization-online.org/DB_HTML/2021/06/8452.html + +A usage example for regularized OA is as follows: + +.. code:: + + >>> pyo.SolverFactory('mindtpy').solve(model, + ... strategy='OA', + ... mip_solver='cplex', + ... nlp_solver='ipopt', + ... add_regularization='level_L1' + ... # alternative regularizations + ... # 'level_L1', 'level_L2', 'level_L_infinity', + ... # 'grad_lag', 'hess_lag', 'hess_only_lag', 'sqp_lag' + ... ) + >>> model.objective.display() + + +Solution Pool Implementation +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +MindtPy supports solution pool of the MILP solver, CPLEX and GUROBI. With the help of the solution, MindtPy can explore several integer combinations in one iteration. + +A usage example for OA with solution pool is as follows: + +.. code:: + + >>> pyo.SolverFactory('mindtpy').solve(model, + ... strategy='OA', + ... mip_solver='cplex_persistent', + ... nlp_solver='ipopt', + ... solution_pool=True, + ... num_solution_iteration=10, # default=5 + ... tee=True + ... ) + >>> model.objective.display() + +Feasibility Pump +^^^^^^^^^^^^^^^^ + +For some MINLP problems, the Outer Approximation method might have difficulty in finding a feasible solution. MindtPy provides the Feasibility Pump implementation to find feasible solutions for convex MINLPs quickly. The main idea of the Feasibility Pump is to decompose the original mixed-integer problem into two parts: integer feasibility and constraint feasibility. For convex MINLPs, a MIP is solved to obtain a solution, which satisfies the integrality constraints on `y`, but may violate some of the nonlinear constraints; next, by solving an NLP, a solution is computed that satisfies the nonlinear constraints but might again violate the integrality constraints on `y`. By minimizing the distance between these two types of solutions iteratively, a constraint and integer feasible solution can be expected. In MindtPy, the Feasibility Pump can be used both as an initialization strategy and a decomposition strategy. For details of this implementation are included in [`Bernal et al., 2017`_]. + +.. _Bernal et al., 2017: http://www.optimization-online.org/DB_HTML/2017/08/6171.html + +A usage example for Feasibility Pump as the initialization strategy is as follows: + +.. code:: + + >>> pyo.SolverFactory('mindtpy').solve(model, + ... strategy='OA', + ... init_strategy='FP', + ... mip_solver='cplex', + ... nlp_solver='ipopt', + ... tee=True + ... ) + >>> model.objective.display() + +A usage example for Feasibility Pump as the decomposition strategy is as follows: + +.. code:: + + >>> pyo.SolverFactory('mindtpy').solve(model, + ... strategy='FP', + ... mip_solver='cplex', + ... nlp_solver='ipopt', + ... tee=True + ... ) + >>> model.objective.display() + + + +Solve Nonconvex MINLPs +---------------------- + + +Equality Relaxation +^^^^^^^^^^^^^^^^^^^ + +Under certain assumptions concerning the convexity of the nonlinear functions, an equality constraint can be relaxed to be an inequality constraint. This property can be used in the MIP master problem to accumulate linear approximations(OA cuts). The sense of the equivalent inequality constraint is based on the sign of the dual values of the equality constraint. Therefore, the sense of the OA cuts for equality constraint should be determined according to both the objective sense and the sign of the dual values. In MindtPy, the dual value of the equality constraint is calculated as follows. + ++--------------------+-----------------------+-------------------------+ +| constraint | status at :math:`x_1` | dual values | ++====================+=======================+=========================+ +| :math:`g(x) \le b` | :math:`g(x_1) \le b` | 0 | ++--------------------+-----------------------+-------------------------+ +| :math:`g(x) \le b` | :math:`g(x_1) > b` | :math:`g(x1) - b` | ++--------------------+-----------------------+-------------------------+ +| :math:`g(x) \ge b` | :math:`g(x_1) \ge b` | 0 | ++--------------------+-----------------------+-------------------------+ +| :math:`g(x) \ge b` | :math:`g(x_1) < b` | :math:`b - g(x1)` | ++--------------------+-----------------------+-------------------------+ + +Augmented Penalty +^^^^^^^^^^^^^^^^^ + +Augmented Penalty refers to the introduction of (non-negative) slack variables on the right hand sides of the just described inequality constraints and the modification of the objective function when assumptions concerning convexity do not hold. (From DICOPT) + + +Global Outer-Approximation +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Apart from the decomposition methods for convex MINLP problems [`Kronqvist et al., 2019`_], MindtPy provides an implementation of Global Outer Approximation (GOA) as described in [`Kesavan & Allgor, 2004`_], to provide optimality guaranteed for nonconvex MINLP problems. Here, the validity of the Mixed-integer Linear Programming relaxation of the original problem is guaranteed via the usage of Generalized McCormick envelopes, computed using the package `MC++`_. The NLP subproblems, in this case, need to be solved to global optimality, which can be achieved through global NLP solvers such as `BARON`_ or `SCIP`_. + +.. _BARON: https://minlp.com/baron-solver +.. _SCIP: https://www.scipopt.org/ + + +Convergence +""""""""""" + +MindtPy provides two ways to guarantee the finite convergence of the algorithm. + +- **No-good cuts**. No-good cuts(integer cuts) are added to the MILP master problem in each iteration. +- **Tabu list**. Tabu list is only supported if the ``mip_solver`` is ``cplex_persistent`` (``gurobi_persistent`` pending). In each iteration, the explored integer combinations will be added to the `tabu_list`. When solving the next MILP problem, the MIP solver will reject the previously explored solutions in the branch and bound process through IncumbentCallback. + + +Bound Calculation +""""""""""""""""" + +Since no-good cuts or tabu list is applied in the Global Outer-Approximation (GOA) method, the MILP master problem cannot provide a valid bound for the original problem. After the GOA method has converged, MindtPy will remove the no-good cuts or the tabu integer combinations added when and after the optimal solution has been found. Solving this problem will give us a valid bound for the original problem. + + +The GOA method also has a single-tree implementation with ``cplex_persistent`` and ``gurobi_persistent``. Notice that this method is more computationally expensive than the other strategies implemented for convex MINLP like OA and ECP, which can be used as heuristics for nonconvex MINLP problems. + +A usage example for GOA is as follows: + +.. code:: + + >>> pyo.SolverFactory('mindtpy').solve(model, + ... strategy='GOA', + ... mip_solver='cplex', + ... nlp_solver='baron') + >>> model.objective.display() + + + +MindtPy Implementation and Optional Arguments +--------------------------------------------- + +.. warning:: + + MindtPy optional arguments should be considered beta code and are + subject to change. + +.. autoclass:: pyomo.contrib.mindtpy.MindtPy.MindtPySolver + :members: + +Get Help +-------- + +Ways to get help: https://github.com/Pyomo/pyomo#getting-help + +Report a Bug +------------ + +If you find a bug in MindtPy, we will be grateful if you could + +- submit an `issue`_ in Pyomo repository +- directly contact David Bernal and Zedong Peng . + +.. _issue: https://github.com/Pyomo/pyomo/issues diff --git a/doc/OnlineDocs/user_guide/contributed_packages/mpc/api.rst b/doc/OnlineDocs/user_guide/contributed_packages/mpc/api.rst new file mode 100644 index 00000000000..2752fea8af6 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/mpc/api.rst @@ -0,0 +1,10 @@ +.. _mpc_api: + +API Reference +============= + +.. toctree:: + data.rst + conversion.rst + interface.rst + modeling.rst diff --git a/doc/OnlineDocs/user_guide/contributed_packages/mpc/conversion.rst b/doc/OnlineDocs/user_guide/contributed_packages/mpc/conversion.rst new file mode 100644 index 00000000000..9d9406edb75 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/mpc/conversion.rst @@ -0,0 +1,5 @@ +Data Conversion +=============== + +.. automodule:: pyomo.contrib.mpc.data.convert + :members: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/mpc/data.rst b/doc/OnlineDocs/user_guide/contributed_packages/mpc/data.rst new file mode 100644 index 00000000000..73cb6543b1e --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/mpc/data.rst @@ -0,0 +1,17 @@ +Data Structures +=============== + +.. automodule:: pyomo.contrib.mpc.data.get_cuid + :members: + +.. automodule:: pyomo.contrib.mpc.data.dynamic_data_base + :members: + +.. automodule:: pyomo.contrib.mpc.data.scalar_data + :members: + +.. automodule:: pyomo.contrib.mpc.data.series_data + :members: + +.. automodule:: pyomo.contrib.mpc.data.interval_data + :members: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/mpc/examples.rst b/doc/OnlineDocs/user_guide/contributed_packages/mpc/examples.rst new file mode 100644 index 00000000000..95204192358 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/mpc/examples.rst @@ -0,0 +1,6 @@ +Examples +======== + +Please see ``pyomo/contrib/mpc/examples/cstr/run_openloop.py`` and +``pyomo/contrib/mpc/examples/cstr/run_mpc.py`` for examples of some simple +use cases. diff --git a/doc/OnlineDocs/user_guide/contributed_packages/mpc/faq.rst b/doc/OnlineDocs/user_guide/contributed_packages/mpc/faq.rst new file mode 100644 index 00000000000..e42e7184696 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/mpc/faq.rst @@ -0,0 +1,16 @@ +Frequently asked questions +========================== + +#. Why not use Pandas DataFrames? + +Pandas DataFrames are a natural data structure for storing "columns" of +time series data. These columns, or individual time series, could each represent +the data for a single variable. This is very similar to the TimeSeriesData +class introduced in this package. +The reason a new data structure is introduced is primarily that a DataFrame +does not provide any utility for converting labels into a consistent format, +as TimeSeriesData does by accepting variables, strings, slices, etc. +as keys and converting them into the form of a time-indexed ComponentUID. +Also, DataFrames do not have convenient analogs for scalar data and +time interval data, which this package provides as the ScalarData +and IntervalData classes with very similar APIs to TimeSeriesData. diff --git a/doc/OnlineDocs/user_guide/contributed_packages/mpc/index.rst b/doc/OnlineDocs/user_guide/contributed_packages/mpc/index.rst new file mode 100644 index 00000000000..e512d1a6ef5 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/mpc/index.rst @@ -0,0 +1,32 @@ +MPC +=== + +Pyomo MPC contains data structures and utilities for dynamic optimization +and rolling horizon applications, e.g. model predictive control. + +.. toctree:: + :maxdepth: 1 + + overview.rst + examples.rst + faq.rst + api.rst + +Citation +-------- + +If you use Pyomo MPC in your research, please cite the following paper: + +.. code-block:: bibtex + + @article{parker2023mpc, + title = {Model predictive control simulations with block-hierarchical differential-algebraic process models}, + journal = {Journal of Process Control}, + volume = {132}, + pages = {103113}, + year = {2023}, + issn = {0959-1524}, + doi = {https://doi.org/10.1016/j.jprocont.2023.103113}, + url = {https://www.sciencedirect.com/science/article/pii/S0959152423002007}, + author = {Robert B. Parker and Bethany L. Nicholson and John D. Siirola and Lorenz T. Biegler}, + } diff --git a/doc/OnlineDocs/user_guide/contributed_packages/mpc/interface.rst b/doc/OnlineDocs/user_guide/contributed_packages/mpc/interface.rst new file mode 100644 index 00000000000..eb5bac548fd --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/mpc/interface.rst @@ -0,0 +1,8 @@ +Interfaces +========== + +.. automodule:: pyomo.contrib.mpc.interfaces.model_interface + :members: + +.. automodule:: pyomo.contrib.mpc.interfaces.var_linker + :members: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/mpc/modeling.rst b/doc/OnlineDocs/user_guide/contributed_packages/mpc/modeling.rst new file mode 100644 index 00000000000..cbae03161b1 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/mpc/modeling.rst @@ -0,0 +1,11 @@ +Modeling Components +=================== + +.. automodule:: pyomo.contrib.mpc.modeling.constraints + :members: + +.. automodule:: pyomo.contrib.mpc.modeling.cost_expressions + :members: + +.. automodule:: pyomo.contrib.mpc.modeling.terminal + :members: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/mpc/overview.rst b/doc/OnlineDocs/user_guide/contributed_packages/mpc/overview.rst new file mode 100644 index 00000000000..f3bc7504b59 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/mpc/overview.rst @@ -0,0 +1,210 @@ +Overview +======== + +What does this package contain? +------------------------------- + +#. Data structures for values and time series data associated with time-indexed variables (or parameters, or named expressions). Examples are setpoint values associated with a subset of state variables or time series data from a simulation + +#. Utilities for loading and extracting this data into and from variables in a model + +#. Utilities for constructing components from this data (expressions, constraints, and objectives) that are useful for dynamic optimization + +What is the goal of this package? +--------------------------------- + +This package was written to help developers of Pyomo-based dynamic optimization +case studies, especially rolling horizon dynamic optimization case studies, +write scripts that are small, legible, and maintainable. +It does this by providing utilities for mundane data-management and model +construction tasks, allowing the developer to focus on their application. + +Why is this package useful? +--------------------------- + +First, it is not normally easy to extract "flattened" time series data, +in which all indexing structure other than time-indexing has been +flattened to yield a set of one-dimensional arrays, from a Pyomo model. +This is an extremely convenient data structure to have for plotting, +analysis, initialization, and manipulation of dynamic models. +If all variables are indexed by time and only time, this data is relatively +easy to obtain. +The first issue comes up when dealing with components that are indexed by +time in addition to some other set(s). For example: + +.. doctest:: + + >>> import pyomo.environ as pyo + + >>> m = pyo.ConcreteModel() + >>> m.time = pyo.Set(initialize=[0, 1, 2]) + >>> m.comp = pyo.Set(initialize=["A", "B"]) + >>> m.var = pyo.Var(m.time, m.comp, initialize=1.0) + + >>> t0 = m.time.first() + >>> data = { + ... m.var[t0, j].name: [m.var[i, j].value for i in m.time] + ... for j in m.comp + ... } + >>> data + {'var[0,A]': [1.0, 1.0, 1.0], 'var[0,B]': [1.0, 1.0, 1.0]} + +To generate data in this form, we need to (a) know that our variable is indexed +by time and ``m.comp`` and (b) arbitrarily select a time index ``t0`` to +generate a unique key for each time series. +This gets more difficult when blocks and time-indexed blocks are used as well. +The first difficulty can be alleviated using +``flatten_dae_components`` from ``pyomo.dae.flatten``: + +.. doctest:: + + >>> import pyomo.environ as pyo + >>> from pyomo.dae.flatten import flatten_dae_components + + >>> m = pyo.ConcreteModel() + >>> m.time = pyo.Set(initialize=[0, 1, 2]) + >>> m.comp = pyo.Set(initialize=["A", "B"]) + >>> m.var = pyo.Var(m.time, m.comp, initialize=1.0) + + >>> t0 = m.time.first() + >>> scalar_vars, dae_vars = flatten_dae_components(m, m.time, pyo.Var) + >>> data = {var[t0].name: list(var[:].value) for var in dae_vars} + >>> data + {'var[0,A]': [1.0, 1.0, 1.0], 'var[0,B]': [1.0, 1.0, 1.0]} + +Addressing the arbitrary ``t0`` index requires us to ask what key we +would like to use to identify each time series in our data structure. +The key should uniquely correspond to a component, or "sub-component" +that is indexed only by time. A slice, e.g. ``m.var[:, "A"]`` seems +natural. However, Pyomo provides a better data structure that can +be constructed from a component, slice, or string, called +``ComponentUID``. Being constructable from a string is important as +we may want to store or serialize this data in a form that is agnostic +of any particular ``ConcreteModel`` object. +We can now generate our data structure as: + +.. doctest:: + + >>> data = { + ... pyo.ComponentUID(var.referent): list(var[:].value) + ... for var in dae_vars + ... } + >>> data + {var[*,A]: [1.0, 1.0, 1.0], var[*,B]: [1.0, 1.0, 1.0]} + +This is the structure of the underlying dictionary in the ``TimeSeriesData`` +class provided by this package. We can generate this data using this package +as: + +.. doctest:: + + >>> import pyomo.environ as pyo + >>> from pyomo.contrib.mpc import DynamicModelInterface + + >>> m = pyo.ConcreteModel() + >>> m.time = pyo.Set(initialize=[0, 1, 2]) + >>> m.comp = pyo.Set(initialize=["A", "B"]) + >>> m.var = pyo.Var(m.time, m.comp, initialize=1.0) + + >>> # Construct a helper class for interfacing model with data + >>> helper = DynamicModelInterface(m, m.time) + + >>> # Generates a TimeSeriesData object + >>> series_data = helper.get_data_at_time() + + >>> # Get the underlying dictionary + >>> data = series_data.get_data() + >>> data + {var[*,A]: [1.0, 1.0, 1.0], var[*,B]: [1.0, 1.0, 1.0]} + +The first value proposition of this package is that ``DynamicModelInterface`` +and ``TimeSeriesData`` provide wrappers to ease loading and extraction of data +via ``flatten_dae_components`` and ``ComponentUID``. + +The second difficulty addressed by this package is that of extracting and +loading data between (potentially) different models. +For instance, in model predictive control, we often want to extract data from +a particular time point in a plant model and load it into a controller model +as initial conditions. This can be done as follows: + +.. doctest:: + + >>> import pyomo.environ as pyo + >>> from pyomo.contrib.mpc import DynamicModelInterface + + >>> m1 = pyo.ConcreteModel() + >>> m1.time = pyo.Set(initialize=[0, 1, 2]) + >>> m1.comp = pyo.Set(initialize=["A", "B"]) + >>> m1.var = pyo.Var(m1.time, m1.comp, initialize=1.0) + + >>> m2 = pyo.ConcreteModel() + >>> m2.time = pyo.Set(initialize=[0, 1, 2]) + >>> m2.comp = pyo.Set(initialize=["A", "B"]) + >>> m2.var = pyo.Var(m2.time, m2.comp, initialize=2.0) + + >>> # Construct helper objects + >>> m1_helper = DynamicModelInterface(m1, m1.time) + >>> m2_helper = DynamicModelInterface(m2, m2.time) + + >>> # Extract data from final time point of m2 + >>> tf = m2.time.last() + >>> tf_data = m2_helper.get_data_at_time(tf) + + >>> # Load data into initial time point of m1 + >>> t0 = m1.time.first() + >>> m1_helper.load_data(tf_data, time_points=t0) + + >>> # Get TimeSeriesData object + >>> series_data = m1_helper.get_data_at_time() + >>> # Get underlying dictionary + >>> series_data.get_data() + {var[*,A]: [2.0, 1.0, 1.0], var[*,B]: [2.0, 1.0, 1.0]} + +.. note:: + + Here we rely on the fact that our variable has the same name in + both models. + +Finally, this package provides methods for constructing components like +tracking cost expressions and piecewise-constant constraints from the +provided data structures. For example, the following code constructs +a tracking cost expression. + +.. doctest:: + + >>> import pyomo.environ as pyo + >>> from pyomo.contrib.mpc import DynamicModelInterface + + >>> m = pyo.ConcreteModel() + >>> m.time = pyo.Set(initialize=[0, 1, 2]) + >>> m.comp = pyo.Set(initialize=["A", "B"]) + >>> m.var = pyo.Var(m.time, m.comp, initialize=1.0) + + >>> # Construct helper object + >>> helper = DynamicModelInterface(m, m.time) + + >>> # Construct data structure for setpoints + >>> setpoint = {m.var[:, "A"]: 0.5, m.var[:, "B"]: 2.0} + >>> var_set, tr_cost = helper.get_penalty_from_target(setpoint) + >>> m.setpoint_idx = var_set + >>> m.tracking_cost = tr_cost + >>> m.tracking_cost.pprint() + tracking_cost : Size=6, Index=setpoint_idx*time + Key : Expression + (0, 0) : (var[0,A] - 0.5)**2 + (0, 1) : (var[1,A] - 0.5)**2 + (0, 2) : (var[2,A] - 0.5)**2 + (1, 0) : (var[0,B] - 2.0)**2 + (1, 1) : (var[1,B] - 2.0)**2 + (1, 2) : (var[2,B] - 2.0)**2 + + +These methods will hopefully allow developers to declutter dynamic optimization +scripts and pay more attention to the application of the optimization problem +rather than the setup of the optimization problem. + +Who develops and maintains this package? +---------------------------------------- + +This package was developed by Robert Parker while a PhD student in Larry +Biegler's group at CMU, with guidance from Bethany Nicholson and John Siirola. diff --git a/doc/OnlineDocs/user_guide/contributed_packages/multistart.rst b/doc/OnlineDocs/user_guide/contributed_packages/multistart.rst new file mode 100644 index 00000000000..069d770aa91 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/multistart.rst @@ -0,0 +1,34 @@ +Multistart Solver +================== + +The multistart solver is used in cases where the objective function is known +to be non-convex but the global optimum is still desired. It works by running a non-linear +solver of your choice multiple times at different starting points, and +returns the best of the solutions. + + +Using Multistart Solver +----------------------- +To use the multistart solver, define your Pyomo model as usual: + +.. doctest:: + + Required import + >>> from pyomo.environ import * + + Create a simple model + >>> m = ConcreteModel() + >>> m.x = Var() + >>> m.y = Var() + >>> m.obj = Objective(expr=m.x**2 + m.y**2) + >>> m.c = Constraint(expr=m.y >= -2*m.x + 5) + + Invoke the multistart solver + >>> SolverFactory('multistart').solve(m) # doctest: +SKIP + + +Multistart wrapper implementation and optional arguments +-------------------------------------------------------- + +.. autoclass:: pyomo.contrib.multistart.multi.MultiStart + :members: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/parmest/api.rst b/doc/OnlineDocs/user_guide/contributed_packages/parmest/api.rst new file mode 100644 index 00000000000..4d6896a8582 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/parmest/api.rst @@ -0,0 +1,25 @@ +.. _apisection: + +API +============ + +parmest +--------- +.. automodule:: pyomo.contrib.parmest.parmest + :members: + :undoc-members: + :show-inheritance: + +scenariocreator +------------------ +.. automodule:: pyomo.contrib.parmest.scenariocreator + :members: + :undoc-members: + :show-inheritance: + +graphics +--------- +.. automodule:: pyomo.contrib.parmest.graphics + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/OnlineDocs/user_guide/contributed_packages/parmest/boxplot.png b/doc/OnlineDocs/user_guide/contributed_packages/parmest/boxplot.png new file mode 100644 index 0000000000000000000000000000000000000000..25bb4da764a429b33aadb1bd53bdeddab10ddc2e GIT binary patch literal 19354 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 import pandas as pd + >>> import pyomo.contrib.parmest.parmest as parmest + >>> from pyomo.contrib.parmest.examples.rooney_biegler.rooney_biegler import RooneyBieglerExperiment + + >>> # Generate data + >>> data = pd.DataFrame(data=[[1,8.3],[2,10.3],[3,19.0], + ... [4,16.0],[5,15.6],[7,19.8]], + ... columns=['hour', 'y']) + + >>> # Create an experiment list + >>> exp_list = [] + >>> for i in range(data.shape[0]): + ... exp_list.append(RooneyBieglerExperiment(data.loc[i, :])) + + >>> # Define objective + >>> def SSE(model): + ... expr = (model.experiment_outputs[model.y] + ... - model.response_function[model.experiment_outputs[model.hour]] + ... ) ** 2 + ... return expr + + >>> pest = parmest.Estimator(exp_list, obj_function=SSE, solver_options=None) + >>> obj, theta, var_values = pest.theta_est(return_values=['response_function']) + >>> #print(var_values) diff --git a/doc/OnlineDocs/user_guide/contributed_packages/parmest/driver.rst b/doc/OnlineDocs/user_guide/contributed_packages/parmest/driver.rst new file mode 100644 index 00000000000..5881d2748f9 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/parmest/driver.rst @@ -0,0 +1,165 @@ +.. _driversection: + +Parameter Estimation +================================== + +Parameter Estimation using parmest requires a Pyomo model, experimental +data which defines multiple scenarios, and parameters +(thetas) to estimate. parmest uses Pyomo [PyomoBookII]_ and (optionally) +mpi-sppy [mpisppy]_ to solve a +two-stage stochastic programming problem, where the experimental data is +used to create a scenario tree. The objective function needs to be +written with the Pyomo Expression for first stage cost +(named "FirstStageCost") set to zero and the Pyomo Expression for second +stage cost (named "SecondStageCost") defined as the deviation between +the model and the observations (typically defined as the sum of squared +deviation between model values and observed values). + +If the Pyomo model is not formatted as a two-stage stochastic +programming problem in this format, the user can supply a custom +function to use as the second stage cost and the Pyomo model will be +modified within parmest to match the required specifications. +The stochastic programming callback function is also defined within parmest. The callback +function returns a populated and initialized model for each scenario. + +To use parmest, the user creates a :class:`~pyomo.contrib.parmest.parmest.Estimator` object +which includes the following methods: + +.. autosummary:: + :nosignatures: + + ~pyomo.contrib.parmest.parmest.Estimator.theta_est + ~pyomo.contrib.parmest.parmest.Estimator.theta_est_bootstrap + ~pyomo.contrib.parmest.parmest.Estimator.theta_est_leaveNout + ~pyomo.contrib.parmest.parmest.Estimator.objective_at_theta + ~pyomo.contrib.parmest.parmest.Estimator.confidence_region_test + ~pyomo.contrib.parmest.parmest.Estimator.likelihood_ratio_test + ~pyomo.contrib.parmest.parmest.Estimator.leaveNout_bootstrap_test + +Additional functions are available in parmest to plot +results and fit distributions to theta values. + +.. autosummary:: + :nosignatures: + + ~pyomo.contrib.parmest.graphics.pairwise_plot + ~pyomo.contrib.parmest.graphics.grouped_boxplot + ~pyomo.contrib.parmest.graphics.grouped_violinplot + ~pyomo.contrib.parmest.graphics.fit_rect_dist + ~pyomo.contrib.parmest.graphics.fit_mvn_dist + ~pyomo.contrib.parmest.graphics.fit_kde_dist + +A :class:`~pyomo.contrib.parmest.parmest.Estimator` object can be +created using the following code. A description of each argument is +listed below. Examples are provided in the :ref:`examplesection` +Section. + +.. testsetup:: * + :skipif: not __import__('pyomo.contrib.parmest.parmest').contrib.parmest.parmest.parmest_available + + # Data + import pandas as pd + data = pd.DataFrame( + data=[[1, 8.3], [2, 10.3], [3, 19.0], + [4, 16.0], [5, 15.6], [7, 19.8]], + columns=['hour', 'y'], + ) + + # Sum of squared error function + def SSE(model): + expr = ( + model.experiment_outputs[model.y] + - model.response_function[model.experiment_outputs[model.hour]] + ) ** 2 + return expr + + # Create an experiment list + from pyomo.contrib.parmest.examples.rooney_biegler.rooney_biegler import RooneyBieglerExperiment + exp_list = [] + for i in range(data.shape[0]): + exp_list.append(RooneyBieglerExperiment(data.loc[i, :])) + +.. doctest:: + :skipif: not __import__('pyomo.contrib.parmest.parmest').contrib.parmest.parmest.parmest_available + + >>> import pyomo.contrib.parmest.parmest as parmest + >>> pest = parmest.Estimator(exp_list, obj_function=SSE) + +Optionally, solver options can be supplied, e.g., + +.. doctest:: + :skipif: not __import__('pyomo.contrib.parmest.parmest').contrib.parmest.parmest.parmest_available + + >>> solver_options = {"max_iter": 6000} + >>> pest = parmest.Estimator(exp_list, obj_function=SSE, solver_options=solver_options) + + +List of experiment objects +-------------------------- + +The first argument is a list of experiment objects which is used to +create one labeled model for each expeirment. +The template :class:`~pyomo.contrib.parmest.experiment.Experiment` +can be used to generate a list of experiment objects. + +A labeled Pyomo model ``m`` has the following additional suffixes (Pyomo `Suffix`): + +* ``m.experiment_outputs`` which defines experiment output (Pyomo `Param`, `Var`, or `Expression`) + and their associated data values (float, int). +* ``m.unknown_parameters`` which defines the mutable parameters or variables (Pyomo `Param` or `Var`) + to estimate along with their component unique identifier (Pyomo `ComponentUID`). + Within parmest, any parameters that are to be estimated are converted to unfixed variables. + Variables that are to be estimated are also unfixed. + +The experiment class has one required method: + +* :class:`~pyomo.contrib.parmest.experiment.Experiment.get_labeled_model` which returns the labeled Pyomo model. + Note that the model does not have to be specifically written as a + two-stage stochastic programming problem for parmest. + That is, parmest can modify the + objective, see :ref:`ObjFunction` below. + +Parmest comes with several :ref:`examplesection` that illustrates how to set up the list of experiment objects. +The examples commonly include additional :class:`~pyomo.contrib.parmest.experiment.Experiment` class methods to +create the model, finalize the model, and label the model. The user can customize methods to suit their needs. + +.. _ObjFunction: + +Objective function +------------------ + +The second argument is an optional argument which defines the +optimization objective function to use in parameter estimation. + +If no objective function is specified, the Pyomo model is used "as is" and +should be defined with "FirstStageCost" and "SecondStageCost" +expressions that are used to build an objective for the two-stage +stochastic programming problem. + +If the Pyomo model is not written as a two-stage stochastic programming problem in +this format, and/or if the user wants to use an objective that is +different than the original model, a custom objective function can be +defined for parameter estimation. The objective function has a single argument, +which is the model from a single experiment. +The objective function returns a Pyomo +expression which is used to define "SecondStageCost". The objective +function can be used to customize data points and weights that are used +in parameter estimation. + +Parmest includes one built in objective function to compute the sum of squared errors ("SSE") between the +``m.experiment_outputs`` model values and data values. + +Suggested initialization procedure for parameter estimation problems +-------------------------------------------------------------------- + +To check the quality of initial guess values provided for the fitted parameters, we suggest solving a +square instance of the problem prior to solving the parameter estimation problem using the following steps: + +1. Create :class:`~pyomo.contrib.parmest.parmest.Estimator` object. To initialize the parameter +estimation solve from the square problem solution, set optional argument ``solver_options = {bound_push: 1e-8}``. + +2. Call :class:`~pyomo.contrib.parmest.parmest.Estimator.objective_at_theta` with optional +argument ``(initialize_parmest_model=True)``. Different initial guess values for the fitted +parameters can be provided using optional argument `theta_values` (**Pandas Dataframe**) + +3. Solve parameter estimation problem by calling :class:`~pyomo.contrib.parmest.parmest.Estimator.theta_est` diff --git a/doc/OnlineDocs/user_guide/contributed_packages/parmest/examples.rst b/doc/OnlineDocs/user_guide/contributed_packages/parmest/examples.rst new file mode 100644 index 00000000000..a59d79dfa2b --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/parmest/examples.rst @@ -0,0 +1,44 @@ +.. _examplesection: + +Examples +======== + +Examples can be found in `pyomo/contrib/parmest/examples` and include: + +* Reactor design example [PyomoBookII]_ +* Semibatch example [SemiBatch]_ +* Rooney Biegler example [RooneyBiegler]_ + +Each example includes a Python file that contains the Pyomo model and a +Python file to run parameter estimation. + +Additional use cases include: + +* Data reconciliation (reactor design example) +* Parameter estimation using data with duplicate sensors and time-series + data (reactor design example) +* Parameter estimation using mpi4py, the example saves results to a file + for later analysis/graphics (semibatch example) + +The example below uses the reactor design example. The file +**reactor_design.py** includes a function which returns an populated +instance of the Pyomo model. Note that the model is defined to maximize +`cb` and that `k1`, `k2`, and `k3` are fixed. The _main_ program is +included for easy testing of the model declaration. + +.. literalinclude:: ../../../../pyomo/contrib/parmest/examples/reactor_design/reactor_design.py + :language: python + +The file **parameter_estimation_example.py** uses parmest to estimate values of `k1`, +`k2`, and `k3` by minimizing the sum of squared error between model and +observed values of `ca`, `cb`, `cc`, and `cd`. Additional example files use +parmest to run parameter estimation with bootstrap resampling and +perform a likelihood ratio test over a range of theta values. + +.. literalinclude:: ../../../../pyomo/contrib/parmest/examples/reactor_design/parameter_estimation_example.py + :language: python + +The semibatch and Rooney Biegler examples are defined in a similar +manner. + + diff --git a/doc/OnlineDocs/user_guide/contributed_packages/parmest/graphics.rst b/doc/OnlineDocs/user_guide/contributed_packages/parmest/graphics.rst new file mode 100644 index 00000000000..a0837472bbb --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/parmest/graphics.rst @@ -0,0 +1,55 @@ +.. _graphicssection: + +Graphics +======== + +parmest includes the following functions to help visualize results: + +* :class:`~pyomo.contrib.parmest.graphics.grouped_boxplot` +* :class:`~pyomo.contrib.parmest.graphics.grouped_violinplot` +* :class:`~pyomo.contrib.parmest.graphics.pairwise_plot` + +Grouped boxplots and violinplots are used to compare datasets, generally +before and after data reconciliation. Pairwise plots are used to +visualize results from parameter estimation and include a histogram of +each parameter along the diagonal and a scatter plot for each pair of +parameters in the upper and lower sections. The pairwise plot can also +include the following optional information: + +* A single value for each theta (generally theta* from parameter + estimation). +* Confidence intervals for rectangular, multivariate normal, and/or + Gaussian kernel density estimate distributions at a specified level + (i.e. 0.8). For plots with more than 2 parameters, theta* is used to + extract a slice of the confidence region for each pairwise plot. +* Filled contour lines for objective values at a specified level + (i.e. 0.8). For plots with more than 2 parameters, theta* is used to + extract a slice of the contour lines for each pairwise plot. + +The following examples were generated using the reactor design example. +:numref:`fig-boxplot` uses output from data reconciliation, +:numref:`fig-pairwise1` uses output from the bootstrap analysis, and +:numref:`fig-pairwise2` uses output from the likelihood ratio test. + +.. _fig-boxplot: +.. figure:: boxplot.png + :scale: 90 % + :alt: boxplot + + Grouped boxplot showing data before and after data reconciliation. + +.. _fig-pairwise1: +.. figure:: pairwise_plot_CI.png + :scale: 90 % + :alt: CI + + Pairwise bootstrap plot with rectangular, multivariate normal and + kernel density estimation confidence region. + +.. _fig-pairwise2: +.. figure:: pairwise_plot_LR.png + :scale: 90 % + :alt: LR + + Pairwise likelihood ratio plot with contours of the objective and + points that lie within an alpha confidence region. diff --git a/doc/OnlineDocs/user_guide/contributed_packages/parmest/index.rst b/doc/OnlineDocs/user_guide/contributed_packages/parmest/index.rst new file mode 100644 index 00000000000..2bf4942e632 --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/parmest/index.rst @@ -0,0 +1,35 @@ +Parameter Estimation with ``parmest`` +===================================== + +``parmest`` is a Python package built on the Pyomo optimization modeling +language ([PyomoJournal]_, [PyomoBookII]_) to support parameter estimation using experimental data along with +confidence regions and subsequent creation of scenarios for stochastic programming. + +Citation for parmest +^^^^^^^^^^^^^^^^^^^^ + +If you use parmest, please cite [ParmestPaper]_ + +Index of parmest documentation +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. toctree:: + :maxdepth: 2 + + overview.rst + installation.rst + driver.rst + datarec.rst + covariance.rst + scencreate.rst + graphics.rst + examples.rst + parallel.rst + api.rst + +Indices and Tables +------------------ + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/doc/OnlineDocs/user_guide/contributed_packages/parmest/installation.rst b/doc/OnlineDocs/user_guide/contributed_packages/parmest/installation.rst new file mode 100644 index 00000000000..0cba08039ce --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/parmest/installation.rst @@ -0,0 +1,33 @@ +Installation Instructions +========================= + +parmest is included in Pyomo (pyomo/contrib/parmest). +To run parmest, you will need Python version 3.x along with +various Python package dependencies and the IPOPT software +library for non-linear optimization. + +Python package dependencies +--------------------------- + +#. numpy +#. pandas +#. pyomo +#. mpisppy (optional) +#. matplotlib (optional) +#. scipy.stats (optional) +#. seaborn (optional) +#. mpi4py.MPI (optional) + +IPOPT +----- + +IPOPT can be downloaded from https://projects.coin-or.org/Ipopt. + +Testing +------- + +The following commands can be used to test parmest:: + + cd pyomo/contrib/parmest/tests + python test_parmest.py + diff --git a/doc/OnlineDocs/user_guide/contributed_packages/parmest/overview.rst b/doc/OnlineDocs/user_guide/contributed_packages/parmest/overview.rst new file mode 100644 index 00000000000..1b5c71b849e --- /dev/null +++ b/doc/OnlineDocs/user_guide/contributed_packages/parmest/overview.rst @@ -0,0 +1,72 @@ +Overview +======== + +The Python package called parmest facilitates model-based parameter +estimation along with characterization of uncertainty associated with +the estimates. For example, parmest can provide confidence regions +around the parameter estimates. Additionally, parameter vectors, each +with an attached probability estimate, can be used to build scenarios +for design optimization. + +Functionality in parmest includes: + +* Model based parameter estimation using experimental data +* Bootstrap resampling for parameter estimation +* Confidence regions based on single or multi-variate distributions +* Likelihood ratio +* Leave-N-out cross validation +* Parallel processing + +Background +---------- + +The goal of parameter estimation is to estimate values for +a vector, :math:`{\theta}`, to use in the functional form + +.. math:: + + y = g(x; \theta) + +where :math:`x` is a vector containing measured data, typically in high +dimension, :math:`{\theta}` is a vector of values to estimate, in much +lower dimension, and the response vectors are given as :math:`y_{i}, +i=1,\ldots,m` with :math:`m` also much smaller than the dimension of +:math:`x`. This is done by collecting :math:`S` data points, which are +:math:`{\tilde{x}},{\tilde{y}}` pairs and then finding :math:`{\theta}` +values that minimize some function of the deviation between the values +of :math:`{\tilde{y}}` that are measured and the values of +:math:`g({\tilde{x}};{\theta})` for each corresponding +:math:`{\tilde{x}}`, which is a subvector of the vector :math:`x`. Note +that for most experiments, only small parts of :math:`x` will change +from one experiment to the next. + +The following least squares objective can be used to estimate parameter +values, where data points are indexed by :math:`s=1,\ldots,S` + +.. math:: + + \min_{{\theta}} Q({\theta};{\tilde{x}}, {\tilde{y}}) \equiv \sum_{s=1}^{S}q_{s}({\theta};{\tilde{x}}_{s}, {\tilde{y}}_{s}) \;\; + +where + +.. math:: + + q_{s}({\theta};{\tilde{x}}_{s}, {\tilde{y}}_{s}) = \sum_{i=1}^{m}w_{i}\left[{\tilde{y}}_{si} - g_{i}({\tilde{x}}_{s};{\theta})\right]^{2}, + +i.e., the contribution of sample :math:`s` to :math:`Q`, where :math:`w +\in \Re^{m}` is a vector of weights for the responses. For +multi-dimensional :math:`y`, this is the squared weighted :math:`L_{2}` +norm and for univariate :math:`y` the weighted squared deviation. +Custom objectives can also be defined for parameter estimation. + +In the applications of interest to us, the function :math:`g(\cdot)` is +usually defined as an optimization problem with a large number of +(perhaps constrained) optimization variables, a subset of which are +fixed at values :math:`{\tilde{x}}` when the optimization is performed. +In other applications, the values of :math:`{\theta}` are fixed +parameter values, but for the problem formulation above, the values of +:math:`{\theta}` are the primary optimization variables. Note that in +general, the function :math:`g(\cdot)` will have a large set of +parameters that are not included in :math:`{\theta}`. Often, the +:math:`y_{is}` will be vectors themselves, perhaps indexed by time with +index sets that vary with :math:`s`. diff --git a/doc/OnlineDocs/user_guide/contributed_packages/parmest/pairwise_plot_CI.png b/doc/OnlineDocs/user_guide/contributed_packages/parmest/pairwise_plot_CI.png new file mode 100644 index 0000000000000000000000000000000000000000..dd630f5d177a1a0be4a564ecda6505164353d201 GIT binary patch literal 84454 zcmd43byU>f|1JtBptLAmA}Z3|rGT^`-6h>IbSf!Q0>aQpcQbUObayul-JNIi`F?)C zbIv{Mu66&o>#oaMz%aaL&wKCv+OK$?=QTl}WyLYkh|v%b5HKYrL=_Ma9zhWhkanJ+ zfM=XhMHIoW#}Hvjr6=Ia0kT^cbx&Qg`VQfdkaZQT5ARH?NBD6oi1NUTi zYtRYD5q?7H2Y%=y7N*m^e0T)@Y(15EE_w{@06x z|9^bBhD7m1)X$$^b&8!Gl>KndpO`uO;hep;3d3nt!`0Gw$HMYVNJt3x`ExRDJjy=; z!qa4wegcvSRDR4c|DR2EeSHJ%$;A2YH;Dv_mE83fPN9H*H^O5W^8d<4^dLjg@#%lN zoo>0fx(-#_8F*dqa`|2x8yYfuUOAYL7X(3}1ehe8tMC->${d-0_ZtVfM#;A3%U?9H zaPq!CLC>FJV`n>Vk2~zm#&veKPN*lco8hK-UC|t`_pN|`V^9bt>NL1LBPX|Ziu*4+ zK^xvUb!$kc(=S->OBl(Kr^08{imfXI*PZN4Ma8k1;7H|}7!Q8v=`P|7>arXMcI73DpDo_--V@3l$!Stb zztUM!ZA632>}<%zfqr{9MT(7kM;O^um5pxdzNEBtTTc(&0;i3Q&DqYBfqa~qnORK} z_3PKMH|oINU;NKuYP5{iEM;Uc)Ya90G3g2}oE@$8K-RjWg%?J06{(E}lKa3tclP%i z&s197oQ%kce*74xz1|zgc6fZ;bDOJ>`2$Zd2}hXl?JlseG%V z-5MI3D@jv4j-JBI$I`6lYF%7hnC(|3l0DDV9e9(bjAUb(zg=8h%%-3dFsdDx`QfCw z{9kVE{d)x7q@wrXUmP49z9n~%e*5;VK)WtxbX4h!fx%NWv@bUohf2jdb33d80s@C8 zCl#&KxWZ3XBc760QNC`HMkn>CLK`JCu|Q83daquy4S4*C2ICU{On)OE1bhDgZo z!W>Pj+}(HNw%Clws9h^+YWfb!sJ&cRHUEl_FM(^`rEP=N|6h;sVj$C}=kE6UISEP6 z$>vDVj~{6td{Hc?D}wTr^O10fh=NoSCWsQ^-NP$IUNJAMtZcitEF=|i$ zZzGM@IEa;ho$y#hnCZyK@n|nfNKC-@6|bGw1k3_;kR6-uQ{P zuhqRrRI9iqU5c>7%8S4e{+=dL=eZxTr~uYb`ulfDRv^hwoG0|Nz;8dv z8L%qcF<>b2r;Om?q>_svX@0m?g$tpQT8U5_MQ()6jCAFB@PMfSpr-U>V{hGnZt z5b47Rb2(*?W595K(5|u6o_ncBUe2z)u6_aH!1Kt?4^Jrfw2#PaZ6g1<^-mJ7P$~VY zox7Zy8zg-74SWzmrQqLqCI}gV0ee{_x6= z|Ge_t@1T>r#+}j67Hyb3s4n`SZPALPAut)&u^D+`|BS}3I*DqA%0MC^I^{+{=HGQP z=>8j*ddkV?uT*mB?^CWTiblE96R{h?lF`>KcSoKTWmyVlrzHheE@h8bI=A9A?OUz% z?ohg$`gJbZ9sVcJp5fpjb6LMv!C$O~jbmtwb|Wo=yG?Z66*ntCifRgU&452_6XZvz zztFvs5Vh=k!`E8X?2uF0d1+M>K7*kBLt63utT8+7Kr*V!T#X;a;XD`H>>g{g|slB>tL7#jU7 z99mAUCouo@NJ!|NDpof%kXCsVLIO+ae?M(|Eb$P2TY3KcZK<>>F+km!eVQ#tP@B+U zH829RHr$x)95y{XwC`YGd!(Q+`Y}oe+s@AA@86+<5}!u*=Qp>M^cch(K5sw$cC>hc zR@U8NmlrHS>8IGKetmdG&XQ1kn=_H0013oyTkvi>T(LcRohXDI6jW2k(R8ZVO#W!? z>RP11?V$P5!9m+rw!)k3iG>dtm|Wpv#S`1X3!exhK{!oGp*TD|ytumJt>wi!{NEy1 z(Q=Wwv-P|m%wp+!Uw>Prv$ONwEtGhxHS@!x92HC--&BP+>;4_gLi{o8TzKYLrxiUK z=YC>wRB^I!_4m5GK092_PqQ_fO_u68pAoxb)|9ePJ66g& zs~uO0KKzaJi#h&Q!9JFy(~#$tmZqfXo;?j)3Zm9)MyS5`g6>cK;+%B=$$W)T@#ZcTK{o<+VlZ_Y8gqxPt|;4s-)LXj+Kv}W(4T%AO4lEJd2mv36j(`N*7gaU z4*!gnXmCp1A)8LruaMr#`r*+XF$(Y1VJEvu&21LJ7x`Kb4@+z)EEllqobc+^XyuV= z9TgotcUYi}dbq7>jC1R=g=J-W`#NecG?n6jV1nZ&ol5!&%UtVWm}PFjoxA%?rR?G1 z!SO(z=R$?#T=SzGwP)>N{?DkIJ31;Iaj>ZWmz(Hvg0FvaxweXB6UUrF+8F#WH|Dj& zGRSLobVR~6N;>!{VN^~@Y2L!iYp{xm|1yJEEPsTjC|P*&r*tKcbNY@Y$Dh+c3MB;R zOZ#~XLBWHKbn{j5>$5GfB&xuS_KvpUOlEgZt=f!AWYjhv*mBpj$FAv z?IV7NNVBg~XxN8jtr;A;W(i@Cp~1{~YPW>dqI+OG&I#Y2TpUTORnixeA#+&$7RTo3 zC>24C3f!6b=*CO0i=~*IS5SfAi`q6@vxSmWy)9vDMrmgIrus$eyjIp+SAPJukRR8A zl1O!)vajp$sI~>Q?9tD}#6EaR2eZ2q`?F`8VhtUkGUQ9l4O5Z>F`JJ=$sP;1OW9;q z(^bnPK)AZPeK1Ls5^6l%=g%VFq`EtEn5Rh-92_uf1+YoV2GA%f$z|zaJ8m`CI-1MY zRpKa8SrC>g^2lWo(Zu)m8(;kBCW2)n@a~QQi(77^9fqDzv7A$!*)!RYRDYCU^LSN0mARUQVE9Ps4U@H z_0PR}i-OM-Fd(QHH1K{d#9{&~*%ROGwCr|PQggZr`|4a3A}S3H2qhUy{A@Sz)A1p~ zsj1qRNx7991QKU)I2RE!ZvAP9Mp#?rFY#8>tYv%ye>BnMTd7S$H)H^L@w7eP-0UHF7cZWGY$*{p-6xBRiV{ae zY=WErrjp+>qv)H8_BqViQD8D-Ebgl-Y2pzpqRPU_wXr{(MyNlv&*&;qU zaHS9nX_Q*)_GZyhq~lBwJZ*)R*9;`<7qbOH9#AQ*f!{ zG1ZAn+x3r(AE9uX`IR9@)Js!s3iERt#3*V$!_EYqVrn{R?GiT^m*0-#YkGdnkpeT} ze4D3kPJ1$jXFH}&yR~t34Ng|rSEt9>B7q9*);qrNg(YT#0COtDdKm4@cJ&0reecT` zR<+V)6lrL??Ue&Dg*WM6t_3ZF?q5GJ$hA}bjQ8c12x$k&aAoSKm79?lq(0P6S^eIOhmM=+P?UgaAjLMS6Y7SPg2HjwrNt9 z4v(ee;D~nQk^Jg6=deFd#$=+^{+=5-+Y*9Cxf{5mHX3kq6s#eItT)36lg+kOXS7QI zwM$Z4AofV9L5If-pVLlfqvti6r(C{DA-Bf`Gb%Ru!ixI}z2`cIbqnxC~l z4DW?-Z0qI>>5{`;Euqa_!c0}*Gpf;JRULUndcPj~ApKGn78XMzBl$*;OOKfzDAPbR zohq8=z*oda)lR#_g&Hv7VpWku9kknW8viPe`>la=G_}#Ux<{o*Ee&ub&-l7z)VRk!0IIFiMoK?Wh}c2Fi>kT#x&D zY9N%TSSKdHZXP4gX*jb|J;G;D5Ye-lCw@CqN+pwmg-IOiI6FBBW)QsG!(`Cak5Y(V z>wLbl27Tmu(1PnkhJwND-Xod!Ch75F?f~|Y$M!W^#im#S&-2D>th-B8m4dI?$z@+Y z`3uyD4j6^;$q_f`*c^yX!z>8cjC=LKNham7_Z!PsE!S^DnFk2PtfxwWS_{{LM_bi` zR}ZkqhZ9TTbwSw^!@#B%`1JW(914n*YsgY7^0o&zr5|&1?o1Lofs*Z0W{a4X(}`B9 zl_TUB1hA%bgTAir34817#zS%{F)^4V)~tH(U&Aa?z!5eG3iY3cd8*YM33^=@lJ~`5 zs(X+^yk_U-i1@2X1F-`K^P(xZ6zYj0IpdbBM>=oLk*qzh7RSq}t)D&PEEL!GcBV|M z?W6JGn86kil9!)y*tAd9Z)3FEjZa1;f7fNxG-l8h8UGmdI_K7Dx3y66`D}aGUj|P6 zs_Xp@t8JCp@xnF+_R$>!DAWF5ALOyim2jNtDyC0TKVtCca9uB!Ap94L>hoTF@dEA& zoxP*e^_bV&_ODWQZ}-odyi%=dhdex&U=yRqn9UQ||As!vVr^)XO&TLZc`< zn>sl;S>?t76vXV=*3N=gPZSiDRVJyEnX5HLWtP+toRfaM1vRtz*wFUr&RoJD0^L7l z=3|)4E60qV!7Tnxmac7#b`cbE?!RLH?<%{*TsuTQ^9QPCssyH_VCm|T?d=ge@M7|k8JdWw#3b)nTHkIAZMV#6`$C~8a&ioa zh}KF)JF*VOxCGB5Av0at*=gv7U=a8OX$|AbOOagbpx_?Eu1K{Qdig0lh*I8a|5wC2;NAmJ$q#4_1PubV zrsHL^^}*S#FqQYAP6=83{7a~h&eBliRL->8n@A=ON$3VaI_7=3F<4L>Bv#fFnM9W$ z^>U^6V;Mo%3tpO`8ZhfOC0)IKJP^GtC74&b3Obc|9>(-tWu5-m?{8evF-k`3y)OaU zmz>1+e5#Zxf=-o{2l6(Q&1Coo)1SxIMy!Wuvgy`TTt&Y^+VX!I&wbXkd7-PjF@X*8 z!~G`c;_$~BQE)PycGOTXiAAH{eli_OLk=cjddtchxzrZ;h}q>p4#tE_vI z1rkb1nB%!@`lrfG;`m)z=jxmX$f6bsHMxv?V?Ws1GK1Ld7Z}LqerB2MzQ+^jDGTB@ zk*-JTI__A0_Bt*eCH-W|QuydQW_JA1gGpIRyx!Uwvgc7<;uP9OcQ+O_5E|)UgTqZt zLIeDY0V;)3>)V<2NvWx|>*IeF$apX85A?KaodkM>?lXqA)=gEy_ay`0v@I4l{r-qP zM#t(|+p^Rl{ABw_XkUi&KIG;qKc0)nTf9C~;YR;pDk26MF~FnY%YQ>OTa0M$Z=wC6Bw^ zIfywbxT!?s%*{DzXr{D&NWqsgF*=8Ty3U0rOw4gRykNIpqgkLN7mk8#9}ZJ-(A)5# zVtj5{%Tq4VL#$3{S}(E1fIelsKHrzKw4{GX`)Fx@fb}mi8+n_jQi%56(9p0^rxRp{ zsY9l*0M7-O-798hX0F&?7Mpqgw{pq7-=9%^4-0z>Kw1J_j|dvYtjXJBfPVF;*C+^t z5$Y=~#~mhZFKuS6MeUlP*Bftr&fBpRIEL%4^l>po{mSs^1~zIun)Ci4iBZa3em+V_ zoM$1WT_BKADTXO`wwvGfTrSZ7-k;!bn?t+c=@v^}+4Qsrnonu4J)Ya#Xe1pRPVL9M zvoobs>u?DL=Jrlmst2B;nkko}33t_q--=7*knY1iIaYkym+U#76;%BreaJLN;jb^P zGQa6e<*&bMg@X1GEOcQJNd<3q%lLBdT_fG*eM8iomz^$Je-a{0k6~sQNFWD?ceG)P z#If4m)}qZOaKh?k^i>(3YaxXYviLmX$^EfkVlh$V(NtGc!{WH5lqH*FUQ(}+DaB&a zPYM8FgFbUK%0F}aTgn%=&ZqSza_I}>S+X_4zS4>T3flFt{pAC99ZXHHkp^=jxNI7f zBRVL~*=SfoQw@kU2}DH9LovBAcj5c{?dyH#EWppH6xDyY*JlBcr&jXL0)>vpGuafC z2C9|zTpgL3awfmA-5KX7a)JJ5&!Z%5OHfI;#xp+nYEq%x-9-IDlw0yVs=jKl(Y;uG zo}l-+F zQ*`}B0=I?>HO->fk~I__=G0N}BzwZgGep}pLEi@BFBjC`zyjC(Tr|^7UZR91+NJ&1NS97rcwp zk$MW~UG@dah`HLYSM9zuc)FHOB-EepR3LpbvV&LWzbi<>KtF4%Qpa7p(ixa@GSHR$ zeL%nX)?!FlfSg-Tou`#jEAJn?FN)jcvw+}LPL~bYLJfJ6Fm0@dxDYR|ZwJLabYnvX zRCUIGe{7BBt{5F17Ro#o3t+!kTo_ zg}mkGjEu#-v+cOtwmhz3P*&q3A}8v|6T0&)a6wS$cavX^NHAr`HxBWycYH6GQYpOa z-yk`V2~gn?GM+SY5-!f|UHz836KkcZ4fLNUCze+yK`&WZlQdxbQ#Iu=f4^ncI3kV& z9L^Jc$LE+hmenW>_!#U%#IJU$ceYQ_(w`J$J_QBfXN#voty zIF4;v1U3_uG;8hc6EzKUfV&qE4Mk4f66bZ?>5KI(v6~cSCnN;yH|EQ3kH3+W=*+U1 z@UF3cBT|^n<;rR~lZ9_7X5*>v%?yW3Hlk&4OViQ$^HBJ*AY7@6e_!B0%$H5DefvlnY2_C22Jpb%$6$VanaxBlQ9QsD>T2M0Q>kyza2EX(xzlNs( zPs}5&puo9116@wA$y=&4NYJohVZ@Sx1~4`Gkqg)_81!CR?0HzL;;Zyb@FJVR7FW`( zzeo*a_CzEMIE>7!$pr)p< z1#h`8y|KZrOe%Sg>zrC310S3?>+fncAWQ;ty>hSq%(<+rLmr3wQ(@S2j*(cs>YCJ&xU6*B5BE?3= zS;?N)O1L46+64}(vqApi?WI?pe_ttHP899_1+GdY{hL3!fm$QK4G#jpfPNQlESFp% zL6s$u!%hzVYXafbZm@yHx{pozGeBy~N1~$idle$r>i5)K=W;N$#6(WVo`{5HJ<%Dt zv5^-zmP(y(JY8KL9tEmdCFuVlk=S`!G6MtquutJBYgCCuG#oI=Wi#4dvADG6dfRN@c^t6DHd9vtGYkFAfEm$f+|&o0akszH%B`(u-^AM zT`YC&sa^5q!aZY|mFBBAQl{!v)vwpwVDgZdxjFqi4^RsvOtk!h%ufm2*ggftCi`O{ zI=X##F&}9t)j!OUO!`P}M*)2T#nzvvj_17ey(CFRi~c=x_7e+(wJsk$i)a*ShZ{X< zBBRQQ*f)egetGGR-d@>RL4kr1!eN&EC^d z%~vUbo>yFmC1gu+ZIuOS&VxdI{VM$257Wja^USXQH&P{<|$j*&+^UWi*LUWG-=2IYjShv zu2XmV=XqxE8rUH5aIRVFH z60R~+9gYYhAxEWeMiWIP&c%I5J+0IEN!dkswZ*XU){2gtFr%I?kQ69wX1PuaPm9r7 z_c)#6Wa!C*PJ{WAKibyeG)HIeW3Cy`=s$l9k!CW^pN!-7G^J!Gre zjl&m=K3JNr9IOlynDFyC6W><M@*e-Wi@se%&R z96Z7xN<-?Q6dAqp6t2!`?dKAaO_b0-T78GGp3(Q4R&_DSd9jbnsu8~+)oC-j66TU= z#gJd*Zzf4%_`@H)7=#ukFL4N|P!aj|1e2T4(l0}`f`BS?-_mM7i zcKSB4msoCCSa;X%Vsk9%#xU728Qrk~)1v@f@zWOq&clTN8bAnB=W`A3KNL31pc@xN%nJ})yPaFiaC);rP#MEkEyp^qR)qCnn_1qddqNDE4 zAR|5V(jX(luw3s$$XGWWs6j^4A43@>-5%id*di}aZg&;!#}#G<(S@;6-z@$D1T9e5U@UU%gvngT*O* z+wc5ffXXIHta8aNj?ppNZ#0zp+575T-BhK>Ct1KstL=uKC{7Q}z2d`y2PDa2g0*H} zkc3`5IyRO-i_^mR_Q=2Q-=u`YGKV~ztbB^Hto&4~F3YEfayNg~y-&sYHdJ2ASXD&e zMP=5AnalmH6hd#3duV5;LmQt3jM+qXet$rKTGGo;nx&GO@l5#Dy}SCUt*qU3B<(hI zQUG}K@U!l5tItlA0E`SnSp@J?fr7ChDt4Yco^pPkp<(OVzbDgwzB}IT;CCOE-I^52 z)Kp%&l}3}>iIw)yUc)bcnj({C9f24Ao3m3;PAjQ0i-}KyHwUy3xC%>s`B~+4Ph4Cc z{0OSMm>OuQD^E#ps3fN)g{G*%NX41{=G@}ms5ho%@JxS3wZFx33T1cRGb)N&kw#si zXR*cTa*ZG#uW)BJmpqfqUi}{pPpdQNfmmwI zMrPnEm75YGJ2B>S>O9Lvfab3Et23y;`^_Z-Iw%60?kn{%{Y%1H``h#j^We9U@!bo% zf#n-tAPDRIxgmAIk7LHw#QvyQ4Gw3T7p*DEMYl{${OAc^ove@)5Il=L?ZJ1V{EsVF zElP}cc3t+<5Gi%G$){LO@g7FVQ61>nG9t*XR=Nw@NurmnbIN>zdAhza^a7u;zCA+{ z4}Ir3$VO{6X2xl>D`k*lug^YY%i1n}EnuNeoKJ!;-G0baYtS$v9>XU6V{ttl6&f~= zZ8E$bjgM7SXtz@u@}1J(sJU@2lq3#7H5$?m8-r!z#qX6~_yy*}lX%seJoE|vvrhcG zGx;5uB$f&{^9@{xPtcD`B`*UAr6v{Cu(PP#sDnXmN61%6iU1IMX%&^bH6(l1xiH;Z z)p;=riqm~U+_V_z<~&(s0aRPzi6)B!`P~tOUeoMbU|lk{pv}hb>A3dE$_{*thnpEM z49dvd%+;I#V1(r$W3g5)IfcjPx#ky)|Is9WT8-~HANq@n=xH-u zdbeVER(86%A+9(~pdAI4!1?#l!NrP~sb#5O&(Ye};bwNBZeR#mFzqgagR7)b#R zH&@Y0TbZ)JzPH9Bb_?PiIlHyj6JVhus(k^LL)`ey{Q3KSKA-6y7-))@AgO z(oz3NJzQsJf7|Gu-t;h8*?%Voxd5d6_7%LU{B?8_2d1IQ zTbcWkc%^t3k=HpyP?j?GJN5(Q7N;Lnf_g)*)avjfqsC?h=!kho>m5gbNXy8RLU7Nx zS)YmP$8(;h3L|p?deZQGFTr7BF~R-N4USVCpezOVK3;4Aku{NL%QcDDTrdl#f1`s! zfArnhikEa>d~*Fsq}gs@=57GTi}AC`S}U3Y?dszI4N*U-5`3IRv0Md}e%yq(r@G#S z$wK$_j^L;ORvY;JV-6dvv3wEH#|0Y5z9{O28=#gl8|yw<(i^YEK}SF1xYt8#Uzd=K`+S7%{mA%~uuoG(RGM60 z`u)AT5P|Wz2|T;)ShY@ONq^Rv#{>UjRMK9(-kzx&5fR1 z$5znID}*m!iUT~W;T8HIT?ey)sKU&#eVi3_#sj*N%PYnU8&&2Q@8 ziyNCUgbB>Vq_OJ33(Q=PvoIq)Ja0_qe5Ja9^y3spR8ci;87w7B7NgApG{~L*^GT#V63k5*{d*%{(y4xiH>(U^5oP zLgXq1pWEJL%Y3VK{KU9i+@x@^TlG2sldXxk{dHDJG#{MaUxntAiwn2By!>NiGd81c|`!HGgu!g2)y#7_(XA+S=1>z4Ar-z1fZ#2msN}~q<0O9k!66++5 zMo{L-Fn($AvG}_$dPqc;v?RRKoIHn-$Pxh<*H!C$-6lbx0xiGJN#b?nzdW5txH*=~ zlfNd2rx(puZ2LmO=~t);Y9{(x^p}1$XZwMwy2=AW7hiig64+q*yaQRE@}DGf=Bq(w zFcqKg5t=tW@Oe4%=@^wn?XL;T9V=(7=WZtJxPnr=$`oub`}wvGbF+UZudrI6Zh&oXezE@>RXu_!%DFM+u21koDeFpj$=xhaLyY%GUsK{`wW+ z>SVL+LAZHz)IA3u&Xf)z;R@?Z;EIZj6yBYNsnLzM`Y-NXZD_O z!k~LxM5@VJ_i|tq(Ts?mRF!k$XlK)jqNKSk<@5k* z1Oi6F`v#I{QA!8E*6BpCN z1=Achhy7!KWG(GUC`o>A=+qRmXRV~o93TlmRsIBn-J^85mxv6ql{K*)bZt}`|2%7e zLJJt^iJJi6o`tos^6x0F|&+Yu&OoNeWsU&i@8cG=8CN|Aq(Ftn}Ti4#qE z)_ASggIq*NxObm#y6F9F;<1GCrr(F6xxk!Bml&>v}+&Ddj5o zGc{iL8281?7iw?-T2s6)o+I@BH}KR)^`|jzppJZk&2?pEF)@$u+ugaX2bCKl){)3- zD4Ie=#Tm)x&HynqF@Y@qc^XE>XIxbq%~XtZ1_Uu7(@mW<#=KPAKo3&VKLKFVTILY!dR@tF^1u>V0ekz4;DelnJ`E!k=% zmSqhA;FW4$4ElOW>#P!pb@ta|&XXwjh&j<2v*l7`7aBb=8+DqzJYT(f6+%n*|D1%^ zu3O(Lx1QsTXEzfDgV3lJk?QN~dz?*~d>ntnz!2)^=jR~=oV7IL*q&cN>sQ1)=+YWg znJMep*`D$?bESo9_o85bWMoqgui+d!qrntj6BDYF&f3 z|Dyj?jV;Y60{%1Ashe%Cy2(o3DnMYSz0ykh8UFewdwZwGop~{7=^jls=RZ$?-`TkJ z?)i}W;?=uwJX+L9~d z>lkQgWp<%Qzuu)bZbe05qCzqAe{oj3xTUs-`W~$zHV^4^H z{8fo@Vo#~4AoBX_mQ}TmgUviBTO*S&@#tz5OTR2hF4_~0h%CNa;hQjM(|nYxl^)Zw z|F%#?8u)wA$WWo#P~Q-Y&G<#w@HrYg*peLnbx)TORqpjk8ti-_dvHZ}hJ$42HGq!sHbsky8T55D2*QA{GX3dm{5D^hK9BPpoehm!`A-l0b zWRm&gfXto6VdL{&)4dlE+x)HDZ|ngf2vTmRT%ZwkqcfJKIbyj>JGIl(Mzxw3^_OGm(O_?;Lf>E}-Z(;sy{BNaT_M0r~ z{kgaDPNP#n=ALB}7~vtFOC{(RSITFP0CecFEz3(De(!*qFwL)6>tqd-ONUuP6pBWpe)nYSibsQ_PYa0qE zX6M#4sz1XhmWvFbAGRK$V7z2x3H z<1^{V7#h9?+9g!IgTsfMo<&c}ZwZFY-=1ZQ8MfTfDbF%ai&~JcU zy<_>)uz5VNRJEX#a0nKO7&FDwDHOmLPoLO&;HL1YyOAdh8*_ua*_qdYIq@q)%A^`0 zr;GpvAO2p`f)n0zER(23doXi<>w&J$TA7c2CvaqtU>dLKw zW{yEqcA0qgARx~I%P3K0JqLV;*q-301WqFmEFYWzP;n^&p(2R9Z6k6*R{b6LApgn^ z7Yf*&QAP@!(DD5kjJ6Z`{3Ih&-A?xRb1o`qTEd=B#2ZaxO z*&2O^0P@lAO-*Ld5*~PBCR|Z}ZI2hv>VThfP3umG1F^9$YYoJUxcU0VO|A#rI5_@qqT?Fc@TcAH`AI(*a<8?HTFcQ4GSm6iX zZ^uMHsvXh&OJ0(Dx=OXppw2mvQTu3jc`ef#BP)Zj>8!MHatrCi$@$Foh4FkC+s*|w zQ(x1YhB!`4#t)}j0Red#bm#=@3}K9ZHFxJi)pn17_+M2AanTpM2nUeEyVJ=SBr3Lz zxlDw$eJ0bo)y@)E zi#Q=i{0WfO{?_JmIaLO1G6(%H>uKiB)J zt#bn2aMAvn?V>TZl`z?+)_xx8{_M2whA6gz77J;|Z8tayG>Z7rko-Rzw7|Lyp^B zJIP>1koGn;sfh6ifWAu_&gXptFvlYCd{I8A=%8Is!<1jzgYGu#Rt|SI2Sg2}FIbRB zXVE{e@#^GeYQGsbRWYj;PgCkEGip$#7{o2%feFWUbkNGmSx;AA8Z zwN{-iJ+Q5tXYY!%X$xS;-|JGKP-5b->eBcWE-Q^aq-hQdx3n=JPpoWnV+yWCVAw$# zn$?jN5g^(ZvJ=|lwc6WuKGVWKonO{!h=2P2@`&@M+u1oVf@@y`jspwS5xrZfgXg(?-zYYDaGW*G$>dc&Y0`FQP zZArygP5RjSt>)|3hVr??R!p)7 zbZUQLz5o0(P<@|kdN6fy9VHMe_w;FDXJWF^(wDOGV>brzkgvpBq_JE~@fGX>44N^( zr};cJ#7L?e>(1L97fi7yq;-}F-yX;$(iJ8AUp+@9Di1GZ)K+L{iKd%zAscFbzcEV$n4#jP{<`W4Bt`ca zfAp(EahR5Tt^%{&D}eSeX}#zWIRV zNE7jqX1)_1id}N}`v#+HGnM`a%QfN3krAF23i1?p^QX(-THMXO;U#cz>?&v zM9+H863H5mq+|Rzt&|jiq_hBE z%f~a|B^v7GfygPhCE-Obc{h;AEQJe2+Ch9j_;z!b*oPSu>WFJ5@wuPR_mZ6Q+K|)h z7LAwRETQJ8mv^2U8yVRhE`Rj!@OXlO(Mxue7?~{TX3R-$tx+%VS_TL#0W=f}6mtss zDh$w#mS5f+067h_yT2{5f8(%=))RBsTMmm0v}*qoAl|Ni+q!k8(+}Djvv-t(gB5!o z0iyEn$cQY@O|64`%NhWJZ>8zV)^J3ZUQ)}op6vo~E=Rs5LA6LJNUPTIn2LE2t6@(? zZ`Y|kz9DQ}&>0BwCrhbVn5yeJ|vcETlw4d;=FKBk~pj(BiXW?+ATMK-#U zEbud)Ry8=y6avrdu%7#EJ~rF8J<;)KFkf}Eb$-pka;%@*Vy4XAh%`61s!+OMqOFIi zjjlLWNmgGnUev4Tj4Luz0;G@J-|Ru?VCY03HP@XN3XH6GODT^4);p*?q}CT z3*?hIGBR_6h2-S;bP`ANvjYUOv+^=N2@~QHp!US%!VTJ2ts7lfk_Wt|W_5EU&9N|y1+W(yA|g?p zCRy7!R+qXu%|d6J=?XJ|N!_=#wcR*=n<&zjeo$$S7sM%Vt(yPaAbGL)h>(~4e1eS6 z`e@EMW-gWM*TphW{<#7cwD~I7nQ!FF;@#a=D?cM6dc%AeqH(&|)?w$fYcj>^4-S4#OHb#qTYkJdQ>fx<+DPzB!RpqDmK=t=@I-fbZO~~FUyv}WT5riqr9r^ z&Ftfblk)}IYL7+4{nmLid`%Qno*-xI^WnmUPyu84-2fh|AB6#H-uFf?#P6lDUvLqT zRFCBukx;#%@?As4`WcZK8Es@}blCUJH^VsgULe9?DD5M{&P-J}=#Wt;(&7O?aQD^e zHjnGkYt>>MqcK{%&!8VJIP#6OJ*YOof2Baxte7pE3G#B#qLBnv3Ie3c0a#>Gpw9!K zAOeBd6ziauW)-wu)T}*Z@E?Qm?Z72>0OuulU40fT6qw#sqV~Y#h$J`Y|_a6Slc&PtMU@GBoka|^nZr6#@7A%&OpGxr5uFI+Z_#|;^hU9w}RR9sH|g- zqPRe^5VpFy6A2@=mV_)es0}_hdNe|dbXC8J_@j;2$-vsa#5Czw(<-8QRjf-*MRy-s7E(ZeSLc;fi$|+=>(bzU z-rr|D1MK1M_FVTprspRK2>_&fKYj^duXvOg-7e7MKU-}FYBkgb9XSUF_SDo=(5oH@ zOo|1-%>Xxd*5QA8{CJt%up;9o_-j0zmmT4JPzradV*eO>U%?A5|ee^B=DX+Gw=_&Brmzk zdt_)J)|{LR(JRMo7ej;)|)@D zmX+B~Y!Xh^6Y1=YtE0mJKKrMmL$S=T>(%-8d;=et?0O3-1$ZuSb=43+o==`W1)Mqb z;qw)$!3K0UaK!K7k5CrF;6#FB_e-(KpcPitE6R1BUIBm{#L ziKQj^!d|)_Gyv{kPZWI|*&6%)Kd5`lsI1qndlVB3k&s3d1UB7Wigb%ecXxNH2#Az) zg9wOpcXzka-QAsM-R|dk$NT?q#yIEG8HX|U-Zxvh`Q2BnYh82AIaif?e1=}fj9#;8 zes1*lzXz1t--(P#;FzVjp1F8*)aG>t* zUvCe91PH+snEL|fN1HaC(ezq30ZeXbY`jH8LOLaVyLezuhTJQ0b zRYxQqcf)!MHep$d?$()ABiXl0cY_2eHX7_DPxPFI_C)VLej#?7kaQgh6CQyLx)~6=zueh4Zew;x! z9ej-0s%|FT(@kOHZ1|8cAu&!u?6~G&n&rc7v4H~jyW4KV0~v{pV9;@w2o*K9D?g6Y zjuK)a%|S6L-v#|KWVu}1Rr`@7@h|u{aD`7?-CkN{=(urfZDXM*q}Pa+9Qy>?G}+loh9nw5GuRElX7@ zBXCFX)i*bHkBL{of|?(+W-eX1ml%5DxsDTX4IVGs^l~H?nxY?UnT0bd#k^ctdglG^ z?QT|w)@ax#viY)da%};>SE{NK1Y8kKA8!qp?f3jpi{ll3Kubz~evH3Qllh*>oCBB> zIty)ItM+>Ye@fTBDm71VI#Soa2$WLyC*52~n4@$`*A|_$vAMKNj_F@kJXoZva#?ie ztrM9kbQFEEIkp%-BlObqlQgc$k-Wxe8$qAng*9mTvK zdRN3OD&oGR^YkUIu#`1QC|XQf9X#flacr!9xrp&T75>G&QHd4dOKZH;wgf{`%#Ma&>Yql>mvOjlwo@_IST@J!vje1= zVXN|Q`W{%v#rm8)wJrZVv82sXJzSPh<+w^JzroX3&!q4`qwfMrVp}$=@gdffI%-Xv zc6$>v^nKB!;>KDA$ce7jzSkGasvo^=b5T&}ep_0ryz8qVFFi}@OsqW79`%Td-Fc<2 z$zf;wKEb7@wylG5@!uiicuF}^=xk<|;M^gy!W5k5kl`5WeH)qH9AO~zgD;q3qWZdJ4FLYouoA2kxE~f5~=Zot0Kht9& z%1-DIPuFn@CPyO4i(}7UDa;oeO`DMw5HJm?uJ%2iMg^cQL&pMDd{ruQhl0R_4O731 ze#vh1A8}`XoApau`~1e5Ar>TbDNIw`$eRyQShh0X-=fQ%+!<;)cA9PNb&R^+d;I1` z6hm^%O>qk5JCVf1+Jj>U_6vW?r{uB>=h%z~iQQg^Yn73TmJ50yree}C0zW9kRH)E6BdvF$T zAEN<^MaoO=X>^O#_NH$u8Au9g5VNq3JkgWWZPB;5V_va;L!%D`85xumG5$mv6+R6= zQ&JXAN6>R?&M4d4+mR4hDg@-bx>m(PeaW144dvXPc&_iM@(9hWu=327d8;={F)kgFvM zyw}aO>&uTa`M$9m=+yK_9le&Io>3K287}fhm9|A)SftYy^|gIT@gpkYo~XoU$yk36 zhi!Fk7=dsG)#@kF@tYeGkDhIG-a>WU?`F%VR(146!Pf>B#>Z+G3`={d<-%TnHwe4^ic>~vf`JY8PWvjJKX_YdC zKQT;(Zuh5%-q#H-c_k+HAePnahjb!ubp1jCkITwn8Y+D9RFDC(E9V{bLyZ6l*zA@0 zg@wsbL`A5CrQ$i!u&{(65z}zpy(1+hm6DROGayd4+la~s_8Jl(xr_oY1TKdy-N_0& z)6oJiY2MS%hrub8?WwBsh!g9t|MpM$ zsxEd$qh6FBWRp`w`oAinhcR3$p70*U8r~TvM#DyarJ*9^T)}pYy>#*tDve z;AMsc6{lMc4i4_XQ-#~`{l|}&!WGnKfmoI1uswy~gFr&}%8t|vakX%8JVv|ElWYa^XZrs!_6FT`59xwJE|t+b8gbA zAKj13|Cl)a;Yl5ss-}0OZw(@6jFKJ|zlGEiklCeT@xHOX-rhZ}_VP&OV~I+J$MscN zMa50aVKoPK3alWrNqBIl-#5zl?5SLt*e97Kou|(TrS2XyM;NZNhE^}0Q?&CCr^N^$0Mvw z`*aM7Kn&3m+~*sG&2Medf*C1FUuZW^GC5|lyqKKWh+?7o5EQ9U-_PZB?_#Bui~2Gf z-*2f}z%QWl1xo*6j1f=P`qB+qW*ori0!)WnK@l^_@&RO*59Qfn9|7=!hSO zPzcO))e4909+3BgJK*_5E_l7sTg?ezQ7hI>I!t#bdR#?E2dpAq7HsF%UUgJC?Hj_q zL$vBCj2ubs-;ra_cX6w@t1v4kcfrRKG1_~)Qk#K3YwJ}y{gv1}2slZ{`4p$-WVP&x z%L>KKr^!k%=XW@BS)7giz6J&LBh^|r@1-g~{w!#4xxshQcW-379QkW{J~?YouVQRO zTbnkI?&=5qF-?E|`rK zX|;WO@jK(aA2{|Q^w&pQld*cWP{iMZ$~>@Wi00qbZRimbFUA-9d|5P*Y>PZ&)m-26 zuBy&LmsDX7{XiA!6ms{RJiltuFC~cJ4mRD=y6ezdIt`_jm5|KplD-ng%#vv|5zWNS z?P>$=(+Qghtalw5G1py(m+QIOeD7OAxQYDl&!%-Bp6qqLqLeQ(01=<<#tC+Ca5znvauuar2nZ#sPW9irpUggveMDU!Wdi|QdMHON zmQ-Z}xK|Lr)0#h$*6sK5Ndrz}G>~#1d;cUBv9b^>C2){1`uz(HtUHJg5)a*c9us!J zvPJwYggc`&-z75yP^edv`4e!2z+t1L+B49l?@SvS8VZ(@L_m7%DyRmu3~&*q)?uKd zMt~XOekWb+-(UiyIbg=r0k5oZfAduH*j9wYa{%dP65fKt1tJ^55;k5Wv-DxqLAkpP~ zvy|z2b7iFs@o9A?5VQ!8YaLUM?^SN;DQPm*>&eMsg8$~pxq;fqpXuqu{c`FM9>c!p z#3Up}<0Ui@Wx>s|C6F+d^ws5@AKeI8c$Q3cO-RIZhC`N=y<;IDkn+JaX{x<<=l4K^ zE+d2P7rJT}m))&O>}cLYg7X}f?=}rw6I`bXKdZ+5hPEI1_&n>dD!*-V{9Ac#M@y&Q zN&Hi1EPi|Z)!3ULKKB+=10SOyYSO)Yt7he8W>dq7?P(3})>^N+R|YkgC9G!SSM|BI zWUxIbhO){DUCuYAM=yp?U87^t_* z=46Aa_x3>Ix#g2J_DB^hB;{g8#+C%m z_X}@y_EkK7=WK$fQ1Q+IbD`7zQ!?qtop#gS?|D`xe~Bg3ZpZM_Dy@0?t4I<>&gF9T zB#;`l$t;s%xEOGq9Xo(q6est!E2+fKBJIp~)@K{3u1wKp3*&J7`p3rN zYq%Xgy*xYYoVWrzk|&VIfMIDt^-tiu6dC{dip!+0Ypzn|$N(t!(%PR)1e6a18ZD2; z@YSLsW(hJ3dwctrq@;RIwB-5u`QUsDBk7rzW`I`pZoJS|I;z<3xjbWv-jRT^>_vxl zHQ@7Y6?W@cYW~)UJm|EhEk7(62(9)jx2 zwrjdsK4()dz|Dyu+9t~2%S!uhC!(!Q3>4iC)f@cQ1}2H&-3O|i931@sHnUnx#p#`c z6>d4?vo@}h{QNiV?Ukl~R9Exp7vdIUuG9h{op&CP!?v&3$_F33dd8 z4@54b$qE+u4+%B3KZ8yS620jNJ+Q41WRx2#e=@P*phz(q{E4Wa%(n*ZLmu5<>0q(3 zxw*Tu(^f(&<@Mm{FU5TA{Om{)V&ZZeYwI5{J|CYKizh-=KzAilOh;Qrh$N_5 zm{Ws$=xfW3DKA=a_1e}3Mqz=SNu7Ns7ZapP!$%+dbnv8k)VvH5_FKm*bz=|p3(I%x zzJw{UK2_y~QoL$~tuK)L;=g>k2c!*PE#6|e7BwNn!iq>u+XEtFlP=>fL@V@X&jP_5 z6Yd|{9bpth&JT%+Ly)<+DrK2A(v(?{e^$96hpMB@6*?_DdW;!eeL2uImsMEm`N*}j zrDZs8>0LDzGk!i{^rzt2J-?;o&9sl}0johJi9f|f-rwZm!C{ztRC^KfIWZAK!`%t_ z*)yRxc{0BA#Kbcnku`^DE$zJQ*1t>QOKtMS&Tp0LH54rt^EdOCPTqApZ}|EY%o7(1 zQdD1K9-U(bfBUQugwsQpBQQWJ+~clo%Y&LSY_bV?>x*K1IZ{d9Krx(FJFzM5*`S?MA(V18qw-I$u%>1NyM{T+5otN$Q2-pwfQPtbIH_G`6o zZp~+3Q+q}$o^DkSi)`(WTgaqIC86rIA5+X1Qz&e3TssL4U~J?cOX!_;#Bleu^Ysod zk)=(O)OC5V{Jf6;v+ox7%defLOPju!y_oO_wSkf z$pCAXo3pdC(I58#gQ!DnQj#F<2H*e#jWt=j`D=78hvf{CT7~TkZtl4LWZ^>7QAR{v zO-AMk5^Sl~$;o&H4Yy($J<9CF_vWVhJ*hy%XBi!hE-Uq;d+1=ha1maqc%n@ipBdK@ z$ZX$wXRiVKirLUTW}K&V&x6My|6pIFCtjR3xL~p>?Dc>XGO@x5y^Sn2a5iL1bC^_0 zhbUY%oen9v55w}k^#pF;MsB35)x8^G>84hPzgR-6sV>eY!qK1P$#Bd_dMCkS>c<?bK9SnGAaZY+;hm0Pa6C>Jb<7-vLpv#QP3vyP`LlZJWFWp_n0 z^IdHIh~CQ;X`n5c*(9Yg<;d%|VAnp&-bx$|m&xz}K& zFDd$sCjcHDknM^Wb*1_uV9ns0*2k8bCm!2#m0zynCN;cJx2^+na+27CyV5h&yUtsp zeZ1qL>@od|FfS!5^Pg z4R7ddX&V~e>>kyXhW6=TH%1xVi<9~`#9@J_Qfe8{?(H8#eEf|yu# zY+{J{19>fOOQ`;VV8_aTxd2QGwdcM>2JXE>o4clxkCq%hv0DvAWB4U2Rk3sKv#^+O zzJ;X$W~T2lBQXACZ~)KzLt^4BUf#!L6)~1}#f|Ol0?K$PsnMchj2MLR9gCet0A+Ug zVu*rNswtSn_u|Zi+t*jWZYA2*@-y=FVxu43lu)&^7miSP46se=@h$2SJ@hg0c&~6c z9eVatB~4BytpCv#nm=#huy$gpN%hZA!3HY&>fmg!@bj0qjfZJ>w7$-r+s+@`cVcNI zxb8hdK)lj?)lGYg{jhY2f_RmK$BOrlU19(oRP)SSh{>abqax9x1|STEEENYYaP&G| z#&w~z_Ie%2M{it)Dw!5^JJEWlQbYvgTVIa}4%a@$j?*|)E+@D^)JDCBifRBU#3KTB zdYe1G2=E6?G2uK#r225rSqkLZY74pdySqCeQo}tOEah}n7JqQdSR%$9Q-W-wvLsny z*#1CF%3CtFjPcrIM zX@36Q7rx!rpvE79d6qBYF3Dd9<>sOxaUZMJ;OU>*Www-tVdU06=Ca4R|HJv1)w%g0 zLvGIOG>)`*;{=+EitFSLgQw7`tY&ci{SIq=-D2Xl_NQ(ICaOzVsBa3v>i5Z zm`&uXmPblax4Ja;ih;LX02FS(z#4%Lpje=LU-KnB9;+!1*o)2pvDg4u{0JJv__}Za zUNhW9pQ=J0B7$aV{b{Ot7p{xu!#Vw%mD`$!#wYd8v zeA_S`a#RbK$5@zFSCvqW7(ar%5o#K88M@Lk-I@k>i6wA?L*nEl|-n`MqII((40+Re&YPE^0S8%*zRb^3sk>362VZI5QRKvz6qxI0Wa zk%PtRY+&q9Bp8^lkdp2}AAmxaV{>pT4Bk9EIy$O4U5Z7(Xpadw6_u@He<0BQ6!!88 z{zTrEZquK0+qE{}%P~=CM`fyZ7d&a48n4JOmcEaR-Zzr4o_w-lf~=*%bx4)m@{vYy5P!ryR9)0+99=+EsenZ5>LJtz;+z zLOqiIXk?a?Z(uQr#oMQChp}oCOu248-i|liCbs?mcE%TQ`R+b-9UW!P3HW~J>V_+O80~0Nq z=!waI79hO834+u|BPE5!x-EiM z=7{!~h}B#;sKFOQ$YMU4Nf)0=MP_PBC}MaE-;)A8Mg=t zX2KOTFC53$1Z(ZP+dfnpqM45A>Z;xSB~yQotToUpf+kxE#BlHy*Z3R=X*y z5SHnPW>$Z>iNa9uof|j6NuJ(R@gsWsmk~}xu?d1}MU(_^E&FnbptcU`I0ina6&aEn zJtRS|rfXXIwi?LFDZdmklSEAv0xyDT$wx>)cQVc0Em`979N$Jn+=MPugh3V&riqDD zLt|qZn2)ZnP?x$r%WVQ!6w{>H%)=>P59hS>4K8&jS?P2R=}1cZ*ev^(_Xr2!*(7?L zqksw(tVXxi=WcF};YNRVIb`%s@C&m+l#*b#+GeWas=K0rqx#``fL0+s8^0VTwUYJ( zKR4zQ+0K+?+p0*K!YTX()NXvbAi|r~Y?i6~zqX zXIqtKRQ=yX?*F?V0tq0qhf3PVa7xV8Py58A4fXXnl;gRH!A-`?QYX8@Bc;8HrH7#P ze#m4V5tpnlNm4G;=-o2#S~BL9=Uq~!+X_wI6o@IIApdE`-4SO-&O{VsMAX!@b(pP4 zjP{V7lmGmv1;zg**W0(27wqfu+cP5x)4MfTJ_>X1@myklEidaoa$$)LNGjagnwix) z_&Q}DYxVFEvw2|PkedZDt5`i`ry?Ad`ZHSg0KjEe%c`WE$P7z!E2$*I*$%q{70 zHSeK%r3CfMlgYCj@dSjl4K7E(p}Obm>kEFRo`863TUhi$bllnBC*kFN=HcOiXd?r4 zgd6N`XUxSW!(@PG?kfVW2_V{_vPH8o=HI1#EA7Xe&1BBq(lFAq9KTd3)T~ZcvK_Ad z(Sg=22sjSWD`p{7`ljVd-wUv#$!TjCur6BlDiM$X zAt~gjCINU8-OFbD`%5qHc~=4d`18MOe-SZLt9Yt{quQxmgAS7=z$6eU)NlO?*wxXW z`5rEd>bu6!edRBld$HSk|K7beyV_V6Y8L9D?|+XH0wd){VH7h8>;tt@!o#)lJPVC# zZ9ZZ5i}UGgGIsVTICpmDgZN}YYDaK<4*ss`s^yIC?(PVskf4%W>`%nIz*kmFcQ>s@ z^;gnGFKqR?o*r7Jx~fsg2pmDVi70xIg|dnT8o8V$bEdqDcbJRX0724BIlDNz3V zov9E6dM=q#b2Tt)mS53<=ZlrLSR2wG&eLf zSWkGghmax;eg$UjK`Kq}MQool{;{!SBi z!)k~!A}BQJT~BsYdoeIDZhgqjwdjAU{&xvjhsDH*K?N;80Z7QVkbN$Ecmcg90n<{% zng%d`AE1^zw{!cr`1sL$9b{CVgD2nzt_y_METuwkC>G&LOG^U-*vj4>Y|J?j0$lMl zd8hvkJD(ejZf$S(p6)N(xOM}f?Tf#E3OplJ=7B|o%Vlp`g2duEYKmZgB7psG-@XwX zi;9U6LtTE~%GA{K#dPo&k*i-*Xu%;VoWf$ts;UIwqE0(x0|xZCU`Va9#RmBUp zFNkH4G8_a_UZ(d1hb(~$G3YV_t2D3G8XoWE$%>pcd?%g z?TBnO32}+ET_9#@QCs3Wjf>;1%=K_H01-~Rx4+}d2{!av!v}^+0 z3*62Q+ILy*-@mVPQv}Jy#idK1374UG)O0C5EkPU38xWYX^wy!*jgI0P7#KX94uDxt z|Ie&9A;<=AEA7qH-B0zVT=yjrd|+i|JXj-Oso)6!FB8aofm0^DK9p@`Yuf}DOlY#z z2j>l>%?Oe5>({RVu$#}fiC0`LVRhHj{F-h22^2UZOd;&a3Cim;qT zLP&-Y5!*Z% z-3}g*I>^n{waj)E9SO9SI#BuJs4<5G4pf&f#*bjID%v^~$42EWPvPEd4K5(+9+!4- ziUKbdwm-`6EG3K&d3kx%JmFw-Kui|ui|_*m=ZK4o3j~P#?x#fi1i21wDC|^Sj$vR5 zcK|!*>m|?M;Pxf#4lC1gLDAQMfacE5Ou3#neR1Od0~n$O7YM^DU{Q$`Hk2$mQW~9f z#zs6hJbBgMR0r|W??11C(bGnqO7%?=gC$815PyJ%Homm7@}*sun2`}3+Bis%g%Es!)E>yMHrEV$u#k z?6|hdJj22;O|VntY;0|dqU+HAdlEh!86O{)n|WFK^D{4u5PWGf96~oi63=(0rdi?Q zA!^!lEGF2mJIV%5s%wLNe1xMV&}CxQ34`|}>;k`p6%EL5|5H{Z1EB*6_J=&JuSh$- z-sa5-erP=h((fT!q2PDbB(j|8JrHH&$JPi#M~ASaDfEDiz~QhJC#ZmeX!myS-V7{< z)V0oFjS^M&@JUXwjE&SyWA(QbU!8?>3KyqCvj3q=v{Jg1#1f8wr(T0WDw$}qOOc&u zW|Zmh+s5bx7Z+CsC<0!#?j0OZztGV$I}6{?&(fcrLm3Xeg{t_}_z{`lnX@f5-7Z=>m-C|KDF>F~)W`wX|rn#%8Nw zLbfiq{Y6AnHlBp|G<9Zx-wK*`K}iZ5+hFqtWZOy3!UAF;YXoTRbpP)^ckF%IQj2M+ zT=nW-%EgqhH9>{EP<{>j4=5_5=JoaU(dSh#Kcfk`;8<-{`!^^6eWF$WQ|HNvBcd0e z50QIR?xjI@4C4B;vcW?;s-^jBZ0UyZNo_-|ZI6*!}ms2L<~e2q|2* zw-*<^A|n-+=Hd4~AtdYua6Ckh4;dNxP#$ip@TJ%W#d8`K$cLZ~E&$=D(DWM49mLbZ zL4i=vLyrRG^w0k;f|5?e--cgR-vZ9)6}CnZn-Dw~3VV5z;gC=*v-}7e1Wzzehz0wF zc<`oKa?FCB22faMBx-GG!7>>Y6!@RP_Igk2Obg7XFQuhyZs$kc1@OdM+|b^P*>vO^ zyxnd$+cZ)hn9-{Su>i2s^`aD5|By3c{-5un2a~C9g8kz=L<>0Yda$UMnoL=NC{Bp5 zKY(X(>AZw|M*^&aP7!&TEARiDeKV`8(bsS;he-eDTt*9SpxkfNE;So(0Wvu*i}7!o zV@WZwxt0FpBJj=_c7yB&5*XSJ;;&y8L=Pcgy!^vKEUU=MM12H>&VL2(59+|5=N<|Q zDK+(@4{+09FdfM=&5h;r;Dxb*tJTYK8>l=Oz^M(4_OCoHNA!@DK-9nmbY`~(_dgTa z0wWFHRh>Xoiam9Nlm`jHJp?idI>cUFLw%s4XaQxcD~5%tRR`eHhvpI)&CK29rLW6TmRk3IWv-!76rd-jdjuPk3 zf!AlzjE*?UMBIN7DzF+VW`*5{pD&aXL9!`{UwEZh6fX7>v3yUH>{UmTW@I})18w}y z7%k%erFxE8>G^yTr@**L_5Pned&J;V5dIFN;zInQJ|JZ3j3MidvX;1gBlGlwUlL|* z+!{_u1_@b-{R>ki@a~6232788C8N!`FqaNSvc->UglH6^88#^?zu<|(XyiM>ezLgA z;UXS#ks+Bz_(6;Yn2QoPhA2UyrQltu7#VLN!jFG8o=o#NN2@OV~4@zzf6W z{b7+B{74fXye9>ZDOuSBWP^x|6S9~n2{J&MLzk~eg#7Dt8TBgvh89Fm*4uaQ&dts7 z7wUI|>`2(E1|=3vF`fTo31To5J;$htQ+*&mhMt3nYY5cf=rzs}5;pkLu5qx~*f~7Z zo2mO4eNL@W69?U#B7l=;1D!|_E=;gSp-M-UQ>w)jGqj^6asHhetbb4kZaX1n;r-vo z{7>$S8P=|gNc}+6!Zw`?4q_+>iX+?^|0X|(G<-SUVXt49NN-C4?qO#~o1O57`-rwU zid9ur2;SD!E5jUq0=r@MXl2sqU0z!>sWx#W3u2#u|bh0iSyu zT$S}kw-y!z5X%WN{l6TN8mE1INP^!DG*ce}ZWg2WagJfrGis#T{fMx!LGuqKprZDh zpAHT-&QDH1*4A2SSa9o;)lL8G7?`v)@9fW&LAdy1v zl6?e>;52!0x{tVZgWz;DkmLW3w1Ihko=^HW;8Y+2PKt@;)A==ZXHM5k7C=xBZx5klcFSKtbB0t6{MdhVGG8@CJaPU#D z{;nsEk_vG-Saq@h9{G+oJTlxV5I7kVkwMoT1j`rUm`iBZ3m*KFeeIhEnTRFi$)K_FSUTV7)I zV-D(0n4ctbY?NX~I>w|U*q>lY){ZJg8W_25p+>oFiDmIZ!od!v$gnGBMNjHLE@oz5$kbrW9&#E3aPBC zPhB$m8Wx%=(!}^L2KWRir`@+|ck^1Y(2?8R=Z&vjPTlXvB!=9^yn~$ndFC@q+o+A+ z_1GFXAD1FE_-ox~7H>)z9~V<(|KJz8x?njfgX)=BD$yIODv(>gs2U0)$uDT*&8Z zxJ7D5xuQ#U4c}tDYtsLsOozm)%+lzw>%JPz^vg6>!&dd&~{Rc&Ua z`SXhoPFJ=^53=NX-tO#vY<tqtRL%CBa}q` zQVr^uQe0f4g|F<6Pp&QoMKm2R*aZY|);+Mpe2{P7#<`EV{)dS+W!esV!pbLvK+G2~ z@zN6O)L6Z(T}+`pVHrfZ<4=RP0g?ilbTw#3U4q$*r_u)G9Ff@R=zgRVtx5?eDBz^)xPTTgfeu&j zBAMuH%ief^I06{1LA|s-r1y}zGo^?bJRV5ex)j-pU*7_~N10aqdo&Zu!b7QNn5vXz znClclc2Y^7z3Qu+cG}5>h!Y;cQ<|lN&4YO494eUwDd(7Cf!V2bvM>vY=r;~ zEbnfyB-o?vv^<2+l=B`nKJy2?&JJPC`z`0L3urpBmsv_J1YRV<-*tpfhHG<>;~-2C z>lZR?6kBMJJdb5;zDIp|IlGz`px(e_Ff$(%p!I9$F?GF&`pHfs7%4*A<3a=cb`O{a zRZM81dVM*az3lmQ;Z=RAE}KUULw^;-sUAJ2DzViK(~Gw!`_hgVR(XX?-rcN*NZZv4 zWsl4e(VjIW6<0it#YkKAgL>sq8T)j8a=$veO-q@`*DEKI70mWD*$Xr5%reUx>W=j%#~#-vs@0Ueu5JMv1t71Aww|A#EnkKp zt#kDWQk^iO)zy}D2U)W3@a9Y=ge$wD)Bjy4YjIDbDCEN{fa6VCp;JN zTg+e|d7L9Z{+uivFq>*obKjsB?~Qn;*wCL6vw)-;d^WsjliqlyDVyn_QEJ zR6`LF7~MUtjBd*xPnr1Z?(NVQv?p@vQL8P@hdP|s%iFEr^+Cno{?p$tvNckckEZLl zz+a!L%BJIuMsK&Ko6=5e07tnP1W|a2UJ9YU+kRKD0#9bV9?%A|+9-7PV`Gnj_o zsE5c&k4Q=DO>%MHXb$JFgk16L-Ufe6)8oCH5Bl8m1aop)TrLk4eyI$vG;fUbw`JtA z1|il0j zGg1Q$H$Ay0D0n!bWj4VH2~vA}Hjg$pHvz&Tm8+Yx+ta2Fv>zqUNUXvUZ_IE?K{?)K zh%iFwF+7=a z5qk2zx`Lr#{Ufsf!_M?{C3`yC^Li`}F8p%xu~HxM#HK2J6eG8@I)lX7h2=E+FG!k< zvEgU!=z98Evo2c<1)k8u@}O>!n1LY}e09S$>tFJLQX#<4&#&0;1!+pxZ>~Fewn0Nt zgnx0~=Zj(4zd4MP6{WW$Xspte2FIGe$-auj>G*Y1k~+wr`KI^>pJ$X)pZ;F1Mj0)i zt5)c4%8F2Y*UH!HgZV7w{o*^hFA{Xwh}zXDJG^+=WQCWrNAv1TG*w&; zrgZk#r-lSG@$>thyi@UJ=h#8T9TnFDsbJ#OA~XN}xz32y&n_566N8hR#3Z)}RU{{G=wYGxh+O#)V)*ls@tCIiLRWW-$BOo4y9nYPpL z3?UA)%TzT&DSq&l5drNLcZqi}tKAr$#7qdc-*Ear~< z4<*f1)x>KqPKHjRO#D)|hgGvcYL8+#t(GRzp~)J`4k(Z2amEzR@9dgTfP=e%)0UNN zf0|G8BRTKfAdrx!kkcF}1X!X{#`$H)yK{bhdvXJGQpDmYq0_GA4oF5Ua0MaFw z@{U}ZfY7G444+^_tk%7y_ML3k#)MONIGBOzw(B)CzKi0$ya|mbzndsXgCsd0qAw8VIjxD|m`+=Y1MRb>1@+VWM&Sg`XGd&$>GA*Wev9Y;S)g)m^XXodk zCWqi?v9m9zma~Bt1;nFD&OWUrs2x0($NQe$u>p4Zu+kHpS`=+hH%o1*7%AZ>^m>=6 zeMc&;>+-a#q_4)UMdSwvlvkm1Cyt5Ilx}Z=BM2;+L6mm`p?rMzQ!dqNUZvE{d}+n- zhnoxPSn09m*@3a?$P;Mp9yyZtA_9bd=636x`wb7TxG(bPq@+k4>Z|L_VhKRI%|X{vHBr zk)F`-;~1BklW+a?y>hq)rSuO zj>l}7r1eGtkHwnwpEh6L$@M{&vIl^X+|QDm9SYA44GpeFy@9${7vdMY!sy9DUJOoq90~3fj5@9I4da!LF>8o} ztVrjoz@1pUt3!CW2=j?&P3*UJKN){{2HjmWEw?7Fz1PjjU%DXnN9i*RE8{Y<} zsQir)tMGWP`Etj6&Cms#`5B;VJT9vo2XhLa*jU1&qn}+;jVUjge0^8J?@-Ft7Ed83 zWf4-ZZ~|~qzj-_{4|U9E%!V_vd8dIIt~VNe@NZmJA2-CXcqN=90FPkh`eD9VYVj0> z6tD@zgTEY(h{fB?PYa%Zk4TA;WFH$>vv_DWW!iPW%Dx+?q1^a=Np1b^uF)ex=a@g4 z0jIH^$mh^a`BnZMC)~NYfhaDvuMX4IZE&Ciin51r^s2zuw z3ih$!59v^2CAtdpiF?rKKsJQorG4{P(_|lDp#N0J#n_nkKp`i`Ao5W4)M})R5OLz+ z-oWLXN=!>Un(w4bc3RJVcyXjc3=t0)q;!n>{zTVT4tg2##nf-5lF<3EKF7y1p!~x= zg5!QMq_Q*T7eS<8>iwy6kCwQhELWDabE&Dx)*JOYwul*rvB~E#Dtm$PwUY6fBC9_W z-+iCI)jF=X)fEulFuR|GU07Sv&u(vnUn@y>tU-KQOk7+~joW?GY4>mG!Dr{jsU&H-r{IM z^fMmkfS&jujAse_sbY_z0xA&8x`h?bI-T5R4uo@P7^UjWQs}qOc<9bZg0F7e_$U%gMtM&?|E&OKx-;KXG=bLwPiWWPzncAo`C9Han%9@- zvgj#IGB-cJ;+K5!!fokXC-&PnUbhD4MDpH8Ak7)YnCErbEMP4(AP2Gv9I1|8sp7eN z8-;(IE)O}Kk)xeS-LtYP?EVbVO7q??)UV%}HCAD@QpmeHh-)Ys82CL;ILKdfGRL{x zqc^|3Ei#yd`{=5dmn@r0c8*shTr1397i(@oSGYCsnMAC-kJ&h$&89LHtEpjKsI)vJ zQh|jA(Dsljm`qZtuXNj}#6nsylSXgIsnR~rAV};bSjT{6Wm9YH;W-%DK6yWt^aidY z52%TpZVzQsVJSZ2u=dMQleXH`ew>sfed#28ME2#gGaz&)*dLX^ws`}Cuj#_%} z_^8p!aBpn2i|1%bHbXpDWoUf1&gy^(v$1Vl`n!2Bx!fyk?;3iH&r9HZB-i=jrxeRp zx!3#9nLTrd^$2I%TD5e;VoofYiko#`mbp*0ua%P3X!&Mkw8DEt^hvp4jWRYx=GJ8N zE_P<0Okb}JLQ~5D=z0K+WCx23(YiC<54U&Iyl68WlQVmZj(IyxDm@@}URNy|x_W3~ z!gosiMn=X%ePhMVL)Xx?QL5BD4f>l!mYAu*5vYmBYRkG(kSfU&;4e<#I$b7K1 z*=$jJXMa6c5}IJgcS#WLFR3NHO`h*c^oZ_~Fgqnb^BEn}!b5RANs1w>v?AGN zbDy+zff%*TCSH+QCi==`e#>6nM_cD3Zb577XM|i8g*FBl847H!&5BCzqz_a3f6Vjxr{B&~!5oi)O|P`}cn76k|8b=Rf(;GmHRD zgLl^a^0JRmvKA1Z7Tw9fJ|7{a`u_bn6uJ;PTrhDEtUrf_6t9x|G0)q(x|kOg@@Y?b z9KFyFU9YRfUE+s@P#_WJ4iqTDF zyk`b0ZPkOjPcTztli3WB40?V&vRBAa%(_5)=5CiYiZ8w&KOmjV`e=800MP`i+9i>U z&Mvv;pDc^khDW>LMCg6ZtmFQoPp}Hrm?SU|WI$5U*e$G#nv* z@gk`$sB^ODSo7+Op1pm&_-Vb~_0<%qRN|AT^NV`DCb@qA_g?Bs+?GCEI}#8!fPVGV zlNIsMO~!nZm;E^scsCs3b*WcBCvCR&f<`zmOh0C@$3h&>O@pXfq zV#TIPpOr==N=AU;(a_jP<$3{J&XH;tHjq-vWy+&`07F4+E-CO)T@Dmm&Izd<+FO!D zVq`255KLFkg`Psc^kxI>JYCh;ZD#&2^4>D4%DoHwMNmKxQ4x?9B&54brKFYaMrl;K zMZh4XJEXf)N|5gEQo6hAoonysc~89Kd^=~1GtTkD9&0PCb+0@AG3Rw%KYYK3!zxwP zllyBqWll%qgf+)H6lCs>K3~6bOq5^7-o`OwwRxir()=IpZn%2(tI0>iBs{Ou?DpKQKz_%EfUp8)t8bT|D4y279)VN^1}Jf+!LYQaL1i)$0j@gd|S z-r29NT@my+6J19llMXAE+Bqr*B(#TIf(5|7g%%bY8hupJZ}T=Rb+@l2QOhblTV2gc z|1NM!xu7n&oq`x#y7wwnQ66#M{d|XZ&t5@+>Cc}Gzy(tCj73{c`g7x!Q!Z&CKYX~* z6~P!VR-8tD<3?ap%bUTJR$3rf3eeKxSxI<%XU09y$eTb>R5DfOs`L*CFz!tdM5Mw) zd?Erqf$*b4jvr zSu(`2j)D}lf7P}rvRJ(~KAz-w%0@o=NhJH5uE$hVX>-enW)yR^`eFfaP)Ke0^0i)v z%jIcsl@O1nS5=O&I^+x2U(bZi>AeMf&kxmt!J4B9u@7j%7~3@|cVW1N4qGRlikeJ# zj)V6-mF}grxTr@_d}Tuw%UzO2iycH`lfTanv4D2g?e9|(2Ml+hPQHld$ijo!>Tnnf zJnL^-?_&Ck^7B5Qty^=tW$${g9C3vZZA|z|scC7rHTDpMu(7d`2@<1kiSSiK#l&8N z@lBz39r}Hs7YQbd#k-fpRoUI;?R_&}N4WtY0Oe#_;w@CW-G3Zwxfr=B&bMr6*x17G zbuvBWKuqZZ)CBq9orAE+btW=5B};V1Ek5P^nfou)IAgPIZ234B+1M5H)~kQR!v<<- zGsdOA%{L&*ZED+K(-MoDn_uW8iM0NjR3?&ZLNP4z$&Y&WRUVcDn$N=;Bg z5~`}ILP%O%JIG+a1q8sJ&=+Cm&&+(<;!j|B#cV#OMKlT$0&z%vsimkL!1OzvMA;vK=i}Tx))equ-%E%9%1bt-8bpt*Kd6)jB z^H?pBmiC{(&9&qd_D7s+#7H>QLq;28G2*qQjAfjB_6LvI*u3#|mFm5~ZYRDz(l08S zIgQ-)fN~k_nnvzdnR$A3VBu5H5n+=GyaY}K@OzLDitfTfmKmr4Aw78T00UVT2^$;R zeq-!8C`3UY{1&9e2ivoWkOhlN914j!h_DS1ibAvhFEnKcA{YrA8t zA8eH0tf} zH^Bkl05;fG3(B5_a2b4=<8wM zk;q(=66&w(V(>KES_0a^mOZM=&C(w6q{Yl!&8#~;GEy+ngS4p>yQavd^T~4dlW)2s zb8k|K_~LJSE!b}k%}coynk-mkhF4>j(;+{382^?UCPI5}*>2aSJMDO;i8@ASkVvZBudHC$1>+4BhtXC&nWma@EAus|1*)WlZ{;oGiSVZ=XIgbo>%AZ zFAYs43*N?29F;OJU+N8KD}%l_97ZRK?X--H{i8|i*uA~vWLH;=^p-Q~9NT$rt0*on zHOcV3F^?-tf6|)OKR+x8N59?rt-=1ZE6AFHS-o_R%a(8_RkBRIiVfYxMa?~(xA(kD z!eud=)|U=(T`M{x|M)Qv?N`}6Pa$Vx`WAp@WzC6Cy44K7BcpLgWP)&{_zgR(Xm{P# z71#SIU8^%b)&}~AG70eW09cRB-vbs6!}G&A-;HY56@9K`@U%$5aR4RJ z7LVyIli&bqOM|KT=MxV_5l>Dd?#0S;vw2rw3M2 zVmcL~iBT|3(1IJ?M~29A9!u-T8CUOGU-epP`5nMePu>XS$W z!|i7&tZpA(xJ?p{l)kZXc6=J!>hQOIKW1l<`)Vj>xvf1^eagieB+HMgY8RGJ%gl3@ zp?7pV)kqh`Q0cl^Hu^}wkp=wDT6M0`Ur3$50v6=~txay8VxkbzNxaf{HIq&kYp3yV zWH*8-72|j8Z?JW)2tRAHs!F-ePK7%dr{9PyyZT$ynq6cdb`K_^Y!b(FtgIxsWv8$P z5O(iF*N%r2%#7c)aLG#T*v;r1kW-A!QTy*qtiDm5mLX1_BQTqe9QFaavjKJT4AT~mt z4-g9F^nTd(H)2eA2%ntvJyj22O5_VS9_fr6_QJIxz8&Y*Rpcjgx+Ysn9!ylVrTEmbIYf zL2oOWuJOhg=EBmN>h6 z)}t;Xw<$cVG(>f_r<+AuDj%_V;M-& zi72|4XicaII;I7Dl-uZ!N?O}$rn8QhlYkf^SPY+>p7#H=GY`%0N5?#1JmgolKRC*( zSSxlaaTfBeINd+&A0lA8xi-qJ^6$u4GUV;NTNsh30O}Eyy{w=qW zas_cW7LMdT!>r>mod}l?SaBjxX2NI{9U)8UHUkx-g5D@|$d0khvjnEB*ZS(}72DQN z#F4&-gtS&~QzP&6OkUlo%FrnaBKTlEtZH0f8ekdH2;tY5cqfBDyoe+vouK*~5l4)| zSG>P3Vj^3e@w4b9f7SlN+eD5bh!{oJ9XbPi9MS{1ix^fl}yl zEL*Cf9eke+EWUtOlWUb`uJu;Q5p!sLnkbh+?|2PQ#hb*y;559p;o>@2j%?1ZKKoYX}9X-#U%N&_GGv|L|cOjSpfV& zumpQp!=>MN6N1q?!Qo-H*6G)=HXeHSMwVkpOPRTosCbMX$~4B)Dd|-Cpx5e8k^o5? z$MZf}jVeJtXZQnxMM=z?>~Mim6_;PShUw2BKB& zC(i|s*3sJ6!@xJ$h;P9nB|yslyHO^tDCq8TjG1rf;a#UGO0pwhVzSiJ^NO z`SVoH_8qB!X=>I(lUNu#M|D-tmE2*2b}1K9UvJDQm@ypl4RL@WoRL8DpxZqJ-z7w+ zw!j_@Q%AE<&y&{o@txNhcY_3UBJowsd0htrq0|MJsq4e4?*VFfSO-5FQ&yunEtrl( zKu`HKFp%jzp|5z#50C+tT1{&d>@Sn)j=Pol7vYbNz2`hV@p6=F9i8*yw6EdaWUe&i zPjVfp`S%f>TTUDX-`U)1dz$q4##C0iN+6-~bgmfdf{ymUS*@vChjl22#Xy*De&x=3 z;G>_MdCE(6_RU(fhjxb3vuId*4bzv%P{m$%_~dteN9*LAC`}-pVw3VRin7w*-=AUk zP&|MTVJh9Jqr#{5D;_>O=HV;2iWl_W?S7l#=@Ru>H|aY^LoE*6a-fa~Q&4 zuYwq2H1h7o=f5jw!{XzRadfk9n9UIKt2!K4?R@0&o|ku=_3d+!&shAO0@E+4<(zR6 z6S>2kYdEdv7+|%8^gWTW?5#W!Si8h?eB|P%Ovn1hbH)0Pb+lDp{dC+lAYB{A)K0*A zN~~x0EalIe$zX=F#XCrdnLCw4VZ6uM@SQ`&+qq}fTo#r2v$y}w52u8qMLyo7bc1ge zCMu}>>?L}Tk9&8*3QL_9p7q|`UJp_}hr`jM)k!a?$vGf!$@K|j(ykj>pGHZ{Z_Z8b z-!kK}eA{<=7%ioryNWOJ<*bilEYOfXX;|TmZQqdeEF#}N0ppb(%9E>tngw!?_+5wU29F~kdLg>-&(Zy zlwaD+IeCirKegv8PVjYp6C^A#)uQ1FSa15IpEu5tk2ARSh?T>r$PQtHK8h61JTDL% zB0QtEyDt0sGbM74aOme8^^fgSxH>thy?5^J=h*tB_nSECf6|C8@+V)JaV$|tL{vp{ zTMpOXZN)jyTh5N7_zy*yjsR zkYa@eRcBVTg|CwOpSo`~qKwRuQrlS^uq;fM4On&*H@ti8>S>RL4UYbBzAuPc;rrLG z*NWa7?i?*e%C^H`i+DIgh#+rBdm1nP`(!kx@I6~D zk4B<8n%rL!6;}+eA4FY*4<1J-siRm3C#e1DD9Mc#HO99gI;;K)?GAK?ePymJ7}YBT zu@Co_Cao1uf_qBOSDt`}9m7KhMzBH*8u{$jS9Z+ZWMv!uze~mh9V{ZxI9L>m4x;JQ z$L}r-Oz;?1bERqyYEa2}bX)V|G9~`73=QGoGuzpr6S`46#ntJFvbLMxa_47Vp$;3P zN?6upDjNF!Pf=7R1~+H(qT_(zJ&jpf>eGJ~q?~RYuO`G>VU^t(7Zcn2s2q<=l~TV9JX&N~N{|wC$zFYq#@XG!v|v!-$O`4~wB9F( z4WrDJbLVHQ_O77^xOSKy&9KV!X7Vbr(yjS_lybckn~+Plcv2NsTyK(P8Iel)_3Ews zEA?zeyQp*{`n=y*i}+D5GB*ELtC(E)WM}-FTOk4 zVNoI~`cV!|HWuLMsJgmpG`E?=s)&g>WTJl@QJk$y3#CPfr)5pd5e40SNc*dxz?b= zoSJG8Pau)M()iRe;vx@&%(ZV0Fz-}@24X%J<_d;yYO8}z;wGN;SDlX(Hst>Ec`PFd zQoOuo>~E@ncAPFLvo@M%PJ7+lt&GY8 z7)7Ek%@0RwK2Uw>lF@FcCo`Q7@)9A?_mM+`CPBjShUw0s&mjOll)n1;k!*LF{~C*A z4nL{mv|us+#ugSfF-ho-kCc_=L`k`TbWb3kjG^d@@D&8Ha8ijO&aHhkT~gCBokAdP~NA`mVo%qlaH1qN9AI5DH76Z@6;m>*M|)YbmpvP;vO~D z0LusWjdj7FTB?Ry*Fr*PB!$5`FAUj@&8!XEItN)TW292JjlKps?|!2hnopO-qYFnY zxg}#f%B%ZUAyPF^qte?QQi-fDAv|4K$*zV*_gy9CZ0Rlos3mL ztkOohByWXOD3nOb4kJTWlwr|tiusTeu8x)?>M9W@OH9QIOFBAc`PPE^bma?_$%>rX z@*HKL?#ZaK=;MM3$^YxuB#-MW*zNu3HvvzGO;uuhN5@~t#-Mrn6dnBCgq&tgU}%25 z5Cuk>0f_2Ev?d|PJJv`kqtSjaLAl^E{Sz)u|6Av;yy;9Xsem0Rw^ zDH{pNCh-dk0?_)RKk_v09GY(np3}0+;J|E#8uY<|Ey4^A0To(*dJ#TwsIBjvE+;~0 z0z`hBgD;!b(F1tvfMhj91fu|vhXpv7pRtHqpyMjLi<_PLjTcAK(U!r;nBa2iOa_~E zH0*)-_*E(kY*t*hsrF9hm)kl9SRD(o=UYb^ocrb))>wrNV-fQVw8K#zUlw-|uK&>w zqV~vUpqf3t5vcW&Oa9b9v$Xt{p7NlvYC+wNUmtJiEE3;tYHq+5&IEE^RH0I%#{X5{ z@I1pHTesdl*bultAP5v}@+V+Nf;0(KL@36eMjzN^wU`(eWKWd7GrA_XZV|^e8jQ96 z5q+Njx>tAP;QPQQ9yg&BW}9>zW@Z~LtNg&-d1es3jv_gpE^0utG^n;VeZ}+gEUQ)c z8d?e<}rb{DrFuS@mTDTj$I98H4%HvDhE>RZ5v@y4vv6H5tnG zm($9+^QR_660MKsBpnsCx=PY9*FkPZpV{zCgb%8t=&&*SlgRKg<4!z81PW}`gX-&r z!C;FZI{W)ij^{yDSOSc=zOMO@jj=IZT`{x|U`NENbYa=5Y@;4Zx_!Hh(`tt^ug8jh zXD*MvUCXM<$oYKhjIGjAFjQp=HyVTe!-6`bbr2F_F=(j;0rO8)pztQHOu2PI!uFJD zF&pN5h_eK`zMP8k@=*4zXEV6NPR`4B$BBlXww2zKWG31INQJt)|*i zth6P5+U_!(du3%6+GaTmS;ehl(&fGg$6_)xG=%7EY^Zh{0uPTttMWS{ox}a&*7ut7=~Bni=S#i&P>l(2&dRLp(r&E30%D(=JgxK+m_(UvYoZtA#n zn=CV1=joevv1$(!cXSbRA0N$bMKEH4{s!50EtOP0k=mokyDXI(pDOgfcaHaG!5jImIjh@-2jq!K$pU<|B z#|+aMk_*|C?H7uHG@q+mp8yRr0RaId9$*YYO%XD5us;Tp@E04l-bLhsf9k!2kUZNC zYga!E!2J1KGhqJB%IMk0>m78Oaa`k87gMUXLOsk!luX-{{8_b$RHE;<`*tK^D4ra% zl$(o`s>Z7q&fV#Z%o&AdR_2MMo7<1)C_FBB6i=dKl`F=!otzyri|RhX(DkFf-15eb z09k-8i3=0e(tVszu`hRV%^UHyQfJ%+`csdq2l$${U29X10?K9__9w~7@@k*8nBw=X zJlZeDh7$S05+3&6jc{`Neu_ia83BT_nofkaBO;;&;N+NBZbuvH&>PHD$s+{sIwIKx zs1SRLk-Er`Y4Z*dCxz$>f`Puuev=SVG4vr3_l&cF5Rm#vgV1G=9N%d&5N5JUXOh| zwa@M3gc?_BsmbFK;a7jrQ#@5JHltC_9|6VLDcpu?I1BX4^C+@0;1TD@v-6Yw)O{s#&ZE;B-9cio&@C|7o(5QZVQn$5~SoH$QKQ}5I+LdV2~{v zA;w2YAXu5L7xvq8QTPa6djt^`0+Hk(4HojGZ|Qnma*_aIemgRU0+0D_l4<4>)y$r@ zIENF*-{(rz;mM;qGSvq8VJ`ku$Bt|jjf(mz`89GzM&ixf%uJFcZ;(K=7ItE9YA%Rq zT9vF1-1>N~JuGNGS-w{?N?P?@>y2J?@1uXNcfHU()r~`b6lueV-%8~clKR&PGI4Pn zt_SX~#?iLNZd{*}K?~&K^p!X%&TG!`t~O(6RQIjgrq$I$ystrlkGFSWO57$ZG+jC% z!wict0cmP#!_g@LpZRWW*PpIeGcsjgPPgZ>0% zo{DGjnUXk2W|U3OL;qUG($`kOF~80ia+}-lC3xo~SYpy#Zkc8D#_aujS~vfNsYBme zpof?Z$9shMCVyBZ?)c zdRYELM4H*`jufaiiX((B9CzK9tS`T#4r|fdC0NOJj?2xHEoJ)W8Se@sij7ZLStDV2 z==A3n3fC8_A#|i(zvY~v5k{Ccvy&188)g#9m))D{%Re93GJ@H|O+LR(DAHkO`=E9< zas-dol0WRZzPoY6@0hNb@Rt@ATp;UUGZc?6#&*B7G6*njv+jpUz0BZomI zQewn#Cg7%(#j!p$b0OOq7Aivm3YqJxto^CzwshH#+^_K!Fs>{EJH}%0rk9u2)M`%X zkOnhGTiV+{){$R(u&q&1v(?JCX-7Vlgk=`i?yhIPcG3AFzK(@U41q8ga7!K#2-OhY zy-OuuZ9y`pXz-#&Cv9r`PStE=gzI*Z3o@?@W9``bV511Za8cdxtOGV#o$~i+_uaqF zj*ekP#BX~^)hb^JUN7K$&s}n01h{AaB2ALhc|fOyj+5WpQ{gqnsAtDN_x1M{q!KgU zE#_>GP@X-t#PUhQo3@?^lhM-R0yP?ot0QO9iHZN9oLn}w{eP}{{gqu{jld(W zt}o;w9klCFtk4c(?|oM9zC@c^CNuVa3uiG%;P)lu*IFAk(xc*$AH9=n(q>We&(j>t6T(RC+)sFA=$kGB5%BYB~# zg)cry>+=P_m$VRk|4m&w`=2I&<6vkSF&QTgmsP3lZbx|i=VTVQQ76KXhc9!6L6wFK z@!g}T;#f~)dEVJ52Ca_7UTMKS_ml+!2kq%q3(tgyO=qTHbRY(A!=2sTGqk9)nQeL( z>x%T7o@u;JY@u%xl}jko`5D;-wRwrAYVPhGY>Ef#6Mn-(>SZfQNb9?HRLi(c>e z^LuzDU%N4|RVR7anV++}**CmgC7JDxEJms8soh=D8lNv;NDAuAQeR6WoqOOdnPWxi z&_mTAs#63TJn{E%yq0~bAa^_(R&qQaD7^{`>($G$6J|2&2FXQ;Dv7{t2-GsT*qSRf*bgi3n&^!Y``K|PHB_$nF zB-T+YbvOBJ80tLZNor2horOGvuyTwcu@Iu@w5seGBRx?JJFi@M>745eHfpE)%0KeL z80fSR%pNBYEk@$uB3{4RQRJ;~v|3}21^)4{NrH?1u(&eSDL2@(imOgEo)A?@Ve@;RB;=bgfJ5ULz)F->MZ^xs^7k?D7xx zA0@#F6`4Q||FP}H%dgp4sQ-4ngoXs)q3=L$VKZJr+6q54?fLc9J))ckCsCCajYluv z(fa4-`s{+M=A!gTR2{ZU$Tv){((R&^BH5Lz^QvfRr%7mD5R}>$=-g0oI*@&kG`Q-x zRkaVs2^%8EejViThavzXRo&J=c+`DH3HB zUiXHIj(j$w%r=OZUi)AXqfb|hsNl&YXtB`Y4XoPJ+ z0W|`@CD`d>k=mkeBTFa4X@4TpnG)1etS`bQCr6mxb=*i*=xC4%x|?B(j8?KQ@%#&AE12R9?c6VLaCb9fFB&bhpeEmhY{#|<(ysaP0kT#izU?94Gh zS`GP(pdb4H;VRJqMAmP`4-ZP8fFBilyPv$`O$S5;QPHaBmfpC{v*Fe zR`tz%didzU3$-NcGMK*g2Vj`~0$3G>o;6o1PWgZZ9wW0OusCwzDL`7@O}Z+LjnXjIsz$r7nfR5+xF zpgDxPRXo_7&LQQuA3A?{b~6o5gLjelt+N61clbJ0M|6o63BNPj@?1q$8y4e1mbf}I z9SY`8Or6f2kq>K1c>Vp+Fv&HyhekIwWwt_o&lSOH*Po0;D?Hbh{?{ToD*013K}5&1 z+YOh;)$6qpgZHSWBW*s|GHBX|bI-hd%*%_7h6W?QFi80VYTalz1LOJs^h=P_-bO}N z(gTu5e?2zR49ouxMCb_z8?jG9BIm@AP z?-!daY`3_P*FpE-mBDz~gg|L{SD4Ppv2On%`NxTala<$pHHsM>+DczPTv&U=rTIPf zuJi*Z3sv!{QQ-OFy^GW2PosyHDP!ZXjtS(jTtj!nbJ_;|kz7L8!ghTLI4-;ZMh@!i zP?*63Nu=k;ia6j|L4H>2EN8pE)Z>Ni+@BXK@$HFsdRSz}eD$`1<8r(x#J=NvJlfP& zFHR-3ocx(GxQN@^nlji>Y|P@ux3CC?!a{pS$Zs;(BdwhzPnH^7Stw|D3|4PP7njhG zkWZjcJ|!!B9~~VHYWe1Y=6ep0SoDyXm~i9ds^4JUA-gLZ+c@hHTdvngnOijzJU4K3 zXZzJ|KwtB8d(3(qG9O8FufXpJAvXr?kZOgr3HXGPI_35k=z|l5&js%i7>s{_`{iCs zNWI{hRtB$_X-loZn?-aI@$j&ZZe(zZnCmr((So8)doV5ZmSIffVF{9a? zw8(GF!x+i+WHo%ui7Oze-+;^}A<*3*LU3{V77}eUfb%8>TSrMrDzrExSZsNJ{@GVk zCG}(`%?}Ok-#>GDr?K+-uzzWhoQ;pggfOhr{hjf*kcHDipUOgSp6@_eSt|HI%Xd%B zCSEanO3U$3S?xeRBoT6YuCMT?rWiEyA86GlNGlC729kDDQi~gB)w=S2fq|#eT`;mn zfCTOmXz87tj3Io_dPz8NL2YK;wrp4Cz&(w-ai{)03S>=$S4w0kwmU~K<{Yf#_fJqK zcfh^>j7$BG%B{D(jbHC)FJnCx(7GjabtQIJTDo(7qD-r}*cKG;!gjj4F4@X9zlN0! z>r88%W6lk2g9E;_+FG_9?7X^^JDR<2wCQ~wKzI)yEkA$JLtKsO|MaEu<%NBA=amb` zOKDvXaba{!lQwpDax(MX@h5n9nRr<)5%39H*xPKF&WdAC{9^mR#tgmC2jm_?Fk6_f!QtiDB_JAC02GFJZD$O8)Dt+(Jlc$cC zSl&oWp;aXW9`(uKvIv^``+Iz*jPg#_1tpC9=GiVx^?X>Ufu|%Xr~ohU{%4A z_e@)>K7T^G{wjM!RfVmPA;*&9ChP$$qH6_Z67E3fSf?%QVHx#)-T7m-fq^vkv2pWN zsyZRa9Q@zfd$!GTTn)Gt!Rv(Z#xu&C6u-ON66aKCszd_&NNy3`!4+Ft#qQF_X7 zHfP4>WX{G;Ymiq(1!0!Izqi%&0iUJ1Whh34q-Z$YeuZw`FRXkm^7^HV~nt{P|W5$DwG6mW|U#n%y%;?@iw`uLPKV@gmi^U>J z!%R_mVW|;}hrepc+z~j6 zS}Ov`X_6#P*|xI%Zt3g@6I6nr&Ku#PWm@|ciIN8PpxGHmyRG_tk83*~5JW1SW>q34 z)H0`w_dHGtcF!iq8_o{1^H|IticapdO~Sq3LIf7S4+_MB*&(EIvFV>6upE_)%!^r3 zXEHUF>su-L7E?%H>ocy}wpzN$S|WfsJdqfxC*o2{aS-{UAx5{?(bn4*5t?BPn7`(k zS&n?g_UMV?66GUE<{av#rjsfl@?)5)5E=ot#|yGaxR*qoa;th++jKn|hO!FXs?RFK zQJ~w@v-X8lp&^5_v+X0J=Fmht{PvmDt8eEz?&@yXPi}@mr|_AU&jjVb=gM=n(`(KO zh?(dEUJ7Wx`b;=1W@@Us<{dUCe8f{|kMN{4NL9JW28AddD%FTa=pmf#eY{b&ZHbyiHIvCZ|7-NEUjiFzJd5?+$${^8JS?6a%e{4In8!< z`bF{6-Nnbp|BXSP>s4FZ;m_sD7iW z^mYbAGy12mZ0r!Bl3*Cu;?YK#?f9tFSGq=}lx{W(It%ghBRakFbL+C@d0$*`d79C{ zu-uW)r-ua52;hETI9v(|ML9pt0ep)?j?Ae~54S zYI9a{aJJJ_JGiYf^_;1qAPA}p%cB}|V0gCbrN*a@q^+JV1uQ{c&6(s`ndZKvhY`@C53*ARf^X$>-sb9@vRD@mK%EDP$bboXd9%%hcO)t`^Oe(Iz zo5-nt7C>m$0Z8|?B2&fKHZpQcXhFzQAN0e`KT-P469p~88SbPz5UvCHw}D`i}^_jECEiz zV5uv*S*L!IZi-*5g^JZ=b;h6|GNyef#>gmhl{wKp`>3-E|6Y~n2R(?_W;TDsw z%DKf`qs+uE8C+sMo=h@%`EZNYRtc)bELC~gJj(&m%SlvmDxas_+PGRh5TdV~qjF!n zMM%6?@R%5aRxiNBOjXBR>qK?F^iBW@Wwb|Upw1(hDo?m2m6~DLs`S0eEIcMZq(BUl zv$@p610A!(0^2}`)MDn&{&LPuv842_n&SkF&x`3wi-@HEhO{=A5;lv|_*#{+Wva!| z*>m>HnK1nTzW|8zw7P=9Rq)#-!zE55oks+M@|Jjyf2AuisYZOj!R7Jr&_Fo-@XB0~ z;o93J8BV&f>Iy04nH02>)94I~{(idWz1hmy4iA5|OBy%1om=jd?cF!{!TnE{meNiR z*K8DB{|y(8R(e|6dk6yki^33DE@yfAb*dM2bsF z)M4#I#BF5+G=f{pQM@+PAnqjt_ysv9XE=D@?&IP%13Rtj>e50xT(flZZ!%k((5^RO z!&I@@t=RetgPM80yE{XE`O+tZnAbw-$Vd;iGS_7Ze?O!4AYB}DC?*P0FM zP4SdHFV3TW`~U{+T%~YxIA&@%W>Nvi!k6iz5c7OvXGl>V!EykJ^H;xWK@xg?{#ZoX z?e1SO=y;m~f>HQl2L&Q>-!-tdx3?qM36#{-(6pBYTOT}O2s-1^xqH(qhV$k>N5Q=q&Pov%n4VT%;-SfyRG(*K zQ+f=rNlMC0tXM;X$E-yryzqFLtm4RLriyG0xFF0=QBvWSaPTj+x*o#ot$oS(C*CaF<~guS z;ppp*<-UQAj$Zgq5^APWl9CObot*>CEPPoGP173$()dYt6yVBtbp!e!fT^BeYDEm} z2*9N9a>jy>LXZ!@|EzM@`ua7H4`{26qX1hl68n~+CDWnFvi#yYB(GA_y;b?}T2gU{ z*P(OPyQ+PA*f#gj!QApN&|izNt*0jtZ2bg_TA-(2i=A4bg%LH!x2qu^`G~U0h_!Ebo9G- z%Xt;YBRZLlEA9aQAk%qayZ>Opfnkf%11FulUUe{d*7B6{N6`O#hxSsn|7Y*4CyMD}GoWEP_SlFU;+b$RY%x^-|k5fn>r70BIU1c`FZ! zq5nK>bgc~ow<n_dkN~m*xFmQI!H6M6e-M zeawHZR9jnGl}VWfTxMR|m3u&Y6r0)K*+KdRB>R<>6}H~c`usikSgooLK44nGt$~#S zP%dtgd0eo<5~VpGA@oIjk#vfNv}kW1pWw*I)^K`NN5Cjb3AFV017PVpM*Q~mc=h&9 zX7)wU{I+D;mp<})j~`|kJY;w*g>%Oj9oYcozMVQQUXiCSuGs6MU&WR5_fE5H8;T#^ zz%_ava~toT=gk+AnY5JTw=^H;>(w!uDj>E)dr1WXj* zLn{P2!8suYxG3m2Ek8t{#vz3)OX1zBC`=(6px`)mv$f?24h|m5R`vt25>y3_Sq+-d z5hN;zDS-Tlhk#-b1VB$Js4VSCa^Ts5>rdWW47003wf&}RCxR;>Dyk*hkcP7f0uf*d zEY&3fWDJ~Rfs{Z^26q*7WF96suhAmN$>3nB`tzA+<1WL$zbFvUY*wZ*t&I*-82q7~ zguwfM-cgkJe?r6H)xdL=9LQm#9I93mmGVO*BRxyt(UJe zf-wc2`;+tY!F+A#Tk39Q7a(YS5S42c4uL>aRN#=|W3^e5i5;0OHN^oIfF4MsfOJR3 zpkC|^!2Ns};o}^|JY=K{e`oG71+U4Zbeg5a9zN}i9-$EXv z1Fk&;6~vBSgP;l_+J%)GN)p^q7n{}|hG1N(T6YBx|I~+0M#wa{ji6-|>HkIrtUC%G zgWB8_^M4L6Fg!X!+Qn{jA{_3?!Vim5xhnLnL1b@N2hyhOCoQYi5veIK94(FKgNhZg zZ|}QI&&UW33kzE&SBMa6YT939miYShn}fsa)O*WCG z%6K7-gc}UoMsMDHXeDuAF>LXlvIF`-CcJ6F=Gth1JSeGtoX3Mbx1jDUyR(B)A!bIS z?8`V&@`u@=Dqinz`j*pb6trL0;)|u1qr$}C4o^+(uxztRt5e3f?b_@L6MJlA184+8DH<{^V70?$H&9` z#-Tl|v^j|Qe#!93h)w_&4CHBYBlu%T`89h|2xc5m6{6XU5m!F-ITTklXyqYht$=f1 z0U~tZ(pQ&mP^6KcDM|h46!AiluHsO5_`kgE&=4RA_S^-nt*w8R${|m^`;C>WUCq_Y z2ZIX<+(C@-FMKOs@AD~dYA{h8_4880Ln|9?S|uYV_vZTQvT7T=q2FNl0P%x}&>o-_ zz`)S~Y5F%1b$Vd8qFnUM5(%c+~TXGSX4VCELiP+PW5TwoHrN3&vy^iF+e} zeGH66n3;NAJ0${%C1E0jo%v$~d<+!ZU6&RR`GH`Qt*n@sjpRy#B=|pe-VSZV4OMgU z*AHSv09=QO2-rZyCbh7s0)h=JiXKC*F38b&4oJkN$SJ53RupMD3KW&`YmL3(ii^P& zw@c7j4$GL^gTZ84`{w;GVbOB~icZcx^c0Ih|BPzz??7$cC0?}e`VVU*jP$=)p}#Eu zUw%dAfd8y1n!@1kH=*zsaPQp4x@+t3o{7%|FObw{zO{S4i{PcSm(B9rg;S=|Z93J@ zbjnH3QP45ig81xy8N7E`6%!Ts)H4T)2ftnc4H!z@`3L{(~(nu#i@CQBW9vlo*2dQJ}mPslX)K z)U;f+f&}m7>%K`;d9-!Z;8pkr>*4^%V#Wfwy>Td0UxNz5m2Mb>)1@~Lw4x0R%1SSd zm)s*V*Wi_pV_}RV;)-hRicZJfk1^M4yXUy`yo4EY_j@euYJm5W)^#%y_NWW-4m0{- zp9btyvFquFt(yIw7o#39_ML+KcAwFDG@k@fNbWmTs39{GUmuBZ^m$XeMCABwA&)SIL$D< zb-9SIR!{1FO=7>n5`?eo?TMm4#Z$RTo#7^S|GvDU8R7tWQsDrBj%T|z^bI`j??<&A zaI3EXI@Jd3)$ns6cJ@%jqyTFMf%P)$*#yWzTC6)hIK6q%kUps85O4a!_H#!#ImeKIxIas0Ac+@rJeImV^ECCx*#M^J zm8JMYk!G1#Q?$vevNRCrav8Kx5BxXjhO2-Ku!6s+7{wq1=CP1a0vzF@dT(p%7gQ`l zp1iofq(2%w{i}E>hez@f08`exh5q^ zf98FGy{}FeM?@Fp3;*2E`1$ zD_5Mt%^A1%PNCE+t~`KZ9@R0|V3^J`lz>ts(ukMBf3*M!?i04b+NEtbf3J@K)jeHI zx#JdKTI90lo2mbqLFk$UB4MP=g={CdFg*W*thbDcs*C%E5$jR}L`tMoO1itmLRz{R z>CT~B1Sx6BA*7|dyJLW%yJLo~q4U|?_w%gvuJwLkxmbSS%$alc{_kHR4z~*HLP22- zaQ(izL8sh4CngpLWuyEa7xt-_2?7pgR(U4x-(vtI#Ma@U0|(rrXN|Qb9>nA-j8|7> z8?LVi9>@tBV!|1ezaN=I<)aqG;&`yFs#`cQ;ZhYAPq2s+?0)&amwtA%eh*lx>!fI9 z(_F>d-^r7+Ix2#eG#bMajRF-X;#M7^;LJ&1ky!928Gw440$3H=5Qw6|V+93;yG#Sn zuFHf^EB($U$!8bIZ941=$|TMB%=44};N*?{hJbd)$(LxG+cY;gHI8C~;-f@duV9LNMt68uAhpZL_x8iiV>^6zOQXz;rCFX ze4Di3=)VXTE>lcZEnO=z!UM0EfV@8y0;u2u_FWdAky$tG;=171%i(ql%;RPi98SAh zV1D`W_P&%in1qKxw-NA%sICkA?=C4=7pIWG!6{QUWI7^!qRd9@aypOYbt`DUu{?js zpXTZizJ4!99$>JZN%ZStUXkBkYMo!Kc#KYO|%{LH8(q;lV z(C_R-0m3vEYQKLv

fTjd@^A+I^ z3@~Z2zO%EAQx0;>gNO|O)A|hv%c{$fAsV>^A5yk5i`*KGKywQa3K>1G8EVuoE&bW6 zHW&;Di^*zgnz7IuOr%j}%EDVTc$Y$AyvcW%48?QMApmXECuHCA2#O65ehVEDo4AzV z9$P+8S2Y|#(|2X#u#+W_*Y-8k$ZjX^AGLG1_>C4DMD_S!6v7c`DN!G`JNFr&{i<5PPKnzn2iG~Jm)8AIVa1N(fdBve zG(yd!-Fe(`!{Yxx9|wF8yq8eX*dL8b4M{@hhmymjznl=DH6USujReU>ol;<<^=cSk1}!?$rVE)_^lR9p$hxabX*@ zd8zWfF8;Ix_Qt7y!1@X`7=lZO&VwYP5Qd5g6*3;c(Y2=903gwN5cIEH_UH<7MO;ZU z$ddm38FuT~Zd3EdRY5y_W2@?tlJ*i~@4@QQ$B|eiyGZP*li;}E8v=v^t_{%03C4b1 zg+sW+I$h>J96L<%U_zN#)tPyi1?Q9S4~!M8@=c!IdmUbk0;eN-rXTp54?Y5mZ48^* z<1=%aWIJiM6{jtGWiXVC$lE!8KlQ@uFaR~G9s5=p{+zZ!G!tq$2jEASOE8Wj#4pn8)e9+?p7y6o2Q5Z4{{YKV@nUp9&Y5_OJbYaIeUNk^;Oqv zCpdqllcVGDfh*v+;za@@$4)J9J><3UU8l#zfK0;OFpvWcti~kj?@5~eI!8|Whm=4- zTL>1|fk*9k%sS0TNO4ZOozici$b1Lm^{OoIJ+L1;N4*Vl*PzE9Nze)d(i5`!68A%M zqBF=81WIi>D43Q_`%{m% z_N(9vISsal%MVHnuh`aAGE2PP6teu{1h#&OZrc+_6Fa9kN2XIx_4V*WT)qu=$N$4l z0iS*wp#*mUXh9TXPPcQwak|rFMSO)Ft(+@6DK#l0gf?fiGGf4KXS51oFi08+wTBbV zSyXx{34ZAR+0_C+c8br2Gv4Q)aO{qOE$UBT+Zd8-@DQMY*rI*|D`|zx7KeX(!#abp zl&&?qOtmUe+vHeun%fdww-+aY+q3szS>Xh(ozEE@8#P&RzdwOuTz%r+gVr`L-`Z%Fv~mJ+G~XFdfpirM zVoYJ&M&VeSSMkAP`+?@hZrNj?Sjx*)(jdWX@?#8IO2j{f!c|}%gS_#)3GvBe$810pPl55 z(#D@Xj}LLVlb=uH2j6Rt0h^6uk}PA`|I8OmIZKUQY_aJ{gomYH-8Z!)-Lw<~6%2iR?ETs5oRqC7z4Hs1jo&{+Td|55Z1f*(kh!ltuop zV@bwLnnBP3AHDzl!w#5=n2Z^XO)iPFN=6ePt(cs&GH{5GbCB4sIY`9MwjBRd9e@Am zHf#J5SirD)Y*dfEfR#{Dab;@?p3Ko6JGsU*1?=9B&HhIn;m7GhR#C%+Ycbjs?vEEk z3m~)rcfvWP7P#4Uy}JAe(wrW_P0uX&@VX&GvxmU!3kXRW_QWm3*V#5No_HoyzE(~C zLwJLR9KK6t(n(e1=pkjJVgq7!M%1M%Hep;=LD)Bn{!j1a2lR?uq=L!frdcCXDMF4& zZ{AJ|zO$ZDH-YrpdUEv6gQ{X#VvNPJ?+1fzUQv%d^cKyeJ(YcVhMNmQu*_=N3B5Z^B+r`)VCTEdmsRdgh#1t>6*cG4S z(uhX)IbBlRyCcMLkAKN5V|Wc|8`}Ryklhd7{v&YJ`UX-la+nck&z2P1H3)N0%u>q(>t~+VsEcX5i+8Tthdah<9o=_+T2sxW$=6Q z#mKk{q~9|n#{9_P8-?nQ9Q`t;sy((DH&t!!2XDBr^KH>>wBj!>tPo*@%t^Wl1x1z- zk0ytyobk4nI;^~SM*~?W+pLeWWR{rSn`3Cq(H+7i^TwGq8=;LqP`qcZRvf>|`fg z*KC=Z8L-leerr?NyCroV3lcrz@@v&2dI(t?jjCKnJIyQx8&y9pj|ul}9lWTp+b=Gy zho0Q36Mt5tdSp~Eu@O>}O-3fnmwur)tT;hdqO%=aJAc>hONM&Lvy@LLLm0UhB)FJ6xFxuV^u#rYqSw`H zj~H#{=7vm_t}I`Z#Y7lBMU|3DXI3u$7z~cXk6y`Geh})aV5%CKtx6a4Dwra~l`lOz zzF;Qcd+kkP!eV1~u4P+^tF0d_jtw6+-)SLAq{>&G@GCOa_bWElcUj01a68TsKk_ds z{xou8<9jmaX(pYb;*YWxw&;o5qwb7G(>f7KY6V+-K4n_!&!BBP@P(1eKW2V9XE3## zvX=-ktZA z4r*N(+~Z`6eqD-8RTLZatRO;{JMz4Lb7Y^*cJk=3AiG z29=z}CJmy;aA5zWzb^w8+~r{D#y$-JD&G=}917paGTo2*;j>86RhY8kIm&I7hIMQ? zc`#TP+mj}VzlkgpWR;W;INIC54<`qOH5P1mgr$M%PtXNUBzZxvsb^Jvug#k^HcfR# z_vyoNeDRs<&KlI8gRqYa3=Q+$j+s!2|HSNHlU%$pPjyX{;aqt0fz4x9JRx3kG);t> z&|n@ZslKQUx@>Xr+H%)#`gGgn5Nt5IaF_|jby(wDUD_&9*jizcp(t?b!Pw<1_YCU{ zZ|nR%SqopuMUz&W%sLUI+y#Gv&fmAKG`C&Z=$)o}xc0C8di|Cz;?J8-Uz6bB1R8&g z&F(p5{u~iCLC-&I%Ab8ua@$q+=Sgcj1z;q@NY(R3(F*Vn)KG zOZvfW^K>rW8+mNa)RNp~k^vG8?1i7@?j9twoGE2kJ1yAVEm~Gi;cWJ(s&=ZjrWoaC zY~Cy-{|Cu(flI|m5#^*$k8a%ahv&h{(4;| z@`Q{r(X6Zvu@;K>fR6z{;k;3;16l2?kFD3r+pvysm6r92&rc$EAOf8bwcG1`W>OLjQS|n@4pA7SslCi$Q| zpWQq}x|ZiySdcP^?jiu89eH#%+H1k#DAUiM^@uKuo3?+h6>2+J`__SFX^$&J96_=p z{I%wdhb7mX)OqfcpgWa7>%&Wo2{V`43G2(6&!=dugVnwYs}0lrCJ)rp8Xko(py&+ITo=1YiHgjBJ1#8h5EvrZ!xG;v^30n_DA; zlD?7{Ks&2_?p5Qszs0n3Yv#!SY6s zXv25k=T(X0S8uc9T>_{L@X%$pCeP_bij9_TL4yAMX*_C%pFAslpHtRt_GglkTa+863-fTKc zu+GQ@R?-HRREMtwD!xKy<%du^v%S;l>4##$?NH10kpKZJln^Duk;AjKW`3q;K!cOVk`+ct~= zL(kE0K3^+qX+}zvy1%Yr8gF)-lQob^jf2qnHJ>Gg(8^|U%_ThNR>^^H#d5MP-@6uk zbBy)}CE%OcO0D_HE^;4k*Wj)jkzd=qNOGYlykA|VPK?R*;qZncE}~eg5FU2&X)ifi zH=@Qzng+h|nH!I%+q{fSC<6paTMaUCy+Y*5zk3B6=oM6VyLO=%HeQVDVMHyL6^^c$ z8OK|vboQ7{vpr^nth`;h&-Cj+hqh%vlIHf^@}d=VGR8O8Kye{+Uff?T}wZZ!EZr@Pd^w;Y2`uim4a z`~Umnk)vZH)^RoNr+=7GmvZm!ceHs)+QZWhJ+SovRbkagb_llSDY+a{ua&mzChRPU zaQ$i$VvKIC%}?kX)JXJ}9mpX!x+tj^-f_0!hCd@}Y&1V!g9%le^)SX?we7&HU1ybE zaQ1^4Bc)oLDB5RM-i0}Z8&`X_28}8Bn=jf1AJ*-T-+GXCeZ^jG5BEepskKzl*GD&5TQZp@S5{A{#Bwh^>k?iW3gA59&%~HSD%7L z2`?G5qOA;(by>_PAFmSkZyM)A3`n1sZ{4|M!ZE<4;6*v}Hsnct33*gGB)cCWY$=$< zo#f>lRy4EkdOeX*;PpKw(|s^L-sUA#G}1sZ2AxHjUWreQE4U)7^g6;Z;Jx891DmLf zTBPyjam239D%raSbL6m~L)}jA!1~kYjclaOYKZxv{mXFd97*A@)Fl*yXl#R|65K8U zQKF3*9u}||dZSn7Jn5`q2bJZ`RKs?B`_v{4_qpBu2|X#bL9SLnfPW-zb5@36s}4mC ze8rG~?7VOO_z zPj@$--5MJOxmT4B;A^$AA3BT>$%d_HsblK~M{y+2gRMPSU)`eL8}PxFnaub~BFl`5 zUWmB~%)Wm@wgt!cqi$Z0tArT2FmCM#WbGM@Z+qrV01YN5{i|9ClG7=@$n4OgWu`2E z_;9ZMw)rk@b?dqK8eYZq1^9g1fpdj)sQX4#4w=RkUKNnua~4PK8b?PmAkg(e3a=3J zv?v-{a>`C3GWrY5Ui0|nkgjsY7$E(h%@2B<-*3IW9rh8|zQf$69YVGWSj2weTKdkF z%z;Nhv-k#Xf3yg6tri@gSq~kLT-v`=0n2~5YndF)p!p69+gGgAV8&M*_gwX2D7kWI zc54kI?N`hi1)E4~HiJMy6@6fR*3ZzLKG>LPO6l zKj-F`ru<_TNouZ0(K9zdC$bs6Wv0}3z%j$1@R%{ugV)egM^VyrA{py`gC0RXT}>As zYw~vOpb$@5-K0LCbIhiExVd8YJTiKjiwUz%%$=bW&b{ozR&(Wb!GkLv_Z#}f4u#!5 zOL$O7=d?ssXt}5nmOfIA9H4D6?)U$8sYGo`G@XCh#=BJb#xl3EFsXV%#+(|so}h()y}MPv8;%ji7{)hJWsi>M3^n~z`>23leED4*84 zJgt`AvnZBp3aETyj6y8|V}z51ns8`za!v9Yd&;fkuJNbbISc~{KG-xhvED<+-HU^d zX->``KS>kSGTcc|tW?D>rD?htK}q}sQ3g;a@Rcqs(kowYu?QVnHk_{~G)Ba2eOPA3 zAD6c)W#CgtFEjpdqxfM{JyMYT>(XRLL9FoV1sQU-zQScNGN$-D!s%z{?u+2Hk~(27 z(JyD?HK`Z&+vycstyo}h7S5F#*rIQO9MX>Mar5YN(_E`35Y9lkVp<*}Ip-$uF#o=q zJ(>kxpPI6s1s5F2&%1xv!vTHHppc#z6R%^lA#=$0OPTLTHS{#;cijv3Iitf?LVqY{ zs$>QxG6no9y!6hV_uM}pMm$ZMos}P90$O;YSq4{460{?K5O$5>T~1rcScw$lQZIY_ zp(C^4Y^F!^?+>}Kn_S;Do!I$mW-_2!nA#4e&!Uw+$?0daBU`c)n|>a6nHHa^B*GjZ zqFjw0>9TT=3hN)DHr4N#9s4%!$Ri;6`y~C;g|Nrr0mo1}1N+GhcvqxoTWM`iU zAuD?yq{u;%vXznS%9cHjO303sagrTJ_Wa#X@6YG+{r;}&`@62+@A_TW>yKBw@^YTf z$GG2b>wW@Db3V9wSi-iUdx||a6c(v*W|cdKW;|$Z74M>2*DH$ z3d?~T-*KjWgX@;~vQU~nAHxhB59;79DGn#gjIo&*^gWs7I`IY-thXNRi8#0LCgy1; zVX)NOkbPfGuF}FhA6Fa^3Ask4U}0uVJ(-rHp@tM^Cq%nhYfI5QJAfD)?!B6yvTJmh zj%d=~K37iF{tOKMuw{byNWJqra2FyZ+5kdlA)vtsHWb7ZJz*Q%YznZsEt8$3o9Uv$ z)fAvdg$@BnhOMlAWZxUATo3Av)L=_Yh{$J%F*(%(vwkubT7GVlDK`YeMpK8Kee2O*Fb@ zcg-CTy-06^$d`nG<HKr&)4tZcA58`_zv$ZUEWC6-ruXtyz4v^ogrLiWOKdd2aa{8+VitbcP|NGLA1!` zAE-F|3GCb|wHFtA_LZJdWWtNs)21(TpeqviJma2KOett{WR{}DA)+WuYmJHPSFvkP z5%qihBG<)zg9xdV@zb=Q#IFICj>R?S;05a7^z_&BPx?gy#eXEMtJNPP2CYOR*iiS( z>bYuSkWw45B?xCse7bR~@LY^d``|Ebkpfb9-lfp zHkIpU8TGtsO7zQQ()hq5J|kOS-Ap&mMZGfaMdGv%cdxYRQHS~SHdMmwFGyg1v>$cx zksJ-7vg5bSkOZ(t5*vebY@0O-x8u7^!|4_VY1H8Z07zfo0S1liGeaZg4hajtH;;L8 zWiN8+ED2Y5Tn`iHkfv0ekY%mN7sz1=hR(;ww9~v>Wx%$@)0#wCvcBfeK-3zavTc;$zu_l@>`m0i&9}&vVmH z$s{S(X6?|5Xg*kdMC@WvOERR{fAm?P`~eItv=-xgOP9EaCdM3kH?Ess6Tdo37-dLu zAbt|Tl}^5?v^SqCc2aq%+}PATTZRy=VWK!kSGQ#<uMag&TI9KS8RHpeMLF8=kTSy?hwdLOJbt*3cV zadGaGS8>jY)6nExx&2&(=iY5{2Hami6_KXF*4kmemP7A6SR8Wi#|~Z^@)2&HY%WxW z?$N8eb0?6GNcq_He2ADAS1O`C2Wm(j3+1Nb;>sgDyLXw1MX4C+1q)3Xm@J&X_%KtL z4*AV=*AxWCOvE?xv3^?!klU=7x#tro_fW-<=N6LAHs*Py5dCltqnUKG7X?P$Y9a3o zE#=3HH!QLQPzN`)^I_a5Z7j4HikI4^Vt=`$EH*>Hp*JdH@t)^oc zUk|ewqiDCHvMO4do(-uJ=!~j+ZBB7*!~z{fDLmJg&Ee3Kb`fQn8-`bvy{DbPWg*2! z7c;FKyJSL1#Abw|tOW&*^!sSVHNrcFb#u7WpLsp(6 z+FhHgbr<83dBQ`xTuQMEz06b=!r2nD=b+#<1xa+ryM1B5kQ(i~U&Q+!6qh%dQ`hz? zB5!7fyfcqF$(h0Nm1CZ^1dN6-CQyJ+QIgZDHLSEgaQ{oIzdL2sdR-*mWT?2ZTpeR- zaItwC8j^xpR!QbROA59J)b?p%*IR{@s!XDMjhamq7b1ZT$nl+vz{}03I8lj&zM&Uw zg3j!zz*hkU3#iLOt1I)e)h|Q$)TfHI=AUL!bDXjmfJUKFLfea@i}qn8{&$|sUEwLd zn~W9w)a1o_*FSb4D!tDGk1{z>>A0LBhwQU4FHP(=<&i;#I(GQoe%mE)+hEta^RkT% zSDG(2;#)Q{E%wqjK9z@D+#-xtZja?c#IY(k?^uEEwR7AW8b=)yT(uU+Q$dPmzsEt4$x?H%yk8l}TJ!F7}z< zsz2-F^e_^%CJ!JZ>k&|B7Ch1N+Y?^*1@8#9ye}NDle%qFr{4dWUw-`uY`KIE^voTX z^N%zBaGiB!R6svC%cuPTydgs z>6`ou9atHhcIC-mt1;o`-kiV?jkA}!O`(GC7oXx8JO28L#IrC%sx9I!Z~U==M!p-X zXcjq!v9ri2Jv^Aun}Y?VPUV9xgc%K7C+YI};lO!I(xq}af%4bDj@re707T9iE z=-C+&j*Q(&5rM}M&|K(0n0Ty?nd7nVd<;uBM{u`6lS620 zSl(8iLnipwxT0g45ClY3+>`m#0s}p6!C^MP zXS3SK6R0+#CK?K84E;b1VLNdOv#JY&9-j&FrEC76{x`7~60*$1Q!9IvW#W*$&M)40 zj&Sf6rO)3VcthYICUyyJXJ(@Rx`IK_+*}r`130 zwpW&!c3@6vJ4E9V7)R3c;=2)F5Nw$`=_DoFtCPZoUsDBJ=Mc`yRc>8&;-inQc{Yhd za;?Y_{3VJJdEQKdlGt91B9%(yWpHEEDiKzU9P$8YyncU4jNZB3{_vzXuf06>DcR<8 znCU^*RAF|VO9*gTS{R#h<#p5~{itv@(mKG&w)Qx@6<&-w1relxPMU3^Ow#vK$Yuj{sr-U&F^3G&-MCeJ+tj0*oxAv&T#=1H_Q9X8r#nk1|G}E( z+uL%&w(?ZiN61pqGSq>d*vYgY1K~2Xz)b>tWuR~{EK`P#^o*r~{q%pM4D$kcoU|6? z*9|W`6HP7{06z7_V&am(cv3hWIXC=tb_}m^kRkPq#e`?!&?JVy9+ttt%C%uk%8$Y! zzo^~S*Pviaa2|I+)v)B)gwNDxy(?QS?Jq#IMp2!9OvDzB`v%cj0_2#I8rUxAz#Ml` zG?&XmyW|$>P&BSZw<-_{*vwq?Yat3`QZjmISNr)_m;1n-6DJdOQ}&oG5mL}?EeApO z>W8{np1SlP+6}WxJ;^+B+NSQl{m#~RcYE8DH%>O}Ef$NVUgsLz{W)Zz(WlEKpJeFJ zo54!B+eSC-5)^n6XRbe_PV^Z%v+MSbw%)=2tNQu6=PMNHTVh*0(Sv&-^{(y-L$MqR6bH7Y0Lqv0-|9O8ut2{s)%72`Ww#GRsdl+T^>6p6 zFVa9BV}h%;@kWbPo1dl)6OiuP(Vk?uNE$9IklLXFnpN`dKO0hbLYvTvaYYwHWL_p* z^7ymgP4(pIp~#>7u>_x{v8+Qk7zwp*Rn$~Q3U?bJyy=FyGm3{{US(>)bjrUrftNES z$nRW0cIfqdyVAvPO7oY<&|g7WLVs5~h@?@HKi%bt;>E+Bdqo~U?JO`ZPkol^s>c$T zW`{>|99QmR=DozY5lIVNgTh#fwajfaetgcJ_>qHd3&*H^HOKe#Z$lIxj}{8D+kjL) zpNMDYGGly82<3S$ahLlHN!K=DsLzpedG`BTrLY}2aCP@+%bV73`p?du6tz9@J(TVN zgixYhtCSY&bsDr3f1W-!0-!-9-qJ?o7e8YsZk1SxhCKfp1srzSND*`k z(<|B(*+irmTA9M>`QTye za3bYoA0mVHmdLGE1WV*8WF(XKUJT+Zl>Jt|sV00~El1ye_oUlf)fg9>d_t&t=E`Ox zwlp`Rg?q!twvk;!TAm_59|vy!St4NjY(IKi{c|5nHZ{U3mUQt>uq}Y=HFsc>@P(g} z&Yo1jKTu;Qzm$mTcI-?c-;M9(eKvog?bNaJ5qUvGQae>Ff8?@H2zHg5e27bS6UIEz zLY(`M)Oj}l=tOM8se3$o&z_CsJ^9_le&R$&(62;w?)s`k?>^Y#OBpUqvfB$|F(vW< z@5a5WuDoV|&U;Z|7!L7%JPljpF19UBdwCmI7m@}FaOP98E%VL9)eB)Tcv|$Wq6{mA zS{xfQSB^R*H^norm1n1$PM54Sx{O{P+Xf|V(i@LGEG5>bP3q8wvu?HFudZm$03-`q zW;FC`G@m-J%PpIvdrJ%b>B5E~=qhK|25tyzPNp1*%~`ome^5QPxZ1qc>2o|>+#I)5 z9d@d3HFj+#mJtSyGc;jqKM&4u7PohZh&%^!`PY2Y z^G^i6InbkBA+MjF@@CKZ7GT{wk@7GzY^me@Ss&T0JhMDqt8x#BSs4&@d>e6EQW73`vBrDyX`Kyww)jJFnHqWoLZ-0AurQ-ZLXkWTRskkEL?Fuk@-SP zfeI^WJHZJEN|e#!Zn!5;gYCri=A*qOTeOTp0U_jZ;1x+tcxdv}&xbT;IB#08frgF+ zriBS@&shrg$^XUN;&S>GK0dP9nNvFEn@U$aGfI3YgK@cfLB^~TJ)^y24e77QLnEEd@{ks-RGQk6 z=m~6!V4Gxbm9COWxb&eZ&+V@^v-=T0fMr-W=QaP^Sh(?{a71>)RmS8T(JpdQX`sT6 zU1@GYBXc--VZZx%2wR0}!`T;x{z_`+946^0GT14XnoP4Z9l3DJlknwz2m&(rm*twN>sq&ngMdE|)x1#aEntTrR+zQ!PoAr0B5PQ?Y;dmjI(~ zOj`)l>TMucJeB1?6VsB0MW~>}r{125=JFZ@ZiV$|fAW}8nfr&tHjZGtKql!f2`#Iu z2z0GO>Geo8mPPYNi~AmV#_2=)(C<}~h!oN^@fa5ALPpDg(j~dkrOBElYO?5@qb{YR z3n+Hw9!cGfZHVXj71T<4G7cDg^{~XHr%Oz^9G^+u_t4ANmEI2ceD+a0zBTwH=`0af z5?hECX0FArOuffa*@_@E5B6iq7z|q}ouVU{2)U_9Ci!|sus(}ynHusWY;zf}MdRfk2#!pn8ZN0m#l9^HDS#(W#e+?}<_dMy$- zwiM&msf}=!|5?)tUPDo z*g(>@fVQL7!YgJknTJx#BFaR`^DA?E&od#?&G6LPx5uJA$?4HELwyKh<%~eqOOQa^ zbv5tg!Xgs&b&u5&^_AG}JmP%c6!9jC+M9kX!t+ZNrHEz7ydva*(GY^usb4$EZkkY> z0aDC41{A0wSudW>Zb}mt%<(7)#6~L{)Q+m5yQ|}uX#|Qo>B(^M^m=mD@QI!Gpv!P6 z3Yq^Jjx^JRxt4YZ9l{KlNo$S#pW=L#4rDr^wbL)!Z*OI|PG`zAWA}d-bMyOnXb)Q! zBA(V|_prUJHGl~A^F58*z^d?JNyi{4(;S1jIk9Ay{3kB;Ce@pc+R-^lADwJPE6&R) z@)qu|vR^XV#5^anJylqINTpnJP}W7cP<-iG2S;CcX5L3E@D<#QzTwH%y_d6Pa-@8s~&GX3b3s8xSgU9vK&n?c?J`o}gl_n&kx{yx#bjU5>2`rqbbP43fw>)Z=d5qtPPP$T96Ouk7oLhE=I{LOeh5umPD3JvDNo1aF z5P2?Bj-%W%H4A+}n=I~L*Ou&!?9@GK1frGI|Lf)ulGIKKvpIRokfvQ~pXB3M0&bK@ zVQa3@JnAYH`TiTz!3Cnh!u@1Z>qL+*oGg~uF)jYH-Un((fu}Q7k$9#egMvuB(dVrp zC?(WmjrxAMN5EZ|2!#`ym3Y->A)VU@p})R+1@P{jEhzzRqyW=u77ONh{co$t-<2Lu znl+)@qkjxlr%V=5b&p0jX7)~8Dl?MEdHyLENVexC;=0&30P!_RJ3aeUp2kw&Ks%tl zG~TT(dkEf;i^CGzBPEZ%7^rTtG!_(OU!4r!tM!`;{-~9|J*WL-HYA==B<46-!1Obz zS*G@lJh{a7TgBTOo9CL{9di+29^Nbui|Lp8HI8^lf_1cnLJ9R_V``_$EfZXwsQOBl48k zL)hwswpvps()TQZu>SC@*4oG>*F|0T;ZpL_mCY){oALUyy;}LY9sVqs$y?G%5_C&o zd!a>6{w^FE)L5>{x=7&qTON`=X7uctIu%J;l8IgRHsCo`s55>gvygU!+}}=CT6ylQ zMjT(|Yh3oqTXC-JjRopjr;Zw8-#9_jmQt4|;%}6neT1-#3tb{Ui$f`#cZ$${@g#41 zdstpaGP6xv7qcQ!T%~faBmLM(mLAbO->ub68K@s>I5h! zH=G@oYzs27A6xV2N*ab$g#^dpoj?CtYw}b#i%$thko&H=N?#&iFSMt%kBm2%k*o2@ zNj5HQO=nWQIVaYvyVl^sO08NfNo9aFWEe?_^!~cl;w>aX>p`kZ!bbFG2Yudg1>VC~Nm!fuRn3K? zya{_5OHW*$oxDJ(Uyx(WwOb!85pU^9>M7a=#&i4!c=0>Z{;1 z=CWI~0raj`(XY*Ox%<31nHa2BY+DbdRP#gwcatYx5<4h)sV0*b=YI3Hn6s>UzN8#M zH!^C9ZrZ5=`E70yrCVvJwT$<;{^4(be#zpQf{dn14#pn&b58Rny@^}iBB5$GUZ`Q{ zgaG+M;4I((>1R87_}>k_>Z1>X^j-Qu%Hwv_n_L}<9nmX(J#8gJRyrAfmduZ zyysPZ-aqc)9#dO^0d|sSx5l_ky<?PhynmbsYO4I_HI*A9(QcpG zcFRqJSy_Ywq=MH!%}AqUFKegEUdFHnIW`VUHCv7TtX*xo`zXCUcUqy2N`YxbL&8m< z|Sh2W^HQH+bbdasARx-s&mGe|l4<=ZX5Gs}e1Q>P^Iw zR2{#hT-ctx<1w%a(b=PK{%R@5!z71ETa_N-ZFI0Q9u73oC&aS$(?=HjV#TKAwCr@` zPkte9EoGdnv+g}dHqYCeE~SU5zSyZ4qO#H_+F#co!kV#sca{MMs86=D8s^2Q;fmzg zDFhBusGr$4BX9&J>k_o~q)Qb(gt$hrG@`@0c+tIu;71~hwoj={7J^bri&H_vkgi|) zlb|9hHfsD1aGh!4ZxGD<%y9ErnFV`tD%<$SR{!hwB`e=;s8TV~`MVhdgK1pPOVCfj z+dlYm@|Cf`-I++ACE5;xT2Bam;@3Vu89xGg5bjDtO1P*xktzmjG=dJl6*B$FPeo%9 z#3XIuQ(tb4N)BrDM2p%rr{+wh?P;b)CoZ~udV29Tex~z2JN1F6a*-k{qOgX3OxNh- zR`&6MI%mJ8zWTWL$Vf|~59u-T;c-xKo28kyMZFm}4Y8zbQU^!UTO+;2XduVZ5! zWSXxTq$a-pqtfvG^r__ILgOM}Z~y0ncs}%-0Jty-Ll-26%w|{>GP4735U@1dCy^9_ zUI||sk3iGM@DrvQhJRPFutR$)bD5m{NYrme#cEeN3+XV%e;)a;a&uZ4vh2~-1G}g{ z8bFRAQLqWwG={e3%uBjO@@s>79rHn=qNz;_1U@OLuo$4x(UWM)ihPE+9!as=Z4aLJ zKCt67XXlb5arq9@=Q5w_W_lkrLdW~;tKP*5)+ZUE7r$mJicDVIo7KKnAe@yW4N9e= zkp&RJeO!W1WUXaV*4657Z*@Na3Zlzm&y8mOgCqf0VcaXvzXa|AN*Bx|^D4ut7%?s# zxTAiwb(dKwV6wFLtVd?K>}9a^4wQA_lit{H%6sjOD$nNkzUP&Y2-00HNmrZ8zPqGF z;?Vf14MiS`d}enu+{l~yUgD|56Z9jpj<4kzI7)=#jc-txeL77NN}Yz-iDAkHH;GDI z0*8_{CrBW^tF`|rBWF_PRPVSA^wy_*+$1iaU;th1MT8%4G^ z@@_jC2yEl|s8E&{cn>L}Hu4OP!E(?4n*nS&ElqA^GCEOBc3rd!1q0Z$S@cn%gJf=Y zOkyY6#jf))^MGS+SZw238x?VODtC_p306||n86U)ldF4v4l@=X=p(oHR^?q^rkv?O zW(6rxl2$EkYM#DOa{X3h-9s3ib?ISPe0JzAA&U^3xA`pp45lwWWOmz*bl^eC!oA>H z_noO{m+gM2=RVoT;ll5lZ0D8y)p;&1R!mePL>U^d&Xrl8the#YvTi|lIVrR=#_&Ch zueXDN7Ee40n~;`wZV2mw4RSZHc_fo(d|qCr99haYm$ozTN$XYyd)UAqdHeef!K&0D zr%v8TA4qtAKbE737gWi*xo2e5d!?#w^v1fd*qD%I-*uKQV{nHoUzP*&O#aXf`O;u4 z6?RWvuXD??Qs6;UKdnuWDduq&4>si1hhzg0#S*%f9S+qqf4mxNiOZA=fr+`XIUj9G z>f71}EdrEFoG(ce-^a(r@8^4ibV`^VdGoy*@V6wjFZ- z!bo>nwlz(Q%I zFp^oVcPSRE{jB+Y$Z&ZEytcv7SNVN7u{B+Q zXGM6D1(%HKbig=Jf=)Y0Jv?dxw?sOig--qSY61pjfA`APQ@XbLV@%5a6~`<68A`0# zb&&LF4ewXG?L~wBvrDu0Eu*E++y!8|FX(CQ=dsur(&|)ilomb&e1kI`_8 zA_L~p2`pK>#i6IM2rc^@U8d?Z`OGbesoG&3kwCUmm(YW4kG+pEckj9wM&JD-%YJw+ zKG0l}t6)Spt>jB9V{Ti|%i+=MdNG4ZhLv)CWnB2}?XRn^mfqZs%sTxd=FT@UMRR7c zA)m8xjGBUdNxy&9uWaI=9Uvd5cVI!Tm;Lq-Kd+Sw| zvc?A*$5M)->!03Yb5^WwPj8*TmY*AEMFm@H=by{%EYLmcfD~<#amJx07MJEiW%Z!% z%^Y=jS`_yz2B~b$^*)uA?EIYmsJNYocIy?Vj_?+0!Fg?e2kHg32g`=mNM#gXhoTH_H7j(yB#(W6nckuSZ0ZFM!hvSKfLaK*dAN9N)t*2#5_%w2A9RCFdN>~ z(w3f`%ugws7^XtkrmmXp$NjxZhwPDhR2uV5bZn2&0d7&cL{L6CWJ)_saVrPDSCFI8c=6SczeXN7H8R|HuQ=qKp8?TX zMtj0kRHB}|aEHua;Jwo0wEpzgXyNG0rA9DSiY{K*KZT;3ivDq~74`YraX8Z$63uk$ zvnWIUKESDF1BIrtf1Y*y@+mMzDb~T7!rG`Nb_E2f0k5Xk}?|*+3QG?p+W0rr-X8(_Rjac7wSUetuELRyJRipdF_3h zC2Q#=bz26wCQ)KJm?Bl1m>Ons9lB6|&3+GS)r=Ik3aT0DEennWlG22(qwP#SD{MU# zN`CpqGOuCC>9@DIu%&Jq`1U$m6UDl4M2DTzRlCuCyXlQ^uIZuB;4!A>2eOT;ccdGY zdh>q&{E~yv7hdMrvtl}#%WT=9_aK#6a^FlQPEj}-{+V+=fzew@SgG5-GcS8*^K48H z^85SAi~W}s#ozD_UmW%k)I~_s^ZKwy&pCN7P#(;UH;PzaHyLG^<2mfu;ob}=;uw4v z_vdfLass5(8JRjp1uk%{B}@DviB)PpQhd?dR$9>BCS*0emYhinI7bcK=e7i5kGbjM z(Q|>DM!@XpKkf}^L$@^_ZI-Wv9dCyXyc%Wlq<$dkWlh17vfGP7N4Sz_X{dIcA0p%! z(MJ$ns_sJc%to=|^EkRp$}IWB7tLrB*a7HNE#_keS#VY7L23)!r1C9lCFp3n-5=NR{t2@Sa4w%R^OeSWF^~Bi5n~!*2D>_w$#rqtG|}qtC@|Gjh60OgI;|# z3J7G=CaF7D2w-@dP|XAn(uf&6EwhOQV$?j_1Pv z+M~o2G~)lr-WSXm_q%k>IcLU|vcI|jfn&%^i@?WzxKM;vi!~HNdvd0oVJ&c8_=+lE zc=?$W{r94LQ~u)OkJM`UsyUT;V&s|R(8@V`PwF*;>ms^$f-}BeNRkz^d&H+_#v?6q z@_bhLS)}mB?m`#$QNWA4o>-}QE_3FUSo1vp+8iR%>8A{`NrjiT5t>ZVEOl#7xNe5Q(|p=Lu-YazN=TXJ+2 z+mWai4R?wRUUM?TsWQZeETYR%L)7s^Q=0f%An&0*c&_B~`Q6rqISuvPEZOe9!jYxf z?$iJ!xz}#lqcm79c0Up88}A$xxhAV$$B5Uv%!q*Gd+=7{Dx;h(sB}MQ3%OtIVt5l{ z#!P{`qSgIU*}L<+%3|9lqg<(2tbA4Zy~6?hc=uZwxqGU;Z7-dbz2V0h|XDQm+{hRd^1F4g@2 zOQjZ9YH>20HuZ&eq|<2KbBRvbkQ>@dxWpwI+#YF;U9jV=2(+T$>fg+M zyH7A4CaIsAzVFUo82KKf01~X*dm9Vk>N>N!3VfhOc(!<-WEzrqqM)THbTG5}XY1e2 z&%*%nQ2Yj{?c|Ee_u3raP~NY;*X&@9`$whjkDH+m{?;z{V(t=Zq64=`cv9dt2gOI| z)q~{!1tb}>VBEjGeU)O6@rHh&nc+fC;n2cYfd+>bG|WD&rS%|c_xa&AvV2*Xn*VOm z1_X;RIeuF@&r0H<;zv@>`pZ_CgsbPQ_-`2=auy`=4ex9nt@V@lnXEg=t|Gp3F&bSO zdg`BozJjQ4m-)$mVa&XIi=+l!k`rIF8g?PW;N_JyrvF|IgVmU3b7i|SkSl3^2TFB6 z5|3lR=w;q7xInlw4_c+S7Z7UH-+B(keFt@x3{$Ph%MjiUw6_W?gtA$NTEM+?q- zqVcMujw2yYLvJ^(E9#?{qK4)+?CNOe)5ZAAxjrv+4Q%ITYh97h9(?mR!-WJFNb<%` z8{zo$1XdF3qZ&eqTVNdIy_n9HxPVNY(>^g>&$TJL$`EB;{B?Wyqc=}1$?iKCQm^}* z$bYf0AnmiWNw;GaK=1$9BzUi{Y^&i^Hj}&``UfTNc=bjx*l>!}&y|C`?Uik^Eb=nH zHm%ednN!(#CAfvofQUi80(w6jy{IPv#kPA&p)# z_O%d2nyVNRlvB)okHf`QKDtlT>XUOJ&-*Xrzv$4&y=Cp)5*{u^&LS~zoq`qdi#p@> znVBgpXbxsmQat+*t%Q!6oaJl;v1v~A(cbvSFZn>d3_xa6Qjk1B@x?!tV?tp4w6|wY{ z`(rB)t5t2lhWNQR-w?_4Hm$DrBtibl7V4-X9jx_OIlzA1#<5IPk&9jFo#snvj|m>Y zRE}JpfDD~{ zve!#lR#!tIaq4Psh{E>vP_g}7Z)Rr`Vtb99k^bqM`JyAs9OHPsOCbA_l zuZEJi-a|#R0(MMso8u%`OWIP*Qn(`DC?}%`x)(XhA7WHy#}n`@-TKUgut(!a_)zg&fjdrIfrz2ptAus+Vpw_W)aF9h)ibWzQ7W(C5Si`hFYCf11o-PkNbV17dd-y`|_F0dw;Zf`Aapx!+ge_}tVy=?s zU`08VG=kJ0cL4uKt*j)zYE}_fMF;bXImK6FbT7=x=?f#p_Y9f-*=5VY=~u@YK;U^_ zJRM&0Bv4uniqq~GScdryW(xlL@4Xs_(^SeU-Aalj_oVo@22Ly()1u;m zAhhQ|HenW$!)F)oZNl93{!3$}Q3^3_;n@v@=5`lf5ul@aVL)|5b+# zMxu7=W2R29=^A%0fiJ2|!@3-f`}{kbfdp?0Pq`kP@cDP52!Eo#I9UTIsaMC2#qHK$ zoqWY15!+xF3{sB*yGhBj&T>9}K}>zZl(Apy&Si93Ounh5XH?7GxB;GP=}n}Cc~$fm zdh7cHTUF}s>g4xw8)Ghc2|+qqn<(HST_e#RE%H&9%;S1zkxU;eq^gGyGjc~YOTNmQI~;P?`=v0!HRq{xJSQ|;I7o@;P!X9W7RfJ!nD z`?E#bXFc=X<8go)8r1OU*KAV^>J*X zy;~b*(&W_0KCv6fg#uBGe-a84P^3*@LZ9d22?qhWZ;I8AehM~L%^$5hMX{o#Ec6#JzzurJ3G zb*jg)U3}SKVnyBNX-&x8Rf%(XK$WQ5%n617U7p61a zyKiktWcpGOBvGRUhF%t+bk?m|3<4shOs6~hpFYBz8LXlCx?Uh$g74LD0k!x-`}vvV z2z(Gt>rNk7UC)e%`22I_yd9%ump;Ehqv`oEa5}BYW1`k`I)*pvNflO8Rbzu9(vte# zZI{uq`8@JF#Q)zK;C;^{ zt+w$gnt`k1mQ98aRx{~Vp~#bm46f_op}HX<-#?RQ#vS-zXssl(mu<1|26QAGxkFuD zR|hHVI`+N}xm}+hKNGSX>nq(@oaOA4!uC)#Mpbx#o1;4XPWoTU4=hR`d_!Gr7O|t^a~uWHED?8G*l% zR6T%=Q-K9q(-DoYM9DA2_|L*2{M8pk33_AP6P4^Sz7lMGLX=_63tVZ_96W7jfFZtC2+1r=Qa=YdVi-xck1sn6zgY0IzBd%R_bBvqmu9R<68S;_e(<^t zkEb8dscko&SLdF!vyt!=-^zFZJq)X*+~Tw8T2%|(N83`_w2#V>Yy=l*tMqs&M19q? zH3Yb;T?)0~K;unS&(va0Lju4hLgia{?kxVXhI3BEJ5b9;9UpBs+k(?2p~X&l9fFEZ zmo*;+hL2I!nbo9Ae$X`Sbwo1!K=>?!A@Z_X%9EV4Q@XNhM{iLjD>Up~h_M!5h?QXx z|51^yOmuw}u zwt$wM4r!0Qo1{3ueBU!m2{#*xAuzRd{){wefAFfj8M@75rRE#VtF#|DFEGe5+PoH= zpwD{TawW}vL6*TiG+~FJ zN2BD`lym~5Bk&*odh6$xH4)<|X7C7X%+G3mN^Cgp`4sXR=QHlZm}|VYzsbJe{5?;r zEX08GMLpnQ$_^pJ;*9jeuP#_reZT%7=rdbK}bMV0P%EEk`;OQFSUQ_Vx1{h{cR{Og@ z!0q?aUGJ(4>hPCAayU?9rGh$Y`+XMNEW^E2p)lgJfU^6);_b9UXtCn9zmA7m{fTv| z60o_({h?3u`}_lcBu&X^=6ZF;MS2z&7hP7$hm1!2bYjjEJ-OiGjCtb^w_?0K#JQYDjiX!=-X-s<)BKX5Z zDbLJnQ*IK%4LMuG|0u75>{|`72ScdH9+Gra6b?zw*1uLR_ybXl8r(8YBar87j!~hg z_0lfUyj2KJv+JC_W`8p_I|-)MvE@|9ti-C$@EMgBI;6`w-jpZCpU$829V6tIB%L$%R*3vRPmWtm{XNCrZ$EEAn-!~BTWz7;I?91cvP zO?+yw9Q(>88+qW&P$oRQa>xn^C?N6mwA7PBVffC|B);Itr@A#KZFm|mUFO%J z|C5%e4b_pjZC(JRjl`816a!T;!&3AoGMor67^#3~RsQ+L+YL(L|4{KFWug%8qH|8v z&D*N}jOmmmq__Eheh$6Bf068aL8;*Xk|wC5-5ybAL49BDjIQVc)xj3}-!3h8RymmDZ{ z>ED=NZXYLvn>_Vt)=Z4o=lBX4()T)QBm6kAaEt|N_UJY?By5_1627M8o!tlDl~Z;~ zIpd;PI6b0J_s#!y(E0(UvdKR@?+fu8#w9T;(1u?yxBKwVDfF-!OhQjAbzGNG4SZt; zt46GtN!KS@nFOCud;3tKVf!;aLxb$H(N!pS=g2mNw!A*fqSz0+` z^Hb?d=||w;QM*37l?cI|d4k0txJf;^f) zk#5KDBOucBj-HT**(Xe@gfN{F{FjG`1ytq#d6ml|O)rlB#%qg&hG8IAaRFayQ6u*y zoepUOZKY=N)@L~@I6^XiMuZ;JLAuue;e3Lfw8~ah3%?QzSxME0NWA&tufL!k4EFv~ z_Z&jh6tJjZJ4-td*Y)-+4%ZRSRsMU>0HFMz9yD}BHb$lWt+o99R}#RRnXnYweDR7a zKLgGLbpQ+1)r)y2ys{X6#P=%ugW5e6`0ZHU6Qo=4=8Qf&EW*2E;Oc=rOt3!?YP6c0 zfYoiVNlm|E!niYEQuO((0JpYO2O)b!MYS^d9!A>`wkoEoo_Wl$2eTIkgL~AilamRYjQv;ujuUO_nnn+5MX@Qb0y%x z*G7H)AG>HOI1wE?H2%U4VzbIOfwQ+$$OuyD8nHV5(u|-nhKflFbm)vLzdsPv4nDA( zAQxg2dS@`XIMMuX*;Rt&&~nvrmNvuEu77Ck0>8I$TGQT3CX5n25Rff95EL3RJpZT0 zj-a>_)tRMmeg$4hs(;C<;8^Cj7vF?u9G&2QP$K$ZZDLE$zTGVG#SoE{a#YAtb*O_U0JZ6a)x$!a{;5(#`v zi)g@u|C4u`PDle*!$|0XI;-E<8D8YgiEG1vAGu6CcyvxgQJhe{Z3cnCj|kWN|LbW@ zX^SWhTuR>Cjv_3Akm0RAHHU=C?a1|)`rS8#$Mp_=2ZR4NkBguYpLBVP-3fn-3Xj0= zxBb_#k|s?u*$D}omf;5QDZz%i3h=}3B5MRJd*+@Yxaqmnj^LB>ewBzXeDF<}Svf0g zGucJ{?4;t^!V7zg?dIRVM{$+^gA36=tAN$j?R7e>VG~seb`gbJ}vN2 zOGQGzA4E!}ovc#7a+xp*n8G038PeJrtPoxN&&mMoN=M6L9VA)D4b= zzV-nba|3On`Okmtyh$N!V&>cH!QTmKPbMYM>Z_Wq2LNKGC_7RV)ruguq^2PM<#FdN zuVQ<-{+PG?gU+D+sLp>yoA#-Bxq$UMT&r<)3!tKckYaZTDQ@w9Fw|dG_j>@#@9eP@ z2V>BbAgwj~->peL`?tpm+T@3@i(R4z*VV!F{`_qTY%B=t-Gz!f%Q;IQAO&%-q|tz} z)2wZgS;Iym6przFHEi|<8lOts>Ds!pO^c2D{{4r~bND%O#f=Ad86kvI{#}a!SOJar z|H(ODLzFP9=zu&dCN{hRNy2jH*RctKjib&CgPnL4 zGJKXoA?2tXjI%~g&g1%rl0gjR))SrF7NW9tYpA9vfOdMxjjkNO> zrTvt~C_l9Bq@`$uz(H9eax}qw$q?2<>iMJf34jl4Rrmkj9j{_Yj&p{EfO2yv*#2*i zQUMjLnWDJzsWzjN@%GNzhoaRd-Ms3yLP5DJu~-iI$N|+!yoW?^gQcwazbkHwJ(G2brfvKG6OocR`88-W*P0JJ<;{YO@%&PeHZRxYe5w4ktR z4DuV-bqV1Q1vM`@!ph+M13@J}!41!;-R%ww$*k?C04$RaYC>+{w^Ai?S@}s3Nl#7c z{b_GhzR<@*ChVaeIoXVipV?mLX+oA<#+k~hMYw>tY=?GEL_!`oa7CfzCGCok?K`52 z-S#DeWqh9h?Y*%9k+7qQwSILD6_F$D6gJnL5I^3L-^wNb7h`W76=nE#3j@+14xlhJ zL#pI}N=UaNpdb>G1B!%%)X?4C4N4lcgme!e2qLL8LrM40oO}G8_x;YhzVBP>{KG7f zh0Zh2bKTdq_rCV_v8e53!E}NIuv!@hRlxx_<|xAAWdrJD>hAWxX3BEo z&(41*mJ;W2>>a(45K$k^RdD&U?f+&)x$;f-Gjy7R@Ef;%x+aI17?ew7{iJcA>B3~L zWZn(SKH{sTp`N113dS(%hZHZv`+5<{&m~UthRq%R3Kh!vkO<#3R3@cnq~N&p`jI_& z;(+KV(9OJKcE}Kz|7S%cKBZ}PArDU@I z?j~MWLmP4}bk_@>bb6YKb*KMt$4Ow%+ed10o=1%0Ru;VU1l^R#W|}i4U$fYy=`0mX z$>ofK;7H8Q%YI;_b;18$bZ&w)_kEEPYS>s^S3M^bL*BjMB}KWWwAmBbrq!aH)2hgx zbNtswyi$?j>F_k7V$enWw4?a-Yt*oW*KH*`mPnesjFQLFxoKwiq=wdB2MtHmr~l}i z?_3QTz7oOn&gD$e*f{G;4Hz9K=zgJgr-kU5PDdSK{Itnrn7zBl`Nh|}l;Ic_d%x7* z<`kt&r>6&JQKd|!qr(r)jzZtefBazwDXM*=Q8j(hKEJ*d{%mNtv$W|*{|mUYH8ikV zM6*aNt;GYL^{wQ+>w}8mn9GSM*;+Bs231MBpm!Hconqm7nn^AbPd@O8%sAbQQT`hE zwnBI`tMtxkbsc7F40Ij6_fr-?>v;1s%^K)au?If6%+5=&z52J>wpAX$kGG<8fcY*P zYFk950OXW|fkWh{QS&FPnQ5tv2s8(@;Ox*GDNc2DcNjQ--DfM3`08D{n?yP@uGDsi z)(A7pXCrc3$nw&jWgw$vtW*V~vyVHe0vtZE+_ohSU352%_k%-I!mbA&T!->g;~+fV z3A}lhJE)a^ZhQRsF}ovUqJLS{C5S`bHfNmQ*Sop0#`kAjnz6Y#q4juz_%rD09)m7-Rtz&V zgl#cbm-hn(u|~UYJo=x2#eLHAUbG~3HE%+dsbZf?{A+Ohs}GJHI5StUF{fvI(S^?O>lgYf^9(*q7?+dlSoyQy3ofCh(^Zs ze{J8^XV4iX0_#rfaotgn<~jGjZwO25l7V*z=r4}NL1*y3$x{m)gsa#YrOA5aoCd)E zwg4dbs@_F1o*=`0BL;Gs+BYffcxtYvpY~09k9F+&pcc2{16dX@4uV!>f#VM zL2w?Xhv<`E`Z&5HyK!HY?+XaA3_6Ms&_UFeACmUe9FNR0R;Z zt`5!=11kQegI_x#(&sP(kaUP>#Nt{NkGtJL{+^8F2#6M$DYqERwm;sP_Z2v|=Y@Ln zH}16Cw-L~)T<91&YqySYZ+rY@1Q*6t{pCp#!^ymdJeTrGJ)45e;I~(}R~hl+_}<9KLwG zJ%=7%9Xk1G0-uA=ac6mDaA0dtaO;#FG;LMK-$6javsU_s{k|D7Yw&9i^(dcG!=?DK z5udwuWR&PEGL+u}j242rI(R3X~n4kwpGC} z`QX5Z+l|5op1WOpV!n-l6%|oIw~l*yt3E?N*CQ&Q-31v&)thjIHKu;Mn4NtI-AIV|j|X7C=9)qWk%O&OhHx z&i(9v+_!vK${@0JeV-OMfB_y0J1}NuVU2WS#3vLvLX`q{nrU){1PLpk8||S-CQrjL z)tRCWa)hYRy*GtVS&|Pstohvgf8&ZvzMjb|zuukSol>G2qs>x1^8zfz{BtxF#~RV0 zz}DByx7W^Fls+DS_@GnYj&ey&Ykp90^$LEvwRil|({j-6l@*|?sCoKlwJ)oV&fV0| zu{pY2R1E4WnCEMj>6%u+QTKk==6|+m!GzlqB?Sz09m}pCpvFoK8Jd9!L%G%H=N%A> z5oFll5_EBfQ4JK4$vCrR1OD&hhOSxAr{{o{qGf-__(qMxtpLxa$Oz{gNFTXtfCoGx zQ5`C3;cb+aH?;SrwAlB~sjC0)TN;o4r zgIxiNP8-kH>!(PLtD$7q4|2Dy|H~ytM7U8|-lXf60B``%${RL-j#0HR_yGVZfRm36 z7>59zIh&jlFl+Wg>h#$Q&eJtAL z*}4Pv1z{Ugby|^|AFt)jg`C!1SqSl8-a^GNJ$zuI5NmxEH2D8A;0F-t|HUANZDiS@ zENM~*PpwF3&XpGo>lZ++w$hLpL|U%S633FyX$~PhTS_s;`%CIKK<CTFZO3crdlD{G z!wGOyc-?d#8|H%om2b++y`&}a11ReBn^kSU7oCTEcPZ8l*wHY^f}7e6qp@h z^s(c{I=%aKi#Skj_~^kX{~xEU|8J-mpdI7iNNyCEcv=K5v6 z4xs587s#-4qq+P3Q;!=5X+WqoVZ1KS4p?Y3AIA9!&po{MQhb8&W|4Q$Hpu)+Rd`=1`8)kt_@k=giyuv*n2A*NM1p8XyE1A! zze%Xq^{wFwpq~>0XC0X-$mi=Si1{|S0-6@C@qtV+VNZ|={BCw2|2H^#AI+L|hEj3@ zQ33@c_tNP**yxVu`)18YwJCD1_$EMf9S8iQ>BV@j=DguqMtX+sy``WHB zB9|_Zc4)mMT6l9^oGvS2tbfNzkBH2xt9F#!;2vid{U+(eJ>Gbs=-*Sp^kmSK{U~of zjaotL>3eF-Z^MiS#^uaPbK2eLjg;VQtnTdB-@o$6EwZxyOKW^w{btaH{j-MCgS#2g zA>~NBmU86miRo(Uqj;`Ny>T(|4be7e5@yU;yD*co0TphRvfIS~h_VZA&)-V@Isdj#Jh@Z~;b z5FLb@D7aE9%H1OwgnQoJDYPYQ7Ije@?12ljD&sd4+AlKR56@Jg2I1B&zL#LbfMYKU zZFcqo=%QZSDz5f9XP;4Q$&})`P>yJix+VqZiZ9|FVYvz=>VxA9Xq+v)z}!84mb3dw z5%+P{spQNVYQMUkJ37%#6rJGIpBm&^o0ZPD{ zd$;VNI3n}R{*(mgU9#aX=dLuyzIbJYR|z$lkE(3?yns%3YBGT;E38=h@;DFY5J+G7 z8_)Op=E0sIkDTph4$f$=#Nl#=9qGncSfxUELUnkgCa_PqioOv|z-~4Qvg&B1fMRtA z7_bm}#;O}~cfPavAL$u@XXm9b86Y8};NnzFFJ>5+G1?ihB>cnwd} zffWS3RBAm@&XgsLq^Q*Xpw;h2Pi`yY_uhajpC>QJX@ae)ITR?_cRDA{Y`8JeD zlcAmfc?-C|)-7a;qb*tyFRhH#PP_QV zv@u)fj97Q~()tGqT0rB$R1F-Tsn@`1T==cP zx@Jh4>_*{IM(Fk#v@#FPF^Y>qee z>1{(kB3nEIavwEG5WNuykRS!5yTuPL{fnKD>dE$pj?Lu2*zFZm%*w_D!G)Pv3c6q3 z+p2JIzi_b6)bYf7^E~|$CoSI>ZT|5T?8y^EUqgY#t1A(S{eIzhHwK!(uFD&TC}<8y zOg4WnSGJ4p?(5Wxf+|x-N)f5TE0V=7=rqf}KB#LyfSaLu_8#$m$fvfL)GKqmm;jUP zx{hy-PZ(ZbiVri9Bo2C8QSkCPqo@}bKuuI@9_`}^M&o`iA-(xgpbe-PK{3JYNodaM z9wAsWpCVaFTre?q&95H?d1iEmk2*zt|4`N7`tDd>f4lpo9Qq?F-09K}9h?OmxsUPl z>HQsWJ@D-E>^fBS#Fu~7B)6#U;{Ec&C5u|J=sgt=U+HmxXuyy_#p`3NE(>OJ zl9t(Rk@AtLl&HT$6fu#C@KfcXs!(!;zh~s;mi5ls&)G$gpp^9g3f&t0qSHsef@4G2 zV&wjplWqh7AzM{nQ;N>0?gXn^)N}_3K3T#Ml_X+T?rCvU#j}q-Kn)vj6n98SD`3P+ zxrcR|P{>dCob`N1mu6#JeAx=1^uWEBd3(PbcqHyWtt_Hw&iEr;Q!m>dbGjiGpFhYL zS(KC_mFw&il>@M_lNz4%U&_K8MF8BdB~i5k3lP{7$5v1Z@U0>|h4*vb;GtTsyj4>V zk17SN$10J7ZUHj88&nGJkyHCZ@T8@1r)gW}Ln(vW^?c>lV_;X;`EBJ2({jaEXu{}Q z;zc?T(M)(jBqaYM{l4lcNvnONhZol%;!V5vlRpIYW=~2BE(fKr47esL2LSQm9M5-g zOJEbby?0#MCh$0wxQf55UW1v%W~vkG9;pom*^u`}%H4Nm#O254&9b(b9=Z@q5V|D1 zgRqAy5*3O*BA8c*<{@5*8~;HQMQVx@k+=$4WRg}l8_#PU8!U_tiz=&RBne>2m+zLem;&CH}JllC(zUWp-A<7^^H| zr#hk{oKn4)j4!c~@ligY*R0GRx;h`c3M|TYe|$ekp z7JoTfMNyTHes4TI#_enYeQSJa*4sxP)Lm|8iB4L1oL>F~@Itow%d)y_fP%6edIK!n zu;#`8oi=m`sK5Ub8Nd9fPXyZPqVam%8y5ZmZ3STx58%*QVyN+7lSaRqJ+(n~0;tR> z7)>}i#o{K&72t0=ai)OH4FAw@J}>u@cz`;Ny%cw4dZ-OE5jm7KhV%o&v&Zb;>3G?v zVKv?trwgsLmN!^ptgpqd8IYMUzK_BEMJLGqC+lA1#Lj%jlIZ=-hiC9_gsmtX^wsHj z3x1@q$^*+^9ARv9;!bbA0o^+1tAf+d2cbT>gU)JB*?Dm^g!3Tj_?CCrpXT$ui1~t) zqL8y~jYj;`0EZ;$HukyH+s@?nS(O0VFD%6ds%ln%k8uyo#d9X?_9yH-60}* z>PV0CCJ#(_1xo_i>Q~4ebyAnp`x_~nEFW2XY^1@{S8JScOnLYLJFj(u&9^5YBDXi6 z?*(WqZYzEURHW7&hX0_W|4oX61y&`QtSBgpH91NLNL2p8L6W2pOG#jTdn}nL5TH!n z8238X?+#%aPO~_%qP{X=>apj}T$@m9V$|z9Ed8IAIis4nz6ab3!&=2066tX>He6kv zbzoO|H|ee*!w6-~)^W3}57YsB&& zs=wu%LJUAvFY8^#C$1{@<*$e@PYwSx9Vp(F{*6^njH>KNT&hv*OpcK2oT-As;=>L; zOXFc0YmojWohX6uoWAk0BeTx9^I*<6kUPiyMQ(mw3ctXV);0S&%!|~?PcpP7YGYh7 z$L&Gbh-CYO+=){kzFyvNF-m*|MUrq*Dh_tuUe9f>oE5L_*`o&8CPIIF+$2VPj@zrw zw>U%bWo7*Hr!PiVHZniBy2xRkxC#$vx{LPPXt-);*=g&zj$$&kc&0$K8|Pzf;Q0JX z-EVjOn*(|=s|7-IiGn0yY>v1?o-0Q)im`3~?q_kj{E%Z1@PP+a-H4{9{A@SdjQH6n z7WKx!S6xJ32yw1t?J!)+iwDeng18G=qM$J(J*B^)@R?f)-(sL}W|3UOJz+#68OJV@ zAVNZlS9K|$OmZ1+MEYU<-8ntHxz(`#$!%u|lybo${IVJY6+xWW-)p?3FG380jg))d z5L>F)HNIeNc5ac93qtcnm&bNGNC-N?$+jav0#Z1{pYaY2Rb^s(Z1j z4lLhI3@EoJq@%zsBYT6)NmS(>kp2EurpSY?a-!%jW>({rpdoLoKW$hpyk+;)Q^d1V z@Iow2gB_L7rv2_dLc-e~TmhD0YcYDb_w|U07E01H&5Tf+q?;bNoI)VT248TL=|Rly znmw80tv-4l4L7mrA6YF|BrUEO#<<7ZFHHBM&oU_xnUW~!Bj-*t2?9hT$mPrCMoIr( z?#mRI0NOl`2ct;i6-l}wjBDs$QL25MNM*|QH2FX5r=^Cvgi4=?J0B?3K&vZ%K=7Wa z=W|7x{1(WpQvlIpWM5-jfJY7g_PK)j9{>SwunaVay2D0P*WY)uc7(A8eWct5Ae+Dn z;h=#2d!}MC{77h7#Ow0MBV^#?EgGUyisTNiq(q0wW(-aM*Ug)cyx<6lJLX=^;4g@6 z`K`fK=>8T?RZoRRM#@LdK2x-v7Z9_b%g4k9L9hNupgKBUTfBzg%2781Rq+-uC{OUJ z{N1n(@`~(vnPIVui~&2ZDI@IHd8;Z|gCurZuSH8-$;%DPw;m(x=tj2Y;+4q;bcSpNKr)=Wr{f};pb*;L(bEQ30gX~(~f7iTO9XS?ox9r! z{16;hk0S%ciRxYs-Q^B{b8GfPa&m_lSR!KU6x|*MXhRQ!ot)DC488I~R=TUrOd4EQ zoBes@YqA6-E4D~+*w5cu=KyX_!g#H9p8M}CH+l&Bm`FY2MNpsEGmTR(t$|Q9=a3sL z$rz7iBIp5Ol-vF9x5iCB_IWQL^T8diA8DG@AHrDs9Gr}BquEWZ3YYp2ys^Jel7FxG zl1L=HCgh}{`SwgKCLiuqCtEon;G8xa0M>a`6F9$ z^1g@&_m|=&TjCKI-b2?dr>pI&3u#OYz*1T?9ymUf5MhnnU2YAy=7%5L^IA5-evz1& z9jVU_A~+I3n1=+FzSf?VrDa@KDc{Q)(Llv7AeyzW2^`IGRl+P3?jM9%UKxc$qT?VN zkKf5VeSM?sHK7&TsDd2uT>43U!JSmLavx@K3??-8VC3 zFYdrG(*@V>LMCB0u(mb${9gpyobS|j)+j@p_q@q90_W~Xz5R2Ka+%2<5oBK7Y(~u# z{x;#~^?~rlUE=QBDWMt$WJE#p{HRa;Jaa$h215nABv@d@;;&$`*(K#$N3LG1CY?yH zD*4fB6P%}C+--Zn+S9Y*5obGmu9c~u#MCZa=elTNIJY@t#0}k_Ch$CJ_q$&~pcEY> zbwnqDbsB6pJ)`8~`G%DJCK2jE?0KYW_VmN0RnnjXAq;;n`@H-!w*cXTz1(J%`S&l> zybgg0<*hId=_sfMxuH*ssBRZqghg1=-*JXN0%wB8m#@Ax-LKHBe@!l{mZsxLK&+Sf zLI@$@kPm(yf?!8cdMm*xhRb{>=6aR;>s4Y%z?-cqwjF~`TH8BBy)F!$urq6UyUb6vPY{RTH;$d~>4 zO@EtZTwD-8ir&4~0y78@~6%D}e)u5l!|VZ*ZXSdS}UhirHsITT-Eoxfb99XM6?}?XLLkqS2iV zqKkWA?f#W_>zR1&_MgNLo|LF6Xv;!dH2m&Mk=^V;4-w`C=*)s!v>@g-xgAALVRQlT z@uNX7wP(1x;Kw*$3{(?4QZ3((okyk#i@cu#gM0&sOeGF0HTRCSh`7ek$L6s#@6I|iPATs>L(U<_<^${4>M$OB5pO7RM;q&>v!vC*;B z_hT<1)@Ll=P3L|62)@u4pX}nW+7P^gv&M<0;3i1^f*e_Ow1>(*Y3d$|IPb|&B%*oz zF^?j8V>nnuy#D4_`n%fWkGrFwWr0r_TNvQXMB$42f{4c3ycNvAzw(7>#H-hxNceMv zICyy?liV9z?Zl4i!*TNRUV9RmbC55Jy*W1E>bIRkcc+yijdKcXHP`WRIZ?1~STfx6 z^^g_7zHC9GOckA3cRSbd@p9PX*YZMU&!e6IGh}lBu79ZRFk=#c^t@gE0+~oGbA!*0 z5D5H86#K&8Sh3S>aLeD27B9`>3ntXPu>4Jk>qE!q59fU`Itb6ql?TB$#e|#X`S@CnpROSz?H&a}LmHl`E4OqIbj2Z4f=8Am znb`H)6WJS!tQRD+Pe4A7BLTTC?8_(WmNxnMx6$)_+moSG>sE7*jqJ77bida;QV8`o zxA6AgnHgZj9dh;ht}VnA@Upb6?&coT_B*6tq$}mx+fU7u;F>p27QNYYiXZq98bnI% zq~cIKOoyME@7TdEZf}2WKT9K8SdJIV~N^2r0xoZ_yWUOdl)`oM!E zQ5r~uX9^{HyzFnuqPVP#{HLq^oU6o8W8SBSm~5y*8mj@DV?%pqW-=tofPo_)gmrBj z`CK^v?k?L&pPLom4xBn|D#suNtQsy`ezE5l@M%%@_Tn{va4rfE#*x2d`c`Lj4y1y2txiw z2hep&B|aDH#?#m-p4hH%C_KV&utD@CAH2KOk2*VQwI8xbjH*mtW58uctv7guk45|8 z#6wNvOaOGl#%QrKhhi_z&>x?B_9LqQM7LDfo-$YtvyR#eY6*Zb-{Zws@Tlu-&6^)2 zp)NXWtzh*%yaMj%RmA$=%(u3 zuGt89XrZ5fFKrxR(cq1)J@Tf9XG7~7LtF2jR&;V}K(2J4BDk&gx||bb zq;sDXqlZZeR#hJ$B-#kU7g>8pJz;!MbN57*c|Y*LFLNk1hre>+pYjJH;)q=9(X8BRD`!G^%tS#nm+RWI+B`Qbt`*SmZE9cd( zz`R$w&;BkwSjU`MpI_GdD^7P~O5Ghiy;7qMgFb^qF}}C~NMqM7LRN4q_-05XHy(Za z)VE~wP9)!|c71Y4U65v3pk~#qWZ_BqvgHr$JIY4hdD_*h8Zn^}>#-7m)ywvZyPT@Yi+v9ejZn=)kN(iz)3+J%_sxE``7@jP$&kF}8s`=K zD0uQ(bHKzu={k)>eOYbr=Z=RjJDLdi-iXrrDF~#nR#z08vijxER#_$x2gJGKJQWBe zAR-jRU-u!Tz^7v5VP5-z(~eO5>CfEG#KzPn&up6Gw5P1Aa!2H8(ifk3JEcfkw)oCj zFk|?AUbO5)B7QClA0>!z(N)&EU7G9}gU5o|EG@OD>8HPbJ=hW6^`k`hy5^gBpoB%p zbu5faH{nL~pTUCYsp|lN?WYvg6p{i8_@(A!X7t0R?qhX!l&VO~#k*^)tuDqk!-s7| zEIktHVTeYtor&e`_RdCa+UC@U2w%15U$I^f3tes1OH}*1_vg3*#b+3yugnZ29TpUR zH#}`>NaIOS?RV35%I@dh*Y9zq*@e)|rtS-M2mds#dJ{*yZ@{@2a-D%IP$KwmH3uN! zWy^k5OY~z;FmMmJJ$n`}UP8<9eMl&8v}Wxq_%?mLAT2$dnXrI2qXBaQ}cmc)xbPdz#P|qj#Zj&21$2jD| z`f!}PggW=72&7!lf`Q_KrF_Tq>OLV{O&2X6EZ=N5U9U}}(CS<6 zu|d||+To2>`P8Pq|M>vi8UO#s!9G+V`0o7_yAe!bS#qYyG?sDa>$&yI zv~cCCzjHa8woCAp7fkERgfWckuLraF2qT6ZA76$KbRKWZg%>GDZud~4HHeiO8D0wE z+up49G5!gf*8#qcX&Amd< zwS3#T@c5DcG>&v7HQG6EJCUP5gX%z=D0q9+o`NHh5`7c33R3fm=-N_0=}JT6p_Kv~OkoR2>K zw*N@Mtg&uB*vZ%-+VoAhjKbF}0m=`^GJ%7eD@=w>gP(AH(Dt7x6TTR%(0d!AL8~+rIBl*lB+&kz-2b9LYQB&dbj><&ZBN(_YZ2tJ3-ux$ppl&h zXpMr?+`Pe&ZouN}X918~#IW(-+|l)BhJ&q?Rj4+47FAC|-Xq&qdLl1aR~=yh4zaV` z-X|l)&-81tl;{s8pLem(9e(-25@-ofT&19R#E|vIpMZXvD*cZSXk}c;d6vNcmNT%l zZ=0#}xIMEQ84b;m{KF7Gru0NxbGg-TwvpgOCmT9DFNwlFx+xdghWI<@uPaDQ)qBn% z@>`#@io(k`UzoPD<7+sw<;xa-fj!tqVP{ZNT|<7;*b=45{;b}J*a%RPlEm(IejAV^ zTWMd~8=XxR_(Chzof@(y;`m~D9dd&FgjSR@97?+Ag5!0|XIEN3`Zr}4fGHa^y$7>k zppMq-;eke||L-|rP_Az5}O+H3*+bvPtUrk(Zu1OyE|is~SLu zUAOx9GNzBpYU=A83me27iyCN^qJHL3pPLJ~F539Ny7_vOTWvEjMCL_N5;$bYEx`a9 z@F1sx676<7{uH3^nmwmrw9|l08H|C`DaPRzrxSpDklSxVcdaSIKljuuZ~|+vGBC4+ zCTGRI!uP&Bu^{nKS(R^mm>L7W(dCg*$GR^{(BNGwXj#D`U; zC3>1XWkavBA0x6o+foAa74P}4)ET5b8vNk~Grzw0M?Cb3eLm3Jz^ zZGj&njQ$KyaNQw##gi}k4pwrxwvC!>6yfbW<{KZ|inrB+p)R~pdudLl=`D83HP2M5 zpNui`yGb@3hvbfN%nx!&k1dD)9L#^Lz*m;1(D3+kq`&8+x`9IpkwE>JaXhne*{vxj z50UZBHikB{DTWos=EXnJNSi_7Ev}piIj^O^TpH0L_gUdmZOUg}cb~=T>r=SJ(;__0 z-`HyIOQnVsvQ3Wjci*`5paknQPbP-Va+;i2trwkMRY= zL(6rxao?W{Pb%pkJI$yL`pS%-6jMmg?uDQxD(LNRf9Y_Dsf#{*uh8W7WP-tRd5Pb= zqRWKJ=#I3KX5%gb1#kTMoq!!m-A?v&sLjadkRUwH5j}F#D?*?^f)hr+AC+2SC6|Jr ziLXH-VC15K(cB6Igt%?%Ra0}^rXso@TOAF96lvAEV_5bh_|K-xLVR|~_{&ZSBGZ~P z<4zs@0V4Mglr{1daDRkW)aAbTtM)|k5j)E9ZPpx^mPq_3(EB4^Wy^q*UGi6g${tjfkv?|KU)Ou#%mB^(_OjBc;br|u=q}W>x|kk< zyIhQX%ifRPnL>SW&z)V*uwS!@>UyD19AU`&w4$2@MoQT%Y@zs#5N2*#(J66@iXp%z zvOG;#J~Sbf`pfPE$L{idljX*KI(YGG+o;tA2C`QpDRumg_6PDuARF|IrqUI5$oYrP zQ73XV?mY|%m%Pg~+2|IK6C$uP&!FQTu$6L=dQ{nME>qBFb2D@)fXlbwRrYyhF#h+FWMmGQQ69|$71pJL++;Cp6xr)vXWj85i$#$ z)h;8=@xOND9iU=WS@mmwnjF;6x|~Rx*Jk%$FxxohxQqF$%!y+_$g3Fj5wzRv{1(e& zNj`+9JUETGk9TG!--LIuvwd5AA~#$g{IBr15qmEVcOg6AJZ1lss_j6!;} z^zC=w2jC}Mfut6hBMq}(F-4+A>l=UHpWS_vy%g$j2o1R@ummsd6lF#ui{wM)Tg~d^ z>pWkup?2??zzByF>B@gO{r#mVU7m#zz5F|a^h(Cuescs{%NYkX89+MNIqoYCIGi^` zh5h!ZcU*XDwK93ciLJgLj7?hV)2r6aNN9hLV(R}zm;0qdlc{g5ifZhy6;sZ^qUies zN;IzE!lhLwaw^p2$KdQ|w;Q21?R3~t4G$D|dcgGbp}{E)i<}fainJ4n*)<86z%WqY zvSm~LjXYsvW&v`0NS;;XM_9ye4{N7ry8#Uqz1i!5>B?6T3Y=zeGSkvWP^abUu6TNF z`6ug{bh(*s0;V+Z(n5nh(u`CcEmvZ9ntI(Ggm($Jn9^kCP@IiF)vAGJ^@6Bmi$LAL zev7y#9iqW}Efa1TB4vl2$3)psj&{PFR#gN zq6_MWjefCrh&N`y=!V@>wW4#r)a2Rya@QpE_{eU_$raw;9akk-aPc!q=pRKLB~q$?bLbh`;`cg z+gxCt$B$DR5KJbbSc4lhFh(wY8013LN-H57iu)8(9d-v9$#S4@?yeDOw=;2%AFe)P zJkvDa%-TufI#5L4hS&)&5{=GnG)_U+fIv#lmyiw?*^lf78b-wXgp5*Q?}B!+PKXT{ zs3I8)@Fgfd_6tCW9gq)}g?98E8rO^7UCqn|0Upwq$v3Pnen_`n7>8AS_jP<}0KSOr z&cii1X5l-^ti8MREACuJrqqF=$(SdXDFVj)?FgLt9~Gw-4%e(1dys0nr-JWcftnUF z^19@vgViA7C;S%0{N105)Jq?WYJ>AS_6;y`CJu`rIE(g^LZomiLKi3aG;ArZ(AY{_1On^tSdcy-19MB6q0<7o0wwzbi#E4FW(*9iHX=-R)x~kWrzs5rO5_JowDG z91sVw%ik6wFkMSwBi7ZAmKoNIpA2ZFmxogoU%Op%r<5eLja)6Qu=F;g&EWIH0vltK zaKgt#R|mzj46d6P|3uh$K-(Fd=1-h~ge(=AFnzZP%`B!Dk>1`yq#39yZl z8|nj4l?X|=RL>7f=G9;+M`LWgzA$b1xfO-VKplJPx@oYx?bTd-6zGw**F1cnE?;Xx z*Ld%CSjJ9AW0n})nst0k*8l#a<%i;*ys@JXSG}gK{x)V+sV*_)MOyPmPd7``FRyZ~ z-CxyYALJj$MQp7({JEDkvW0m&=s{nUZ#8Tv6~Em2(qOQywyrQki{4stc*131-F<*s zMwEpkHGL;EWM?}r*)K_lFkW1*x}Fs!PM5v5Db?-=y>b;}zr3a<^Jn;Bi(i?Dj0&e8 z&;C=XHnE_^w|-N5o3ztH0v6N0gfJBCsry}c_Qse9A0Gt0E&*?Do)2?4W<_#H)Wf>M zIJDK;Z_^BfpWqnH5pVCOBV%;f$AQ{H9G~4VtK~LG=xb7{TbpfZ>E~hX49kv`8F^{N z2q1R5%$o1xH-*ye7XUj|s$0Gq$VhgJ<`!%I=qUlut>P`1PsO|LwIGrvcRlp)s3i&i zLyrjs=)1i(|KP6c_+;r~j>|o{ED7E{M{~Zd+w^$X5S~N1ir()p6=;Y*-k6!yohaA! z8;#;>Y}5-i@$*}U^t>Zv9_Tjn#idxkdJIbTLA`FfKgsN;ltM|5=A&zy;@fHEz3Xtb zBRZD*R^Ki&=Zf6^({B*F0noKO4P(3yjbR#VCy#;(C~)|-BsF$Dl>V_8A&ii~ZB5G@ zP6X`HedFmSFU>D>G{ZMC(=!hsW?|2nA&;IZY# zR;eZQePhJ7(vGu zT0cb>*uPFs&0~c&v^T&!$4|%{$?<0%t?)LEo4rx}=)BAcT_Egr`7tTAjy+`8Yu`Q| zBiB3yAwflF*bvR+9r|{^FcExV^IG-eI@s=(Qu+7p%Gbac7tvJ8QN=H$pvTC1vrhkK ztbqUMIfz~6ZvqJtP zfbe>}?DamMBL`LmLr#RjKJOtQIA1m{T_9TQy55aXNpyMKRNEg@=y;sPjCKH@BmP%~ z7hqDxDXi%Lqi3*j&lf=Ol04@t`iDmpl)cK*saW#R?+xAUjI%XBoLBj@Xd%uA6dcwj z%oq`#8K9uCy-gc`h`08t%@bnwHu4K4c@C_6x9YWbh@cM#9({x=FT(UVYURG80r|%? zGr4?WBK{|dc`!&?&Vru5{U(@%x_mP{^%}z~?G+_q`(W>HQ}B<{4y$QfbluzXf!Li9 zIt_;?dnG;n?RIgUvsy~@D4R~%I31kXr%&c70DaHDSw$oK)~-~x31&kbx}^MoSi_8H zG<0_Y_QPUg0;CXZ&!rH8Ej2LnK7bE+NTQ1RS&*}+wzxqns_ix6ZFE0uE{3?NG)xHc z9eu$(R4K;%#GP-Svd1~lEZuI$;LPa1NcJih2s(Bl7X9QLge<+vKrAbrVbxr#EDgcLe$@HBVuEBLVC78Jh5#B1HS#yQL+oc> zqT(vCC9lZYjh!F4m= zz^s0MMKJYCjkP!y%0~JCJgpoJdLU-pX)ZDi^2id(ns4n4_=rpb9!^w}`IrXr${gDZ zSZcoriARrT+{tq7tTzv8D$trm+Pkqo$=Q@wRD-X-XvZ$pp1cYuU{eNJ1gH!}wGfQ$ zOxJczykMA!xZ|K#3Kx^1yB|YG&rTWz0j}6s0v^OhB+W9aj~hDdIt&mG?$ED*)Cs^o zj4Q7Kf8bWUiWSK(qI-2Q0 z*Q(uN2Mozu$jGnK*8(5R{Mm30m5C2g1Ex-UMx#7nNKA$&cFPgK*0?mXdFMB8H`ven zcaa7*HNy_|%2|1tm=}>j>kD|!W7Z@|L_^U!V&fI5{-YEMQtjSv12q9-XS4p-4G1Bd1V@Y&R!di$XI@B z#tho4yK4lX6n^E#qH!-k>HO2Sao*4N{sSpIa?Ikz`{9|=nCI>kn=+Qz+|xz8knN^B%S<_L5PkhpJ`HIkqn3dP; zIdUEV08e?{JJ*P%osB zFj367@W#Ic8VvNiPUJRQdY9{JtDl)|ucid51^lg)E+4miD`W?IbAcs)Rq*R}Yd(W7 z3wo)bvIT{99)fb?0Hf;xXci6>?z6PpHI*@#NMlc*05wh(f;Xc=cT*ecU!_Q5Pw>_U zoEuYMO-`WQ+Xkt{9{4Or)FC&vvugxVW_x7Mo-Yp2G|UlD{cO&-tuX!WD4B3}kBnV@ zY*1#@q#x>VWWxYQ1QO%lKg(pVop#AEdU24@xI@EgknLV3AOD32cd>yA9hl$oJx4;s zW@7Gv?bNCu1uF-$T%A7Aq*>$bDNYKYyunL_Qh>JeTIkYO-+T8FjS@=Lm*4YI49s(| zoI)&fQvJXnZJjeV$WAL1j8BSm*rHLaR>|6i<}MgPb{@0UI`zuA{uT20Hz)!9SAmpe z7Zgu~3P{8(N~+yVvG>*s>}CFc?k&K<@pD`QASm&+uY0bxb57R@x-gn7V>ejKUs zs26)!RJ%o{*wCG|L3Un>dLR;E{hHTcICPi55~L2Ka6fJT@MYzm(QqspTr#S&l6i+H zizDDYsj!1{H9339C1ld-i%40Dk=3V0F`j_fv-9_tVX-5~PwXIJ*k~b0%hl3<7ZJ& zr0&W@AW6!Ilp>Y!OTvdQ(&HhcPq-4)L4k@YH@-<+WkITzuG53n#dS4jK6D*pa3T!b z-JLP>G$8c=0u-P{VKrX1`Q7|cmuWKw;?Z+}+ zRO5j0>JBnzWf^<$D>LIHmoL#B=PI@3L238#bC$%zKmq z`$+(LiUt|YE20So&%eJ47Am4JqGy5Z8x?Az&cu5Nk{E~fWc2-J4~#8k&vH34dgF@= z*dC7qUTUOwnq9YzM6AbnUCyxEE*Z($Y^&ML`GW=A}z(7 zWQ~t#d_aH#W4=`TNp-$J%hZB{;RZ&-c#D?52pN-WxplG zif&ObiF0I+Kzhx(qi+pv0Vw?Fe2}I=>5C$mF>yi(jJq*A^1k$ z%<_hGG@u@;{;D$m(}uzs!J|S5>9YVTGB?kKW6-6DJ}u5vj#UAXJ#Q_*k1}|hmQvId zQKC&Ds!N$*mm${x+cd*a2{UHrA2HAn=U=+V7AK^JB@rNpG>X9lneE51d3@kNY~?gXuf9074=%{aeh}|>Ogt4X=`gs zT~qlLjHfz_MTBqcir}=Vh|9J&_gG5 z1f;0+-g{M$t`rdvktU%Fgc5p31wyYXC?HLW6hl+#AYBMZlioq#?)cnu#`})+`DVyFCzG4dv~pFA|8sQ8Y^~2TMhP8A82q2 zocT*U`OYs`z*{MNZso!~RWrM3-lMBwsiHr9B-3L)|{zb0}EUa0HDI7T)$QDDKdlmK<6Go5Vw?YKEKy$LW7_kCAG7bc&uXI8ZZ^E> ztT!3dSYI-?#Hmf!y<6f^2c2sGe_JiE+nO?==j@t0OpQ8{V-QRM`rD!ME5foSN6Eki zqGJ}CmJjd$38L7{3sQCUZP%7FV`Z7z?HOiS|2hV-r6FUVqS(&i4CCoP#)W4=6d5(TI7JO**a2^SL&B z_#S+J+ss7IqgiRyh--=U^l+1Q^LdY)+dPtx;|MrdPJ!lcCZy~M>&K!v{nc!sQ_A+W z4WPc^7E>41VIfKmbHS`z4pvvUv^&RJ_iI2|HISQfDsMAIqZbs! zr_QZb8l&g0>rUo7PDB?);Ck>V!P9Y_sNargSW9MQGqh%zcrML2kB2j=;)?K$LRWF& zTR}A-Mb5qqeOZI}u9Y?!)Ui;*+pxT>Ipj>EiYCGdV8I`sZ_F2%@$xCBEhd&-4XcpAP_? zv8V@4mYdmg;6|O|0WTzv6`nVGh6o3UW!W)fiRS%BT%CQs`*mi2x)FDYC~e`j@6qF2 znT*V}0fBBC$t3}2<18}HGf;-_hELUX9C>aE%YKV6WJzNbmt9Ir%a-Onf5qJ?2LQT3 zfxxb++Gkv`6m;wHjW>Z94F>|nZD<6EnrEL&P0^7{3VD zLxbhH?W9jjm6mNU$rC2v+PoHkCY;|``Ccawzw>c4{sAhp zu)T^KRqC`pHWpoOZLf<{Uv?nkw}(+~gih*iNXdfKK@JSOgO^O>mO@mhW7OA3Z6vQ? z6VV6OYp4~JjarFoS59>j#V~Y-x9GW?K`L~XH=)?)V`CH(db0WV?N3xLYi>m@Mt6MW z)h5JrVlJD&wzmox!|+LHh3$1OT)~Bbgn#=twRzi9@2?O_%r6=bOwNhF{ItXwF3c5 zDU$-3%IdS|XVe@;zGZ54Z%2)Qlz_UmXROx_V2vL6dmf;9VI+rU1?aSU+rLQtqF_;N zVo#CmIO<>&Mu&F-%`8|c!CB>lHvqvZD}$XG`C{a3Md%th1(Vv~ z&+^4mlNrQOz489xONDmmK)~5F{s37GMagrV>dgJeFLwaW+#+}3-@e&O2foFBRfWn_zeXFUbA+?t1vz1BBY50=5#%(EkQg zYi|jkJ4JOIX#!bVP1M-~LQmWl4LyXkWoAqJ7$Wso5`H8s1f3rjBjq~RUO!v?jXnE( zg{&@uCGdXNGt&B*V!iCj4iV-3fqXR;)(WBkfL6hV@bjnC%=)t}x(R;$__kiAI2?^37s-ynsQrRy7Zs z>a=^Wz_ItS(|b}YB_=3|v+#_J*J{cz>KH=)PUz7h6HB}C>WeA2PNqsGDsx2xIW2JQ zLazfL+dele?to+V%)yIXQ7a=LBlF0YyaAP~d@CJXr$jHxew+Y)Pix*U7G|Bf3k$l# z8SfUkO${DVrTuRLrOy)V7=}jL<#|eFapDKRWxm_MI>(DMRD@`J7c9>wQ5Ln3ab z-&YUySL@1Fxe2kMucWWEl&LjczLrr^v61|pjrrI^yS=#TnelzscejWir>-*9Fo!LH zG$vA=B8Wj44Jl*t0V-9-n)*zzNQ}6y1te$#fwZo7O+;?{a${&e;S`AF9f-l);h?{l z(i+7f3|!A4QvOHpBUO{z?$apJ&oO1FYZFegk}^x*UqJh9B)X&`TFUPj5X`K>JA?~V zgkIcBLLd5dxso^uBkqMxgX>-jS+ALynBz3kSuO@yr3?O+F?J-tHsk%qMDV%C5{bLV zYl4Q{zNz$QsVoP4>V1B6*xnWNGt<{+KAYMB!xwH}d#Pn!wu0ruy50pZowr}+lVcTb z&;J3baOUG*J0PpLtWRxz0ZxO4ztlgNmQ2tmkWsE$oo8PUZ0#%Bz3f9cx@6_ooy9yh zuyOBplu67+Zae7{d&iPv=bn|#@dE+YCBcQlK*Ny@x98xF;CMi;3ql><{gEuN!}6in zWDn5I0L3~}a$-hGs6vNu{Wvvu+1iEx4Zs?5DB9+eFbjLFs0i8%+eletr}oz;O$eRX zZYyY-C~4b9YOzI88|1Psd-Za#>1Kf@FA|$nSm)P%W2lORM=?TCE|41#K+ksn!9g1CQ>^$0M#jqUO{docekc{SX$OL28 z-@s&RWPPfBXdRS?rE88!Ta_}p3=#%4lRRSj7rSud(;>%3dNQeUwC<8m@<`aU6&i89 z^qdv|Oy^;b1x;(7jV2mgzF^FKt)*k0V8(C=lhA_PI; zQN}3Mo2%d$zfllay#r_z75+cRsxc9rWj(h*6r!jjOa}xot&(@xtLQruIQXLZLHNqKeX2e}=J#)?X=V*8WKJI2$c>wS5Ogj!hU$=uP-K z8+iH-5e<^KNpc#dHa}pksHlCoGNg8}&-L~g+zpHL(w~4NY|RQWhcAZfo$TSOKqv*v zvi;s?68#W#e7w7)V*Ji*@le`o9^`*%+;!uI|S2*45yDy*-$*oZIU-Nm}mk5Eo_%QL!!Y zv?~G5x%OBN@Q616(-4?n)3{7twEgs0J1{J6cfF+KHdoYM$;9y*OQG7)t9 zKK=e-C?R@Lu=yx2VIX0M5aRQr<9x0&j)~F~D5K56bPwoe!cK}_UAG9Ol*8%Ok?83uiO{LcU%^k8Zylye z$`oPA{Kle|nqsz(!)D!cYufrww`$b_XgV7$N(J6DG=sQslmU?05kQ`gI}p%Vaa=zW z_v`vbAUnKt_seJy08bRNfbHQ%=Nxp@kre~@&aMSGH8KGKIRLipCE`J~4*Pj{r;7{6 z!&X`9yt#op<(fa)EWzS%)Ujm&nHNW0nZ!8mGLC)@F5`i%D0e_081$E|0v|YrV3?d> z!O`zuAbgL2ZDmq!;l^kD_8Ff^Ih73~9%FD!cuF9y9TIAiWZI6#@-`#3ZMHYUArXw7 zRT%-zM2_cM?dU((UTqzngQKI;e6q?{>$PS~v@RQT?teJpTu~3;?XUK-yJ+*S}n;q$M+V|`hIbQC4<+(G1-A9j-^V68)J=H z+n!6(kfcCR)n&^(1%KBdHiJ-7Z1K?9YIyHexeIu^%iyC|jrIUQ{r`ry&(%`kG zyk!|TwKMb94k zEU#NbmH*`haJQv;=3^{ua~SgB0+6hrq6oV3r7zn7sCH@CB8_APRP8zd2A4H�(J? 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�MQ-|*eDiZD}EulT|5B_o4rH=K!E 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ξBb)-f^~bQPsq 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