From a5f32779c612e21362572152184c29a72a18b3ce Mon Sep 17 00:00:00 2001 From: thisiskeithb <13375512+thisiskeithb@users.noreply.github.com> Date: Tue, 30 Jan 2024 12:49:57 -0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=89=20Ender-3=20AIO=20bugfix-2.1.x?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/FUNDING.yml | 5 +- .github/workflows/test-ender-aio-build.yml | 46 ++ Marlin/Configuration.h | 221 ++++---- Marlin/Configuration_adv.h | 248 ++++----- Marlin/Ender_AIO_Configuration.h | 322 ++++++++++++ Marlin/_Bootscreen.h | 97 ++++ Marlin/_Statusscreen.h | 62 +++ Marlin/src/inc/Ender_AIO_Changes.h | 17 + Marlin/src/inc/Ender_AIO_Conditionals.h | 475 ++++++++++++++++++ Marlin/src/inc/Ender_AIO_SanityCheck.h | 195 +++++++ Marlin/src/inc/Ender_AIO_Warnings.cpp | 51 ++ Marlin/src/inc/MarlinConfigPre.h | 7 + Marlin/src/inc/Version.h | 2 +- Marlin/src/pins/pins.h | 2 +- .../stm32f1/pins_BTT_SKR_MINI_E3_common.h | 2 +- .../pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h | 2 +- README.md | 164 +----- .../PlatformIO/scripts/preflight-checks.py | 5 + .../share/pixmaps/logo/Ender_AIO_Ender-3.png | Bin 0 -> 239103 bytes config/README.md | 9 - platformio.ini | 32 +- 21 files changed, 1582 insertions(+), 382 deletions(-) create mode 100644 .github/workflows/test-ender-aio-build.yml create mode 100644 Marlin/Ender_AIO_Configuration.h create mode 100644 Marlin/_Bootscreen.h create mode 100644 Marlin/_Statusscreen.h create mode 100644 Marlin/src/inc/Ender_AIO_Changes.h create mode 100644 Marlin/src/inc/Ender_AIO_Conditionals.h create mode 100644 Marlin/src/inc/Ender_AIO_SanityCheck.h create mode 100644 Marlin/src/inc/Ender_AIO_Warnings.cpp create mode 100644 buildroot/share/pixmaps/logo/Ender_AIO_Ender-3.png delete mode 100644 config/README.md diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index a973242932..e70942d04b 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,3 +1,2 @@ -github: [thinkyhead] -patreon: thinkyhead -custom: ["https://www.thinkyhead.com/donate-to-marlin"] +github: [thisiskeithb] +ko_fi: thisiskeithb diff --git a/.github/workflows/test-ender-aio-build.yml b/.github/workflows/test-ender-aio-build.yml new file mode 100644 index 0000000000..b7e18c4d3b --- /dev/null +++ b/.github/workflows/test-ender-aio-build.yml @@ -0,0 +1,46 @@ +# +# test-ender-aio-build.yml +# Do test build to catch compile errors +# + +name: EnderAIO CI + +on: + pull_request: + paths-ignore: + - config/** + - data/** + - docs/** + - '**/*.md' + push: + paths-ignore: + - config/** + - data/** + - docs/** + - '**/*.md' + +jobs: + test_builds: + name: Test Build + if: github.repository == 'thisiskeithb/EnderAIO' + + runs-on: ubuntu-latest + + steps: + - name: Check out the PR + uses: actions/checkout@v3 + + - name: Select Python 3.7 + uses: actions/setup-python@v3 + with: + python-version: '3.7' # Version range or exact version of a Python version to use, using semvers version range syntax. + architecture: 'x64' # optional x64 or x86. Defaults to x64 if not specified + + - name: Install PlatformIO + run: | + pip install -U platformio + pio upgrade --dev + pio pkg update --global + + - name: Build Marlin + run: pio run diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 9a0cd1addc..7192707555 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -36,6 +36,7 @@ * Advanced settings can be found in Configuration_adv.h */ #define CONFIGURATION_H_VERSION 02010300 +#define ENDER_AIO_VERSION 20240130 //=========================================================================== //============================= Getting Started ============================= @@ -61,7 +62,7 @@ // @section info // Author info of this build printed to the host during boot and M115 -#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. +#define STRING_CONFIG_H_AUTHOR "(thisiskeithb, Ender-3 AIO)" // Who made the changes. //#define CUSTOM_VERSION_FILE Version.h // Path from the root directory (no quotes) // @section machine @@ -79,7 +80,7 @@ * * :[-1, 0, 1, 2, 3, 4, 5, 6, 7] */ -#define SERIAL_PORT 0 +#define SERIAL_PORT -1 /** * Serial Port Baud Rate @@ -92,7 +93,7 @@ * * :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000] */ -#define BAUDRATE 250000 +#define BAUDRATE 115200 //#define BAUD_RATE_GCODE // Enable G-code M575 to set the baud rate @@ -116,7 +117,7 @@ //#define BLUETOOTH // Name displayed in the LCD "Ready" message and Info menu -//#define CUSTOM_MACHINE_NAME "3D Printer" +#define CUSTOM_MACHINE_NAME ENDER_AIO_CUSTOM_PRINTER_NAME // Printer's unique ID, used by some programs to differentiate between machines. // Choose your own or use a service like https://www.uuidgenerator.net/version4 @@ -139,9 +140,9 @@ * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE'] */ -#define X_DRIVER_TYPE A4988 -#define Y_DRIVER_TYPE A4988 -#define Z_DRIVER_TYPE A4988 +#define X_DRIVER_TYPE TMC2209 +#define Y_DRIVER_TYPE TMC2209 +#define Z_DRIVER_TYPE TMC2209 //#define X2_DRIVER_TYPE A4988 //#define Y2_DRIVER_TYPE A4988 //#define Z2_DRIVER_TYPE A4988 @@ -153,7 +154,7 @@ //#define U_DRIVER_TYPE A4988 //#define V_DRIVER_TYPE A4988 //#define W_DRIVER_TYPE A4988 -#define E0_DRIVER_TYPE A4988 +#define E0_DRIVER_TYPE TMC2209 //#define E1_DRIVER_TYPE A4988 //#define E2_DRIVER_TYPE A4988 //#define E3_DRIVER_TYPE A4988 @@ -556,8 +557,8 @@ #define TEMP_SENSOR_PROBE 0 #define TEMP_SENSOR_CHAMBER 0 #define TEMP_SENSOR_COOLER 0 -#define TEMP_SENSOR_BOARD 0 -#define TEMP_SENSOR_SOC 0 +#define TEMP_SENSOR_BOARD ENDER_AIO_TEMP_SENSOR_BOARD +#define TEMP_SENSOR_SOC ENDER_AIO_TEMP_SENSOR_SOC #define TEMP_SENSOR_REDUNDANT 0 // Dummy thermistor constant temperature readings, for use with 998 and 999 @@ -628,7 +629,7 @@ // Above this temperature the heater will be switched off. // This can protect components from overheating, but NOT from shorts and failures. // (Use MINTEMP for thermistor short/failure protection.) -#define HEATER_0_MAXTEMP 275 +#define HEATER_0_MAXTEMP ENDER_AIO_HEATER_0_MAXTEMP #define HEATER_1_MAXTEMP 275 #define HEATER_2_MAXTEMP 275 #define HEATER_3_MAXTEMP 275 @@ -636,7 +637,7 @@ #define HEATER_5_MAXTEMP 275 #define HEATER_6_MAXTEMP 275 #define HEATER_7_MAXTEMP 275 -#define BED_MAXTEMP 150 +#define BED_MAXTEMP 115 // 105 + 10 #define CHAMBER_MAXTEMP 60 /** @@ -662,7 +663,7 @@ * PIDTEMP : PID temperature control (~4.1K) * MPCTEMP : Predictive Model temperature control. (~1.8K without auto-tune) */ -#define PIDTEMP // See the PID Tuning Guide at https://reprap.org/wiki/PID_Tuning +//#define PIDTEMP // See the PID Tuning Guide at https://reprap.org/wiki/PID_Tuning //#define MPCTEMP // ** EXPERIMENTAL ** See https://marlinfw.org/docs/features/model_predictive_control.html #define PID_MAX 255 // Limit hotend current while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current @@ -680,9 +681,10 @@ #define DEFAULT_Ki_LIST { 1.08, 1.08 } #define DEFAULT_Kd_LIST { 114.00, 114.00 } #else - #define DEFAULT_Kp 22.20 - #define DEFAULT_Ki 1.08 - #define DEFAULT_Kd 114.00 + // Ender-3 + #define DEFAULT_Kp ENDER_AIO_DEFAULT_Kp + #define DEFAULT_Ki ENDER_AIO_DEFAULT_Ki + #define DEFAULT_Kd ENDER_AIO_DEFAULT_Kd #endif #else #define BANG_MAX 255 // Limit hotend current while in bang-bang mode; 255=full current @@ -698,20 +700,20 @@ */ #if ENABLED(MPCTEMP) #define MPC_AUTOTUNE // Include a method to do MPC auto-tuning (~6.3K bytes of flash) - //#define MPC_EDIT_MENU // Add MPC editing to the "Advanced Settings" menu. (~1.3K bytes of flash) - //#define MPC_AUTOTUNE_MENU // Add MPC auto-tuning to the "Advanced Settings" menu. (~350 bytes of flash) + #define MPC_EDIT_MENU // Add MPC editing to the "Advanced Settings" menu. (~1.3K bytes of flash) + #define MPC_AUTOTUNE_MENU // Add MPC auto-tuning to the "Advanced Settings" menu. (~350 bytes of flash) #define MPC_MAX 255 // (0..255) Current to nozzle while MPC is active. - #define MPC_HEATER_POWER { 40.0f } // (W) Heat cartridge powers. + #define MPC_HEATER_POWER ENDER_AIO_CUSTOM_MPC_HEATER_POWER // (W) Heat cartridge powers. #define MPC_INCLUDE_FAN // Model the fan speed? // Measured physical constants from M306 - #define MPC_BLOCK_HEAT_CAPACITY { 16.7f } // (J/K) Heat block heat capacities. - #define MPC_SENSOR_RESPONSIVENESS { 0.22f } // (K/s per ∆K) Rate of change of sensor temperature from heat block. - #define MPC_AMBIENT_XFER_COEFF { 0.068f } // (W/K) Heat transfer coefficients from heat block to room air with fan off. + #define MPC_BLOCK_HEAT_CAPACITY ENDER_AIO_CUSTOM_MPC_BLOCK_HEAT_CAPACITY // (J/K) Heat block heat capacities. + #define MPC_SENSOR_RESPONSIVENESS ENDER_AIO_CUSTOM_MPC_SENSOR_RESPONSIVENESS // (K/s per ∆K) Rate of change of sensor temperature from heat block. + #define MPC_AMBIENT_XFER_COEFF ENDER_AIO_CUSTOM_MPC_AMBIENT_XFER_COEFF // (W/K) Heat transfer coefficients from heat block to room air with fan off. #if ENABLED(MPC_INCLUDE_FAN) - #define MPC_AMBIENT_XFER_COEFF_FAN255 { 0.097f } // (W/K) Heat transfer coefficients from heat block to room air with fan on full. + #define MPC_AMBIENT_XFER_COEFF_FAN255 ENDER_AIO_CUSTOM_MPC_AMBIENT_XFER_COEFF_FAN255 // (W/K) Heat transfer coefficients from heat block to room air with fan on full. #endif // For one fan and multiple hotends MPC needs to know how to apply the fan cooling effect. @@ -722,10 +724,10 @@ // Filament Heat Capacity (joules/kelvin/mm) // Set at runtime with M306 H - #define FILAMENT_HEAT_CAPACITY_PERMM { 5.6e-3f } // 0.0056 J/K/mm for 1.75mm PLA (0.0149 J/K/mm for 2.85mm PLA). - // 0.0036 J/K/mm for 1.75mm PETG (0.0094 J/K/mm for 2.85mm PETG). - // 0.00515 J/K/mm for 1.75mm ABS (0.0137 J/K/mm for 2.85mm ABS). - // 0.00522 J/K/mm for 1.75mm Nylon (0.0138 J/K/mm for 2.85mm Nylon). + #define FILAMENT_HEAT_CAPACITY_PERMM ENDER_AIO_CUSTOM_FILAMENT_HEAT_CAPACITY_PERMM // 0.0056 J/K/mm for 1.75mm PLA (0.0149 J/K/mm for 2.85mm PLA). + // 0.0036 J/K/mm for 1.75mm PETG (0.0094 J/K/mm for 2.85mm PETG). + // 0.00515 J/K/mm for 1.75mm ABS (0.0137 J/K/mm for 2.85mm ABS). + // 0.00522 J/K/mm for 1.75mm Nylon (0.0138 J/K/mm for 2.85mm Nylon). // Advanced options #define MPC_SMOOTHING_FACTOR 0.5f // (0.0...1.0) Noisy temperature sensors may need a lower value for stabilization. @@ -762,17 +764,16 @@ * * With this option disabled, bang-bang will be used. BED_LIMIT_SWITCHING enables hysteresis. */ -//#define PIDTEMPBED +#define PIDTEMPBED #if ENABLED(PIDTEMPBED) //#define MIN_BED_POWER 0 //#define PID_BED_DEBUG // Print Bed PID debug data to the serial port. - // 120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - // from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) - #define DEFAULT_bedKp 10.00 - #define DEFAULT_bedKi .023 - #define DEFAULT_bedKd 305.4 + // Ender-3 + #define DEFAULT_bedKp ENDER_AIO_DEFAULT_bedKp + #define DEFAULT_bedKi ENDER_AIO_DEFAULT_bedKi + #define DEFAULT_bedKd ENDER_AIO_DEFAULT_bedKd // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. #else @@ -833,8 +834,8 @@ #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - //#define PID_EDIT_MENU // Add PID editing to the "Advanced Settings" menu. (~700 bytes of flash) - //#define PID_AUTOTUNE_MENU // Add PID auto-tuning to the "Advanced Settings" menu. (~250 bytes of flash) + #define PID_EDIT_MENU // Add PID editing to the "Advanced Settings" menu. (~700 bytes of flash) + #define PID_AUTOTUNE_MENU // Add PID auto-tuning to the "Advanced Settings" menu. (~250 bytes of flash) #endif // @section safety @@ -854,7 +855,7 @@ * Note: For Bowden Extruders make this large enough to allow load/unload. */ #define PREVENT_LENGTHY_EXTRUDE -#define EXTRUDE_MAXLENGTH 200 +#define EXTRUDE_MAXLENGTH 600 //=========================================================================== //======================== Thermal Runaway Protection ======================= @@ -1172,7 +1173,7 @@ #define X_MAX_ENDSTOP_HIT_STATE HIGH #define Y_MIN_ENDSTOP_HIT_STATE HIGH #define Y_MAX_ENDSTOP_HIT_STATE HIGH -#define Z_MIN_ENDSTOP_HIT_STATE HIGH +#define Z_MIN_ENDSTOP_HIT_STATE ENDER_AIO_Z_MIN_ENDSTOP_HIT_STATE #define Z_MAX_ENDSTOP_HIT_STATE HIGH #define I_MIN_ENDSTOP_HIT_STATE HIGH #define I_MAX_ENDSTOP_HIT_STATE HIGH @@ -1186,7 +1187,7 @@ #define V_MAX_ENDSTOP_HIT_STATE HIGH #define W_MIN_ENDSTOP_HIT_STATE HIGH #define W_MAX_ENDSTOP_HIT_STATE HIGH -#define Z_MIN_PROBE_ENDSTOP_HIT_STATE HIGH +#define Z_MIN_PROBE_ENDSTOP_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE // Enable this feature if all enabled endstop pins are interrupt-capable. // This will remove the need to poll the interrupt pins, saving many CPU cycles. @@ -1234,7 +1235,7 @@ * Override with M92 (when enabled below) * X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]] */ -#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 500 } +#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, ENDER_AIO_E_STEPS_PER_UNIT } /** * Enable support for M92. Disable to save at least ~530 bytes of flash. @@ -1246,7 +1247,7 @@ * Override with M203 * X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]] */ -#define DEFAULT_MAX_FEEDRATE { 300, 300, 5, 25 } +#define DEFAULT_MAX_FEEDRATE { 200, 200, 25, 25 } //#define LIMITED_MAX_FR_EDITING // Limit edit via M203 or LCD to DEFAULT_MAX_FEEDRATE * 2 #if ENABLED(LIMITED_MAX_FR_EDITING) @@ -1259,7 +1260,7 @@ * Override with M201 * X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]] */ -#define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 10000 } +#define DEFAULT_MAX_ACCELERATION { 1300, 1300, 200, 5000 } //#define LIMITED_MAX_ACCEL_EDITING // Limit edit via M201 or LCD to DEFAULT_MAX_ACCELERATION * 2 #if ENABLED(LIMITED_MAX_ACCEL_EDITING) @@ -1274,9 +1275,9 @@ * M204 R Retract Acceleration * M204 T Travel Acceleration */ -#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E acceleration for printing moves -#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration for retracts -#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration for travel (non printing) moves +#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E acceleration for printing moves +#define DEFAULT_RETRACT_ACCELERATION 1250 // E acceleration for retracts +#define DEFAULT_TRAVEL_ACCELERATION 1250 // X, Y, Z acceleration for travel (non printing) moves /** * Default Jerk limits (mm/s) @@ -1286,12 +1287,12 @@ * When changing speed and direction, if the difference is less than the * value set here, it may happen instantaneously. */ -//#define CLASSIC_JERK +#define CLASSIC_JERK #if ENABLED(CLASSIC_JERK) - #define DEFAULT_XJERK 10.0 - #define DEFAULT_YJERK 10.0 + #define DEFAULT_XJERK 8.0 + #define DEFAULT_YJERK 8.0 #define DEFAULT_ZJERK 0.3 - #define DEFAULT_EJERK 5.0 + #define DEFAULT_EJERK 10.0 //#define DEFAULT_IJERK 0.3 //#define DEFAULT_JJERK 0.3 //#define DEFAULT_KJERK 0.3 @@ -1315,7 +1316,7 @@ * https://blog.kyneticcnc.com/2018/10/computing-junction-deviation-for-marlin.html */ #if DISABLED(CLASSIC_JERK) - #define JUNCTION_DEVIATION_MM 0.013 // (mm) Distance from real junction edge + #define JUNCTION_DEVIATION_MM 0.08 // (mm) Distance from real junction edge #define JD_HANDLE_SMALL_SEGMENTS // Use curvature estimation instead of just the junction angle // for small segments (< 1mm) with large junction angles (> 135°). #endif @@ -1328,7 +1329,7 @@ * * See https://github.com/synthetos/TinyG/wiki/Jerk-Controlled-Motion-Explained */ -//#define S_CURVE_ACCELERATION +#define S_CURVE_ACCELERATION //=========================================================================== //============================= Z Probe Options ============================= @@ -1344,7 +1345,7 @@ * The probe replaces the Z-MIN endstop and is used for Z homing. * (Automatically enables USE_PROBE_FOR_Z_HOMING.) */ -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN +//#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN // Force the use of the probe for Z-axis homing //#define USE_PROBE_FOR_Z_HOMING @@ -1579,7 +1580,7 @@ * | [-] | * O-- FRONT --+ */ -#define NOZZLE_TO_PROBE_OFFSET { 10, 10, 0 } +#define NOZZLE_TO_PROBE_OFFSET ENDER_AIO_NOZZLE_TO_PROBE_OFFSET // Enable and set to use a specific tool for probing. Disable to allow any tool. #define PROBING_TOOL 0 @@ -1592,10 +1593,10 @@ #define PROBING_MARGIN 10 // X and Y axis travel speed (mm/min) between probes -#define XY_PROBE_FEEDRATE (133*60) +#define XY_PROBE_FEEDRATE (166*60) // Feedrate (mm/min) for the first approach when double-probing (MULTIPLE_PROBING == 2) -#define Z_PROBE_FEEDRATE_FAST (4*60) +#define Z_PROBE_FEEDRATE_FAST (8*60) // Feedrate (mm/min) for the "accurate" probe of each point #define Z_PROBE_FEEDRATE_SLOW (Z_PROBE_FEEDRATE_FAST / 2) @@ -1645,8 +1646,8 @@ * A total of 2 does fast/slow probes with a weighted average. * A total of 3 or more adds more slow probes, taking the average. */ -//#define MULTIPLE_PROBING 2 -//#define EXTRA_PROBING 1 +#define MULTIPLE_PROBING 2 +#define EXTRA_PROBING 1 /** * Z probes require clearance when deploying, stowing, and moving between @@ -1662,11 +1663,11 @@ * Example: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle. * But: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle. */ -#define Z_CLEARANCE_DEPLOY_PROBE 10 // (mm) Z Clearance for Deploy/Stow +#define Z_CLEARANCE_DEPLOY_PROBE 5 // (mm) Z Clearance for Deploy/Stow #define Z_CLEARANCE_BETWEEN_PROBES 5 // (mm) Z Clearance between probe points #define Z_CLEARANCE_MULTI_PROBE 5 // (mm) Z Clearance between multiple probes -#define Z_PROBE_ERROR_TOLERANCE 3 // (mm) Tolerance for early trigger (<= -probe.offset.z + ZPET) -//#define Z_AFTER_PROBING 5 // (mm) Z position after probing is done +//#define Z_PROBE_ERROR_TOLERANCE 3 // (mm) Tolerance for early trigger (<= -probe.offset.z + ZPET) +#define Z_AFTER_PROBING 5 // (mm) Z position after probing is done #define Z_PROBE_LOW_POINT -2 // (mm) Farthest distance below the trigger-point to go before stopping @@ -1675,11 +1676,11 @@ //#define PROBE_OFFSET_XMAX 50 // (mm) //#define PROBE_OFFSET_YMIN -50 // (mm) //#define PROBE_OFFSET_YMAX 50 // (mm) -//#define PROBE_OFFSET_ZMIN -20 // (mm) -//#define PROBE_OFFSET_ZMAX 20 // (mm) +#define PROBE_OFFSET_ZMIN -5 // (mm) +#define PROBE_OFFSET_ZMAX 1 // (mm) // Enable the M48 repeatability test to test probe accuracy -//#define Z_MIN_PROBE_REPEATABILITY_TEST +#define Z_MIN_PROBE_REPEATABILITY_TEST // Before deploy/stow pause for user confirmation //#define PAUSE_BEFORE_DEPLOY_STOW @@ -1747,9 +1748,9 @@ // @section motion // Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. -#define INVERT_X_DIR false -#define INVERT_Y_DIR true -#define INVERT_Z_DIR false +#define INVERT_X_DIR ENDER_AIO_INVERT_X_DIR +#define INVERT_Y_DIR ENDER_AIO_INVERT_Y_DIR +#define INVERT_Z_DIR ENDER_AIO_INVERT_Z_DIR //#define INVERT_I_DIR false //#define INVERT_J_DIR false //#define INVERT_K_DIR false @@ -1760,7 +1761,7 @@ // @section extruder // For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR false +#define INVERT_E0_DIR ENDER_AIO_INVERT_E0_DIR #define INVERT_E1_DIR false #define INVERT_E2_DIR false #define INVERT_E3_DIR false @@ -1819,16 +1820,16 @@ // @section geometry // The size of the printable area -#define X_BED_SIZE 200 -#define Y_BED_SIZE 200 +#define X_BED_SIZE 235 +#define Y_BED_SIZE 235 // Travel limits (linear=mm, rotational=°) after homing, corresponding to endstop positions. -#define X_MIN_POS 0 -#define Y_MIN_POS 0 +#define X_MIN_POS -1 +#define Y_MIN_POS -2 #define Z_MIN_POS 0 -#define X_MAX_POS X_BED_SIZE +#define X_MAX_POS (X_BED_SIZE + 10) #define Y_MAX_POS Y_BED_SIZE -#define Z_MAX_POS 200 +#define Z_MAX_POS 250 //#define I_MIN_POS 0 //#define I_MAX_POS 50 //#define J_MIN_POS 0 @@ -1880,7 +1881,7 @@ #endif #if ANY(MIN_SOFTWARE_ENDSTOPS, MAX_SOFTWARE_ENDSTOPS) - //#define SOFT_ENDSTOPS_MENU_ITEM // Enable/Disable software endstops from the LCD + #define SOFT_ENDSTOPS_MENU_ITEM // Enable/Disable software endstops from the LCD #endif /** @@ -1896,9 +1897,9 @@ * RAMPS-based boards use SERVO3_PIN for the first runout sensor. * For other boards you may need to define FIL_RUNOUT_PIN, FIL_RUNOUT2_PIN, etc. */ -//#define FILAMENT_RUNOUT_SENSOR +#define FILAMENT_RUNOUT_SENSOR #if ENABLED(FILAMENT_RUNOUT_SENSOR) - #define FIL_RUNOUT_ENABLED_DEFAULT true // Enable the sensor on startup. Override with M412 followed by M500. + #define FIL_RUNOUT_ENABLED_DEFAULT false // Enable the sensor on startup. Override with M412 followed by M500. #define NUM_RUNOUT_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each. #define FIL_RUNOUT_STATE LOW // Pin state indicating that filament is NOT present. @@ -2055,7 +2056,7 @@ * leveling immediately after G28. */ //#define RESTORE_LEVELING_AFTER_G28 -//#define ENABLE_LEVELING_AFTER_G28 +#define ENABLE_LEVELING_AFTER_G28 /** * Auto-leveling needs preheating @@ -2084,7 +2085,7 @@ * at which point movement will be level to the machine's XY plane. * The height can be set with M420 Z */ - #define ENABLE_LEVELING_FADE_HEIGHT + //#define ENABLE_LEVELING_FADE_HEIGHT #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT) #define DEFAULT_LEVELING_FADE_HEIGHT 10.0 // (mm) Default fade height. #endif @@ -2100,11 +2101,11 @@ /** * Enable the G26 Mesh Validation Pattern tool. */ - //#define G26_MESH_VALIDATION + #define G26_MESH_VALIDATION #if ENABLED(G26_MESH_VALIDATION) #define MESH_TEST_NOZZLE_SIZE 0.4 // (mm) Diameter of primary nozzle. #define MESH_TEST_LAYER_HEIGHT 0.2 // (mm) Default layer height for G26. - #define MESH_TEST_HOTEND_TEMP 205 // (°C) Default nozzle temperature for G26. + #define MESH_TEST_HOTEND_TEMP 210 // (°C) Default nozzle temperature for G26. #define MESH_TEST_BED_TEMP 60 // (°C) Default bed temperature for G26. #define G26_XY_FEEDRATE 20 // (mm/s) Feedrate for G26 XY moves. #define G26_XY_FEEDRATE_TRAVEL 100 // (mm/s) Feedrate for G26 XY travel moves. @@ -2116,7 +2117,7 @@ #if ANY(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR) // Set the number of grid points per dimension. - #define GRID_MAX_POINTS_X 3 + #define GRID_MAX_POINTS_X 5 #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X // Probe along the Y axis, advancing X after each column @@ -2126,13 +2127,13 @@ // Beyond the probed grid, continue the implied tilt? // Default is to maintain the height of the nearest edge. - //#define EXTRAPOLATE_BEYOND_GRID + #define EXTRAPOLATE_BEYOND_GRID // // Subdivision of the grid by Catmull-Rom method. // Synthesizes intermediate points to produce a more detailed mesh. // - //#define ABL_BILINEAR_SUBDIVISION + #define ABL_BILINEAR_SUBDIVISION #if ENABLED(ABL_BILINEAR_SUBDIVISION) // Number of subdivisions between probe points #define BILINEAR_SUBDIVISIONS 3 @@ -2202,19 +2203,19 @@ * Add a bed leveling sub-menu for ABL or MBL. * Include a guided procedure if manual probing is enabled. */ -//#define LCD_BED_LEVELING +#define LCD_BED_LEVELING #if ENABLED(LCD_BED_LEVELING) #define MESH_EDIT_Z_STEP 0.025 // (mm) Step size while manually probing Z axis. #define LCD_PROBE_Z_RANGE 4 // (mm) Z Range centered on Z_MIN_POS for LCD Z adjustment - //#define MESH_EDIT_MENU // Add a menu to edit mesh points + #define MESH_EDIT_MENU // Add a menu to edit mesh points #endif // Add a menu item to move between bed corners for manual bed adjustment //#define LCD_BED_TRAMMING #if ENABLED(LCD_BED_TRAMMING) - #define BED_TRAMMING_INSET_LFRB { 30, 30, 30, 30 } // (mm) Left, Front, Right, Back insets + #define BED_TRAMMING_INSET_LFRB { 32, 32, 32, 32 } // (mm) Left, Front, Right, Back insets #define BED_TRAMMING_HEIGHT 0.0 // (mm) Z height of nozzle at tramming points #define BED_TRAMMING_Z_HOP 4.0 // (mm) Z height of nozzle between tramming points //#define BED_TRAMMING_INCLUDE_CENTER // Move to the center after the last corner @@ -2278,7 +2279,7 @@ #endif // Homing speeds (linear=mm/min, rotational=°/min) -#define HOMING_FEEDRATE_MM_M { (50*60), (50*60), (4*60) } +#define HOMING_FEEDRATE_MM_M ENDER_AIO_HOMING_FEEDRATE_MM_M // Validate that endstops are triggered on homing moves #define VALIDATE_HOMING_ENDSTOPS @@ -2356,13 +2357,13 @@ * M501 - Read settings from EEPROM. (i.e., Throw away unsaved changes) * M502 - Revert settings to "factory" defaults. (Follow with M500 to init the EEPROM.) */ -//#define EEPROM_SETTINGS // Persistent storage with M500 and M501 +#define EEPROM_SETTINGS // Persistent storage with M500 and M501 //#define DISABLE_M503 // Saves ~2700 bytes of flash. Disable for release! #define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save flash. #define EEPROM_BOOT_SILENT // Keep M503 quiet and only give errors during first load #if ENABLED(EEPROM_SETTINGS) - //#define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors. - //#define EEPROM_INIT_NOW // Init EEPROM on first boot after a new build. + #define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors. + #define EEPROM_INIT_NOW // Init EEPROM on first boot after a new build. #endif // @section host @@ -2395,17 +2396,29 @@ // Preheat Constants - Up to 10 are supported without changes // #define PREHEAT_1_LABEL "PLA" -#define PREHEAT_1_TEMP_HOTEND 180 +#define PREHEAT_1_TEMP_HOTEND 210 #define PREHEAT_1_TEMP_BED 70 #define PREHEAT_1_TEMP_CHAMBER 35 #define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 -#define PREHEAT_2_LABEL "ABS" -#define PREHEAT_2_TEMP_HOTEND 240 -#define PREHEAT_2_TEMP_BED 110 +#define PREHEAT_2_LABEL "HTPLA" +#define PREHEAT_2_TEMP_HOTEND 225 +#define PREHEAT_2_TEMP_BED 70 #define PREHEAT_2_TEMP_CHAMBER 35 #define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255 +#define PREHEAT_3_LABEL "PETG" +#define PREHEAT_3_TEMP_HOTEND 235 +#define PREHEAT_3_TEMP_BED 80 +#define PREHEAT_3_TEMP_CHAMBER 35 +#define PREHEAT_3_FAN_SPEED 0 // Value from 0 to 255 + +#define PREHEAT_4_LABEL "ABS" +#define PREHEAT_4_TEMP_HOTEND 255 +#define PREHEAT_4_TEMP_BED 105 +#define PREHEAT_4_TEMP_CHAMBER 35 +#define PREHEAT_4_FAN_SPEED 0 // Value from 0 to 255 + // @section motion /** @@ -2419,11 +2432,11 @@ * P1 Raise the nozzle always to Z-park height. * P2 Raise the nozzle by Z-park amount, limited to Z_MAX_POS. */ -//#define NOZZLE_PARK_FEATURE +#define NOZZLE_PARK_FEATURE #if ENABLED(NOZZLE_PARK_FEATURE) // Specify a park position as { X, Y, Z_raise } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } + #define NOZZLE_PARK_POINT { (X_MAX_POS - 10), (Y_MIN_POS + 10), 20 } #define NOZZLE_PARK_MOVE 0 // Park motion: 0 = XY Move, 1 = X Only, 2 = Y Only, 3 = X before Y, 4 = Y before X #define NOZZLE_PARK_Z_RAISE_MIN 2 // (mm) Always raise Z by at least this distance #define NOZZLE_PARK_XY_FEEDRATE 100 // (mm/s) X and Y axes feedrate (also used for delta Z axis) @@ -2553,9 +2566,9 @@ * * View the current statistics with M78. */ -//#define PRINTCOUNTER +#define PRINTCOUNTER #if ENABLED(PRINTCOUNTER) - #define PRINTCOUNTER_SAVE_INTERVAL 60 // (minutes) EEPROM save interval during print. A value of 0 will save stats at end of print. + #define PRINTCOUNTER_SAVE_INTERVAL ENDER_AIO_PRINTCOUNTER_SAVE_INTERVAL // (minutes) EEPROM save interval during print. A value of 0 will save stats at end of print. #endif // @section security @@ -2607,7 +2620,7 @@ * * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cz':'Czech', 'da':'Danish', 'de':'German', 'el':'Greek (Greece)', 'el_CY':'Greek (Cyprus)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'hu':'Hungarian', 'it':'Italian', 'jp_kana':'Japanese', 'ko_KR':'Korean (South Korea)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt_br':'Portuguese (Brazilian)', 'ro':'Romanian', 'ru':'Russian', 'sk':'Slovak', 'sv':'Swedish', 'tr':'Turkish', 'uk':'Ukrainian', 'vi':'Vietnamese', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Traditional)' } */ -#define LCD_LANGUAGE en +#define LCD_LANGUAGE ENDER_AIO_LCD_LANGUAGE /** * LCD Character Set @@ -2646,14 +2659,14 @@ * SD Card support is disabled by default. If your controller has an SD slot, * you must uncomment the following option or it won't work. */ -//#define SDSUPPORT +#define SDSUPPORT /** * SD CARD: ENABLE CRC * * Use CRC checks and retries on the SD communication. */ -//#define SD_CHECK_AND_RETRY +#define SD_CHECK_AND_RETRY /** * LCD Menu Items @@ -2726,8 +2739,8 @@ // // Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. // -//#define INDIVIDUAL_AXIS_HOMING_MENU -//#define INDIVIDUAL_AXIS_HOMING_SUBMENU +#define INDIVIDUAL_AXIS_HOMING_MENU +#define INDIVIDUAL_AXIS_HOMING_SUBMENU // // SPEAKER/BUZZER @@ -2735,7 +2748,7 @@ // If you have a speaker that can produce tones, enable it here. // By default Marlin assumes you have a buzzer with a fixed frequency. // -//#define SPEAKER +#define SPEAKER // // The duration and frequency for the UI feedback sound. @@ -3453,7 +3466,7 @@ // Set number of user-controlled fans. Disable to use all board-defined fans. // :[1,2,3,4,5,6,7,8] -//#define NUM_M106_FANS 1 +#define NUM_M106_FANS 1 // Use software PWM to drive the fan, as for the heaters. This uses a very low frequency // which is not as annoying as with the hardware PWM. On the other hand, if this frequency diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 49eea39180..4ae034df2b 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -31,6 +31,7 @@ * Basic settings can be found in Configuration.h */ #define CONFIGURATION_ADV_H_VERSION 02010300 +#define ENDER_AIO_VERSION 20240130 // @section develop @@ -304,8 +305,8 @@ * THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD */ #if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // (seconds) - #define THERMAL_PROTECTION_HYSTERESIS 4 // (°C) + #define THERMAL_PROTECTION_PERIOD 60 // (seconds) + #define THERMAL_PROTECTION_HYSTERESIS 10 // (°C) //#define ADAPTIVE_FAN_SLOWING // Slow down the part-cooling fan if the temperature drops #if ENABLED(ADAPTIVE_FAN_SLOWING) @@ -335,13 +336,13 @@ * Thermal Protection parameters for the bed are just as above for hotends. */ #if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 20 // (seconds) + #define THERMAL_PROTECTION_BED_PERIOD 180 // (seconds) #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // (°C) /** * As described above, except for the bed (M140/M190/M303). */ - #define WATCH_BED_TEMP_PERIOD 60 // (seconds) + #define WATCH_BED_TEMP_PERIOD 180 // (seconds) #define WATCH_BED_TEMP_INCREASE 2 // (°C) #endif @@ -547,10 +548,10 @@ * Hotend Idle Timeout * Prevent filament in the nozzle from charring and causing a critical jam. */ -//#define HOTEND_IDLE_TIMEOUT +#define HOTEND_IDLE_TIMEOUT #if ENABLED(HOTEND_IDLE_TIMEOUT) #define HOTEND_IDLE_TIMEOUT_SEC (5*60) // (seconds) Time without extruder movement to trigger protection - #define HOTEND_IDLE_MIN_TRIGGER 180 // (°C) Minimum temperature to enable hotend protection + #define HOTEND_IDLE_MIN_TRIGGER 160 // (°C) Minimum temperature to enable hotend protection #define HOTEND_IDLE_NOZZLE_TARGET 0 // (°C) Safe temperature for the nozzle after timeout #define HOTEND_IDLE_BED_TARGET 0 // (°C) Safe temperature for the bed after timeout #endif @@ -575,10 +576,10 @@ */ //#define USE_CONTROLLER_FAN #if ENABLED(USE_CONTROLLER_FAN) - //#define CONTROLLER_FAN_PIN -1 // Set a custom pin for the controller fan + #define CONTROLLER_FAN_PIN ENDER_AIO_CONTROLLER_FAN_PIN // Set a custom pin for the controller fan //#define CONTROLLER_FAN2_PIN -1 // Set a custom pin for second controller fan //#define CONTROLLER_FAN_USE_Z_ONLY // With this option only the Z axis is considered - //#define CONTROLLER_FAN_IGNORE_Z // Ignore Z stepper. Useful when stepper timeout is disabled. + #define CONTROLLER_FAN_IGNORE_Z // Ignore Z stepper. Useful when stepper timeout is disabled. #define CONTROLLERFAN_SPEED_MIN 0 // (0-255) Minimum speed. (If set below this value the fan is turned off.) #define CONTROLLERFAN_SPEED_ACTIVE 255 // (0-255) Active speed, used when any motor is enabled #define CONTROLLERFAN_SPEED_IDLE 0 // (0-255) Idle speed, used when motors are disabled @@ -602,7 +603,7 @@ * gets it spinning reliably for a short time before setting the requested speed. * (Does not work on Sanguinololu with FAN_SOFT_PWM.) */ -//#define FAN_KICKSTART_TIME 100 // (ms) +#define FAN_KICKSTART_TIME 800 // (ms) //#define FAN_KICKSTART_POWER 180 // 64-255 // Some coolers may require a non-zero "off" state. @@ -620,7 +621,7 @@ * * Define one or both of these to override the default 0-255 range. */ -//#define FAN_MIN_PWM 50 +#define FAN_MIN_PWM 65 //#define FAN_MAX_PWM 128 /** @@ -681,7 +682,7 @@ * Multiple extruders can be assigned to the same pin in which case * the fan will turn on when any selected extruder is above the threshold. */ -#define E0_AUTO_FAN_PIN -1 +#define E0_AUTO_FAN_PIN FAN1_PIN #define E1_AUTO_FAN_PIN -1 #define E2_AUTO_FAN_PIN -1 #define E3_AUTO_FAN_PIN -1 @@ -923,7 +924,7 @@ * the position of the toolhead relative to the workspace. */ -//#define SENSORLESS_BACKOFF_MM { 2, 2, 0 } // (linear=mm, rotational=°) Backoff from endstops before sensorless homing +#define SENSORLESS_BACKOFF_MM { 5, 5, 0 } // (linear=mm, rotational=°) Backoff from endstops before sensorless homing #define HOMING_BUMP_MM { 5, 5, 2 } // (linear=mm, rotational=°) Backoff from endstops after first bump #define HOMING_BUMP_DIVISOR { 2, 2, 4 } // Re-Bump Speed Divisor (Divides the Homing Feedrate) @@ -931,7 +932,7 @@ //#define HOMING_BACKOFF_POST_MM { 2, 2, 2 } // (linear=mm, rotational=°) Backoff from endstops after homing //#define XY_COUNTERPART_BACKOFF_MM 0 // (mm) Backoff X after homing Y, and vice-versa -//#define QUICK_HOME // If G28 contains XY do a diagonal move first +#define QUICK_HOME // If G28 contains XY do a diagonal move first //#define HOME_Y_BEFORE_X // If G28 contains XY home Y before X //#define HOME_Z_FIRST // Home Z first. Requires a real endstop (not a probe). //#define CODEPENDENT_XY_HOMING // If X/Y can't home without homing Y/X first @@ -956,7 +957,7 @@ // Safety: The probe needs time to recognize the command. // Minimum command delay (ms). Enable and increase if needed. - //#define BLTOUCH_DELAY 500 + #define BLTOUCH_DELAY 200 /** * Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones: @@ -1003,13 +1004,13 @@ * * Set the default state here, change with 'M401 S' or UI, use M500 to save, M502 to reset. */ - //#define BLTOUCH_HS_MODE true + #define BLTOUCH_HS_MODE true #ifdef BLTOUCH_HS_MODE // The probe Z offset (M851 Z) is the height at which the probe triggers. // This must be large enough to keep the probe pin off the bed and prevent // it from snagging on the bed clips. - #define BLTOUCH_HS_EXTRA_CLEARANCE 7 // Extra Z Clearance + #define BLTOUCH_HS_EXTRA_CLEARANCE 0 // Extra Z Clearance #endif #endif // BLTOUCH @@ -1086,18 +1087,19 @@ #if ENABLED(ASSISTED_TRAMMING) // Define from 3 to 9 points to probe. - #define TRAMMING_POINT_XY { { 20, 20 }, { 180, 20 }, { 180, 180 }, { 20, 180 } } + #define TRAMMING_POINT_XY { {X_CENTER, Y_CENTER }, { 32, 32 }, { 203, 32 }, { 203, 203 }, { 32, 203 } } // Define position names for probe points. - #define TRAMMING_POINT_NAME_1 "Front-Left" - #define TRAMMING_POINT_NAME_2 "Front-Right" - #define TRAMMING_POINT_NAME_3 "Back-Right" - #define TRAMMING_POINT_NAME_4 "Back-Left" + #define TRAMMING_POINT_NAME_1 "Center" + #define TRAMMING_POINT_NAME_2 "Front-Left" + #define TRAMMING_POINT_NAME_3 "Front-Right" + #define TRAMMING_POINT_NAME_4 "Back-Right" + #define TRAMMING_POINT_NAME_5 "Back-Left" #define RESTORE_LEVELING_AFTER_G35 // Enable to restore leveling setup after operation //#define REPORT_TRAMMING_MM // Report Z deviation (mm) for each point relative to the first - //#define ASSISTED_TRAMMING_WIZARD // Add a Tramming Wizard to the LCD menu + #define ASSISTED_TRAMMING_WIZARD // Add a Tramming Wizard to the LCD menu //#define ASSISTED_TRAMMING_WAIT_POSITION { X_CENTER, Y_CENTER, 30 } // Move the nozzle out of the way for adjustment @@ -1107,7 +1109,7 @@ * M4: 40 = Clockwise, 41 = Counter-Clockwise * M5: 50 = Clockwise, 51 = Counter-Clockwise */ - #define TRAMMING_SCREW_THREAD 30 + #define TRAMMING_SCREW_THREAD 40 #endif @@ -1204,12 +1206,12 @@ //#define INPUT_SHAPING_Y #if ANY(INPUT_SHAPING_X, INPUT_SHAPING_Y) #if ENABLED(INPUT_SHAPING_X) - #define SHAPING_FREQ_X 40 // (Hz) The default dominant resonant frequency on the X axis. - #define SHAPING_ZETA_X 0.15f // Damping ratio of the X axis (range: 0.0 = no damping to 1.0 = critical damping). + #define SHAPING_FREQ_X ENDER_AIO_SHAPING_FREQ_X // (Hz) The default dominant resonant frequency on the X axis. + #define SHAPING_ZETA_X ENDER_AIO_SHAPING_ZETA_X // Damping ratio of the X axis (range: 0.0 = no damping to 1.0 = critical damping). #endif #if ENABLED(INPUT_SHAPING_Y) - #define SHAPING_FREQ_Y 40 // (Hz) The default dominant resonant frequency on the Y axis. - #define SHAPING_ZETA_Y 0.15f // Damping ratio of the Y axis (range: 0.0 = no damping to 1.0 = critical damping). + #define SHAPING_FREQ_Y ENDER_AIO_SHAPING_FREQ_Y // (Hz) The default dominant resonant frequency on the Y axis. + #define SHAPING_ZETA_Y ENDER_AIO_SHAPING_ZETA_Y // Damping ratio of the Y axis (range: 0.0 = no damping to 1.0 = critical damping). #endif //#define SHAPING_MIN_FREQ 20 // By default the minimum of the shaping frequencies. Override to affect SRAM usage. //#define SHAPING_MAX_STEPRATE 10000 // By default the maximum total step rate of the shaped axes. Override to affect SRAM usage. @@ -1243,7 +1245,7 @@ #define DEFAULT_STEPPER_TIMEOUT_SEC 120 #define DISABLE_IDLE_X #define DISABLE_IDLE_Y -#define DISABLE_IDLE_Z // Disable if the nozzle could fall onto your printed part! +//#define DISABLE_IDLE_Z // Disable if the nozzle could fall onto your printed part! //#define DISABLE_IDLE_I //#define DISABLE_IDLE_J //#define DISABLE_IDLE_K @@ -1263,7 +1265,7 @@ // Increase the slowdown divisor for larger buffer sizes. #define SLOWDOWN #if ENABLED(SLOWDOWN) - #define SLOWDOWN_DIVISOR 2 + #define SLOWDOWN_DIVISOR 4 #endif /** @@ -1500,10 +1502,10 @@ * Use a height slightly above the estimated nozzle-to-probe Z offset. * For example, with an offset of -5, consider a starting height of -4. */ - //#define PROBE_OFFSET_WIZARD_START_Z -4.0 + #define PROBE_OFFSET_WIZARD_START_Z -4.0 // Set a convenient position to do the calibration (probing point and nozzle/bed-distance) - //#define PROBE_OFFSET_WIZARD_XY_POS { X_CENTER, Y_CENTER } + #define PROBE_OFFSET_WIZARD_XY_POS { X_CENTER, Y_CENTER } #endif #endif @@ -1529,7 +1531,7 @@ #endif // Include a page of printer information in the LCD Main Menu - //#define LCD_INFO_MENU + #define LCD_INFO_MENU #if ENABLED(LCD_INFO_MENU) //#define LCD_PRINTER_INFO_IS_BOOTSCREEN // Show bootscreen(s) instead of Printer Info pages #endif @@ -1554,13 +1556,13 @@ #define MANUAL_MOVE_DISTANCE_DEG 90, 45, 22.5, 5, 1 // (°) // BACK menu items keep the highlight at the top - //#define TURBO_BACK_MENU_ITEM + #define TURBO_BACK_MENU_ITEM // Insert a menu for preheating at the top level to allow for quick access //#define PREHEAT_SHORTCUT_MENU_ITEM // Add Configuration > Debug Menu > Endstop Test for endstop/probe/runout testing - //#define LCD_ENDSTOP_TEST + #define LCD_ENDSTOP_TEST #endif // HAS_MARLINUI_MENU @@ -1579,10 +1581,10 @@ #if ENABLED(SHOW_BOOTSCREEN) #define BOOTSCREEN_TIMEOUT 3000 // (ms) Total Duration to display the boot screen(s) #if ANY(HAS_MARLINUI_U8GLIB, TFT_COLOR_UI) - #define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving lots of flash) + //#define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving lots of flash) #endif #if HAS_MARLINUI_U8GLIB - //#define BOOT_MARLIN_LOGO_ANIMATED // Animated Marlin logo. Costs ~3260 (or ~940) bytes of flash. + #define BOOT_MARLIN_LOGO_ANIMATED // Animated Marlin logo. Costs ~3260 (or ~940) bytes of flash. #endif #if ANY(HAS_MARLINUI_U8GLIB, TOUCH_UI_FTDI_EVE) //#define SHOW_CUSTOM_BOOTSCREEN // Show the bitmap in Marlin/_Bootscreen.h on startup. @@ -1593,7 +1595,7 @@ //#define CUSTOM_STATUS_SCREEN_IMAGE // Show the bitmap in Marlin/_Statusscreen.h on the status screen. #endif - //#define SOUND_MENU_ITEM // Add a mute option to the LCD menu + #define SOUND_MENU_ITEM // Add a mute option to the LCD menu #define SOUND_ON_DEFAULT // Buzzer/speaker default enabled state #if HAS_WIRED_LCD @@ -1604,7 +1606,7 @@ //#define LCD_TIMEOUT_TO_STATUS 15000 // (ms) // Scroll a longer status message into view - //#define STATUS_MESSAGE_SCROLLING + #define STATUS_MESSAGE_SCROLLING // Apply a timeout to low-priority status messages //#define STATUS_MESSAGE_TIMEOUT_SEC 30 // (seconds) @@ -1613,7 +1615,7 @@ //#define LCD_DECIMAL_SMALL_XY // Show the E position (filament used) during printing - //#define LCD_SHOW_E_TOTAL + #define LCD_SHOW_E_TOTAL // Display a negative temperature instead of "err" //#define SHOW_TEMPERATURE_BELOW_ZERO @@ -1656,7 +1658,7 @@ #endif // Add 'M73' to set print job progress, overrides Marlin's built-in estimate -//#define SET_PROGRESS_MANUALLY +#define SET_PROGRESS_MANUALLY #if ENABLED(SET_PROGRESS_MANUALLY) #define SET_PROGRESS_PERCENT // Add 'P' parameter to set percentage done #define SET_REMAINING_TIME // Add 'R' parameter to set remaining time @@ -1671,7 +1673,7 @@ #if HAS_DISPLAY && ANY(HAS_MEDIA, SET_PROGRESS_MANUALLY) #define SHOW_PROGRESS_PERCENT // Show print progress percentage (doesn't affect progress bar) #define SHOW_ELAPSED_TIME // Display elapsed printing time (prefix 'E') - //#define SHOW_REMAINING_TIME // Display estimated time to completion (prefix 'R') + #define SHOW_REMAINING_TIME // Display estimated time to completion (prefix 'R') #if ENABLED(SET_INTERACTION_TIME) #define SHOW_INTERACTION_TIME // Display time until next user interaction ('C' = filament change) #endif @@ -1713,7 +1715,7 @@ #define SD_PROCEDURE_DEPTH 1 // Increase if you need more nested M32 calls #define SD_FINISHED_STEPPERRELEASE true // Disable steppers when SD Print is finished - #define SD_FINISHED_RELEASECOMMAND "M84" // Use "M84XYE" to keep Z enabled so your bed stays in place + //#define SD_FINISHED_RELEASECOMMAND "M84" // Use "M84XYE" to keep Z enabled so your bed stays in place // Reverse SD sort to show "more recent" files first, according to the card's FAT. // Since the FAT gets out of order with usage, SDCARD_SORT_ALPHA is recommended. @@ -1725,11 +1727,11 @@ //#define MENU_ADDAUTOSTART // Add a menu option to run auto#.g files //#define ONE_CLICK_PRINT // Prompt to print the newest file on inserted media - //#define BROWSE_MEDIA_ON_INSERT // Open the file browser when media is inserted + #define BROWSE_MEDIA_ON_INSERT // Open the file browser when media is inserted //#define MEDIA_MENU_AT_TOP // Force the media menu to be listed on the top of the main menu - #define EVENT_GCODE_SD_ABORT "G28XY" // G-code to run on SD Abort Print (e.g., "G28XY" or "G27") + #define EVENT_GCODE_SD_ABORT "G28XY\n" SD_FINISHED_RELEASECOMMAND // G-code to run on SD Abort Print (e.g., "G28XY" or "G27") #if ENABLED(PRINTER_EVENT_LEDS) #define PE_LEDS_COMPLETED_TIME (30*60) // (seconds) Time to keep the LED "done" color before restoring normal illumination @@ -1795,7 +1797,7 @@ * - SDSORT_CACHE_NAMES will retain the sorted file listing in RAM. (Expensive!) * - SDSORT_DYNAMIC_RAM only uses RAM when the SD menu is visible. (Use with caution!) */ - //#define SDCARD_SORT_ALPHA + #define SDCARD_SORT_ALPHA // SD Card Sorting options #if ENABLED(SDCARD_SORT_ALPHA) @@ -1815,11 +1817,11 @@ // LCD's font must contain the characters. Check your selected LCD language. //#define UTF_FILENAME_SUPPORT - //#define LONG_FILENAME_HOST_SUPPORT // Get the long filename of a file/folder with 'M33 ' and list long filenames with 'M20 L' - //#define LONG_FILENAME_WRITE_SUPPORT // Create / delete files with long filenames via M28, M30, and Binary Transfer Protocol + #define LONG_FILENAME_HOST_SUPPORT // Get the long filename of a file/folder with 'M33 ' and list long filenames with 'M20 L' + #define LONG_FILENAME_WRITE_SUPPORT // Create / delete files with long filenames via M28, M30, and Binary Transfer Protocol //#define M20_TIMESTAMP_SUPPORT // Include timestamps by adding the 'T' flag to M20 commands - //#define SCROLL_LONG_FILENAMES // Scroll long filenames in the SD card menu + #define SCROLL_LONG_FILENAMES // Scroll long filenames in the SD card menu //#define SD_ABORT_NO_COOLDOWN // Leave the heaters on after Stop Print (not recommended!) @@ -1835,7 +1837,7 @@ //#define SD_REPRINT_LAST_SELECTED_FILE // On print completion open the LCD Menu and select the same file - //#define AUTO_REPORT_SD_STATUS // Auto-report media status with 'M27 S' + #define AUTO_REPORT_SD_STATUS // Auto-report media status with 'M27 S' /** * Support for USB thumb drives using an Arduino USB Host Shield or @@ -1904,7 +1906,7 @@ //#define CONFIGURATION_EMBEDDING // Add an optimized binary file transfer mode, initiated with 'M28 B1' - //#define BINARY_FILE_TRANSFER + #define BINARY_FILE_TRANSFER #if ENABLED(BINARY_FILE_TRANSFER) // Include extra facilities (e.g., 'M20 F') supporting firmware upload via BINARY_FILE_TRANSFER @@ -1920,7 +1922,7 @@ * * :[ 'LCD', 'ONBOARD', 'CUSTOM_CABLE' ] */ - //#define SDCARD_CONNECTION LCD + #define SDCARD_CONNECTION ENDER_AIO_SDCARD_CONNECTION // Enable if SD detect is rendered useless (e.g., by using an SD extender) //#define NO_SD_DETECT @@ -1964,7 +1966,7 @@ // A bigger font is available for edit items. Costs 3120 bytes of flash. // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese. - //#define USE_BIG_EDIT_FONT + #define USE_BIG_EDIT_FONT // A smaller font may be used on the Info Screen. Costs 2434 bytes of flash. // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese. @@ -2019,11 +2021,11 @@ //#define STATUS_COOLER_ANIM // Use a second bitmap to indicate laser cooling //#define STATUS_FLOWMETER_ANIM // Use multiple bitmaps to indicate coolant flow //#define STATUS_ALT_BED_BITMAP // Use the alternative bed bitmap - //#define STATUS_ALT_FAN_BITMAP // Use the alternative fan bitmap - //#define STATUS_FAN_FRAMES 3 // :[0,1,2,3,4] Number of fan animation frames + #define STATUS_ALT_FAN_BITMAP // Use the alternative fan bitmap + #define STATUS_FAN_FRAMES 3 // :[0,1,2,3,4] Number of fan animation frames // Only one STATUS_HEAT_* option can be enabled - //#define STATUS_HEAT_PERCENT // Show heating in a progress bar + #define STATUS_HEAT_PERCENT // Show heating in a progress bar //#define STATUS_HEAT_POWER // Show heater output power as a vertical bar // Frivolous Game Options @@ -2270,7 +2272,7 @@ * * Warning: Does not respect endstops! */ -//#define BABYSTEPPING +#define BABYSTEPPING #if ENABLED(BABYSTEPPING) //#define EP_BABYSTEPPING // M293/M294 babystepping with EMERGENCY_PARSER support //#define BABYSTEP_WITHOUT_HOMING @@ -2278,16 +2280,16 @@ //#define BABYSTEP_XY // Also enable X/Y Babystepping. Not supported on DELTA! //#define BABYSTEP_INVERT_Z // Enable if Z babysteps should go the other way //#define BABYSTEP_MILLIMETER_UNITS // Specify BABYSTEP_MULTIPLICATOR_(XY|Z) in mm instead of micro-steps - #define BABYSTEP_MULTIPLICATOR_Z 1 // (steps or mm) Steps or millimeter distance for each Z babystep + #define BABYSTEP_MULTIPLICATOR_Z 5 // (steps or mm) Steps or millimeter distance for each Z babystep #define BABYSTEP_MULTIPLICATOR_XY 1 // (steps or mm) Steps or millimeter distance for each XY babystep - //#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping. + #define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping. #if ENABLED(DOUBLECLICK_FOR_Z_BABYSTEPPING) #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds. // Note: Extra time may be added to mitigate controller latency. - //#define MOVE_Z_WHEN_IDLE // Jump to the move Z menu on double-click when printer is idle. + #define MOVE_Z_WHEN_IDLE // Jump to the move Z menu on double-click when printer is idle. #if ENABLED(MOVE_Z_WHEN_IDLE) - #define MOVE_Z_IDLE_MULTIPLICATOR 1 // Multiply 1mm by this factor for the move step size. + #define MOVE_Z_IDLE_MULTIPLICATOR 2 // Multiply 1mm by this factor for the move step size. #endif #endif @@ -2296,7 +2298,7 @@ //#define BABYSTEP_ZPROBE_OFFSET // Combine M851 Z and Babystepping #if ENABLED(BABYSTEP_ZPROBE_OFFSET) //#define BABYSTEP_HOTEND_Z_OFFSET // For multiple hotends, babystep relative Z offsets - //#define BABYSTEP_GFX_OVERLAY // Enable graphical overlay on Z-offset editor + #define BABYSTEP_GFX_OVERLAY // Enable graphical overlay on Z-offset editor #endif #endif @@ -2317,12 +2319,12 @@ * * See https://marlinfw.org/docs/features/lin_advance.html for full instructions. */ -//#define LIN_ADVANCE +#define LIN_ADVANCE #if ENABLED(LIN_ADVANCE) #if ENABLED(DISTINCT_E_FACTORS) #define ADVANCE_K { 0.22 } // (mm) Compression length per 1mm/s extruder speed, per extruder #else - #define ADVANCE_K 0.22 // (mm) Compression length applying to all extruders + #define ADVANCE_K 0.0 // (mm) Compression length applying to all extruders #endif //#define ADVANCE_K_EXTRA // Add a second linear advance constant, configurable with M900 L. //#define LA_DEBUG // Print debug information to serial during operation. Disable for production use. @@ -2385,7 +2387,7 @@ */ #if PROBE_SELECTED && !IS_KINEMATIC //#define PROBING_MARGIN_LEFT PROBING_MARGIN - //#define PROBING_MARGIN_RIGHT PROBING_MARGIN + #define PROBING_MARGIN_RIGHT 0 //#define PROBING_MARGIN_FRONT PROBING_MARGIN //#define PROBING_MARGIN_BACK PROBING_MARGIN #endif @@ -2408,15 +2410,15 @@ */ //#define G29_RETRY_AND_RECOVER #if ENABLED(G29_RETRY_AND_RECOVER) - #define G29_MAX_RETRIES 3 + #define G29_MAX_RETRIES 0 #define G29_HALT_ON_FAILURE /** * Specify the GCODE commands that will be executed when leveling succeeds, * between attempts, and after the maximum number of retries have been tried. */ - #define G29_SUCCESS_COMMANDS "M117 Bed leveling done." - #define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0" - #define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1" + //#define G29_SUCCESS_COMMANDS "M117 Bed leveling done." + //#define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0" + //#define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1" #endif @@ -2505,7 +2507,7 @@ #define MIN_CIRCLE_SEGMENTS 72 // Minimum number of segments in a complete circle //#define ARC_SEGMENTS_PER_SEC 50 // Use the feedrate to choose the segment length #define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections - //#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles + #define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles //#define SF_ARC_FIX // Enable only if using SkeinForge with "Arc Point" fillet procedure #endif @@ -2602,7 +2604,7 @@ #if ALL(HAS_MEDIA, DIRECT_STEPPING) #define BLOCK_BUFFER_SIZE 8 #elif HAS_MEDIA - #define BLOCK_BUFFER_SIZE 16 + #define BLOCK_BUFFER_SIZE 32 #else #define BLOCK_BUFFER_SIZE 16 #endif @@ -2611,7 +2613,7 @@ // The ASCII buffer for serial input #define MAX_CMD_SIZE 96 -#define BUFSIZE 4 +#define BUFSIZE 32 // Transmission to Host Buffer Size // To save 386 bytes of flash (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0. @@ -2620,7 +2622,7 @@ // For debug-echo: 128 bytes for the optimal speed. // Other output doesn't need to be that speedy. // :[0, 2, 4, 8, 16, 32, 64, 128, 256] -#define TX_BUFFER_SIZE 0 +#define TX_BUFFER_SIZE 32 // Host Receive Buffer Size // Without XON/XOFF flow control (see SERIAL_XON_XOFF below) 32 bytes should be enough. @@ -2658,7 +2660,7 @@ * Currently handles M108, M112, M410, M876 * NOTE: Not yet implemented for all platforms. */ -//#define EMERGENCY_PARSER +#define EMERGENCY_PARSER /** * Realtime Reporting (requires EMERGENCY_PARSER) @@ -2689,7 +2691,7 @@ //#define NO_TIMEOUTS 1000 // (ms) // Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. -//#define ADVANCED_OK +#define ADVANCED_OK // Printrun may have trouble receiving long strings all at once. // This option inserts short delays between lines of serial output. @@ -2891,23 +2893,23 @@ * * Enable PARK_HEAD_ON_PAUSE to add the G-code M125 Pause and Park. */ -//#define ADVANCED_PAUSE_FEATURE +#define ADVANCED_PAUSE_FEATURE #if ENABLED(ADVANCED_PAUSE_FEATURE) #define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate. #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract. // This short retract is done immediately, before parking the nozzle. - #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast. + #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 30 // (mm/s) Unload filament feedrate. This can be pretty fast. #define FILAMENT_CHANGE_UNLOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate. - #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload. + #define FILAMENT_CHANGE_UNLOAD_LENGTH 470 // (mm) The length of filament for a complete unload. // For Bowden, the full length of the tube and nozzle. // For direct drive, the full length of the nozzle. // Set to 0 for manual unloading. - #define FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE 6 // (mm/s) Slow move when starting load. - #define FILAMENT_CHANGE_SLOW_LOAD_LENGTH 0 // (mm) Slow length, to allow time to insert material. + #define FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE 10 // (mm/s) Slow move when starting load. + #define FILAMENT_CHANGE_SLOW_LOAD_LENGTH 50 // (mm) Slow length, to allow time to insert material. // 0 to disable start loading and skip to fast load only #define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast. #define FILAMENT_CHANGE_FAST_LOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate. - #define FILAMENT_CHANGE_FAST_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle. + #define FILAMENT_CHANGE_FAST_LOAD_LENGTH 400 // (mm) Load length of filament, from extruder gear to nozzle. // For Bowden, the full length of the tube and nozzle. // For direct drive, the full length of the nozzle. //#define ADVANCED_PAUSE_CONTINUOUS_PURGE // Purge continuously up to the purge length until interrupted. @@ -2928,13 +2930,13 @@ #define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety. #define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed. #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change. - //#define FILAMENT_CHANGE_RESUME_ON_INSERT // Automatically continue / load filament when runout sensor is triggered again. + #define FILAMENT_CHANGE_RESUME_ON_INSERT // Automatically continue / load filament when runout sensor is triggered again. //#define PAUSE_REHEAT_FAST_RESUME // Reduce number of waits by not prompting again post-timeout before continuing. //#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change. - //#define HOME_BEFORE_FILAMENT_CHANGE // If needed, home before parking for filament change + #define HOME_BEFORE_FILAMENT_CHANGE // If needed, home before parking for filament change - //#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu. + #define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu. //#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302) #define CONFIGURE_FILAMENT_CHANGE // Add M603 G-code and menu items. Requires ~1.3K bytes of flash. #endif @@ -2976,8 +2978,8 @@ #define INTERPOLATE true #if AXIS_IS_TMC_CONFIG(X) - #define X_CURRENT 800 // (mA) RMS current. Multiply by 1.414 for peak current. - #define X_CURRENT_HOME X_CURRENT // (mA) RMS current for sensorless homing + #define X_CURRENT 580 // (mA) RMS current. Multiply by 1.414 for peak current. + #define X_CURRENT_HOME (X_CURRENT/2) // (mA) RMS current for sensorless homing #define X_MICROSTEPS 16 // 0..256 #define X_RSENSE 0.11 // Multiplied x1000 for TMC26X #define X_CHAIN_POS -1 // -1..0: Not chained. 1: MCU MOSI connected. 2: Next in chain, ... @@ -2996,8 +2998,8 @@ #endif #if AXIS_IS_TMC_CONFIG(Y) - #define Y_CURRENT 800 - #define Y_CURRENT_HOME Y_CURRENT + #define Y_CURRENT 580 + #define Y_CURRENT_HOME (Y_CURRENT/2) #define Y_MICROSTEPS 16 #define Y_RSENSE 0.11 #define Y_CHAIN_POS -1 @@ -3016,7 +3018,7 @@ #endif #if AXIS_IS_TMC_CONFIG(Z) - #define Z_CURRENT 800 + #define Z_CURRENT 580 #define Z_CURRENT_HOME Z_CURRENT #define Z_MICROSTEPS 16 #define Z_RSENSE 0.11 @@ -3116,7 +3118,7 @@ #endif #if AXIS_IS_TMC_CONFIG(E0) - #define E0_CURRENT 800 + #define E0_CURRENT ENDER_AIO_E0_CURRENT #define E0_MICROSTEPS 16 #define E0_RSENSE 0.11 #define E0_CHAIN_POS -1 @@ -3307,7 +3309,7 @@ * Define your own with: * { , , hysteresis_start[1..8] } */ - #define CHOPPER_TIMING CHOPPER_DEFAULT_12V // All axes (override below) + #define CHOPPER_TIMING CHOPPER_DEFAULT_24V // All axes (override below) //#define CHOPPER_TIMING_X CHOPPER_TIMING // For X Axes (override below) //#define CHOPPER_TIMING_X2 CHOPPER_TIMING_X //#define CHOPPER_TIMING_Y CHOPPER_TIMING // For Y Axes (override below) @@ -3361,13 +3363,13 @@ * STEALTHCHOP_(XY|Z|E) must be enabled to use HYBRID_THRESHOLD. * M913 X/Y/Z/E to live tune the setting */ - //#define HYBRID_THRESHOLD + #define HYBRID_THRESHOLD - #define X_HYBRID_THRESHOLD 100 // [mm/s] + #define X_HYBRID_THRESHOLD 160 // [mm/s] #define X2_HYBRID_THRESHOLD 100 - #define Y_HYBRID_THRESHOLD 100 + #define Y_HYBRID_THRESHOLD 160 #define Y2_HYBRID_THRESHOLD 100 - #define Z_HYBRID_THRESHOLD 3 + #define Z_HYBRID_THRESHOLD 40 #define Z2_HYBRID_THRESHOLD 3 #define Z3_HYBRID_THRESHOLD 3 #define Z4_HYBRID_THRESHOLD 3 @@ -3416,10 +3418,10 @@ #if ANY(SENSORLESS_HOMING, SENSORLESS_PROBING) // TMC2209: 0...255. TMC2130: -64...63 - #define X_STALL_SENSITIVITY 8 - #define X2_STALL_SENSITIVITY X_STALL_SENSITIVITY - #define Y_STALL_SENSITIVITY 8 - #define Y2_STALL_SENSITIVITY Y_STALL_SENSITIVITY + #define X_STALL_SENSITIVITY 55 + //#define X2_STALL_SENSITIVITY X_STALL_SENSITIVITY + #define Y_STALL_SENSITIVITY 65 + //#define Y2_STALL_SENSITIVITY Y_STALL_SENSITIVITY //#define Z_STALL_SENSITIVITY 8 //#define Z2_STALL_SENSITIVITY Z_STALL_SENSITIVITY //#define Z3_STALL_SENSITIVITY Z_STALL_SENSITIVITY @@ -3431,7 +3433,7 @@ //#define V_STALL_SENSITIVITY 8 //#define W_STALL_SENSITIVITY 8 //#define SPI_ENDSTOPS // TMC2130/TMC5160 only - //#define IMPROVE_HOMING_RELIABILITY + #define IMPROVE_HOMING_RELIABILITY #endif // @section tmc/config @@ -3451,7 +3453,7 @@ /** * Step on both rising and falling edge signals (as with a square wave). */ - //#define EDGE_STEPPING + #define EDGE_STEPPING /** * Enable M122 debugging command for TMC stepper drivers. @@ -3888,7 +3890,7 @@ /** * Extra options for the M114 "Current Position" report */ -//#define M114_DETAIL // Use 'M114` for details to check planner calculations +#define M114_DETAIL // Use 'M114` for details to check planner calculations //#define M114_REALTIME // Real current position based on forward kinematics //#define M114_LEGACY // M114 used to synchronize on every call. Enable if needed. @@ -3898,7 +3900,7 @@ */ //#define AUTO_REPORT_FANS -//#define REPORT_FAN_CHANGE // Report the new fan speed when changed by M106 (and others) +#define REPORT_FAN_CHANGE // Report the new fan speed when changed by M106 (and others) /** * Auto-report temperatures with M155 S @@ -3911,7 +3913,7 @@ /** * Auto-report position with M154 S */ -//#define AUTO_REPORT_POSITION +#define AUTO_REPORT_POSITION #if ENABLED(AUTO_REPORT_POSITION) //#define AUTO_REPORT_REAL_POSITION // Auto-report the real position #endif @@ -3925,7 +3927,7 @@ // Include capabilities in M115 output #define EXTENDED_CAPABILITIES_REPORT #if ENABLED(EXTENDED_CAPABILITIES_REPORT) - //#define M115_GEOMETRY_REPORT + #define M115_GEOMETRY_REPORT #endif #endif @@ -4012,18 +4014,18 @@ // Custom Menu: Main Menu //#define CUSTOM_MENU_MAIN #if ENABLED(CUSTOM_MENU_MAIN) - //#define CUSTOM_MENU_MAIN_TITLE "Custom Commands" - #define CUSTOM_MENU_MAIN_SCRIPT_DONE "M117 User Script Done" - #define CUSTOM_MENU_MAIN_SCRIPT_AUDIBLE_FEEDBACK - //#define CUSTOM_MENU_MAIN_SCRIPT_RETURN // Return to status screen after a script + #define CUSTOM_MENU_MAIN_TITLE "Calibration" + //#define CUSTOM_MENU_MAIN_SCRIPT_DONE "M117 User Script Done" + //#define CUSTOM_MENU_MAIN_SCRIPT_AUDIBLE_FEEDBACK + #define CUSTOM_MENU_MAIN_SCRIPT_RETURN // Return to status screen after a script #define CUSTOM_MENU_MAIN_ONLY_IDLE // Only show custom menu when the machine is idle - #define MAIN_MENU_ITEM_1_DESC "Home & UBL Info" - #define MAIN_MENU_ITEM_1_GCODE "G28\nG29 W" + //#define MAIN_MENU_ITEM_1_DESC "Home & UBL Info" + //#define MAIN_MENU_ITEM_1_GCODE "G28\nG29 W" //#define MAIN_MENU_ITEM_1_CONFIRM // Show a confirmation dialog before this action - #define MAIN_MENU_ITEM_2_DESC "Preheat for " PREHEAT_1_LABEL - #define MAIN_MENU_ITEM_2_GCODE "M140 S" STRINGIFY(PREHEAT_1_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND) + //#define MAIN_MENU_ITEM_2_DESC "Preheat for " PREHEAT_1_LABEL + //#define MAIN_MENU_ITEM_2_GCODE "M140 S" STRINGIFY(PREHEAT_1_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND) //#define MAIN_MENU_ITEM_2_CONFIRM //#define MAIN_MENU_ITEM_3_DESC "Preheat for " PREHEAT_2_LABEL @@ -4044,18 +4046,18 @@ // Custom Menu: Configuration Menu //#define CUSTOM_MENU_CONFIG #if ENABLED(CUSTOM_MENU_CONFIG) - //#define CUSTOM_MENU_CONFIG_TITLE "Custom Commands" - #define CUSTOM_MENU_CONFIG_SCRIPT_DONE "M117 Wireless Script Done" - #define CUSTOM_MENU_CONFIG_SCRIPT_AUDIBLE_FEEDBACK - //#define CUSTOM_MENU_CONFIG_SCRIPT_RETURN // Return to status screen after a script + #define CUSTOM_MENU_CONFIG_TITLE "Sheet Profiles" + #define CUSTOM_MENU_CONFIG_SCRIPT_DONE "M500\nM117 Sheet Loaded" + //#define CUSTOM_MENU_CONFIG_SCRIPT_AUDIBLE_FEEDBACK + #define CUSTOM_MENU_CONFIG_SCRIPT_RETURN // Return to status screen after a script #define CUSTOM_MENU_CONFIG_ONLY_IDLE // Only show custom menu when the machine is idle - #define CONFIG_MENU_ITEM_1_DESC "Wifi ON" - #define CONFIG_MENU_ITEM_1_GCODE "M118 [ESP110] WIFI-STA pwd=12345678" + //#define CONFIG_MENU_ITEM_1_DESC "Wifi ON" + //#define CONFIG_MENU_ITEM_1_GCODE "M118 [ESP110] WIFI-STA pwd=12345678" //#define CONFIG_MENU_ITEM_1_CONFIRM // Show a confirmation dialog before this action - #define CONFIG_MENU_ITEM_2_DESC "Bluetooth ON" - #define CONFIG_MENU_ITEM_2_GCODE "M118 [ESP110] BT pwd=12345678" + //#define CONFIG_MENU_ITEM_2_DESC "Bluetooth ON" + //#define CONFIG_MENU_ITEM_2_GCODE "M118 [ESP110] BT pwd=12345678" //#define CONFIG_MENU_ITEM_2_CONFIRM //#define CONFIG_MENU_ITEM_3_DESC "Radio OFF" @@ -4120,12 +4122,12 @@ * Host Prompt Support enables Marlin to use the host for user prompts so * filament runout and other processes can be managed from the host side. */ -//#define HOST_ACTION_COMMANDS +#define HOST_ACTION_COMMANDS #if ENABLED(HOST_ACTION_COMMANDS) //#define HOST_PAUSE_M76 // Tell the host to pause in response to M76 - //#define HOST_PROMPT_SUPPORT // Initiate host prompts to get user feedback + #define HOST_PROMPT_SUPPORT // Initiate host prompts to get user feedback #if ENABLED(HOST_PROMPT_SUPPORT) - //#define HOST_STATUS_NOTIFICATIONS // Send some status messages to the host as notifications + #define HOST_STATUS_NOTIFICATIONS // Send some status messages to the host as notifications #endif //#define HOST_START_MENU_ITEM // Add a menu item that tells the host to start //#define HOST_SHUTDOWN_MENU_ITEM // Add a menu item that tells the host to shut down diff --git a/Marlin/Ender_AIO_Configuration.h b/Marlin/Ender_AIO_Configuration.h new file mode 100644 index 0000000000..bee7e8390f --- /dev/null +++ b/Marlin/Ender_AIO_Configuration.h @@ -0,0 +1,322 @@ +#pragma once + +/** + * Ender_AIO_Configuration.h + * + * This file includes basic settings like: + * + * - Getting Started with Ender AIO Firmware + * - Custom Printer Name + * - Motherboard + * - Dual-Z Upgrade + * - Extruder + * - Filament Runout + * - BLTouch + * - Bed Leveling + * - Hotend & Thermal/PID Settings + * - LCD / TFT / Controller + * - Input Shaping + * - Sheet Profile Menu + */ +#define CONFIGURATION_H_VERSION 02010300 +#define ENDER_AIO_VERSION 20240130 + +//=========================================================================== +//================= Getting Started with Ender AIO Firmware ================= +//=========================================================================== + +/** + * If you find this project helpful, please consider donating: + * + * Keith Bennett, Marlin tester/config builder: https://github.com/sponsors/thisiskeithb + * https://ko-fi.com/thisiskeithb + * Thank you and Happy Printing! + */ + +//=========================================================================== +//=========================== Custom Printer Name =========================== +//=========================================================================== + +// Uncomment to set a custom printer name. +//#define ENDER_AIO_CUSTOM_PRINTER_NAME "Ender-3" + +//=========================================================================== +//=============================== Motherboard =============================== +//=========================================================================== + +/** + * Motherboard + * + * - SKR Mini E3 V3.0 (STM32G0B0RE/STM32G0B1RE) + * - SKR Mini E3 V3.0.1 (STM32F401RC) + * - SKR Mini E3 V2.0 (STM32F103RC/STM32F103RE) + * - SKR Mini E3 V1.2 (STM32F103RC) + * - SKR E3 Turbo (LPC1769) + * - SKR V3.0 (STM32H743VI/STM32H723VG) + * - SKR V3.0 EZ (STM32H743VI/STM32H723VG) + * + * More board support coming soon! + */ +#define ENDER_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0 +//#define ENDER_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0_1 +//#define ENDER_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V2_0 +//#define ENDER_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V1_2 +//#define ENDER_AIO_MOTHERBOARD_BTT_SKR_E3_TURBO +//#define ENDER_AIO_MOTHERBOARD_BTT_SKR_V3_0 +//#define ENDER_AIO_MOTHERBOARD_BTT_SKR_V3_0_EZ + +//=========================================================================== +//============================= Dual-Z Upgrade ============================== +//=========================================================================== + +/** + * Creality Ender-3 Dual Z Kit https://www.amazon.com/dp/B09N8QQDSP + * + * Note: If your motherboard supports five drivers, all five driver slots should be populated (TMC2209s). + */ +//#define ENDER_AIO_DUAL_Z_KIT + +//=========================================================================== +//================================ Extruder ================================= +//=========================================================================== + +/** + * Extruder + * + * - Stock Ender-3 Extruder https://www.amazon.com/dp/B07WHYBVJ5 + * - WINSINN Dual Gear Extruder https://www.amazon.com/dp/B07SY745CF + * - Genuine Bondtech BMG Extruder https://www.bondtech.se/product/bmg-extruder/ + * - Trianglelab DDB 2.0 Extruder https://www.amazon.com/dp/B08KP189KN + */ +#define ENDER_AIO_EXTRUDER_STOCK +//#define ENDER_AIO_EXTRUDER_WINSINN_DUAL_GEAR +//#define ENDER_AIO_EXTRUDER_BONDTECH_BMG +//#define ENDER_AIO_EXTRUDER_TL_DDB_V2 + +// BMG/DDB with LDO 0.9° Slim Power motor on E +#if ANY(ENDER_AIO_EXTRUDER_BONDTECH_BMG, ENDER_AIO_EXTRUDER_TL_DDB_V2) + //#define ENDER_AIO_EXTRUDER_MOTOR_LDO_0_9_SLIM_POWER +#endif + +// Custom E-Steps +//#define ENDER_AIO_CUSTOM_E_STEPS 93 + +// Invert the E stepper direction. Enable if extruder goes the wrong way. +//#define ENDER_AIO_INVERT_E_DIR + +//=========================================================================== +//============================= Filament Runout ============================= +//=========================================================================== + +/** + * Filament Runout + * + * Basic NC-style filament runout support is available (but disabled) by default. + * + * Uncomment for BigTreeTech Smart Filament Sensor V2: https://github.com/bigtreetech/smart-filament-detection-module/tree/master/V2.0 + */ +//#define ENDER_AIO_BTT_SMART_FILAMENT_SENSOR_V2 + +//=========================================================================== +//================================= Probes ================================== +//=========================================================================== + +/** + * Probe Options + * + * To simplify homing, your Z endstop must be removed and Z homing will be done with the BLTouch instead. + */ + +/** + * BLTouch + * + * If your BLTouch did not come with a metal bracket, dude-in-a-box's "stiffer, with cutouts" BLTouch mount is recommended: https://www.thingiverse.com/thing:4390903 + * + * Note: Offsets can also be customized via LCD under Configuration > Advanced Settings > Probe Offsets. + */ +//#define ENDER_AIO_BLTOUCH +#if ENABLED(ENDER_AIO_BLTOUCH) + #define ENDER_AIO_BLTOUCH_MOUNT_CREALITY_METAL // Uses { -40, -9, 0 } probe offsets + //#define ENDER_AIO_BLTOUCH_MOUNT_DUDE_IN_A_BOX // Uses { -43, -10, 0 } probe offsets + //#define ENDER_AIO_CUSTOM_BLTOUCH_MOUNT { -40, -9, -0.0 } // Custom probe offsets { X, Y, Z }. Z should be a negative value +#endif + +/** + * BIQU MicroProbe + * + * Note: Offsets can also be customized via LCD under Configuration > Advanced Settings > Probe Offsets. + */ +//#define ENDER_AIO_MICROPROBE +#if ENABLED(ENDER_AIO_MICROPROBE) + //#define ENDER_AIO_MICROPROBE_V1 // V2 is assumed by default. Uncomment if using V1 + #define ENDER_AIO_CUSTOM_MICROPROBE_MOUNT { -40, -9, -0.0 } // Custom probe offsets { X, Y, Z }. Z should be a negative value +#endif + +/** + * Probe Connection + * + * Connect probe to ZPROBE (5-pin) or SERVO (3-pin) + ZPROBE (2-pin) by default. + * Uncomment if connecting probe to SERVO + Z MIN/Z STOP instead. + */ +//#define ENDER_AIO_PROBE_CONNECTED_TO_Z_MIN_PORT + +//=========================================================================== +//============================== Bed Leveling =============================== +//=========================================================================== + +/** + * Bed Leveling Type + * + * - Mesh Bed Leveling (default unless a probe option is enabled above) + * - Bilinear + * - Unified Bed Leveling + */ +#if ANY(ENDER_AIO_BLTOUCH, ENDER_AIO_MICROPROBE) + #define ENDER_AIO_AUTO_BED_LEVELING_BILINEAR + //#define ENDER_AIO_AUTO_BED_LEVELING_UBL +#endif + +//=========================================================================== +//====================== Hotend & Thermal/PID Settings ====================== +//=========================================================================== + +/** + * All-Metal Hotend + * + * HT-NTC100K cartridge thermistor is recommended: https://www.amazon.com/gp/product/B09WDR1M5Q + */ +//#define ENDER_AIO_PHAETUS_DRAGONFLY_290C // 290°C maximum temperature (305°C - 15°C overshoot) + +/** + * Custom PID Settings + * + * Stock Ender-3 hotend and bed PID settings are enabled by default. + * + * If needed, uncomment ENDER_AIO_CUSTOM_HOTEND_PID and/or ENDER_AIO_CUSTOM_BED_PID to customize PID settings. + */ +//#define ENDER_AIO_CUSTOM_HOTEND_PID +#if ENABLED(ENDER_AIO_CUSTOM_HOTEND_PID) + #define ENDER_AIO_DEFAULT_Kp 21.73 + #define ENDER_AIO_DEFAULT_Ki 1.54 + #define ENDER_AIO_DEFAULT_Kd 76.55 + // Find your own by running "M303 E0 C8 S210" via serial to PID autotune the hotend at 210°C for 8 cycles. +#endif + +//#define ENDER_AIO_CUSTOM_BED_PID +#if ENABLED(ENDER_AIO_CUSTOM_BED_PID) + #define ENDER_AIO_DEFAULT_bedKp 47.93 + #define ENDER_AIO_DEFAULT_bedKi 7.94 + #define ENDER_AIO_DEFAULT_bedKd 192.91 + // Find your own by running "M303 E-1 C8 S65" via serial to PID autotune the bed at 65°C for 8 cycles. +#endif + +/** + * Model Predictive Control for Hotend + * + * Stock Ender-3 hotend with 40W heater cartridge is configured by default. + * + * Note: Replaces PID for the hotend + */ +//#define ENDER_AIO_HOTEND_MPCTEMP + +// If needed, uncomment ENDER_AIO_CUSTOM_HOTEND_MPCTEMP to customize MPCTEMP settings. +// Use M306 T to autotune the model. See https://marlinfw.org/docs/gcode/M306.html for full details. +//#define ENDER_AIO_CUSTOM_HOTEND_MPCTEMP +#if ALL(ENDER_AIO_HOTEND_MPCTEMP, ENDER_AIO_CUSTOM_HOTEND_MPCTEMP) + #define ENDER_AIO_CUSTOM_MPC_HEATER_POWER { 40.0f } // (W) Heat cartridge power. + #define ENDER_AIO_CUSTOM_MPC_BLOCK_HEAT_CAPACITY { 10.46f } // (J/K) Heat block heat capacity. Use M306 T to autotune the model. + #define ENDER_AIO_CUSTOM_MPC_SENSOR_RESPONSIVENESS { 0.7801f } // (K/s per ∆K) Rate of change of sensor temperature from heat block. + #define ENDER_AIO_CUSTOM_MPC_AMBIENT_XFER_COEFF { 0.0564f } // (W/K) Heat transfer coefficients from heat block to room air with fan off. + #define ENDER_AIO_CUSTOM_MPC_AMBIENT_XFER_COEFF_FAN255 { 0.1264f } // (W/K) Heat transfer coefficients from heat block to room air with fan on full. + + // Filament Heat Capacity (joules/kelvin/mm) + // Set with M306 H in your filament or start G-code. + #define ENDER_AIO_CUSTOM_FILAMENT_HEAT_CAPACITY_PERMM { 5.6e-3f } // PLA = 5.6e-3f (0.0056) J/K/mm + // PETG = 3.6e-3f (0.0036) J/K/mm + // ABS = 5.15e-3f (0.00515) J/K/mm + // Nylon = 5.22e-3f (0.00522) J/K/mm +#endif + +//=========================================================================== +//========================= LCD / TFT / Controller ========================== +//=========================================================================== + +/** + * LCD / TFT / Controller + * + * - Stock Creality Ender-3 Screen + * - BigTreeTech TFT35 E3 Dual Mode TFT + */ +#define ENDER_AIO_DISPLAY_STOCK +//#define ENDER_AIO_DISPLAY_BTT_TFT35_E3_TFT +#if ENABLED(ENDER_AIO_DISPLAY_BTT_TFT35_E3_TFT) + #define ENDER_AIO_USES_BOTH_EXP_CABLES // Disable if only using one 10-pin EXP cable. SD card connection will be set to the motherboard instead of TFT. +#endif + +/** + * LCD LANGUAGE + * + * Select the language to display on the LCD. These languages are available: + * + * en, an, bg, ca, cz, da, de, el, el_CY, es, eu, fi, fr, gl, hr, hu, it, + * jp_kana, ko_KR, nl, pl, pt, pt_br, ro, ru, sk, sv, tr, uk, vi, zh_CN, zh_TW + * + * :{ 'en':'English', 'an':'Aragonese', 'bg':'Bulgarian', 'ca':'Catalan', 'cz':'Czech', 'da':'Danish', 'de':'German', 'el':'Greek (Greece)', 'el_CY':'Greek (Cyprus)', 'es':'Spanish', 'eu':'Basque-Euskera', 'fi':'Finnish', 'fr':'French', 'gl':'Galician', 'hr':'Croatian', 'hu':'Hungarian', 'it':'Italian', 'jp_kana':'Japanese', 'ko_KR':'Korean (South Korea)', 'nl':'Dutch', 'pl':'Polish', 'pt':'Portuguese', 'pt_br':'Portuguese (Brazilian)', 'ro':'Romanian', 'ru':'Russian', 'sk':'Slovak', 'sv':'Swedish', 'tr':'Turkish', 'uk':'Ukrainian', 'vi':'Vietnamese', 'zh_CN':'Chinese (Simplified)', 'zh_TW':'Chinese (Traditional)' } + */ +#define ENDER_AIO_LCD_LANGUAGE en + +/** + * Boot & Status Screens + * + * Disabled by default to save flash space. + */ +//#define ENDER_AIO_SHOW_CUSTOM_BOOTSCREEN // Show the Ender dragon bootscreen on startup. +//#define ENDER_AIO_STATUS_SCREEN_IMAGE // Show the "Ender-3" text in upper-left corner of status screen. + +//=========================================================================== +//============================== Input Shaping ============================== +//=========================================================================== + +/** + * Input Shaping -- EXPERIMENTAL + * + * Zero Vibration (ZV) Input Shaping for X and/or Y movements. + * + * See https://github.com/MarlinFirmware/Marlin/pull/24797 for configuration & full details. + * + * Tune with M593 D F: + * + * D Set the zeta/damping factor. If axes (X, Y, etc.) are not specified, set for all axes. + * F Set the frequency. If axes (X, Y, etc.) are not specified, set for all axes. + * X<1> Set the given parameters only for the X axis. + * Y<1> Set the given parameters only for the Y axis. + */ +//#define ENDER_AIO_INPUT_SHAPING +#if ENABLED(ENDER_AIO_INPUT_SHAPING) + #define ENDER_AIO_SHAPING_FREQ_X 40 // (Hz) The default dominant resonant frequency on the X axis. + #define ENDER_AIO_SHAPING_FREQ_Y 40 // (Hz) The default dominant resonant frequency on the Y axis. + #define ENDER_AIO_SHAPING_ZETA_X 0.15f // Damping ratio of the X axis (range: 0.0 = no damping to 1.0 = critical damping). + #define ENDER_AIO_SHAPING_ZETA_Y 0.15f // Damping ratio of the Y axis (range: 0.0 = no damping to 1.0 = critical damping). +#endif + +//=========================================================================== +//=========================== Sheet Profile Menu ============================ +//=========================================================================== + +/** + * Sheet Profiles Menu + * + * Automatically adjust Z Probe Offset with M851 based on selected Sheet Profile. + * Up to 10 sheet profiles are supported without changes. + */ +//#define ENDER_AIO_SHEET_PROFILES_MENU +#if ENABLED(ENDER_AIO_SHEET_PROFILES_MENU) + #define ENDER_AIO_SHEET_1_DESC "Smooth" // Short description of Sheet + #define ENDER_AIO_SHEET_1_OFFSET -0.000 // Sheet offset. This should be a negative value. + + #define ENDER_AIO_SHEET_2_DESC "Textured" + #define ENDER_AIO_SHEET_2_OFFSET -0.000 + + //#define ENDER_AIO_SHEET_3_DESC "Satin" + //#define ENDER_AIO_SHEET_3_OFFSET -0.000 +#endif diff --git a/Marlin/_Bootscreen.h b/Marlin/_Bootscreen.h new file mode 100644 index 0000000000..324cb4a616 --- /dev/null +++ b/Marlin/_Bootscreen.h @@ -0,0 +1,97 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +/** + * Custom Boot Screen bitmap + * + * Place this file in the root with your configuration files + * and enable SHOW_CUSTOM_BOOTSCREEN in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +#define CUSTOM_BOOTSCREEN_TIMEOUT 1000 +#define CUSTOM_BOOTSCREEN_BMPWIDTH 81 +#define CUSTOM_BOOTSCREEN_INVERTED + +const unsigned char custom_start_bmp[] PROGMEM = { + B11111111,B11111111,B11111111,B11111111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11101111,B11101111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100111,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11100011,B11011111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11110011,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100001,B11100001,B11001111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111110,B01111000,B00000000,B00000000,B00000011,B11011101,B11111111,B11111111,B11111111,B11111111, + B11111110,B11111111,B10000000,B01111110,B00000000,B00000001,B11101110,B11111111,B11111111,B11111111,B11111111, + B11111110,B01111101,B11001111,B11111100,B00000000,B00000000,B11110111,B01111111,B11111111,B11111111,B11111111, + B11111111,B10001110,B00000110,B00000000,B00000000,B00000000,B01111011,B10111111,B11111111,B11111111,B11111111, + B11111111,B11000000,B00000000,B00000000,B00000000,B00000000,B01111101,B11011111,B11111111,B11111111,B11111111, + B11111111,B11111100,B00000001,B11111110,B00000000,B00000000,B00111110,B11100111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111100,B00000000,B00000011,B00011111,B01110011,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111000,B00000000,B00000001,B10001111,B10000001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11100000,B00000000,B00000000,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B00000000,B11111100,B00000000,B00000000,B11110000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11100000,B00001111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111110,B00000011,B11111111,B11111111,B11000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111001,B00000000,B00000000,B00000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111100,B00000000,B00000111,B11000000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B00000000,B00000111,B11100000,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00000111,B11110001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B00000111,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B00000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B10000011,B11111001,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11100001,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11110000,B10111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111011,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111001,B11111000,B00111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B01111110,B11110000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B10001110,B00000011,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11100000,B00011111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B01111111,B11111111,B11111111,B11111111, + B11111111,B00000000,B00000000,B01111111,B11111111,B11111111,B11111000,B01111111,B11111111,B11111111,B11111111, + B11111111,B10000000,B00000000,B01111111,B11111111,B11111111,B11100000,B01111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B11000011,B11111100,B11111111,B11111111,B11111111,B11111000,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111101,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B10000111,B11111111,B11111111,B11111111,B11111111,B11110001,B11111111,B11111111,B11111111,B11111111, + B11111111,B00001111,B11100111,B11110011,B00001111,B11111100,B00100011,B11111100,B00111111,B11111111,B11111111, + B11111111,B00001111,B11101111,B10000000,B00000111,B11110000,B00000011,B11110000,B00011110,B00000000,B01111111, + B11111110,B00011111,B11001111,B10000001,B10000111,B11000111,B10000111,B11000111,B00001100,B00000000,B01111111, + B11111110,B00000000,B00011111,B11000111,B11000111,B10001111,B11000111,B10011111,B00001111,B00001100,B11111111, + B11111110,B00000000,B00011111,B10000111,B10001111,B00011111,B10001111,B00011111,B00001111,B00011111,B11111111, + B11111100,B00111111,B10011111,B10001111,B10001111,B00011111,B10001110,B00000000,B00011110,B00111111,B11111111, + B11111100,B01111111,B00111111,B00001111,B00011110,B00111111,B00011110,B00111111,B11111110,B00111111,B11111111, + B11111000,B01111111,B11111111,B00011111,B00011100,B00111111,B00011100,B01111111,B11111100,B01111111,B11111111, + B11111000,B11111111,B11111111,B00011110,B00011100,B01111110,B00011100,B01111111,B11111100,B01111111,B11111111, + B11110000,B11111111,B11001110,B00111110,B00111100,B01111110,B00111100,B01111111,B10111000,B11111111,B11111111, + B11110000,B11111111,B10011110,B00111100,B00111000,B01111100,B00111000,B01111110,B01111000,B11111111,B11111111, + B11100001,B11111111,B00111100,B01111100,B01111000,B01111100,B01111000,B00111100,B11110001,B11111111,B11111111, + B11100001,B11111000,B00111000,B01111000,B01111000,B00010000,B00011000,B00000001,B11110001,B11111111,B11111111, + B00000000,B00000000,B01100000,B00100000,B00111100,B00000000,B01111100,B00000111,B10000000,B01111111,B11111111, + B11111111,B11111111,B11111111,B11111111,B11111110,B00011111,B11111110,B00011111,B11111111,B11111111,B11111111 +}; diff --git a/Marlin/_Statusscreen.h b/Marlin/_Statusscreen.h new file mode 100644 index 0000000000..d1e2f4a642 --- /dev/null +++ b/Marlin/_Statusscreen.h @@ -0,0 +1,62 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#pragma once + +/** + * Custom Status Screen bitmap + * + * Place this file in the root with your configuration files + * and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h. + * + * Use the Marlin Bitmap Converter to make your own: + * https://marlinfw.org/tools/u8glib/converter.html + */ + +// +// Status Screen Logo bitmap +// +#define STATUS_LOGO_Y 8 +#define STATUS_LOGO_WIDTH 39 + +const unsigned char status_logo_bmp[] PROGMEM = { + B11111000,B00000001,B10000000,B00000000,B00001100, + B01001000,B00000000,B10000000,B00000000,B00010010, + B01000011,B11000011,B10001100,B11010000,B00000010, + B01110001,B00100100,B10010010,B01100111,B11001100, + B01000001,B00100100,B10011110,B01000000,B00000010, + B01001001,B00100100,B10010000,B01000000,B00010010, + B11111011,B10110011,B11001110,B11100000,B00001100 +}; + +// +// Use default bitmaps +// +#define STATUS_HOTEND_ANIM +#define STATUS_BED_ANIM +#define STATUS_HEATERS_XSPACE 20 +#if HOTENDS < 2 + #define STATUS_HEATERS_X 48 + #define STATUS_BED_X 72 +#else + #define STATUS_HEATERS_X 40 + #define STATUS_BED_X 80 +#endif diff --git a/Marlin/src/inc/Ender_AIO_Changes.h b/Marlin/src/inc/Ender_AIO_Changes.h new file mode 100644 index 0000000000..5744e50a89 --- /dev/null +++ b/Marlin/src/inc/Ender_AIO_Changes.h @@ -0,0 +1,17 @@ +#pragma once +//=========================================================================== +//========================== DO NOT EDIT THIS FILE ========================== +//=========================================================================== + +/** + * Ender_AIO_Changes.h + * Alert about Ender_AIO_Configuration.h changes at compile-time. + */ +#define CONFIGURATION_H_VERSION 02010300 +#define ENDER_AIO_VERSION 20240130 + +#ifdef ENDER_AIO_E_STEPS_PER_UNIT_CUSTOM + #error "ENDER_AIO_E_STEPS_PER_UNIT_CUSTOM is now ENDER_AIO_CUSTOM_E_STEPS. Please update your configuration." +#elif defined(ENDER_AIO_BLTOUCH_MOUNT_CUSTOM) + #error "ENDER_AIO_BLTOUCH_MOUNT_CUSTOM is now ENDER_AIO_CUSTOM_BLTOUCH_MOUNT. Please update your configuration." +#endif diff --git a/Marlin/src/inc/Ender_AIO_Conditionals.h b/Marlin/src/inc/Ender_AIO_Conditionals.h new file mode 100644 index 0000000000..2b8d9ab35f --- /dev/null +++ b/Marlin/src/inc/Ender_AIO_Conditionals.h @@ -0,0 +1,475 @@ +#pragma once +//=========================================================================== +//========================== DO NOT EDIT THIS FILE ========================== +//=========================================================================== + +/** + * Ender_AIO_Conditionals.h + * Configuration logic based on Ender_AIO_Configuration.h options at compile time. + */ +#define CONFIGURATION_H_VERSION 02010300 +#define ENDER_AIO_VERSION 20240130 + +//=========================================================================== +//============================ Source Code Info ============================= +//=========================================================================== + +#define SOURCE_CODE_URL "bit.ly/3YYEblW" +#define WEBSITE_URL SOURCE_CODE_URL + +//=========================================================================== +//============================== Printer Name =============================== +//=========================================================================== + +#ifndef ENDER_AIO_CUSTOM_PRINTER_NAME + #define ENDER_AIO_CUSTOM_PRINTER_NAME "Ender-3" +#endif + +//=========================================================================== +//=============================== Motherboard =============================== +//=========================================================================== + +// Define MOTHERBOARD here so preflight-checks.py works +#if ENABLED(ENDER_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0) + #define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V3_0 + #define ENDER_AIO_NO_DRIVER_UART_SPI_JUMPERS 1 + #define ENDER_AIO_HAS_REAL_EEPROM 1 + #define ENDER_AIO_HAS_CONTROLLER_FAN 1 + #define ENDER_AIO_CONTROLLER_FAN_PIN FAN2_PIN // PB15 + #define ENDSTOP_INTERRUPTS_FEATURE + #define ENDER_AIO_SERIAL_PORT_2 2 + #define FAN_SOFT_PWM + #define ENDER_AIO_SINGLE_BOARD_EXP_CONNECTION 1 + //#define ENDER_AIO_HAS_TEMP_SENSOR_SOC 1 + #define FIL_MOTION1_PIN PC13 // PS-ON +#elif ENABLED(ENDER_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0_1) + #define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V3_0_1 + #define ENDER_AIO_NO_DRIVER_UART_SPI_JUMPERS 1 + #define ENDER_AIO_HAS_REAL_EEPROM 1 + #define ENDER_AIO_HAS_CONTROLLER_FAN 1 + #define ENDER_AIO_CONTROLLER_FAN_PIN FAN2_PIN // PC8 + #define ENDSTOP_INTERRUPTS_FEATURE + #define ENDER_AIO_SERIAL_PORT_2 2 + #define FAN_SOFT_PWM + #define ENDER_AIO_SINGLE_BOARD_EXP_CONNECTION 1 + //#define ENDER_AIO_HAS_TEMP_SENSOR_SOC 1 + #define FIL_MOTION1_PIN PC14 // PS-ON +#elif ENABLED(ENDER_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V2_0) + #define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0 + #define ENDER_AIO_NO_DRIVER_UART_SPI_JUMPERS 1 + #define ENDSTOP_INTERRUPTS_FEATURE + #define ENDER_AIO_SERIAL_PORT_2 2 + #define FAN_SOFT_PWM + #define ENDER_AIO_SINGLE_BOARD_EXP_CONNECTION 1 + //#define ENDER_AIO_HAS_TEMP_SENSOR_SOC 1 + #define FIL_MOTION1_PIN PC12 // PT-DET +#elif ENABLED(ENDER_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V1_2) + #define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V1_2 + #define ENDER_AIO_NO_DRIVER_UART_SPI_JUMPERS 1 + #define ENDER_AIO_HAS_REAL_EEPROM 1 + #define ENDSTOP_INTERRUPTS_FEATURE + #define ENDER_AIO_SERIAL_PORT_2 2 + #define FAN_SOFT_PWM + #define ENDER_AIO_SINGLE_BOARD_EXP_CONNECTION 1 + //#define ENDER_AIO_HAS_TEMP_SENSOR_SOC 1 + #define FIL_MOTION1_PIN PC13 // PS-ON +#elif ENABLED(ENDER_AIO_MOTHERBOARD_BTT_SKR_E3_TURBO) + #define MOTHERBOARD BOARD_BTT_SKR_E3_TURBO + #define ENDER_AIO_NO_DRIVER_UART_SPI_JUMPERS 1 + #define ENDER_AIO_HAS_FIVE_DRIVERS 1 + #define ENDER_AIO_SERIAL_PORT_2 0 + #define ENDER_AIO_HAS_TEMP_SENSOR_BOARD 1 + #define ENDER_AIO_SINGLE_BOARD_EXP_CONNECTION 1 + #define FIL_MOTION1_PIN P1_25 // E1-STOP +#elif ENABLED(ENDER_AIO_MOTHERBOARD_BTT_SKR_V3_0) + #define MOTHERBOARD BOARD_BTT_SKR_V3_0 + #define ENDER_AIO_HAS_REAL_EEPROM 1 + #define ENDER_AIO_HAS_FIVE_DRIVERS 1 + #define ENDER_AIO_HAS_CONTROLLER_FAN 1 + #define ENDER_AIO_CONTROLLER_FAN_PIN FAN2_PIN // PB5 + #define ENDSTOP_INTERRUPTS_FEATURE + #define ENDER_AIO_NEEDS_ALT_DISPLAY_MINI_12864_NEOPIXEL_ORDER 1 // Incorrect RGB color workaround on SKR V3 (STM32H7 issue?) + #define ENDER_AIO_SERIAL_PORT_2 1 + #define FAN_SOFT_PWM + //#define ENDER_AIO_HAS_TEMP_SENSOR_SOC 1 + #define FIL_MOTION1_PIN PA0 // E1DET +#elif ENABLED(ENDER_AIO_MOTHERBOARD_BTT_SKR_V3_0_EZ) + #define MOTHERBOARD BOARD_BTT_SKR_V3_0_EZ + #define ENDER_AIO_NO_DRIVER_UART_SPI_JUMPERS 1 + #define ENDER_AIO_HAS_REAL_EEPROM 1 + #define ENDER_AIO_HAS_FIVE_DRIVERS 1 + #define ENDER_AIO_HAS_CONTROLLER_FAN 1 + #define ENDER_AIO_CONTROLLER_FAN_PIN FAN2_PIN // PB5 + #define ENDSTOP_INTERRUPTS_FEATURE + #define ENDER_AIO_NEEDS_ALT_DISPLAY_MINI_12864_NEOPIXEL_ORDER 1 // Incorrect RGB color workaround on SKR V3 (STM32H7 issue?) + #define ENDER_AIO_SERIAL_PORT_2 1 + #define FAN_SOFT_PWM + //#define ENDER_AIO_HAS_TEMP_SENSOR_SOC 1 + #define FIL_MOTION1_PIN PA0 // E1DET +#endif + +// +#if ANY(ENDER_AIO_BLTOUCH, ENDER_AIO_MICROPROBE) + #define ENDER_AIO_HAS_PROBE 1 +#endif + +// PRINTCOUNTER +#define ENDER_AIO_PRINTCOUNTER_SAVE_INTERVAL TERN(ENDER_AIO_HAS_REAL_EEPROM, 60, 0) + +#if ALL(ENDER_AIO_HAS_FIVE_DRIVERS, ENDER_AIO_DUAL_Z_KIT) + #define Z2_DRIVER_TYPE Z_DRIVER_TYPE + #define SD_FINISHED_RELEASECOMMAND "M84XYE" + #define STARTUP_COMMANDS "M17 Z" + + #if ENABLED(ENDER_AIO_HAS_PROBE) + #define Z_STEPPER_AUTO_ALIGN + #endif +#else + #define DISABLE_IDLE_Z + #define SD_FINISHED_RELEASECOMMAND "M84" +#endif + +//=========================================================================== +//============================= Stepper Motors ============================== +//=========================================================================== + +// Extruder Motor Current +#define ENDER_AIO_E0_CURRENT TERN(ENDER_AIO_EXTRUDER_MOTOR_LDO_0_9_SLIM_POWER, 550, 650) + +// Extruder Steps/mm +#if defined(ENDER_AIO_CUSTOM_E_STEPS) + #define ENDER_AIO_E_STEPS_PER_UNIT ENDER_AIO_CUSTOM_E_STEPS +#elif ENABLED(ENDER_AIO_EXTRUDER_STOCK) + #define ENDER_AIO_E_STEPS_PER_UNIT 93 +#elif ENABLED(ENDER_AIO_EXTRUDER_WINSINN_DUAL_GEAR) + #define ENDER_AIO_E_STEPS_PER_UNIT 142 +#elif ANY(ENDER_AIO_EXTRUDER_TL_DDB_V2, ENDER_AIO_EXTRUDER_BONDTECH_BMG) + #define ENDER_AIO_E_STEPS_PER_UNIT TERN(ENDER_AIO_EXTRUDER_MOTOR_LDO_0_9_SLIM_POWER, 830, 415) +#endif + +// Default Extruder Inverting +#define ENDER_AIO_INVERT_E0_DIR TERN(ENDER_AIO_EXTRUDER_BONDTECH_BMG, false, true) + +// User Extruder Inverting +#if ENABLED(ENDER_AIO_INVERT_E_DIR) + #if ENDER_AIO_INVERT_E0_DIR == true + #undef ENDER_AIO_INVERT_E0_DIR // Prevent redefined warnings + #define ENDER_AIO_INVERT_E0_DIR false + #elif ENDER_AIO_INVERT_E0_DIR == false + #undef ENDER_AIO_INVERT_E0_DIR // Prevent redefined warnings + #define ENDER_AIO_INVERT_E0_DIR true + #endif +#endif + +// Default X/Y/Z Inverting +#define ENDER_AIO_INVERT_X_DIR true +#define ENDER_AIO_INVERT_Y_DIR true +#define ENDER_AIO_INVERT_Z_DIR false + +//=========================================================================== +//=========================== Homing / StallGuard =========================== +//=========================================================================== + +// Homing speeds (mm/min) +#ifndef ENDER_AIO_HOMING_FEEDRATE_MM_M + #define ENDER_AIO_HOMING_FEEDRATE_MM_M { (50*60), (50*60), (8*60) } +#endif + +/** + * Sensorless Homing + * + * Sensitivity TMC2209 + * HIGHEST 255 (Too sensitive => False positive) + * LOWEST 0 (Too insensitive => No trigger) + * + * If needed, uncomment ENDER_AIO_*_STALL sensorless (StallGuard) settings below. + * Settings can also be customized via LCD under Configuration -> Advanced Settings -> TMC Drivers -> Sensorless Homing + */ +//#define ENDER_AIO_SENSORLESS_HOMING +#if ENABLED(ENDER_AIO_SENSORLESS_HOMING) +//#define ENDER_AIO_X_STALL_SENSITIVITY 75 +//#define ENDER_AIO_Y_STALL_SENSITIVITY 75 + +// If needed, uncomment ENDER_AIO_HOMING_FEEDRATE_MM_M to customize Homing speeds (mm/min) +//#define ENDER_AIO_HOMING_FEEDRATE_MM_M { (50*60), (50*60), (8*60) } +#endif + +// StallGuard settings +#if ENABLED(ENDER_AIO_SENSORLESS_HOMING) + #ifndef ENDER_AIO_X_STALL_SENSITIVITY + #define ENDER_AIO_X_STALL_SENSITIVITY 75 + #endif + #ifndef ENDER_AIO_Y_STALL_SENSITIVITY + #define ENDER_AIO_Y_STALL_SENSITIVITY 75 + #endif +#endif + +//=========================================================================== +//============================== Input Shaping ============================== +//=========================================================================== + +#if ENABLED(ENDER_AIO_INPUT_SHAPING) + #define INPUT_SHAPING_X + #define INPUT_SHAPING_Y +#else + #define S_CURVE_ACCELERATION // Not needed/recommended with Input Shaping +#endif + +//=========================================================================== +//====================== Hotend & Thermal/PID Settings ====================== +//=========================================================================== + +// Phaetus DragonFly Upgrade +#define ENDER_AIO_HEATER_0_MAXTEMP TERN(ENDER_AIO_PHAETUS_DRAGONFLY_290C, 305, 270) + +// Motherboard Temperature Sensor +#define ENDER_AIO_TEMP_SENSOR_BOARD TERN(ENDER_AIO_HAS_TEMP_SENSOR_BOARD, 1, 0) + +// SOC Temperature Sensor +#define ENDER_AIO_TEMP_SENSOR_SOC TERN(ENDER_AIO_HAS_TEMP_SENSOR_SOC, 100, 0) + +// MPC/Hotend PID +#if ENABLED(ENDER_AIO_HOTEND_MPCTEMP) + #define MPCTEMP + + #if DISABLED(ENDER_AIO_CUSTOM_HOTEND_MPCTEMP) + #define ENDER_AIO_CUSTOM_MPC_HEATER_POWER { 40.0f } + #define ENDER_AIO_CUSTOM_MPC_BLOCK_HEAT_CAPACITY { 13.33f } + #define ENDER_AIO_CUSTOM_MPC_SENSOR_RESPONSIVENESS { 0.1299f } + #define ENDER_AIO_CUSTOM_MPC_AMBIENT_XFER_COEFF { 0.1163f } + #define ENDER_AIO_CUSTOM_MPC_AMBIENT_XFER_COEFF_FAN255 { 0.1245f } + #define ENDER_AIO_CUSTOM_FILAMENT_HEAT_CAPACITY_PERMM { 5.6e-3f } + #endif +#else // Hotend PID + #define PIDTEMP + + #if DISABLED(ENDER_AIO_CUSTOM_HOTEND_PID) + #define ENDER_AIO_DEFAULT_Kp 21.73 + #define ENDER_AIO_DEFAULT_Ki 1.54 + #define ENDER_AIO_DEFAULT_Kd 76.55 + #endif +#endif + +// Bed PID +#if DISABLED(ENDER_AIO_CUSTOM_BED_PID) + #define ENDER_AIO_DEFAULT_bedKp 47.93 + #define ENDER_AIO_DEFAULT_bedKi 7.94 + #define ENDER_AIO_DEFAULT_bedKd 192.91 +#endif + +//=========================================================================== +//================================== Fans =================================== +//=========================================================================== + +// Motherboard Cooling Fan +#if ENABLED(ENDER_AIO_HAS_CONTROLLER_FAN) + #define USE_CONTROLLER_FAN +#endif + +//=========================================================================== +//============================= Filament Runout ============================= +//=========================================================================== + +#if ENABLED(ENDER_AIO_BTT_SMART_FILAMENT_SENSOR_V2) + #define FILAMENT_RUNOUT_DISTANCE_MM 3 + #define FILAMENT_MOTION_SENSOR + #define FILAMENT_SWITCH_AND_MOTION +#endif + +//=========================================================================== +//========================== Probe / Bed Leveling =========================== +//=========================================================================== + +#if ENABLED(ENDER_AIO_HAS_PROBE) + + #define USE_PROBE_FOR_Z_HOMING + //#define ASSISTED_TRAMMING + #define BABYSTEP_ZPROBE_OFFSET + #define BED_TRAMMING_USE_PROBE + #define Z_SAFE_HOMING + #define PROBE_OFFSET_WIZARD + + #if ENABLED(ENDER_AIO_AUTO_BED_LEVELING_BILINEAR) + #define AUTO_BED_LEVELING_BILINEAR + #define G29_RETRY_AND_RECOVER + #elif ENABLED(ENDER_AIO_AUTO_BED_LEVELING_UBL) + #define AUTO_BED_LEVELING_UBL + #define MESH_EDIT_GFX_OVERLAY + #endif + + // Probe pin + #if ENABLED(ENDER_AIO_PROBE_CONNECTED_TO_Z_MIN_PORT) + #define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN + + #if ANY(ENDER_AIO_BLTOUCH, ENDER_AIO_MICROPROBE_V1) + #define ENDER_AIO_Z_MIN_ENDSTOP_HIT_STATE HIGH + #else // MicroProbe V2 + #define ENDER_AIO_Z_MIN_ENDSTOP_HIT_STATE LOW + #endif + + #endif + + #if ENABLED(ENDER_AIO_BLTOUCH) + #define BLTOUCH + + #ifndef ENDER_AIO_Z_MIN_ENDSTOP_HIT_STATE + #define ENDER_AIO_Z_MIN_ENDSTOP_HIT_STATE HIGH + #endif + + #if ENABLED(ENDER_AIO_BLTOUCH_MOUNT_CREALITY_METAL) + #define ENDER_AIO_NOZZLE_TO_PROBE_OFFSET { -40, -9, -0.0 } + #elif ENABLED(ENDER_AIO_BLTOUCH_MOUNT_DUDE_IN_A_BOX) + #define ENDER_AIO_NOZZLE_TO_PROBE_OFFSET { -43, -10, -0.0 } + #elif defined(ENDER_AIO_CUSTOM_BLTOUCH_MOUNT) + #define ENDER_AIO_NOZZLE_TO_PROBE_OFFSET ENDER_AIO_CUSTOM_BLTOUCH_MOUNT + #endif + + #elif ENABLED(ENDER_AIO_MICROPROBE) + #define PROBE_ENABLE_DISABLE + + #ifndef ENDER_AIO_Z_MIN_ENDSTOP_HIT_STATE + #define ENDER_AIO_Z_MIN_ENDSTOP_HIT_STATE TERN(ENDER_AIO_MICROPROBE_V1, HIGH, LOW) + #endif + + #if ENABLED(ENDER_AIO_MICROPROBE_V1) + #define BIQU_MICROPROBE_V1 + #else // MicroProbe V2 + #define BIQU_MICROPROBE_V2 + #endif + + #if defined(ENDER_AIO_CUSTOM_MICROPROBE_MOUNT) + #define ENDER_AIO_NOZZLE_TO_PROBE_OFFSET ENDER_AIO_CUSTOM_MICROPROBE_MOUNT + #endif + #endif + +#else // No Probe + #define MESH_BED_LEVELING + #define ENDER_AIO_Z_MIN_ENDSTOP_HIT_STATE HIGH +#endif // ENDER_AIO_HAS_PROBE + +//=========================================================================== +//========================= LCD / TFT / Controller ========================== +//=========================================================================== + +#if ENABLED(ENDER_AIO_DISPLAY_STOCK) + #define ENDER_AIO_SINGLE_LCD_EXP_CONNECTION 1 +#elif ENABLED(ENDER_AIO_DISPLAY_BTT_TFT35_E3_TFT) + #define SERIAL_PORT_2 ENDER_AIO_SERIAL_PORT_2 // Only enable TFT serial port when needed + #define EP_BABYSTEPPING // M293/M294 babystepping with EMERGENCY_PARSER support +#endif + +#if ENABLED(ENDER_AIO_USES_BOTH_EXP_CABLES) + #if ENABLED(ENDER_AIO_SINGLE_LCD_EXP_CONNECTION) + #error "ENDER_AIO_USES_BOTH_EXP_CABLES is incompatible with enabled LCD." + #elif ENABLED(ENDER_AIO_SINGLE_BOARD_EXP_CONNECTION) + #error "ENDER_AIO_USES_BOTH_EXP_CABLES is incompatible with enabled motherboard." + #endif +#endif + +#if ENABLED(ENDER_AIO_SINGLE_LCD_EXP_CONNECTION) && DISABLED(ENDER_AIO_USES_BOTH_EXP_CABLES) + #define CR10_STOCKDISPLAY + #define ENDER_AIO_SDCARD_CONNECTION ONBOARD +#else + #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER + #define ENDER_AIO_SDCARD_CONNECTION LCD +#endif + +// Boot & Status Screens +#if ENABLED(ENDER_AIO_SHOW_CUSTOM_BOOTSCREEN) + #define SHOW_CUSTOM_BOOTSCREEN +#endif + +#if ENABLED(ENDER_AIO_STATUS_SCREEN_IMAGE) + #define CUSTOM_STATUS_SCREEN_IMAGE +#endif + +//=========================================================================== +//============================== Custom Menus =============================== +//=========================================================================== + +// Sheet Profiles Menu +#if ALL(ENDER_AIO_SHEET_PROFILES_MENU, ENDER_AIO_HAS_PROBE) + #define CUSTOM_MENU_CONFIG + + #if defined(ENDER_AIO_SHEET_1_DESC) && defined(ENDER_AIO_SHEET_1_OFFSET) + #define CONFIG_MENU_ITEM_1_DESC ENDER_AIO_SHEET_1_DESC ": " STRINGIFY(ENDER_AIO_SHEET_1_OFFSET) + #define CONFIG_MENU_ITEM_1_GCODE "M851 Z" STRINGIFY(ENDER_AIO_SHEET_1_OFFSET) + #define CONFIG_MENU_ITEM_1_CONFIRM + #endif + + #if defined(ENDER_AIO_SHEET_2_DESC) && defined(ENDER_AIO_SHEET_2_OFFSET) + #define CONFIG_MENU_ITEM_2_DESC ENDER_AIO_SHEET_2_DESC ": " STRINGIFY(ENDER_AIO_SHEET_2_OFFSET) + #define CONFIG_MENU_ITEM_2_GCODE "M851 Z" STRINGIFY(ENDER_AIO_SHEET_2_OFFSET) + #define CONFIG_MENU_ITEM_2_CONFIRM + #endif + + #if defined(ENDER_AIO_SHEET_3_DESC) && defined(ENDER_AIO_SHEET_3_OFFSET) + #define CONFIG_MENU_ITEM_3_DESC ENDER_AIO_SHEET_3_DESC ": " STRINGIFY(ENDER_AIO_SHEET_3_OFFSET) + #define CONFIG_MENU_ITEM_3_GCODE "M851 Z" STRINGIFY(ENDER_AIO_SHEET_3_OFFSET) + #define CONFIG_MENU_ITEM_3_CONFIRM + #endif + + #if defined(ENDER_AIO_SHEET_4_DESC) && defined(ENDER_AIO_SHEET_4_OFFSET) + #define CONFIG_MENU_ITEM_4_DESC ENDER_AIO_SHEET_4_DESC ": " STRINGIFY(ENDER_AIO_SHEET_4_OFFSET) + #define CONFIG_MENU_ITEM_4_GCODE "M851 Z" STRINGIFY(ENDER_AIO_SHEET_4_OFFSET) + #define CONFIG_MENU_ITEM_4_CONFIRM + #endif + + #if defined(ENDER_AIO_SHEET_5_DESC) && defined(ENDER_AIO_SHEET_5_OFFSET) + #define CONFIG_MENU_ITEM_5_DESC ENDER_AIO_SHEET_5_DESC ": " STRINGIFY(ENDER_AIO_SHEET_5_OFFSET) + #define CONFIG_MENU_ITEM_5_GCODE "M851 Z" STRINGIFY(ENDER_AIO_SHEET_5_OFFSET) + #define CONFIG_MENU_ITEM_5_CONFIRM + #endif + + #if defined(ENDER_AIO_SHEET_6_DESC) && defined(ENDER_AIO_SHEET_6_OFFSET) + #define CONFIG_MENU_ITEM_6_DESC ENDER_AIO_SHEET_6_DESC ": " STRINGIFY(ENDER_AIO_SHEET_6_OFFSET) + #define CONFIG_MENU_ITEM_6_GCODE "M851 Z" STRINGIFY(ENDER_AIO_SHEET_6_OFFSET) + #define CONFIG_MENU_ITEM_6_CONFIRM + #endif + + #if defined(ENDER_AIO_SHEET_7_DESC) && defined(ENDER_AIO_SHEET_7_OFFSET) + #define CONFIG_MENU_ITEM_7_DESC ENDER_AIO_SHEET_7_DESC ": " STRINGIFY(ENDER_AIO_SHEET_7_OFFSET) + #define CONFIG_MENU_ITEM_7_GCODE "M851 Z" STRINGIFY(ENDER_AIO_SHEET_7_OFFSET) + #define CONFIG_MENU_ITEM_7_CONFIRM + #endif + + #if defined(ENDER_AIO_SHEET_8_DESC) && defined(ENDER_AIO_SHEET_8_OFFSET) + #define CONFIG_MENU_ITEM_8_DESC ENDER_AIO_SHEET_8_DESC ": " STRINGIFY(ENDER_AIO_SHEET_8_OFFSET) + #define CONFIG_MENU_ITEM_8_GCODE "M851 Z" STRINGIFY(ENDER_AIO_SHEET_8_OFFSET) + #define CONFIG_MENU_ITEM_8_CONFIRM + #endif + + #if defined(ENDER_AIO_SHEET_9_DESC) && defined(ENDER_AIO_SHEET_9_OFFSET) + #define CONFIG_MENU_ITEM_9_DESC ENDER_AIO_SHEET_9_DESC ": " STRINGIFY(ENDER_AIO_SHEET_9_OFFSET) + #define CONFIG_MENU_ITEM_9_GCODE "M851 Z" STRINGIFY(ENDER_AIO_SHEET_9_OFFSET) + #define CONFIG_MENU_ITEM_9_CONFIRM + #endif + + #if defined(ENDER_AIO_SHEET_10_DESC) && defined(ENDER_AIO_SHEET_10_OFFSET) + #define CONFIG_MENU_ITEM_10_DESC ENDER_AIO_SHEET_10_DESC ": " STRINGIFY(ENDER_AIO_SHEET_10_OFFSET) + #define CONFIG_MENU_ITEM_10_GCODE "M851 Z" STRINGIFY(ENDER_AIO_SHEET_10_OFFSET) + #define CONFIG_MENU_ITEM_10_CONFIRM + #endif +#endif + +/** + * Calibration Menu + */ +//#define ENDER_AIO_CALIBRATION_MENU +#if ENABLED(ENDER_AIO_CALIBRATION_MENU) + #define CUSTOM_MENU_MAIN + + #if ALL(ENDER_AIO_HAS_PROBE, ENDER_AIO_HAS_FIVE_DRIVERS, ENDER_AIO_DUAL_Z_KIT) + #define MAIN_MENU_ITEM_1_DESC "Tram X Gantry" + #define MAIN_MENU_ITEM_1_GCODE "M117 " MAIN_MENU_ITEM_1_DESC "\nG34\nM0 " MAIN_MENU_ITEM_1_DESC " Complete" + #define MAIN_MENU_ITEM_1_CONFIRM // Show a confirmation dialog before this action + + #define MAIN_MENU_ITEM_2_DESC "Update Firmware" + #define MAIN_MENU_ITEM_2_GCODE "M997" + #define MAIN_MENU_ITEM_2_CONFIRM + #else + #define MAIN_MENU_ITEM_1_DESC "Update Firmware" + #define MAIN_MENU_ITEM_1_GCODE "M997" + #define MAIN_MENU_ITEM_1_CONFIRM + #endif +#endif diff --git a/Marlin/src/inc/Ender_AIO_SanityCheck.h b/Marlin/src/inc/Ender_AIO_SanityCheck.h new file mode 100644 index 0000000000..263792ae94 --- /dev/null +++ b/Marlin/src/inc/Ender_AIO_SanityCheck.h @@ -0,0 +1,195 @@ +#pragma once +//=========================================================================== +//========================== DO NOT EDIT THIS FILE ========================== +//=========================================================================== + +/** + * Ender_AIO_SanityCheck.h + * Validate Ender_AIO_Configuration.h options at compile-time. + */ +#define CONFIGURATION_H_VERSION 02010300 +#define ENDER_AIO_VERSION 20240130 + +//=========================================================================== +//=============================== Motherboard =============================== +//=========================================================================== + +#if MANY(ENDER_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0, ENDER_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0_1, ENDER_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V2_0, ENDER_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V1_2, ENDER_AIO_MOTHERBOARD_BTT_SKR_E3_TURBO, ENDER_AIO_MOTHERBOARD_BTT_SKR_V3_0, ENDER_AIO_MOTHERBOARD_BTT_SKR_V3_0_EZ) + #error "Only one ENDER_AIO_MOTHERBOARD option can be enabled at a time." +#elif NONE(ENDER_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0, ENDER_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0_1, ENDER_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V2_0, ENDER_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V1_2, ENDER_AIO_MOTHERBOARD_BTT_SKR_E3_TURBO, ENDER_AIO_MOTHERBOARD_BTT_SKR_V3_0, ENDER_AIO_MOTHERBOARD_BTT_SKR_V3_0_EZ) + #error "Invalid ENDER_AIO_MOTHERBOARD option." +#endif + +//=========================================================================== +//============================== Input Shaping ============================== +//=========================================================================== + +#if ENABLED(ENDER_AIO_INPUT_SHAPING) + #ifndef ENDER_AIO_SHAPING_FREQ_X + #error "ENDER_AIO_SHAPING_FREQ_X is invalid or not defined." + #elif !defined(ENDER_AIO_SHAPING_FREQ_Y) + #error "ENDER_AIO_SHAPING_FREQ_Y is invalid or not defined." + #elif !defined(ENDER_AIO_SHAPING_ZETA_X) + #error "ENDER_AIO_SHAPING_ZETA_X is invalid or not defined." + #elif !defined(ENDER_AIO_SHAPING_ZETA_Y) + #error "ENDER_AIO_SHAPING_ZETA_Y is invalid or not defined." + #endif +#endif + +//=========================================================================== +//================================ Extruder ================================= +//=========================================================================== + +#if MANY(ENDER_AIO_EXTRUDER_STOCK, ENDER_AIO_EXTRUDER_WINSINN_DUAL_GEAR, ENDER_AIO_EXTRUDER_BONDTECH_BMG, ENDER_AIO_EXTRUDER_TL_DDB_V2S) + #error "Only one ENDER_AIO_EXTRUDER option can be enabled at a time." +#elif NONE(ENDER_AIO_EXTRUDER_STOCK, ENDER_AIO_EXTRUDER_WINSINN_DUAL_GEAR, ENDER_AIO_EXTRUDER_BONDTECH_BMG, ENDER_AIO_EXTRUDER_TL_DDB_V2) + #error "Invalid ENDER_AIO_EXTRUDER option." +#endif + +#if NONE(ENDER_AIO_EXTRUDER_BONDTECH_BMG, ENDER_AIO_EXTRUDER_TL_DDB_V2) && ENABLED(ENDER_AIO_EXTRUDER_MOTOR_LDO_0_9_SLIM_POWER) + #error "ENDER_AIO_EXTRUDER_MOTOR_LDO_0_9_SLIM_POWER is not supported on enabled extruder." +#endif + +//=========================================================================== +//========================= Thermal & PID Settings ========================== +//=========================================================================== + +#if ENABLED(ENDER_AIO_CUSTOM_HOTEND_PID) + #ifndef ENDER_AIO_DEFAULT_Kp + #error "ENDER_AIO_DEFAULT_Kp is invalid or not defined." + #elif !defined(ENDER_AIO_DEFAULT_Ki) + #error "ENDER_AIO_DEFAULT_Ki is invalid or not defined." + #elif !defined(ENDER_AIO_DEFAULT_Kd) + #error "ENDER_AIO_DEFAULT_Kd is invalid or not defined." + #endif +#endif + +#if ENABLED(ENDER_AIO_CUSTOM_BED_PID) + #ifndef ENDER_AIO_DEFAULT_bedKp + #error "ENDER_AIO_DEFAULT_bedKp is invalid or not defined." + #elif !defined(ENDER_AIO_DEFAULT_bedKi) + #error "ENDER_AIO_DEFAULT_bedKi is invalid or not defined." + #elif !defined(ENDER_AIO_DEFAULT_bedKd) + #error "ENDER_AIO_DEFAULT_bedKd is invalid or not defined." + #endif +#endif + +#if ALL(ENDER_AIO_HOTEND_MPCTEMP, ENDER_AIO_CUSTOM_HOTEND_PID) + #error "ENDER_AIO_HOTEND_MPCTEMP and ENDER_AIO_CUSTOM_HOTEND_PID cannot be enabled at the same time." +#endif + +#if ENABLED(ENDER_AIO_CUSTOM_HOTEND_MPCTEMP) + #if DISABLED(ENDER_AIO_HOTEND_MPCTEMP) + #error "ENDER_AIO_CUSTOM_HOTEND_MPCTEMP requires ENDER_AIO_HOTEND_MPCTEMP." + #elif !defined(ENDER_AIO_CUSTOM_MPC_HEATER_POWER) + #error "ENDER_AIO_CUSTOM_MPC_HEATER_POWER is invalid or not defined." + #elif !defined(ENDER_AIO_CUSTOM_MPC_BLOCK_HEAT_CAPACITY) + #error "ENDER_AIO_CUSTOM_MPC_BLOCK_HEAT_CAPACITY is invalid or not defined." + #elif !defined(ENDER_AIO_CUSTOM_MPC_SENSOR_RESPONSIVENESS) + #error "ENDER_AIO_CUSTOM_MPC_SENSOR_RESPONSIVENESS is invalid or not defined." + #elif !defined(ENDER_AIO_CUSTOM_MPC_AMBIENT_XFER_COEFF) + #error "ENDER_AIO_CUSTOM_MPC_AMBIENT_XFER_COEFF is invalid or not defined." + #elif !defined(ENDER_AIO_CUSTOM_MPC_AMBIENT_XFER_COEFF_FAN255) + #error "ENDER_AIO_CUSTOM_MPC_AMBIENT_XFER_COEFF_FAN255 is invalid or not defined." + #elif !defined(ENDER_AIO_CUSTOM_FILAMENT_HEAT_CAPACITY_PERMM) + #error "ENDER_AIO_CUSTOM_FILAMENT_HEAT_CAPACITY_PERMM is invalid or not defined." + #endif +#endif + +//=========================================================================== +//========================== Probes / Bed Leveling ========================== +//=========================================================================== + +#if MANY(ENDER_AIO_BLTOUCH, ENDER_AIO_MICROPROBE) + #error "Only one probe option can be enabled at a time." +#endif + +#if ENABLED(ENDER_AIO_HAS_PROBE) + #if MANY(ENDER_AIO_AUTO_BED_LEVELING_BILINEAR, ENDER_AIO_AUTO_BED_LEVELING_UBL) + #error "Only one ENDER_AIO_AUTO_BED_LEVELING option can be enabled at a time." + #elif NONE(ENDER_AIO_AUTO_BED_LEVELING_BILINEAR, ENDER_AIO_AUTO_BED_LEVELING_UBL) + #error "Invalid ENDER_AIO_AUTO_BED_LEVELING option." + #endif +#elif ENABLED(ENDER_AIO_BLTOUCH) + #if MANY(ENDER_AIO_BLTOUCH_MOUNT_CREALITY_METAL, ENDER_AIO_BLTOUCH_MOUNT_DUDE_IN_A_BOX) || (ANY(ENDER_AIO_BLTOUCH_MOUNT_CREALITY_METAL, ENDER_AIO_BLTOUCH_MOUNT_DUDE_IN_A_BOX) && defined(ENDER_AIO_CUSTOM_BLTOUCH_MOUNT)) + #error "Only one ENDER_AIO_BLTOUCH_MOUNT option can be enabled at a time." + #elif NONE(ENDER_AIO_BLTOUCH_MOUNT_CREALITY_METAL, ENDER_AIO_BLTOUCH_MOUNT_DUDE_IN_A_BOX) && !defined(ENDER_AIO_CUSTOM_BLTOUCH_MOUNT) + #error "Invalid ENDER_AIO_BLTOUCH_MOUNT option." + #endif +#elif ENABLED(ENDER_AIO_MICROPROBE) + #ifndef ENDER_AIO_CUSTOM_MICROPROBE_MOUNT + #error "ENDER_AIO_MICROPROBE requires ENDER_AIO_CUSTOM_MICROPROBE_MOUNT." + #endif +#endif + +#if ENABLED(ENDER_AIO_PROBE_CONNECTED_TO_Z_MIN_PORT) && DISABLED(ENDER_AIO_HAS_PROBE) + #error "ENDER_AIO_PROBE_CONNECTED_TO_Z_MIN_PORT requires a probe." +#endif + +//=========================================================================== +//========================= LCD / TFT / Controller ========================== +//=========================================================================== + +#if MANY(ENDER_AIO_DISPLAY_STOCK, ENDER_AIO_DISPLAY_BTT_TFT35_E3_TFT) + #error "Only one ENDER_AIO_DISPLAY option can be enabled at a time." +#elif NONE(ENDER_AIO_DISPLAY_STOCK, ENDER_AIO_DISPLAY_BTT_TFT35_E3_TFT) + #error "Invalid ENDER_AIO_DISPLAY option." +#endif + +#ifndef ENDER_AIO_LCD_LANGUAGE + #error "Invalid ENDER_AIO_LCD_LANGUAGE option." +#endif + +//=========================================================================== +//=========================== Sheet Profiles Menu =========================== +//=========================================================================== + +#if ENABLED(ENDER_AIO_SHEET_PROFILES_MENU) && DISABLED(ENDER_AIO_HAS_PROBE) + #error "ENDER_AIO_SHEET_PROFILES_MENU requires a probe." +#else + // Description is enabled, but no offset + #if defined(ENDER_AIO_SHEET_1_DESC) && !defined(ENDER_AIO_SHEET_1_OFFSET) + #error "ENDER_AIO_SHEET_1_OFFSET is required when ENDER_AIO_SHEET_1_DESC is enabled." + #elif defined(ENDER_AIO_SHEET_2_DESC) && !defined(ENDER_AIO_SHEET_2_OFFSET) + #error "ENDER_AIO_SHEET_2_OFFSET is required when ENDER_AIO_SHEET_2_DESC is enabled." + #elif defined(ENDER_AIO_SHEET_3_DESC) && !defined(ENDER_AIO_SHEET_3_OFFSET) + #error "ENDER_AIO_SHEET_3_OFFSET is required when ENDER_AIO_SHEET_3_DESC is enabled." + #elif defined(ENDER_AIO_SHEET_4_DESC) && !defined(ENDER_AIO_SHEET_4_OFFSET) + #error "ENDER_AIO_SHEET_4_OFFSET is required when ENDER_AIO_SHEET_4_DESC is enabled." + #elif defined(ENDER_AIO_SHEET_5_DESC) && !defined(ENDER_AIO_SHEET_5_OFFSET) + #error "ENDER_AIO_SHEET_5_OFFSET is required when ENDER_AIO_SHEET_5_DESC is enabled." + #elif defined(ENDER_AIO_SHEET_6_DESC) && !defined(ENDER_AIO_SHEET_6_OFFSET) + #error "ENDER_AIO_SHEET_6_OFFSET is required when ENDER_AIO_SHEET_6_DESC is enabled." + #elif defined(ENDER_AIO_SHEET_7_DESC) && !defined(ENDER_AIO_SHEET_7_OFFSET) + #error "ENDER_AIO_SHEET_7_OFFSET is required when ENDER_AIO_SHEET_7_DESC is enabled." + #elif defined(ENDER_AIO_SHEET_8_DESC) && !defined(ENDER_AIO_SHEET_8_OFFSET) + #error "ENDER_AIO_SHEET_8_OFFSET is required when ENDER_AIO_SHEET_8_DESC is enabled." + #elif defined(ENDER_AIO_SHEET_9_DESC) && !defined(ENDER_AIO_SHEET_9_OFFSET) + #error "ENDER_AIO_SHEET_9_OFFSET is required when ENDER_AIO_SHEET_9_DESC is enabled." + #elif defined(ENDER_AIO_SHEET_10_DESC) && !defined(ENDER_AIO_SHEET_10_OFFSET) + #error "ENDER_AIO_SHEET_10_OFFSET is required when ENDER_AIO_SHEET_10_DESC is enabled." + #endif + + // Offset is enabled, but no description + #if defined(ENDER_AIO_SHEET_1_OFFSET) && !defined(ENDER_AIO_SHEET_1_DESC) + #error "ENDER_AIO_SHEET_1_DESC is required when ENDER_AIO_SHEET_1_OFFSET is enabled." + #elif defined(ENDER_AIO_SHEET_2_OFFSET) && !defined(ENDER_AIO_SHEET_2_DESC) + #error "ENDER_AIO_SHEET_2_DESC is required when ENDER_AIO_SHEET_2_OFFSET is enabled." + #elif defined(ENDER_AIO_SHEET_3_OFFSET) && !defined(ENDER_AIO_SHEET_3_DESC) + #error "ENDER_AIO_SHEET_3_DESC is required when ENDER_AIO_SHEET_3_OFFSET is enabled." + #elif defined(ENDER_AIO_SHEET_4_OFFSET) && !defined(ENDER_AIO_SHEET_4_DESC) + #error "ENDER_AIO_SHEET_4_DESC is required when ENDER_AIO_SHEET_4_OFFSET is enabled." + #elif defined(ENDER_AIO_SHEET_5_OFFSET) && !defined(ENDER_AIO_SHEET_5_DESC) + #error "ENDER_AIO_SHEET_5_DESC is required when ENDER_AIO_SHEET_5_OFFSET is enabled." + #elif defined(ENDER_AIO_SHEET_6_OFFSET) && !defined(ENDER_AIO_SHEET_6_DESC) + #error "ENDER_AIO_SHEET_6_DESC is required when ENDER_AIO_SHEET_6_OFFSET is enabled." + #elif defined(ENDER_AIO_SHEET_7_OFFSET) && !defined(ENDER_AIO_SHEET_7_DESC) + #error "ENDER_AIO_SHEET_7_DESC is required when ENDER_AIO_SHEET_7_OFFSET is enabled." + #elif defined(ENDER_AIO_SHEET_8_OFFSET) && !defined(ENDER_AIO_SHEET_8_DESC) + #error "ENDER_AIO_SHEET_8_DESC is required when ENDER_AIO_SHEET_8_OFFSET is enabled." + #elif defined(ENDER_AIO_SHEET_9_OFFSET) && !defined(ENDER_AIO_SHEET_9_DESC) + #error "ENDER_AIO_SHEET_9_DESC is required when ENDER_AIO_SHEET_9_OFFSET is enabled." + #elif defined(ENDER_AIO_SHEET_10_OFFSET) && !defined(ENDER_AIO_SHEET_10_DESC) + #error "ENDER_AIO_SHEET_10_DESC is required when ENDER_AIO_SHEET_10_OFFSET is enabled." + #endif +#endif diff --git a/Marlin/src/inc/Ender_AIO_Warnings.cpp b/Marlin/src/inc/Ender_AIO_Warnings.cpp new file mode 100644 index 0000000000..245daf6fe5 --- /dev/null +++ b/Marlin/src/inc/Ender_AIO_Warnings.cpp @@ -0,0 +1,51 @@ +//=========================================================================== +//========================== DO NOT EDIT THIS FILE ========================== +//=========================================================================== + +/** + * Ender_AIO_Warnings.cpp + * Test Ender AIO configuration values and give warnings at compile-time. + */ +#include "MarlinConfig.h" +#define ENDER_AIO_VERSION 20240130 + +// +// Warnings! Located here so they will appear just once in the build output. +// + +/** + * Ender AIO Warnings / Reminders + */ +#ifndef NO_ENDER_AIO_WARNINGS + +//=========================================================================== +//============================= Filament Runout ============================= +//=========================================================================== + +#if ENABLED(ENDER_AIO_BTT_SMART_FILAMENT_SENSOR_V2) + + /** + * BTT SFS V2.0 Wiring Colors + * + * Switch Sensor Cable: Red wire -> VCC, Blue wire -> SENSOR + * Motion Sensor Cable: Black wire -> GND, Green wire -> SENSOR + */ + #if ANY(ENDER_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0, ENDER_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V2_0) + #warning "Connect BTT SFS V2.0 Switch Sensor cable to E0-STOP: Red wire -> +5V, Blue wire -> PC15." + #warning "Connect BTT SFS V2.0 Motion Sensor cable to PS-ON: Black wire -> GND, Green wire -> PC13." + #elif ENABLED(ENDER_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V1_2) + #warning "Connect BTT SFS V2.0 Switch Sensor cable to E0-STOP: Red wire -> +5V, Blue wire -> PC15." + #warning "Connect BTT SFS V2.0 Motion Sensor cable to PT-DET: Black wire -> GND, Green wire -> PC12." + #elif ENABLED(ENDER_AIO_MOTHERBOARD_BTT_SKR_MINI_E3_V3_0_1) + #warning "Connect BTT SFS V2.0 Switch Sensor cable to E0-STOP: Red wire -> +5V, Blue wire -> PC15." + #warning "Connect BTT SFS V2.0 Motion Sensor cable to PS-ON: Black wire -> GND, Green wire -> PC14." + #elif ENABLED(ENDER_AIO_MOTHERBOARD_BTT_SKR_E3_TURBO) + #warning "Connect BTT SFS V2.0 Switch Sensor cable to E0-STOP: Red wire -> +5V, Blue wire -> P1_26." + #warning "Connect BTT SFS V2.0 Motion Sensor cable to E1-STOP: Black wire -> GND, Green wire -> P1_25." + #elif ANY(ENDER_AIO_MOTHERBOARD_BTT_SKR_V3_0, ENDER_AIO_MOTHERBOARD_BTT_SKR_V3_0_EZ) + #warning "Connect BTT SFS V2.0 Switch Sensor cable to E0DET: Red wire -> +5V, Blue wire -> PC2." + #warning "Connect BTT SFS V2.0 Motion Sensor cable to E1DET: Black wire -> GND, Green wire -> PA0." + #endif +#endif + +#endif // NO_ENDER_AIO_WARNINGS diff --git a/Marlin/src/inc/MarlinConfigPre.h b/Marlin/src/inc/MarlinConfigPre.h index c2191ab1b7..be84c867fd 100644 --- a/Marlin/src/inc/MarlinConfigPre.h +++ b/Marlin/src/inc/MarlinConfigPre.h @@ -36,6 +36,13 @@ #include "../core/macros.h" #include "../core/boards.h" + +// Ender_AIO files +#include "../../Ender_AIO_Configuration.h" +#include "Ender_AIO_Changes.h" +#include "Ender_AIO_SanityCheck.h" +#include "Ender_AIO_Conditionals.h" + #include "../../Configuration.h" #ifdef CUSTOM_VERSION_FILE diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index e878c24631..b6a53f8fe5 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -25,7 +25,7 @@ * Release version. Leave the Marlin version or apply a custom scheme. */ #ifndef SHORT_BUILD_VERSION - #define SHORT_BUILD_VERSION "bugfix-2.1.x" + #define SHORT_BUILD_VERSION "Ender AIO 2.1.x" #endif /** diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index af32d8c119..ff140c1774 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -619,7 +619,7 @@ #elif MB(BTT_SKR_MINI_E3_V1_0) #include "stm32f1/pins_BTT_SKR_MINI_E3_V1_0.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple #elif MB(BTT_SKR_MINI_E3_V1_2) - #include "stm32f1/pins_BTT_SKR_MINI_E3_V1_2.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple + #include "stm32f1/pins_BTT_SKR_MINI_E3_V1_2.h" // STM32F1 env:STM32F103RC_btt #elif MB(BTT_SKR_MINI_E3_V2_0) #include "stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h" // STM32F1 env:STM32F103RC_btt env:STM32F103RC_btt_USB env:STM32F103RE_btt env:STM32F103RE_btt_USB env:STM32F103RC_btt_maple env:STM32F103RC_btt_USB_maple env:STM32F103RE_btt_maple env:STM32F103RE_btt_USB_maple #elif MB(BTT_SKR_MINI_MZ_V1_0) diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h index 4cfd75088f..e193b01fd4 100644 --- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h +++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3_common.h @@ -357,7 +357,7 @@ #define FORCE_SOFT_SPI #else - #error "Only CR10_STOCKDISPLAY, LCD_FOR_MELZI, ZONESTAR_LCD, ENDER2_STOCKDISPLAY, MKS_MINI_12864, TFTGLCD_PANEL_(SPI|I2C), FYSETC_MINI_12864_2_1, MKS_MINI_12864_V3, and BTT_MINI_12864 are currently supported on the BIGTREE_SKR_MINI_E3." + //#error "Only CR10_STOCKDISPLAY, LCD_FOR_MELZI, ZONESTAR_LCD, ENDER2_STOCKDISPLAY, MKS_MINI_12864, TFTGLCD_PANEL_(SPI|I2C), FYSETC_MINI_12864_2_1, MKS_MINI_12864_V3, and BTT_MINI_12864 are currently supported on the BIGTREE_SKR_MINI_E3." #endif #endif // HAS_WIRED_LCD diff --git a/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h b/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h index ba1d06f689..24b0c57598 100644 --- a/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h +++ b/Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h @@ -378,7 +378,7 @@ #define LCD_BACKLIGHT_PIN -1 #else - #error "Only CR10_STOCKDISPLAY, ZONESTAR_LCD, ENDER2_STOCKDISPLAY, MKS_MINI_12864, FYSETC_MINI_12864_2_1, and TFTGLCD_PANEL_(SPI|I2C) are currently supported on the BIGTREE_SKR_MINI_E3." + //#error "Only CR10_STOCKDISPLAY, ZONESTAR_LCD, ENDER2_STOCKDISPLAY, MKS_MINI_12864, FYSETC_MINI_12864_2_1, and TFTGLCD_PANEL_(SPI|I2C) are currently supported on the BIGTREE_SKR_MINI_E3." #endif #endif // SKR_MINI_SCREEN_ADAPTER diff --git a/README.md b/README.md index ac496aac21..cefe899fd3 100644 --- a/README.md +++ b/README.md @@ -1,154 +1,42 @@ -

MarlinFirmware's logo

+

Creality Ender-3

-

Marlin 3D Printer Firmware

+

Creality Ender-3 AIO Marlin Firmware

- GPL-V3.0 License - Contributors - Last Release Date - CI Status - GitHub Sponsors + GPL-V3.0 License + Contributors + Last Commit Date + CI Status + GitHub Sponsors
- Follow MarlinFirmware on Mastodon + Follow thisiskeithb on Twitter + Follow thisiskeithb on Mastodon

-Additional documentation can be found at the [Marlin Home Page](https://marlinfw.org/). -Please test this firmware and let us know if it misbehaves in any way. Volunteers are standing by! +## Configuring Ender-3 All-in-One Firmware -## Marlin 2.1 Bugfix Branch +To configure this firmware, enable options in [`Ender_AIO_Configuration.h`](Marlin/Ender_AIO_Configuration.h). No other config file editing is required! -__Not for production use. Use with caution!__ +## Building Ender-3 All-in-One Firmware -Marlin 2.1 takes this popular RepRap firmware to the next level by adding support for much faster 32-bit and ARM-based boards while improving support for 8-bit AVR boards. Read about Marlin's decision to use a "Hardware Abstraction Layer" below. +To build this firmware, you'll need [Visual Studio Code](https://code.visualstudio.com/) with [PlatformIO](https://docs.platformio.org/en/latest/integration/ide/vscode.html#platformio-ide-for-vscode). Detailed setup instructions can be found in the [Installing Marlin (PlatformIO with VSCode)](https://marlinfw.org/docs/basics/install_platformio_vscode.html) guide. +## Supported Hardware Upgrades -This branch is for patches to the latest 2.1.x release version. Periodically this branch will form the basis for the next minor 2.1.x release. +- **Motherboards**: BigTreeTech SKR Mini E3 V3.x & V2, E3 Turbo, SKR V3.0 & V3.0 EZ +- **Drivers**: TMC2209s on X, Y, Z, and E +- **Displays**: Stock LCD and BigTreeTech TFT35 E3 +- **Extruder**: [WINSINN Dual Gear Extruder](https://www.amazon.com/dp/B08D9CNHVN), [Bondtech BMG Extruder](https://www.bondtech.se/product/creality-cr-10-kit/), and [Trianglelab DDB V2.0 Extruder](https://www.amazon.com/dp/B08KP189KN) +- **Filament Runout**: Basic runout switch and [BigTreeTech SFS V2.0](https://biqu.equipment/products/btt-sfs-v2-0-smart-filament-sensor) +- **Probes**: [BLTouch V3.1](https://www.amazon.com/dp/B087CQ3RLG), [BIQU MicroProbe](https://biqu.equipment/products/microprobe-v1-0-for-b1-printers-h2-extruders-ender-3?variant=40223870287970) +- **Dual Z**: [Ender 3 Dual Z-Axis Upgrade Kit](https://www.amazon.com/dp/B09N8QQDSP) -Download earlier versions of Marlin on the [Releases page](https://github.com/MarlinFirmware/Marlin/releases). +## Credits -## Example Configurations +If you find this project helpful, please consider donating! -Before you can build Marlin for your machine you'll need a configuration for your specific hardware. Upon request, your vendor will be happy to provide you with the complete source code and configurations for your machine, but you'll need to get updated configuration files if you want to install a newer version of Marlin. Fortunately, Marlin users have contributed dozens of tested configurations to get you started. Visit the [MarlinFirmware/Configurations](https://github.com/MarlinFirmware/Configurations) repository to find the right configuration for your hardware. - -## Building Marlin 2.1 - -To build and upload Marlin you will use one of these tools: - -- The free [Visual Studio Code](https://code.visualstudio.com/download) using the [Auto Build Marlin](https://marlinfw.org/docs/basics/auto_build_marlin.html) extension. -- The free [Arduino IDE](https://www.arduino.cc/en/main/software) : See [Building Marlin with Arduino](https://marlinfw.org/docs/basics/install_arduino.html) -- You can also use VSCode with devcontainer : See [Installing Marlin (VSCode devcontainer)](http://marlinfw.org/docs/basics/install_devcontainer_vscode.html). - -Marlin is optimized to build with the **PlatformIO IDE** extension for **Visual Studio Code**. You can still build Marlin with **Arduino IDE**, and we hope to improve the Arduino build experience, but at this time PlatformIO is the better choice. - -## Hardware Abstraction Layer (HAL) - -Marlin includes an abstraction layer to provide a common API for all the platforms it targets. This allows Marlin code to address the details of motion and user interface tasks at the lowest and highest levels with no system overhead, tying all events directly to the hardware clock. - -Every new HAL opens up a world of hardware. At this time we need HALs for RP2040 and the Duet3D family of boards. A HAL that wraps an RTOS is an interesting concept that could be explored. Did you know that Marlin includes a Simulator that can run on Windows, macOS, and Linux? Join the Discord to help move these sub-projects forward! - -## 8-Bit AVR Boards - -A core tenet of this project is to keep supporting 8-bit AVR boards while also maintaining a single codebase that applies equally to all machines. We want casual hobbyists to benefit from the community's innovations as much as possible just as much as those with fancier machines. Plus, those old AVR-based machines are often the best for your testing and feedback! - -### Supported Platforms - - Platform|MCU|Example Boards - --------|---|------- - [Arduino AVR](https://www.arduino.cc/)|ATmega|RAMPS, Melzi, RAMBo - [Teensy++ 2.0](https://www.microchip.com/en-us/product/AT90USB1286)|AT90USB1286|Printrboard - [Arduino Due](https://www.arduino.cc/en/Guide/ArduinoDue)|SAM3X8E|RAMPS-FD, RADDS, RAMPS4DUE - [ESP32](https://github.com/espressif/arduino-esp32)|ESP32|FYSETC E4, E4d@BOX, MRR - [LPC1768](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc1700-cortex-m3/512-kb-flash-64-kb-sram-ethernet-usb-lqfp100-package:LPC1768FBD100)|ARM® Cortex-M3|MKS SBASE, Re-ARM, Selena Compact - [LPC1769](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc1700-cortex-m3/512-kb-flash-64-kb-sram-ethernet-usb-lqfp100-package:LPC1769FBD100)|ARM® Cortex-M3|Smoothieboard, Azteeg X5 mini, TH3D EZBoard - [STM32F103](https://www.st.com/en/microcontrollers-microprocessors/stm32f103.html)|ARM® Cortex-M3|Malyan M200, GTM32 Pro, MKS Robin, BTT SKR Mini - [STM32F401](https://www.st.com/en/microcontrollers-microprocessors/stm32f401.html)|ARM® Cortex-M4|ARMED, Rumba32, SKR Pro, Lerdge, FYSETC S6, Artillery Ruby - [STM32F7x6](https://www.st.com/en/microcontrollers-microprocessors/stm32f7x6.html)|ARM® Cortex-M7|The Borg, RemRam V1 - [STM32G0B1RET6](https://www.st.com/en/microcontrollers-microprocessors/stm32g0x1.html)|ARM® Cortex-M0+|BigTreeTech SKR mini E3 V3.0 - [STM32H743xIT6](https://www.st.com/en/microcontrollers-microprocessors/stm32h743-753.html)|ARM® Cortex-M7|BigTreeTech SKR V3.0, SKR EZ V3.0, SKR SE BX V2.0/V3.0 - [SAMD51P20A](https://www.adafruit.com/product/4064)|ARM® Cortex-M4|Adafruit Grand Central M4 - [Teensy 3.5](https://www.pjrc.com/store/teensy35.html)|ARM® Cortex-M4| - [Teensy 3.6](https://www.pjrc.com/store/teensy36.html)|ARM® Cortex-M4| - [Teensy 4.0](https://www.pjrc.com/store/teensy40.html)|ARM® Cortex-M7| - [Teensy 4.1](https://www.pjrc.com/store/teensy41.html)|ARM® Cortex-M7| - Linux Native|x86/ARM/etc.|Raspberry Pi - -## Submitting Patches - -Proposed patches should be submitted as a Pull Request against the ([bugfix-2.1.x](https://github.com/MarlinFirmware/Marlin/tree/bugfix-2.1.x)) branch. - -- This branch is for fixing bugs and integrating any new features for the duration of the Marlin 2.1.x life-cycle. -- Follow the [Coding Standards](https://marlinfw.org/docs/development/coding_standards.html) to gain points with the maintainers. -- Please submit Feature Requests and Bug Reports to the [Issue Queue](https://github.com/MarlinFirmware/Marlin/issues/new/choose). Support resources are also listed there. -- Whenever you add new features, be sure to add tests to `buildroot/tests` and then run your tests locally, if possible. - - It's optional: Running all the tests on Windows might take a long time, and they will run anyway on GitHub. - - If you're running the tests on Linux (or on WSL with the code on a Linux volume) the speed is much faster. - - You can use `make tests-all-local` or `make tests-single-local TEST_TARGET=...`. - - If you prefer Docker you can use `make tests-all-local-docker` or `make tests-all-local-docker TEST_TARGET=...`. - -## Marlin Support - -The Issue Queue is reserved for Bug Reports and Feature Requests. To get help with configuration and troubleshooting, please use the following resources: - -- [Marlin Documentation](https://marlinfw.org) - Official Marlin documentation -- [Marlin Discord](https://discord.gg/n5NJ59y) - Discuss issues with Marlin users and developers -- Facebook Group ["Marlin Firmware"](https://www.facebook.com/groups/1049718498464482/) -- RepRap.org [Marlin Forum](https://forums.reprap.org/list.php?415) -- Facebook Group ["Marlin Firmware for 3D Printers"](https://www.facebook.com/groups/3Dtechtalk/) -- [Marlin Configuration](https://www.youtube.com/results?search_query=marlin+configuration) on YouTube - -## Contributors - -Marlin is constantly improving thanks to a huge number of contributors from all over the world bringing their specialties and talents. Huge thanks are due to [all the contributors](https://github.com/MarlinFirmware/Marlin/graphs/contributors) who regularly patch up bugs, help direct traffic, and basically keep Marlin from falling apart. Marlin's continued existence would not be possible without them. - -## Administration - -Regular users can open and close their own issues, but only the administrators can do project-related things like add labels, merge changes, set milestones, and kick trolls. The current Marlin admin team consists of: - - - - -
Project Maintainer
- - 🇺🇸  **Scott Lahteine** -       [@thinkyhead](https://github.com/thinkyhead) -       [  Donate 💸  ](https://www.thinkyhead.com/donate-to-marlin) - - - - 🇺🇸  **Roxanne Neufeld** -       [@Roxy-3D](https://github.com/Roxy-3D) - - 🇺🇸  **Keith Bennett** -       [@thisiskeithb](https://github.com/thisiskeithb) -       [  Donate 💸  ](https://github.com/sponsors/thisiskeithb) - - 🇺🇸  **Jason Smith** -       [@sjasonsmith](https://github.com/sjasonsmith) - - - - 🇧🇷  **Victor Oliveira** -       [@rhapsodyv](https://github.com/rhapsodyv) - - 🇬🇧  **Chris Pepper** -       [@p3p](https://github.com/p3p) - -🇳🇿  **Peter Ellens** -       [@ellensp](https://github.com/ellensp) -       [  Donate 💸  ](https://ko-fi.com/ellensp) - - - - 🇺🇸  **Bob Kuhn** -       [@Bob-the-Kuhn](https://github.com/Bob-the-Kuhn) - - 🇳🇱  **Erik van der Zalm** -       [@ErikZalm](https://github.com/ErikZalm) -       [  Donate 💸  ](https://flattr.com/submit/auto?user_id=ErikZalm&url=https://github.com/MarlinFirmware/Marlin&title=Marlin&language=&tags=github&category=software) - -
+ - Keith Bennett [[thisiskeithb](https://github.com/thisiskeithb)], Ender AIO Creator - [💸 Github Sponsors](https://github.com/sponsors/thisiskeithb) / [☕ Ko-fi](https://ko-fi.com/thisiskeithb) + - Scott Lahteine [[thinkyhead](https://github.com/thinkyhead)], Lead Marlin Developer & Maintainer - [💸 Donate](https://www.thinkyhead.com/donate-to-marlin) ## License -Marlin is published under the [GPL license](/LICENSE) because we believe in open development. The GPL comes with both rights and obligations. Whether you use Marlin firmware as the driver for your open or closed-source product, you must keep Marlin open, and you must provide your compatible Marlin source code to end users upon request. The most straightforward way to comply with the Marlin license is to make a fork of Marlin on Github, perform your modifications, and direct users to your modified fork. - -While we can't prevent the use of this code in products (3D printers, CNC, etc.) that are closed source or crippled by a patent, we would prefer that you choose another firmware or, better yet, make your own. +Marlin and the Ender-3 All-in-One Firmware are published under the [GPL license](/LICENSE) because we believe in open development. diff --git a/buildroot/share/PlatformIO/scripts/preflight-checks.py b/buildroot/share/PlatformIO/scripts/preflight-checks.py index 2e4ab5c92d..84211f185b 100644 --- a/buildroot/share/PlatformIO/scripts/preflight-checks.py +++ b/buildroot/share/PlatformIO/scripts/preflight-checks.py @@ -108,6 +108,11 @@ def rm_ofile(subdir, name): if 'EEPROM_INIT_NOW' in env['MARLIN_FEATURES']: rm_ofile("module", "settings") + # + # Give Ender AIO warnings on every build + # + rm_ofile("inc", "Ender_AIO_Warnings") + # # Check for old files indicating an entangled Marlin (mixing old and new code) # diff --git a/buildroot/share/pixmaps/logo/Ender_AIO_Ender-3.png b/buildroot/share/pixmaps/logo/Ender_AIO_Ender-3.png new file mode 100644 index 0000000000000000000000000000000000000000..df1633e682b3cf9311bb4d2371d7cf1c10d40742 GIT binary patch literal 239103 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%0Al zkYoO#;h(8P2YJBqT~zeRDU7>++JwqJq4j?=W}J>s*p6#|s?bn$G?8Cs+x?W>LjyzDIw*w_@HW*wqj2D?gYv_`-l;-rg^eSD#%zp zsh`oXICXr5JxMH}wQ~TX>du~Zbg7=ET%Wf%jyejZNQ|k=vFq#Pla@9`jhkT=6}0R( zCC$hLpS%=R9^v5rC_Ow}HF@|}=+Gozq^`7ZOOMx;DAxq{AVdL(!29xcH8TQt)m90Z zrd2AvvM^4`14Oim&yJoj#_e5WPRfQWr^AO1$kZlxlb2KBll;sq*HpS_E83`V{7cF+ zeUqI!JC7YVC6a_|QF^0Gw*RE~?#Wr^gFWO>@cQqt?2k?iQD-&U-ei3Cfs*uQc%~?( zU13RSc}j+1V-L#AN=E4EWS#Z5v6VSWyard=ndoLuDurL`#Oe&6Oba-CJ}nm z$-#*=?e`OPux9Rc(z$6{4&vMAik2h+OF(3Tdb%n0#fWRZ!Q6+~QtGmL6OB|vINAP# zO=h@8e1{y(Q4*N&R4BtU&o*eh%<2-&viBC+2zE`$sZ+-jrQd>A%|!%)5oogB5AO-= zneBG;bi};tG~B?@9UN&j_lQ z^64U7L5Ar5IKvkk2FxUI{|_el_AyqukD}IDpQo1|-L*UAt@g_2%VFu@o7SjRR#IwD zG&g_5i}Kj{fT>V&0l~XCgtX)Prl~@8X_iiRo(-D)cFi`A-Tv!6)6z$BMR?C3z~bhi z&lJK9l|m3Q3%OKtfG4FX&6P!iQ|)btEP* z1lO;&A9T3fkQD;j9CZ%`iMA&IMU0BslF>~8YGJ9tb^S*#8Lr`B%czT7%dor~diY6d z=+ZQg0)4ozRHpF~Zus=D1vy4OrJJV+FRhs7HhDZ=9A-oc%6|M9*VGZG?eb!m`9iF6 z!{;yU1X}xAFMGz=F+WcY&dju)sI5weti9@cwfh|A&3wR8i6I(2ZOgPV^>O0 zc0Wi&%VIlaaF8ZZ=hEg(DkEe6XR_?YdNl-aE?+w7O^rU*^`6@tT29Xk@7r8?zgPNe zKN2B9L}H1dl0&~EW>Y^RW_ibI_L{`V{I;^H4;Z}Sh*X5zfXt*AD>0X>@f6Uk(fiKU zDDOh_fDci&>j+oQon;onA(>8uN@nk3&DW0{!i;BL!H0<2*8=<<*?`)buzVm_FFLhb5fH4T6}m9P1(F4W} z3e21sW?zX7yQZjKQ^DL=i|0|BC5@n&{SSD!=+V3Q`y1MqT5p^;Uw41mm7JxJhu zqsM}~Err`ClV&A;h(^5V?!%4AbqmxJbidIYHp5t4zu(28P^hHdW#6wGJ~7br8v_cV zUZ;@4?iR*((9D^t+)FlBoyK*4o7J|x3t_yp`Qrzh;XKL-9jubPh!rJYHq%~HiN$L& zJpw~)#Go185xLQbFqBC-UMVX(@-jAxEi=hNUpvojUWt`3N}PSL9C+$4jhWh|KFz5l zaW;8bU9>Zg2y=NEe|vjuc1@-kf`U(}IO);!&)me`KS#uSf+0VEHtk@C$Rk`D2l1rv z7M-6pVt2&4OmQJ7^Y4U{>33N$E!Cp>oP2xu z;4X4W(Cb&f7X6!baXvvMic`vf9Acf64}_Dr1s7LuzYL`b6ds(|q9BGQ_yZe;qj&HP z1^y89UgnsM*XbHbCY`>z-{qNig?Pw^Vw&gy{~bH{TSzpszae>N6I^d1u;t{2g-7hH&*Pb>Bqz#} zw(NShA&XubAI37f)MZaxqUD^X)6tzC%9VF_mi=sZ`dl^g=c#qtx zFcbFs(;ReG@wg^DIc^yEeK7QNH`EP~+>_e&o6YaztK*dUJ+Zg0cr|m9xyg=wrT=V9cT!&u z-Z;5yAROB!`nKmj7>ZHlap3uVKBu=54}4r$4S_ zTrQm@7^Q`)I^Ots#P5L)tJBsA=;GCexdW$}-6pMj@Z>iHCBRq@DeSJbw==CS;&S8x zYmxBuo;KOhV%*@;IFECj;qWC$?7S|S7r{^K^Z(Ey#yNSev_8{eeH-ki@1562d+qUd zXt!x7C#f@4?j)@lS*HC~R`Gl1zC2B+bLR8vJ@-7MUR4?oLQvj5j2kayC!5RhJ>s$6 z{BdUDkzTj2iClo>(n!e*Y_DTQb-I|6miwqgQs)m%MkgV1Z*!y&>$x&m|KFq@%B_xSjRCreKDN57}g^t zLUtqM;Vi3tW~IP^-^0=MMFk0|QWL$JB;nwU$?6wkRP$I;h9Nh-NdM0Vu(g-P z1JSO}L6Z&_ND{t9w$txI0GR13p8Q>WD&r3&2BdyKUnhwhW`;A#E<|QhA|WvCcFWpX z-81^~b$%^vVEUZijxE#jg8=m|PsY%hz?mWq=P1furYrN5tq`%N7z8OktYw7ORKB{aS>FZ=Y1qG@8-9x0vsYoPQ;xG}M%n;41B{@9~%oW>>WSeL1&EOAC*jmX17O@HPe zYyQ)9leZ4h@?@>YOgEiU$rgU;^r#I_s1kGP@rG7tlZ5h@cV*S8@o`ARU2lsACg>MH z&2FqFELynjTTF2Q?{&dD3p;kh_xG>7P+g74-!%H@6~D*os z)CQ2WT?LU~^YH6~Lf?ry!6(Engu;hJT^6WQug~3MpH$!rUII#VrzM~BgmdOx$m;v( z$TIbWlW1+-h{RmE$i9gvMI>b-h7f0pihr@`kJ0}av+3~VFOQxVJIsiIGEUd2;uN@H z>G-T~JzfV513Pg`sBJEcNQYkYuKW+fX5F~#W{%$NkY{9jhN$I^JuaztL`ojtceUtgRuqx=d58tqFNT)pzG0xYaZP83sv2f>03FnEM zD3|2k^^u%8QqyJ04>{3%%@CakS1@$#h|af{-NrbhIoO-XJ*3h1mmx?yOJINx2$1K? zhUA=|G8h(nZbVxR&beSc2@Ibab^Y-?2U!8AOL9u#c3NIV+c-f0x~x{pjpaH!Ws(Gm zy(;=$Jz}z{QXw$R(ti@aX*aw+PSU%dMfk)ouzRd50<-dT^0?yuV)TA(9AaBp0j#2T z*7SrKuG5`asN;DLC*9+UU(&jyOQ6K*aXo8gBMR7DgY8D9$Z%;;{*%-Y_x4I2YW`7J z$qv_+zPha6Llo!RZhCrvK4!Fb^AhnF;9CBLOKn-6BC;FU14ag8#p%EnI`w^UmYiEt zEIUEMI9uZlp{7A=FSA&xx~Iw+x4E%JAS&k9*<|>j#DFYk$-qvJ{nqJ00gx)%{C6NK z4MdG&%cQxtnclA@aG zi*z?rC51mLI3qhl)T5#6Ox zq)8v)^pCu1+;rk3ICGsOJ8>*2JFClBP9D}Wki{fzfuLJ^kAc@BId5BlU)PmsK6Y`J zZ>tY+kj#u{*=tt*eN5ESB-1N!%{62JZ^Zhu^ zF`5$Cw>DDFW$8$!@OdMWdR~|e6408>C;+1>Z-1KOrzZ+KCO?I;kZUV7m6u8*$=%S- zf$QHLg@CA`|6KOLTm-XYV0&P@nWG{nARQ|~5cBB(>yP7^3}6VuDkt-^rUvVzN$L+H zr2+Dc2knjV!Y}oSWlzp0_u z!Srlp9A3<=1ATo#j#&DiW+)bavQg-ep$e3Ko+3A_-IoLw?)10(fXOe4ejev0y9tt{ zgf~@O>AL_^!006O5;1aUa(5*`hjkGdwm1ifEstDU)!bow-5%2+z|-^_BN>kQnonn_WK9 zLvQcNDL96?<+by5H}wcOyWjgy88G7vCsz=o%obeAi7)w7%{F=e%O~}pV?9zlp7gaf z(vKn-VKdXZW8`+n8{go3_2BinjkyKt!mj)5@Slzdw^#9uvvoAs62bZ4DFSm1!8uqn zk)B_p{p5=+fWHKxGqS^mK6q0I2OV*4%SllR6Wt$Hw_hy*bMfv&M~~s6G*z@8}WI5GOx0^=P8WyX$Q zzSj4?t`_#)xX7F^Sr>_|t7|xTXADh;!%oECIo;{Umo-^=>P?QdH3hT#z>Z^zepT-5 z&?sgqdwE5I2uD9Nuyr^~l6csuv-a|1sfz>}-&3AgA6$JjTyyzi-e|E^J)S%}FDTF$ z`QUJ=v#6ggBJ?}gu<``A5%kE21!UJ-ixGYed$F0I`~?#_mNa`q?yN|NZBULo3lUH- z1jf;bB9l%+8*CnIv*@m=z8%nYsSoY93mfUCY>-GKuXFVH+4%U9YFK&$(QLP@z@+*9 zzU>Ol9=h8+_m@sz@a*T2#lzn!#Y(!xbZq9NJ|$*fxjkzJBuWF0$Ggs_6^X%&ePPw- zM7Zfrdeeh!_Enaqq*peM=%x-cqoFP9f>%qGqDW)8uiFfkrcq)Q#5d))stS=uvL{xwL%Y13Lte7$MS>s`M~pc>I=mqjXg(M>YQ2 zic1VZq6+bI>tu%T2h^L_n~^sDo#C=2F62?gjBe-Tir?gmQ><9jzw`(WQt!=&_ zhIT%40fk3`U{1La{Lsfo?VxPg53fNY+)y=%-}^KPzt_CdUph?=o@AKul3pn}J zI3-V2SLQtp96r69Djc&Z#-PgeG=)W#;QJX@Poo(6(Y~9KVP(u#|QoWcxV0`DDenuuTyUBxj;U^;652W`u)P$ z>d2|j73OZcbg+1?zZp9ggTZL#_oQGkjWWOB6V5~FJzYD~?{Cbp&i2yVlX%5vjabK0y)Q=ba)Pk`-C^u zJ>jE4JdqV|#P}>m6FQu>wZ472BcdZ|yc2OS*msM?A`NhD?}ufmkj8kHBoM->(prAgXxlV;1TenOHNpDW0HqSk~h z>T;pKYG?`8FRZzDMw0(={B4u9iAR=ou;V$}B#ABds(f9UX;J5Vn3?1LijxJkbe7zv zenlYjv{^-@fSupj;z7ZxU#r`QqOuQywPIpH(kG3o*e!nvefMloqS$twGDvyUu#@q*2xyLaoG13M~x zI8{C7ZaThs%9d}38HZ`;tAH$B+>M{utB_%oT1hN7)cQTUu~-@rF1^aXmH0oB&OM&V z_y6OY^Z8iLhjK_IgfempMF{1XoD$K2nbhVmGv_1}Ipvf}igL`UVM8V7kmJm5$ti4e z+%Wv^&-eG(|Mz|Ey07bfy-(NciEkNS6G2cv6c$E{+u|%-wX&y#cm>f?zYaI154VZh z@w1ed^@lvG6v6M5TcZOTf18}Eq_49eYV5nICz?ujQnCR=CrmK^NWM$v*dO zSFcZYCu~p{=U{7Gbl{zk);8u8RPvb=WVRotu2MzsK@wfHE9TD zDqNLAmiViuM|O@%|5%US)K0@WU~EF3xqRc<=f2EMKNMIoKf<1`q8q&+ zJ7=6u0buY`(~eCP7>hOAIt}dvyAL(TCW*XU{u;j=253{DuA{*L&*NHRC)x9t%Yt(_ zf6L{40Z(D%fY)AAwF!qEMZJH%?q{#jTo*jfAku1MIb+}vQy9ljdD$25h|V}4D;ISz zuJWMg8x&nF_rK((^-%HsK_cmdH#b8|ws`wYc3x(EZrX47w!VMm3g^sW_AQv{HUq?X zn>2GOStFdE4uBSC%HTO~t2Ht11G%9A-x@G@WU8NIY96fEef{1;0r5(rM+ARPdtMAp zW?+iuInn!C+mp?A%mou~ngt<%44mWsr}VqMhncW2(ZZWS*+LwFiT?PaoJ zgfObIG%GRr`bo0aLv2L(uHn3GU9;IpFN0t6rl|_PmitW4yP-MK<7%8_4Y6r~aH7&Ey)>k*{P6Xp8Xh$v>#XALe{TL~IMCiJ?$P#Kt%RAs$ z42ovnNa0hmm#@Th8?jB1)-a#sjo%c-Ek*6OE&ub{+q|<}6g}(!YTdXC^~jZF83>&Z z$L$&B6>ndivH5gC*lFwOIBiwuj+dvI7oVvtBGXcxvJw2^2tBU|t8(Hrz*W`Te0_@xb{vd}<k&8K4Y%da@Qn;?S=TF&MM#%vW9>ngdj)>ULYpQ%x z%FEU7pQe+It(NRgG?7}4AR~f!Bkg{bUn1xWP04TU$vU)~>qt~znu}S{^n8&wH8Zlj zP^qC|q@fSU@`ncU&dUIXY|M$;yKDyw%Iq?h)x(g)pI{4Xzr!C`;ZS&LAcX@!9@rgmQ`-*1;bXg8|4|-Ihq7EcdHQMx|voHF6h!KyAI=GrVrzTIU zt2;PW_2$LPrfww4)ITfUcCkF5fy2GB8=~2c`E8FSL1O`-L8TnSrGyrvo3)<;l97KQ1s`b*41}jQ->V5))&YtW7B6d&eu1e zZT zZo!5AYvjRZWR+_EdgZP$g2w76fekl+S~zbIzypytfQoM;jcbnV^7rNY>T7Shleq5;rx zD}Rywz{Jk+4n*Dgo_qQeN!9OYf)`hOn* z4Cn!aC{AVyjRhq@4*qhFMsLqV0Sj{wl>}n-YD+uz#t5S1Wz)(EWpcIRD{ny!=_`+i zMhTm*9S2R|S@Lemc|%^PZn=;G<`7YIVz9Da;}By3$(~?E9Xm>^=3tKg{RLxb46f8oH<`8vFJ>^|36ffk_e0;r~|3OEMO@B;V;OVIPVI{=k17eXK1SY{o;D! z+>*`6(;(E?HNWZm|E*C_@Jrz0b$s=Ei{|AihDCrYzrcAWyTKlfLh7X3w>W0ZCrMpi zNJ_x+js%-uI|}=aZ2%EFZjgc7I&H><-H-!e&cyv=zP~KlY^OigmTn%ClxfZEe=SOg z+TY5n#55L1Gq<;N!dTAoKn^Iic3Us3(vPUJU>z(B&vr5d6ZI7hi}RpCsK*aJ@YGdUcbe&xZbbNXPZWU~!qO@cRTe zr%p{CXu}^!rwwfwgkNE?A@PgZzGKo@Mv80#f;D1N4}GG*go>2M^!@82=$o6L))CjX z%rXF|wuA%f*dhJ!*_YrMx2D(A@~sEE+y_w69?xVCPYHM@(n`gf(QXuG+TFaq3jdh; zVaVcJRy&-((eo(8b1I03A&6e(pOKnwE27^krl#!8^CuBd2M4sZ+r(2K29*`l^Kfx{ zVw@A5s<$c2G#h6tO26PP=V}1vV?J^s_(Bgp^iiqJ4}a3#6Z{E z(>lK2%{k${5tpHe-ZzH>grMO4&M0Q*;W4yBa~Dg%xB9Fv&1caP#-&%MR5bFnD!(|Y z4G3535I=*GjA(*2O*;9ZIJDDOp7PAD%V>592Me8Xw2jyfqNBid>he_{~e(r5@ZVP;W_l4SUlcS(H1zrd&R(Z)s zoiH4~azqaG&6OK*gjp;R5m8LZ=0u@FC) z2KReA%vFl=doBjI`}CPjZKbEio9#hj(Z)L$cxlhhHfx`GrBzws7+A9UpT(1C@db(U zWDiEl)R7MRO$U)-$b=+5El~Xm#OQmNjj^Yfmz-V?OXEjq5U98KII?{KxC~6Y!4~Jz z`5U(iA6a?}>l!^cpsBRzTw&MSig>iI!+zNH$E`PhVq||$!)qGf)MT{7G-?(9a2lu< z-4_a$L0S0(ZD*^9U^(|aRv3;KxWAwr?4I0#qg?JZ)Yc%EjnuCxB43@ z*o?R=d329CSd|~~);PsS&LmU%9m+;CHJpeUs@h)g{~c<)p{^KI${2o7&D@J7eQSZx zB59@0Pau2s-1#L5h-z1ie`3eRax}jX$``Wj!-&a5ZAwdCfu!m^0+Gu2+e?y31bo|i z?Wt6j&R{^-hWRI4C4Ss;MZfKP!>_j)l-+xO_A0LuS{B`&5cb$RXfuCgj=Y^(rPOry zKDb-%97~cyv{pTpyR{Fv?3-~#@BS``ei64m26SR9<$v+#Tws}GC?d6)?xCaur2 zBS1w25~zbDMbr5lfe_*{x}{;HXmHYJ`6mS4qJll#m3GBr_Wq1{6-D{(4_9$dmUcAA z-XVOnPsm`V>g1nRq`g@Cg}E!v-_aC%NAuK%dx7iedZLHt|E7XFGz>FKT-OxN=R5Rk z$X6ZRpOQCEs8!gNHz8~)Iq=^yjGtj+SRc}-gNvXTUS8f969 zEyzkYVHR)bm(r(xc$E&ynD_eh>!RK{II|tZr4c?Sj+e);c=Y%V)ppR<>v3}z-oU$L zh275o@9kWSFPHGR{)J9Ej9DvQ*-Q?@SR#Vmb-!)aS{n&xly~=Mc2_S_oL{psB=W^r zD=NqSELRxjg~jn!VpLB0WI&kKyn<%U#R*_MozZD0=fEEXr$m|J9rP=1312vgy~R-b z*^)AEX(_C0p{wuVC&n^4))*;z&l?so9@aThg)fomXk%8m(b# zYOdk|X)n%vI;wz?$2?O0Xak)(bwS904c!~{u1HrL0(%OY?RM)>d1}8wJLe2>$Cq;; z*lrF=B@nZNa%OVW!%feilj8qIMTKWm=-Ia{=R%oPZUH`4kMbXNkF!RJ9Dw-M%BX{N z9{vWo?Kw8V{)Ez%goP*<%ZvIe@mC+xBp8#X;3*J1U8L#zt^LB?D+|6qN_gzXS~ zU+r#i$R4iLk`t7GlZ?gT(ghb7%w?d`^KgHbEH4lYmSA%w`EHZBK6*CR@uG(-$0BbC+_Uout)98bCcZAe?C`|Z+(cJp_j^Q zXtX*otYm;3?W5hlc~~iS+DZMVKJy`%1`(*O2uY=!e?8 z>0wEAeY6PYx`wk~?dm&vhW&gO z+1g5?F#l_on$s}y0b#3*k9O+D++NC;KF`}xis@>JA;j9I}LcocXVIqZOA;{Kn< z{uCmg&7wQO5``VY zzyIPKdr0NapdqW*dqM*$>?71g z0C)VKuV8|rRU>ythNwJ3A=H8$p)|#d_Ez|gf;5I+JVWNO`tG?e65!Ke(#ACpwv?y z{2?>(*SdAJSgly5K()h3U9ErM+^G9tIPJ^Z6O=eq;xd%N8+9PRp##%u{`cVPeaHOb z+bOy_nyCI&@2IRN1hY2dPc1w?R4+`lX;}2;S@+wa4J*Q$f&Wdh4Aw#*#^oQ3zulX& zC+^18;L!c;K{mp*sO)lxk>joj`oD-L@eWIC2{c;}r(M<_4lz_<$XULry^OKTQ)Z>a zlS5mN(;t-W1+?IYJ_O zr2<-Myplz1{LYoJJi@=t#x2Mmb;;QkJNygx5T_^Y6_&dhrSOweM3}L6o|;)@jrnnn zyJJH}co@0YpaFgt9;}|Vq?@Qx81 zX-Bh2>t<{A3A|mq6<1U7w1eiN^uD#(62d(GW132?Fvnq_=*}h7#O-a63Ad;Y8`+l-at>wQb{|;Hqs748) zlb9#4s0SR)<TvVQ37w9m4nDU6u}^<>%2#f=ZdrVD?t|Amlv)m1+aR9BC0Nfl zNC7@OCbKdCJOztyksTnNj=zsIFTQCtZV1p50!>4^u$9$UzdA*nXz@@Dp5&$zhmqxQ zf%`8u?JIm^l{fVHY3;0FlO_(7#R=Io#k+?Qj`ECHap88F(SlaX@%_;0-+rMzqoxuS z|Jz)LEswjHa0yzl6i~+6<^m=pP3!)6H_)8ghZ=YwbgiYjpo9h;KEbHSI5_M7zU%#o z6!!~wX^yGi*zB7h#PsB|j8`aXX!Gq7kaaN5CttL+dLb>d?kt}d7p{i`z4bp2!xmP3 zcZWF-Rf!m3s-u#yylT_u0H-5mrwRqFxp46>n+_$LG(3(1;o4vTZgM3zn~S0LUtF7Q z>UhcEg3@vemF^qHe2*pio%sSH;D10U_X!(fWsi>xBq|@t-S9H!!!Fse3d2l2QAS)n&7a0`T^v&(95_U@c!5fQJO$9KMIAiVTPcB&P|s5eGOBEG+O;|UqauoAMevE5Jrx1Gd^E% zo^PRqe2Ms4H*y)b@0IE%f#`=zRAomX^7zJ5#y73HvMZmGKVr?2Au8d-*tT9T#rg~H z_2g@=pu?apryLzF$Y%*5HwL&4hA;X>;^=h`AWY|g1i?sLLlViNB3LG?=xuYV8wAl$ zF>XCPkSCk{&1^ZE@PKfhWdBH`fqV~(3&!GXAVwwO8PdegBT?i**uE`mb6hl#4uUdRrq{MSt&dL;-bO_9ur+QD!jq~=_TDgYa(M!2 zs*D?Y4(B~AC<_@)DsBbfKJ-l)OcOh< z?zUw9%qa&KHV^K&&PrAk{E0x-r=y4{U@^2SEprD+uOG0}UfHgYexT(oYL}KamU=vm z#EliyB_#GpCHho*AtOTh8>jzexw;?L-Pv@5d7N7U=q|iYP^RLvkPgOq&wYzw*|Pkd4vKZ&}}bB2i8JSwrMR8_CDi zA}={B03VScGD7{HI_br$XW(Dr-&x05xsj3|ZR`(Z4+XI_T8Dqsx?8M3NL)6nIIY4a zV-JPtwq9=ED|Fb$9L9a#s-5)-zhfNW#@8>qnx)~`BaF0L$$1$TU8SFuGYR#Y?4!x~ z)5YqDFIL~1LW^R}_Kj{PH+}Xc7C;%}xK*{{83CErg0-}qYLthefP2tm|KS!UX11?= z)ekBV4;446jA{ih`cH4>i|5Y`=1vzJbb;9xx3qDEcciAVSM&*wt=rYNy-~ChD?VHv zJ9jNCc0r)`}HIk_q{I@N!A%1XoIP2cSz{Z?m6RYz}V7b0A zJh<*JrWDL33N*^{>VAVzlpsb0@F#Kft_S$E)v-(XNJ4ey(evmeo{``EiI>~qPb_oG z<49&nRk&cnejja{egnJ=N^gyNf_20ELl593kH6X!Qp5w)@ZcWRxT<}f6|^8A;7XE30JMiDjH%(gGuLU4IT*qwsS?wU zM=BgYyr0a97sRbf;4<4O->mAySX$W(ovp#r2sxIMF* z^*7;-yg|ZLX_4q6&vmLNm{xNe^*FX8UVDsG{s+a1#XZF)#wn6JhO6}5+y(Z3cJ#;K z>O>10uG!50&(@Uo^2U*BsMGThI;?}3V=37f$r;pXQgw?%1WW81Exjnx61ZkZ}O3%En#@?K1=p12c{kt8x zhqXH)%En}(pFJ@04~;5rmH^H^e@fU{|5YzV>Ak^R4T`pFkzRW=b5IQR8sSF-3Es&% zp^G0eRCXg(KTu|ZM&(m9$a69(@&5UvV|Utd+Pn4wt93-J<m5hzp3lNnsfy5TO$;Vzk(!k1m z3dU{+7rZI=DJ{D4E|mD}{Vn*oL;j9YaJhaaB{_L%s7O8;I`x^020sD#aR5Z!%P%Kn ze*gnRIv~eup;2_Y(6p}E8yuYEq5 zP&(7_2Q&(8_aC>-n+F6CUQ6sb#u3#8+kEkk=tm!#E@Q}U+TZ#0N{uZ)j=V@m6;8Js zF}lL=@>Y-0=pR8b+HF0Pd=97oI}XLfk$Ya?r#9J!7HL3x6QZk8citsQi2E>*vCx z*Dn2wNxP99>@y;6Bm+|0=a9!t0Z2oEFQE@qv$awG{v8VUV{NrT;qejM&yw3*c_P0G zY9_OT48R4V^V$Q~l4~|iYCWdotGWq7e_?XSY$$^*pxEV#H=(1Cc3*p`3%bomjUWIf_Q1} z2Nt6wcJvuuU0|C|$&!yuyv{f^5-~pE>hAEgQJWV+{;AT4E`IgUEvvCgdKJmgP?1Mw zdwq1i0Ek`y96xCNfl#xnB|X=xYt|>r=2#78tlI{Zp#r?v$`a^w!YiHiIsc$Rsso!0 zD~&uJD8r6VJ0$Oyr_G|^v`Br_`OtEA0&;e>#9evF@Tx$#a}QO0BIq+0!eGyLGPwxG zKu=)blF2WQvH_3yGd8#RI-}sOa=^H;hZADQ^!!NunQHF_Z*VcKd!tIAxQjQ*d9oBG2=VGrkunHQ&B-e*(4oglvl{0qgL`LjP`DSjSS+0U~c( zE;)`mW4oD}RH@@{gX1Mo83s!m^8zsJIvwr|jmVl97xc&e@RRH6rF0Lkw9@^K=+$PH5&DPC0jJZqQQWmU#)k(#I#PUolpZ5t{a5f0nlQi}361v3-agx$=8Rm}`a834olelMM+S z5Bl0Ko&-Grn;DyfGES}}NC<#2mD4X#5C2~-!EI+mqV_Oegj+g9bAm;LR!rp^vd0ju zhtr^b*2?uu{VSDhm#9Ub)L#pIF6r#6bakEDN9 z9cg?Sc9%|}P(VbJ0${m@f-oS@6mt-tJ)e%$^8bZ(Cy$okL(McwC=8G@p|_hhknqSQ&O%v?^!zA7^o zD#roH0T*Jy1tY)Cz6irWiAOj6rxjv+qzv~zwvaHK#FsbD-T&YrX*v5dro81oVQd&e zf4Hbv9h$DOT8!_QKMCxTof4nw_V#~K<#y7^?NycjD=op5 z?Lvi@kcMrQByk?jMqb(KfR=ZCw6)ylmX&n{VX6@SVX(WAa}H`GumGt=+01DuxO3<| zYL1B7r<03*QB@ySoMFpveFVPh(M^u6M)X7eU5-!6oCWvoq~}jOP#fh92UwIcb2d)Smx&2|35=6t3|! zV`j?od8olNLgk{39k>lv*g|i_U^p$2Qunbn_g zvT2kQrV#n;0{o{(b*_%E8hJv{&&6r9vWiKB|B*|;-;evlGsiV$fYN&qT{TnKrc#X) z>y(BmUGVt}^5GGOfI^_6QCKd|JSdIK{U}khR6K5ALGTXVp=uTi<6%kd3JZyWt(^pp zaqHSz`Cx*AF?LB)0net+OwFRy>hf zMWxM$$9~^N3OKtTZa&oMu*hN^^-Ott#cF)zvkXF;pN26asKR7mZApL;pkd^$IAcud zurpz+V5N;rv8cq`B%1I(3SymVA8yN&n;AS8URi)C9hQ}kv-Xq{wIp;l{dh6QiPrx? z-PkKlDy{=Z(JhGU*zk5AS7UlUjU#P!rKf9=Q~Dqb`D22*@7RIkz|Ze84)YnOxu~3q zEm_|veh`?qnwHHGg|wOLgw8drOMvdZ_fpQ)Eum{n+WIcd5Y1fN3T}GSpf8K9oRVWW z$he3esR@&H)P&dxPr>uZnETG}iRD6ZJsy@yY$}S0T42Io9HGr7lMWIwFr1|wVvCeh zzP%#@iEG|;EHBPO^G>1uO2UN>c&s2!v;pU1d{GYZz_;YigNuAGS8udiPx4ic!pDGY zH)TNG;3QAuM}fwf{m(Sv=S-lF57ix2cTb=IN|9w^)+w{fgi`HrJ3PcArnL+!+UAde zN*lt@%BO|3joA-moL_3-A-M|~(PL;W9|O4h=P{{1oH1Y|;KEN+{D(q(i2xBV+ViKq zsh%&Y@~m?OkG4}z2tK)!FORiQ*9e$}M8*0xz6FP+U;X2y-P2eSS z?<$9TpiJlmz*Y({7bd7`Pdx@Elvxc7b|N2Z8t)B8EP4EIP-MJc%%1G{t(D606vUc= zs~KjYIFGm8MuUr-HTkK2mIKwmig<|q6lZ#VYs1^p8-^!+KFh3aW4+yVDnwE5PJho| z!{tyck=M!p{?Pyh03(zdRV`*5G#FkFl_|)%_I++?_i^Nj2CHk$a)e?lf~rKfY<4!hn%{W2eRUQ!nvNzC?+Zey#*_MFg_7U()`DY!qbzK3wNwu= zgbQFB^>=hqPCTy~Ru4V;0H{8n2tzMJd>@v$Fg{q>NnSivDEEFB^b zVuc;Q$Wy{$Nk2;;Zwc3A8gNmdn8S}QEkFH#?WE8eH+=sl41N4fU0>=Kj>DbfNM&i& zP5q=mu-Oe`MRuz?X6VajNgzS>@iWOB(K2 z3gDVvHhCOdsi<}HckXr%#OYJOp&*XOQt}V2MuYH1m}fC~I{e=~{@>k7%~uK4d{Wk< zw#|V))JNy?l`7rive_A|3=pyiRz#PKEosqp5|l+npn;v%r_}aVdZr5OT}cae?ZUX& zHarx9KX-$((cnqg4S8;6%CVCqHTMtBH^*fs1A7ul1qmILZ+c4UD&O9KMw#5K1fV%c zdWYNJVPx?3fhxVDR>7eFLEP`1v6+lP?P8*8o`(1sEa~Uzx zNt}=jsrxW?N&*>jDnx&!XQ=D?$NAB_4U^o}j8%&3Bb@$0)){u)A`_T;>&|?sJcjYF zTpkm?wj5;V*?K_G8LpN3z;AupQU#m+kS||g_3h1a2UouE1Oup+m{hhjQ)tecEc+S@@oBl(G{f#(u0M@6(qbo^s#T4J1sUp@A z>tkEbG__Ndt#V5PP~wpMp4YfxapTC#V}iyWk?4JTVs>TPGd@DC)llZY2`d(v+J*l4 zud}QeY&s)ieUby@BBsbOv5=-Jp-rX`!<4K>ba;*bUK_&ki%(!_{7JADV42>ES;vTj*MA zqPzm9U~eG1o8N&^H`b1cO48rjKY046>V2)3u`N4+b0722P`WSvh(a?T!E$?Q(CVin`U!??kNXmBL-aRDpicbgKH8GFu9+w_n;*L$1M3v?qa?$aYxju~4PprajI z`afG{#gFS)g-^0v-JL0Jva0*?{{EWEx2FN9PE4c|AthP9nUS}7t1-v6I>dS5MGw^W zO#rUaGu>9FWA!G)enpKSdRjw^^>rptmyZ{NAE;|;7;}l|iE_C4=|Sx7C6wL#@IKV& zDj!bm_={q6nXDJE%$;(J?l-_(0fuhw<3mORNj8j5y*!gL~vtqFD_ot0Q}f!738Vr z*E6Z`*Woxw6!eU7_K8qVb7|>y_JF|m`h4w)xh9R$oQ)s3Lhoxkf)U_tZ+brHK2e_@ zSWxuuez8~6yHmIqm-C8rka3YQX$>{vero9b0G*ku}*9gO1r5k@Z`$35!zhpUPkbXkyT$B$ily!%iZ7sYX({8paGJEC(b@$6kQsvZDT^|T+R5$k8d5jV>`SFIgh@OmjXjyYQasoY$&Hx*)jx*XDFBLXJvyq^8+EhWfXuBqXMbKX7-xEvmUbo{ zlf=G=;DOQB)!eVj%F$-u0vR^;r+Y-LhH66=V_UYSu(KsqUF!=+5TRQ=sv2x*V%4jR z!=!D*gzg$LD)2-jQH;q+$i^t+_L>`=ELl4`{T!NA<`S6LKR(TC!=U3=Z zUx9bdoT2z&f~eF5sYhI0h64zfQ}ejxwHhS#uXY;I{VW z%V$ksIrV_FJ1_&E$j-Ed_~v1UNP>EEcK`B#nI{3DV+Vc8EM%Q2GEqa*sv7ID<<@KC{c~28ZDXQ%>Cr zG5w~czgvAR!{f2~(d4vdRBNCdb@is8rMux5Md8qM(U{cZFnuk#*Zyhd_K}02#>TO@ zC84IHw5_vDT?81etYgb1Dt201uwHzO2$lyq-Ft?1Tm;!?soUfEgUVv=WikcRzrohk z=dE*XwGEbaY`LcAGjm*a(KoEdWo>dBj91jDaX0vp5lLan1X7<0et&n>&UpV)`LC|4 zuai}S^FP@50XAa9PZPPyOQL#&<0^oFj00|;N9R)K@wAo*LlM`E3>UC*&@~cl(=S5& zn|RdhJ+BkGh0S9Dd{&m#1r%d{ro2|=7%Ib7szTN8HO{-S7B&hS#f(Fyu+W0*Kjxop zXWc;L9?K7iH=ZhR6Z`h5@mW}_>G_=v?^E9NHzdQ%pLj6Y{`X~AH+Qvt1CI3CG4OhJN-bIh*&9A{3npxEQ!3VA zTTUNwjHT6V{2)xlk%^Z05}-fhpRi)d?Fj>XYhH0R4xa@?5+1Y$4SwYu0qXC6#hA?KehBzDylD1Od*)k0qL_&c>;11>dne3Wks9#B@EcL%vKd+f2Q$)! z$KDre*-cR@${f{3;XEylJo`Oo6SSu)<&DFb%RzW=mHMSk_ChEffkkva-ZPkwL*1|4 zs8TY-iMtsQK9ZMB*-{78_c8MPor#?}T>10Aa{m-m&F~5`E^xQeYcdwQ4x4oWvr~kW zrx4CCf?mgLWdiQ&Hd9QVO&ppAkDG1r(S)E*lJf!ULi22%_DJ0`<^Jmre#&_{f^I)Q z?ky7h>iv&RKlOr#GqQ&o9VO`)I`esFsi(5YAdJcA%B71wQpC>I!5aR2EkM=SW)8lM zj{u>R`w%JL&;xeF0!E)l&%y~f6=5x_vd5CH-5D0ORfHCC^%SEI-LE3 z%>!5d7+>gJU7W24ii4P+;Kqp`a0AM9|LG4uOxtZ6SUw?Bjg zN#F9%SAHN1tmynaTC6W)43sSVjSp5cJqeL?{8TJKOd48&~ z&r9BRRCc(cyB3$Y5GROWa{#wdu#Nf(ywTofKkmj+BI$I=eM^(CTELT;gSm|{dZlO7 zE`o6etuQ}lvxF=(4<*-g?w^LhK9HBuYzJI}3favTp~h_adxnp1P_v*ms^1tX#~amz zW5xtSjb#x&!n9*Ysqc+At3P*|V)q_j{kEo$dIWriiVMbQ1jJE0X54ONE(%Z^U_Opl z-*(uS4#ppwarF01HM2!gz_m^pB+h08Y89J%kRe(56n|;dF=3&>2X`ZHdQtm5vVvdI)U+2;>E?A z;JdA%DzN7rx!(mc!l;`5M|!!^xLQx&dt}T-erpoi9Z-Ft9UhF+cNzBxD!BhB% z?^+v%6Xfi>urMcnOTy<*Nad=m^C4%9D&#j+*$rs=B5^((kqPend;koeF-&Wd8GQ0b zqMMkLX36_s1j(=Hz-h3HW+{Oh{nunE0u0Cbhvh(@xB)*5a)evK?Bn~vh;orQsw-Hw zE=eTCJU~{op4oCPyKFzNrSk1h11|ZIU)S}rto@(?He82S#u=dClT7$JlyYl+{N2m+ zN6G|QgfRRE>X<9;N4lJ== zO3;H%sb)2V%9Ym|T&)imy5f#aojgQKEJPm_M2ozS9h*8sMN5E{gxPkuCTj~D=eLLNdS}7a1xg0_ z(>*nDBM_?ZN=#|PwdK-HyI>|NRFm25DYT@Tg=x+tA;iK9I4h9wF6Yu`eU= zIWgED|m6okweZ&~faQkzmeN`&GsFZYi^mW#+bi%n<_2``<|R zu!N$75t*(h{8I0|314#Jq9vg=k|2e-=3ec)=T9isn;9E7{Os*qdNdoL^O`%}o824b za()HAi@otrM#N3)jwb@=_EE8HNVwXtZp;Zv+YCeixwbVqMNHX{va6?Gs0%ilwYq7t zd4&W_zR`STREkfD|53V`-LFl>)=FS!Uwk1=z#j^|SPPqZxU_65E8PQYsat~wQ#gqK}s-@VmzdpDnE_yj5wwU>IW zBV`ZB(>$(QcnX%W{43?J&q-dM5U=ZZZAO6Ff@vvkt0zGc{9k(<1A{c$`~pzGAF+VE#S-ZK1)tCWK<7RW2xS*FEV_I z8#wXP>9qw5BEv}jHCeWJt;y`5{|RUQOuyhmsLuDeoz+J*8e*6tmq0QiRRpgfEdP(B>yD@D|NrMMdykO4%M95UUu0!f zDl$_>vaWsYYh{H(WT%pl9d2FYAW1@!m35?ytXs&H^*cVl$K(Ee&w9OH@7H)fpRcbs zrBGhJd=nPG>k0zQ71wxK&uySx1Ht6A}}{q zCR)!dN3T{8$@3?2En)X&(G8J4^wtH?V<(iN6mAk2MuRO(&&=1arN%V^&xBwZB@4K9pY-JB8*<3mW$r-3ZQ$Z5=M_C*l%Pk9szBZ=FLKVOH z-qM0;g$5zClK|+j>07D>J%K5Kj-YdZk_Gu|8u?VQB)#Hd#6;1xL32G?&r{Mw?qE9w z=axGm?R6yOvs*vdZ~gQMsmjUI{NuW4Ve)golF%rGU8JXi2aT8#nFQSR%y!(l2;^ZV z(Ch0z#0aRqVhz92Qrf+@{tt!;TZ}CGz~$1!V`cHgVg?wZPc{IllL@JfW*u|gQL7_vb9?uyl7 zvgEtU$qk>jnNY+oRkFc#o%&w&QRPM_#;jDn^cO~LM`FEnglZ#6sv3o)kt5$s)f;7!+`uVpk!M?*= z&M>CpD)|k9%~{o`)NEpgf~e0{7yC6e(_=b%QCsAC^2{Ehygn$2;_?OI)61z-?p5{m z0omjYA+D*uQ*M=2YQyP!z=5-V2Y-~34ltd@_{YV121`6Gtarj>dabA#}!%2 zkFA~SK93Z)eyzz-;h*=?t44-3a~^tm%nXXcufJ--1yH^DS~mwDnIRHIn&Ac+&t;-j zV}~pZ^JxjUnP$wtp?&$GK@mv*c#HT37%#fIbH#2K`i45t2*~fVdJ;lQg|CFFH7pm0 zi}2bqnkvr?=Xa$3VtW=`9&iLFI^K~W3?#m6(SvU z0p2HOBT5jBA5+^%3OO~uc9V#PjPeM)E+gT$MQ;&Z)4Gw{Npn6E#eBOkkO9I{U3h-XW&Bm3;!NRYMyoz-G8*@W=Q@voIclX5e`EZT)i*7GbUL z_tUIX`N?bl(lVaLCk}N|dEHZ9ewDe-K&AGsOq{?hg@N(xtMKaY@#lJD)P-JOZoo;m zwAnK*7$p{hQ%-uYzPDG%+{HMtGXx~qb-wA|Ftl1!n3{R;P*J{p#^FX@=s<9It=S|Y z%gg#o?bqzTUd8)=ZT;ZG{a1v(&CN7qiM;^dj{@yoSw}sQc|&4vnyXj)%)EqJ!<**> zeQlU@2~#yu2Xt)Zc@J6|L%h|uqZemsYJXt!F1^gzim*8lw)uDAe>ywanujTx@g&3L z{Hqf)5oP%Wp?Yf>o2C2m&i)tR(ut1$vYoH0Lm8_0+Xl7>XLl>#LuWVHQ3|Z&ip8?U0|7j79hXr8PCDE}AQS8rBh??fEV{vYnOxbc7)@wRg z>b}si;=b-Za^vZUcWU6xM#@%gIP8z~Qlptxi$}q#5th`-k$bMmeeV3RpkEE~?KhzKD* z>~sb!q*kXf9S+OPnUoE>>Te$k6xNyyVLl>yaE#~ZQlkw}02GD?t^WZ+&cosqudmwH z%L0yfL?f;Siej5D4V;xlZb@XAC%DE0ah%!^g8Es4-JgGoIiNq@8}B&&mpbze7fsHP zk2+SrO|omcYF;Y(D|52V`YdFhn{$QM2(`2zz5yljArZ^|NN#Z<_nBfYr9=s!>^sYF&2I87qz_K%B1v3C}o`va^x*Y-TRJ9#$X&y|OQG{D|b3pM5Vs5j()J^^q~yXsM8 z1s|(t>dZBiBjbD?Axkirqxkr*)WqVmbBF5}_xT4mQnKsoH3FTTVXz>j_a^NA9bvJ+lc<%BYmcIrh1z7+P@^5s_5OqPb3!RFVILEVf#rq#(h){>shE6Y^eT3nOx1rz-uteNm%rawP<_*QZL27wosVmEwhyxZW_ zO?uT#`+oDuBgdEDUI_BVL#{xvJ0G5hKuRT4nX!+;Q3M0=6xqiz*q+-v=P8O^z}^Tx zt@Ywk_0zh73@$P+{nw2f!izbL0un$-BHV^ue{{FPe3Z>C>5WB)W$Rzyc(+4=MG$ec zS+dpMdhOf#*ZfhIHMgFWT59yll|>K6%WWCLw8nJ!l7k`Y+N3!&neV@*%rt9#Gyi6K<5aW}TNf`P zA_jLl%5rj&Rgd_kqJaVQ`#QU_Qei+hNfC8%#@PL@xzRU9G{l@Im7po~D>C>KQ#5x4 zYsAWbMThLtmG!cZZM}s;e&a);_O z&QzY=>KU0~Zl@H{q~AN9P8_kiNxQ?ut=^vcr~eag)Bd1?jZA>hrfC%`Xwc&|=gtnPV+(x+fd{lUDYUe!2kY2BHI#{y&la+fC zZ8-^Xv{O6RAru{=4@=5v*>1XiV8zZ@laKHGe)cA3K;#?M*iWGF-4GZ(^r@pa!>~yh~<%A zOgYJ1S4Pa}yyJ~VmcvQ6M7N&V(vAKAdJz(obAI=4r*w0K=@Uo^Eu@9~yzY|Yf8(w! z3DgKRmzbq&CpX94-y2>e^{!|9^cT8TF<3D^&(8+!I!FI*TqFmAZ44Unlq8qWjI6i1 z^}wHkbzOS?H4F}aTO8z|xvg?nb#Ooo+%H26{$a64anG1st33^Hg;xZpddCMW^}U?k z@}|ybB4r^Y%e$Dn%zww#aoRZ$%2lp4vRf@$d^#BVu;PO%)}oB-u@qnGdeJ=7#uiLn zuKb0zmKRro)BI4fiPjl(CqyZL4z_VoQeJUG-E7S`KFWtHl|kEEi-u}L?~E<-t?4QG z=#z6H6QG8@`dYE56}pfe+iOVlm>P@FSQjYL9dQmp<8)@5!yNyqPH@b<{38?@!R z+zH>qljO?&G^$)u4d2H4nzP*ggJLR592G)P9)MM4c5FpJ6HBhmqNo>dS+zk?+s8`L zfo>|n4AOs3^ZsL{sPOKj$u7vqi?!U-Wwh%dEScp=`iAtjcM*gsan#Xa@!`8_!t%B^ zDs0!iNBzIa>cX;!0r6Q)mh8WXAEI~ZVPKVr<_?J(Ri_|v&nET7X+lWaw%*n>Ar3~) z!8KDopW6#1xY3KFbZ|z~ zGQ$(EGwn@9rkP*+SN3S7nE~p3P>&JVK29XEsr&@6XzYTm>QzK97qmoefKU~Map$NF z8Dz2Ne>L?B7NCi+TUNWS)(l-8D~cx6h=(?5LUufP6mQMuZ|9O<0fUqU5P@FbVM_%lwFr(0GvN#>TinWnZ3r zwKML###pVu{8Y$hBB#U+a*^;gGZ7`{l$+vAjV zpFLeMiox*{UA3`i$DXO$78P&;F34(k_r$G=9Ksw`J7WnU66!#&^vLEq+XYCzMloO+ zO@7`|!;Wc9tPjT1O#eoa8Gjy%TK}3HP1$cX{FtZef4-RQsB!K5@F~QJO-Zri_8cqg zO#&y=aP(sq79W+yX=U`Z9WFN;t&>4HtshBW1Q+l&7>SW|5{ZXFS|9^&>1h0mP}%9^ApkMbqx@g{}! zf8M=So}5XiBKIf})#=39mV8$ATEL5_?42#HTKH~8t`sm`b=&m{g86=VYF%3>?Yz2* zTey5KTsqE|Xu=BqX33+}Y&yS6t1(nuc2U8f?JzmcRnGfNdXMh^&8G~~9u)i#fAHaX zFHCwxYTx0;E!8ZV)PA~lGv7okLp)IH@$>TG$c~xo|IDcpHr~^uFYw(vFmQXI82Ah< zl7^Mmg7sv$Zz5dW9)AfA(Fh5@TYckeMp89lW+h%4B``6wVmALrQ3skX%vy2Q1sPf9 zc8K2bg#G=QdDi=vc_hyr%;ki1fC=2an=z6pYTTbC(uL=B#;J$}C>)H1ie~dZGs_et zd96(fn6~)eIO4ZY=37>QP1V^5#%G*MAIJ)!Q|WZ==7+&=#etek#f+#2T!fCt!Dpb0 zQ!{&l;vvzUE75ylE zLuVRJT0KoWu@TPq(_b$x_?xA(cZTax)-N0kVu->cS7ob(e?2PE?X534&J#3lN`HCL zby3D=3}?hlZTl5xcu(Z)9=Os?d-1HD)Eh zzLyAAoGCwU)4g|qoXl_W##a=&2Y0mYB3iD!$P*JA9#QR@$7_9WSxtCKLj9AOiE!o3 z`=X~9aNRfj?ab7MGttGzuw{)CG2~NuD$e0YU<;~~Np1B;G0M29=I%EikFG|<(wczQ z?NyF@9Au`08yvWd`agh9ukzg7JIRgY-La)+Fu?Wm479!$sqsA|7Zsty@b?k0Yw@*n zx=4*t==OxU~Q?B`NaFTn)HZ{kK?AwD#^vuBd!-z zK=abayk5mpp5aser-z z)xXbmk2m$pMDNCk-fHRg@ue+tU_&scjDGl_We>A)Ho@KzHbBz4^2hmxtKd+Z@+J*| z+77y&E{p39_vM~0*Zh@3qh_jWvm|;dzC((W?865|Y;8v@fN&q3lZ4{*xmWz)LV36O ztuM>a1N7T&)4uB&a{g6~A6TBhz^K{~FSuQM;5+Ph>nN>r=-_cZ7Rn$7G~D#!yl5>Kon`SE2;fZl_nJnkfBjs6a*4rGqP*Jg!@O!dI0N_l8`fUTYQB7j`HMXqM`Jyy#+ z7ZLJTRNRj$)cZ>6=bwo3a9CA%R>#mURuaW@mk@F?>=TAO&(^)AAHVX+P>rvo@P7B_ z%a2ES1SVqhrjVT;ikd&~@UFb05`X^5H9wEnxoz%8KXtTE+sEbD+uZlQ1-Bf)iX?=-^65-1$2!w~HF>F`8%e(hnY<1cY^f1yy2=0$Ad z5z9}&!m>V-Z&uBa{1H~DVIb1)zP1P(rBj=`tn48gfi94g6xQ-OCbdi`_Ne=Rn{ZXm z_s93N@l^yEXIdtmWfu8;e61x$F~B>7Zk_`sAme zMc7Zofk^N9taoDnx(q3NADD>!f`X~uwseM?dMAl$37IY2?jMUle6>6UmvPUCT35KRJ%;5X3)Yh0t>2n-H|_DH;q)% z;4fM=WwYN>oSJ!4mo>d{T|?yh@$ZeYhAHOy`b%kEc*&!HDOdrnZ{F95d@j)kJ~E2X zYSqrqA~F_F?P|);Uty4%*i{ExE`Zg~g%?r?BhEbvvArinn3^%b^pOx={Ta57N3Sp5 zy(bXOJ#G1nI<}GFtuRMez-@MXr+H)9GYb)db<2#y!x=bQfAdL5oDbjqQu2t|z63|# zMT7lR%6u0EvwJoNbZuN+?7C#hX?6F!Q|SbdOeXxcRu;AIo6~w6AB0~Z2V92x)v9op zr&Le@M`RDD-Rq6o3oi2llHChZ8rFcOClZ>vwG zI$HtD>p-hJZE)`2@Lko`8KDmauXl`p-oT$fK=e@~c1@*x{mDm5vzrHaN z3!?J=F0k90;Zld5@J1l{O^0MtMO&9-sG)oBXzLHAW-8!$g20Kt1x#H#k1mfFg<_!n zD9!Ctz{b_+=HbLr$&3=^6#s8A1yHsRd zLq8(wcSg5N8WUBnZn$O-|9jhF`l9Xm@qfiO+Wu`=4a(@}u3&jIJjWb~__~0Pm@4MF_`o z7^2$!PkrcVxNBVj4{hwh081qk^QYmw^H@ku9l7DzM$%nm(Y& zfcpfHJNID1z67A{wXd!y@;STp&X03>Azvg&d7%%lH2uj)@*u6YeM@iQnLm%#DLobz zrqqcO+#SAc%XS54WNS}n+}vYRk&kQV{91=N(l5UN?$_-azq)OQZWW{_(t0wYYBVc; zmC@jTyDdk#Xc<@1W4z)A5duCj-9HXqhrc#F{Vb8t(w;ORq>e^XFb78|&jonrHm*x4 zjR&jNGg{o0pqY23Xqn0jgz$||gS@o%mo9+R z&O3NvP?rrS34@DU^v0{M5qbl!GSU!fq&MFG%3YA8LOp?xJ(rlh4U9@&*v7r|CdYziug3aTP#s&-A33I|5hc|oc(L7z@4gt+Gn6|&#G0Ha=S0A zJIxh{m=M;bU>+#YmU)L%1z(U2Znc|o*i<3HB4g~0mcbSiA|~6-2!W%qwVPfx+F;yD zoPxL)4duOI7;p0dVb^)pWf|(&e!@@SJsCq$x0ZzGn_Op$WK1_#x(_A_L)$9#ZM-VM zG0v-=@KQy7EJAhtU}s#K=E`DIPUTs+nF_%=K$?bRCh-U^l}j5%>@U=q^gY<2sI!S} zo`b=05up!gC4D3J`jsf>#!th~8;*t7Nc><3^MMU4Q6>FPNGHtk%Ov!3)bqf1@QoV( z&_m*eNuZjeQwFNlXzHPVTwind-O*;$Y^PA`79>xIotk-+ljljY%Qi?95a)Xd&33hf zn*z*H-miNgulI<-qDBAzy&b9NJt%OYp8kELqdI{U^!}_YnfPHk6Cnt)?&7IGNaSQtsm~FLvp{UlbC}p4?^#pB z;Ba{4Ga4)(D$Yxn9xvEU{vr0^sqgYeXxT448TAOTq%O|qNZXv=Aa<>yRkEfiHBUl6<}tfu>nG0ooX@%PO-v5pR*33Bk0 zD!$l6D~$8nu7}?ec_MJ6SY#}AhmX8{T$aP2__Kh$t=v!)-w>ls~h zW~xVp>(L0vam&Fe{+@94P0c5@nddI8Cw=?3F!Rl4M`-#zRs-Ej7#D29koV7Pf$SDQ zMo#I%PtX2G-SM>BeiRQkyN6bgC=K1$k&n=+j`>$y1AqOOYa0+wTmV<%!#6v~llTA= z%~9$V-?NrcNFuvPhj%Yc`tRNMb%(UuWIZ>##L;Y6T+mvXrUTWjeLc$SUsMYfx!fhS zm}Y}r;ClU=Y3etCqLy%1gX*ixTPVVA-$mslN` zCBgo^);3J^@vat}T84!76|RYeJ=WGS{Rw^FoS~7yEz~ILT+^4P~1oZt$y&Bkg z9SzF_5P1>yLyE&yH|2aK7>Qoe%|FC6asME0 zjq=_!hbNB}k(fC7_Ovzbq97_1pTwf>W1}U2OXXQ3Iz+w0!PDy1O?E^tFnw{)-T>%* z22rzu3IAT(fYd1`*_lzw9Goa{wk2lInJTL%Tl~54;u1~3w505p@K0p#FX@c#IkL%f zSm>KioBwGh_lyr`+EoxobP~Pyars8fRTFQ!%JSrh{fGKo8oJ1t`ewb8hT|tAkAh1E zfFJ}=scAngfKmzjWuD!({~0F?o0)bd!@{kn1s_=D1P;#^F1|pS)*lx!67N>ze`Bqe zNDuKON%zIfi;=D)wBzKHAY*(9tIrnW0|)g^g@fR(=nDr-(i0YEp&zwMV>FS)SXyjY zggFmcnHgt{;rj}NFu+zR&4f2I8a)HOW^+6Dp8W|L_vP_EcTVr73s`j`^;r8&oW{@- z=#Ws2m46Ir&ugvS+ZaM|)>`-^=`|E_Oz(>h$ms2!MNRiViF*Wh=t@~2Dgm)> zzJGCSh?2kL@_Vf(lI>y27`&4ph^IgPdmYJo#LY7%8vG=d*r@{X;?m^Ybb-Qx1CIjSQ2~^q1?t z15ej$QgID&Ur&KC$Rp~-_t>s*m3xq(7tIE1`cE#y>3QG3Em@y^U)@{)O6q0FujMLx z5Q2cpZB1K!aPnLO4YXiS5EO7cR-ds2rp@G6Q<495uOe27a?$xFx7hd*8R~?Tf*uQR zWgAzdHmzrPp?&bue?Bmbg()Dg&{j0q9pe{arqTRA?$}-ySBmdYLZ0NSJJl#>s`ikN zvN^hz>rdeo=tmNGnG^ih@%ApMd&q^*{aOB&;KejlF2-K<)`)3vU$Fm5cas#9n%Frn zQyTZ~id-+<=H2i|*>G5#YU0z__7=W-gAg)3$M7#3@+Qt?; z?pvG*O$YZxX20JkVjlnE-TsjbLrjMccQnx z`7q*}2)^Qo^ra8RjJ!=7;m0%QcxoRiHs7qYIpE}@R`Yqv52zmAv||8cf^-F4n*vSq zl%#$?WyFGl&rxu$T5iU!46UeOkAHm)4|021Cj)J7shtdaOp*BW$?bOun^XkNvv5f@ z3zu{)RIO}aMkb(`aUWl@L2Fu` zyW+sy*2mALC_X5W7i$`v5Yk_D)=Tf4`FVa^Ex-bs;x$^L!~64D6tRE5kWAu&aPsR3 z@&bjeS%MM2!Cl^G3rgR2Cm#=q_R{+>97K0_bSXp*Vm7FF!@=CTv{t(2SI?f+eRhx0 zVrQmei(23}WyP_NDFPiCzjrxTv4`K0I#-!+`f&4mZ9B? zY!zfmOsVD2qA6w~R#2%Wchr7R4ftPUjuqtg)EH=2`wtClhv3qvWV&TrUyX!bm%2>Z zHQs@Bcqgr$U#hYfQqmAaQnLrWi2U&GxTt*;Jyi-lr!RQNiaUOg$off77lh|y zMp6W3ML-gvwm57#8!0BN#!M`QOQTW3?xXUc0F&)eLOIc;Eaxy>_f$n)zBnC{P=M?=hGB(?z* z3@zvj%@nj;V!&zjU#R`AnqH28M(%q^C~0y*_H2K7L+#Hjz(_<>~NipR^WFR7*(%?%XrqWH*dw(MNZUN;8 z3a`D~Q5qIni!p>fh?8J_Zop;!oZ76$`>FsK6>|_|raJ0o`=1f?0CT4Tmg6@Eni?CG zT5*gDsRE&-9=EwyO3XOz#M!vR$j58_SL+NAC1%-H%SO-l;!i{0&nfzSp_!Gq0URw3 zX#P>Pf*1TEY)_n(ov^f8c3PdG-FD#v9yHQpa+sMU>W>r%yy{Tx z2a~ae4*0^9yhmZ*JOSt33>2W4AJMOiQ*DY)BbtK=QZmRP*)ViZW8G>_O z{i&rWR^Houi1MQb>fhQj!G6i^ToUf{-vgE>#tdd*^qE&%-9F3LXnPzd(5q5?gW&Wa z?k7111L-S+arTEc@EgGpoXRYf>bHQ_?*tOg#DCd*%KJ0LWWO3Ak5r@WR8@&Tufh1F z9u=Q!+}Jp>{KI>4i)}du%Ar;}LQS+h7eye*rHqGsgb);XTxSX#VEA-2B)ItNBMRAZ zO0>9{By;&a&SKFjm;AnJpp|~en5peLi9{dVXhgdX$9-;yJ9dA-{tU!>yMtFSY7eM`U{4A1)*OR#uQ;DQ-dd})erreU;4pPEe)WD9X z04iy``BCU50-StVoTNPZAXCk@V8%kPZu1VT0F6ONW|2ZWR1ZY{AfhD_INc?-BBQjm z=H8zUjJg3Y2RRCgb}HqtxDWokM@UVx|AYqLoO=0%!29}PKP>pxgDEg*9z@L!U?}IV zES+300u0!_k_K$3RUwJ+5mZ~6Bbntwnp};r?09x^wU7iiIY*$K=aA}9b^d$!gFk7o zI)&sgOKW13<<)~zh|NHnc~qHTND=ZV0Sg6dKwUD!3J>v*naTCVu209W0JA%Cyhw^v zn&<)|n(FiOnYI1T2qG1%klHDyCVgAKRUu7#-iQ9MlknG(_nShby|E;B^NS^`i{1df zSLE8g5!!hJ{rBRl=XCLhz6H3A_|39HU7VX{2XL@u6lDLITl zV*EDX)B5l56(SdbJrrTkhnXyC=CCRsp;C+QZ&H~;tQDy6Pa-(ayTg1LO=(ec@C)_QpD? zUER%@s9GP7nLQH8*^mU%<1JgBVcfZg{(ARZeFPAr)rqpbLsfB)sswJ}bw)8s3N-b|00f_^HG=ilrgO$Lx1Xjwz4esA$V7!dpmS`Hr0HUBt& z`7CHI4w4S8UNQi=dSi@$kRb8Ylg%$Lb1MNNDU6Wem|IU5~l$kWnV&H>j8GH_Y}37 zy8e5^oF0V0zX6(FiN!Yu8}H|EE-m0$$U>G-ejM0GSiK<;#%UAcKI|d!Kw;pWEI_%t za|MII?eK-E2d{q2y+&jxt>Lz3!$pMHIqO{Ge(&~q2}TI7P#OTWe_8?Ro!+)l#j7-T zWuU?TA#kF=LAV@lGdw>18jyG%WE2N?&MCHCv^mMO#+{8Vl`c~kUaddNFD5@4W; zFY+Xvq9LDtk@srtf8>W<68OI0)v74vnr=k%-Qg(>7{fLGb;G4hUv=VBl)17LIhNL4T@&O`sGN*hjk zwXY%Egh63}6K>DAEOJ_ByB-d@rvS?jrPg;_+Lx_Ua4!qVF?y#y2`i}Gn?ykR-%_S$ zdDkDZHT&VN7E(`tKQ!bIF+cM~M0g|r%F9Xjy?b~tF%;M|6v0{1lAZChSOji{^+xS2 zf@M{q+n+niaJQ82tzFB^iB8z~?H-s0WPxs(I7RtfB65q_h&aKcC=YNUmJZ*q?a9%0 z(4Y5BK}=tUfjEe0Oa}~`kpN~b3ngs1aW$M_Na&yKn5hSbx^w4zmI&b_o$(8%W-OGp zh5y_?p7|R>t-_`I{9DyXPqnqIQJzo)3 zHyxERJmYPDK0JLsq;zIe4CGIEp&F?Uj`O1b>$6PEeE0AkF@x>Mgod~vC{{J;6Kpgx z-YQ`qe6|GLsruTRyH|o5FV6rD{nkk(`1%TNhV^(F)W#%iUK5Ym7@zJ(Swv-efzGTr ztCM|W_O*&*4v&)wQ;*D*R%$2I8d%6rcQANB*Xo-{L5rcL?olB-a1H434pr zvEhUcW1{b}p9?*Kdh3Glq0o&cQ&>&&+F$pzf!HelzxGncazBH_ z0Eg}uw6)x1xzonR0++fHJD;#qQGzp2e3-cec*mClL9^0o3f{^C;C?5y=)_+@Pv;;a z99aJ=@*aiIiQw_+YeE*}OxT;nAgVVl_y3rQjSyBJg*oS#<2ORl*|;g5$JEeGsu}8o zR`-W9VZumxNs1#deXW-6140enooG?M@@UJ@ZygooN}3=MYs>S_AS`_3bB}ZzMv(`z z{QR8fn?G)>U4hsFyV*|(KvMxvRr3c7AaU*Px7%h$l+jTqD)h7%LFWTCMTnPN$_Aw_ zfaA}cbUS|Te3YboLc!S=Nloj{C0(WMYgC2P&W1zRsc={Ki*tL$bsweE=Zi;tMuLZC z8g^q5Ob35v@4I5=bd@l*y7#kImAOF;%t0y)f3^<$^k4flO>z|r%HJ%Y@mckAX&`7G zotk+W!xy$Ue!#C$d>YzlJ6`BGRGlgnHwp9gQKpgq$1uPdu~sdx69Ndmgl~WyD%Ux>?r`5U(}E6HxM&xOnv@%)d;^FJ$y3B z=ANC;2x`1Pe@e|27A4;3!lWW<=5Y*&Y*A&18<|a8_&^fV&YeYTK&3G zPd#s8!RdUFSf5%eU6=fcY1Qv~)W8C3KT5p%Ni}VZ!T#|(v3JI<@{zVA2o678%uV!F zNHrDYCwq-W1V650k>({dFl0kq^H{U2gb;cJa2!CjZ^O@@M1+ zi9#)w(pHC)G%ChXshww1`+(e7t}?Cto~&WpAIzEDsSHWe6IHGLdR$@g`6bjk4{F{w z;h8sOQtSA+&RNkXkAYz}f=h_$PqdVC)1H=q{pRJBYZqB8JSU6UI^$k=h4D>RBBO>% z&J=LRFC2P&;A&h+eJ;@229jDH7!Eo-NPnKz>3zyKs^5;)*Px3QvH&QXdM1|VsICI7 zPU4W;YeW_NR8l^CQL;N2zhRt4}-c2n26wQcvwr;3JHLN^kcX+Vs3f7q@( zLvwsQ8Giia|IO&?j=-01mgJ$2C^UWDJ zQ^a+sBs5}&Dd>0N%uk-Nu%)8)3%T$61kMZ7?LHLS|Dc^IY;lS@CHoQatGW53it3Lp zSvqc+^}nLD=bVK-)ni-OERe`deMNqDF<|ypO_Muin#l%!^G$3k@+l&0hR$^~3cG4Gd5Xyv*R_Zy@_Em-v<@ zAuU8atQZ{jk#wd{QbITAksqO>@{pN}uxjqylR%4VouCF6q7VYsLrK@r`@DvBub2OJ zIHM&2d0f%AjCREXy%gODE*`m~+lxOm8oZDc5y7Sbz4($#B3Pv^O~5aI!X-Blg{?lj z8P7V1uxLpRL)lCFqww#Tpky!h9W*ijd8G*dZ`EVT8y1Ug18Do7oMkM#Uhyx_4DQPf zG5q|l(eN3Fco;n8-9F*4wm&ZXH@<`{e)0f6=vn^6DLrH_FwaTO4tW8s-y@$#w93Fb zF*n9yq~RB740QHuwd4Wq&sN7|M`+vqe}?Q)IYj1EBJogDAbG#LRP5mIk9Yyj`4G(% zTxfIUuQR4*__w3?rEoT_SW-s=pm;!{;tku2<$pwlWwe&D+KfHL!X$Z%uk}RzU^QiAM)aL1#>(#ip=u7^-!n~ zh$v+ui(qh^TLMsX8dRUsP-08#2+{~Rh*XQF-u=xdOni|*2VLOcTBN2&&z-!aNxDsj z1=+bOS!@ttl`Kam*cueig+Y>&ED4?hKt`720c^;N9FSyP(G(N(yR|`4Gj{7r^CRi= zzxPEGoAWr{cVTe1L-FVShvS@IoUE*TcAs|BAdh1<*(}(E5qh}oC2rCk5|jNL1wNx8 zA4?(#TwzG84?Q_)HRDVhY=?(Hg>lJqoIuZuN6ynG$8-HRQwayPr|QoKlct3IPI%&q5@K@=Y6@`L?r2*)3^WaBPi`~YcR zR(kal1{CFVJx1F_>yh0DiXvT0t6rlFyUF6|~*?X>RCcL546HEpI=2&l6c!;@wuf;PczO57#hrO@zkD=KFW9vVDn|beh%=Oi@i5@ zOWwN+gYt7((5}~yXA>9w@9^`uV7lqZuan3@AtY~}B1`yB8Z2eRZsKyBv3OJL)Yo}Rt}mK{AV8))|6 zr)kI3mRPJ^>Tm!%l<=Dcg=MsISgfb%(5i}Wv9ipY87j&CBlqcJhm#0x!qay^`)5IL zes*0I!JDu_OWsp9d8Ex-^HONq=E}qJiUebxbHm~Ud5d`HZpktqfZY-~*#C3>Zz0br z+dqHhIU3dDgP(36r+DWp0Q*J^adndxgR{mrzPu!b6$RYWpl`R1(N4Vx$0vXQ7IdHy zIJnB?&U&P&F@8~S^~(L}4}T;_g*Vtu$;r9zU&N)Bbl6*jh6_*gK&eUq&f5`Hcx3$Z zTDDyMh2n279{4b~{f|nGJaIGcG>wmptI`^Knlyo$4wpDqvwi=%tH^;*98Gx#T~lI> zQ}m&*O!^0TiFar09}b{P_Ujj8S`xSv38~pFIaOzUL*ltSdO88@8}Fz2k1I|WxC7-n zSAxkBmn)mkK39Ey+3WPRulHyLLeqPe|7kP`y3DC$sXdf>XpGGUB%P)=r!U|^Mpv>l z8EuFAqscKFKl5#8b*SSATCMFkYBju6T5VI$@Ki`%I$ET$%u>cL{&<^O!8_`C>r4mh za6CeQRsh=aEO=S%TSKE=4ydwCmlb&#jMa$VHWW>^!Nvm_cS1B@JReaS#S~ZivDRFk zKRj5K0p^)G3A#6kUXyPr-!(T|w~Ai{^qg|_eUmRApOqalA7LCyI)&lLRUq_}%pwp6 zOc=6QF{|f0Rj2QqDNr5~|LPoTZ0+a7Qg=>J)Xe-8Cnv|X$1DN@gaBnMwa7u~D#sMA z8#TC^KqAaYoG>_O4Vb6!8Th5D&kL;>(0aZwc~o9vffEFny8X+oW6D@Wjeq$pG`&SQ2kP z(uKk;Df}E0mPWwYS9sCFzHXFbxodmXjUNe4vF?#2k5itLR@neNe5?(S-O$!e%PVN& z`91@d!d)p&E-wE!7xm!zN$WWn#z85{?YK{%$;tN&wfpnDWb_hZI@H=m+^^aIC{-GJ}{l@0vLrRT|eQHVyU88TwnV%uE4WlAC!kxFnRuivt)3bty zN#vVRtHaSNoYL39Vw_Z`Q!d-Q&3nV>!-tzrwA(EAzOwaKXe)4B&kYCcz2@REw2}wx0buqv^|0fNQ;qiYoeT84sf8X`!?vn13 zQjl&Wqy-6SC6yYz(W4tA1Zf3CX+fG1BSoa81Qs+>qh$26-*vy9f8ZORIOn|Esvj6; z-}Hw%*m~c7Rg-E&#e^Mc-{M)7;xmmf3>jP_VEJ*k9Y`|qETa3}U7nEek_Jz#YI@st zNJl~PAdNQ;_?K*7_`W2~k!9{Iz<5U15`U7qFA5nZ;A6r@Ji!!RI6IWHsqpK&7d!JD zV$7mJhE9o=Ms?v6UVDah>xLHC_i@dS4AB9OM!8(M9QTS;!-_uU(cQitsFJ>ACz50)UFp}&IRY}yba zvHsIIw7qt0+r**d3?HE)R*Ab$IS9@!{!k4}5{Etgb^?kxOR9P%Bd-bSl*3bUB|-nb8BY1drszY8-N0D^dn0SmUn!5jc3Mt4Z4bk1e|-~L$8r)=~*9{g`` zH$zdCkHxS6AGk!DS%s*>XHKw^2Pc+^5saf$pwM^pg8@RcUnmmo#)u?qq18rfAn+$C zA?x_9VG~EttgH|AQ@IUEDso~H98w5RMs+ZT26nxNfH ztk9)8rNesM3XF}k8TT5M3~ReJ+C~1rHv4wiOd@~#zm*xvI^$76;~8U0jTP& z3~0iPsuuwZG^-xsx~WL3#&l60wtz=dZK9eGrsI6i%OQPDN+@=O*9A2SJ@&M1dfdw~ zXwH4*N$(hD^r#!OuJAaG!XLTNFk28c6ffB-hN<2*s_4x!d|y*VOo+08NCW`DzZsCn zwzy#HYYQ-+Zt-2 zi8BaDeDn_#ewn4YQ1or%!jqA2kEdP(3U~9JNJjIoc)_oOaKfYuHC~8UPpLyrU+r=QGfK>x-6(-I0o{ncz!!Pcl*)QBd9=2e*pk6M3_YR+ksL)4Zs+Z9 z9bQqg4>jDx4xCc8+29eU@@J3@B^C_`n=D}>|J2wTS(PfrNo-U*s)h3x*Sx-xr;dLY z7Zn7^*iz}6g<}D$#FwO}b}IGNJ$8!%ooV|lJ%;7Q3l2Z(^iOMTQTkY4rS)H5E*Q3~ zAwLNUL&r(OivOLENi5>5OzFnc7V+HtdxfmK8Z>hzM;#*p9OI0T$^8EgvOP&pf7AUx z4n3cvPo7$hiv7LmYcN9(`+>UeZfVj}3FKS|ro z%9H@vfGmb72qLNN^FO+(|DMi*y4mgg5L2)Y*dBNMtiPo~4~q%6uN0dFIkJ*aw%BWN z01|Y?tpI4+$GUUPKP#Xg?tc$`Y8D%`b0(w^|8VELAk-LX(tQ)HgM z-IpCh8%}N~#})vD#NbEX1;${ugd**2wjB$)VAo6+;_&uN7bZt&Ur7`9{XTUKxDeHNZW&5 zrPr{)rY;Tvu9ZVhY!*Khnx;>50ZH7hI*46 zW+0bv(21>%<#EU{;$EjtK!zJh-_h3WPtF{)A$A=m=G^W375gKv7jeUkGv6Wi$cvo` zvN9qHjZt+!=geXWP%;3CAOi3&e00-0T%~}Xj=0KS;EH{z|>w?xF2}=qKEt5*WJ; z=o|Pgx)p;Yg~Di7V6rD{yIBl-KZIZ@jFualkAsF}e~wYC9oAd@Fh#x`4qAP89q}A# zyZoUR{f`ViMCsybRP{gPUg6(mL$U0U7}FzNPylfIe^6>UriCZ!>@T!-!qdJdlbu-e zd(3mNs^M&^Gb<3J^*nrJL)Ds@7Uyt8-Oa_*@3KP;6DVedI$%ZqD|QZ{Pd003@u=rX zp+59yZzn*4VgX3*({X)~lV+%?7TQ21Qa=kh0myjNqQj3^!IKn^R6b#%Uud3kK2~Nw zqYGg!EWv&%@$q)ckS-|@@!yTvT&6Cn=>Lx*MW2GdVNaImP-y6nf}w{G7mr?Qp`TNS zF>~&kz9a4v7PqW@X=2vgPJFL5fHcwJsm!hVcDy{R9_hWRpfA$S&0Ig^j0$gv{O@CB z@TReqjQ*1U9gbQJ>~kl7@y&g^+!E@pVgjt!Fu(@X(V;8xO-l{DQq`-_crEC0hsM+9DyWgk>Hx&(0kG1Ji4oLmc!oApl3KYvT;5;X_D6;u<3bCa7Ak)nK7) z`R+>~^H0~d^wd+uQbQwHPaW-7@Qj9VuZYGOw0}&U2zAR9%nBzp;!f``9Q>;s+WgY5 zUl9kwsxaCoGPz*q&kvoYyHK0jQ@+T_g|E~9Wn}>L+u?9L#KoWAoXtB)am4Ha z_UumSVNwR@m(lnVGZC)|<(@Y_mzq$H(FF$EI5xigfu>luA$2-_w1iVKw>_zJN@Um^ zy^fatALIRCJjx-v@5b>KauRVawI?}J6G{scw`;9E8%}eP^~6+Y`H$>6Yja|GLZgW<@X(TEeNx{Ip9G9MG6?M2LCZb}!Wdvrb$s?- zn(sXdKwglJH{FO(Ro7^^l#Migto!!JOl-eIdS|b>>pm0PQGKy~um9R59QZQpzZFO^ zY6|4%*8>Ztc_c5)xX8}an9-5qWqbVj6Lh2!wt>#%{gQ50Qe9iyVB6v@n4}kCXHFvP zmxWheVvjaP+8Grq5FCYK(1!zEptcsAza&dQY+t`ghM85G!<$-or{R+r097f_`yG7x zB|#<}aN5+=WZH{A`2v4ZO|@OcqNR@=`CGNk=9VETVMsGWN2uE}c8oSLbV5DS=z2hE z@_DHpUH@`3Mr!U0p9;Vp5TU25Tk_CSUzE7MD|7+Id~{Csh?~8ux43;cMM# zNpuej^(`C2Iw6Xkt#7?RurKAwoM0}XmF5rm(lbvr85|kCzvf@RS~6eOuK!VaXmXO;>*b-7jRY`ESNENWr!8I+H0*HeJC z;ONVj)n6suK4YTmL*9S9RW)-H^^lY3S8yl`}%_lwb7DJ~+EVPSz%GsvY4Rriphuff&@O!<-XYS}c} zvfxafVcScy0Kp|{N!TUTAC9NQNRQ2l6?GN1TA%4^{>AozNa8s@RT^>If5goEcMJluQDaOBkRhbANVHWPl zLGX6$>&h^0^NaKI_Z1VK<}NHt2d^s{BqKxY>iq+xKz7@hho8o*ezHAR$+!(Xi{r(r zH8(75pN)HU4V`%Y=fJQX;R)qb_GYiC_R3kv%=`z;Je$}1W*~2TmIWi7l$RQxzDm>V z@9I!m8&DI(cet>P$LVpKbmxcK)%uyL+dn-Ea^Y|JVcF;bE}Qu}MZw@#Mn2*Go%bis zM)*#HMAzf{U*};`{k(%-sTIsf)bf98Eh728R-P96j3&%m6XO*`+?H-Gjdf$`Co4L1 zrECt$!&>+^^Yx=gE+yZW^}pwq9;d5)B~>dmO5W!X4|}8sR=nIC6v0;WQ?h@vqxSyT zZvRi<;Zlc&EJ5eq2cc58`A!lPjRL7104fTGBuvQ4=GMOd%kS~o1&+f?mWjmrf&5YB zHvTBaXx7&J2R_AZ)I@&z&lY~BNX?Lxh*fqpMjspw@*Dsn^T~h&K$~g1@2mWfoA%bjgiY@sqbf-9JZD!#bi}V>*2J`J#2KQs%g9BD76JA&mX#cBX z?!Zj_T`aOQNUS>xDY53UQyQW|K>RUv_2r=}3*EpNoKHHv^{PJjRn7KkeNzCAlIOT% z5Wk1fDppx7#rbHX{q%gu`sC{@#jV1bz8;Mt;%{!T!-1 z&UTUy>rIe$s1~}zIDX78s6{D<0!KV~ED*9ipepOlJsW^iLX_e3^GVw#sEpai4bm`g z8cbRd+m?D5`sxdD_Nrp`rcCH#AzMZN6{@iXfy{@pX`b&HI!4V@Q%kOzW{R}i8Ib?R zeypjO(5oO;Oq(n+)kX_c2I9`Cx8M6kGhJfCC&VR5Au_?W)zEa&dItS=0c)dr_ZXJe zX9|X=2^P-WP~qMfJPe1}(ib&7aN+D~*HsWFYG9U@Zn?(dGw0G>MaQU{TLhG;+tA$G zh`J3wr@f`+(*uVf<8+>))=YvXN~JKgy(4-&kI$q@8#!KryJ1co%_~eAP7O7qQNj)} zf94}Iqs0+#1SpXpwtsdx-WKhlk82RMS3Z}Bw*N;p78$ulHRiZ9dW0#$u_eZy)+H&O zRYQ?ETE^wqYHi=22s#{E`yNkiyx-~!-1|o#`mR(#>ydpyXi3OpT_HjMn)+(1GOH!F zb0`3zG|7cT(bySQ5_8l$w?Fu4Aw>0b0a>c#fWWEOy|J%jAeti(|CdS6@aZk(fzjUK z-TDy?(mLoQ6opki6LD>R<1VOiCI9<SbQ5^1 zcG!VdpDZt3eq5_ud_mmbQCU^>IlW|h=L-=*9dJR_L0wy2<63V$zDo(Urp;ejJJ`8x zxd?APuAM)YcwQO7>k;4n`o&76VWDmBOHJ?-D@ek$Y{R#lT7I~gYZhDvUvNw-oW}N( z4Bfe>W9{GJH;n>!%ejAPSE$EKCm@9e{uQ#tbcFZ|&5;pT7m@8fqFKc^Mub?AId+Rv zL;^IgcZ~-*EYpByS4?RcJ!>6$IlT9$L$0#uceB<{5F)lW^|q|?GDV{2vh5Yex<~7cSp2^U7q4@&Katn#n{>T4G?S7MI*YUaUS8qUUk!S` zm(>kk_sP`*E)^?v#Nf0NO)Sj15mpKLDa#+$1p2{Ui)`1|>d}naUE8VRVmIlA~6($Q9}}tdw_> z9WLZ*zj$-x5!po`jY&D`Jym&lqMT<8#YBjXZM0!ZDrk_^w&Nzj*&)&-h#a`0W!;c} zoo8u+fv2GOcs9*C+<%qa%T+tIi`2J(v0=AxuS$X*9(hZS^cs?7*-a}AzpS>jwDQeo z?{jL4o0p|3b2cP*KfbWUi{5^Z-N;AGlmLloMm<164)`^cSf`9GUc!dZWw%k$DG6;O zGj7=zsv2;C_<78O4mo!O$SM6fX|oaUr5kzJx+!S1pQO`d8u5h!S#A95Uz<$2^pQt@ zbc?xTU>go1)>?64E&om3<<)Z?J<}Ds_4rR-`=3%MiB!8!#IhJlyDBd7cy`L~;D}`sx2YUDYJcHQovG z+w6X!A*U`|E^7-iO>Ox3&ZEcGkXT+^cH*+eyC&!1^1kKA2f~z}y}BeReRJRrf3CMI z7_jpOOz8U7lW4_l2#W-Ty2bD(pDGANCkQd$trElqlO5$e{B?ZqZNlvDuJ_8F<|AJ& zpv#hW*7lE1nKA~6xGh(YI-2g$(OZPa(w>bS#eD8z0rYGWE%9Onb;mBB8brse^h5dC zFzRa4pf_^*5Fn63N|Ol6?V|%s@^}_dYTrGQSXWn8rqeqFN8(AI@&1IC$@e8OG+{ z=j04}S|o?&Z&hl2{1YSb1DjQHuWa`1HPMnEb<+pjd)VgKy%qf=$EDX*EVYRa_SwUIR3!rGv#)DC&KVUF z(tY#ty=rXf*31&!0Bhv%bY0-c&h5!$J+UC`zo&;FfS1bEVho5hWsvwjSakhh`OkZ$=qjdpZu3ADdSMDsiv$?332Xj?`sp?NV>fUXFikqa6=iObw3Lki!96j5Qe-MV?&ure2B@YPV_fA zs+lqs{83%DUr$T^g*HrCHEf}%AwQcd|6Cdt^0(##?nNVbrQUeOJdt-$*EeJ;ZSC&i zys1vR13r{OZ1Z+;)E7h^VU0Ld8mQ6f+H**d3{uJiN}X+ zSVL9<{|->aN3-H%N}AAaed{!a-#0;efbD+86x-8i0)hw3Z~qM+Z#{CZ>uKs~YKkyd zhVPhkB&*^+n45J5Gqg>^R2%*XzpGQ+Hm65`+j`t@uO7}w3rInei@0BbnmSih2Uqo% zZLbDb>hc2|BL|J%PIb z?c-l86&HGz@sBXXk_VQ#fRET{O16syAarZbT5O}GF71XS_T-@`0`=V%`X%!-(;?2k zZg^}SXT0=mRF9+&+git6y*r8eBLnz8{5cyGnO8Dz_fWQp@O?n-Eo`Ol-WTjMqsZ`| zv6jyb{=^x5Ej?~%a#GrRH5cU^&_|`iUX?)K@eAmC%8_tfo{Ut?pXW}&WV@f&R z46~_xc|1i5oPSsM{$jpQfb! zt@qom&YNxrRm>GI@_Ko}0lY=feti&m!g3J_zS>nSUd-ksX+(>sYk%&BwE`S=Sdo*; zZQ^JBHvQ;IqKQb%Pp#C`?F{zNzfnYL@2)eRuF<{8pDeVTFisSd#Elnih3z zE9NKJ^V4GrD9+0{!=K2^d~@wKkA4wPm)!6vV`CuyGi#QDq`>ft9r}hR9=w zPQUnj;=)0?pNXfB#oj_>buf9Tr|qAe#j3m;orzlbw9q_S=tt&F3>LNGuzKLq1LK(| zZD_H(?xWi)%V&oUsH8kZ@BQ61R@AEA9~&F@KG3)wkCQFU5ye{(pGLZsex-(UOIS)# zgJ)TpRG~lcOejN&d{z`?OZfVGujqFuFvH)Q?##l&!@Ie_pYJr3A5SuO@9Ha}zLsIT z&Sx*~#;*B%W=cLj_h2E^MnoKSUwE5GRoC-yZ}&yb;;&JlA@9N{I8u>9{jB@>V)k7y zNZ|1wihZrix|s6d1`J%bT7o!m#qxsM5O^Kh; ziWsl=TZXoMu0WHuM|BjEYxb@ou1GP9_uYTxmp?mFhMn?t4b6ymGr+#%qsB1z_>KkG zg35wr>YHm|&toSoP%3J;klJ}chD zT+W_f`cL>CALdgx=;J)ah6T2ob*y5(R3-%B4edkB9;Q**6YH)#_UB|HyVrU`50 z0WVTV6k4>GIl_uRUucRX`%t}Us_Ym)Lq~!yy{X~%x8t(+iZj=Tst7@~@!KeunAu(w3Eo5;&8x-mbqCjeQDD0#UP=>W z+Z(Nmssbvp5O>Zp6Xp_$jo9hWZr(}iNZB>btj?e$hhDp1Rh4oNNWE-ibd4o?(Ukjm z_n?`>mPX0he~D47lcECS&F#kAi~)OsWs73r#tzzHBLg|d>8RRVY+|4s z1AIwxer4$%-u#}_n-lgdf_ywMXCtU=1$Bz(D`|Y8gT@DQ;+WpQEAsio_GMo?PXzuDPwAooufkg{50s3$Y1ZHE17 zAl$5S_OS%*z^r}aR-Dh#lKAes7LAa+%HLuZEIS`_ok#*bwI+DoC#r>5=|zAv=%c2fl*JWVOdMLfNnNaqGeXGti-c54%KyG<+EH%UJ zdrs|8^1$P-{JPQCR#=aMiW~6)4@}tZ#-|rEByng5wxrHK=aPbR03_A{86f~A)~ms= zwXUMU=;*qvy9hi=zu1%&_5iT|kxis{hnO$(!Fc>uvQEuHPKRTDW&{ zxL0hOas%2Hi*$j^KZ28yR$27Dad9ChJ@AH=K^+otcwWU~vHr`w0z%WYmPyo^%O?ejv)zWAHE?i27R z7DOE@Ybh;@oYO#i{qP}6JjkSIgn>^~pV6#)(4PIyE+{%wKn-~>Co!YGXb%JB2f7+T z=)b>y52By%fvkIZwL}J|rqF|DzsEPF7V7Ogb7YD_d6lZ_C7njCPgWfnm=76Gdkbo* zN6JK^Cu>4lzYzoR`kV?%$V%G)vZz8p*k0pl5ghjqE`0y9tlZBydO>Q{pi-1D&NZ9E zD8`liehGz-ySUnaNX2?YGDb4Kn+E9i*qGPJL3{vk9v%I4T!W@0`v3IT1SxN}wVMSJ z3&T@y1jvE8=y7q@cm3Mt-DwF%-p7m_ol0~iA#2niwqwU?Hyan}84wS&f#RQnz$YS! z@n1&dEi6-BbanLGbaXFXj0F}EY5Px-)FjEoE9Tbn3wEDA)M%=+rLmp+9`_V1h=*=p z4c*?x?;R7v2oNJ;0oz|yv?b!f>ksnQMpAWsrTWGQdO-Ki7a5?V;jRJjb&_uS(cLJY zWJp`s4i%a-k~9+T_kjbvq$8K!#;9>J@C*nIFf@&bgb-d`+VJ+d=WJcq61!b!B#bfp z@(i**Phq8=NcT!zG>8IHpXK^=8%Dy=?(0>(`VYg`-)gqkQ8wgM);8e{$qfpZoCTeX zOV||_bNq{KqnM!C84#Lqi`s(t>zxkgn1NprQ+;(7JB_i<;sR&#wClxBCZSvL!1;Vl z2LSIb<7T;${nM}HXiHADCyLWHu5z=RxNF-Pu;#OquYNi>QR1n1P>jgu z4i3O^JtY#v#w(Cl(E+g@E}0% z03&kflmuzwl!LhV&1!^f%|!JZ5RrxN3H(DX>fHSu-eP$bz#7d$6#-j*?Z>;lvD0PB z#?GoNr80W#mCm@^6NfJT1|`6&r|qqZ!p0?_lhn_S!?m?0sMD9wA>#do`FTb=s|M*_ zSB>f#&6jX=0maoAYwJ?dk(Z3hb?b&eqxUn5B*pp94JV@dZhlaXFn`m=`5m*ypuo%D znq27CXa0lo&J$5vToZ2MQF0@L!4NtNJH44Yya|ykW*-j6-2+WDsg{rVBx4ae-JRr@ z)dhZg?lnLHgakcFroH)qc$c-ljZlM}+J@i^T^zQyu6n6@KTT{S86OAkzn4hs_DCxi z8g*c~&ugu$T-}e2DKQkNY2~!fys;{L;G%0X#d48jOdXG`k~6NIUbSGY)z%L|gH~Sz_&`Ib1Ynd_HRZ<8vDwOrHT}u53fy-z8_Q{jmmc z$caqHz=_+gTlHcilG*kTg_&Zp!^5P`SBImyZ;p;LBNB-u*uxj()5~}w-$D-@3ILm1 zi>rgMi8HyAYnu&OL&y<)BuAbEU!J;q2;cAbdY^AGs#&}{rsS6n&|AP#e4vnZ<>f)t ziI;`4H!`frv8aDJqp;+a%8FLPktX8i&u92&Z`~tu*s?Xg>=Px;tgXZod(%nyhg8xw z5AyBbhK)9&tQBnr|JlW&?1!{6U=MP*LO=`=*y<3lVtj=)D`?VGJ`NN{T?^m6Q~maw zjfN87hDnbIOkcY`T0Z0Yo$K8->QVS-VyFGi;fUiikuqXvLvB-!Z#2VC_mEo5kT4=L zz=QUyA-;m)`|oPHM)j`3;$?Ugfjs>%9iZ!y&lG%|;sy{4^jKsx+c5`by+m;3)d{v# zKJjHfVULSj3vY;e8JiJIz}YMmY^(1!nM-jET%}*Qjvkga(s2k_*%hU zzYX1u5h;>}2*TvC7PCd%cYC?bD%>}QCAgi4WYa$;$OM;@zbA_JQcux{_Xpfl?@a zE820^>?8*jccNI>!UDD`=z@SAuKU{YUw(QO<~`F|ChTAmdo6s}@KsDV{zYtqodW^- z4ra~-cA5zVzd1yC#hiXZ6-wo?WV2;)yd1SoBy16i#BG9uJO&sw$YGPHMS!!`o^Yz1&bs=F)uLXVpH{ ze)qQH$f_tR9Gw?0#>LnW(KmMx10VS}K7UL;wmoUg2~J_VwsvL~Cpmr?kEVP$kdz1i zbsI1U^8c$47Gsr^G6I!Tj_Yitz#;Sf=?wvOFMnWE-Yr&-N@FR6UtZVN4bVvqyK!P; zBDQ2-ZA6zV+JdE-!Px{UDfBRNNu}2)L;dj=c$of6LLUc$om6;c8mmJ$)pxk@(mNXs zxrMb(T-DZdm8_e?n&4D62zrDDg}>!>_GX<*X!Y^L;_R~6-;EI`WNok63x6~twzvgH zdI}-uHMK2xxvHz@$2&|g&=nXB^5LEc05eQRXKTutuPwKlq!Ya=TW+rK%@Qo6zTh3C zn?nJPBHEH$QU$snj~d2*TU(Lgkdl%GP8hA{v{^{ROK^HNlj}Ml&9mzBvGO+ItW}(e zAe!l6v`DNV5A@u){yny~QM6CKHxpS{q7d|p0)ZtfVj@TkZm&rfUKM%X2>R}E-!7VffI=X@e>T!u0Kv0MK1=D&QlDG2NIAx_&5g zZ8hsXC1%*hUxz5BJ<&^Hc$PXIw@s7T`#D0LJM1>ZqEY5T7bscg^>>Rr0CLgv_X(zq z<#PI&=uM53nx8CFZy=_U0TsbAkS$>~X0cmL3!8Iq@|pWSw5|I7^h4uV5jXrXKkD_^!;X}@y~>PJ|dD6vQ` z^jN)-3ZqE%+9p+!7g_yrC~a=f;PLLPWa8OO;kWBQ{HocDK7X(H->88?jHVTG==-zx z8OL0Ay`K6s6&U=dI)X`#Gzz1SA^(*UjsY^h33V9HAZkkg=t=BH$Y^=2XB#Ac--(YQ zIrb*>Wk-!yd^BvGmhUd4IBQL^*jCkRU-yg={n`ENjF6|F6>UI|B0eI#NR~!)>Eb?~ zNcfWLVCd)m_qay(O9C5p#4dP^&f-+h-|M-46TU+kaeWpl=<^naISdc_GDVQUrz;Lg z+vl~A$*^TlYAZRV&&5;N`WG#b5JB@yR&IBso~`aFB^iQ(Q_LT%6%QgO1YyL ztfK8+!`EXtgk`t5|0)ZvFV*TAvN!dce?1%5ICi$aiH-Gl7BOrr;C~Sn&i+}c6@Kr0 z_d`nbS4#979*1c;!_ zawx2^p8{X*A+Wm7Bvz5kmlZr)0di8)1*$zV(&`F1XL%LrD5QQA=DuZW`ezyA;!x0X zJt#wbWXO){5a@RK?@wz&WZY171AgAvlyPB*#52vPJZi{OiFT8yJzU!vlu~`Fd3kAg zNa#UOypO=ZB<<7i5lZjca<_;eorCm0J%0||P^MiT&Gi$^%L&!p>C;bB5u7_$q2w?X z8EaWR?;I38%IStCpzg7u3MH2yx$5X@fSzx_%v(bn5C}vxmT+p@o{1!1duk9XyDYz3 zUsf2^Wi`@voTPRtBXgOS@opN(I#?ltFOQN7eihwb-zN+1+QEnOdNX*W>Fx{QT!(JW zeEjI_1UzaHMoU;;*^29dVK8QC28I@Am(xXoh=< z$?XJc`{|ElKSK*rEsY5ErjlG2?Hx@|PrECPR15c`aM%+4+`qoaec^Gt`uJre;n8Ci z6?>^9VpS4*10#ehm`iy2wKCdnWgg?V8;)2$0%U~Z zK*4Za+h;yj5o9@JA-p|FH`>t|9ARa-KFs|8f^he~o26r2qUL?xW!t$6WSgz7*WH;%qy_Qo0>|6+kjOD^K0;TEl;Z5&wDeW$7J2R#*}BGiY9CA)OGn@ znjY^UM(W~Yz>~xVlhZ@N7|;RwaV3Ag(b0U8M-c86=5wJ6waSz374ryL4dxsEvrRX* z-RDe;REHBM_FwfbqI{mrbjMdXIbm)x;W9O&5M;!BjKnlO%)hoIjqIqujOW1^(=nj^ z(<>z{$Vl`1jRSUoJ+}FKu`D1%PirR!*#IALpKSZdW7|42nldu1X^z>6*Z^^6qSW^P zuqzCBTwfuzlD)ZP<75ZxXB9fty`-Lx33hLTHfD@Cm4bInczb(YZiZiEJPu)H-F)z+ zEbJGt-(w$klk|br2?L|GcX{5fpFt+E<&;O%)1K%VVfO@0m6eb6$LDMZYk^H+c~jkn z;;GqHlwZ9CFqOpHWItJ*b$im1{lt4&WfDhH*Nq5vSziuWH|Pvm`;9x+&E~P;D|12T z##9_4b}^=T55XrcsD-)ej9}*YZvL3`NzEb}72olSvy4z~B?k?#)`ULLCYlMu4X)w= zQ_g)SLD{|h_F#aj&t;zR3%<{a>l!Xvaf`E0)>|`m|!`$alN{t&z z1TW=JS5P@DZ_o+?Ht+*q+H?iqe-($C_&Lqns1>cWaE3IoKcl!fFm7E}UO`2 z-$fh^Og~lT8V`k_60{8;YjfG_2-_1;y-BkvW?t7>!hO;-+U(|+^{Oa#M`Z6^*^=4R z{I3m=RC!BneF9&g%Aj@!Gv7t4tG}ny>_S^6&Hjy3qvg)>^h-~VcTw<<*+pz`O3Bp4 zrJ$c+P6qnr2i~-AewI97ImyQmW$Mi1faX@BNtoa+cKpb{8xqTYs8**k$9!dwItP?USD8Gp?^qvwJupUFNUT| zN(4hgv@c&rwb%a~d6r!C7@Gd1fZ4KCS7dbLZ%9ap_SIW?R<@=LxB-ny1#ccY_}RCP z_cnV^mn-1DiWZ7PGH(HFtRw063fXG`I`V;Yg>krUXqi|e-;i$$-X4c69p`v%8J(FK zZ{JFvI~zMWc7i&3^_u6CHYZ|U)x(S41m=T6=G32YazbS`UvEDR?(o+JPFI_( zfQj9b#@m<6ZZ&wzN)n0VKl~HdgVUpE1!2GkOzLcKAX~iC7iD`GBl;- znu9QlDqX^c%F6yFS(lS9xX9WkooR!CDxkxada34#8(mb9s-ClKGBAJM7Nn}tXE-tO z?=fC)@6Zh>G=rmjUxQ|%zH&xJ9X+iO?ZZ~BB5))s&3m&-g*ezf5;*t#I!M94%idbc z-UL}iyMc#5e3J0PH$it(8tJmE&nDCkSv(R~;hBRU7-KJfOFz{KT1Sq*c1Sw55b0+P zm3Zs{f7>%Qbtb*s@U8LUPe9EPDOe{~@$0>XRKK!Yg~X3-)`4vXm2jp0?FGz%7KwJ=kIzkL0rmuomwT}~-c!Jf);y#K+V(W4@Xd;0h8wZGZq#S(3_ zSw>9pz)jflPl)~z)52C#++kPh0ge-Mq1mMN!Kt7j0AWBP9(HE^x@dM#mSx*4to%*| z|x*{HV-l`3;m4%eKes{7G5NXLJ zA1B`h^nR3G)E7FeGqa4_^17DfdmBu`@KO^aswIcnl9h+PR%6XS_FI{l;wWheoO;bM z=HnRdIYy@`XHfE(A7K*9Bor$Wy&a?yHeIGgJJhm_ba@Hsm-phScYusY0nl;Sg!e`1 zPhvkZ`Py|Di}ZYg30aM!9GInN3I}%u-%#2Pw;2Jep(H&Xs6NcXtFz@dshIC(L^?&8^1wK@Vz+wO1^DdiY(P@cm%G_xbL%XzHBYoxw;6b`T zJ4y*q#H9XmkO8G{1h7FsLUdxTsxiQ5q%mKx>gSw?DUHqfuC*Ox4`e)5 zb~@g#@C7}*cuxCS_AO1QsagIWT1Ktw6g3f*pco0iJdK(#k?KVd-iLkkuONDG$Ex8g zhmQVY$o7|pnu)EUp3x|zcv?5oG7qH_+Nnhx%laL~Zkr^_y6+Rhd@`~nZoP9D@T_}> z9`W1KjYCm6FnYF}lx!h*$oiy9SG40b9>JGeZni(o9l)NOg3-)2v-mcnrJ#3D4_2P{ zkMDRBw;kvJi(9CbtnHCr6_cfYtymY`<>MoM28hk<+%94J7A4x#f%vf7#O#m&;r^hi zGf*VeJ~WFIEht9HCVZ<|Czp0c2zEMpAU{#Otna>9!dDEh-M2;BM9aRG`55}qA5t2B z;@_zjQ0xE7IrfcD@*xf7ami?AiLP8N@kqL_n%sb_Z8g;#ihIw;UmW`7^EDsyem{+o z7Unr9A$^;B)a-(IA~GUCH)BbCyEkymW3gs)X^8wr=%qp=}{2e5-yuRX*(f+Opw4Zotn*WK>fzl?5deo^xM@zY#eyve~82 z4=v<;|E@2f{<}G_-J-UGubW*6JV%21e-vGZKh*ypzdL*Hy(1%`NOv{~Nk$1@ z*%Xy=Co_AGgrX8>lLk^`-W_MBvdebEJo8TEjywGB_qe~{bD#I;^?JRZujjxeQeEw? z9XCluO-D5hv4yd)aTjiF+)wK{pFx^(?)8JF=ttg_TX=~}rJq=ClDB-Yd=Xvy_Me0` z6E3*^MalO&uY6&i#gcZboXv} zt5|3a1G90OhnZ8Jj}EE#sx#b)UJa8s1+z%8uluIw$+pcawS0DZq`iu(D7n};&eFZk z*K;gORj{N{?hFkGL3SFwAjf z;*tKIjJbRaJ#2lMk}_U&E?|allPL{y-2rk(Qf{OMQN=#UAx|MFI6rxEhaWE$qbo5z zL8!5}Lb<$M8E7Sp6{^V>ql<#0%ihjRS6iNmfoE)j7 zau+JXVwtvo{@ppDxQxh+Jl6QuAliy$%llu|Jvuq*_wVwASz&ZV7IYh&pWm`MB+mQ! zUisOyr8h)w#@(}T6v-~#ZsFnWY_O{A06evruC}0mztybyWV zFClXlGFS&)DTpuw>*rWufkk5ixBvMfg%)eyqwmV~K@Af9PY}XIUW3>5Ty9``9P^u| zUl=KBjG3(_ZLGXg|CcQ;ol zo8(@QiZ{K}i5}z5;a@1rG|cVzaWi|1F4v-e*uuvXd3vE`x`qXS^<}TRP8!V)=T5I- z`oB_xPNi$ZIV#Y@n-V+wbHm3J;T|Gt^z?7J;f`c+$Wqy4Wk?jaD1mEJf^t$(h=q2= zeqFyCYa}bVXMG<6psA%$@O=8ix{`TI)ptv7#XcfdQ_P=nq%7b0rW)z+nH^FuP zg@{c)d8GItQY!`VEtM)Y!u)q`?Ik>R!Y8Cos7EG-})J?($#I^_h&sf z@1_6o2kpWIUF0-TVbx!=tLsSkXwd_k%UmzNXaPh7ZZ040}SG+~|>E6c`DPE#t( zbPv+=AQm~vg3v-bq+g&v@J-?ML3q&*&E>1J{Te+DI#x#}Yks}=CoxxKX^$J$1$g%_ zPA_|OiUZl)ad6x|2tUN@TCWIK0<;Drk{KYEL2C@?lWm12$4U;ixPG_zEq2!>vQ7^4 zX$(im7U)kp7U@sbh&&e zvk78OVd$_RtT-q@9?&W5URBd_y?amDYAslR?jbld(6deU!qR+QkDloF^aWCEo{U;m zjN$XR432e3g5(YL>N87*?nl>3%Ox*iLbotoHC5ijQc3E8__*|@?w&k%KOq}FjIMt4 zPUINtS&n>9g8jd2Gqj9i~) zlkUDqv3JRRx(BC=@;Ln_N5MZ&kDAs?W5bE3(wC#M?>4+-glLb3?O6XI+uVq!V!Hsq2v%Ome6hglIRv@PLfy_H_I>i6#GELfqE9VdKqC$d< zZr|3prErWS6NH~;EMS#1e-joF9WH?4BY)<`M3Ny>twGd*d$4rZmX>8u)BDMmF;Tw7;!d? zVW3>3cKv;yuz+;C1k>U^Q}(n69t2;~+GTgYtXdV%!7y8@oe3+KynBCBC+5z}hVuqcam zK9u-5?HToR9=i3@)Dn2CgeI1L<|d7@bs-KfpP+2f62yCqot7`>SvSBE8^rDO*^Qp- z7BVIBlAD{{Lxr$8o*WR8nW?S1`(wJgOwji3RkXxE@`smm)sDM9Q>~7}GH;hYh!StQ z%p1}kUYevc^;<|P1#kAny7nFXPGlDzB)LpnD2`bha1SZ<`d;0ICxSqd^Q!s4$Psy0 zB{~HqG6)nCTuHay+5l2+{yp61#Brw*g7#fKefyoxQs)hBsEI65&-OrnB-Rj8Y zu{=0!>#&JORLOYI9+Dz`is|>#;qhZgLHr);?YWdhdIV1Ku)dSZW4&0c9ow6h zre>=w+9mKv9&X#@7MdiYoV0#-CO~VCg_L1Hm+*{l(MQg<;rr5{1+1|{A?`cTV^`+g z*w}-%7t2e`!pCu@C*mbBowNE0*(8arsdYMiF?qGYv!pj|(Qv~eXQcZ{FF z-vI;GBiUUqcvQ*X{mMd{^|R#C-H=^InC>uAjuS7m$LwgE?@f;xr*msc(iUwM(?K5* zhuuCUc-O40u)vc(6PA=*&hli#1odM;%u;6f59s$48BI&lR?}Vs$X0rGBnF^x|3C1hDm#i@XPL7qtgyXhclnQn1mj zY{b4821KZ8H>1y)Bl1K!9^;-8G4AQc>?Q zj!&_%`_qI)?nf)ltQ$DFSJ0;ZfQ4`kuG<@%IEvyDTm@FlKEnH%BbW^@z;KZ(Xeh~4 zD(bzPUgSUJzjUH-NP+}Tkqc8_#@{*wD3js!|O0Box= z>B61yhdO^HNQ+L0vu}0iFxb|EfO53IKbOR<#~aM~!;OGJzE8^N(QGTBfSB~51h06) z2y@Zt8f}U%M-6A!t;mm~62=#?i)MIhNRE;rdOOnSksw%<5NX5tom+RX^#i{O027pAUxA@0~)JSWHBKTp8v~vLT|4HX52=<4u3|Nx1*(t z*g5gaD3<8JuAn3$jo-b~k@xqgcTo6iwj_TxUROCy7r^K9Jg|F*!k5tR$nac1gd&7Q z9axi!{eY&n$k0XZS`KhQ$kR(v9W7H{&pG@kP3siFf_N!EEA$b&rYQ%-CMq_Van$e};RVz7U*%XiOho4*jqAxCIMMUa=-Sc$Sq>5$A3wmIvo!_h-E!}1P1+4jJ= zH!g&_yq)TgWzUxp^Pf<*KPZMSTKB9MLkv|1RKCc^ZqxqQDWdT99dQ#=Dyb9J@sYSi6U1b=ZOf$eO7=w2&$*JK+C(IOcd7~z!H9I?3 z*1bVdLaXFf{j(EsRLp+=G}fD`gBMrc;l&j$;{1Nrb~bwg0cQ*TjBaPN2f@9nw6JX@h`w!gRs=*b9uIyy%ivCo4^y3Z-Os3KXO?a+{)G9s*N*(xw z&)nFcGnV1t0u7J2{k84i2M2w9q%ZZfbf)r=<5?o?s#6Ntor4*#J|U6zT_DP7WtsBZ z_)mno{DLv*ni)wlWBy;^dL}65odLQ^3>2w94cN`cp^2zi?busM#h+^B{Nil?{-`f2ho>h63fv0?e+7UFxqp0=eT2I2UB)r`UCVk&8xS+`wqfH_PAu0 z1F(@{C4tRFHbInY+)_{6HWqJ$=ik4$u{fuDMPC~cv$pxJySp2MSsu&<=Rvqf&xuDz zvuL<=w8Tv5YWosuLR{L2_<$gUdBG1>k0QYyw`#DV1!!GTsmwl#tfKOMij z%{Y4cW!86z17}08E}SH9x<%6na6zOy5eq(k9G(CgWUxLMuTm6nBdYYy7beqj8Lju| zA;HieM8C7aJiW#{z5|G)ADp*=jZN1cvG*bY3E!|!Ljtn)MksnAg|$eCJ9q(Z)$my z7~|gdhI_B1cX?K@dmV^AAqq5msresiPWK%#N6H69kLqU6fWd<|y1LgKiHaEvsRS4gS zwubKy+f#^HJ_i3qs6U>5ySw%YK8|?T1uu@efXrI>!04wKWn>c~MiAtMLPbh&Pq<@V z`JqQQ9Rl*w&q>uq2V|U30Gcq9jDFKTP?$(WhLQk5?U<{`@JK?cY;l9}gTT&liNuD%{jX%Tx^c zX{K1OkqL-8`qaV<%OSoj{i-U`@H~I&YbCHHIefcem(YInc0Ys($gLi0m<=6u_g7r z^b2h#-)_f;x(MILZ+8W?^eV}qn1XiikgFq@Bl3Cs&ND$jj{1K` zsKvm-mBUgr{_w>Gj?oz%Sgo=N2|Vhuz=WP3pSu^`jP)Fa#zeWPd_HRiYtJPWsmcv6QG^Nj_}4O9*&AT=D~2Y1Fly@FOE*sVI<682HpWvK1lbr!2D87O=34$ zWnSH-l)F_V$ZWX1EXyp?c1l^db8=o{Y_MY-^-A#H0JPzgpRHE6bHhZE^098<$MbWK zjT5JNSx{+@Nhehn!=yL5KNOfoioPo_sjGq3xpmoLE$PoEs9w6v^kt(VjmFVU)X0c7 z)MTTiImIUcWY)D@?C$4RMPqk^H4j(!8@fzTaS!rXVRkrb$B-{f*Q(hi;CydYh&N+p zNQyt{Fnr3Q#-HR8+icFU_z9iO*s5VL2#E+^xDF-S5OqW+uN6FGPJ(V$hx{M^)7U{V zLf1SmdrHx+5OpNNoki5?^c?*aS(L=$yNI~7CX5bN^m79X*@~oZMtZ@Zk59#EqU*CP zK+KVMfs&QD+K|A&+-ZFq{ZPx4E=K+Zo8;+nH^m!7rI{-ty8RFKbudiy^BFQ`$?O^c zk|78(>uv^27@997YjmEHUORmW-(mkjoQAzrem%|K`H>RG^g!>43}$(0=007ithri@hs-bdV$A`>IJx*=yjCElzU)Gp?=~`0+JG97f~tM)X&Pc;9(o_0 zhyLT@dN9U_c?dOwm!-M-Sed!b_27qjm*~O^|A(&?2RXY}-p-0`d%KMA?IP7BFW>_8 zI`KN0JR2n*{A@r}2q&I7$)ApRUV5gcoFKx&1XGDHj0e!A?w7{=jT4OAla-wCkjV#U zVy|!+#41NI8^CEwH9A`b)@dR5zAZx#vPn!A>tSKWh(rDf{~PKWZ^F({3^bpl)jmn` z1HpQBg+Y%LJG;>2s2zz*3mQ3eGva(nM!dk?I8%1Xe`H2>*xTw0HEp+ks*qfo{r(BI zWnwhDQz?cUFHX{YT+_%#ZH2$HLt5eYBRA)8!A?(l0d4+TKfRbGZh66rN=y2sgA24( zAD$!CdwveY-{N2xz*miq*mNUXXW>6zE;6D>2JLkJ?Ojy~v&i^G8Pu5Dgys zqjTUj|4$=Xmq$wpCs}+e2dJYw0t^|71!7FPoe&=YO0+kBaj`60k_wShoZdd%QT3g- z?n*EBNFJbOu1}d>N)s=3{L061qUP9n$Zi$iWxjg#eit?RL#z#n^LiI7&GCa=wF#Zu z?s1fIdbw|1c~;5gzv68uAB{Q27Sv%9XDizsECU&X>k&$NOhgoqAwsz3aQ0$*YIQYg zcmwL3AhTUTF}$*Q`|Ffm1j5pjr`0O&=_7d=%;VCwtDIHtQEEQ!|E6Xi|LLs`X#8UK-4uSu?g|KQ%9rAhRYL!;lnV{_%lnNwYP7wXVEjo9V{;#{Zn#cTaVH>U*e*{(S%TCXBRJ}rbbVcpyX1N zfB|6zVDRga0x`CEf|T#9wI=CRC9(^@nK7nEZvIkB=U!L3+?=la-P>ZN)g<#G^h| z<-JGj&=g1j$RaKOT#L;sy8O1wA$qs&V)v>f#WI=F(%o9!WpuJpQ1*0Nv9Pwf)iS|j z%Q`?TW06Jdul5@z_TC1?*~i?z=+Iha`_>IFavmlDx>RhxtpA%b!j-b$uUL%BiHG00 zNhE7%g?5?R2)|m&x*HcW0^I$U^NR}?`sNcC`d!%l2jM{x_W+%jEC4}O-6jds+dKHb5J$^}{v#02P)&l={;@SxNmP|FTfh?U0GJFz>a*t$VgFew@6sh*R_bMnUBT| zU5}3D5y08gufhijaHh5r%Gzmr0y*!D;!oTgQ$$(&+>vCY?Dm}yr7yY59tS2(bEYcszubhY*X4QH(Wu; zOHUIl+<>Jd!*M}+rq6flB#r+_4%ppAqadF>i1*6Uc%k~C!Mgia2_iuVkzKcZ6U;eG%b*3$Vrkg}w z!AA%z*x2N86yWkBE3>(sWWg`-vS=lIW*;koDE%vO%K*1b0bk}@p!-z|c!xm7s79ya zyVb2KV1q53zekbO&4NcfKSy$uu4<>1w&+Jygl(^N>M78Zl2J3ajzKE|YR zRguWQE(xM1ArH@(eNIe)htQPNxIK222rV2{V(MD>9v05p1;l)Z*XqJjz_f5ItUcCNV z=z6d@*=)|#=`6ndB&S|ZKE&0Ndp^I)M+DHV+^F~Hkm{fOW8k=%17aXF6vRKv3R8~I zTB621nP}NdR=OQ05Y;rlVi~?nVHSxM-!sr$?7adpmK4nytdLHEeel$?U>|$TRr`HJ z8iG^o9+D|LIjHE0I*)qa^Wvc8KSBrq*4Ysnxw-bYwjinkjvS}$Bz+7;{kPg${0nTW zyv4QS9UqJ9l!%URC(p9CKOX*zbdb}}XVhrqEuLF1;EHRv2|oGZ5hC^%&yEkFGiPR4 z*4RjGEfdo8Mg?fQ+64%bqd38Nk`qst7Xv%8+*~tiAJoNW-gXr#+l>kK>ZC7_4m$ba$N?5nNZZ0njTdQsl9F zQ^j6Z-45#^4e>=8m!GCdP>$}iN?^&B=54=qZ`}^dX+k)j4f=5p4;}~Q;m5k+JDedi z7g}PJ<;%K+F5nbljPt{*OycIJLH(;*44*NTKXQ}a=2;z8-&3k>+soA$S$Yk~U5 zyb|@3LsDLq*S!eEIO@ZwwAF28eT=v<`MlX*w?8nf?OG%&pmgFIEN$jDQ2prdJ~vJ= zsh86M08#9YnAB|N#ZkTY@s$k{|hg-Hyi#@(4J{c5#ifjiWykiiutjq6?XO*`UlY7D0EZ z5z6#AH@9cF1-i>!e5dVL^uEA+M8N5%;#<1Puw0nDewNjQRd($VC*$a(V;%08DrGw5 z(lTPrX`$pM=L&Q^E#H^Gk@$VlCW-Q05gZaFa6bS3tRjNB@1hncLCMLgn9htfs5_0A+!K3hSbTw*Bk9RcF3SsoWX z=0?X_3pn6XmaG+IxH(1mi(PNW`H1O`Ni2qZLVKxi>)a&X+fvl@FTReAY4+=%ySqle z$ul3v{YVJuysts9 zac)e+3oFuPS&C>Wug@3jZw-!RsW$ewUnWY)uBT5{mzZ>$if0!^)SqXcz!z3x&%mrp zP(v2GTvX`V52l<$Y8Qnj5V^?IL!`3R5vNC~OuxPwpZs`ahtpm$W*P|+T)v)IRxD`3 z7&&@{9~mqD{Gim-9t}N5XKIX=gw>gVzvb=B{hc;h$9oTIA>q|RET3-Ox|JU$3x=wv zFDqVTDU>#snX~>w4!#*mXvAyOq3O zV&Hspug(m@(3XmOH+P1*lf`jzk|Vbjc=2KW-U+w%1k_$=qmVh$xg0Pph)xDkoYuLk zl5OtbuBUPcl;GfUF)YrH&i(l+wW5r~H$!%G<~ z7*2}inA8ceQ=G&mmly?f^Q-bxnyl~>nf3kM0S0gtzn^)~lc2^i7 z;Yp^dv!Tj2*9_i~J-QZ-3sCVDo74h$CWSf1=n%q7+Z#+_wq;$yt2&HcOUb84Z(XAc z{}?IHYli+(rIJ_T21)l)N$o6cy}Fv*W<5z7Y=x|<+hul>8g~voYFw!M zNVbYH&=YdJOV*Qm%a9I6Jt^XV;m8Vj$T_5MV;T;g0kcd_J~bC9*@Tt?i9m+M@-C*X z(IQ-|hyu#A5zcrMEvpjqIsn`E53UYx-B_7=1osnCS4HG{NCa^u9!PJ8RgtHx4SL>;fjjfTXX3oPtCMfFPKd@gfEpO-g`K1DP8k79@9K^@|74( z|22_ylwdDHi2JX3K$U9+Tlc2#ZMkl>kBp4W%?W8a@}l>CA)q6TqdSb`tS84F=R0`~ z4>c>nzP|=@q%^N9L1eOWKryY-Zu^l>zGa#gshN%LfDWrBFtS zF*qSz0nOqr#xB{K@%dg@fgKK6xNYcLnYDwfE36CG5FPxI7nq zZG!GXkVH%e3ei3hmUQ#@{B_7pB0WnNl|hK*wlVYb^WVat{2y)-F({Xo02NhL`IOPf zl@LJW9sZwH76W^cCY03)2lE4)7Tk_3WoC@!RsvX5Au?GlbvN`6w(9Z*TZ%`Y^CzH4 zk_&+6DT6-YYCa=6EFr$<0`4wD*VZicjXt&Re9uSDktYHB!LDqh*q;|?sK39~N*^ODW~5t+LSX1>iYDrmkG!>mc?gyCp%9wlf2 z+a|;9*zp=7&PI}|CyChs&XRr-FVJ3P+ALZ}>=_?e{LA5wQMJcvv$T$sVI4zw%S;kl z(k?)Qo`6Jn9Iotll!vYPiXG5;Ms zVi11zx?{9_gC0%`i+cy|M&x%(oMye+;qxC;o|D&=nclAdJ~Z^>Cxf}tBc%_bwz3OK zs6lbU@Bp1Mlzw{HIu^t=J|Nfu3VqN&^qnsN#Cf+zAOl4J_({!p0ZWTkz9RJ46C`4u zmeG^P#Sa|hAvPv{+`6?%%U49g6m;>?+*m8eft6wR3rX@lI_Q2yfkdLux_JL@p^J7z zG_m3PZq*pa0LRjMTl*{4BrzsRj^mWZz$%%0#fU{)uY+BLQv<-p-BlgZPb>2Hjpm9Q zn~C~j4%yf*Of@|7oVO2TS#Je)@+_H3ICg_c`&(SZYf1I@6W!vo)HM^x*rMfk1T~!S z>@{9QTab;>H@CELy$g$c+&;5EmQACa=BiuE$?k^qigpALjgKE5O_9bT+r2~jE6vOR ze=G8)K1=38pAD+@%({<#O-^rx9?x;_sbE>zLtujbiT%-@e zNj#kW%s4Ugge(ocJ|>))$7OoazIFRGw=SM)_*EpP^J1c^i&?~uThsJs^sG8;qs-+m zoPyekv068jRuuUa=ltx^)M(%zq%BdTVdO$t)w$@(G0dGbpQKoeovC`+ZvPu;%lovJ z`V45~ns|)i1e}Dbu%3`u2KRUYow%=PFVfmxgC$r;(S8r!g zFJkv%Znglb2~peGaWF6=IWzIp^>>@W1cAge_s2bsFJ5;qr>+?m#ei(xUZn0Kc)skP zG6Yzn24IFdFsQ#76K~AEFWcYZy1EMS?;1)O@;%FHc_XI&(g(hbXWY-tx{hkbF1<8~ z7=>@eKA2*`2+)Gikf=%}+D*pD?*h2#_&>lPHd5YsTse05ADKUmNc~SnEM$E3${+C- zhftz)A6TA(xfhnf!A^P;Qh(*(l}aFE$d;1YjZkUD*8l2`m-umS!~9b9 z`UG-~Sy|0g*!TBOz-hbOPV-`zgF*r`| zX;06rh}=9IT(u@yBdxF~aM)CM(Cpt`gbQQmtPUHi(lf2J$v`elCT=NU?R{mEf)4zT zaNUJc!UYbQdm(a=i&u|Mtt$i=Nog;cW56>tAFmS1OlaJhwpKHQ0wJ`;0S7w&^TmW( zu~3~pCU%_NiF?m_o4)Gd%OP?4!5UZN6QC zXB!YV*I1!O+qYE-(^ud|8`%dzy3==ETo6nfC%X(hU$+ztKZ(ZUfa-&*vxs`{+o@4@ zxlaGdvgG;64dF|d@|W0B_8VKFQ6Wk3OfT4I4efa@9Ov|hhig0(s?i-ZBa*#coM z>*4nvUk7yE1H|0;25^d76yk(sd{J2?A{aX#<$d~(edK^l6Z5PTK#=#4^cGg4dYuD; zMl`+V(l=67dm=iT^i14njFMVeuJnmgWAjCd3hB0tH`ORqM7(w~e#m33kj|v%y9*SEY4-$mtchM-sHJ= zl_hln&w?!{dnIs4lK?kWW95)l2-lVIMJxQfe}hyO{QSI^)`xi`@f$>qvl0eU5Ri!c zm^m5!)0AkKvYwa@>6O8W#uKWU_R0*3aOO4y2 zR~C|Sw)zz+FqZ*jw^u#*!+5B)XOrxidlIeyfMYN{1sL`);Vjt_EJmTCRUOwkgWI>9 zr&!`-2Fd!jPkobTUSPGgn{P#Dm3~3}2P&JJ2<7Hq$-Y9QQ{M>NO-NvI)@Ff}P=I1Z zu6I_X>N5CWUMk;W2S|gGbSJ>YpY-V?FjOnU$4SgsQX03ZPBoLzZIJLHiLG;j|YsG+P*a|-+j^Z}363=mZ{9VY;!y?JqO*HN~fsP*UzDx_68!R1xF z2H%6N))1+?`bd$aXkf9mwHEy--2xht*g*B+N-ItZJ%@U(y(<1L52GU#|!aYq+R<8<}&wRY~ln&GiA^ zdoK04Ge)whz=Db90#XF7%+O~|!Av8&&vBk*&~nas#4AsRqu789C-3ZMn2iw|;@`jF z@jqrVhJ(6ZKUiv2LVi^swj>JdBwivltm$ZfXo`L}tLt6pyZ;K)HVwCgj$xi-wx$AS zNn@r>enu<$;)B?NAFf}guz_xOzkS!`ws7mGtObS|=lfvPcr4=_emLxXCp{lK|E!wI zQNIz3TWNl;-z`LmmgmaGadF3h31*~4xhZ2z`MWuOMk3kylR6+mtiJ{jlR>Y}^N0z4 z0M7`tXsJgKGUoF6^3y}-^Kpizn^5Fq-{03v$?gGLX)L@y>(;moy!@0tbw4o(WhOTT zsDAiq!V&A?7ig`vNlc*C$N&r(50XJjq05E2Jd3x|?b(nuT<_Xap*7u>iOc)~${KhwH(6EfiR#y8yO-86$CC z1RIajAHcR9#K`&=HafIxWM%JKr$cZ&iB3y}LS(ydC*)%nZ;(!tvhNp)s)sw;d9Hs3 z!7jdT`0#OO<@71C<7zh&$q;KJ7t;|F>Y{XCSkN-Y{ADZcOW!qcr;m1 z7S#<8&lk0tn!ij>YfY=`(24bXMf)6dNVPYPc4~G?EI)nKaK$C+_dC)~de2Sbn>QAs zNciKQFEF)!qeZBwtNJs_K`U(zGDeRKDj3t7zS{&hiHi8a(RBL%m8bo_6#l2qrhLmz zZiTEo!uOg8281^m#X(bMUgRmok6nc{^F7q- zBZ5NbdaFvh7(vuDJ_2giCg#8EbMJ>+!6TOIl#j6b2YR{DcWdCu+b4`t?!>*On;~cK zXTON3*BzAJB&j=pt*qPTiT@83_3vV^?__Ma=;c!Y`L|4-w`2oK$ZSbjuz{5$I2CWa zXO098eY|0Frn*=5yn!`^g{M9^3Y&7!c}&I9d7XP671=VR+n>0iVuq1yu2631m-D}8 zVF!%e8vN+k9RVqPqwN)XuH#G8Wersg7Vg-yC1!7be;?HtQ||(Oy}qm|M^Vki_R2?0 z&*qu5wa;7EDYtsaO`1n+Gd0KwNNEf~+n|xHfkZraLxu8{ns@W4WsaHxhrtgot*X(BOl|OwZujCL zo(@s#d!e~9de@8UB^`?+X@9O4`R>c3WK5zo6ru!>YEiX<7SBi7*FPGSqZS$?_^6|0 zte?G+*A@auAHA^_mo4k%E{!eG8;hpwL_U^(T=ON z@4D|-)vm(cnIXGxHlBYdVF8G6VIARb?>{-L2(EU~?*9B%Fge|F7?GyCv?kCH*;K6j@FoYSd0+cph{uYGIDHchVw??tUk z`WHSsQ1>F4M~!|PsVi)n+7vC@vB=iqv$1v26X!0yGNb>-O{fO_1$M$e1c)G z9<`A%U>C%8gZxPwOkdA|1?JE=3{N5k2~fvsD62yS#2Qxh`dt8|*caCtX74pNUk@2) zLaFqc^KjxAiC@f!m*|r_kG4~Ec&NkFw9|BNVqAbs@1%ZgDA_aeKEp&gvHs_BS(o9W zQ<2(OBk9WoLYXBdq?~*$fh?(r!oJlBtic1m?>t`EsGT<%`9?vk%ieXbHZI;Gog?S9 zy|H!@&8c~9xAdi&<&wIwJLAZ)Q(f)Fq%raL6EDrL(%Tp)ZkzweG>)h4>6Lq41nAmj_N$aTq~H1--ka~zlw8iZ4K0G zLGjed=zI!$#$?{?-a3UO6>xZpUtooeK$-s~fw(3%_3FSg^C(FiZci&srhpw8=75>bhx8Y0l zhPoy)7+z1g%Ov&MVP5!wo2CWIh}RI(Ggg$0@fnOuJ|ORo8d5I`9>3ST^{3*SM5rft z<_6}{#HHA<2ygYMGoXHdVA(_Cgpiq@t9haz{a$X8f);u?y6oZ29|IRB7Fc)B41cuO z2Qc3L^jiawGU9&7SuJ!Oy$ebtg5FgJk_SgCGcYDJVVL8$R<337{=FBV^i6P&%MDUv zk&w2FhHT%@I#HKdrqRmQ8S5q0^5%V5GY3`IM(Rm;=<5PgPlH>k;SXX9W-T-#QUgyu zmhiE3&*y@vH=EiURQ8)LA{Pn{2J9PQ$Io^4Pw8pf03x{N<9lw1J9t=S@a2+L$-RZ- zg7I%fsom z3t$OdH!h?CUQ&(9U(t7&?TrP=oGM%&zFH^v$_Q4gkFB;QXkDPmzaO1DXu(b*OqF3m zcr;A0N383oI;|jLe7+6dCl$ZpE57U+JU!+@t;o4UwAo&x@8c5?}eT zuB#yD{l8?bHHj6}-V*F5OvbUzoRDk^G6t!!R(@?AS@8;punMW@|o*)3LDF zxy>8v>{_d4=e~#U0e3ri_0@*HA>a)9@{bc#yLL61DPt9;`%i=e*9eA>E9Pz13bILY zI;@p{ZnV|it<4N}iE@4XFg+*Su?3HG<;53L^hMaX-*k;}`JQ3oG>f}&Zk;04zZA@wr~1Q5W*v!kWDw;%YMORqN0S2lg{Q*~|q zeRXn1;NP9*-9$ac7LR^|%-!QukR(5hT69ym9HexTP3BPO(MUK{cL`2RtAE9;7S(Ha zr_Q5QW;2Mmn^up}oA>IZgjdEK+4$V<(4|cUd{2Fv>!y7~SPgpFG_kh3bDJKmprY@_ z86Hfv@0B69;bo$tAsZ*qSM-f(sshT3UlvXMbM4;;Gji68sWg@3NC*d&h;5zwp}pctiD%E^DjoZ{c%23jH`1z3F-T=4jq|IYBIiV< zb$aAk>vhhp+eGn*lDMWoIUt&b#tF9q#e>;}AKC4YuvHv>_xnFgV@js92Ef+J`tMs8 zX*sl4+6AEgP9qZ}a?N?APzDfswr=DRIeIPYTdURH07t+FVcmK4CMEGDUp{G@$5!`k z@5mZjF05G0N)|A=cxj8bue)U8RE^_CHI4=fq!lg;p=NEM%5S2>_jBvUXgq4Yp+lV*;xr8#J$Gl+GUTj-FvNE^Io~! zYya-&`*{5RfB*A-t#i)vJkRqf_ckrOq}vd)QE*T9$64;U#Oavq=&biZPQ6twF_2H> z^Z^J4yir8Ap)FQQx?T#@Ba!!h;`cOq>DtZg@&>`mJsz_nZ;S~3Kk+vP4KH$@Z~%XT zk?IZz+`Ouspzv!iy+;PU(*^YpxI~R!4$s`o+$L8?7||d5-WrP_P2g+T+0I#%Raos4aEqOVKKb7}iLoKXi|=&F|!?mHnydUSFf};r;R< z_UCaz@2b%~=?`bqueQ*Q@5!I*Q2d9i9lQs6flj#3lz$)3`cqb;kMCwbzw=BmGf-b= zzU?>uOU-v3jcsYm2tHKB%bIU#)=}}Yu~`G13f4dkW4xZhMwnU~(dlLemTe;B*M}!n z4}&FJ`uX|!Bs*qb@GMte27?2~r8|h* z6E0sii@&uY98?ClM6Z4j^?b<&`8Xrkm*;#cG<4?zz((;N#yc^`nxB49jaF4VMm7%R zpsl8`riE2_^Q+@0ELed$D(F{dD$x%V?AQhn|4ony^nK_e_fKn4h{o|iVB|rUpTO2{ z9=2KuD)^0O_B~A*2!Yys;$K`Qp4SJT8>&evaVGtIL(e)ZrFBe`7z-!YzIj-4Jaj%UK74tS-AYbhS6O5 zST(6+vfZ+NWLy(?gEcKpE7v*3kkjrFWgUe2^7?O$iAjcI&i$?tJG?7!Ki|iNF^*!*)3&x$NYY#jOrnG!U#=+KCahAX$82?>6exju!M`}@Kq(c(rz zbiEn$CU{k$rBO?mbJv!cKiV-+^wt9qc}XUZcrIuR0vmnNQ;6&i@!Ny8 z0OotIqMDh-Mu&-eD`uDD(>Va~Av#N%5joHt>Aig2WQA2|doN+uDt4N0ZIKpmAqttW zjJ^0I2M#lzFD{lSXXK9se`@LDdrRH6(IbUA6W1yp%dzSHw14^za89c{7Kv4)7$?dW zb;?kvsn{RCL;|L)aBPzKQCi}it`Rj2(lyQ7JZ$uYsuFrc5l}vyDs@0;RB7$g|euAP7R zo}!Bi_|`;+*UavYhB&Y4qkgwa_1lq0pshL4pOmMej`Z#5;r*4zgODbO7(P?kqbs9p zQDek1c>09mPmLE8NAmjzb_*yf(C_VC?_%*`9gUyAy<1vkt)V==HzFFtI9jNZtoy2> z>CHOjeJjwr7aBA7_=`EjwzL8)_10YZ(Z0ck%-X;E(9$B6H-?Ewm!YHF2UO=uJXrkM zk@h>RjIRXGqI9PaYn8sx_MqXSj_iBat#aGS_f(-VEU5VV41|ZLG!8R=h0&W1mm0IH zP)ZVJ>9Yf-e&xzF>%-C-)GItRO%P8NZz-UTk-Ue+YhsjbOw&(!+Z|5qai>DPcC~3F zPq)eC4iWIT(xD%o^fZi|8T;+qrF!;slp_Sy zH;x=)8yMJ@?hx3pMd^vDx3v1N$6O$OzG8(u?s~$OYVxyQHP!fee?Hc4@^y|2bB4a) zf49Y9hff{8e{%9Fij6V+q!4qmUl?(@W#a_JB&KfL0AD2r}|}Z#pVAdR1+4w&df|kyg6-_0SycpI;>M<_4^z;|mP=G;Ef> zc4sq}A64>oADF$k4=#q77xciH36_2XAo!j)SIktX%3JlLu!c+6wD*7x5dy{E1_#XN zd;y-EQi3l^*|B7sMd8gK5Y%YMoHD5R9zLv*D$E%~t9G8Hfm<#cegdt^ndjqytd8Xs z&#BvLQI|U;cs)I9F4@D`8g|ZY?o4d^J$dXE_DuAh0wLO0BVEQ!1L?()fw~(Gl9w&I zG;g8PxF;n1?CYg0p=s~i@n-p15*H>WVe|`?n$$#h5GH7*)!A%s9A5a3`KJve;K+8| zY~lnQubNf!o12i@sqp=I@8dTFab(0o{WGd~U=})=U$Qn5XvGs zjo$o{=0O-yTzvy>TiZ8=>bR;~l&%k2sr8ezD``i$nYCEbz3l|^yKs8KPrz|twVTOL zir@x>kBAIxTunWtM$r-M6PC$tdRGKkr$655!IM6xZHG%BY+-2uzbdoc5lVK zP%ljDSW@6~bC|Q3HY&rJAAseL#0Kd*UnevfFHEuW`tX;_-qacQBG|%ydDyY#YG3Jq zV3&PEvTPzJ=E`1CB-IojZft+`GYn*wE}VsXSa|U8V6nxNzI4F7X44y99FO7+R*)-{ zUXiJ*W&op`-2KKb>%sRyYiCO(Ss`X-k~4)GyN#tn>yrWH5CN2ZHoE6+?LYW+?n=$f`etd?V&awHJgS9f5JQB;?O+(G zHKib{_vlQl3DF9;8E%~)<&HYIAFV8E2^dx?f4oC1E~q~Hi5EG!+Nttz-VV9lxo2d# zZ)b@nstMfkZasV!m%`W%I3Ov-M>vJeY%6BL#ST}2ta5ced~ytlbBmT@ePnvEvxl(P z#J%r2#}zyOMnhZ?g+TCo&t^&Q_WUF?fhK_kDpE$U+W*X_J8|;qZgARr4>b>H9p_RH zVef12(%m&U^Xp}(PDreUFoqU?daseaAZ=y#Uo$oT^*r%Y(Q4*`H|bJcvnmpX&i=(I zZry@vt5d4dXMogf%pN;9mB5%8q8a!x6r=gtS9whDMx?^g8TS*^#pyZ_6S^OMgTOZ5K=hG~B1C2-oS$x`unl97DcEY(+nb z)UFMIHxspg$=2;~`Mp^c2yw=Hu0rGxxbji+>tN_IU3!4GP=zBWFG5B+cye+z>Q}ls z-W8z8B}*)}*f}+a*u(t>(lH0|j`c3@&^06{Ir`yOb^GHPPnI-Ygzd;0p>M*bmmb~h zK%P82DGL0wh7Qv@yUB>(d{ygQmD$Bn)@p=j7n=wvf>G|DtFQ<8vYT4Lb3diG{JDER z8QuMpLrtOLU9+)+ga7pPW^YS(?k{Gh-iiaME1DAVYhS4sDmt@i8K8<$3v+#91b+cL z9AB4YQr-#ZvcDh>s6=&6bs3k&)lorxj_yE*{u>5@m=}pY6434kC)Soogilr6ylO@T zo?Ys>_ZbzTbcWKDxec&jSrlYLxx~tIw{`dgJeXPSgm53vUJMSag`}|G6j6*(XZ63E zd15{7(V@mhhU@pGOq$53C(l>%uyd*Y8(R|Ic`@v~>2O=+zNlP9^@6lTJ&uk4Isq-o zhw?%I;1&0P;d(JcCZyo9@rSA*dcdcjs*&p7($FLN&rWL3sR*2CeHQ>~Sx(sVrDBWeI8(dd&S>gJp%fmnIvN zO{Kg3XduRxNMO2l3N*ksS|^)95SIJd$N%w{Ae8HIdjugm5}XIHNV>S(k_6top6qLA z1PG1>7{V}$lpGo8KX!2d0g%)05Oi&6r|r9hyl4G;AArD&pe^-}gfUkR!X+V;;ZwHd zPC&sWw*Of9=i%?EPq(`7@t1M3H{`1>H!7u#T)3TaghIHq$~`Ng;0WACgNIB|-N}vb zlu>qgW#ysRj&{{SkgR|2&e|)MpQ)KOQ4Qs~ZVJb#93ifWul@*3C+>uX+?rkj$8)w6 zqg>t%)>*tse7dn*NW+5s?ft^$6O+e0M+mdsr?=qBPbqBu`lQ1VY9@@?h@ZMfe*SlX~@iBmiA#N=AT>muu-|)LD2%qaM z{tVe{b8K_(__wlB9zbzt8mx{OncyI*JRYr*iwhZ{8=}|{6h+)W-l=h~GUc7c=se@& z3o%Zde(tOwm~##BZm6QgD3GW1J(?_QoIR&b{PygFe8iXX{tQWd=*mVrF6w1^zJ~ou zCP3OuhenE!UQD0LykJeG_$K#`Rr{hVII(v4d3+9%2Yf)4(-lp|B@hO}QNYJY zNS|@=sQ!lbNCL=`fu9%`%?md08>nN0Kj|`xT=(bDE?k@a_eV{rF@}HO3Pm3vn+VrP z_eo|gUZ07^33gaUuX``35%{$3(m_L)=ViM3`(n_z&zK=P#LY2KIjs;s)}p3Egz>ze zvnm>>_ANm2i;u}KLE>Cc@%tO8R65@ys0yyOyXUZ=I?fML_)9osZWP8KKr8>n{pcr3y zom$ITimdUss6hfTcfYT^;_uBP$NS4Cnf4MZkW*?c;jUp#;}4Q^7J^Zt^@|qo02eF* zxZiq*iVCR0wjGtb1d@S9e3i;4PV_TpmYRrANHJqL7u9Yf=fX|613>GN5-NYv#T3BN zOih_Z8u2@owICGAUw!3i~FE4 zgL{j;+I4m-q<)bj%jI?d3#E{WtNAm=RKmMqr6`kctj8AKTusK)bds9df6J|>P9#7_ zBR6?|)2PHor%|}gh87s#VTVNCF2|{K+K*@pKj^54ho*G+{3XQePXM?l;a;{rKefY< zf2WHA_i}xPsWI4wj-6(lze2Qyv4~%mIS-c)-^;YW6dv&gFyhflJ7dW`8|e4fmG(e3Vf-5v@?pIxW=R6|$T@Zh(PvOyEug^CcX* z>kXOaZ#2kM(H~u9S&WNzUg~tLryYqys0jxEVIc=@8LB4>dr#0iBJM1|FNyXT_OA-v z4#+T&M`{jDoNyZBtw^Y5BMPxdgd8Y^u#MsX65q@2U>Ech-Izn$o=_XIIbD!!0 zBjJD%Oo1{aQ>yfY^5#1l3C(uu5sFF!WzJN)pu(?ogm+X}fpKarS!P&2Z>MFdYpk&F z!M7XWKjIgejRJH>8%`q=)Ib}pq$An4*y`%)69nV*i^dPP8md4~?pf4#+cpkL_4cN- zL;DVOxbAs~w&+FLsJ8AkgoXr{F(0MU);7cHlax4g!cMhv-gjc|gur|3* z#PEe{$VGt8f@7qftnka>7l>H==^kZ>O**)}7z^muJvU;nLqM5e068`XIu zcV3h}2jY)jA5NqIlckIba)oXS_BjCBPncv;QXSa!R)n2VWE;(Y1Sj9`N+wO{J8&W#wF zPWuY(RFT<+J`g7suFP=e@&v}yZAi_~etz)ITc$w>*JKTr`IRvMrN*976W%@pSoqsA7F-(s zFRR!4mN$obCxSKV)BQ+IKwMSxx)Xg&{+jZgiEaQ>xAV(-V2T((U*f$!@}3djI9Kv#n~;=HAfe$7$OM7cwt2(wZ;ZJHC`K#$4-QiKVbV|7v5k zI;F2;0eDa4{XhA|${w@)Nh5vAUM#`5IaXCPAeAiofXI$5%q5auP*Kv*r}`sifGqkJ zX_P#T2q!z1j#G=g!^yKmPvv_fFqc1G27p!saM00^QQ`E6;)O68EjOyut&T)RAxAwm zt<}ezosuI77O$K9W@$XqgLUrTvFF2qwJODBpNE#!kvkNEkj2#13pI9aeMO4Gf9&yLZ9=+3R>92nW)QW+|*hRQv7Cwt!PlZEph z0Rf;M<^|HIM6~+Vc7_dd>RXJBqiTGL#}-HMif|VG8ujU6)^~2L5?;luuz%@pPk9=ZTItEoB)bLZ{M@#UxQv);uHo?LE{{AZ7jukcEdW2YAy?l3Z zYN4BId~GR%=BFkg-#lHPEOZU6*a|SlNz38eErH#H?1%)m0?{%=6ot}tM$;- z_SG-GEcIEJ9tsq^?dJ!X=zqJOsY(OXEsc|6BaQ+s#pEVXJZew+Exbl}Ba z@oDb73xw&Ls8_!wPIF$|tv#&OQ|r~^iI9z#-Fs4~#Y<%HiRvxn`LIo5D%|@0TKb{F z#}gD6W>Xa$x0@Xp%n}3Pd*S&{XhZ(n{Z8`Mo$IA=F^&eI()y#1_)`JK<4>xwCwt>(kgv^W+0hU1oe&3+hTwgN0C>2VDA zxp+rmsWH)gIcp?TZPTf>V0Q^ewK~;#H-~76c;&Ot7;`%C6PP6B*=LB;)u8nzMuaCP zf<2g#ohq?41&d5D=f|*+9iCW@lrgIC11UP_>(}ltOQNyS%l{(!Q}my7-G|H5yl*=k z$X3^EdFl#K?`#%}{S%F+)@-7|{oPrTZukSqODaoqnial+7DW=nkN5f= z%iti`Ao=Jr@_4wH1eWRQy#*czO5@DDev;3XHbv6cK$DCCf3zYJ9N#@3V+Y6alXa6Di!$O=gzwoRkw#YC;1R>Rf5!WCx7e#YE2>|J-WY+549hF0K4h zu$-4m+o)O6#5Qwh;fTNUfnh>-OjcNmVQQYvSRcsc^Lh@U`i?fF zzIVS}G6bE)-l8V=DowrKb9hnHk!=<1-%Df3-Q}(1&8!H*Gv^wToWG>S5(DGmAeu!b z#{A60F2943=6|A~7t^%uwxr7{;pzVhzNkiwPB7N|Zs$US-F0b2HToe_2BmNTijEWZ zM6L&aba~Y)RPDip)g?xGgzwP3(`KnqDAwznl=?7 zoDNYNR?JMn{VrkS_I&wJdfZq^2P)r$`WHPb7s)}CsjSM>!|XSWqACrxE9p04wt8Q+ z@{eG&&XyEb51aQ3JIF^eV^90k+8K6R4|nDoS)PTjvSNkJok3!o`|Uak$fMaerI7lX z8oE-I=O%O`I(tJkB=IPx`aAEja%1-|cC!L+W{CP?b_I2}7^k6&e?%H?+K+u9fOUdB zX?22wu1*Mr?w7^jHL*$b*tiMcyo;50VU&VafaN(~FUSCYuN{!*Nyy%=Z%i`^9<^R2 zQ9Px<8vO66;}>!SFz>B96g^=3HT5&WI8#^yGr0pw7mEA}(=B19C|xEIIL`N~IR{Is z^u|T{RoU`I?-e;q3lquI&<{LVy<$43ff|hCHnoQ6GekNISsmW{%|9~?f4Nv4@nzRTk37k&NPj2FaS@00~j_pl#M+-eKVT{-8 zXVy>KS{ZRWNqELTq%{k|Q^`pV01~H#nB&Yl(C7kN zFEAr`tv6u|+sQ;lNf0cU84333ta>)I-X(OTh}jAOfxdfC2kTCkEAtypBn1Vt zD9yG#7{h&)yKM&x&HL-4@E^inkqjCHQ#HI+qK({wdBLSqGy`#WXXU!4jbT#_;(+A{ z8NY8Y1(oMI6>`@2ZnGiY#qs8`q2Q6~K^Cz8yR2}6kZKxwyP=-_KOneO?^z*Op_DZ7 zeM0jA1+5P4?&OBnB`z)x@H6KH_j4}&zAL@G?-{%?zmcE&8z@VVxQnlgK82^orem_y zktbA3*di9H^P9D>+ALlIy#h*%ms(iVDaaoXH;Z^*Q#Nk6Y4+k3IS&n^CSzj&X$-K| z|1yHm1kVGH7{Dka4MoIO0E{x|U}aw7ypM4>m^ycgX43ifLht8Q=VrfYFw_@>H%w{$ zsm-txRb3!tgW76Ew;Wr=aV!XMU~ zRR2X$q_X7)+A#*C`$yOyh5>g?jzcqB{@Ei$npQBmbn)=;kxm(8*t&5O89)?)CZIdF z{gpfAsmuxPny6%oOfQQ(Tg?rzM@#v&SG1gqNT#kB;7brM#(paQBJ^D<-ky5tM6RM; zC8qz{y8_{0Rtg@um#aTk1^@wIy2i{4+}K)_c+5p@5?Jbo`-300R82gIjP?;6dTFo3 z5j5DyxFR`#4gI(HxSzV&K$P-(%&&?f(=qIx?xYmmRkgkut-l%O{|@`Y4g+K@N_*0_ zpIC9oC;ljJ;8_a$zyg9nYOGgOjeY319S$hsrCmqWTObsPPJ)~?r$3zf!qrKl z4Jr5SN!ay3m!>;rOE*1wqYR}W#IR$ z|K$Nwl!Dg>SJm&$tAx~y+w01B<%-(s1dd&aCLgLGdQ&hqVJ}9mP&fu9=7f1$T9E@F z4;Eg>Ou<8VsYU=40VlEe%UvLt)`YKF6mUkr8E_ne!k_3(OIyG1RY9dcrv>*0b4bks zbST3(oJq| z>i&YhhJjpd_L@fVEYreEK4%hpPhR^}=3-tSz{Sa_r@P*ER}2us4Y$01;#uwx>ix~R z!b@5iF!Rh3hsTCJYU@&pVxRBk*zeir zwtg{~{?SF!lcA7=#F1h_ZnMeJzDjhX!xX_CsSej1=p&e}n8x)1%!aPf>4gPd2__+wlS#GYpAo+)+Wli9(P07(xk*QX=gPUuso zD)`Hft?;bK!#rlfT*eQYedZT7B|0(fI?5)QSMG`)*q*viG-D! z48p$^^JPP{C7;d^U#YC{)4bh(YoCQqe;4JCAko*5TW1Hs>BR84E66u=yZjhmqV&=5 ztacj|;Vs5P-S#jS`6b`eA#(mm+pL#l3dc6b66761X*#H|@UfAxXJvRf{qTP7rK_E? zk*Qn(x5uXUsiDy~$C{}b!j(fi>X`uHc%;QSZTr%>&y4Q5(%a3Ct&sU|{^vhJDEhM& zOySO~uoGv-aJkQj(mL;u(5n3Pvsj1JW2VZ$+ z*nB>czkTQX_4)%Yx#m}CO~+n&MEAa+D&p|T@i&W1jrrHVc&Q4iDk;~|l`Om`KY&rC zGMC6>bYh{ct-hHI28u2E8>-1Um7m}#kECw4{KH3xUxx9U5cpCdLm8w&aRd3sB-sAc zo%uBNC0YB+<;DHywr73xxAbBBsW!myxqNI0kY(rl>-(V$zbB$-T89{ ze)2?QrYXpu?ngVH{9Kz^5nSic^j9g9R&uVSOo8U?8aL6m*8uzxZHORR7r#sw(f8FY zCnfX%e}TG4O4`xvqm5T6g0xgDgeHwKR-ruYI{;Ee zyP=~C(Va1^rHb_`x%WVTX`UD@(#n@ zaE|lEi`*-|r&L;(fPiT-8?8n1Nw$JeGM|VV4C@q=Oc|{BP+vTp@)rHNI9s7v#ElQ` zko6XECcQ}!*Le?&|L#z;n?7GT*L;}Qyf=9qSMBmweL3V+qUaq^@d@4a=xOdQs%01f zE1?xA@?xpmJ43{AhwBLU$I=8(XCF%p@8m`I;6F2|HiV3f`8?@JJ|d{h|MVYL^C-i6 z+HKg!jjoL-`Okk6wWkS{TNWDaicJgEAuuedW|EahYmX}nUkY{i$LXB&r+rS3^yS2+ z*)gelepco>w}(DwWk|SCymuPy!rThcB~wiZ_59hfkfw#|Qfpl@fywBz6MjEj1z4Cp zqB5twFbh=#&VFiC;`o(M4cuncg%Q7u%Ql^6tCsz?T~qz>#%x68p~I#2qMiB5V2hC_ zNwY~tI({V~&l*C3)n9$o*iG@Q@#AM~Ssc7>6sN2wq+OjmCSSQ|@rJN{nDz#vI%gm&1h# z+)Fu)+uFAezxlAA#KBG66^oIHe*nAKGIIZn>0`!zz&J#9bg>5f{p?T0etNzG;#yAA zHb9NAvI!khQJC)+wBfGyAY6#WLen`UksCTR`ljeo-^Onk1v#6Q5mZ4!>(g9_FAuh9EN8hOmz2`HGCxo)OLRhj zH`i&>>5q9aB{gorhG~S(qN3Y$VU%*9;+^)fm$KXt z6KgMiz1-RPmDHWGEadV1?otRQRZ=W}V=!g0Xk30d;W{~ruc$qjO!FI+dnXL|o>h^C z&RpVjrbG8l65-LV#OXtu8^EBr{2{(?vI`4aDHA6K92;jU;|kI#`|E$>B1s}n>Gq-2 zZP2&uAnA_Y-4A=Qy#aO92sVra(i%6R<_;3d<-H%O=zstpOBS-49!Ji%Jk%w&7n6s% zL_M#HSm)fN3KwD`cnIF7J+rK)Rv-^cc;`M2<>}g66zi_LK^)Z~vl`Z^E*#FKD;7;y zy!B&Jth^}ns%f4gO%THwpzmC8N>m5~@Vsf3+79EW+}uzvJhv&(T%qy$c;#}zHUX(V z8p4IC)@qdQftZfaBCd9%2@4oJdfaKOIL?>-nHuz5pJ2BN%)e!YHIpCQ*I~Qb)jev> z_S=##@Rt4OFW_im4Z9=~liAlirEoZ@*#$UduO$YNPX#?lm&?fVylNbE0;TXd73-H4 z1t*-C0o!<@)9xh<3lp}m8}jMe>vfyU?IqjSqa!Pm03c3Y3K;AJpuk_bgoV~$6{ugP zm>va#;L{gr=fW#Eiq6GIcrI-xa)xcS-THLfe@BYKEfk~D=@COIDo2&C@)kkDTYxqy zLu?0IzeY^6Lo$Nvk1MeGz}I_hTPX1WG(TG{U1KlZamXhuMDa;Cq$r<#&_@oJ~yZF&3lQ~z{E3yi?g)2urpFEFe^|1~{)&pzMHy&GoqAO1IjJFEIm z{+qx)aiKkO2b2qd_W)(__k5O*prjg5^l^cJ0)&0}gsbGx{ZtxeD5%+S??{BMYy7^m zA}v%eI^nY%^(k*F0P^p|Nnr@c1Y-%;^`G|vg{xk<3m#RQQ<<*(6^4^Xs7eD!b24*j z0Gn6qG}Uk1-UAle3vQs@TRsP+t~dmkEC`5={&9W9*DSNe*TRNr4s~N8jR;9z!tnH% zSr`%&if6-;dvX)_)+>EFTlcWjlvcM{`#{i!|@V@ z)q>wjhWg!_i1}1yq`fN>_7f*I6bUX}r0a%=NyKJ#yLK{WX*$ga%3-tMZ+T1~?$59| z3zS}Re94VrZrxcKX`E?B{*%X@B`_08e;Q+KZnT%&QTxWrOMNOJPATaCGG}N0s`uYa zN|(`|+s`)|tpH`g|24O&I~mQ**nwzW&@w!&=JI#^1!G)TX+N*wLkPI5RU8$h5xbyhghzPb8hO_N_5RN%$Je|8{s+FF1{p*mTQl zbXY%7vb~6WHd&@a3oSi02uS0q^EZUDd7)!KZV*40qD9^5VgKnG{OsnCN;OeFr%$wQ z|Aeceg9}^o;X~V=_VrF*U`$#H>V8Bb)u})U;G+3|dk$x(8X+Tpd4BH5)}d^*7{Pq_ zJ8Cr8vfi(oM*`DT6llGrt9+!Cgxs|vc3GMhh`fsI=+>WsrQ3;#b z$-5isA6#<0yU*fn@JeJl3cKlXr7I**DZJ2S+aP9A(pAlE?v)f$JR$YgDRmOqnt{@g zJ(?fP!ce%A5&j{F*~-qqkCdL)kvB8L#^M?!Oi}1uKFIAeVgC{Jj`!&8aTVm>h{K$G zj6@54FJ8&~Lii0lVC*18>g~cvjZ)c0h&A~O-cAQ>77Jg?SIjdf7bumi?OT>;ZRDdM z-u(?+o#S`-xdQZI9TLI;Na|fqtR3B{r2Bs%&5)gANL`zN{lYpo!4&X2qebG1Q8Qy`oXYFc|T#0JSm9SupQ^9|v}W@@&y| zjKz@uQab>IxqQFHKw6Ut-(4M}-h4b_Y-ql?gEb6}pw4cDGokI*FYb++>^kQ|t%8I*l zKRJ;SkjG5m+LE-0Z!q1;t21MwkSbU%E7340N6KQ8%S}wvo)n&>(S&t6$%ypnKUPL6IvXoT&gft=e_)%j?Y7yC%0>XD#`{ zZ_T?%b~Y0gDCBQUxDcf_LEiy!V>)t7XyN&q!uERAggFtaKO{9?j2$r)aqErQr}f^{ zsXEV*#Pt}wCz?DJnBwDEpJMXIf1MjM>0w%^Bq7`92okem!pz8RA~$`Nr?U(KC?-7GUQz z3nrokPT$6txyA#bh z)P}+H^v!RryS?1w()K@MdbL_r4YDu`I_rA&F`hbTQ3r~oFFHfh3`g=e(@_Vsoht!TCH0_1CgT4STLO$PX zDR=SG5t7K>tHE)}soP$uHq6Th(=FA(@?y_^2G=yxoC*$eObmMR)#uOC%5Kd< z9S;iZnipHBOjq!;TED!@h3V_3d!Es>u3Zi+4I~lqt~MG>^BX?%JcY|dUR5|TkAT{qtrb0e5oO*aYyJDZV;vXCw zS2uO*`-n+QB>QRj_ylI#laN(N&$+a=^>A|ILlLRhh;OT726 zs=1PSeR3p>&Cwq(ED4>YvB9|ho>FqpxBr9Ri~ZZAWKRgqfs>okO#WOct536Z?zLcMxC%%-j9w#Ir zgP_zEI@9m7DHJvySbP^%=w~?;Zqiu)WMW4yh)GahR2BsyEU1Ta_v3pDu0`DcP z04p|%(w9raUUIDpu9_~m)sXUVJg4=?jX7E+oidIOUJhZ=K{q#lM}6~J^i6y12l#wT z6Oi?xK`>9dSOk?~AfK+xAT|$M&#EJ+a9@oFO=iskk@Af2ez=1DP56^j(VD{)CaMt{ zZ`HTaAw@+KX*yrVD{8`ZYL#-1P@cDCb=kV-*@!_Rw5@(~4%SO{HY6o7dzR zpoVft+f|1oP(J2mu^#VfZ1XqH_Qy8Z2Y%dWlZ^N4=hNY%bOC9SODSo+Q-sHZTKsY* zL)-2}jrUfD8XK)bYJbxgqSxh=Fz)dZl{9QEpU{+h(@ZCSk*|7f$9^bfevKqlE(N?l3 zvgATJ8}pX#Gpw8T!GrY_x}OtsSK&JO3k#i^5uxl4yzgRE*@i+O2xFOFfwhPyHS55K=l!3uCngU;Q;Be6=tA@+xD2kc_pv`Iye9Y_W%}Snn?hA z`Y@1?aHo5^n69_}SZw63Gzz~)8_~;+O*5uC|4?p!@#HF5CAIM?E%qHV-t7!W%RwiB znAfQP@%tvgVut~?qRJx%=s>e!e=&E~tv;hwBM$f5h*O3HeXmAeX({!uk;+i9Tc2BT zzfW*_P$Ns$as3Rbx!`Up|H()4{#p6H4^88u@@~32IC%THuy40cI;XA?XMd!RwpDy| z*164;ZJ<*xX}*oMJ#_YU38QYK@;^$puQ70YBkcND%Byj4?im;mPSZxUlw3v|;agM9 zs53HwMWdU4=@up*w_Ywt&e)#2Jgf!x_P+~GBxsZ!rl5oJdF}0!fkwL-$2Ce}4wX$+ zJp~%hUlT!en0?xI%Sg!<9v@fBNlkU~!vJf>h)dHuZ>2l7;r!k6uvnQc|)G zDVG2KTQ)9sTA75j6>hB?t!%v@w3_sge>`BF*k?%7PKVt3-BhRXW?Aq`Xmwe;&8;JO zkEYYPx+=HpnaJ{iM6b!=3V;1j$qsz3%|D~(&rN<4zi2!kfF-cc;EDkX!bBS_IyjDq%wrolqwv%E!^<%3OIje66-}Tq*h6kyIT36U(e2P!p_X3O@aS16n+nW>C3{5V zK$L1Pov$bU#iWc|!&423w*9=at~H;d`p&!h(3$@oh^_~CtKVqMWEn}ZKw<~E>e(ia zv{7O*r;QM0JlB#1cjB7^3J2-y?AFiZ}Yjk06hg!Om{@>uwGn7eUJ^k6g3$b-;m zdd$Um_SfFPCaeCDOno1dhx;6C^RYjx<+ED=9l92d53TAs)oPv#-)|z*kzvXX-mLve zP*o-2-EYF-zO%P-=^5e}_?F_klEH-{FHD0&I$K41AmcKFYHiKLFD;}G<$oHOK@_zq z3#6N!K;Crc`Uggaz%-XbFpD}zdT7Soa-HS;Zp{gp+>}!eGqw}<2>W}qLGOD?9 zBOVt!OfD|xdpx)WRH5pKT#{lj;rn<4CggpcDyc(J7Co6Rp8-|f5}ns$#dOtggus@B z32mCfZsc1bnLbDVis-qVvUe5!LktflE%}^+ry&7ne?j`mNh69S2hXj7S6mpK?_~|& zkD!vGWNpcN(u6bNw4zbR>+-}an;{Deevgk7_?X*fI34BO$bql$8n!1jxzfJei{Jj4 zwIA7WV+MLMGl~z-ysG~BG=^HJ+)f!Dqpy*T1yNC2*N%{3vfD=*ERz~TDGA;KO&}`yuI+c==hkA^Z$m7v6R}_z^p;*7es#==gHyBN0Mhx^U84EIsT5 zBl8LXy{1Z`R&$}My~D4U1SO20OBBKzq(?jCUbMlU%!>?vGiaOFJL=+ zQMhO1z0SDorPjR%lkZ^AeV)EF=x`spFHTYmra%^Gkrz6p5dVG6bMi{njhMm9LX%jlNXh>GB6^4iA_yn=q`g0}sqT5R>PL~d-REY(_T;}T zCYwJz*C+3>iQ1zI?f6y}Ksfw=OIHr0A%Fi#l`0Vm zlR^QT_j2F76JRC2>v(n2m?hq(*NOGvT42Pxt(&TL(82*aSE*s;2mGk?A&SrzJtAXo zu%|=nkn}pG*^EQi!*$_Omu%uWUp6k>c>0q=)oZ!1d2sbFZ`p4$cFsR9DFL1zHvo1sCZA$W~ z;56p#QUZ8{zzdCz7vx>eoG5rVyxsx9N#Fg*_WOQq#NK<> zsM#u7GxlgpQKJ-XWA7D-T0!hplu|`)+FDfx6jIkaSV^&GhdypdK%u72Vny&QW@of!TTo}bF z`opa68nZh+SATmD@JS~*w-%ZyrgS!@~Jk9m8U=g2t?PrVxuWO z!^LG?L3i5?Jw93#Flby3IV2g5;_M7Lv?&dC^t+XV3jDM`-s$hd3;Orp*_MX0OQF$5 zK@!$A?H68`uOlnkJ3G*q3)SzdD%n%VN@9vuaSDyRSc;@Ce8Y=oU0Wp%3o-meu_RcV z^jhtP&E>sp?5s=q$QIAY!`N9{9t2N^e3tCv8^+9O<|Q4P{btjEIPTw^0%!wq;y{!J zD%OdN^#evr^Y>&{jinn3gx6~$6*bvu&nxW|66b7QK&qQ_}&uyLhv$V;=j7k>I1U*g-70` zzNCIduFgc!9$K^~mrNpo9KoekAq1BxUl>eHsQBIUngs80s*apF)yUDsSfN^0)x?LT z$uY=Uh{}($vj>27nejvG_~`4g^NZN0Q7Qg0?cc;kq8_h4j3td_v58f_ylCgS zxe{}i^Pv)jeW63>Oa2>9m?WFJCU0#@yLYe0^+YX`>iR{(xZj6J9$tj3qp-S|6jdJL z#O}Kf$cEp&R?*jc4*<8`b02B)aaR}@?dbds&Rn#Cg4P;odN1|D$97TK;az5&J-O#@ z1Yf8B54}w>UG{+aFjdEe$p9~T?wBq zXH}A)&C5RbwqZYiV*vM$P}`|#dYe0-T#0SRc7>fw&;;n4LKtxnhBQ(Hl}K;#4;G?| zEx&;B+_*GK>$XjBTMy`)ShVBq;l(G^wW+Rs9f~8!QsqawxFhapXH9qO0pT{zLvbFqo*^A ztNon8Vh=QR%$GuCG0HRDVx7`((|JPYr*ck)fZkvp+ooRQ#5_C=sb6x@hW7E1OIdgK zR$Wgp0SrJm+Wu(}N8=Nk1Hm{4*0tGNwd6>@X0I~pnq1{rJ;~042`vhf34KUs6Ik}; z_U#Zxu9C133!`jm8X0!NbU);7jMhXoy0S-+DV%?mdCh<131-_a8M4%Q0jF+Ej2KB&( zwcu*WUw0OlJ*u!YX)01(ib2h8=}W5hVTi4xf|(Ae>;+58MN)E7nnB?2W4`g zW>yxseyfU>C&Gnk$!Jd3>O9XDSL*l#XR`eIaQ!e_u9tY64Ao1-qWU@+H??~n(4z7A zZ{k$D!-LBFD-9dQoe-C9EPLun7%x|^Iyb4U zN^FBw5PVD+9~YUQ#&(}>VTA~0)-m?~D4<(!E?(--*^>x*T;_F=%6vPTaS=>ZfZ2=% z@Z>erSMJudoEG~jc{NVqn;$<;w}fmGuX=aRo{~=K5#VJ;v$Mt$ZR#kR=W)OERi_!{ zLV0F5l82GK?(boHD$e*n-;Md7i{<_p!oBA1LsSSYU;o^nsa{P0n_XJTj8?D!{V}J) z`n4*j@d*Phv!~;CQGvf&{nv`B zt99K|&?+bJI`$27kibC?KA>gcOx<zxd9cm)h)>v>quiZ)M3 z?7H~)3$jas`jHfvo!uYoykCDfFb z-Om^6TuPT#2K`%|;v=pgnjd&f@kP!tqqnH3>^Ez^&MB4muq;=$`jw1Y#NovLd+A9P z37_3~8siU-O);UhVJ%>mamCvNPN`^6FTuyS5!iL7)BA%(HjOx2>wAA}E8c>f$>%?m z*T1xZPj@Kt!jS%$#;o!Om|E7M4n?XiOj|z^JN-lX@S^BFQTR;LdGm%~BEY;M|4}bN zqj@#kfhd+K7U>V}U|trhOAy1lgbRDP1puu1ew$0X_{T_Gh__PU-Y$@+-!Y78Jn;P= z&GKyCYG{11rKN0lxt!fWT&b`M(CrcrO-JYZRU6b9dW@=Z5s*PvKR8hBR6Z-WE*yTQ z+*)B%D6R4G=Id-s#gVCw$!4kPtRdzIJ(JTLc&gpu}D6*K1 zPA``>aZrxGpE3(el$;~-%sU(mURv<<@SP|xTS0)WYv|oshz)Sr=Mlu!^<=HDBB(jc zp#y$_EL?;8N8#VSllD-t|Kag$UiOwH#5gjOtj=q>*WZiX#(5#a&;g!gNkv7IrhJ<~ z=f%QLeNCoM_}FF>Lr0-$jpIu!BWtX|@pg0k%Yyj7Hcs!adG5OEn!Wbp&%nN3I>)aB@Z)EDsh&r}Cr&EsA2$Hn##wij}iMo0F z;u3}9)=mC=S_L|L$EBM(vF|rr%8h8HVv95KJH(HB`e(lC^#>0$>)i`?A05lna2kB= z<_^_9PqP&~aZ!7qA-r^w)o0Kmh{g+ii~L7!!`ZM^zvEIQA39IcHEI?ON?bk)^oX0E zlOd0=P$j}{|3ZmboAVFd0vS@q$PC6r6!RnH*=~dAmYM|bzFlQTyH+!MFLCId{@JhX zj1|FxUiuh*Ml}2)2oM~0ad2Flw&g|0vYTq(=9U)sd`Ue00Y|e{(M}GRYT1gXXK#ik zbAyq|tERuD{1C*b-FlvarvcinyiTCE|8cUy$Clgjj>XeAzBN5~8U+Ff_Vsz!5^DLF zhMS$d-#}Q@F~`{m#RlZrH-D>hyAj;@|0p!gdRMQgg)@Fz_)?Ak-(`P%avX_r#Dx35 z&e+K?T-3E%>>r%3D!Jx0LB2Uu{R96Bg!ktMK=)vMHb5o6$^v=fWal`e2dj3 z^6%hVx%N>@4r=$6NSGc2a8K0`e>Y(a`_4^$Bt_+Hm#iGUiD|qP0954hTW%2TYKRC7 z^D+hci*6{m`LhNnjn};$5v;)4HOqP5TINDyv)DhPW%xk)EowUVlyhI@9OF^c7ydZE zGNSGwRVTx4MP)Y)YG%zCq4+{P!ikpYM~!3bLXWFf@cTyu&L2n`VoYrb0WnKu-Cci< zM$nC)%nE#-yB}qR`c2=n??v1!tc27irmkj{*-igxJuYu-DyK>K;@kHGZrZHpvs9|t zfQ((%xzS+F_wBX@A6MkOkv!iRd+aX$vlg*)mpJe`sNA^6V>h;7t6u(s4ek3|v9xo@ zAKUR_%;(PYPJeIPkylNg^zDOgJNbhV;7YjGrvYSzX>e}P{x|s2YYcA}cBFXzJu`as zI0E;6dg=Z8YX&M!rnGZBKYWKeqR_M9OsK~5&TRcSNSIKQF@q4cDilUB8seUtK$W8^ z%FZcZg9AioNMbyfwc!TnX_)naM1OsGA4!D29{irN!3gM)EA(!7Y_MGu56&3jA6lF( z(89B#QLs83a@Ci&TExuLJ%9fy_4G_P*MY4M^ys`JfsOxQC1C(!h9crHZTP$sHP{H0 z@};HVy&*#J$&Ux`&H*(FJN<;k6f?$1htX_?IEa@Rd7Q`qQ*DI%i5jHCe=YG=(Idv! zACK+6mr$Z@$x{Z3LccZ#E;UbU*!@@TPv(WTEL70R5}PktzdmC zqNC_4sVohY-hoEoSEDshDCUU2dXW7f^*_$wsa4`yd|2qG__55@$hUl<_>}M6&jH=Y zj%*j^>4@Cis&e+MY!{=nvB!b|mR|tf$<&M??bKW`iRPJ4zjKfWruqkb5GIJ9h(<|w0FZe@<)2B4eO0!fM%D?DGE!sC+v$HTfXt#~C8(|*gUxp3 zbP0JP7Ecn4;+&(v8L*yl8W|^lXc7=$)=XFokP47;mO^eNb&R;hHQPF_)D)JIvvB> zG02gUA^mHUv%I~q4B|Q$QZFaN(UJv)J1=pwq3BT_g>{xc2fx`mHwwP5_m^%_I$;4# ze;h8H_@0Y7QaAy7opl)b6F}ZKC4k zUJU4glKQvIZy)W+P(BmfTqx(wN>0#P{!_Q^4NM^=d(aQ*_s>5|I!GS2vwct& zhVS-fv$j4+_)Lr(a#6h3GbqbQByd$*9k2PdZQ94yN=BPd(uJE}EEEfv(@wC`#6+|N z=KyfuZfrmpm9G#YV-3=Aq_@IX$Jsp{L@H#*!_yJ@yw5s>+}ZERA|24&b;p#eyPf>@ zjr-Vw8`H7+-@0^NeY$WO(|QAnuFX40$kTcQHrwjxzL#%vo-|0ix#Awgtl^yayBs>5 zxnJ>#tQT}{R%nSz>&naDLG!wqG=}Nt7B+N4cEJ@i4CD&&3?|vE%GG?m%D%ol`dOQ zC!n)B=(*ye=Jc&4-yh;H{N4QF(>f8@9T#NCXfNwpaUVE-RkJyUZ2K#KD&R9&qO;N@ z%gW(^$}Win57KKb3MxwQ`sp82w{^}}jduCmeW17UZ^J&`<(x@v_um!AfRU7x)W7_? z>pD8H(f68^<~ZRtdk3SoXp~k>7}t%SY5K3CPpkVsm>K5_EwrPp*Cds6Ab+8GvWWb< zh?f$%#?kT-TobMaO4`8>*7GM`@mc#UuzH!JxNW4^$@q6{B~$%*KfW3os;NikeMh<{ zg?LL1WJB!E+~!mcF7|L6=C?FZNBjOT3;^5iGpM3=mc%JX)%nnxvs0D_QRi&y9J@^8 z8`H9|6@EbN8ynm~27mON#Qmkt>HK&;R({~U++Vg$AQ#`L?A7bcQatTe@;tBonj=}k|?-jMf!IPcyG2#le7JUM&%V7TrX zX$M2Ehw+T=)^nnd{Y3B-ET_Au1jxs`6Nj4(VChos5II&RDX3Mpqk7wIhu^KPlZn8f z5rWq^Vlt%PHiuN_?>XrNY-PgqvL7Lli?QoS6@A{;=9F;945XrEn@p03jvgT1R*H6> z2~(jS&-Zkn&hd=N@^RDmxq6gY;IntLokb|FiBe9+gEq2t=T+MllE;UP*Kp1S~qHq0#0fKu$R50_WBmyV8(93`gCW>Fy4CGK2*G7a2Tg2Oj zGM1_1L6UQhgZtAIINQHwsGrBz)DM00rIh;IGI6^gFYl`F9IrtUZA8k2RED<)B~I!~ zG0CO$0Cq&3k5*PpZ_2o)JV+%PcuBvYfcPDT?9!OwO1sPdhe3Y93c|e3 z_ZRQ=Nx5hq1v^Qdw-4vwv9qDi+MJKx1an2e2vB`%Ybt?l5$}D~S z-tC5~*(rk^obkV=TG&w&Kfm!dPG1NRX>IyrK&LDR;sG7!YcZf1apNVID;E6_VyuMV zn>Ztz0#bPo0$1=S{RG2mD z?$xjKyyaxVJk_5AFBi3{JFg4tp(W_Hk=uZ7Y|CG4|N982AgEaN{GnHJe=|<$$NQTy zy4g{Jc`a=6iT)YGwaWc4@(n!Sy?7JG^MBi=-LI&qsd&=(?Jw`X^Ouzo*M}d}p^cv} zM1fnSZ-poJD{A#05~Zj58{Q3*TB^ba;T7Mz$%G5elvKRIxkLN|4+fwf<+@}KLKKO5i$4T%xbL$ec_veN)i*N3ALAt5$Ul|rzvubYT+KA zs{`Pph+dihm(gfs8Nc_Yl63!n)JrXynkBn5y?KGL8H0*MP4elb(JN}xk*`2>ZCBWv z)zqcCua$iJDZZp$guDhDHpe*f{is;*(0nY`Vs}#HBm$(I#49*P87oe#dBw02bXjy{ zGtR@}k0%Vm>-tz^Z~z)5;T{e30L{;P>SNH-6SRfNB;@9r^H(it=biAh7Ufk~;vJmo z;bipcm!5x|-Ccy)pKXEajFkMcTcBn?HH^pdLHrwmah9}+ZdBys0;U$CBB1e0;ebv%WF53)(vy z4DlXVR+VL+Q}Lhp_rir?Kv^+7Gq5XrTe>B+W~N{HB}TpVv^m_OGTfTxGag=ozYGCj zLyijikb(a$1;m=fcM6LmgGVqlp%UBSNz^7QFCIbV-J*qh_URc`9jcBVmt5)LO8@)p zi#sKQwT6F^AzGPFk@8=UcAss%Re1aP;8*ZnK~-$1TulJzZZP^G;pl^-#-D+_orVYA zzezu!G>9P^;-B3~yHZ?Y3GCHAHBY>4qfP5CcJ5YM_IUr0ATOkt1Z~nQ^}wcee?L+R zk1y*1Q)6h9W>BDCW>HHAons%LByzZb79?jCBQ^ZUZjmq(-zUSO?#Aqa3DnxY3J-As zBm-3^8*w!|Kmtie)319xp6&y7iM!kZ|FOIKLwPOiM<6LW30Kmid_QW5Is#L8X+V8= zC-Sc%Q6ZrvB_N&N$iFllU_YP;Y__LrCMOJQRfHBpOv@M^RndY845U~87*y&&Aw3!=!Fb1qYbV|aKZ>u z&GgiwM8kn#lFh2BD)lzKM~q@ik745BF#w>q#;C&MKQeB@>azOB;rV6C+?bT)26H`~ zVKCnwMaymXpFfbzhAVf!g0rC0Wf5=bkLSv(-kC+!lzpk9xi53*ZA_OX?4urAOAWOn zm35{b65f{m*%a-4oIoSv%4eks$nV2DDDtcQGK;IzyXp*5tP3CIgJB>uq`hsF`a}}7 z%`MR1Q=!TR_n0XT_qze7k;e{{N@SZ%IzYGkQ$$E)E+6XAW8MWovv+SMR@(<>LW(`R zMQ-njzT3O={8h}5ku2TP2bs3IFhd7=-PmM`tk2pWPwa#FD#QWLUkwq)`+cR{-zbQb zTP9MAsIg>#*~`9qM%y~w76p~&xh#7&R}afQ%DN{nn$7RJ!Ib&6*PhoCGTy~>v*G`W zn72%S<6b}K#IppfKl59`2ihxVPsZDW%{V6p_&RR06SSn@jbwtVB20I2^0cUA^aNXV zIDh2wn9<*mdiR;;_bouIjW+-98n>>;JC_9?&)ufm7TCWAW!W^I#E-(h<+GKXfjsrP9tv%WnMEin~iyv&!Yz`mH|1{@L%YP>zY9$$uhR+xb*BvJKbVhhOaZ zztD&bbAqk&FN=$RTy=(((iP$~C=~;M5J!#km+b5JdLz%@+B6x%u6bkmWmc$j7@NCe zgU(Pl8rhSwt3RcBq(6e6Ku!`~ew`mOrJ;}sXkkVjZ?d=awk2o=ByTJ%B-a*f_hTPe z#L&U1&gVos@!cnHZH}Z_=a2haQXwiwSI47M!6vxu6x~R-y}KduqEKmWl-E|+cOt!; zDAo)+Fy7^ZXb6UzoE0v93Lf@qNVE!OF7V5VM(b7HZ4}L@HD5r2>yzH0tHxZ9bjg>C z!+x5R$d1rM5x6`<)^)eOjO0LuPUBa#?M@;xHP4{?1#VXEswy zE1&S^LO{{B`}@n#n15!L474qV&T1K22%}j2f!iiY8&t3eIz%w6Id_v9r(q&Tiyo1T zk{_tb^A)j?=!D5lXL^R+i$dmDH?i0~&O`}ycb`c2#fpEyKYn4L^t0}%!Uzwl7(Ocb zcB#=(ysD1`+$j|`j_*XcRo9R>+9`&iGptd z(NL!5b?I*>;02_h1tFomx%OQUv6`f;dh0`p>^z|5RsD|PG$dOY;W+SOBn{s!aPwbJ zvA9a%D{CSbIxZBYrla-eBf;cD18to)hi^qIp}CibrG;RS2W*owNs1DY?0N8r=r=5ClJyTG+e^tNS>hiw`b?K_Kd5V@ostm2E0ewIM0P1% zTXG}>WS>O6uXh8oUegEm7H9b?A#im()vCp=Z#O>jO!3=mrx%k)p!swgupoteLx>W~PZ*^N&*$mqaqn71f zrw)hjR~{C0kJUh)sZ}6bRxJ<9GlKS;3cE`a2SeX^EU8psOZu}*(>oL`Rg{@m=Wg0I z@SL6VTnNRUVtTp&1HV`Kr)FZdmP)eBh{E@Eks2WQLqO{0@gh0@?S&W;8LdVQ9#WYr zkEedm^n(wy;OKttYQG0A*+El>g+C;#>+-T{z7n(K(;}oSQv?0qJSryNS+Qw0RiNfU zwQy?ESkJR~U6fRPzoJ&&-{d1F)(}|HM~bL!f4&H;sgT%SCo1x(TmiM_5(=WNWl7WuabI(n4-cJ&1z#U~rtyBj7J6 z_fV*vFZG(LDjsoWVo8)x?{z!Zsp2mFbl>a%NG`4Tqm*@MZh37pH@hixKa0S#4rb9? ze|7;f$Z!yN$k*00G41Yz+i)#sy~0N9rL?CCF%v-#)wTl)dzA!{DN1R5UjMBhS3?8W zDm{gdPMy8`a+)fte`g)`ro&wkL65vY@ynyB$g1lqjJc>wi+fe4S78 zn`G#&s&Y>m(-n_@`r8TliLXwo^%ve>MN9@xx;He>=D(0l0I&(=3AvBIm)Z+(&yb@# zhp~2pgc4@7Btj8kx^w$yl(H1`XA#em*5LYuUu)QM$H(P~%E6XTc#zj-em*J=nt)ev zRE^A)0}Z#9vw;R@Cl~UsGaxTjB8e&HV6~jCra2GPD{T~red2(D(An;lvI;u3Gm6P4 ziIkIjZrQU`HoHb44x5|xuh_hr40Q1$N!wK=iapg{lfe9ZNlYcos{$y(7QF8Md1<$= zT1Bf)Gp|g!Z{8v8x>*k?G%-(C-)n5BF)OG0IIkUHT7RiYsL_&z0~H?=x&n3%`LSYr zD^&TtWk<{UyO7*;tG`geCXV8!VJlhKfO6-}$a)wF?ho5N#7O-0D!AUMafhw;ODw%R z*V4BS=;wM8#3e@)rDM|lC<`td(C>-rss|6FiUk}FR+47@%X%JDTzSGiPO@G~E0sK? zU+Vu@Sz<)1DXRz+%l9iu=_jBxq=c`(1(c`Ee*x90nwqoXR!SI)lYBlf;ZIaK$n>#$?3;!9HYBi*K&z!o!nbyJS2MoWKptXg%5lr#@ zHP3dIg@8q;MVY~0o3}e3V->{+eUv?)Z~uA2o51tyWUF@bAv7O_-9WyZEP^HV1n*xw z66*mkXr|v&?-9fi`$2BB%sKKF4HT%bvPZ3&vIF%qPyf`n)_hyo^pd@~3-PAQ#(ird zz>iM4d*HtXooB$}7}#D_n+o)YBg56b50eLdyN=ogTsEO8>r_m6>Dl+1OTmcc=ZiWM zGddIz;b)69Y0o+nWSWCHPncv6-=1Dx0!8532GF4T)HmK%-!CpxF!l-ogpkZN0AYGV zB!P%vLEG30zXBa6r3zq_f67d&upv~Ev&$~9U`&6khuhykCsKuZmmhwg`GIZ_S zlBtKUzc8E_YeTp!xzj^~`qtkTfy4uQ< z&lc;k5cf$rqJWj%6aUZKMHAA$kC)(Vk!BH~_x#+qCvwu#J0gvgz(xVO(-Z^p zMDmM=#0j>}(n^mC*IoV$3BDtu3~N?6F=&l6!kBFNzt~3l9LWl0ZW65M8N;z2jm(3z z9qD`BiA`jJnXK>_5t|5+SLmt1@(KCl!7x>du5Mvpl(tjk!>9{B^Q4>O3TLj`X>Oo! zUY&N_M$?l_H2eB(Rn(V`*^>#~IHn@r=k(UR1(pPE`O7hG!QZ6BT+0GNRQiEPasQ*)0R04!N#B4egZvB)C&>ad4A z`h+AnPQ7XJ3LyJ}r_(T~8^LqxUXEX8zYBpUueZOU>@FqM4E0D`L^28IkmXr+n+QjgOW(aOYxnDlw%-cD$ zbse0ME4{Qb=9jqwRaEE^CCtqFy+=Rsj)zRGFEeu0K>xb%nFF-s6@+bkSWy={*M9F& zgdS-~_-g3#K3q%e&p1Kz?mAKFHWX7kVQpBx6aK3w7NoaPOkp%Y}SC zklrK?+0$Dtr1?;WFGi%Tu8!>^MEtzu1E|GKK*vp%qo}nheMk%tw+_zdb2{_vgh7cGd>K zDC&y_A1JWUWWH$A1CC;=D8{^U8yJpN7}exPOQLYlYmprmTj+kQ{PZMhwp=Bi5}@>5Jc9FuPy3Qpv^%D{(>5sj{4Te zF*qb%39rRM-@L7!ltF5YDYj9WidA4IZbR9*~y)@}yh@+ek6L5PH z!*nVC`PFX_HMA>(jA4{q}y*#|Mm6-139Xb7Nwx5BShA+jqpn$+YcG;qJJxdHYl_fPKUqoT$JAPOErGnYfA?V1V z5@AtVLOJc8Q5CQjQ^WqbJZ4i^OK+}(qigT;Z)W8wMORykXY7pcrQy`37@1pj5UW4$ z>7g$k5RLjOvo3bmQHM~Cn(oNolpPn0^&PzUFTNV)?`EmOV}? zKkQCusvSVmHyU8`R!imo4Jw}<@7JVw5XS>ZT!NbV@$=`iRXn~27aw*W6$9nxYLlto z`i2O1S^isEwA5V$)zW17Rp}kITYNy4oi_L5X^ebM3xWkmw0!tYN%i03drC>BP-U(NkG6n2*vo%E>f54mZ^je1s`ZLODaQs+JXqNTuq4XWu~ z{kz}f&Ywoh*+!v!G;iV#uGV^sZ=Q#FP2p8rvrFF4J(<@n8QHBI0h_M7lhG!t19(SX%qKC^@+Y9a5_>GwVned zM=2albBUJhDCSk9v-mkt7(PH~+*)bm#Z0_8|9S66-zkp946V%R&dW>hru@YB=)(B0 zbWJ805s1$xXbiLG=oU}_y>V7`)WzJYv02AK1_wi~9Jfj|%Bi{>jkZC0i)YiDHf+(} z`eoQl*Dlp?LJ_}~C!m(%X=?loGA!&V+~{EZ?~#Soa^5eHcjG7IUeyDONXY95x=@Lh z?Lw5FRWurB-#sPX%Eyy(O;G^_1YaFFV~v>d>qxJ=7^Or$T&jF4alrGr zWWDNdvy9YGZn9zvR&@uDcILcx1HX0y^&BuRq~TL6pyC;BAht{K4}F*bBUOU4WIpp+ zBS!vK43L|6E$<=pU9K+4*26yPE+CE5>1;8r=@f-}l@bZUa#twv#6%X9&-S2?xpems zSwL$?rfIRFsH!9s(E4~^d>owmIwHzI?%pRRLl~16&8pODCOsE#$H|OYHSyFZ6Qfqx z0-mWj_LeBW4tqM(q+Z6An)E}lN#eLNk4N4*RYT$s`S;VLa?P(ccGU2`U_C*}2s0J5 zDz%fk3mPR-OVUj(6M?I~y-QMvB{ikMD|pH(g^h9ZAs|r)3VoUjsPMx*=SHwuDj~Yl zsSpoY7gm{`KB98c$>M3~&P5~b?P&kFHO&2gu#IIPhnbV|JK5ZA%P2HC`1bJ`r)f&z zf1Y(&(!xE3mEYf6(G~5O&q=OeBs(aEFh~Kf(>mANQSXX4SUb{hFLjKlT~K5afk6Em zMq8YC=N(YZ1#ls556Xg*LuLg8eHTL}RzXAdkI8?ok+kbaE%Zgkc@xNg(vYTUHYX)H zT0|G;l9-v&oA$y~3r8H`(ZR7Da^k*m1ncckfo9+Cb?3GSvpP*R9Tk}jTAK&_Bwc_^ zmmCb$lbHPf_Gg{oX18Y6;Mz$oo^M*{B3ew}YA7ll0Bwd3Dxx+_|B$1cet#r(x0&sR zttZCo`AevYQo=P4Q5rz33pyFnTAy;UBIO4*>mc#w1%j143jBHtTt?DM-~G({0ts3X$W{A1GP7G`x0 zz*2f6Ip`f0G>E=o+2>vx_VtSKhBFyIO?N5$SkV7f6K-Nn zY$!I?>gCVZ6RpjXi%S>JrPyJV)LI(|V4?N49@B)T)*aH?&1U@&vtsDB}5X zmwonPyM=i3n=#J+;N6l_=BVfGh5?IbYeFbqs^;VMVQz_L?qkieUZkZ{%H#dvL3}yB z?jRH^9SXS@!`35pOMXI3{k<`9-zs1v7L63Cr|F6fZRf~Cd%8o?E*{aK3&MCAa6T=$ z0FsVJ;j-yG=sOh9%ft^3O@+;*MNh1U|5JPs=tKw2iCq%PFlOrzk3yd*_EryfH}}Nk z5gkCj6eXt4d|2a@`(AIna(*PCGCRPa$tTx70#a%LEl~{!7)z#ZDEzqxKXZ>kb%lR7 z@Ll|2?YhzT)`2k8eFKAEGXBCI`BHL3fJsEA4^H)C2)G|&2rXv%8xrp8AifPgOr7`> zc=r+G57b)NTdk)i(DK};TwFZvg#S1e&rj4fHDzUN`mSg-!XJO)!@ut9Yh=p=Qku{% z>jq_3^^V7?jg-s0!@s6m4s(%Te!h0E2b8oX*|T)OaN{tu6bWCy1A`@>X&kVxZVoR@ zhfaU=4W~O;8M!bdSt)!y`_YE|Zcr8=1#(!!6H?VF+7;$%_jMc2H>b#Glljnj?;*IT zwP|Q^XfZVdqBWrG{lD@drH8X5g)KIGg7|-O`kjF;LjZ=@a|nQ7yHE{rL=|b;PN_J8 zjt)mfON#3hCeqNf=&ZqAWj?e?Lx=f22C4zy*~#fiAXl`{NE{7RvY$(4y6kJwQ1{68 z_+ZmU>d9}m`p+eQ21H*fW%;2lj7$5KW{!1IMuH)uaz8~0>nq}7h;hq5hq**=>6<-y zwq;^Yo5W;K0wJNr(}i$MjSJ&_Aj7PApu=a^vp<*A+#*4}*7GyNU>On`=Ep*d@4>RH zE68(QpIYXHe5@iRNC7#<@=F;0=C0q7*g-~pQ{~v=s307d@5w3 z2-_F5V^en~@E;p4d9A}TsB1|(xTT2-P`gt(qkYwR2h&Y##NGoUJrqfbo}7`} zS{0y?M)si^cFdtPbWkRQKM}nxx|w@Kg>~I|GDrzarGWM*1U5+h0!K*{BpW`nsXJCe z=;Wu+;C{VURJUU@!4>@4rtGHZLbPS?VBV%F>HgdupvWy*fA&X@Yl(bcyz#z3K*)En zM)GZy?BA&T3KJmPrEgEIPgn@o{eqO8`5Y|~mVMf|C3e&I(W%+lES>t)C>-T+(X|7& zZ;jv&vH_j2mQR#74xdiIyFC8b3njRC$`5{qvv4=E#D=%h_P;S9C%EJeiN|T;$0;pt z9a)FeQL!Ai&e7I&@4VrHrA7~zr>Sooa5GdDuhxRT?#=X@@p(euqxWV+U_NAz332Ht zoaEFT4Eo>l^xa*XkH~={Gv4$4%iN~w{wFqSYsF^~ea(gV_j?^V$(Y5U+UBh9d+_08 zHT;*tf4gTd!l=8J+H1k8SA`s%k+^muXp@aGqOi+NGlojAA-b6}iS-!$cx}W26m>?0(ex1t?tbaiN-d zRfm<|)~B+^w8@yHzqH}L0)pBdu66Q3sFjE?J36xY>5d7T_Z1$zB=+pX{S+$~k!g|;+FK>QA;C0f+M>JkR1UF1Ig4&>h>uJ zX=YK@gXFMR3`u2slbkVXz~%ndT-%3re&#xWiJxy*-;!OfPt`rqVF>p_@-AX=ZSbW>h%&uf*Coy0yD(OyM<%o!ahygg|29@J@}EZ-PFCx2Y~?w!;X_9YbJlSoms zAN|-M;T{R`4`ju#^PQxM37upH&DVb~J=-LXx1Y7u#N}jl+)EgoseM0vx8d(22Xx+P zO)fzR?!6d*v~Ygtp;@zx5bLE8Z$qc$C)2L&A9TQc8}Tzr$NyJRy075~lm5uJ>EvKXRCB zd}qm&Y#OE7XIOqz_v$jV|~7^&+sbxq#-nI&iX=bgeX1p5O|VV(+s! z`{D{uIqj|Wrxs(=QOuEvWk7Ggua)h9L+_0aO@2n=LQ5$6-8A_yq;>5qO2$pOBn>*R z8gr?4W_;$sd^^^{h4|dPc7YAMHLos?jCP9-CeGZ7wVCEG?vys(4vg+U?fA40RRMnd zvnBIT>?(EjX4D17l?3&Q73mG5q^dAAet7HFHLxGLy&rq*o1d8^}{ejV{v8p^m8t2TXXjNs_BmB7W~~5vc#i#IvH+4k=&;G9>P6 z{8Z?M-wY%z&Qol6X36WQNnpmFs;H-2oA~8+3k$4CCtW9YYwIh)$>llspMBo%41uM$ z6g2y1<~aL})AU<@lu=hud}jWdJna%JV&(cz+U~NKo*{{?KWRPqk@VG%7XmWejPAS; zXa)(@mBxzd%7MQ!)! zZkW*tmL?pZA++ z(t*CEVS1_GOiG$|Q|8L4O44x~faW+O=};gZUmginXl7uIN{Xy2JBG{~QSlM|)5cfl z!Xfjoj@rV^X8jvMpI=ws=i*PqM{V@%eGY5Jn)mbRlVf?_?(URqpd8;mG`MQ~`^PWU zHyZMMEoRLy#*~R{h%|6gsfhEk%iHzam{31Nq#t$Bw7>IkNSgT7Gg_)VCEJWFAMo z3O`++Nd*Nn(14GdG(wjw_$P$EZxqDJr&IoY#<#N*|lXnhh{MnzzUmX1*Gg+mTVFtZ_9D;j1aT;vnxVEzcXp2Exr{;aPRJ{;#{96W#j7 zc$8%+ElU53-*`^Ys>lvQRy3nh?H$ZwdO+=+&|(%swmiz21)XpNOpSyvMo5LKfsR-C z0m`IBk3~VpPMN=60IW$Sw4pT6Otc=2#!@_*8v4a&iX4j7g`WO!XMk>0@Q}zR0bqH- znJ$ztIl-u$t*jkg5tl!skgO`zMS3kkYTqT~y(fb7VgZ`FpdGJd<7hjATnhBZXTIT6 zAEXt{`d0ffWr%FbvC*CMiO9HOi zjdX&$yh4XPSvA?=IyN$_ycwPBzGMLqQsa4Eir^;~%{CDg#6hW7f_)J-a)aSZi&JZ9 z@0sZ=DJq-Z+?CYrFS_@c%Fl!yF!w>Yi5K>BAMl^X)^mxt> zqi5qKTX!zL5#pVgk?loUOB0ko*EEED^Xu&6j+&r+?iEn$zly_<`H^=)R$$gpiOm1e zRVSG*?hx^lg~wy}nDz%Ef1oz^UMs$Ii}8+%+$obJevkv7#CAUDK);V!Z_?q`=}9KU z>BH+bC@aqwNUXzNeP^)CeJ$4G-9ZxkkkpQs9IaRd=UrB|2ZwIj0f%vC|K=aexIUu==TD!O-8QHx6Os=u-J}mKFi5+HkvSWh z*SaP!9SNGoC>0lcuyDKYtfX=KB)A`zbG?tI{d$1EzJEg{IZ$m`MCv{q%E)mnrJOxR z8^T@vkZ86q#~-$4VWzJiM|bP`|8aEPk5v8t|6W_NSM~}?cxPuvNJ7IXv$Dq>=DoOP zR)k6!*@Q}naB;8e+DZ0a_g*C1z2?1{-~0LgaQ=XE&g(p%=lOU(M$g+wzC~IClJ_&X zlFBJh2&4UsPr6iKCnydwiNo$Zk0p;}CEkX!S7P~ss?Y9M3v#3GS;DE9%Hk$sbEz4t zVTB-nR=~fMR5*N}gH(^Jg5Vpu)YSMu+IB~QUQrPEh5gZiN#HhL=#+LlHJnza*_we< z$NptFf3BN3l$PKUb~Tnj2Yu4_g}H!1&b~mOx{N7J*#~OA(*_Xa^s)H{^gBy$S$YW< z?U#V)@_8eYpWvd+z+q~lLFDT3hs$5r5*4Wu|4VURZ7087$1ursR{!T0A z^!QN!_3QiWCQ#wsGo_01=Sf=|9Zo1c(Lx+lqQm!=b8xc@DfeW+H0^F24A@Z-Ug54J ze0(~+Y|3l7OWY6^@knqnIEw%hQuj^_SLr#MJYX37Fqo8#AE zoX=GD_o~`WN6)g+=_hyl@&+SwFq3VI{i`!$LYeA;qJQ|hrZn2!d2#`o)?=>pEp!U% zyIg2x+IEX*Q!ZiiwaZW$_^27pG!4M=#8ermT zW0@v?g1^)Z^$(i;sUMdK^j^TL+tkx{hZH1OTTUHhRwGJ!!mOA{)_MRXHU>)CWkA&0 zZ7uc~u0)8{GfS(%pk79};g+}pE1hQ44a>^gfcv63ivJ=+UP1s+{$C1DO@`7&J#M4h z-^~{=H12ZKC=n!ok;v59)b4i-aFq8*TMn@%a2H$}ABQ8kI`KqJKjrV(alD+IAx8k<}42S_w! z>>HBqQ9Oz?p{fc}Sh4XwIJ;hUNX#N{Q^@6ete2r?P+0|y_$*gaN^9zkON5OkGe_F} zeM1F}zDz6d?AE~jD+A@!j?Ba2-zvd&L+$UVvl(5kSByRzzg<( zm*M&JUMv#~Usy*5#H`I{9dyPg6`qgdq(7H%-#%d%TlWOwtPXl+He(9b3u4-1yx%R3 zT@g(gsU1W2(C@M$S$^)Y7)Ekql-`_AF3qhW3YmEDf2Xs9s{88qZ$H%G{}32QmTRcI z>j?6JnRZu^*S#-?Kukhj|U}X?qXpL9bk0m0t38 zdGAB>N%vIczVxoX=pca4tJ#c=QE>6C`vHTi_*`}u+k=Gye%e+~3;X-w4=%T4a#_Qr z$l6GV(3q1yEGF(Ddhoa6M7Mvw^H&}uh!yhFdcArMBQkL|`g@e?J!kZ4kb|RREZMVB zrEK%E!IYrY_-5Cp{ULTJRYS*I11fp?M~J!r*B@n%Kahe19g0aL!P+OZqe}y5b#@iS z)551sm=->@(zlx?;b?HS+wV}~9vIfSTdQRs%K}CJ@uBV|Y#HODcU0^VV;C;Q zymaFv2)wN|aTae=$Q@QO!FMOJggK4L$`1(F<Wvyz^mC7AOd+^9 z8^^wMhn3Ksj$F--}d6Ffa2p zr4BaQNKV06CpANioJ_KX#H;6=9qcL(0`q&2)o*fN+olH}7Y~|f=>9uUOYHeXVOaf_ z`(i3v4l@#RF7^LY9L#K6fdu*{U%RV24mK_?c-ViB3GX^m9mu_0C8W_R%^wyxmRm?+ zV$**!PeanW+Jy6XAsjA@)(NXM+o2=V=)5NoT~YQxo$jcHj-yvQ9|})D0(5MyM0bWJ zooDl57jrY+Zh3h#MJ^uSS}9?9U-6)>Gs=BxEv-M;O>N8HN|x|aG>r88v{9k(ewGer zb^jWxiC6MakcVAss||Gh#y&r4z+Wkfb-qJ|HPfj$jjR37fwezyY?BAEybYSS-6dUnBJ#Ja!1G$WvyUdU?i8~GfiC5qG>dNX%}eN^fTWm zuJijmDX9cj@d>v2Gf?VV>&13+AE&oA|HcWODy9k~t*=#{`Qb_mCL9&FxAV4=`t0Y5t7hb>L;PbMzWU74IW4@dyz=>Hq`>ZWGs*GX2bM}THoBv#1)D!0=p^=QaIqduh z4xMdUxR%Ffp9eQuj7e*U1ik1)F5%o>W>%7FRATm~A(T35oFCBW*lS3lP@Xl7l?iwo5r;=)ba5Pdz#zywDzJnsmcpoVe{E>3^7-MgF#JrlfmK&=8ew5kDVBT=JbwjFgaHfstde!->X_+@2T(cJ46N`k&$y4K0LNPE^rR7@^-DWXWr z1Vwi>1CV_z{4x)tt@hksK~{9KD3LVl5x;*_-BHJ^%ukDxF@3PeWSQRCYyK8n^2J|j zCA1X}U(edSSS?HQwkERQC`KOo{a&vXUfVXTEAw3g+2YGj|K?=Zql`(2HH*|gT}JZU z-I;ZMem3-yaGR^`X8?9-%{N060GI{0gC&6diO63#uwaz$umPZ1ukq~16Z^}FvfrYd zC^c+tx;=v7?xFY6-*%>#tL`upc)ia(X3g}y5c_13(LY6vz8t)ACM&c0-`2NeSOzWlaIUZ)?IK5myd$iuD0yV9oSy4M$3&n@UDH$$pG1XFz!lP?yh&&O zi7s`xX#3yST}L$N5N3Xi3*#>9rBk_GK-vk6C&UAH{_k;+# zq0dLHAV4B_&({Z>@M`sVQT25N$ti}FagCplWb+l3Px7m;A>6pQZI$2KwZGE>BfZ<8 zg^)Xl+=FwcghQOqiyM85Nemxz;v+1N7HeBF)7C(?c$H)@~20q$;*qa z(Ggr-WFrh$#9)phy}0I;D?tGG1m#bsBTmInU=~kq=p|D(}aqd{H zEO-q(rUbU{wb0Ul`z$@}-?1NB;l?-c)#|piD2CfIE}>dl1U=i8n3*HFHrLK%IhW%g zdbDTMrWYXJqLXpJz#|(OPKq$RA1S{nNW7$L(h3QxW=1^TrbdCxYsKv%9+c;&6cg2L z^dX)^``mkeH|as6-jqL=cibe`itbv0iZ%JeT-SAg z2j_$QZIo`O!An3#E*)d$8#cRAGh5v<=PMg$tk&WkDsd&=A<~0P=3ED^{SRCwsVVo#xVh+FxrD)$6<&z_GF()ch;RHGhX@ zmV4(VyT0(So0wCn30z=y#M_j@T0qzxl8eM zy%zUWd-!cbT63W~xzstVZF@Now4sH1<&>4uaU|sc%>^I4ZXsl4c>))EITirB=aKLS z2Qsmnu2P71UF55KxoZkq`0FYYLd`N#kGBVr)4W>KrH>rkUiehz9fNsYUF*Mf2?|TC z3{>{?Aj$$O{V@27pU)}brHk79VOe8Sye66v&x1jD!G_MU7JbX*MF-8nvfcb^^kGt% zHp*J*TbG?cI=En!S1iHsw(OEGG`!Y~5->u=>w`+dfzA?@rG`7HkZn_omvfxzDq_NipYnzmO=0wdA(z}}<6dg&^51`uUB7Bwh8f(YCVekj4 zZB@apuZdE88146gRh?brH}-a;iv6qS(|irpZa2~n5&FSxR+06!9&Ldo8c`8%m{x15 z?c;Ji)L#W(J8O2>Cp4>4Ato_6&tOdAB{ou!w7L6LxK^>3kcPDywFk1%DZQd4J!0O_ z0f526fm;KGw`dSqDq3G{Ge6Hp14&C;z=DM*z`b(`2EFxzHO@Gt8sl>Fr%weWs1SMf z3|QgD?`*U3#a&N9?TJqsW$nruq0`m2 zUDefU-<<}2SF7LAED(TFpQ(L;aqN(2uC7iv7mj18B}s2k18uVQQJDXrymRTKo8M}4 zn$Jl`Uxq(ZIHMKf-}2fC@3ZD`Kb3j4`FoZBnqVKKv(cm=u(hIViUwb^Y=3kjfV2F& z|CQB*xU{ui1sG(qq8K-2Gut(P{V(n#?w4DC@ov@n*%}!G!^$0q!>>!EEO@rTBTE#b4jMv#d>0Y zOc~iN-bCe@p?|>x=3Jbkk*_YsKp7cn8G;f9fHYJ`tKUe#=)bq8#JWTcn zwCcmA6wo=wg)(+8ZnIotDYtUX`_Uip=*&_8TPox>1gil!Z8xOVDQ<+*N~iLLNIDmp z_jJqH9Qi1-w~M_prOtxy<1vN+dY9)Av-1xNG+4~D&ekU z0#}oKi?2FX?vGgtbjrb~V(pr^)@2gdj5K|q$a`>JQcf;S=abFnrDBP7TxfWUYp#6)EPRQ?Ba>O0Tjr9^7 zENc|+v72`Q6WV6cEepdNh0R@2VBsB|WAfWgL!1~lb-}fNr-9zg-cn*3NW;mE+IRnw za0NR4e%tPmVNg(KF^ zPL!nX>5OR(MC-oCn_gxX984`yt$^ZiX4r)7?q(-(W_JTc8!d`))W*96(u`X z2L~UqIEoA7qZgpES1h+gD_Fhl5#~g}hBm9YJ_X?3+{aVVJBI_Cn0VOs``IUw32ljg zzCtQPs;5!~ihWOLOQ~{r{#K%0&$r2*m(QHDz_FoC7g}*)s_M`r2iJ_M`;% zEkWPq%mkjJ^D8~l_ig6W#CzLCpLSbXiX7hP>u3x$tpjQ*SvY1I!gB1Y@}2D+n)aHC z>uuhmXK%y`9q!sMj0_e`J0q4O%=>lkP{!w##ZUhmANluRH|G)!em{u&Ku_rpa^~Fj zFfcvbLanX)4{S<&wS2GVW?;zui6Mo}e{a(9j@n}Tg9u{O4QyYzbNmSL#3nZzXDwHC zO4YQAqf0uBpj?Y)GEHp3wMQ9cUu-aC?WOlt%Ydnn>-qc9kNn%I;tIc0K&NAvRw6D-%+pULxN7K=?A09;D%Q)xMBPeO(cfv)oR2DKZ7+@XH&!lZ4yrda*wEClDkiL!qq?i&jp6;e_dTesP0EQg zZ*lv!X4c?Po7X0BOtxbV-*Q4F>nRH4{-Qxo+|^wj=i|go;?%Eh`v&#Q&O}7Y_&i-Z z@1;4$9VimQVKx&o)Ow{2?6^;h?qG-VEZ!k~dhTu>uG*CGb^4xLKW4Y8CnbZO*FH)j ztMYzE4iHb>iCCk%Wxfn|%ji*2X(mw?!jV?pYXDL`{c7v~5a@iM^S|?~iy#;Sr4{B1 zM1Yi?F2`o6rK^i-Y198(WAQoFN?Ht_B-k0fY(>k~x?PgR=J_WoB+CkznnEGQMjJy{n$9y}KXtZ4M%L>*cUd zqrx{=_3P$Wovw#gWo@qdtROiE6?Y>m|03&Za$e$FB6nQ0{?_FBo-Nc$pnXG!g?24Y z&pURU9s<}Uo1A0r8ZA8mRZR!f(Ps{FbEXoPTKxl10fKZ&@_{;Z8ha1qmyPRQJvsRG zq_Pi9m)PbM8QZq=gbJZJn$&(+t+g6|7UX{pfL)I~r#+53#4^xQ?5S0IT}8_t&m?)e zq;ScArC?J1bdmL6@9S{e*w5b{$>YBb+Sfm|!*)Gd_*H#$R9E@(^`dh>ynsHy$gkh0 zIjoi*qHupFlP{ITj*s`C1V4_UMVZC8Y72LhLtB3DHP;ok2~3>JM8eh^q)RS9_tWI) z73~SJ3z8a#H#=kWGUdLzw=w?N76Rh`4d+IJm);T)5-QloO%W2$x##Qa`e4ZDe5d7b z$Zx_x9>5thU_^S)jL&}SXPon5M2d+mV?lsf^fD=6Z?a04+LaZLu-z{EjHdwn4-8QB zg}c0yZnUdjm`ckG*g)MOe<*75jj5D&k@C(==NI$E%xd+W%}Z);oP4KxDkB>F`@{YQ zzh0di1K%tQF>iP(V~71)aa{T*JqYh$ALmR#1!fH@s&r(PojdcD?eDLq?lpTGkjZUT zTjPrEE*T8!1){WPy3?G|#E{T0Dl(>RVvm7}w=oUT%+PG%x#n>0vD}IQ03QE5+H_z0 z!)5WN;`Vj5&tD{PeRBAwN9UVYkjP;}rGtv`{aeTwYS zC;YMftx_{YZVRn&^6X#;EkT+SU{y^UeKMI*6(A+d>74L*F^g$Y<@{QG0)hekEiwdD z1-pT&Rxjdnw#$B6V^7S>ddNeb>e(k3(0}za^ObIFsPlN%ztkMpcsnqn1vz9;-;XNl zlz0(bus*OP6hZZrduTvzXwy9-c5YEkiB6c}k!%0cecmYO-?FZ&5m@)##!R@{2Kn6a z`)c~~@h*ZaQ-RE&uoYYw1FTGF=f#_r(}Uhh3OnB&_q(YRxg1^wOrt~gwoB1EDRZE& zskFH9#hq{2O5HU$PSwMJ`nxrjKu#g&>Pq24O3=84afDl-kwkA9%L8;h$WOz-(R zxP|NYn38rft+M#Qz>eFAE}kM7#J0+9NG85w$oCNRZ^+8)Y}@H{A)X6unotP43&bS@ z*X~6lfBl1eLRwnsx*oLkimFVd#jn)lIG9g{`+YSgiv76*xtyd5*t!0KaZme$TWqJL zveZbtY`YUZw7L}1N19HB>{p)QztLf9oAZr}%;*3AwO(msqS29RAGk4*{3ro-Ddh~u zb?p3a<}V$|+8Kb%-|kKmBlO+ii>+al&qaNu>op8JD^B??FU;ZWkZW;})9#nA0#-Pv zLqhqKJ?DGsy$zNnYKpFXh*hhj|5mv@+T`B|sli1Ooey=j{*&gUS$j5mA`zLcvrc@Z zj|hGGe$ah)-cw&6lsUAr^MJYmj80ozy@B=jy=De|hkw};iSx01^C~w_Or>+^j9EdZ zQ|-4yd#H1Lc;|4qj7Hcpzbq{QHHr?)wggbK7-<$_K&1MAqpP`u8C8s(C_yha_vsDG ztp_$kFEXN6N`Q2-(Vmjj#k6~BEb^dj^*e_S4?$X1I%APGidIDi1p&EG6Wv@0jMR&5dw# z^Y8Yc#mNo@O%0NPkAmhIKVMenPOzsDND_$&R#GS_-Clr65LSjGq}zrHdsvnqyVN5S zlTRCD|4@)+SQM#)q3Nf~=9MdLk^e?l`Y-SR>tXHbE)z~aqpFrTuxwLyZkzv`8-wfZ zOQ92C6)&0YAGNl0$Q>W`Cdo4bEJSSTp0bm*Qj7?FE2qLu-e{^f1Vw2&P zzXXSzTbP*FVV-fxM?v)#`P(c4H7e?1)Es%cs$1LcUfUZ*1L6%66Y-{vQ*j>GppOG- zTY&Ra+`j4BP+k~Ad&7SL?9yz}aF`z))*p`E+>sGsZ z4(BxhgU6`KtZiS~{j62oN?@pPH!N}e*<)7d;xnNa@N{p4>HQc7ir&AGFh%MJ!M|z+ z5hA2hWfZKpssV$3mi>|~n{cbyCz>CpeGpMM^;+#12x+36mCDG3nHWWx_Wph99?1Y| zLkHJ=O(14r@#whCcw{00Evm|fZGH{{&dX_H#iqRgE*UE_>R9r&QBr4t^6R^8wM{{G zK0agde0dSJc0X;Lds?=9Am5Vl-h4|2l>=F06BD9s@D!zu@v%wpmviVF%p29=at+7O45;24J|E&Me8eVbrr$iA*5+}uUX`VT)JAIH+??nOtM#N(MC zz53ecGoFP`FNK7wFx^MBuD`G$PmZSuG(oU-@Q=-89Q1FGLls+-%^jp#lOPZh^?QhP zh8d8)GFNxr0DHa$qD6?Y1y)G1(btY#f0)H=DHF8lq7vcvD9#SC^J0dl^~d#m`Tjj4 zc?Kw66Yf=H{`$ehx5<~Ak_Jpv({@X7v@RWT@+}C6en96kpnR;SbLFjG7E8dQ|MPzV(m zwXmn%eNcXgqc7IrqiHJzIQL!B5+s-{s#s2J6SQ$dNv@?TB839D1T!9d1Li&g~Nbr^R&)m zf-SpFSlZ>?R`4oD083w{5fSk`dhEbT%S=$~9sUk92CV!keA&_QaV+YCLn`q~+5QBe z2_~!~IV^qsox-zPGlp3CKM9<9k;E%>LoXyWqdMLG3u7VpX09(WY8oM2&Wg>SY{sj} zPQ-6Mn-kKkil6Z?MX58*G{iR)c(3NH>;2#ww(p49e!C37I6Tp8(@8(j`%Ti5W3rqs zPjo$lCPGXND1$B-EmK2;|GEcqwf<$tNX^(QozjEgJoU>^RyWY z%})qt#VC5?{&!sYo;@98WXp+~GU9o@GlblFej&ut>p8^ZRZXe7OAyA<0t zi&I6QtGo$>g}^LpQ5{&YBtz};4tyg{LWEaW4d>PV<==^x^=%Zy3z)CUGmzS9`O=!- z#wf1%tHEcT{g$38Zb&u#V`1cWOl>jd)?vdw4UM`uxrj4W5FMc+D6-hcIG2D@AmUKP z=~pZhnD~AQ#=piscb*>PIj7z1@fduO3+*>p0-uQh`WB7kEwI_-`T*4P7*#P!&LeFQ1 ztL?AS%`|ujrwgNl#I|FrCG=P3o#`BT>c8vZP^NEmg*p#5B1chvfk}yFguvwQl`yr8 zA<1RC;G7*qzWu0tsoc|f6uTA~a=SZ(5Y4ahw6w z&F%o|{tbGt?a0KHr$x-V(Ti1Qn(B>;|5`f^)B$YAb0dNHKQ9ce6L;r=yLp;`ep8}! zStsq>YPkite`**z9zvSclUzFF2Hu}}C*9b}xSA2EPupt+?OfqABVA@`PvJ$obP73Z z^R|oJeAOrkfT{Cg?OHiS%iD7Z(xs`rH?N-cRF&myPfQg28TDz9?b3L^okLUESPuim zxSFSig*N0X??{9+#BciO*ZfGbYZsA1{zR(lhi5DJJ_;iXm8)F{5Lko>XSB3u%cP)Z z!f~32(gVe2w#=P{t<4mc9lhWw1$uPk*5;U)MCii8R7GU8c;w^7lhISaJ8HfSn~GUO z)xg(c#w3zB5SL(t-yCad+&i!Z;OW&=r)ptQDHFxFPc55ns~xDugX|wFuB)Dg4X&2% zo<-N}Zo3&1ZGe=FYR^a7TEpFPzk+LD8IwRqN+)4gu!XN>G*213^QnkQqLUO2uIJ%; z`5@bnRvlGBHAPF(^#@>JA~ZVL1o;^z_9+5X{Aw#^m&@agK}Co*d(aoYMo+c7Ad2&w z+1Q@X+1iHIq3ANLXJ~mLaZk>#9aF8{LT-*KyAjiF8uF0TU7#`K4jB+Fq=+#}a50rg z0=)K$kEGa!&5L0-tLt&%aOHKN=3S@@tFFRJCr4^}`V;n@Nxv6i{3W}s z9|7!wjO;8yuae#R(+G1V%wR-*zG1*81>eP|XO-h5D7JQ!uw4wRge8Ad$aq!N+HetQ2|3++Hy!`d^@Cn? z#)mBComCApC=cF*^l@6oXXmQ94OVGGM%{Z|hjWBt>0w3u@Y8>nR>!C)#qLHTx6aWE z?ja>X1L*SO*OP=nHb+N31}MkR8o{O9lr=m*Hu&Bioo3gM1R(kjEh1l$&Sn38R^4Sf zC17m2x_U=-T}l&VoXtQU{>=MlGzNt%yxY6zz zzoG8YYJn8|jxslc{83GTn2|XBEz-tljZT+@<#rvej|6UW82h&ZU3rXsW#R=Uno~dw{0p zW8feid0$9c^E42~O23m-@s7|%Ouj_9*A`y6+v*_`q>uf<6vUkF#zK{-V;qAVRNJep zZoVT(Ghoji`k6^md>a|?RC7c~G~*`}h$^yCcCrm?Hhbz3S9%%ZCXn{wAoIhGv|M}C ztkjpvfvTAadWE#PTV4y9G#Z{QL9DGrnR}$oeQJ`=%(FPqQ15l6&$f8TMq61>qX-2*TIoo4< z$iHY#Z;N52dfVk)P3q_s)tM!l*a^GMi$Uo_1tN+BG&L zyZ2jxKlKL-_1O6;mOl%(n;NhGjo=~H6+L!R97i%Xciy@KD@AKDtcau(l1(~+$?3f6E)uY!bH!T>5x5;RlH;um3S6vPu zFLEP4T;=&r1t}WcC7ZZgKHle^XQ$q})N?>DUd5WRB^xEk2K_7>aZy;$kY#+}wn&A* zxv5gj0zY?ZKbK7Py9?12?_}qhDpf}NyZU>)I`CJIxn8il#V0h|*pqh8px?rAGXRdn zalQCc`{WshEG9X4d3?hnjLNMF8rzmh3xCKQv2h*fh|Rt9_slR1_HZgZ&mA^JxjRKU zpfFvBbddq=4$DH2jQxzekS^priM8KMd>nD<7MpnD6Sbf6iAE|8^H4anFMX=qC(cIwdJO7(iQ|~FpXh!4p z=-F;5wj{9alxa$w+XdCQAbBClF8BQ3(=)F2B)Wm|E7z0U0Hei0iPd-C;k zgf89Qw8!{h>YKN6K#6&DMI!)XlB4J@kg|54wDckxUOOFZm{R3H*O_|gGy%jORqb6e zv+3)NEWhl@hfKu;4>!wwX@v_lA(l&~8Nzmd*=X|rlX1SJ^LUt6e>C`xDw=tL334NQ z--2hrc+t@u607lr$Qh^c8B#?4#(@uOKsu7nWOm4yknJBU?vBPZ4tLA9?gXO$I}{Ea zTK_xeL8E@ zwE(pP=Jl^CzR;l_i)a)dcDF(TEBCuBfcm{)06PMV>6e0L{<>X-U)SNw$B~hXpxCxQ z6#Z7FSW}=Q&xnPX7C+SiK3^fa=4rXPhg7b(rf5KY%;nxs2itS;BJ&-v;0D=y-PNy8 zp5$i)&)bP)Is7nE>2zp;G|rEYGx*_KSnW@Gj8nHar)q|lbMi%qg(8W*k-|!tfm}wt z9j!=Jo|1KwkGYhAEt8~lD{^|!O-wVG?K1yHZZ}fLV2>lL@V_B$NJlc!SGJ}-a`>rg zi&M+xa;JTPQU3m^p<4G$wxo@lJw^-!S1Xh*;YPMA;a)GLv%A491EV=*S^OM=oZpmZ!#Y?d)q;-;Rr=E3PS zto~u2Du|(K4M3NoPna;Vsie9qwn5A!r*6h%SgN{c34;GM+dgEs?$q;P3c9X36~@Th zi$XM~V+!FXz?67Sj9+L8p1s~73{h0u(yKKrRR9UyH{*N!)w;K^+HjU4Y z-g(jEG2PRRUn27B)r$x9oG$yts$&jeBkL8iv`ZLY1E(?QW}!?ZZ6k^U_YGBHLuK}m zui}z$QuiW;Vow#UxY<=tc z;o#ZH_lQQX6r5#ANqPArz`UG%U<4B*GlZqUu_4&8oCe=03S-A=I@ik3%wK=NN5t0c?^vHD;4jno|_pevg$!p^bR#jKA z=IZ}p?IwQl%`>onE8%Y6#nkRn=DSmLM4Ueh)PMy(l~gSyc+Z=Is!;AA#}*_XKV5x| zq36jZL!r;xymR)x@^3A=T*2i2isXgM;1`V+(3bK=LysRv1(_YW5J&C8gYiMx4-_^J zHQwCKDVbZ6W}gdVZu}S z&|#kx>9?_Sy+7rX z>Yt7{U(U#UUkSXuT`l@%UY8c3zo4dzqDb;F~$TwK1>Hk_O z1DB`}M%%(}+JQ=(!>OZnD;i2Ca`8*+QOFqzSeNF&Ig#WnA0}m%L)CDcey!wG9ATxM zKeB|>PHAtiBIU3P^{!WIUS9J`m8nGNc005`GJfU&Yp;H=4Cg4^| ziVJ~1w@f<#1y5g|OuZdJ+K|}YDqaz%?r=s}MFMK#p4U@@VXG}&-Il5Bz)Zr@`?R!k zoAFV8eqw`lpphV(M||lJE6v@O()y4T-OTOa*DS>#w21}ixhP|PE4HhAk79Ep?Z=>p zmr|hVmEa8_)6@6>X5T`O3CfNH!fH(VK~h%&3K&*`BdEth47R)t8}E>lIB>Cq#Msf~oS`IokzHNwa>vG`8h$Dbgz(GBQ_0r5q>o45c-%Xr&As*0+41 zK?13i90!^_3dnAFrSjAlqK26g!@lfk4`dGN`|enOeMtrWjtNXFjH&J&BdEuaxzLYK z<+fE3Yrjc$%?V(D&dSyR0|9NN%0bXp#nO^r>7gZ<&i8Geg1KC?e^<5x@dvhA$5Tf2 zTBni>so1N^{vo@3YIzd3&qOCMpk+8RYf3?;K0?^jr+?97WC(M6+37y0d+Xm*V-Vlx zMA|+PDsK4gjl~d2#6bO;Um2=GU=AUHLOlqwvU)rh9@h1TDz?&_{wMQKq^LE1XOd2X zx>4>^uz^|CZ!{V@Am-XYR8ocaR_-j$-QnP9*a3*9t}(yd(Xjm;@ztR{cQPt>>_v2-cjsdzEVW9czw(8W#$oYSK}S^`}f|S98dS1 zclM?oo;-nRX8he*=lZ#mBNLNqm(DS_B#kJwigYDd#lg_ zjhrnfbDyUnQ+K2uzC%fUvIo;w1=H~ko^=OK;y@x!vdp;6-EXvELV#Ww_?0GwFj-x; zKwY{5+j6xN+WGp#O-1D_! zbHw4M3sFAVj7n2GtnlO;DdUrsZTU#~#Yq_aOAjZ7)$v{{?G`=mY(+9dlv=~T8Ps{V93I?fbP=JMAKSp`NnOH875r+RsxQ~Vw**8Qj?5A5#w^u# z8S5B2X_8k&LcV{r3hd|J)|{f4gdw@mWZn-T^{|w@M&UK5#~b<#*aeP|((74HV0Zx= z9elR-pF-oyaMD00;mhd9y*ldXAxNVWOK^V}qp05A={oY5I*qbIPX~)mwJ+h|ktazg z1-AB#zoaM4wf9nz*J=c0)Y;quA4xZFbEh(s-m$WhY<>mFrGSjdwj()9hpBf-Jti%? zV?D>m$3}^RKCy|TS`VV}Et;@(%C&r2>F!c#j=y2lI9T7G>Qu)4rvtwD{YVMhlN_p* zVM^%v`F}rzMDI2((Q*i7FWjuE@eX4t(#UY|Cazz@&j$X{ZVQq8PE-(H)eDnf*&bQQ z$y;%T!YIbb|8h6c)-^{7&uiJDHG*2FejHiy@q1c9m?1xv2j1c2t_BNJe}McA*^0FD zyX@gt+nRr-RjW_Ax-hyrwjgK$j_R1UAG4{%2>|@(HMj(=(`kwYS1oVT<8yrgt|sbC zp9$AS@6w|9wO4{-w|?=)x0-8J^4K?|q~G$C)(@x?hdbbx{`o7@-XS*Jn4(ys{#Iy4 z!BQ7`rm1K^9a@5qp?H3d)2-r%j&bUj>~4asV+@W?$V5k!NmA|yjRe@mb0B!;YNO9U zLFjcp+?eitKh68TVbvo82Ygl?BO)cOvb^X**X57T9ri;f5uRMj|H16nZgKIGKQaQ&Kf0QZu97i4mZ~O>F0}U-A<1? zwR=BTRAok_aM&odaihb=_e;#1zg6d6pJO_3&gdcETWu1@E=E!7;lOj{Db=^DrlhY= z07~H(e_f(e=!k8nnWZz4XEhf);1px%DYE-$|4}aCYZ4fu*2hV>lAs6xXHRLcW5p0j z7-&(-NMl{qT`BYpTOpm{K8Di-XyY<9-j&@u!AKzAHd|p~v!88I!{2qadpWgKy7YUx zus|e0@t7`|c`31Kw0R?(ym>|KB~CBIfs(P6&^zfJioaeBSOM`5X)mfP>-0_Cm7O<{ z(O&GB3#7p>hpf)^z^IWD@h~2gLn<4xaJHql%6_3L#yxN&G~+p_wPVhRm;*mhx4N{L zDm$4ac$>Jl_v_bxk+}fRF!|@8D94WCasK0Bw~vnZOcHzmZQMW#->Ieaymem~1R)<5 zwL3BaLe$hV=L4Jtj7fVx4fuQIr}9g_F^e*jN)`sEE++h`XXa+>#i2{oseaU{>lw3W zKpiLivmcmi9$K=wK)}PO+}0bW(L(y5KtNs@(r>0&zHt4KZKiZPD30jEP*o+}G`je} zL_h7Z2f=N#KboW$#?9{oU5gzO5j2h!;}8@s1az~%f6s$&3tUwtRkv+2ky~$;mB~LY zh1)+xzZSeD4*A$|hxZ44GbgTU3RnJNZ|HODNi6+Lq9`Zb6n>s?H!-P-|xf z#Un0oHQY99&}y1;gqjSRo4ZIPwQDEMC;SAnetF0EU5KIE>(SO=OV!8K`w)-D;1@J` z+@BqvN$;U_(6L~EFhN9!Ab0bo3%o$apew4`H*?qGRWqR z5^s)QGvE}+jwSnfMeBQ+5g)|X+>_FwZHML9Ha@IO08=aP$j3J4B|S|p^w6IWrv8&- zx;7hFY}So{H(n);h! z!JVk*VfP4`GN9K!zgWo-!I~ zp~#R!*N$0C@b8`ZHK)4OIiRPhaI{J*XEs?NxAgNmD#2H$P!$S26~oh+FNbv2e9^A$ zwEBmFRV*r?^3_vQyqULJc->_q)98Jzx&Z)*V;yuZ+rWg0p#SE#`)#d#%nkJsNaz*7 zm#_~4l)9DdIFMRpzt#lD?fuDLOm#GF_NV@9WoH^>P=85~h6^y>#IVanuKwxEh}&iR zU@XJxBl7j0B|8XFyauKXKsL(78vS#epG{aF?o{OnzmjAD`GnH`5`gRLQ46WcIZy|! z@}VulHoYO?&i92TRohZ)zkes}{pX16v%od($RO=UWXi~C^MJuwp?ixTcs0TK_sqE+ zuC+;H7x(XXGr+G)*9{Bc!IDLhihRW+a|6g5oZLaJ-6%0W8PTbV$*7#8IIBh5l`peq z(9^fP5ASXN@x;QGw+hQisA=0dUG+_qnmMaOR6f;wO`V{+6`PL_eU>_iRjJ5cWu7u4zxTg0Dm|zp;$;Y)q1i0 zF+m`|n7_+)Bmc(&Nuc~^4ha)_zP`|xuy6VNR@Ba|S5z&*j{tBAWUi6#KLtKC{1YpF zR=IifYUAAO+@T&9n+a$+Qln+!YqGjRs|qawl6};p+(f4-=k5mA#J>7Pc}U=>dCf|q z18MyqMOPiwL*|2G9> zQ0qu@g+Q$)QgPNK6Lh`WMmIk7XrLe$bsG_WmWbu+?Yl@UNZ-~c6!q+vGCdrZrq_de z4**1>1JSC5`Rt0}5a7M@-KFzeK=Fk%)Vs%2lhp}-K1-!I_M@mdOFdd#Z0*NmD~7HW z5kwJ8HK3KdbM@khCzhiu?xN&H@aC0j)aD;0TFW-j-M(b)e`!~Rb}MYlkAq4uUIH#1 zh5jp$9M-i%!@Nni&e-^s!N|4$z?I#keU(R^(@G9ot8w6`SX_R9~f zA>{Yf;)FIYHBfgMer`#Q*c^n>)1uTN6n7^Fxue?c(X-=_)Dvu{_r zg?1xqca3nkTSbqO*UdkE4>`;u?yDsG2zi0eDa%dxo)F4Wc+jI$c4SHn)rk!67i>4O z_qNw*+8Gi&_L;d4Bktqc)}Jg0+q+y84}VHPa&9(qP?s;xT0pzJnkJMKi4anqE-=f$Q_J!qtI!$3~>GjV%I7=d_Hem9^g^roA!-VMr; ziO=7^xBK}SO0Zj?*AVqN6Gem)inQJ)2-r;(+PZ)9{#}r?a`)^YN=FvjBj=3A-fBB> zfYvPLf_0`j`coJY+FPrt>}WUM55&{|%`Lmx?W}y9mNXZA18^SAhy1a+WOpMdna47R zr;59C^#HdwNyZA#_~aX|Su$!8hffl=+wa2$&pSrnG##Esh^^$hMp_kBosMgPE(Nx$ z>lMUR4*SARxpW6ESWzLMHYw#0R#6p$SrhRI-na?vTpq>mmPg^3w27o@jIqX8Mj?2EL>eB{1_g^ zjdj~~<$o94Ub`fkoiuf?b&EsQ;N8GW-rgR3*nUTH#}QX)4>3C`8a&s!!1zkxM1CSF z77?=QWloE2U4Ylsr8U{xntWB**?SU1$lZs!#4>>f)w#X*& z>m^iuCirc+!?liVz#w{)Jd)>zf~>g)yS`5}v!Z~jP+lU+bu3o))LMuYkC zq&em7rMd@2q=WiN3Va95RvW8^pZm(?-imr&7S~l23_eX{@;?Ou^0GUNo5iWRiwr&H zENDs)?k7nyBjz@9)gNAH`(Ye+`{w0_%(nmbe7(Hd*_SUT)Z&*o;=y@S3XPD#E#~y^sQA?8 zQ`fob+`;Khr$(Ew1$f<)JMNTY>Gmx-;kWyb2#t~gO={Z;d9EPlR5{uw1?wBF-{J_~ zG{-57;o5X%^y{alN(@Xh#cl78f*?JO4>dYO@mw(#4PCeB+Kz!NLOK3sGdKfen?35o z*)5rXW+FpVFO%Q+Z0m+S{_-{_Z-rDQ~l?5g}T1{f(t>PnihSpVMhNaVb%kmWGTK zle75YN;}qDoD}d0IW)91ZH1Y)2E;J6R101onUy^cI97LL5pw_}%ZDL}-asTan8DUG z8xpdy(jwiqsvxM3e|p&#HM8U8#Fy0dg!ifc1gN){1656nd%~X+z}fu+`Q)~m$vjUY z_qA1TG;l+C`PMFQeg=2FPOTQwPmklIfNSH;E4?N&X-EkZBsuKpz^B*>gRB9IrSBWD z#TR_0TMyfh8#O4b0y|RC2<*)HxwExo5alhST3p{WsUe{%B{^kce)TT z+yoQkvOeDKo0=dLij+v5!2=tXSg`-+oB*sB(qi7A;D<|r=oB5z2YTb=XBv6!6Ra(W z44lpuZNQYj&ysaK*lu~b&vtY*66jh=o<^)rm7T&XEnFzrcv#`OhlIg#a$u zJcx90jS`6*d+H$#59~plVZl3|DxSl13NX%MI}SA~TU&0Pk*j;FwB`c7&*ia9--DZu9B!jx z!G;?b%am5ZJgwi_ER@aju=zlkl_>aOO4QGN^~N<+I9sJ?Lnse9dK^vv$^;)+91v)s zkfgi#1Fh9^YlD0PxI}>Nqzl)e;jfUMb5d?Em6NEuJYnXy5N@WGtm~5PxeSv%*stMo z@w;#9gA^;i!kaPZ65>tEjwlgRTsq-TmwE~}Rhe}M}FEw5_;QxWL8nw%pPs7sk2*7}u)7)U4TdJQ*&>MVy>O z#=pD|LzrtWvUhWnLOaBYvA6ML&t!S*qf2=5q)+Y6Pxl1V=dcC*mH6Ynu~@{ zLO-IX=~3nj4|BI6Z#<}dx*wADR#y$2P7LAKCJw!Ya#3%}c+{_#4wVZ-xb0u)-fxUy zFd}gw0CYUb=@@9_AhxGVf$haKPE27N?fQ8FZ>k|Stf~Njiw5^ z5!(y`KLww6Zc@R7UT^3-e%wG!P{3~XKzq1hC%e?Hx=rGCyTox(q~e-2v2q5^Fs5u! z7+>tOpM7FPaziBs|1hX_Z*k~3Bwx#yH>Fnj`Tsjf5!kq=;B9oupd)A#{U$=pcsN-* z8IWI|M#b$Fi7SNj!KAt)kPxhw2u1%(=e1QLcQaty-;o88=TC+^)ezk+Ww6ck=UDwj zy6EPSG*Om8h7kFBO%`b$VG@_pR2dU|;`KI!|G$IRsehQxr*k5@ohD$e)5r;erMp2} z=+8U!MFAFMLFP;NR^y(ai#6;YopM9KiHF~3&hn1 zBR#Dpu&!|fPBCA`*Yal*#Qf%bCUl#v7yWr~>>d9fU~Gc0bd> zl2#@S0)2C4d&@$@jZ$80tA1$ehU{B)-?}M72J^l=pkt1TM*X+HQSP9@{gsxErfepb zt}p3*WYm3G3P%xREb?tgJu_lUHcihEBA1GepH|Nz4ECYLf58oL6tFCfgUd0Vo6|8} zTO!t#0NcBexi#_L3w;+WUJ9?p2{}JcM33%fjr9+4b)8t9U-Z+4Jh%=lA zbyuUFCV49>9hBuk=1U%ytFg~=BJ0)^=;O>otG}Ny8aH5cym-=-hC8*^b5j>iVHNv3 zcU8jv;!@IZDT~vQ@5q^t^Db_+`=CsInri1HEXNed<==B6SPHr@?B0v?F`cIP{X)7b z95&uZ|G{DxR0TS0SY;tzb(@0=s`AU>UNZg*IVy=!;Cg%XOkD`JscWLX#x1lm3+l{+A4dkaDInt$h*iy26)(4pj?71@2U%?Joq6E(m@STLIyB$Z#H% z`_WfCQyl1E!ZvDBh>Ic6%Qvf3!=UGj9Ly3rWB}{x~dURkXC345~Nrc92!+fc23;@Q==gy$7yckKc=2O;ilo ziKG~nhyKHs(ppB~N9kw!JQU^YC)8Mtc&lDjIKsNz-gIo1w*GiK7hFQ1nw_>{=+QT7 z!Pq0qk;eUC@Gp&x*>_)=FkNPqY5M|QEwc|-243aJ%swG=@`%_}`7RCpNaOg?MUa~` zknIuFp6Ia#KhGor`m0~Y(OFD^c(9|pSDX{6F&U9YeNBBFw(AmL>hB+58u0JjV(+rS z$<0l)a=zeNb?W3yHDl0GHbQK;5wrDFtb+2I?J0x=;-M)t%TbhryWp&86N288?wQAQ z2?EJOBxX{u6GWsQR!=0SdP`9BEyhDso}D-67m$1|P7)&Z-oY}=_!9GD;`ktr$4B(~ zAV7E^T&F^JYWr4OH+|)sq|Xapbe}S68G2fVeCv8noPv0!?KT>3?1Lr8PV_fekwSJL zd>LkKr^u!};MuFyyb0T6y59BK6T@SF&Q&doJ(_u%#lI)N3cf#RFDnUf)du^Fn%7pR zy@}4VRX{vA1EhHaFy2U*VPdVR4%NBVa5U zDJ0HD=1baZoE@mH^ZoitEpSg69LFE+ps9G+^d>Udibc z^%H=b8W2LUbbr++Xnj-XPoMES`g?I@4ob^?*=4k0=X_=($>Jz>x{>z!3-sJ$ChY?o zV(ctd5V48=ZL(8qVRCrVQGOx~zWKN zkIU;dAB-sBaLuaz2OVytTsQ2r(RPMI0Y=_CgN!*L2nO%tIHL+Z+=bYi5PKW}j!5-cTvxL1+B zu!5o(v=AFg&d9c}w(f|7ag`LI`SBB=oX?K1F;2{O?7aLj=EG>kk<&T*3r$J}O+C0k ztEZ#m@H~-_U(OfT<{uy%&f_`gU#xe1Aj?M&^F#GrhKGDQKF@(|nEh zG{-3bP84;T?*!NHop9vmhq70+;PfKR;Za$-O_Yg-Re&mx9Ke0kbi|h1ORg2fQ;@p~ zO@ez5kuTj+_5&c@6VV{$$s;=|0F_IH5Lcpkn;rTkF^0rEAeA>*Awff1GD9Edc=0Fz zMtPXSJfq9G?rJWNjd6+fdkp#dDqWdh&#n7`pC98*d|yO&ipj#$%=j|=7h{LM!d`kL z=lwrcr2)NnEXx9>qLJ03SRK5euuGvUWA>k2z!k*31sIQgVl9?rSUa7-@28^di~C*= z!b!Gi>eyls1AU4~ zvw;ntlCYKXc~4UHIX`-2roThzk_y-;(%EugUa(drpmv4?;vL9v{%L&POLFb)c9u8W0tqT7j8vmunoa*&HXeQx$o z`GFawXVE2&S*RngQ(X@y%_6az<15et+F~a+VGndvNKLf*?w8dqR9wx&yBv%6dn+$h z{~A)^_Os%#O0@dh`N-Qnx*qXqucX8mW=a%cnyI=8;pDHj?-(a<%Q>`Xjr}P!`84v; z;y;q|JN0!U8Am46`_kecsLOmld7c>^b(0Bv5CE5@AmAu8%5CH)rA3BIan! z&CSylwEMS&u+eYFhJ1a#hVU(gC0XaCV=s(* zz^cP4srzE|Le-BY+M0#ZB6-8OrRxRmMjIbACo~8o|0Co3v3rt)T_RTI@@6a94=A)T zexYDs#*FbH*>#vHdCPRu)Z84fM+1;ydANJHw4&aIwJoA)fv`#%bfGWIF24w0#|Pat zU>%f}HOv*xMAHPE>U}Z@s=3uu@ci--Kh(%unFa3ry@BS&PC0*%U$pq9KK!h$;ABi1 zDv0QaN$S}d8tuf^#rGg&qzK{L56WpzkHi(>RIF5*wV&-eF7d!%a`2Cdm?0ZY!VA{ z4=dMPKFI`B34d?)@AlU)7onZ^A%nWhuVs$ZvuG#eq0Idnrh|DQ%09(?7sQu`hg&>q z%E1@^I+tcr(XBxF?&v)j*oYF%Mc(qtVkuW{Am?KG;L+(jI^3S7Ac9_)NnW%xnXd09 zdlbUGAIWfScS9fV$U#XJf?!8mN6Hn-QF}gEo;;d8d-XMs73ZmkH8cjh2fYla@7C_> zgsZ;hNAl)(>j@5V%h!EQYkL862+ebjukd>i?}t04&yf=;Z@}24C4XN!NRR&B@Vx_{ zJ@%6F)ueDXKe4ik47vR6tvOqhre|eG`-T{;h(v+npYPEd^3WHI7#|bvDypaT&duy- zk~UYC%R%rku5||881|`#Jhq1vIF*jHbk5zGy+0n)*(Ajk^>v!M%1MC@1&IW2$;yH@ zC<>vEF715uSHiD&*teT>w!c9tIj@2lcMllOG}GcGI{bPCI2KDQ8wYKjc2@13J^p=g z_vQ~e>TTm2i1#*ssapY;QS4-z z&^ceGSTC-Clfatq{2@a4uIc06BR_g8Q()5XY{-dpR0nQn3vi|Kmkz%DH9Ba`)Nf>f z!%%D4Z~P>Z;=D}AM?MPP*Pw$u(Z@V}h`eXLN1!%Z?j>P&K-S7?jVq6YU{fexqWsYmhZ7+YUn9 zIk)BH#%VmvMry^l>tUeJ<*u>R__&L{jo8y0t-i3Uu!2|rk*9AMz~uC;9FFX*-XfQK z1tAj+M{6b_^+Y{=!A_rASTwlm=M{ta7H5XcPEBvmN0JZUh3odeTqOfWzCU>F{bf`% zlRoo#L;0(3C1v-2IS}2~sd2J+7(!>DiZKYJqT=c2TY!Y#{UW{XVxjjg?RHu6V$63S zndsiYjIVaR$EWk*wm0zcEin*xyvsu*!@_$40cl~c1sT9v6-vR}rRDvbU#};H|M#e; zKD4>3It2|FkfImlT#kf$+$C)+(`T&ar^jR{Yi0YF*0V`aO84*MLYdKL2a(BfH&fwf z*RKoSgU{*WOhV{uLftP0>LlEL2OF=S6m{2>Hu;5(2(^Cwasr!c|9R3{QSx$5{`15D zsPz5DQw0P+86;hb`-mdrO)i}jER98h)-DNPN?U0vW##JtRn7@*{C#%}oN7*^M0on$ zl9@SXkxOyM3`KEEFF|;TM?1t+5ECod&tq8{hwUV+jm_o-IMEPWCug=kXQuq-LBFmu zNj*Ec`0ehWkA^PyZ=n;&%E$ZG8`@&v5@C92;9EU2GvuCtDp><5BBBSMf0S6RhbvgU zz3TDNprYu+H%y-yUn@zUL*U1{WTKa_;aC3_3+NqNUy{~&!g$QMnO1%FlwD5RyN^6M z-+BE}I>C$WpTt_)igbpQ)|WV3OwGUfuPy#dzvByX$SiC)ocZ}Go!e&45o=#kD(j)^ z*Zb?c-a8RUU^a5-`F)L|qDMRYKQ%u_%iy&(yP4HAj6FvSs0NN3032mk5$0m}Bp2W; z2;py3yk|MXU+oR4ej*Dz>LU#OOy5EH(oWL2lOTgjA#ix=LGio~FO&?|z=U30 z23;P0h_bYF=~UMxsUOo62RJ#VvDDgbfpCLG;wj4fgCI{lQO2AdjePsgjT?2yYmwgh z?iP>V!36^sy_MiSqpr!e^0ru{^|PG$8GW7a#gEj>+-=)r0r}5Aiftu-IOzmgkjj5n zFS%}UP1SCrq`o)C&$OPWsZ2VQe3zavr7H9upnO+f^MJA6n3PNyv9xh?jbvg+IUEXD zdjuI1qb2(f;0-#PXwwL>U-;N6hchm+(+oxRHb8zJ9k|9hc!6P8nqE1ceyVw#672!Ug+ zQn*W>w_uLc#o3{3Z#gN>cyx#C2KDT<&m(~l6-Ff640@<)l05=n)2q*1BP zNml5tFWLxHsy=#es%;#rx-*VYldh_WvuW#Lhw%y-(KLXuk zBZn3Oob+KOK1xZ?GzdbDTv7VX>*j|YhRV}%QB99p)oI_qdE@@jj_Yhj3+C`VUnK*k zOx{hKOBBKuSDMXjP;$T}2I^6gE!w=t8q}FdljaFzZK9tMo!aW)-ZIcGE?T)kJ}pj+ z9o*Rq!KSLpDY)kX-P_#gM8Tfw8jqx`9JZxtebD5;lTceVRxS?@cy$$}(T)m&Q!O0{ zqux0!u#PbQ?lpU6may$-T=B5CHz-IW2f zHFGPyeU%N*3WPRCke9syOPUOaZx59?l<$}F)+01tl4B#eb;;IDs4cAWQDQ76~I>4bMNdeR&nPjsOB z3Ey!QH0UQeBT!~iBh^GFSej_*kC4nS(jA6fa!f62{)##3)+Y@2?L~EVO=CUslS1{Z zrC%5DQSf~t&ebj=4qGpfcMA#ctx3YV5nDTG8?)b5mPmBmEs-GrU+--VajgJPL!iV9 zxheX;HpBsb0M;V^@qb};0OwcGX|7Z0`M`rlJ64tOo>M9 zcJ8+>X^vCDWh+W+5d_C(mtD*66|difE@7sNAW1#+J$_Jew6m}{6IG?C$hvV)nG{RE zmjzN@cW-5emAj3iWCr%$n*9+R`FN9@@iQ^Q-wY~rh5O4!w^LGb=JQrA`DNIjb$d1A z2tzhR$wMlxf7`r$6}Ee?pN}0%_mbDWp=uJ~xyvQMV z2l$D0MQrpPtKeTW338ivh(a360xZ6aSJ!`*9hfjrbrbB*CShedwH?NZ zHqqy1&9v!JhE?po_>FH&)Ed4KREJN_iCv0TM>sKeh*>#KWsmY+yV#e19fd9CP84Y z+kab0PTTJww$&?bSk!KT$*YG<$_Yly*4}MRVAs$pn);ArToJX`= z5lZ3h72(FAxs_bxRDWbo`wL5*8)y4>OO(0d8t^0oXveC>A1R04rJ1X32WB4T90CP%aviW2)*pQtr z&6KZ&Qx zmGQ^_>%YZ3=0a(D>y{nzA?EJtKhy3PkwkcxiriSGplKFh z@NC+Yf66mN%A+9o9{|#>ZMy>_Y-QHpzA|+SF{Va`Gn~s+F|T=is*xaIg|rk%ZnQ}x zDg$k3g*v^Bh+KR$(%cy!2aq!ZeciA*dsFf=dsvqd`??OvVlC4UaedFA2VE{*q(k(6 zW0~WB-&$Mj_{&610`?Wnlk zG*_P{_h>9D!xT$;o~onJEk4gGVTf7ii2va&CSa0>85hTvNvsU_`YzqTd-`3bx10j^ z1oJ%WuS_MUpi&j3U%cL9(+3ENe$?|w`c5Kw$zp71-9QeJ@&(^X>2M1(0S}WVgHo^v z@z4K0Wf2cT5l@MkM9Nuu*>Bi)m9+nC8l}oD4N^1KWc`k@Qcl`yD5b3fbujdt_%5EU zhiNYdjw4!fs_*ya&E;?wEHBJ3dUEx63_T6|=4kky2KR;*F{3m`YVQV61FY14;}NcW zlS6%4@w=MwC`R?Q-)@|aVtC%(wrLP2S;^yXaR-l<{>b#Y5J3*P7?M01mmX!m3gM|7 zbgT-R(lot;aHmwQ7`Lod;{%QS{ma`&DDj8?Img<(KH#F_Am-d-w2|B~gpatkho`xJ zELawkb2Hb}C1E8Si>B&qXR>}&Y^UN8@Ygq%`ZTOLyl_c67LzBh=h3mVvzCkOhO2(k z;mZ3!uu~X$9QetED0isdP#Tyjv4P+cQukATcZh>VuL&o;;d$~Ve>2s8(-)SuAH=t{ z_=+a2)^Rh~Qqa#@CE;EtoSpEQ&PnzFk+vnh?tp{5+DIbwN5FgY^`Sk}OqX)HF?`sYErqDhMiVup*XKIf)KFCu^n zXQ+b6f+I0X7k@X8%H>qUPSwTQlU3dGc4nQ0P90}g)JAjA7vzDd<1ExKCpCPo8nm9UHJ!Od>F!2~^Zj6=|oV$hFPc>a%t8D286bbZX|`^=Y88KB8`g|~hP zYBO>KRj`5a!zGfmE@P|pB=@KW;2;XWSt)KgV7Fj*b=R@4^?Hzqc z?-Bex=r|l9rkpBDemZF@(9Z=ZQ(=G2Dw(5;^kK;=h&z31H&4)*ImAp;ZPY9^{!NvK0$Z|!dr^Pj z>T=Nw`K+B#$j@EYQ1{SHQ-|T+qcYypub90Wxa#cuOc|j!Y|4;I3M5gO8NFNBSRT^S zMv7=gXXwEOC1E9@W!dqfF<*bd^$#B;J~s9~unF9eF~ggJLySd6%AVj#Vh0_c&p*nR zO*JHe5|9~1kbGy~$I=rn#eaDM4J~ByHoAhKOUvUY)dW(h>g>(-@YqsMFa-(&Jw^BL z?C@|5>9iYu(XVC?>N9?e@!?jq-0Ton&&`-^JV&HO<04%ADjB5EaVe>1lIJ$uvR?i5Ng3euL-a4`CBsu-9 zN5pycF^VU^E4KjEo6l8VzAePDY>@R+03oMOHa7k6wD-{yotL9WvZrDB?Jrt$YMhZ5 zA171YH!Nv9wuO7GRwlEIgX7k}V%AK#de|mp*@i>9Ip!-bFvjfy@Iy1ftFSj&@edGj zl87_tXG%nK9M=ZMUs^f;_4evVc=pzi3}{_o(DAG|)zmA*m=%qwdnwyg8Ej|}I|i>I zwz)^pNUZWA7PImD5|cqNCGkS?`<@4TNxonD#=I|%do~@Wzc8rY=WkC*ti6e>lTIOl zdTFD+FC-l5owHmExxdePa2PW2i3l6=+o~eZoi#>wLjNCr|2az*JJHSb z!{UCZR9+wiw;5)sQTq-$eu_a@(Pk5Ha56ptS%&5;| zkXmfW)JYSNJF8R*8u^01#xt6)4UcpEn30+Bh`J@EoWLt?N!_Iy^@ckJ$%b~j>s&Kf z$b|mc#!}&~H^W7Gj#G-^!M!%I*Dfb?`2?;+72zb(*}3=)^2vac+}MD~#u1hkTc!Bk zeth|v-kIR0=!Ky^3`_-Jw;KQ4L5z&sJ=V=C-kUn0-@S0*M6pi2i+8B4AM=y&if*eY z+O)uhHj?*_czC3y?R{Kc`nZgAxqS&qTo|^9zkF1nz}U1v$4r{vHQ9W47G{H9Zsk}x zYeIMN_Sj(G!}5O2WVp6!Xi3D=FPW3tu z3djCf=D1xi3q%rH`40w|AQ8onw}~z$;>M~du77?&*8xb8d<|j5prA#S13(KxT9L9U zPIF4!EP*>$3F-&rTuh^9U!kn5fN@4VF63TFxY`Ox*!7@xwV=0e$ZAU(6QcjE?UB@Q z*-7XFF@JltqtK%-qXl zNCKj@8WP>zK7Ox2f>?u>DzA>b{I6g{C0>2VH>j;h0E(pAUJyK=Byg^putm!m!?-bF z3ObWW5rFlvDgOzuc=!qg75C_z_(p8qO;%!I#^$1H*Bwl-Hk7g{bSJHge`z}R^BzO5 zz=vp_{X}7=A?H;5*utp5qlY~-#6MuPw2YpQZ=R=Zy*nQoYX z&o&vS?A_x)HIqX7M+Ns}B)9|<-xAr7WdMte)Rq5m*CVBpQNpvBW*VI(*Hav^L^`=5pVx^WX=C= zaD7OG6NQVHtPT!jdy3&eNsW0+v=--h2};rW%>dRMiTT8r`x#(VC=?Yp3FJFfMnaE1 zfBd{afqo-{sKdmB&p|0NytbZjK{Zl@#j=4bxZ;to?4OZhh|R`Qt6C0rMBbP=VM17Lic#Et&P zDk4rd?AK%2;$mhahRL|G;)ZR)DM}SBTFemc5&S>OI^uRQlMK-1_ly86vhQXq3l+|z zZVq6b2wpU9qJXLn{cn($v&o{&fP)LL_!MHIsaD#Iw!fR>d^g07Y5j3du)fs(#NOY( z2R{EoPX}Pg*i-I@9eW}09nVKhUbeb%hJP?i!f~)Y&P3{1D(Sz5LNgn@Q}z=EU{^NJ z_nqihJ@iql=wX0+n)&{7hv+n@Y1q?pi!A${)w$qhK>XEA*_$Rdw&W-w;r^CQ^b8Wt z&_6?SvL*s%=q|YO**!sp-|Qs|(aJ{ejtr2%qRgmr>-diVIf3?NisU~W>w+TMiMN$S ziosZ4%1PF==OM}T$0ze%r!0%h_WdFH&yfR&0I@!7TKf;ee(h>Ri$K90LJRw7!rk7p z{cWP6qO`93`9q0}<^E?1Ee(sJbdkyc^JBLLPSY`lZ^RmTbJM<$!A_DreHVYI1Z%W${i`D|H*~MjnkVD)HoMB;mW!rZ3qR#B1OLq z5vODF*By}U5=HpGj2RzB2M(({{aAggF)iln*!Jm!k%iv<(e$<#3Vp_#FRbFR%zD;o z7@Iz1&Me0;1$%*QzHq<$fNA-2-H`&)mTJvaI+t;s`#n-KNeC`x_=jH+c!q}#wBS23 zl_VyeOE^?x=<~px)u>=upuVwK>5d>HnrHqNXNl_hq1;!q^F3_e)%68^xN<)}tk?G- zh*N_T|)FLj6r`x-(q)k<c(N*FGhCggk5_0O)Yig&m-mLwI+MM=ICT?zdxH`*}verNSj#9Q)3ekzmJ zj>BD=iyRAqKCS_WAdTeHyU7F!X*jx0qKWzVGoin@L)wW5ij1lb?o%duuy(&D)vlHCzMFUD@GX<7 ze1bd??3+1Oce02}^whOQa)~)lXV3nEY(2G;Y2(KHHqinkH`=-oma%u#(^S(*?r19_ zY$69!~DF-~-G zrui>(eqGQ(PCoG^$~M10B})aQElJdoKW&TuQJC&WUG0M36%}GHMAp)=yG#{!`gC;m-n1 zYgzw!WEWYNp5)_&zMnTv9}CiZ|Ew-;`+%KbZq0icR3c8=FpCt}{^p@|s{CVSyz2-5 z*?tk^qOc>TaO$q>3>Ee^y27CO^fU~Lv_A08c+KIJ8qe{(9+$f%mB zk)Nh4@+o;M{f7s^<~8rcaA(bH@u%MGg|K4l_#i?x`?zJskjp0MR*q}yzdsk`@jnAa zLQ3Q_2q&c+buLt-2@L>v_%9BV%2`>Jj8(%tXJ)N!7(0uY*IYjt$kEkN``s~NxLkXG zeZ5t3P(Xv)c5x{`*@sJgKZ-v6!m}L&bwbpd$tXtr@Xn=YM3YMM^khx zbN*|2;3Z22!EiRLyM%M{6nxy=IT8{_iSqTk5aS}5RZ?Qd3a=hnq^YxVCWetJ4-1Vu zKrU1eIMp(|YES6J`o$Bj2DY!n^3Ty7WNqZ9W$dt#AlQhAA>_&@t;v8@ia=;ZffH?T ztD}M|OI36R7bSl;n~EB52Z2{ICbRsf+8BeTvMK5yZ8hfj^Cuz{Sw@;jt+^?!8bK}RqcXpVN zwxTxLUX`95hOAtsIl1Nuf36;Fk#36yeO-XQuYZ1_St=TL5cP=bbuA`@^8p37JzDcA9T-nU+_KyxPH*Ini7T3^b!DoIrJVVY=U?dBUwM?7r(+_ zZLY0LZtHe<6>1vO?7`acz^Ebg-UENdsA0Jz)48s<=3`&V+XQ-^-r>r`n|)DxzR&>o zY7pjJ)@t^jp^~F{H^zXZMGUUZ1(#R+47$K`&#pg-v9ne_Yu*O!BNE`0UhRuoT;y%Z zj{Lw45C)OAO1$^mWAr6r`Y7U02ST5-is1yF~ z4`>QBN}oM9!dmbj*@(iKe^PIXhm__i(kxTf3v5M`6c}Xg@c@K-J1?Qjw@N5c39o|M z9NJeMON54h<7DSS?~lz*E15pwVprzcP)hX=g@x>!}--O zVaWkJNYzj%m)$mxs`8L9r_6wOe&0U;?CR*=nO!4KXL}p-f_7IyQ_i1x4($af-X7RJ70WVAaXR*6|a+zc`Spl!m%A{_==IlTMk^mq(b9Ng=MX8wR+#E@L^Zr3njv3aS z8H#OPy4o`ul4^W`mS*h{Ks3jo8_C-#`@>X%a4XJVqcIq2Xs z&+Xeis84e_X&&kr(5@C#S)A`OEwHYHz~SZH?Ji}eTg)NvYM=6^Wa#6uol1@yz4i+W z+59&ifQ;V%p5Ucu5G!*!dT(00zW;#jj-Enw!UTdBo@! zh&%wth$tD6Fxy@|TqWkD#F0z(@hG>4hP?}EI*R*$Gz9I~GB$YW;7S#zNtr;sCu|{^ zAmu2zCYjZXTMxuqr?6xV2eOP+h)O(JK!HtPSQ`T(MzoY0En4d#Jy-ThhsT7W`$hB# z1=x)?uM%>Y+?#K7^9TJ55kT2371Z|aX+0%AtJb5?gN)IM zYhk9SL@}t5d0+D9kOE>P!0F78;u<#?mn_6;tcYpSjwh*(d7%}3wg7W^>kITvm;U5&@|M|7-{Uo-?SUR88+85;I1Vf%9~ zm9M0Sj>q;&EY53*FcKbglq35zdfT?unb@fmex21(Un2C`rhrPQNIzQ6J%*$9L1KkZ z00j=W5ws2sXH`o?IeH zW^=e`0pt+?rX()=a9!ot@l>E+POh2(?v7Erd3f9U@B46LE-xBXG;-zh;FBQno9S0N z*apg;r8dq)9H$E<>v}^GML|S%t@G0*_4@WGH+VX;<$7JD4Ig*RJ`Fm6r{c612(X7sJ>wTTDAFivrz6QJIUB|Ga%V_2lXvg9jb%Q5upU^7`m0 zm;v;C@vIJpElLlxWQ)Bc*`_F`>5F=c`Ggi8bSmTzLMVm%P4H5c1JV;hd_>- z@ea5=*R4rm!R9z6%N{>Hb0jx8{*Iq(q$+4^Pf`B>UA+n)pi8;TL$d3ZOJ0LG@T*05L z922XVe-x}hSb;Dk7I%507M|?6P1PH$LJbuU-RUkm7DGKNVO`g;ZS`SLjf!vb`h%G) zUi#cNQ1&`YV+0U4o0jP7PZKikB~3=ygF+Sr{d$;fmfUAwe=^X={cCz6YiSaGxkL=G zb%U*~mBX(^UlpjqM!3;)pDB30s-ON|54F^~v2c_l?4Upe{Or#5S*?rEoDH z+5jR<`IK3-p!TZI77B9WC3XGrg#`R$#jG7UF}!cF3JTfQ(0~!sPOiFB{l1cS5)&j62cC&@E%Q++0zMmU3A3?%d&p;mp( zy7(M}E}A8FDZpEi;B1aaUvi_%%M5HP4?#^U?nMsxV*uXb}dvgZXZcf7tvJ zs(FV6NYxYQo9Fa#N>NMFMY0*Be}__stDf_}BhIGe@@BLW7M;U##^-bhwF=0BPcbDn z%vr;?imSyO8>&+UeJpDk;{f*G6>BHe*1V$2dM|*Px})YWOl93j5#XzqS7k zYjwj*LYfCcSMK$DkI&s~S9`wyN;ml#La0GdB5y#~ZXu&CL;WzTcy`+5hjsI*@5}0p z&mc#Z)}%1oNY@CE%3EI-I{@)$T69vFp-4I@?T*3wF@e6R^{_bb@Bi#hH{Id^HNSkX z{4dCM8S-zUTDMEIese5Y&3{?;V4psY>%rZoJ?F86HwB{Y>AzxwMNIDrYo4`<$rcVj zOyC2#)F~w^GTlYWv3`ZnI{WE#bI+;6-xtqyfdb1m5{5VNX=M^8t_t_}eN0@utz_q3 zn1mXzwoyqWe#!H1Jil$c0sZ@B-}4sB!v8fMt_xRU1xX&(jW*o5vU=ckkoK`a%xLia zRndO&PTqK!kIA-i=~NQ-=J{@iu#++|(9&S0hA{*=JYCEsOV0{m?%yia)NZ!tmQ$iwjl4I2q!S*6#xcp?Jvl1-gT>E#>X|fE;q1 zM5HnEllkJA+Qfnb!y=a2*4BK-_EkB_V`c;g=B%HqA3jc-2rO7BJ8W3v##o4^siPw! z7=^9`p^H8H-CSd%IAg@}(TgFtvd~6Q9B|hCJSX}CSU3hA0d*a~(puu1!X#j`a zU`A}mFueCMWPjs>agEQX)h@PdT>tn*`OwKpQo8szq%J-XyY zV(Q{M<9p}3|L~e5xBCQ2bPG(4x5j%Y`NwR8rBcC5&+{{kd%&8Fy7}n9z5nZKkjZJ_&h@-R>_ATg?;nZ}`Hc8i z&op3O%)}h&0LsypVX4E zarYl;#?;Io^{$Ra1{>nqsr^g8WMxPSreb^cB49#e;x?*HE2Bn`bb8U!kcUA~FP(vS zWBaPC>dhwhHUzbRzF8{DC|C9{fqG5A85%IMo5%ZRqj__!rf6SZO&B#O9KIkw^+MZ# z!#$W>344&?eY5WT{H0e(dQy(9E9dUAP#3|_e@Z5YbWhso_&N zRLVjOBBu$Akk7vAUeAjfN-{HG19EW?;Xa$hXt3Vu;i0xaO9Fk*N<*f2{34G=nyeFe z$K8n?tU&(5)!%i8#z`8I8jqOj{2oVyko=$jqf)khvYsUQt%<>3Cw1W}T}VQ*?xNN{>0nc zIxBA{5~(k_Y*FA8{gMZSs@W#$s_OOmi`^AG^H&?G{0@` z5C7U6gf_Mopj;N7t%d;dh$iGOcXud=SVz+(NvY72V%O6>OfONGEI^`uAW(Zuc@)3NL=u=_Gviq}b|vrckejEi|3kGWn}*d?!h;X*;Zb zqcxk9pif|POu!~Z*8P4e0m9JI*wi>khO-UbvuZ&kG~rBw2V9{{5V)s&&q~u}^QIWnH@MBvH4n zhmNlP_#`+^cwQd$U_@*X+gu467|XXv;|8t~Cg@1XSPtb$KX-GFi(>d*F30Nk% zxp0%LDMFQMO^E@hZpvz~PoOBs=*Du)@oqj1s2_x^HdWs6iDmY8eZ8vcfH#8om)o#q z#TBIuykKs-=)wQJV4?5fyblZ27J9%XKm-NebP5#!mKbV&*$`?`yDZ)Lr9GrmK&a^h6vcJ|uSdp(u6E z^wdiVk~U}1*RCyX=0Ni6_J=*=zx~a6SzkI!;Ti)nObcplK*r( zc*rEn{?MN1i}S_MoFwW^Z(&Ub?5%Zo5#jI-vB9U);|6rWK|Jqd_riQWpL`=4>ioKR z2u=^=HXDUvW1@pvJw$Gja2K>$-5iQ>z>`%!b+rCrQKxu6Lyu(Ro!{6a3OJ#lQrMm! zv@Teia54>tcHR!^vvmlyiKn_f71n$M3WM4NMVsKDg-UGPTBTSGcHf*bGy(m$x2p+j zd!M+7ds3}D_Ckx<$)=aoaxn@kL6dK|?b{a3Y25MqTYbuoiCDWDKaHj|%@GJ_;_|2X z$hGGcomws(cu#7q=qmCf7j5(oTFC!&PF^5^L|{L%=Pz5=?pJmC$r%|JG#Q zd|hLCNLgm|Y&=!P@PBu>C9X{~TDCM({qSXJDl6TjS4>Fe%JT1v4pQo(2OmOFZNg(O zkVHB6ra#e$3wCf(x+ zIlkc9%7)k)#Eq;|roiFGK6~hkJlOQ9P4IXkEvsLr0>}AFtIvwArKF|&3`n&+lNRpu zuFfmM9vtaG$fE0tSCE(tJ$ei}&(X%v#WZBXcgivUf`ed*PR`zRA~k&{f}=@z{=Xq> zux$R8N2|~4%Hir%XUBl$Tcy<y1z47bdd5Nri z#)T_gXIkX-sexjeatqTKy`Bj^xb=i20-1uu6_9-S$#!K)|1JaR&^yGEJU1COBiuGR zc1y*~TDIHM)nnsj>X!7=nldh}U2{sGZTf}%=Q(_{|Fw(BtD?j*-*@e-y%9s^hrb@a zjD3@Rwpy$Q!c)4BYikgQj{5rD-UvSl+YZ+W5j=9Yf}*Anbb^|!2#luL& zKqM;))criVbMFHB!cw9B z=27!x+EH|9?KFffN`jBo6;4%Kda%FHq zx!$L(A!Ls?qKcc;&J8h0@qtqZ2+$*$4*cJh=i9&gSRhD}+v$s2LpH*u*d+vT!CPzw zrKrwzLGfOgL5GmC{&kT9wdNq%#t`{W4^f3)U*^|=m2j)k|~ zHUcCj>5h#WicH+VVFp(_7ct#InmO=YK07|Gl?HdXVxtXK(f?ch=PuBNe2$>MOa|Aj zN*`_eOut!odpmh8rTm<3b|VM*^$SEA$ox0CQ%7_U@=daGr6rZBOL~6Ff<`PUc#kXX z@(t{c@7tMP5Np-PUdRw1;~R&=y<3^^(L$Yv>s9|CCI7-0;73-Xz1hy!xQ($ChOG~S zbk>oipi8&)w{2AStnJiqTX{4jTW?}c!r(UxLWq??2=}nQ16f3TKIYn$T$Rgc9dKS=j(HD>w2f==smElAumuPGEy-2O8KDW*U5hUw7L>xEF{fDag zx60H4$~uKOd)4msGUNu|j?*nYQ%9D}uaUAT^_IR+K{eU~F$9{Zrk_i7_H*mh4lRJ27e2>?9+xjt2ckkfFb> zkOZKP__tT^Fbwq{g#Q*s zfD5$0NxzyBBUiSlAMO>;+De6gEgs7;3!iZqSBp1N{`6XqJ_oUQktlZojuuD5nvJQw z$s~n#$2ij9jLjA;FJb#DqbkP41sVE{h*9M9<8Ob}~ zd^~y8a?6!8B-xQtO;J!5MN2aT1po`qn8H?Cw60hq0hW&p&)}zi6YSmkrGyGL&)>yB3O=ouABQ}C%GV8s3ck^f+o^nW>veDF8;`pG_IbsEi05ty&)=PFIp7h{uoN?xgt%v$?qyt$- zfThM~XaeDH;9o2peP;$i+?Eh8wq|MCt$WOz^^S}DCKr(=O*eR6d{FCnXm@IS4h%`v zZdO9VEBZnbxZ26`v*}u6eWJu4@4!=cj6UoK z8-oDzoD;nF7;;dTQXE~dQduO_b_VaYT z6Pg+j+ZIUH@8FrT+^tuv54JY&*S_9(WKNM1?q~qJtynU--ggOjR3!e}yT@i1+ zv_l)sj)H2s%|vFy*}`J-kfvCXsDE$aLnfam^K4smUWe@au~OL);?J!K8ocIeRQ70uQb@oPhU@-(5*nA{{_EJo~{z#klP3fin1$ zVug9Id`D-cayelfs?V#8#U2@6EhUbNQu86mP0z^O)A8SBp9|SZhoNY8EREOOeOT!S zrL&V;c*x(J8$o9W`tr}}p@p?2t*IUk-uT+=lOO=pdSH!}1|8a6A+%M2_-2p$UbJFV zlG@G|1M9`E6om7KAiI1;btm?9{37#`F!6EnieJ0Wp=C}*5;ffmt-XBwC%#&=C8^i=f5yn=l0_FKA%=VF$1QT-1ypWvJz53btvlqm&j+crcqY z(U7zG5^ZKJSo1jn5obxD{|0jpJm1|~S<;l?k(4dZ_#mdQ3FIP=Cq4q_S4dkBtuhx% ze4nH)J?mHcCslhsa`eq4yFAveE8yTN!{x0Q{#rCRJIIFKfiCvc3J&UQejf7Rs`>l^ zp~hm+e^wq~%K9Fvp22&irKx^5yzM#^s8ifaqSisLi%!iiCOSWfl25)>0x<~uTy)M; zk{Ccn8RTR-__Zk9w`8R{o9W{*4FpRF#o zT1div(8Jy0OHJ)4_#)=IB{t~YV`Z{IiLoLN7tdxhlAObH*pFU<2>=}`9Z*K!tM542 z=Oo>}f0_=58Vh*#@aV_$Qunmw*-rr})cTM0-!e#Jv80PP^lH@`Ve3N-g<_NLulUFd z;|?$^qBnfXD|FUpKQHKP_l`WfU%h6pN~4JcL|QIF=m~4qR6Nx#cXmBH>+$q>igo@c zy?PlYV*5eko0Foso~C)kk9$?xlI!40Rc*u(oBZMGKT)2i=LUH0Mt|bVdd898fll+@ zRABDmboexJW(*mQDIRYv3xSd%cb~eroNIHC%d>jxU1%Pcs*9Evk}%SL{6@AOfG>6i zGqq@i4hx4wi6H3??VrnY-cOi;*lUQvj}^W}7_okjd+BiEcIuF`*cS1^}nTCoKJ+R>zgI&K6 zpiB?v+0wAR<@kLnM3TP;ht@r!BP>3GuMEH+{+#m3$&(LFYkkqgOikGOY9BT`?Eq@N zD}*$CRp-X>a7-2m-c3m!4ng2-E__VH>_0utn(0negWxtxd2X)q(cx%lSgA4?Y|yXe zp~Q5(@Xzq_*-tFj4yA(jE@>u@F=R3xU{)n2-M#m+A%a1zZSk1)zV!BAfn z=FUIhh{+-sVby|zHY>4L2y&|6t@*j?8E9Y2w%&tGL)*mMVw`_V5YLWWABJ?i>q7h$ z>8N>x5d6r{6&8rPqGO^|$9H|5&+(GC`JDuifw(AL2H? zUns2r*k)%!PbgBbez4gNeW;m4HQfk&%{MhJQ#{Lk8eEDwhj9niOwqz$>tnU)TAwUr z2}Q1WgVUr(=Twg4lK{`+8ddx5EE>{Nv>LJrO`v_YqG7@?FrJue=h@=+rJ+deHpZWo z+P=Bo74jn4?~8k&hM9Hx`YpL`5zy{`b9WtS0ulZ>y0XMSYij&X=QtA+R<2`?Z`LPn z-~;07W*^kr@cAP@+y_Vj0z#ip+B^ITE*`Rr%q}~4`6F-knAh)oGQXmTx;a_N(N7T; zYJuOTZFr~hrYL9F9Npsn);mOazI%vHpZ~`NbI^QvTNwDW4>uN?Q=G$rvl=KXUA%#|HU3I5lWR}bFnu^*PzdQ2j6){Yml zD8rVqm%cj+J;BY=^bIw>77mx;AfLRusW-Apc@lRl4NQ$UD8b`COc&_DRd3=yYviVPU9r(EKXMck9SlS0 zkXwv%F#KetGPPux4&2WT6IAHz^iP<(#~%|^0`}->O3!!&qBb=+_i=8GxxfQAGlSYR z4+mv%4>tcx>~N`{AxLvOtBK*vL#rV4UeBT7S0Rg@4$*4go|0gu*i8k_Yu}XHWA-~E z&kdC~&AYi!hWA|Cb9}G(Tn$k)^JrWm;Az#7WJB3*mNuUs>gFeiAm}W_p86JnXxRjl zIt=YPAyHySFW2unPXC;C-hWA^xv>(qRyP?r` zW34VWOFr!hS3p>-H1ZTiog;b_R_haLhm8p#4hC|+t?Rc3=3(S)c3hwhd%qkf6bOHV9-cmvhVBNOx{TiUvi*y z=xm0!%zO&M^qV!|3Jj@LpHSC=wOUbciLh$sCMPMJoVRk2qdk1|)M#;EfA_8@9nhhW zpq3n_wN>f5UH>n=_2=Zo5mfh5N3WyI75FbKr>e2H9+@O#H-#{x zKqx+5|`7$os$;=&4GwFEh(pi?b9!@V&FK*bt({xOrRI_I87I1 z)pAwZCpkI&Zrz-qHW<$hc{D7Q!jL14$ut&nd2bLm-mABq8n$Ml1~mWOTAO_K?3uP! z#ItSPU&~=uH57dltSjCkD$|PAi31fH6>@iP@{A=XI^=Z)jpp!yK>wAvTv@x3ztU2x z6U`c}Hw>RHatw%jtU9Z1+_st#MrC+eb5lLk%~YG-$fj&iBJBj6PD>_HE|^7hv2?X& zX7a1~IeyoCxVy8!snX1|H2JnTj|25|Zw`bQh5}33V`=s_?ZBx10@9w&jq9|e7c}{t zV-|zkWHV3qJCD{B?}RdKM&y#3rN>_<`fa;A_~#B;qa>;p{T1&ZG4zA$;)5QyJwQ~e zb>MoXUq6)+88?$U9&i_?a3m>)qx9|9*^cwGW(wr8hnqQ7F72=vskRjRcmM&mwH5TWQ%z_F%D_5l41?sv~{0nd_=n_kZT(Xh#_okOKG~o%v(=CFGUiq-J*v=h#`9LQnX=ioUyhy&=6tPzJIv4oVJALS(0+m^Ebru<4Z;d89G!$;I)IPYtfRvJ^B7%q&>TO?%B8h zFrs)^Je2h%q#PpT%}@5ol?}Y)Pdi5|r4tWXYHK|E5Ak2vY-%9@Sv}5m&j6?z6mvC* z=M}lbb|;sj<`juE&<|C}6BJENY@>Z)!h!Xb;e}zSSvcja zFz!cvPf&Y;hFso4M5e4>b8b!ws3ZGYK7RZ-9V~G123tk@Vyp&`n_p~8Vcq)|w%Y&U zW8;sbrqQ+oXR#BQo_n7q#pmloo+&8m1~lo6F5Hw6UQ6HJ6~8;6GvMDP6O-_)NIa5qp?1sX8>`GCtI3zU?0Pe0|xLU^5c& zM(?UMXm~Wtzkz};>5te=JfnauJRwkIZ#15_=o=sLMs>C1)_>kdl z*Qj0BI8dwP_r3jMMp#}?c-WWDH`lOx1=?JSPBdn1QyZfNpv~2NOoCQa3~>c%8pm}? z%Wy1~Z@JeeS#Mq^@Q2QRGWBmjJg>Z-r23$rnD5e{Cso@1bH-fcQ7%hJmO@*snu(i|VY$dI8E6xjx*Ks96 z%He4$8v|w{nxBe2jem_i@_i!iIZ;g+-o9+ffZ4LiayiICZ&{4}rSq~3y;JeHyPk&} zJuTeE22^?{@mB4m}keIT@*?5zh@RDBvj%>)owpPRO!o@D0Z9MKL_i~dw6Xw&4*s2M}Pzk7J+0k^hc+bnl#YNW0pn0eZ zQ)s{M;o>D!U35pb4lV8x_uWrs>tTF7&6_r#J`QC|IGg zK^x}(qDc-k{OD^B{Y)RMsoTFKpl(KE8~iB0s3tzKp7K+MXx^k5?Ff2%l`lrzdF)a9 zRSX4J;WzSlqWY`ix8ud)g$o%VaqAvz6FmK&xi~O%=szhf^YHNBf)9_?Y8_|4^uJ%) zo(EvBR&Wp<$En(We>N0rc^0MGKQ@p6*8lwq*sl0P`%`$|Z^b$1Q` zVn3ao2a{BC_jrk6JTp@;B+8JQ`RwE^TJeVqSTbkYaiE@GbJb+{Z-{ZV*^`%{>DTcf zQVtfy?-G0nkE`n67Q~ppm|VQY=TNz;an*|{|BURk0Ap8I&c7r27j{GngDt;YvkJMEKF{rV^WWqSgD*zCIQ!S|0ofQgR& zKIeEUCSv~*lr*!n9X0yunPc1Da@bn3&#rSOnmgI&=0Yl|8K?E$K5olxD_toGHjgLu z^@$abeuVn0U@a9>u0aY`q^u51{=BbVN3Ao+s&p$5k%|BQv^M$M{yuuxcDz;lkEKKD zMaakB1LWh7pidCTq7V$0`;D0Y%`0*&@m&;4eCDtWreorGIh3Ov5whxDpJ;8BlRTnJ zpbwPk)~G1)ydZncy<)!uLQQJjgFpDw`@g^-L@&Ou{pR}X?}n{Oz6@Hs@aLlvfZoqia&Y@JTvk?K8?l|(j3v?ov2597a%9W(N8M0H2@nb z3rws`8NWKIiQ>+3FK~qW9p7=$OfEiWNRYfO@mg92l7DPCjBoD)-FBU1%DDDUEox-PWJIn3n38oQ0ByEc-*Fkw7(Wr2=22e9Bo%@#UpEBO6`{V}u_=xnt zl=?l7i@C%tDit!cnYDJku0+ZTAq&&A43eoSEWa$`Xie(>2`S$b>$PUpz*~gEI_}1} zX#Dei1Vx=^)O27hn3$^Qt-xG^q~s*3@-l?1xob?YWer~@)Xp(y0Yrb+B#Vr-vX$x{ z-k^w{=v23(7M!S?+%yLwq`s!6;+#8Fd%O*6=Fdp7x8nVa2b>J7nqBod`K%=arAymv z3U6@&PECo)e?|Y*YZ~cm3@L{wlQsr$Y)4Ebr$R5ZZ$h+2GOkbNlfJBZL1f>3y8h0` zwEP22lt?jjB(>*3h^(EEo`nE>oQ(G=aZH|P(&%tpOTdmKgm z^E=S;(!;$Ho~5A~I{%Jb991X{VziPWF> zgi!#k1;`r3eMtAfF>m%MFeP(;C%di}V#63vM1#WjkA}z-BYBpp0Ga{VZ#HTu%PR*T z#eZ-Eq1Ib)PqOGSzB*{2rHeLu=Tr-XYNi@n)XAn7C3TUyqDVVJX%7HMyaP0UQUedw zrRPnI*2AwB1lmO=J$o4bC!;R=5+B(${?>Z_Z`Q;O6ZKzpvwBtcM7v${A{8$YMptxm zXEPK5)lVk`V|&bac;&+Tn0v&gmo#i3NV0&vKQ4+Kc>deebZD2_w@0M$^GHp>%asi- z*==Rr{9&zk@xY=Qm2kdu=QXc4VZ)I^OIt9`FW?Iqp_tq-8hqY-kpF3tWe`$OsU}@2 z7Qu#w$~g>0Dz@I9lGVfMJ~#GJHB;>uZVM1-C(%uOYvzRf zWrir~{%U?h1FWdF=15@To^D;HN%s4-V;n~m?8nz)kuiCO;R{_|;CGc>q(b^X^%V2H zuvm&pV7a77k9IFEb55!8xz2XvI0NHZTc86DzAt%n*rf9Y^0LaUSg}EQr!pKKXT^P3jx(~LqmFIzB2AZutWQf+ z&H67p5`NH%dypx)h^3d@WF_Sj0rCb^P^(i0njb{;2lLwV-902%xelA&L_YvHI*boN zUa_~`L$yV`qs#-=mJt{|#Wg!;Ts!2?8B9QNg#?->Ua63Ek}mwAe?V#f1k>i>LciGm zg^munLOZfH?9q8R8wpKSpQ)IjtEFikI~vKUxLiyeUn#Aat8G<0)lnqG0QyIe*%TZU z*DX)dM@Gu;0*O}U&okpcA@uuxMk+y$Y6eFgLr?CavDflDOV#+4ES;_Ney1BgW_u5!!p{alSCetxq@_0q24DRmid5#r(senXlS??)@>z5-oY9*W9OL=TvQ^seyFn ze`RlDAhcF8*7f^hMJ(`iqni9)_^}+8o8nW`-}Ms=I;P8Xv2f>|!!QVjMX5p2S=YN_ zSexP4%BvRZRBPL3v9o3D70G|UX}qBSYx8J457Jga^pOvRrbM*NvNjvXA*Cx z1sCZ)Ow;sH-*d>)AhWC6tw8N=HGa9g`)|GDgf;8)yUPo5vmguYYRb_LUL{dpC$|*av!m} z8Am9t(U880kg@GOk#&`~r?zy_rNSt_Bx>m|7f(^8J3Uqn!FvR!IVn8l88{~8kQ&9r$5tK&~ zR2_Y^%{yS|hg^N6n|$S}$?|A{(?k6-m+k-yTG@#_y2s*%qQpp6QVe(VuQNAdTx=lz z>nGPw6;L<*Wn_wt(v7VnOjbi>Ne;~s*z@41|M2SRh#UyY7X1mNTFWQ{UofT(F{m=3 zS?KTKi`wAMlV*#bI-7SD6pq%Kj>S%vY!F9M^w<>U>C-lk8ry}!^>=uW$$b&%xu{=2Ar zntbk&=mAgu^q>TD?Sk9X=BJg7aDO+*KD>$Rp}gSx=1&52I_va9U>Gdw%FCeC09pZ} zODP0Zd)oBAsbdfJs%j!z9L^%1`dhV6WaK&YoN}4@OZ#veh-PgO{ku4m0rM#v6iwr6 z={`FJfe4|Smk9I#+-ww{m$kQA@L#@6*!TL|;erlzE`PF=PkFdSE9_@LN=Cv zZp^4**x#p_Ixpcucm7VSf~yP6{;*Gyy}`N^XY`USpa7D3F98GH`je8q9(o|p2yxmy zi)^coWgXD70ek8QR|JUT3T|nZH_-*ULy%PMyQesLD#k{Q>^?#;;*(LjfoJe+zb&pq zSQ#Z{>mZ&|V`uZ=aTDk45~IJdZ?CX+BI~Jjc6wEne@q;Kv@ldPH@0L|`$O0K{~EIl zxxo(zQvCZ)&4-}@k>kgQYkk|GFZr+aW{1`cvMP|zgzjPqP3%*aVvtW#b< z`e$=&9v=Nl(=GsD+pqDNjvwuJ0oXbo^dy;Uq=fKC|5k4EJ$TyBlhe6cNT2${-%LOt z$-##S!;(mmG`2_}sX%zn6xd9{CTN6IA-KZHC16dpwK};Ol+HlktoRipeBHt%x$-kq zd`l~Q24Y@SG?xkH@V- zMJE7Fcddg0Y7JGo-pnZsjw&#sACvB-``AbMOGCQ;7@1Jd^af6xEaP36A5T2`Xqwp^9lWGM!F>5%CZ}NypG;SgXjkOG-SH!( zWa1IKroDX>TL2sC2hXub{Jq3w`#Ork=(RO7FJS$v21Cc7J#jF6AWt4M_S(`ySeml_ zpcXk(UBrO9?t_S1?q6$l(xY7s{if#(86>BNYFX)2FWl^4u~oTjcS-P2WZnG&iTal% zIl4uE-UgatrxN|NjIC`GyBP%IL)Np?eLx@jb4YJBhJ>|a(Bjo+SnSZ#VGK}nyd6`1 zpI_68Y3v-o3eVeEi1<{{U%V>BbPpm3+d$Q}mwSh%y*5#L{4Ii5TE}Q9@wo+eOl@D;Oh+Ca^%XE}6JLGD)9><|}vc64$^! zgZ5U+rz=Yx2BL7Ad)Z^`s?Yw)-up8imcAO#iNkOCEN^uRd5Dk!MFfhRmQ!RR8g-F- zBOXxr@BgQAV8W+?;`E|a3t67GwTX@MN%#3Ep<$k`Xrg2ny^$f75vw>L(09h;QRyM) zy0O!B{`?okpsYx6$D39|1(^zd+zbl~^Ouvb`)tzx;ao)d*iE-o<-a=|z0XzpFp)v( znGYuSfd~c6X9DmN06?nWYzZ@QRT&yXWe`xK>s3=yVh0%c!U@5)ktCQD3+A#_rWX>0 zi{gjnzw|@YVd~9XSXFk4OD$Lx8B+gd!SYvXX-HrQor#%R1SS5_!8bPAA+%kKPdWl9Vh$18zC4UjR|9Ho8^_n+j- z=v|2*xsC_?ZMXGIlj8=OOEHXmniUCd^(lI_BDi_#d4vx`LG_ug3&eoz^F&5eV8)Zi zN}gbMxF>V(nN%(rBPCm9h$#bcr3_*!+1}Ko^zM1~c-~bkkqiCb4!<`e1-`T+PkZ)v zbv)S8;Joy;=P#W1?)FT(SFh1Igt?$aKPpVh&R0PsRwq*~VGc{?wm zxDd_?tR2oglv}NiLH`A**l|RqtuqM9Nf9kHd08etO3@|3ONBy-%41Ar)9OY z{-Jgnm{(rHQ#B@8ps6!CD-&al$o4g9-i@`M!dDR(2YSvW%GH4xn7>Axlb=$BObNYx z#0HkLMq8QT~#j#gkmgVg2N;B=DF_mqJLiNfOuI$h_Psf>SN!i{_xHuIDcs z3JVtRJh+v!Lf)J@-nKlQ>Dt8I%Z1mT%7QNbH#8lCV9QUUHtQ4S*s^$gTRs{SW&rQp zfAUZQMDmX1a|5HK{+HrI_AU_ZBy+!0%HTY|GQU<-UemX0wB!7D{N?j2Mr^)(Bt}hl zAvygDBQ{9Llb%YT3BOwPNBVY6GTm(hBjdjY&lSSXQr>02gJPE4(r#n0r`q2OJBtYa zvUpqVI|!LcA(-|Lc_3>lxyT!`x&ZMuIW3X5kx&P=E3kkc^9$}7W&(~2HElk&UWez$ zNmjH#g5-hH82q5chIb&JRZD_a7&%f)GIe=AoI|VDR4|4+w7mQ!8O$KLqgwYKVro&b zH7wSkl*aoXTr37gn8OlD5n?Z#*q4Cn- zi)8dYJ_An+WWew|DAoKd`goY)<)Pbu!~6YqE2w=(VCQS&R|K>%(=<&qIBPc3NlW*4 z(`JHh+^V}HX3e55FKB>rXyvM56UNmL{Lc`(C^tvfa0>Mh+#OZYL)+TBWV&d5USWAj4GRb zWm35H`JArRkzJKrPoXy>c^6p;> zi%RS$3gv;KzrYuA<);#D7=HBqkOyzg=Nd#4zl0K!To3*Oxza6XsE`hjlEAYe=V3-k2og{?bHbn@8r+dW%(C8^xe0{k>X%F;U$&- z#^cWWyW~yv`*)1}=wk1(=P?kkxX;9&o)gSAY5SUTG_j-btJ3y3KP_VAi2LnF=3;L+ z-NAnhevON6hI%+Rx$Y`grw=6~n4a|w3NrrvxfSp4eNEcZ)fDa?x5EH12$b%0F3;}- zM>0;;cyyZ_Pvtlk#|&_yr%Aux`@Ar#$sXTneIeYny;Tu?@nHG)m+vr0XXmh>h{fNZ zkX6+n+xXy`i#Hb$SB(yyl})TGyx-31FiKP{SHMTFJq-KU<|A^6zKP912(YVGoHI+u(YOiCj1)Q51W`pl zT+}G(6Xta+Ml3&DQlQ~|Qq$z+KD(y5b1&e%+Zpmv{+TU>n!`WI-x-`xl0pA@!CNm7 zf7G~CC=e}{-*ODDzWayz)+81M72rVejEsN2?lUg(0zpH)$-NZxbEI*8=$kxhK?}$+ z7a;)u`sS=^N2t(Si3Q8n>*TogiD>QSEf5F`KkeF}C#qfPvbq{8&iGVVVLD=5aK`jma% z4b|4=UDupV!dAl5hH9mU^r+|Ja})B9(tJkUvV96Auv$uGLB(DV)Q2Z-7Mtw&RgDIP zsH(hbCV4|fo|3*?qPF61o;vNSDcZzcc{IZR=leZES_X1oFyl`A68l8Ti{`sRWs*^c z)g3Eix7!n3{|9NdEcGTJwwZ*(=WZ1mCk7XZ3!PfJ@sXCu6ugIc{PT}ZQ{qJ+3wglr zs8Sc1^1jDy5RLmRI~F6ST5-cf)hNnl{vm0z7@GjmO8#_Mb4D1_KT@k~>Ssu6Ulzj` z+8C-NTH$$`baZD}1Wb~PYM3LmSJd&7lEELKBiu==r)T6$N~(s=j;W5sG(v9NjN16N zw?!-I|480JCn|CE+$C&mPlVY2PlTc+7~KOtWg&@7J+xYVdi^#_$$mHl#1qCFPY~hz z0{PV}Ts$p2OMkKI#$`hEISHP;lv|CT+%OERbXYG0=Hw}5f<;AZY9CbZy^x=h9kxCv zBW=Gp*jRjZTQADm2%^PoTaZYDz1zFHsh7S~@$FvpYD?)Ljrr+YQIn!>cbIEnj7k$YtOkdq8$Q(@dPy;KmjOnpl zE5)4U1FL-DcaqkDN7$i|pjq7PWY_e*{Ik%1{PbhR5C6OnAwLV7RR-PxNU{mtU_4^< z+UgHltb!vK3?<}W=PL%TY0sy`4myyAfcxC_Idw1gN^e8#SQKfDqwNcX51)BNWv|SN z_TnC(GkTdUaw7_2%@X#ePa*)$OUxwL^q321Atc^KANg{q(}GUY<9)#P0J0O$6Eo`^h_2Q%Hye)zImku9U5Yz zs$0$u_F+QZw6kT$QcyW-CymO<2Cuciz-XO@A+HB#0f7#>FlH=Sn(%8#7$ zSXvV9BAP#e^%`77+Q?&)Q1E!H6;8?=FoVcpHaQ@e;otxjqO0m?w)e%=Qol#*d@G*_ zsdVp2)zF9_9>;eyzlil4GqtW!V5fwcOi9|_na6EDPRv=NTe=5l21iT1Pl!ZUm^*Oa z4#ZEYtDoP4LE6@T#lgVTy$;XD)yC$5yXL0YCWxs!o@1X!vdAK;Tog8a{gQoUxlx2_ z!;S!$GKq(MbKcT1N5i{H;Q}}KYsE^p;3T^Ji#DWiS`s}%`$(8`B zh`~vT*Q#u62r+2wGQ7v-ygx9sCJN7CoUG7VGlsl0-e#m_E$uIY^p8f*%XMox{1n&- zBYo!U_^vO9Bn8nruwqqXQlVPyr}qZt*qX3RD17T^!Nn4ly{gV|YsFJq0&;o4qJcM& zddWH^cW;|8R`I_d#727fE_@bTZrg?~rZ5wq*a74BUA`*l+d9+;sVJM4Z`S{hqpM(O z!f(O@MoCLaD@d2pB_XAxNJ~kh)Q}pD13?5tr5TOVA)qj7Fp!cK>DU12*vO6CyZ`$I zw%=~o_uM@xsD}iDAj!peJ{h)gAqwXFIzLh0{wQB^UZULo$nOMg9?BS9f+hs|7;MQwqCdJ{_BDPVoP63<2f(bM z$5b1+|C^E}R%4+|+OP}iJ_cpJi{Jqbc)#p_3xs3|fT+{g2Sf*SQ9qiC>*ffzbtvsa z-18*m4uJ)ZG>^y?el6-)nyUxBTe**MG+=JoQHtkv*BERMbYml__=t>N?E3ulAtkEf zc@?Wsk;?tl2p550B!y$P&eEF~f)e2@(^6gX0`(LakDOcKxXl`5zFJghKw7Zi$39lc zDDa}gWadQKKi9@Z-(oQ~yUm4O@Fs`3S@}i27jp2U5(BplOULsEG<0rF-htGJ!y9at`hB<-C~OWQZ8O3$Uz$qc#Ro3 zu_zdPCEiuB(jjTv>%0QVr#!s9U!&TXM&P#A`0hf*wtep0-Y-q8U>k*B7}{hN6cmh# zob5Hfg3?8C|JTIoui4+ze+gUuRg;-Kjo^@EW7dMbw2A4-UABtuxnq$C^5FhxB$vem zI9M3Du?pw2`N|=%@PJcbGC8JypMrar0=`12`g4u;$y3ZM{n{4{$Dp;! z-Jn}7UhBe}-^IAUeI=>2t$6Cd@x`m)rInSX$c_{d$`iMrc2oEpm%j$hAoY$z#YqKKNh4>4&S()aMELev5y@^CGZ+nL?Die-xhO{0Za-|t55&9>VB(52}xlcl} zrW{^A-sW0G`xPvwvAqXLOWNEUboF^-d$p1x2b6sA-%X|IbjOAtc7;RiTZ^DCg05|k_B~4%__>F!G zLY9rvlCbij1=Id-e99LTHyB71i+QHPb>YUlI6QQgM-EfV_=M6uh#OqgB2WPfP7P_h zLdf$`K9s6S<2Wl$8p=P!w?Iznf}y$K;qi==*o4C@nh!*B1{op)2B*Rjwse-2)mEem ze>2BV^FrcW%LPg+d$z-C*k6HDJCF=i&-f)x$P{v4P;rJ|AD&MVm=4^rJ`RHYBqH4o z=-unS!oln1ms!;U0xeE5$%?e8o8~6iTL~6)?zaXrkZ2Z2>?B`90A?;otD6jx*|IwZQ_H@Sy zM8pnpah69DhF$dNYXOvwrWfo-G#v2i zNz4nz;iG6tX~QzswLj!Gow>Q31F8+}(xbcgk zQo{C?Vuv6?k~E!@Sn49VX6Ib>csr7DId8EoSb0;P7uV6a#&^eabWQ!VA^8U{XAl8b z-h$MkUvZVEi~Uu~n+s(TC;M$55`F1R0H)kRXe2sHrTSq?bP^3)?}Jwf`S~FwHy*#& zp=|7I-L~H;-;S=>*`8ES|K}}f`*UxnVJ>6kC%wcWsnXV+`z0SmwC@A0Ak@qgEdMf| zG>P52&)aa@g#U>P@V?9asJ!TZW1n%r&0P1&Dw&4^ zDkgMY6>j-x9!%vxWrNsPX!^}M<}FR|Y3{DrzaI&n8Px~h6#dI;u;RhOM}M+cvLDnb z(|sGv2{G5||GOJQf9G&}FpP}(CU~>%JMYHstEyU+`4r*~eq(RJPD@K=(*Lw~vOyYXhqkMW(jW;A`4u(6{X1;HZ}(vW09MC@p zY2zs`2Py<_`8=Cx-u9;b;!rKoj8mgAmAPI=7N(Vb@~J0txbXj%P9M`>PK${+y)%1T z!eg{yy)n-iwID4?{R<%Wf1bi&@9R|_EuSpbD={_TpV_N8?*$2@%#!=GH8M5!MI6nm;P zdObaWGW8V5X=Q`XRsCdsMD^a%Ei=e07;ubntDwn0kh1=#1cs=y8iC}bAdQani&;Ss z-%7o$z$$hlKS^kiX}gzvx9D<7N!;aP(9+Z``Cr=4vMHRuzHD~P4x3>KwfoqD6+JpA zlucZYh}_&)Z9WZV0Bk~8P;OBwE#mbgb(cVnhT|iE~h8$KXlx)Z)WRp)R^1e-gm=cBRo9N7tXW8j85*K~u z+Xb#d`n^$dix{J#Q-%X>6JrWr1_IZYoTdC|jpZxSnp4kB(ti9W)+r!QS8sGg1p6%! z*D=2Pg-Q8`V$jz`Vqz}>wbz6-KT&3Ggw6QpxL`9Kx5gR{sa%B$HKlbi=}8%bf5=<6 zxa9^3q{2X~lA2l<&2GHw!!!w<*_S0mi1cHRK+h++b8D~P{4uPJo!X6~h1p3i z)>7RuLVDvi{~WuzAGhK0n<0^6PtT4!0A+FtqQ;2+s+TzG<~}hSGAh>(W|pD=1(aJ*u%RumZU^|^LxkfQ+H*!iKu-x>+=Go~r}u`o zclP6pXNHJTzXB(eYERJVY>1u}Ih);4YKwkhzm{Fsfm+!Ja7+K$XwUk7@#Wq4-kXF+ z>!n!%jpyE6`3Ly(8#DVn`IAe4yp;yAitmjgGmpeNChI`V=1f3EVM?1E^;Te!z*td* ze<1cN$5oR6wyw}<%KiL0d-x=!cr0WZF(O6_)#73$MM!gMVTp2cJ+x!<-kY81RrnCu z{>|>4Fj;1y;{zAekVI3Vz0K#nla%3>>2sIPzA>H_SAu~Sb@4Q%bT~UXG7@lz=Y+CD z@kvW14+?5}=%W9T9|v6)Ey;FGWUR??pJzOXWIQm^`o`7py7NeLkYfpd`;rQA^4aQq z*nZye+cxBIl-1uRR3Q0DOcgrjteN6PguAI!lk6)+>F?EIwO_-Ba)GrG)YmEZ3s6$dEgKjsT}?fXD9zl$aCKqrU$P3FovIh-uyMo49v7 zoWGq{aRDf(X?jN79wm|6IP#J<+EOnUMaCF`3H@i=vI3foqX9YewEN8Tb7^jbq({*W zh3?|%EHF8^_QtZ=o%7%7u6$^6oJ$mN-OBRSt4KJ4%}eN0#iJp)G!Jup)pS%P{j2U^ z?J{qSg4lpNzjmIrTo%ZqiEOSLo%8Dj`Iyj`k*Ha%5ZfQOAan^R6|(m3B-Jkc>zAMw znSCJau7b1{kF7x^ff2#N#d}e4d;jWEe`m2;~1blk#At&7iik?gabGd87dmtJ$ap zLf+-@H!7~r+C_2NEfa2t#2fye*hCE71zUs*Jx!u59baF6m{{&ZZiI9G@>y!~TdfLa zyAx|2Z0*bE5FCIwCIX-tZEL|pYBsk*D!b~E6Wm$(v;R5~z$W)RgKo8Ytc%9Y-byv_ z70F}l=(8i>^LjWZmJMN4ICH1l%5Cyl3^u@&kOF~qh?y^P~QfJ z|2FDvYN5&Gk^0}hTt6dRYo3sGo0Fo@wfx$OGXSeZ$3ro8Zr49{q*huRy{rh!&96Tt zt64R?5HPKYxpW{NLVc&CP*sUo`SwP>iys~97)WB4;bCfugmd?=19d&_{+dEt9iuI z$;NsU*PyOLY@a78{fM~Ty7{|01lp@RpOG=rjxZr2f(;w^!NY-=hGoZ86Gjz$9EH(B zbl{_Co7DA&$KuJ=+J3uHb;q}x{9Tg9A~@o9oth7R-sbz~lD&Jhg>owgfS1Z)L=u9i z{e1We8Ep0u^zWbZc5|gNp76^v@y*9|MV+?~a$Gq^A7@{}pL#{dXJPE*a1}kV$L|_A zS$-GFPmrasYfCDS&kYka$d!)hc+hFWnTyp>7ZWOjU|nNSaW}xqWpj6(v;Q=|WRZ5d zdXv5V<=(9Q&%fm1?}QE#UsIx?Hhh~pgIKRF#Wabap6VE+6gUoF+W(e=xknXeXu88M z*tK3~xHXz(h$btO&s$SH8&!EZDHU zWGgVLa0o+bZ>Wh0Z341#wNwazt*KCCculgvl5@W=p&^s^IOfcpkc%f*eO;v-MV>G7 zm62CJX~wMU7j6G$Ds(nE3Oj`F#__?U=Bc5K+u0eUS z&t-zf)S=AVX%;ed)=taxO(VnXx-sv_UOLdFis_(Z7nOlt0op28>T6KZ-ZEF2Pl zLsOcAI-?K1)3tu0h<}(IIusHR<``bs&VwSQ`kFzP+2%fR(p0}6=Jz8~Da7N(9~ELaV`T66zx-PFDzwg6)Jjg#c(PNjOV(wDmsySdNb zSWxda_p-Z)jm^cBUZw9Y)RQax^BmB)o%TS%>vmvHlDLr+!rD=f$lfg?dXofTfBW9H zMH8EQ$kZ+OK}*hn8c~3ci7m_IEB!W~zsyBqXKa5ytYu^oBe_$3JBp5cS~T9u@V6HC z&Dqid!GQ#(=35{(88}D7;q{2MQl@rb?-lsrvY1WN%GTS7%E8UWn1k3hq+v{qpjwn8 zL6c&D!70U(ZVx_ib8j_pX@hF40+4wL2dPk6D^hN_;53VkC30f zqNt?^aBLBCn$W;7+>0Ibp9_$a`A%+Bz$a&(UDCHdB9G;~Uq6;)ZMUalY+X+_Ne*2- zy^&E|uU6=2o-9hln=JzBW@q%Y-Jx@n==381s(OzY90>sR2pQ;{^OYawiOy-CzKkZX zi%oIL5buhG3Okf`$Fge0zb&|hKR-_0w9WQWP%==E5smR$*v=SSC2#eji%0cwQsh%2 z)^Eu#k;oGRB;e7%LqnD+L7A4L{*jgIYXR_Nq+inlKry=w?|A6~%u43EW=sDLxPwL6|!41L8u&*G#;;@U6udp&74D>e<*gs z_Aua&DDUbN9BoL}{wGCI-WvabJ^gItZZtN2HmN?U+{F+)xXk8E6Sy4?z9cq2PR9vEcV3E5KhFMpbR>lzyA1yRZ~Vs(M33%-sbuOlur;kGVMoo7CDfJ) zIQ9wU)CR44Wvv=!`m0z0FiJiX`#Umv!LnO1prXYVJ6edX5IgIq8rAm0J_uRfDYnrL zZtiH_5AMbO$pe%TD~ak7x2tZ@rIj5La)%GgjsQAaN}gUZs8f-cco&~h+V$ePH>Q9j z8c&eZsr%gTYr&!+qz|hc8~fUL0Bys&W!VI{K}KL<;>GubBiPnBh5bw4ER@4=tA~K) z&b9PQCU+%@H^K?R0UD3hx@t@p8&VAgN6p@g554-??xgNLdC|zSejJl^hrDxFXVA#? zC&!9U^w6KyMH3!C`#&<+PjY)6U!tW(X@L`W_3gz!x1DoR`WVI}Qc-b9F3z=r z%PT3OU?>s18miohakK8YjZaAK6p zNC@u3y;alW({^IinKT{zDFF(FXJ;danXuC4hMhe12$$E3>5CNJTx5e<61A5rrr!?B z5I1GazyH*HAyz+p?79vuGqC}HJy=oPeYNrfQ=tID0lx1JZWEYeU#q3Ak zKDsw2P4{cxq`5u4$^MMUmh*}mSTZEiQ5id`xDQZ>s$r%=F`ep(2Qjp~VE5l{UlGbX zF2J+dD)9hRemK?;{`CM2t>c;CsWcRR=Okl~@@P*%_BgcIXZTIC;Sq^qY)m_|oT=(HZ!M#aR zuwB>kN23~QV!I2n#eoG<%FPFkR;WbkiyJt7sVT=^<0y(G;Z2}gPE%}lYtgXOZ z)XG~4sY^!*5=b3kxs8}YHOq}J&a@W16!bfkw%xwLafo4?9BjwbRY7b7k{Ch+XdJZn z`i(|aJ+&tg$cONBg{Z!sDh>Q5HjiQl2vXTM1dadJd8ejb_$y0Iu=LP-Lb?2KpG?8` zv`@TbceLS~>`IJTW;H+p|JW5tlB5ET>7I@Jpx#svfGu?ZG`r0O7{Wj+vOYi2XzmYA zwaI3m_Ye90tf}ZM77DX#qmi=KMIJP&<QIw^1-ckw|x?Y&1SnBiHF(-mE{eYIHp{jg;Y2|{-UmcrFS@7p-Yq`+SdX%@-Wo% zoL~C$v{FWjp~e#KqePxEkx$#OLZg>xNseoyAvg$-Y5Iy3={)U~wHJlQ6Qc~Yw&ryd zN5wdz{8Pd#?p+`E^e{Rj%Y$x`>oS*o8y`0>?AFvpMN`I?zGBLww7un^6g(_Am|3diwSuY%WpA8ZZZt7 z1IvTN3PTvehqNoWcP3E}8QX6!_s=Jq*W#wl%+PI`?485hmO zQ`dWceb%rSo|dwfjkpgbxHKn?1>OI2g8FEjfByqawY!_hUamrYH2&|7iun>1=9cm6 znlo#gI-%~-{>dcMT-t~ZE%NI0ZqcxH*pmt17}PdeFWGPSfs`x z<~I%Fq=qu+h+vM-V&;;tW*Xkz;^anwC&k;cE4_CFu8bd!PM5IaPB3?eu{TBIa+lxX zk-@>u_zUubER9r^52K5PQd%PHYGx*@qKK9|z?oYC2^dt&v#B?C5K9iJ&l$t{^&!Vk zq1N|c9v`SU@>2jX|AqO@t~nIbE#@xm_=Vtav2RfS^y!;T!)e>i9+FvC>R8b&{s=`` zG$g6ZXEz;LeT)k0el8o__ZZ;gYtU==Us$j)ihK`=#7a+<`}#U?H#;%ddUxa3qHG?4 zOxssz8AoMUfB$Zv;1&F1Q;h?^X&7#z^Y(6RiTHDTEKNacI4PvWkZa*R#G4{@bZ_5| zoR!FuV0(%gCSsv+z%h3{5d4p-CQvZWbgU(x4CUG{%(TovaHNaAe!hR`^N3L=A|fF- z$zgk-=$Vm*h?1nTI_9l{hw|{u+p=(Tz>H9dsQcWJNu$?-j*fusx$=mO5&E*EzrTO^ z!nC^V7LkChEi>~vg=06(8T5FGQFW+qsoBK3Gf<`1_>)SksHTnhsLB`qQlEGEKy(K6+kfF z986@C7bw_uesD)k!d}9x?@UIIA>*|?oG-Yqn~2*)hY($7a$NO&yUl&)(UP&~OV;Ax zW-O*lw=c=|1)~HDV%?Kbpxw!TIur|(Ogl_5a7`G?oeVo&nB=4j+NOjAF98KZ9SU-D zPt-vkUvwv`xalNthP`TyoY(Jz)KDCf9W-uxP)r;m~Xl$hIVfY@!xPUjU->a@#1EA8l6J)x@C2 ze{{WzzDCaoqw_{WBv#e z-r;mImQD|u1mv#%6Np}Z71Wmo2sYHzt&Z(i^nE@OR5X0r$y&4NUGw%l5)9uk+v^RJ zea(2Y>yH1%v`$7<;tm;#-L!}qEa1@CSkSQyhd|cL?8nk%gXdcYHloH+tZ7wh*JVQhMyE z=YT()*>|8h?~(L5-Y;%8*FiQ@!XtyGov;y*M%M=9FLaeCJ!eja$q9iy**9)e_(Oy3 z*h?-IImCXCKvBQ824>=Q<8Vp>X5(m!$o?ZSjCtg@+9&6-W+^dQ>+Num;Yl9)6^tR6 z-_|`teE)Iw&?ryTWlT-DT4(9ucPC^xBh$>2=7)?9#7Zki9e1lEcW1wF#^DdaSMO*H zz;m=V#|$cC++&$sKx8u!d@Q4`cJzt7ry}7+A58)%L9G(6Fy6LrRu3}yw z5+SIPsavkq?B9Nm6COkdN>z2n{k+}tpx;iZz_>%YloXUK6`E@;$5&!4N8XkE&h=cv z3f{&Gaah<0^WKkRyz*SMyzSMkUHihjaQR`%lj}EP3`UJ!ua8Hjejj#57}Hl8Ladhg^Ib!4!P0hn`QltE-AUUNH2ddeNe&e z4fXxAvVzd?D&cYI&W6$NOw?=PuE{+?n%d~~xYPB7WjP}Zi|1#g8wtd>QMnsCzcRl< zLhxiqLZQn8y@d!uETaw)dw^IPw59)@UU{g4kv}GS@h(}?I@PeK~fO% z5oQ)p2L{+Dkio1s&%z9Fw3PaW4br8Q1bJNyxX&4EgtNbNOy9%o-ebs}gbrhA%H+5C z;bU|UR>ajh#bY}cmpU+YGDI6~cq6~tR|wgGp#CA!c+V4Rpmu-gA(qXJ^GlwGnG-GsFM zXxX~SNhw;{>tSFfR?=a%Mg~cqArZXVN%oV{lEhZUAEyq)7giR?FB&^|*w<(P%RDkQ zLu>ueLdE`gL*|&CI+!7uAqk>lY_Pv;w>{2CQ2b6r%}4nUwX9nWd2^1bVwCyh2)<=Q z-sQ4AAXq~z>S^oI)sh|}Z1{czU9Mj=c5-w#KMd9VHf58GYZ^CN7{E=0DR(iK?h8pZ zaGRrc#t?JbZF66ShSYZ*aN^(|&BkAT%ufkiSs7yTWmcjN=|0bgWAO*g^1&xbC4xJf z3!`#4s*d{A8XX3%oGp_R=F7u8R^9u@#c@V}O$W#tL#{BTj|ibKUg5U&n*{=SusYy; zwT>ZWfc@vqo|>5DbO<>reHMUqE%Fb01W-US9UB*=6h-H|TD_Kv))lA{vFtwHkqRX= z{bR^mws-WYAoAA8@aA_xU$U-n0^#_UU0$%}`QEw_eeTXd_}gJ?ttkFTMnpwyG_R7( zdC3+hYB9)kccD=4+wiyA6qWH_zuEhJeiLaxd4lT>HnU%xuBE=CuiHL!e(PI(nke)g zHNgH5kjt1$TRA&3@O6*}ut?8pq%({z{QlQKe{%wmB2?19E=*_{3^}Q^C0@G48K)hf8_ow8D0cKLq%)YFLZH> zT%qps(Ti3Z%$BQ^d0}FhPp&INWu?Duzz?890p@c3OfE2h|>kW~%as|Q*S#|<Ua_1$ZNZHm15B2I~@(&U3d%J1S7yufcap&tU| zgf9}0dh(w`uPl$IlW(iuo|BBOO3D69v&-62#PWA+b2kv%NW^D+>>YRAIj|@j8C0$G zJbdWS`5*e=K0?EMLJxK(2Azq8I_bZQ+B$!qbd2R9QxVjg=R{?)vd&xy_V0!N90GP4 zCoHWlIIp5k=@})QY+v*r=zy`Y1S)0ByF7u4t}{COZT@Er*GEV5)>_DxPfBk|;{^&( z=5Pf6>#evfr$)W>^Vwb02X)pB{GVciroL%QG*mz&Ha-DeR83?&Ue;-{Qn?>-&qO${ ztnGc>(P~qfc)u|6U;Xz(t#|jfbO1MzJ1EsOt zklXaSZd2>4r6M+1K#U^K93*#!H5b(lX%14V+N)Sv{(iVLSM_bcPW~$8jZe4DD#@FL zH?w{kn819G+WW9VdCPo}E6L*bkr5#+4}^-5jf@|CRRhTh3XKtJ73P^3t}Gf7mJ7SD z5c+9^W6&anHXy-@JjHL;F0}t# zV8k8mJH5+4_ph{ix?QVLcwy%x>e!t`1yI{vgDjnLlT4lCIh`0E$g5u&w;@NdyPo`O z@%otA?xnQtJ;wTlM)IhPvXmT^AR>YLhF1z z@;(QJ>QCqzX~}cmy$oT#pDw*$Ly7DwhQ!PoAJ3={wU6aVX1Q*@RE)~FYvp4G{Hwp- z?Xfwki^K)lGrB5`_3^pQ9SyqAQ9Jf&cU0TUaq@JwThXEDH#?!nB)Li`su`*Vs>mOq zy{~hT#7M4-ru3blSJ9Mej4y%>e^Nr~!tkxMq54!edfEXuZk;eOoN6Gk3!0mSGv~@A zz(jL1#o!|6=NvgWo%LxWUBJXgZFm2}|7J3R39HP0&lbylL;w;tGOm?BX3p!SAN!9d zvN?Rdryv%X_3ii$AVsXC4C*Rvw?>f;KW~chKc7h~CP(#q>3;vTSN#K(H&w&eEstFe zySijD#5`bx*Xn`@O_^}lJ3^TL0jM_$!Z%WE z{XRQSr$bf5ytP2(o&wxs1Z^zHpGny;u^ zz{3YJQ@>4{FJHXCBsL8}3cgUFbjyo0Q;jgpx11S)n}D+IW7Wl3{Y(^WznFrn(z@MS6lL?2#m z@GoZjjj`OAl{W zjimmL!tQx!dUZZ3CVaUH;@zdd1U*O17VVbZMxV-o66~dg#b>V-U>yWyN_sRXenyT? zTGyGv8Bt(dL|3M|q(Z-xxQq&AvLev#pN9zt-Ey25H=sJ*MhmRUy#@dY%cVu~&V3zN zDvIDfIi6_=hNi+#+E6}Jqd8nfx&)yQdd5I+T0oSb#^1Uz-l3T{m-tCVrafzcsz$;@ zDz<*>Goela2|@d?13`VyNmSO-F~0<|rEPp%I>a83cM&p=!z8(kA-%ZGf6aGst?{UK znn>{XLXl$q@Kle@%i>qo7_KtXx~C8l)HoA$!$T9Tx|tB(*4W?{m+(3M!(wo*Nx-@i zOzBJV$Xh}*-Ak&k-%I*N4qi>iwEu>by{v>iZc-=lO8)@FF%sFr&~hmrZQzft2kR(K z>Fgc)9HEjnN+Y!F3W96Fr`c5 ziIPTPqJ>!KZHS;MpOhGcRRdGu8ID(M{eN>*5Ul0?a45sQS0-;eUmMg%2H4!VJX(z| z$NgTNJzw|jZ*G<}Ha1RK@-4c&(cE9UwEW0JWt4X;^dmV zT4Hdx%s4&vzL5uO5s)JJ8cp9qB0aJXw5CMczgr0@>`YA&Qi6~k4)_#avTAM1${%>OR}f0 zt*wO>V~3oZXKbPra!l_n`ouOjiJS8yxH1hFwNJzyJGf|bBmcZ4T$kWw$n#BJ@;^3I zQcCC83!4STm%c?M?MLD*^J%HCGbsXA4BpVI@c1$HVz;u>a3xrwhsWx+^N3XXcnP$xnGFE+&N52$BqpGsvucW4 z@!<8)s)^;OMEK8?N$Izg?F)cCi#l4tlEc`k^OQRq`GlvPWqjCNvd_d_s{@cx5oRan z+izu?JN9{D?o8KNHlWtpZrfxuoTyn$A-SHbkubbSJr~ejZUTIK7~r8tHn%l#?a)>b$f%Y=_GRoxkVPp4_T**OsE>oCe zfmei+j0aY$q4(~>zns_BbY_*po8|9!q7~s`vFLcq+TCOOA^aIB{o(|fd$>uGPg>OW zrB4b8{>i_C0rpV$7+GU+u7_+yiG-K1Q^36i`7JJ=i71c%yxn53VMp#BSWj!uMTBTn zrc-5tu!4h_DO4YR^EY3+T=+GvOw(2JdyApbOIUPk+EbzF{QC4w$y{q?UT646EN_M) z+&6{W_55mOC1>sOpH{#R8g2J3Lr`{QsAnfz`+Fl(%pV9HC#(lDIY2a0$z>xOK#P$J zMgc*e0SmycB1-R=OPz^hpG6kV_+F=v#pFN&e9sHgs6~M9(dWKJNxy>6X&ofF-U8)G zg<|x;vN46sH}6$TCyV>9WN=i<4p9l0w^cDW*z2`5KJzgi?t}cgy1D{mU}uQN;AW;4h`S3{X6!Kq*6x@1zP}&f82%({oWEIAT9);%5J;C zo;-}=-umA>pTsn#mr?uu;&y zLnqZ!F0u`AqLf5ecC4F{0Hd9>cf?t4bbu94uObzB@rGCMunv|R=#Qo#|3Gc4jm=(a z{7JGlrjE*KNf|9s%;QfL$t#A_wcNj2XztvG0%7Gvsf?_KpoO=Lohw~M6>Khy#%|X@ zho^8_drM&JuN0R?3j2?|F!C~j1itwPu7yE@`r-hXa;esf_JqC_1jCl};pO&|qf6@} z=oOa6?yNLW=7xt9k@yAWLde`}ctfky-beoN;TbfP8jAG?;g_0G4ROo@J1lmh3(Nx{_v}-CgNG}<>kkn zO~ILBY($d)AQB7)fxv|VFjx3D7ltKA#H-%RT;DGd0W+iTNCZDNZY<|lQA%(sERi4! zIW`Cq9`ptwg<69@i7!iKC!);F3-uSD$kB8D{(kuAm9n!Y5x7_?G>{l@qebLpZ0r=d z{}vPRCbE}Cfq8re2&bdndLf*g#(E75&ZAD(4u~gJE6Xwy9d-pAbdno_h+!p^5?l&c zWZ6C!utnWeW}x&wILYLM(?18?p`OX9A2jO%1J=c$q$hCsn7sOXL@Ee991w67j6nAX z!tvr)@{YKj*EPOfk_jl*%uHp2hXWfxm{>7(bGBNa-vuF#+^ z+Lm-~bI6zju}Q_L2|>%UPruXFa%?@P<>yiJdY&AdQ=Rh>6-XbRqrXX%j8+rOTP8+j zt9`w)Z_u-|w73iQ#(%3AiFEa7s{B(-VFy9}&B#+AMemiN7XHCd2@}Kth%fd1B%T?R?WOQmVm{tbAP;qNLyCyEQSvpI7|n7>9$sx; zOP}bc!;JM~u@L0$7$-{Bv8y-1$8RzT+eP;)#P7wfgbwS(jITG9PfGput8640#f{{9Nhn#uuvX$?5#T)4WW}8 z2>}>g!JBVwS&-ObpgLoe-!e%^jDRyj#mzX~PWP1h34@mEo^nnFB+%W5e3Zm$J5ZvX zoTu=q-ZNi5*ca++-M8s-WW@WKs38~^mWmkKDIo6VO74># z(sJR^o@o=kf&t@-nBu4G6Vw+BP72EQdJy$iSSz%U116Tw0Nwy zE*h5rA&!C*@W$cr z^%HnR=w6WTW?V$|Ufsf4No}s;-n0w3E#~q$C+-Kp$8y~ACn1|E6^5cz$!`P~6qGWe zo)G6Q)#h=3|O zmb>Ws$7F^N5$PpcUM6AL!)hP$Rmb^99U1AbMr7fghTdyoTYwY;3-MMWAE+;ZAcK4% zYBmbIPn(JAZ;pC6y)(7N;rddQ(XhE~5P2p|X*#++E59z{*?L=K@(E) zCcE9f{kfCnyDBdplqX4-j_OYf*YjKukL-u?U7dlRX{bH2GvE5K&MQs`6Qj=4RuE^m03?SbfVTHi)@s^Ver z8w7k2I}*HqmCLi?L+uCMn_WG-uugQ(S^#E}wU@j>5r~EtA;%)gjHs~U$<-hf^513q z^{=w=6tC!#YZ}9ntCFoLgUrFSw-TiyW`P8ET1-%FxO8c|fRa{dY;A0!?kbPsd9C+U zZN}W<&2EAW@<Xgc12pFxNLW2Hxx>pvE$TNbO+0??@#t#KBc5XkR2dNwkfr zS5zn`?E33AWQq)+)=eYjAwV|AH01IwV94e4F`<`5m>5R>C&g{?yf6-A<9BJf*U|B{ zvCxx~rLRspySS`^qgLgide^t;`Q$EnQo{VR?mc|?erMh2^tq?+DG+gfkmdCjT_FbB z#w(}Yhu6fiY~(ua^4xFK-;Ak@r@{CK-HO(1)B~aIQgOgKY2U&`r+m8@RBQcKsxgL_ z;wC7#PlpckNvic}=Y$&KDgBb#a6Q^g*`X0LB05jidym+bY5Y}2&H2Dqz?~=-jdM?~ zd}KpqMpRPr4Y9Z*A$j5i_y#Qkf`5t|y&y*ImkEe$jWg+cGCdlV`p>%F5%7XBs87v@ zk5ZMLodMt{Y^*gQc%U2OMTH+vL++;7~8W|^_*LV_jLx}D~!pnDWT1^57 z$PY3E@t#GtH8~#UeXAsju?Dgsr8M?2|-O-2>lwZ z&tCKW+EqRLFf{uMUI@p_pz6Nh|IESI2z06k%RS%W@=y4-w|T}Fws8elL7i-{XOIfM zIEEH*ta1?LMg@!U4r3n!MwuQd2h((H5>~7u;CC%%gSO6ZEy~L*#CRQM4mQQpZ>`=1 zD{_{>*NTNH^Bsr~_0n?d0JjP0lfAJeBGMj%!ee(hM%@`pNe zRF@j$%4XNp#iqcWKX^v zbI*O|LGh@`K}k)(9`(BIm;Wa2$xs#vI1nvtMz(*HpH+8uNR49w%9NJyiD2i z=po0X*cg5(FP!vL1NUAj%EZKYEt>?4*`)%9TmqBTS=k0zK6Es2Bj&y`wgVsw-;Te? ziv^Yj_w`YNru1MWs4_!)EqCJ|UJ*{&z6kUv;U{TNA5V?X`K92Wt3;Fk9cKpMXVY%) zL!8e}QM+N``|)m{Pzx0VH?)g7P|y7J*=q{iuifiepl^tgqWIW{eFjkd?Uudy+4DP5 z*H|`%{G8R&ykh#+Msez0O)rRijb-CKA|u%omIa$+N>GovCTk7guz4OtWSiq#3pxF< z&deO(VeyYmd(2h&LoM6Zmq}XlWJ3_&BSH;>dl1w&YctQrA>9=rx>CwTDPjD2o~7M6 z+qWBQU*<+lg$knS=zKE$uT~`uxg!AXjJv@iqws^d0EeTMwz*;H7U^INF$rx)vW8qD zYKm$1|JlM_+=5SdXVIUQZ+#v_2f`%_05#u+{Y!7vg}}u{n|0Sc0{vZ6Kc35pvAy>- zR~yZ8bs#wZb#mYual3;i{?b>rOD)n%iJuyrxP&B_oo^f}S5|CP%GyYf5VCKFfv}Qw z)R}~`fe;&7l*E3X^lgcY(w9UQD)Ve7IZWLLEu#rV{ZPrvyeXg5FyF%zOkc}AS;SJJ z%ZbIJtkrG8-2DRid|_HZf#}K%u=on@N@_>ezx;rpQbA0QKG+k6;M`1uO?OzfZZlM} z(ITm%q-CwPsn~ zejC*0&ALqyz;aQ#NYXs&=FunFUY$%6iJ;jp3*o65HM9zkth*?bWHgUbimMKC?%NBP zlC_#m4Y{ntfHO*jo}96Z)ehl*fl@>(TXu)gZ-WWs?APhT@* zLWy}kq*U8SbWn^P?VhQF8o2Z|1QI^oI<=X9zti*igFoV_71IdmMC}3!NZl`fg^o=3 ze3V8qTE1CY?j9ice$`P;70Uu)1iSUg6>*tW}14b z2%W~R=izSjE@CeISFsOqG$Xl8FsGKD@EB2lMu3(oq0-G zvdqX>Cfo1M_0`4ApmdTer8`V z+W_by0Qjym8sN)1+VA|Rjn$G>%}ap|o2iF>(_V8_<^v)ug&W$qSbMzh;q5hk0ND}H zcg>)ngk^YQ8A-XTn%~JW351TN6N!Y2(I-nsM?d24e4}%CySm%q@+$ZrjJ~2wn{-%x z14_ayJdf!p4+;RGC4fVCOJ#Gkl5x6MMe)9YlqApCgL_73-D#is{oO~EtkU0QMjDd$F>WVGZ_)ww(0#jsnd6fA8z|UfXx|@ z?YmEZ8ZN%o;&F|;Q4mS;`SW_b8_#01GSb_ua^jC72l>8>4JR_D>sTij}zr8}meBcxBdo^!+ zG&4=}EDMOkhy@5@oFgIX+HAwOmv4iKFrWE1puBLxSz-4~rZ|UI0UTHZA*t<~1#TE~ zp_aCbAV=eM(=o;8@l@`&u&7#}OxEt01j~R8Js~>hfFxV9mVy)A^LAHQNvTObaFXN2 zSm#g{0=PZ__gvrSyhSmvFitwM1!Nt^uJLK^BG_4sL3XNNc_4Tus(nRl>vV(8Z3P9w zhqAu$VmFu540Fx52PJZj6m#>JX)bTPU_cwM@T({mnyS`G*i5f@B+vir!ylTii z;_p^;H3KueJdqr-tZjX*BZ*laBa%f_8Zr0(X;W!+VB}k6abGyWi}hB5*po4c6QUUA5ZA+Iclf z59^k_tK+fx3)r%|$u^E0%=yc9+#r0JBshN*sgtQEQ(pibA2ilOFVj}Q)Y5hg=ayZn zg3D?4Uy~(G&778DubBFY=+oA2#OXLpF=IuUIa}M#W_{r7U2XFHM#ye%4_il?ly~IfOJF6%pvDZ?Zq1+A8T_uA$asJ?4%Y+}_Vl$3jV&yCWkb z+szS5~}u{MPoBo-yS49s?}dbT zKGso^;~5BGiC-Dhj?WkCFIg(FR}PX8WIy`GGY_@Kk(-nRwSVOny7@wp8EuEnd0f0Q z^>=N^^=imM4sp@bug}%hoq1X-Eac6%Ue6DT15A7yHUelCLMDr$+#z5dMk1QU=LrEu z12ZydtB);4G-}NXK^?P(7uN-F`L34fLgU@Mch>Z^M9zw7spCpkZnrQLO>>WJv}+Er zN|B9}GoduLP_y_G-`A!Hx46K!Qw=wZHMN!#g4RTJ=^&10-to6x8%=mm_Dk;Fb$IgiPKmw- z`}KbqYCoyM*z`QG+eQOZpg{sd{S&0V!j7Kj&t&Cr55v&M}3c$I1DPZ!=C2 zRI$?mtxM2_RxF=s$6U(XVU?AJ?Y_Rg4+2uP2EKnYSl+O~Ada7z!LJQWNgmmO=%~Vk zqr5Ju;B**bjZ3>u{r-3!bQK%r@4lRbqz_TTxAkzo$Y-{9UIa?6G%9pRV;svzL0<9q zznQjMvnBE8Xw>$vUlhvUyZ<(%Hm$E;4e1pGbP+(PD%gY8IZlcn*mK_2)##(Kzlowc zJH3(nc{o9rfhHlYjK8cmUvz%>H2PEfXHWm3zrHlVt|CYCzK#s`7%)5Fxy;^opI*-BO9|)2Pt18)r1!ET znnEK55^`g*Y{W1`FNF=lJ|#*L|9Iq!i9T=UwSRSTJ8^(;&rZAm(CQ9r)LKQ%Njkf0 zJAtI=R+Ioj-b515G8-EncHE)i)s%PUyLI-ZZsyj@zz2H;W0$N&Y@Mz$8XHyqm4oXV zuPfX<&XAwYxfdR4^k8{qu=~ZDd6`3E$(XJ`-OjGh)=O4BJ%s#;m293L0LDFn&x#V( z3YD-S`wqMS9$qTsAUGM=EYzqVa@dqNS57+8a7GYjUJ;B>0)T;b`>i>+<&e!%QPl?k z_iDlidf(NJsM%`j)QK41ZClt~8!9Vke)33*z7&9qJb3%*V#P*^)jfFf>Y^Vz2~V1n zfVcYcT0k4s9-(5|9d1W3BjnF!?S*7>uVy;nMh3{{psbt(h!Q{H;+s;JS zY^}A&WL98`m!9O6d!L@b_+x@KdTu>{_ZefZRE@Ku%}CEsx%8NX89_!NY!S0}sXa9y zC9e=j6RN7`NFP&HS~(y0Y~MIM<5j^vwe8oQU| z2F6Zt`Fth#M4@WUr}|9Om4c-#JoqVxj<{i>fA?4o5Sk52&}e-(5aA zq3&K&5W=_fB=BlYHgD7Brp22)=XkE-Mz3@++ix z{z69QpS?4g&mMU>N^IF~AXIsxK89EmberqLYJ*`Ld!%^g>F|qu#mR5~g=xJ`?1h`b z<;-u3Kl=SK|7yb*6~eQoCT(7?7Mqxs$B_%Uy3R`5w<~X94*?XamfRivOA>g0nHgt= zsWW_2=c|1=CqL&y>bm&u*V|!!kyY)%J}Jo}DarZy>+C&4y8>ImD(@O!fh&Qr~D$su=Z`&#R%&*sSdtqmVH8 zNaj$ywS3y)rbTGysqF@1{ij4HmUsgzA-+6-g-WTA3OGf%1my&aY-*%Jo*x!>Lo>=( zm)VRB7BHV-QK}0m;SNs}j5d-3ph0Yv=gX%P~R&IM-pZwUA<6RQ778v zyp8WQt<`B^y$WsZ)w4$GUn&HFQLh1W(zW7w9cUn0j^!hWB-{>5m9_nrS?!&TxM))K*TP}OmZ3LZdbxSiT zjO|;fG@0DA=wDD26Tkb~a7sZ#J zhG%&lXuwL^Xn%R7=m8G*B{jWw?wulI^y1@zH>Ti%7VdG-+QXZ^(eZmj1ScJ7n9sV; z`c^eQIMT&tcp{NA*=)dDh%jME62#u((2D7H@@B^sfgngX`R#?E4g;eLr0tQI>gNR$ z<2K8-wn9rCzh{og9EPRX8OnDtlgl=^^XTn*TcYbMaYsRyTT^Ek4RZ2k2t z|0V|=LG9=vJ${bK^OYv0*O`KGlUs`r9wY>ZE~2lJO#ocHrhe+Ao{w+ur+2AoD4D}0 z{xDl>L)E`RE2~E}YM@3e=slC|^HEi}wg*7WL&BhZ=c>#0MJqX^iS`NqP)HE_{@D=& z^9GYyRETmh2zhlFl*K~-B2!2z1EM zDP`EoUV^6UScp$-0rS2SQ`238+Mll|n=Pt{1s!&FQ3F2Z#q@5cA`T(`c`gIeA2Hr0 zA(2iMNrdVSf-lPa>Dk71)u475iN~2-q%{3uCS!|udg5A18Z?O!EuYGrx}U3nq}#fY zVXAff1Ld~37KDUr3;iZeKiy>2i$j(lF_7oG))k1hEM&Q2^2sS+)Cu%O0zv%5^1HWO z{{i@D(gX;k8K93xa@pE4OJN+oWyB+ullbO4D|N^_n~JXW2=;Ngg_!xZ8Qe zT(D`EyU{=(on5u^S<7#+rlnbs%aST<5)lcyQm^;FR;a(p`j)e~**^De!>e^s0oT@# zaG-9Rb3gcZh=y(Et21EqFDZmdb$t<+p(c^iJ{3tF3yH)c?Grak@5PoB1+Y;OmkGxQ z9d+XOFz?>(koAu#%W^?K?j;~qtTi|Prl31&3E4s(;SB_+8W!M|D|unC%l%!AA`JAcqn!wnE|> zY6ux{L7;P1*Q-cJu8Y?-9-4mpRZ^>HqoS_;)|Rf<%cKYeZo1#4+3VDW#ecm8_>D<|HKXNjEtsA%uL0 zAff2|7&;3CJ)FI8lFgZyVYZkjhlYsy+e}^WVRBQd3oI_9Vs3OuTNiz10e5`(I50?wplLD>Dvla5xzTwb;gcvao@o_t!*a#!uxXj6ST;Rw(&&0hQCX8`kv-E0OF-xB+s^kKxzho|I~&^$EX`}H)2TH9 z$?d__v*9m%aGBmn0=ZA?WIH2(AO-JHQV1@RXp@>mZ#d>vT@{j^O)u>N2{Z0oX&Zkg z({KJ}TK(U*ol4w|?{~MsRgk?hWy_wJRt$Rwh8x!zwI;-u@fickhre8tH=VgDYXjXS z<_Ui()bBqh?ZFfANYV!N$`EwZbGjp!3i)#)T(6u#*D1G;#wOi`K<7^T|S zD$NE#loz$o5dAR-vN)Nu>P-e~6Vf)t`#w_`b{rcOjrscRF$U_IE|Q*Gke#}n_RjFN zoo~oG#oMIijL4kd`mnt)R6c()YylWY|75o3&gKl|Xb@i8K3r#CF1w)Ug=6|qOH$C# zE|rZ0=6V0m2Me4S-z|XadHOO8-1rS#HAeh4c~1hi$DrxhYUTyP686L(_Zzs(8#u@G z0oLl{q^5^V&EjsUBDMGXn73E5Yco4d-i#U)z=so@9Q_3VO)jFxwx)NFlXlZi%$INh zv|8@ytzcY3Q_3KwN{u+LdIJ~OHJ<@@cxE2@`k`LG1h>|<1-bAHpQ5*fV8p62XfW}* zHedgN>dh~R%=W(0O}R2;)4xhMqno&fYKqDYTx-|7%M-YR*G|G60*8`&%ESW;vdl2P zE%}M-w2ZGrjvQW5OHM;9M4S`P(mP0z5^yL!?zZZwzLdy1fQeeF(;%E8eDC`eW1_}S zx@TLwTCu5i?2ulXm1csFfvT;do6Lenh`K_mEF->q=p6bcj)^QcQKN5-Od{TFE0MD{ zc05HmjpKQ4qP9BWrDQTAyrhaS)xlc^oBohX`_;Gz1(piWr;72~0Ypg=^U8@lcJJ7t zfc)s8>v6Ifl$G9uvM}VA;6>RiqMp7f<%yEOe#@UD2-D}I{h6J-)@J}V2{EE3ry+u! z8$}Y}o)QRC(wg@% zzKbLeUXTny)IS4bps+SO872N5%a^1rFBTR4t?4 zkRiHNxm7l^v+Fc1OD9s6dmo}Kh^g(8qzL@nNj~%!WM43T0D=F@8|0eyX5De-NCF2;zA}{$nhK4j zcvHtmU{9`O%XBrMzL6Ipf1q+ov^o(Lf7eFys4?-9>jK>Vp8h?3w$2-rX+NlR;^vTB z7}iFT_Q8B5P?~yNK5Zc3`F3XK%dvYelarwp?SK^+E6^;}N`?jQ1-E^%Ofapzr*nAyh6-aMa8V7xZ7p>-9|Kf>bLa@WsfVrRtjKSGUz&d31MoEQy^&NQp;4el7 zn~dKs~(5bNxXDDf0VE-$7Fwk zQ}_Ja3oZ!0XL}zSy7!O$g$Gf!^^Nt0*F~GIdu9bh3S5T}P5t;G3AJuamWl9u(US*5 ziB87nNKR#)PHEwrQg&OQ-x{-Vj}YV^8Kye-y7sH2Zp%%aI5U><7H6<2muwmZ3-wFyw5GY|sr=J~lB zZ#?d0XwqHY``A0m44YOZ?CL*#2bb&FWTVngEJUSvUhj_FDu90Kqb*Q1Ab!R7@v;#d z9ZTVjJp7Q7#_@2bMc4L z$s1teVc~;EKuz4c%ucTI7|(kz4`CHS82B{O`*Cm7^%DQ3#3TfSoi=U^=nW@a@P2&2 zRZR9M0Bf5Cu+94tTenb;y!NhTfNo-fU?4Iop5$d)6=bxK}La`$ce9F*@TyVS?hn zAA|~^`$01e|AevgLuW+~&o*#&V506&SBmHh%KD;@{-qIe9cv`4V(m15*i^zrJzdoX zcWn$lX$daUe@efW6nhGx=X3R?1)1FKgrv9oq@k80IN+|}JR_*-SPa{GGmjan2_1WT zqw~vV^UNxXUcb%NpVIXoOsb#YHEO@xF{KE14(ocQW8*;k;hY?WqkzQx_xq8f#26kvtRPnCCj!@fICeR1~N^K_CQG*s6$Bvo@u2?hFzht zA9kpZBSQlYOWAz(f_6T5B-%hm^h-#V%&Go1Az}QRI_ie=L90J5)0p}ehwbV3{2N&& zuEMsK$s>m>ze$FG>jSm6ogeoOY>5yrFippyqC1rKH(bov!dirRv&rlx6!_*$ zrfu#e%e! z$Ge@rJwL-|sjsbxwaTiZzDs+120>t}^{nLjk-I*ES40NH>3ID(kry+4@TN3xU{>Od zc>!+YS~ihm{RWF~FDO5NPEL{>UH_qOvRgZtd^hk!MPI(OWwPRK%muwVnwAa+1MzX6 z%7tN95DrK?)GLqjn5wp$h?K`3hK^< z2|^YVyOg-avPpjZneh5A!Q8ZSU_%*)N~3t1gaAmiiVgSq7DN4!y+Mln1)_OFGXMfc z%r-F4wt@}|;2~d1L=CLCClkeLpKX>uQ>`fYkJ8MCj)s5^&36`|({y%S<%1Ntj|Y5M zcqhPcfC10vcyKJ9m#1Gx1S{hV7Qi{9t^d*yd_uYQ$}^CF-_+QOw-iXRXObUZycM)C zIkg2giArTG9cZlYTzTz|+;01(Tu?iWF~v$Sw@Ko%Y5ePz@zBe?Iy()cYbU6}mgAW@ z`j>P)C#YQTEo5;7>7|Qnb~N!SpoyEt4#fi&5)1;%=wJZ;huX75u$4b?$cxHUpU zt~n5I-=S$TJxxgY&hU3 zpVr12Fu)YzzPcWrK~vP(deu&J$x0QmMjq?h>#dN zhxZeFLZB*ykEt@zED)4zt*;~?Sq>=Z@=P^8KP*c|tN)%~e->M_xt!d1*>VDlA4HzI z2W^gzSugJdMm4eg_joBXUvN+%%R?9g)Nz)^m3h{n>De8fsrmQ!7^ISIU=?`|M8YG6 z4k2n(1!zE2$fG)zDIr`I$0YNifC0GL>NYvRr+7+d*(*SUj}JhAuWlu=lBO-_l>=y- zt}4-FLB@JMG zMZ4a@8PnbZ(NiM8w|4_+en)NqCa>-1=KrR={7_^X=&Z)>E)cPtczJ*rX3qTYy#paf zwRPW`RKGbq|B*ez0ETf-7z(%i6CP*@HMB0ye?{o>z{=!8i0+^Qh4#V(!pZ@ap#8b@ z8j}@c{W*B9^>nx;-K62x!ou-4F%z)nMY{i3Fb^_N0Y|&#OeQ)y)1!J*O5K{JZp-S{yTa515+`KSd3iB6~r5 zs_!sY_zns!Dr_ORla2{l+yMdZP2o#4=|zWc+FptqZsx&zbwEzQ`U@_g5H|CcNpNtzX9e_r_C zmVmg~WVh4!BII=%RIKqpf;!PdquI|36707?bx8ry8}5E^5@f!CW&bXZ%K~?`U7Rl| zU(cQ89p|Q_;G1@6FvG_Ry1l&BV_~%O?nZW0x*`_2s~u;9y=6bTY=7 z%-RDho|BOj8Wj3YPau7u!6tp;EN?FJbk$Z8U40*hkESQjkU%DKK`yN`kaQ_pSJd_) z1923ENh$542wS{B^_?@?J>ZhcpQ28R0QX603s{75p_?#=>i{+66|5mB{Aj+iroQHz zSAPB<8NOcPu??oJWfg)fb=$-^v;ugv0l%1W&U4X`LN_iVnzeo*2ppQJ$GPA@KDQL{AHFE#xAP0 z2+C}>a7Lohp#!+u#zIjcA)#r4{Wml8SsofgTs%wisB~6f$F~CCQTp9P&W9ZRj~n81 zTlnwe$oZw&E!5^NBIID6^$07_ z&K4NLA_h{TeMci)7E&hGuP^`p{W2)hj|}`HngnVS+p6}<`tqR3WcE5!3Zt58&gAV> zg6(yW=&4&8qO^$}N{`~vE^a`XvD-T{(m!_0B687AI!_8@Fv1&L4?s|?=rq|oU9>g# zKSbuQD)7S&7}8mGUo7W$`GuFx3NS5TpSz-fImD9*!Hef*R;24q(J-xKiZ_791!JzC z1-ADpvRs5J*iMV?%?AyaX1wa}@V zK#`HKh=|?B>4trU6;+y@&fJv&x!mt|N~0r54%h117B{X}ojkg=wr*Du{^h_^>6hWu zy1}D8pfGk0mW!^FXUm`B!1sBK07%gGj08=3aire?fe&?j_iAQmd>Wj@82+8F1Nogv z6+x-K?%ziP0aFX8%xz z7~)6~12{1zvwHDphj00!E5i-ChVBPuQQ;C&L_OZ#^u39SceLuL`uA|h;)u{Ol$~F+ zD9N3Cec36hY5SI3Qa=WSa)JL@_>|k$cjRtQn>`Akc}-1CSM*3My#S`0^J>wPZfl^Q1#v)+2UH6*rNKny zYP7tvdcBpE)uvkW=I6Twe(b$`UBkn}9thHUagQWTHn_bk(T%tNCh8<8)gstqR#v6A zHOnkDu(@0<8IVJ6=Zz7#)$3EZE=>Il-i&3Oi)9>lD4ufjH(qL%Kz_ zOFM;4VTZgd#dSUptA~Y!g_bTtu2v)4iv*e;EaZPUEgfc^13A*G1-3j!G>17|u4_1{ zaWbri<~AXE81YGnZYQrFu-=Vy7}5Lmu+~v!eodT4s9iJ7y284oL#3%uSn>P}otmhg z6)A@l5fIkfJVV$tvk&h$AiEb3LUzGfUS2Tb2~tE`^?dDxG`{|vxpO3>fP92H~fRyr!s9<Hqap>kz|vZBHbuCSp= zG*d==pwU1vvyL8&aLdT4xn|zMa0geSr?L^M&9c_SeDIJA-V`{aUbkTO8k@l_V*{LN zhM;%(v4gLbJ`(`tgTNJe)a`^)yyp0iqL&~}yjrf9v33V;Gk2K0c5H+6{}RVDv8bx< zxwArA>1akf)Uv=;+ZSD+K&SSte;-1W@osU3o7}`@9&8T4nL*B#Z4aF*Ps4KqRX`}l zNaO_lZD8~z0w*|A?g7SZ`;Crf;Cp8t7TVekAMD^;>y*h zUzWTTd@x&HWVvFz$U74ixoC&?nk$|~iE+%;9j;GB5$KKYnlvJlU63L;6P0q2ta(bIy{_!P}@3A%m0}6BSgne3R|_3E@5tjaTQfx`RA|%AcA${-;zyYXz!=U~TqP zKt-!QzrTX21(n2*ZV207_3e?(C$kMSuL)r)i}xR(UJE43-7+_}2dROown_&1v?O+jb@;ljgk7rKRxnd6Q>>?|)tnJ+x*W`) ztzQuki=dJA;oYs@=-bQDiCggf71HeN>*3v#My{5W+|Rf~_LgkmHyR6ra)zVno;=IGohUc<=)mg~WmGC@S~^ ze+)Z~1&%oDru5&RbO-7$Oc7y~SY#xVW-8rsk23q8sS}oi=!=z4GnJrrUh3O5J9F@G zb|8p?Spjr#8WYH|mCWrePifM)dEOL6=W9KG*rIZjqUG`a)YXcGe3sV8ITL+w5)e(t zfsx#h(TO^Up6m7JplX93_WYYzl(}p{z5qX%F9PeCT(suUBbWw5d*cWPD%HnYgNj|U z`gBPn2e!5=LX+)u_z#8yEVpp%|8lpv*6S5X%>H6Wg^2xLT4>#7dhXbM`-2 zzGKKm^>9491e#9_&xTyX?lhp{EE=KxR6woQpqIuWpky^ydd)Q`(~iB z#iSoX2Ey2sL!eFN9(iF-4y4_{v%bvU(kt1C2qI*MXO-cL`&VT*Q9(zp1CEL*I+%^%4J3()m1k z2q4Vs4XgjRSQKEt@P|pH|E)gFh}3UEUV_29%QIV1WG{qNItpr8ey!w*DEKL?Lid_Ejt1@``XvsJ1#FiS=maM<2~ zywYpE)Gr;T5zVsJ^EVhrlhI<*jtu`)mcZ3i2}A;CUDWOm-InbmfC^Yc1JWlL-|Tjt z(kAiXQMYTCfp3PWJw=FCq0*k!0h}BO*nZUVl(u)wnInjP1*f5YLqnk!z8P$~kX%Ed z+K$?z5HR2n;_lR&W64g?{_e&6#zpUn@ z`K`r9-UA-Zf!w2@>8)^Z$a&)m*|sI^4=W769P7o-Pz(O|j%()*jQYp*>MLZOzWxd@ z+T9xd%JtCu(hsWn2-IlpO+MPZy=4@z_t}&hH zE_7w45GIyB!P8`W%#;0B_