From 38a03409bddb76da6c3abdc95e9eda364932ca30 Mon Sep 17 00:00:00 2001 From: Katherine Fleming <2205659+kflemin@users.noreply.github.com> Date: Mon, 15 Jun 2026 15:25:45 -0600 Subject: [PATCH 1/7] updates to get des/reopt_lcca working and changes to when default post-processor is run --- README.md | 2 +- example_files/reopt_ghp/ghp_assumptions.json | 8 +- lib/uo_cli.rb | 82 +++++++++++-- .../system_parameter_ghe_2feature.json | 24 ++-- spec/uo_cli_spec.rb | 111 ++++++++++++------ uo_cli.gemspec | 2 +- 6 files changed, 164 insertions(+), 65 deletions(-) diff --git a/README.md b/README.md index a4efa956a..c6de402f3 100644 --- a/README.md +++ b/README.md @@ -200,7 +200,7 @@ Python dependencies are currently versioned as follows: To install this gem onto your local machine, clone this repo and run `bundle exec rake install`. If you make changes to this repo, update the version number in `lib/version.rb` in your first commit. When ready to release, [follow the documentation](https://docs.urbanopt.net/developer_resources/release_instructions.html). -## Python Dependency Refactor - uv +## Python Dependency Refactor - uv Starting with version 1.3.0, there has been a major python dependency refactor. The CLI now uses `example_files/python_deps/pyproject.toml` as the source of truth for Python tool dependencies and uv for python package management. diff --git a/example_files/reopt_ghp/ghp_assumptions.json b/example_files/reopt_ghp/ghp_assumptions.json index 1f5a8e317..9f023bba3 100644 --- a/example_files/reopt_ghp/ghp_assumptions.json +++ b/example_files/reopt_ghp/ghp_assumptions.json @@ -5,19 +5,19 @@ }, "SpaceHeatingLoad": { }, - "DomesticHotWaterLoad": { + "DomesticHotWaterLoad": { }, - "ElectricLoad": { + "ElectricLoad": { }, "ElectricTariff": { - "urdb_label": "594976725457a37b1175d089" + "urdb_label": "594976725457a37b1175d089" }, "GHP":{ "installed_cost_heatpump_per_ton": 1904, "installed_cost_ghx_per_ft": 17, "installed_cost_building_hydronic_loop_per_sqft": 0, "om_cost_per_sqft_year": 0, - "macrs_bonus_fraction": 0.6, + "macrs_bonus_fraction": 0.6, "macrs_itc_reduction": 0.5, "federal_itc_fraction": 0.3 }, diff --git a/lib/uo_cli.rb b/lib/uo_cli.rb index e2c975e1e..65b740bab 100755 --- a/lib/uo_cli.rb +++ b/lib/uo_cli.rb @@ -9,6 +9,7 @@ require 'optimist' require 'urbanopt/geojson' require 'urbanopt/scenario' +require 'urbanopt/reporting/default_reports' require 'urbanopt/reopt' require 'urbanopt/reopt_scenario' require 'urbanopt/rnm' @@ -38,6 +39,7 @@ class UrbanOptCLI 'des_params' => 'Make a DES system parameters config file', 'des_create' => 'Create a Modelica model', 'des_run' => 'Run a Modelica DES model', + 'des_process' => 'Post-process a Modelica DES model', 'ghe_size' => 'Run a Ground Heat Exchanger model for sizing', 'usg_preprocess' => 'Generate Urban Systems Generator input CSV from GeoJSON feature file', 'usg_complete' => 'Fill in missing fields in Urban Systems Generator CSV file using USG model', @@ -1608,23 +1610,79 @@ def self.install_python_dependencies process_filename = File.join(@root_dir, 'run', @scenario_name.downcase, 'process_status.json') FileUtils.rm_rf(process_filename) if File.exist?(process_filename) results = [] + run_dir = File.join(@root_dir, 'run', @scenario_name.downcase) + default_report_json = File.join(run_dir, 'default_scenario_report.json') + default_report_csv = File.join(run_dir, 'default_scenario_report.csv') + default_post_processor = nil + scenario_report = nil + + load_default_scenario_report = lambda do + report_hash = JSON.parse(File.read(default_report_json), symbolize_names: true) + scenario_report_hash = report_hash[:scenario_report] + raise "Could not find :scenario_report in #{default_report_json}" if scenario_report_hash.nil? + + scenario_report_hash[:directory_name] = run_dir + scenario_report_hash[:timeseries_csv] ||= {} + scenario_report_path = scenario_report_hash[:timeseries_csv][:path] + if scenario_report_path.nil? || !File.exist?(scenario_report_path) + scenario_report_hash[:timeseries_csv][:path] = default_report_csv + end + + loaded_report = URBANopt::Reporting::DefaultReports::ScenarioReport.new(scenario_report_hash) + feature_reports = report_hash[:feature_reports] || [] + loaded_report.feature_reports = feature_reports.map do |feature_hash| + feature_hash[:timeseries_csv] ||= {} + feature_report_path = feature_hash[:timeseries_csv][:path] + if feature_report_path.nil? || !File.exist?(feature_report_path) + feature_report_dir = feature_hash[:directory_name] + if feature_report_dir && !feature_report_dir.empty? + candidate_path = File.join(feature_report_dir, 'default_feature_report.csv') + feature_hash[:timeseries_csv][:path] = candidate_path if File.exist?(candidate_path) + end + end + URBANopt::Reporting::DefaultReports::FeatureReport.new(feature_hash) + end + loaded_report + end - default_post_processor = URBANopt::Scenario::ScenarioDefaultPostProcessor.new(run_func) - scenario_report = default_post_processor.run - scenario_report.save(file_name = 'default_scenario_report', save_feature_reports: false) - scenario_report.feature_reports.each(&:save) + ensure_default_context = lambda do + default_post_processor ||= URBANopt::Scenario::ScenarioDefaultPostProcessor.new(run_func) - run_dir = File.join(@root_dir, 'run', @scenario_name.downcase) + if File.exist?(default_report_json) && File.exist?(default_report_csv) + puts "\nDefault post-process outputs already exist for '#{@scenario_name}'. Skipping default re-run." + begin + scenario_report = load_default_scenario_report.call + puts 'Loaded existing default post-process outputs.' + next + rescue StandardError => e + puts "Could not load existing default outputs (#{e.message}). Re-running default post-process." + end + else + puts "\nDefault post-process outputs not found for '#{@scenario_name}'. Running default post-process first." + end - if @opthash.subopts[:with_database] == true - default_post_processor.create_scenario_db_file + scenario_report = default_post_processor.run + scenario_report.save(file_name = 'default_scenario_report', save_feature_reports: false) + scenario_report.feature_reports.each(&:save) + puts 'Default post-process complete.' end if @opthash.subopts[:default] == true + # only run the default post processor if explicitly specified + default_post_processor ||= URBANopt::Scenario::ScenarioDefaultPostProcessor.new(run_func) + scenario_report = default_post_processor.run + scenario_report.save(file_name = 'default_scenario_report', save_feature_reports: false) + scenario_report.feature_reports.each(&:save) + + if @opthash.subopts[:with_database] == true + default_post_processor.create_scenario_db_file + end + puts "\nDone\n" results << { process_type: 'default', status: 'Complete', timestamp: Time.now.strftime('%Y-%m-%dT%k:%M:%S.%L') } elsif @opthash.subopts[:opendss] == true puts "\nPost-processing OpenDSS results\n" + ensure_default_context.call opendss_folder = File.join(@root_dir, 'run', @scenario_name.downcase, 'opendss') if File.directory?(opendss_folder) opendss_folder_name = File.basename(opendss_folder) @@ -1643,6 +1701,7 @@ def self.install_python_dependencies abort("\nDISCO post-processing is not available in this version due to a temporary dependency issue. It will be restored in the next version.\n") elsif (@opthash.subopts[:reopt_scenario] == true) || (@opthash.subopts[:reopt_feature] == true) || (@opthash.subopts[:reopt_backup_power] == true) # --- REOPT Scenarios --- + ensure_default_context.call # Configure ERP Assumptions if @opthash.subopts[:reopt_backup_power] == true @@ -1911,11 +1970,10 @@ def self.install_python_dependencies system_parameter, modelica_model, reopt_ghp_assumptions, - DEVELOPER_API_KEY, - false + DEVELOPER_API_KEY ) - reopt_ghp_post_processor.run_reopt_lcca(run_dir) + reopt_ghp_post_processor.run_reopt_lcca() results << { process_type: 'reopt_ghp', status: 'Complete', timestamp: Time.now.strftime('%Y-%m-%dT%k:%M:%S.%L') } puts "\nDone\n" @@ -2195,11 +2253,11 @@ def self.install_python_dependencies # check that uv is available require_uv - des_cli_addition = 'process-model' + des_cli_addition = 'des-process' if @opthash.subopts[:model] des_cli_addition += " #{@opthash.subopts[:model]}" else - abort("\nCommand must include Modelica model name. Please try again") + abort("\nCommand must include Modelica model dir name. Please try again") end begin run_uv_tool('urbanopt-des', "uo_des #{des_cli_addition}") diff --git a/spec/spec_files/reopt_ghp/system_parameter_ghe_2feature.json b/spec/spec_files/reopt_ghp/system_parameter_ghe_2feature.json index 6c3867323..241f8195b 100644 --- a/spec/spec_files/reopt_ghp/system_parameter_ghe_2feature.json +++ b/spec/spec_files/reopt_ghp/system_parameter_ghe_2feature.json @@ -134,18 +134,24 @@ "max_eft": 35.0, "min_eft": 5.0 }, - "ghe_specific_params": [ + "borehole": { + "buried_depth": 2.0, + "diameter": 0.15, + "length_of_boreholes": 1.0, + "number_of_boreholes": 5 + }, + "borefields": [ { "ghe_id": "7932a208-dcb6-4d23-a46f-288896eaa1bc", - "ghe_geometric_params": { + "autosized_rectangle_borefield": { + "b_min": 3.0, + "b_max": 10.0, + "max_height": 135.0, + "min_height": 60.0, "length_of_ghe": 113.46543484483091, - "width_of_ghe": 99.03456515516909 - }, - "borehole": { - "buried_depth": 2.0, - "diameter": 0.15, - "length_of_boreholes": 1.0, - "number_of_boreholes": 5 + "width_of_ghe": 99.03456515516909, + "borehole_length": 126.31250305283308, + "number_of_boreholes": 78 } } ] diff --git a/spec/uo_cli_spec.rb b/spec/uo_cli_spec.rb index a3b2d452b..4e897f74b 100644 --- a/spec/uo_cli_spec.rb +++ b/spec/uo_cli_spec.rb @@ -19,6 +19,7 @@ test_directory_pv = spec_dir / 'test_directory_pv' test_directory_reopt = spec_dir / 'test_directory_reopt' test_directory_ghe = spec_dir / 'test_directory_ghe' + test_directory_ghp = spec_dir / 'test_directory_ghp' test_scenario = test_directory / 'two_building_scenario.csv' test_scenario_res = test_directory_res / 'two_building_res.csv' test_scenario_res_hpxml = test_directory_res_hpxml / 'two_building_res_hpxml.csv' @@ -481,7 +482,6 @@ def select_measures(test_dir, measure_name_list, workflow = 'base_workflow.osw', it 'runs a ghe project', :ghe do FileUtils.cp(spec_dir / 'spec_files' / 'reopt_ghp' / 'baseline_scenario_ghe.csv', test_scenario_ghe) expect((test_scenario_ghe).exist?).to be true - puts "copied #{test_scenario_ghe}" system("#{call_cli} run --scenario #{test_scenario_ghe} --feature #{test_feature_ghe}") expect((test_directory_ghe / 'run' / 'baseline_scenario_ghe' / '4' / 'finished.job').exist?).to be true expect((test_directory_ghe / 'run' / 'baseline_scenario_ghe' / '5' / 'finished.job').exist?).to be true @@ -508,7 +508,7 @@ def select_measures(test_dir, measure_name_list, workflow = 'base_workflow.osw', expect((test_directory_ghe / 'run' / 'baseline_scenario_ghe' / 'ghe_dir').exist?).to be true end - it 'successfully calls the Thermal Network repository for GHE Sizing', :ghe do + it 'successfully calls the Thermal Network package for GHE Sizing', :ghe do system("#{call_cli} ghe_size --sys-param #{ghe_system_parameters_file} --scenario #{test_scenario_ghe} --feature #{test_feature_ghe}") expect((test_directory_ghe / 'run' / 'baseline_scenario_ghe' / 'ghe_dir').exist?).to be true expect((test_directory_ghe / 'run' / 'baseline_scenario_ghe' / 'ghe_dir').empty?).to be false @@ -529,52 +529,63 @@ def select_measures(test_dir, measure_name_list, workflow = 'base_workflow.osw', system("#{call_cli} des_run --model #{test_directory_ghe / 'modelica_ghe'}") expect((test_directory_ghe / 'modelica_ghe' / 'modelica_ghe.Districts.DistrictEnergySystem_results' / 'modelica_ghe.Districts.DistrictEnergySystem_res.mat').exist?).to be true end + + it 'post processes a Modelica simulation with the GMT for REopt LCCA analysis', :ghe do + system("#{call_cli} des_process --model #{test_directory_ghe / 'modelica_ghe'}") + expect((test_directory_ghe / 'modelica_ghe' / 'modelica_ghe.Districts.DistrictEnergySystem_results' / 'modelica_ghe.Districts.DistrictEnergySystem_results.csv').exist?).to be true + end end - context 'Run REopt LCCA analysis for a GHE network' do + context 'Run and work with a small REopt LCCA GHP simulation' do + before :all do + # make test directory and copy necessary files + delete_directory_or_file(test_directory_ghp) + system("mkdir #{test_directory_ghp}") + # copy the contents of reopt_ghp into test_directory_ghp (but not the reopt_ghp directory itself) + src_dir = spec_dir / 'spec_files' / 'reopt_ghp' + Dir.glob('*', base: src_dir.to_s).each do |item| + FileUtils.cp_r(File.join(src_dir.to_s, item), test_directory_ghp.to_s) + end + end it 'can run a REopt LCCA analysis' do - reopt_dir = File.join(spec_dir, 'reopt_ghp') - system_parameter = File.join(reopt_dir, 'system_parameter_ghe_2feature.json') - modelica_model = File.join(reopt_dir, 'modelica_4') - feature_file = File.join(reopt_dir, 'example_project_with_ghe_2features.json') - scenario_file = File.join(reopt_dir, 'baseline_scenario_ghe.csv') - puts system_parameter - puts modelica_model - FileUtils.cp_r(spec_dir / 'spec_files' / 'reopt_ghp', spec_dir) - + # In a real UO run, this analysis can run on a GHP-enabled project after a full GMT workflow. We need ghe_size to add the borefields to the + # sys params file, and we also need the modelica results that get created after des_process for this + # functionality to work. This test assumes that the workflow was run accordingly. Technically I don't think the project has to + # be "reopt-enabled" prior to running the command + system_parameter = File.join(test_directory_ghp, 'system_parameter_ghe_2feature.json') + modelica_model = File.join(test_directory_ghp, 'modelica_4') + feature_file = File.join(test_directory_ghp, 'example_project_with_ghe_2features.json') + scenario_file = File.join(test_directory_ghp, 'baseline_scenario_ghe.csv') + system("#{call_cli} process --reopt-ghp --system-parameter #{system_parameter} --modelica-model #{modelica_model} --scenario #{scenario_file} --feature #{feature_file}") - reopt_inputs = File.join(reopt_dir,'run', 'baseline_scenario_ghe', 'reopt_ghp','reopt_ghp_inputs') + reopt_inputs = File.join(test_directory_ghp,'run', 'baseline_scenario_ghe', 'reopt_ghp','reopt_ghp_inputs') expect(Dir.exist?(reopt_inputs)).to be true - reopt_outputs = File.join(reopt_dir,'run', 'baseline_scenario_ghe', 'reopt_ghp','reopt_ghp_outputs') - expect(Dir.exist?(reopt_inputs)).to be true - expect(Dir.empty?(reopt_inputs)).to be false + reopt_outputs = File.join(test_directory_ghp,'run', 'baseline_scenario_ghe', 'reopt_ghp','reopt_ghp_outputs') + expect(Dir.exist?(reopt_outputs)).to be true + expect(Dir.empty?(reopt_outputs)).to be false # TODO : Uncomment after GHX outputs are resolved - Dir.foreach(reopt_ghp_output) do |file| - next if file == '.' || file == '..' # Skip current and parent directory references - file_path = File.join(reopt_ghp_output, file) - - if File.file?(file_path) - File.open(file_path, 'r') do |f| - file_data = JSON.parse(f.read, symbolize_names: true) - expect(file_data[:outputs][:Financial][:npv]).to_not be_nil - expect(file_data[:outputs][:Financial][:lcc]).to_not be_nil - expect(file_data[:messages][:errors]).to be_nil.or be_empty - end + Dir.foreach(reopt_outputs) do |file| + next if file == '.' || file == '..' # Skip current and parent directory references + file_path = File.join(reopt_outputs, file) + + if File.file?(file_path) + File.open(file_path, 'r') do |f| + file_data = JSON.parse(f.read, symbolize_names: true) + expect(file_data[:outputs][:Financial][:npv]).to_not be_nil + expect(file_data[:outputs][:Financial][:lcc]).to_not be_nil + expect(file_data[:messages][:errors]).to be_nil.or be_empty end + end end output_building_5 = File.join(reopt_outputs, 'GHP_building_5_output.json') output_building_5_data = nil File.open(output_building_5, 'r') do |f| - output_building_5_data = JSON.parse(f.read, symbolize_names: true) - expect(output_building_5_data[:outputs][:Financial][:npv]).to_not be_nil - expect(output_building_5_data[:outputs][:Financial][:lcc]).to_not be_nil - expect(output_building_5_data[:messages][:errors]).to be_nil.or be_empty + output_building_5_data = JSON.parse(f.read, symbolize_names: true) + expect(output_building_5_data[:outputs][:Financial][:npv]).to_not be_nil + expect(output_building_5_data[:outputs][:Financial][:lcc]).to_not be_nil + expect(output_building_5_data[:messages][:errors]).to be_nil.or be_empty end - - - - end end @@ -807,6 +818,10 @@ def select_measures(test_dir, measure_name_list, workflow = 'base_workflow.osw', it 'reopt post-processes a scenario and visualize', :electric do # This test requires the 'runs a PV scenario when called with reopt' be run first + system("cp #{spec_dir / 'spec_files' / 'REopt_scenario.csv'} #{test_scenario_reopt}") unless test_scenario_reopt.exist? + system("cp -R #{spec_dir / 'spec_files' / 'reopt'} #{test_directory_pv / 'reopt'}") unless (test_directory_pv / 'reopt' / 'base_assumptions.json').exist? + system("#{call_cli} run --scenario #{test_scenario_reopt} --feature #{test_feature_pv}") unless (test_directory_pv / 'run' / 'reopt_scenario' / '5' / 'finished.job').exist? + system("#{call_cli} process --default --scenario #{test_scenario_reopt} --feature #{test_feature_pv}") system("#{call_cli} process --reopt-scenario --scenario #{test_scenario_reopt} --feature #{test_feature_pv}") expect((test_directory_pv / 'run' / 'reopt_scenario' / 'scenario_optimization.json').exist?).to be true expect((test_directory_pv / 'run' / 'reopt_scenario' / 'process_status.json').exist?).to be true @@ -817,6 +832,10 @@ def select_measures(test_dir, measure_name_list, workflow = 'base_workflow.osw', it 'reopt post-processes an ERP scenario', :electric do # This test requires the 'runs a PV scenario with ERP when called with reopt' be run first + system("cp #{spec_dir / 'spec_files' / 'REopt_scenario_ERP.csv'} #{test_scenario_reopt_erp}") unless test_scenario_reopt_erp.exist? + system("cp -R #{spec_dir / 'spec_files' / 'reopt'} #{test_directory_pv / 'reopt'}") unless (test_directory_pv / 'reopt' / 'base_assumptions.json').exist? + system("#{call_cli} run --scenario #{test_scenario_reopt_erp} --feature #{test_feature_pv}") unless (test_directory_pv / 'run' / 'reopt_scenario_erp' / '5' / 'finished.job').exist? + system("#{call_cli} process --default --scenario #{test_scenario_reopt_erp} --feature #{test_feature_pv}") system("#{call_cli} process --reopt-scenario --scenario #{test_scenario_reopt_erp} --feature #{test_feature_pv}") expect((test_directory_pv / 'run' / 'reopt_scenario_erp' / 'scenario_optimization.json').exist?).to be true expect((test_directory_pv / 'run' / 'reopt_scenario_erp' / 'process_status.json').exist?).to be true @@ -828,15 +847,21 @@ def select_measures(test_dir, measure_name_list, workflow = 'base_workflow.osw', it 'reopt post-processes a scenario with specified scenario assumptions file', :electric do # This test requires the 'runs a PV scenario when called with reopt' be run first - expect { system("#{call_cli} process --reopt-scenario -a #{test_reopt_scenario_assumptions_file} --scenario #{test_scenario_reopt} --feature #{test_feature_pv}") } - .to output(a_string_including('multiPV_assumptions.json')) - .to_stdout_from_any_process + system("cp #{spec_dir / 'spec_files' / 'REopt_scenario.csv'} #{test_scenario_reopt}") unless test_scenario_reopt.exist? + system("cp -R #{spec_dir / 'spec_files' / 'reopt'} #{test_directory_pv / 'reopt'}") unless (test_directory_pv / 'reopt' / 'base_assumptions.json').exist? + system("#{call_cli} run --scenario #{test_scenario_reopt} --feature #{test_feature_pv}") unless (test_directory_pv / 'run' / 'reopt_scenario' / '5' / 'finished.job').exist? + system("#{call_cli} process --default --scenario #{test_scenario_reopt} --feature #{test_feature_pv}") + system("#{call_cli} process --reopt-scenario -a #{test_reopt_scenario_assumptions_file} --scenario #{test_scenario_reopt} --feature #{test_feature_pv}") expect((test_directory_pv / 'run' / 'reopt_scenario' / 'scenario_optimization.json').exist?).to be true expect((test_directory_pv / 'run' / 'reopt_scenario' / 'process_status.json').exist?).to be true end it 'reopt post-processes a scenario with erp reporting', :electric do # This test requires the 'runs a PV scenario when called with reopt erp' be run first + system("cp #{spec_dir / 'spec_files' / 'REopt_scenario_ERP.csv'} #{test_scenario_reopt_erp}") unless test_scenario_reopt_erp.exist? + system("cp -R #{spec_dir / 'spec_files' / 'reopt'} #{test_directory_pv / 'reopt'}") unless (test_directory_pv / 'reopt' / 'base_assumptions.json').exist? + system("#{call_cli} run --scenario #{test_scenario_reopt_erp} --feature #{test_feature_pv}") unless (test_directory_pv / 'run' / 'reopt_scenario_erp' / '5' / 'finished.job').exist? + system("#{call_cli} process --default --scenario #{test_scenario_reopt_erp} --feature #{test_feature_pv}") system("#{call_cli} process --reopt-scenario --reopt-backup-power --scenario #{test_scenario_reopt_erp} --feature #{test_feature_pv}") expect((test_directory_pv / 'run' / 'reopt_scenario_erp' / 'scenario_optimization.json').exist?).to be true expect((test_directory_pv / 'run' / 'reopt_scenario_erp' / 'process_status.json').exist?).to be true @@ -846,6 +871,10 @@ def select_measures(test_dir, measure_name_list, workflow = 'base_workflow.osw', it 'reopt post-processes a feature with erp reporting', :electric do # This test requires the 'runs a PV scenario when called with reopt erp' be run first + system("cp #{spec_dir / 'spec_files' / 'REopt_scenario_ERP.csv'} #{test_scenario_reopt_erp}") unless test_scenario_reopt_erp.exist? + system("cp -R #{spec_dir / 'spec_files' / 'reopt'} #{test_directory_pv / 'reopt'}") unless (test_directory_pv / 'reopt' / 'base_assumptions.json').exist? + system("#{call_cli} run --scenario #{test_scenario_reopt_erp} --feature #{test_feature_pv}") unless (test_directory_pv / 'run' / 'reopt_scenario_erp' / '5' / 'finished.job').exist? + system("#{call_cli} process --default --scenario #{test_scenario_reopt_erp} --feature #{test_feature_pv}") system("#{call_cli} process --reopt-feature --reopt-backup-power --scenario #{test_scenario_reopt_erp} --feature #{test_feature_pv}") expect((test_directory_pv / 'run' / 'reopt_scenario_erp' / 'feature_optimization.json').exist?).to be true expect((test_directory_pv / 'run' / 'reopt_scenario_erp' / 'process_status.json').exist?).to be true @@ -855,6 +884,10 @@ def select_measures(test_dir, measure_name_list, workflow = 'base_workflow.osw', it 'reopt post-processes each feature and visualize', :electric do # This test requires the 'runs a PV scenario when called with reopt' be run first + system("cp #{spec_dir / 'spec_files' / 'REopt_scenario.csv'} #{test_scenario_reopt}") unless test_scenario_reopt.exist? + system("cp -R #{spec_dir / 'spec_files' / 'reopt'} #{test_directory_pv / 'reopt'}") unless (test_directory_pv / 'reopt' / 'base_assumptions.json').exist? + system("#{call_cli} run --scenario #{test_scenario_reopt} --feature #{test_feature_pv}") unless (test_directory_pv / 'run' / 'reopt_scenario' / '5' / 'finished.job').exist? + system("#{call_cli} process --default --scenario #{test_scenario_reopt} --feature #{test_feature_pv}") system("#{call_cli} process --reopt-feature --scenario #{test_scenario_reopt} --feature #{test_feature_pv}") expect((test_directory_pv / 'run' / 'reopt_scenario' / 'feature_optimization.csv').exist?).to be true # and visualize @@ -864,6 +897,7 @@ def select_measures(test_dir, measure_name_list, workflow = 'base_workflow.osw', it 'reopt post-processes a scenario with capital costs', :electric do # This test requires the 'runs a PV scenario when called with reopt' be run first + system("cp #{spec_dir / 'spec_files' / 'REopt_scenario.csv'} #{test_scenario_reopt_cost}") unless test_scenario_reopt_cost.exist? system("#{call_cli} create --scenario-file #{test_feature_pv}") expect((test_directory_pv / 'baseline_scenario.csv').exist?).to be true system("#{call_cli} create --reopt-scenario-cost-file #{test_directory_pv / 'baseline_scenario.csv'}") @@ -907,6 +941,7 @@ def select_measures(test_dir, measure_name_list, workflow = 'base_workflow.osw', it 'opendss post-processes a scenario', :electric do # This test requires the 'successfully gets results from the opendss cli' be run first expect((test_directory_elec / 'run' / 'electrical_scenario' / '2' / 'feature_reports' / 'default_feature_report_opendss.csv').exist?).to be false + system("#{call_cli} process --default --scenario #{test_scenario_elec} --feature #{test_feature_elec}") system("#{call_cli} process --opendss --scenario #{test_scenario_elec} --feature #{test_feature_elec}") expect((test_directory_elec / 'run' / 'electrical_scenario' / '2' / 'feature_reports' / 'default_feature_report_opendss.csv').exist?).to be true expect((test_directory_elec / 'run' / 'electrical_scenario' / 'process_status.json').exist?).to be true diff --git a/uo_cli.gemspec b/uo_cli.gemspec index f9cf0703f..4dcc72869 100644 --- a/uo_cli.gemspec +++ b/uo_cli.gemspec @@ -35,7 +35,7 @@ Gem::Specification.new do |spec| # use specific versions of urbanopt and openstudio dependencies while under heavy development spec.add_runtime_dependency 'optimist', '~> 3.2' spec.add_runtime_dependency 'urbanopt-geojson', '~> 1.2.0' - spec.add_runtime_dependency 'urbanopt-reopt', '~> 1.2.0' + spec.add_runtime_dependency 'urbanopt-reopt', '~> 1.3.1' spec.add_runtime_dependency 'urbanopt-reporting', '~> 1.2.0' spec.add_runtime_dependency 'urbanopt-rnm-us', '~> 1.2.0' spec.add_runtime_dependency 'urbanopt-scenario', '~> 1.2.0' From 777f8bd7ee0fc87975e0742ae33bd9e593aa4d33 Mon Sep 17 00:00:00 2001 From: Katherine Fleming <2205659+kflemin@users.noreply.github.com> Date: Wed, 17 Jun 2026 22:53:00 -0600 Subject: [PATCH 2/7] updates to make reloading scenario report work --- .gitignore | 1 + lib/uo_cli.rb | 160 ++++++++++++++++++++++++++++++++++++-------- spec/uo_cli_spec.rb | 8 ++- 3 files changed, 139 insertions(+), 30 deletions(-) diff --git a/.gitignore b/.gitignore index 85cfc2815..f5f4ff649 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,4 @@ example_files/python_deps/python-3.10 *.venv reopt_project +urbanopt-cli.code-workspace \ No newline at end of file diff --git a/lib/uo_cli.rb b/lib/uo_cli.rb index 65b740bab..571b3dabd 100755 --- a/lib/uo_cli.rb +++ b/lib/uo_cli.rb @@ -1616,32 +1616,91 @@ def self.install_python_dependencies default_post_processor = nil scenario_report = nil + # New function to reload the default report from file, ensuring that the feature report paths are correct. + # This is needed in case the default post process was run in a previous execution and we are now trying to run an additional + # post process type that also needs access to the default scenario report. + load_default_scenario_report = lambda do report_hash = JSON.parse(File.read(default_report_json), symbolize_names: true) + raise "Malformed report JSON in #{default_report_json}: expected Hash" unless report_hash.is_a?(Hash) + + csv_header_for = lambda do |csv_path| + return nil if csv_path.nil? + return nil unless File.exist?(csv_path) + + header = CSV.open(csv_path, 'r', &:readline) + return nil unless header.is_a?(Array) + + header + rescue StandardError + nil + end + scenario_report_hash = report_hash[:scenario_report] raise "Could not find :scenario_report in #{default_report_json}" if scenario_report_hash.nil? + raise "Malformed :scenario_report in #{default_report_json}: expected Hash" unless scenario_report_hash.is_a?(Hash) + + resolve_saved_csv_path = lambda do |saved_path, base_dir| + return nil if saved_path.nil? + + raw_path = saved_path.to_s.strip + return nil if raw_path.empty? + + # Keep truly absolute, existing paths. Some historical reports stored + # project-relative paths with a leading '/', so those are normalized below. + return raw_path if Pathname.new(raw_path).absolute? && File.exist?(raw_path) + + relative_path = raw_path.sub(%r{\A/+}, '') + File.join(base_dir, relative_path) + end scenario_report_hash[:directory_name] = run_dir scenario_report_hash[:timeseries_csv] ||= {} scenario_report_path = scenario_report_hash[:timeseries_csv][:path] - if scenario_report_path.nil? || !File.exist?(scenario_report_path) + scenario_report_hash[:timeseries_csv][:path] = resolve_saved_csv_path.call(scenario_report_path, run_dir) + if scenario_report_hash[:timeseries_csv][:path].nil? scenario_report_hash[:timeseries_csv][:path] = default_report_csv end - loaded_report = URBANopt::Reporting::DefaultReports::ScenarioReport.new(scenario_report_hash) + scenario_header = csv_header_for.call(scenario_report_hash[:timeseries_csv][:path]) + if scenario_header && !scenario_header.empty? + scenario_report_hash[:timeseries_csv][:column_names] = scenario_header + end + feature_reports = report_hash[:feature_reports] || [] - loaded_report.feature_reports = feature_reports.map do |feature_hash| - feature_hash[:timeseries_csv] ||= {} - feature_report_path = feature_hash[:timeseries_csv][:path] - if feature_report_path.nil? || !File.exist?(feature_report_path) - feature_report_dir = feature_hash[:directory_name] - if feature_report_dir && !feature_report_dir.empty? - candidate_path = File.join(feature_report_dir, 'default_feature_report.csv') - feature_hash[:timeseries_csv][:path] = candidate_path if File.exist?(candidate_path) - end + raise "Malformed :feature_reports in #{default_report_json}: expected Array" unless feature_reports.is_a?(Array) + + feature_reports.each do |feature_hash| + raise 'Malformed feature report entry: expected Hash' unless feature_hash.is_a?(Hash) + + feature_hash[:directory_name] = File.join(run_dir, feature_hash[:id].to_s) + if feature_hash[:timeseries_csv].nil? || !feature_hash[:timeseries_csv].is_a?(Hash) + raise "Malformed feature report for id=#{feature_hash[:id]}: missing or invalid :timeseries_csv" end - URBANopt::Reporting::DefaultReports::FeatureReport.new(feature_hash) + + feature_csv_path = feature_hash[:timeseries_csv][:path] + feature_hash[:timeseries_csv][:path] = resolve_saved_csv_path.call(feature_csv_path, feature_hash[:directory_name]) + if feature_hash[:timeseries_csv][:path].nil? + raise "Malformed feature report for id=#{feature_hash[:id]}: missing :timeseries_csv[:path]" + end + + feature_header = csv_header_for.call(feature_hash[:timeseries_csv][:path]) + if feature_header && !feature_header.empty? + feature_hash[:timeseries_csv][:column_names] = feature_header + end + end + # now add the features array back to report hash + scenario_report_hash[:feature_reports] = feature_reports + + loaded_report = URBANopt::Reporting::DefaultReports::ScenarioReport.new(scenario_report_hash) + + # TimeseriesCSV initializer filters columns against scenario-level schema. + # Rehydrate from CSV headers to preserve feature-specific columns required by REopt feature processing. + loaded_report.feature_reports.each do |feature_report| + feature_header = csv_header_for.call(feature_report.timeseries_csv.path) + feature_report.timeseries_csv.column_names = feature_header if feature_header && !feature_header.empty? end + loaded_report end @@ -1709,12 +1768,12 @@ def self.install_python_dependencies # This file ensures outage duration is provided for running back up power analysis. Outage duration corresponds to multi pv assumption outage hours. if @opthash.subopts[:reopt_erp_assumptions_file] erp_assumptions_file = File.expand_path(@opthash.subopts[:reopt_erp_assumptions_file]).to_s - puts "\nUsing ERP assumptions file: #{erp_assumptions_file}\n" + puts "\nUsing ERP assumptions file for backup power analysis: #{erp_assumptions_file}\n" else # use default, read from the REopt folder in the URBANopt project reopt_folder = File.join(@root_dir, 'reopt') erp_assumptions_file = File.join(reopt_folder, 'erp_assumptions.json') - puts "\nUsing default ERP assumptions file: #{erp_assumptions_file}\n" + puts "\nUsing default ERP assumptions file for backup power analysis: #{erp_assumptions_file}\n" end else erp_assumptions_file = nil @@ -1723,6 +1782,28 @@ def self.install_python_dependencies # Configure Reopt General Assumptions scenario_base = default_post_processor.scenario_base + reopt_feature_assumptions = scenario_base.reopt_feature_assumptions + if reopt_feature_assumptions.nil? || reopt_feature_assumptions.empty? + scenario_rows = CSV.read(File.expand_path(@opthash.subopts[:scenario]), headers: true, col_sep: ',') + if scenario_rows.headers.include?('REopt Assumptions') + reopt_folder = File.join(@root_dir, 'reopt') + reopt_feature_assumptions = scenario_rows['REopt Assumptions'].map do |assumption_name| + next nil if assumption_name.nil? + + clean_name = assumption_name.to_s.strip + next nil if clean_name.empty? + + File.expand_path(clean_name, reopt_folder) + end + puts "Recovered feature-level REopt assumptions from Scenario CSV (#{reopt_feature_assumptions.compact.size} entries)." + end + end + + + if reopt_feature_assumptions.nil? || reopt_feature_assumptions.empty? + raise 'Could not determine feature-level REopt assumptions; ensure the Scenario CSV contains a REopt Assumptions column.' + end + # see if reopt-scenario-assumptions-file was passed in, otherwise use the default scenario_assumptions = scenario_base.scenario_reopt_assumptions_file puts "Using default scenario assumptions file: #{scenario_assumptions}\n" @@ -1743,6 +1824,20 @@ def self.install_python_dependencies end # retrieve assumptions hash for modifications assumptions_hash = JSON.parse(File.read(File.expand_path(scenario_assumptions)), symbolize_names: true) + + # # Defensively initialize all expected nested structures that gems might append to + # assumptions_hash[:PV] = Array(assumptions_hash[:PV]) if assumptions_hash[:PV].nil? + # assumptions_hash[:Battery] ||= {} + # assumptions_hash[:ElectricStorage] ||= {} + # assumptions_hash[:Generator] ||= {} + # assumptions_hash[:CHP] ||= {} + # assumptions_hash[:GHP] ||= {} + # assumptions_hash[:Wind] ||= {} + # assumptions_hash[:Boiler] ||= {} + # assumptions_hash[:ExistingBoiler] ||= {} + # assumptions_hash[:SpaceHeatingLoad] ||= {} + # assumptions_hash[:SpaceHeatingLoad][:fuel_loads_mmbtu_per_hour] ||= [] + # Configure Capital Costs Processing (retrieve from scenario CSV if they exist) scenario_file = CSV.read(File.expand_path(@opthash.subopts[:scenario]), headers: true, header_converters: :symbol) @@ -1783,6 +1878,8 @@ def self.install_python_dependencies puts "\nWARNING: Both 'Total Capital Costs ($)' and 'Capital Cost Per Floor Area ($/sq.ft.)' have no data. Update these values in the scenario file with realistic capital costs and rerun REopt optimization.\n" total_sum = 0 end + # Ensure Wind key exists before setting properties + assumptions_hash[:Wind] ||= {} # set min_kw and max_kw to total_sum to capture capital cost in REopt assumptions_hash[:Wind][:min_kw] = total_sum assumptions_hash[:Wind][:max_kw] = total_sum @@ -1847,11 +1944,13 @@ def self.install_python_dependencies # Read every row if scenario_csv.headers.include?(column_name) - puts "\nINFO: Found '#{column_name}' column in default_scenario_report.csv. Adding space heating fuel load timeseries to REopt assumptions.\n" + # puts "\nINFO: Found '#{column_name}' column in default_scenario_report.csv. Adding space heating fuel load timeseries to REopt assumptions.\n" scenario_csv.each do |row| kbtu_value = row[column_name].to_f mmbtu_value = kbtu_value / 1000.0 - assumptions_hash[:SpaceHeatingLoad][:fuel_loads_mmbtu_per_hour] << mmbtu_value + if assumptions_hash[:SpaceHeatingLoad][:fuel_loads_mmbtu_per_hour].is_a?(Array) + assumptions_hash[:SpaceHeatingLoad][:fuel_loads_mmbtu_per_hour] << mmbtu_value + end end end end @@ -1859,11 +1958,11 @@ def self.install_python_dependencies # Write assumptions hash to file since REoptPostProcessor reads from file updated_assumptions_file = File.join(@root_dir, 'run', @scenario_name.downcase, 'updated_reopt_scenario_assumptions.json') - File.open(updated_assumptions_file, 'w') { |f| f.write JSON.pretty_generate(assumptions_hash) } + File.open(updated_assumptions_file, 'w') { |f| f.write JSON.pretty_generate(assumptions_hash) } reopt_post_processor = URBANopt::REopt::REoptPostProcessor.new( scenario_report, updated_assumptions_file, - scenario_base.reopt_feature_assumptions, + reopt_feature_assumptions, DEVELOPER_API_KEY, erp_assumptions_file ) @@ -1890,15 +1989,22 @@ def self.install_python_dependencies rescue StandardError => e puts "\nERROR: #{e.message}" end - scenario_report_features = reopt_post_processor.run_scenario_report_features( - scenario_report: scenario_report, - save_names_feature_reports: ['feature_optimization'] * scenario_report.feature_reports.length, - save_name_scenario_report: 'feature_optimization', - run_resilience: @opthash.subopts[:reopt_backup_power], - keep_existing_output: @opthash.subopts[:reopt_keep_existing], - groundmount_photovoltaic: groundmount_photovoltaic, - erp_assumptions_file: erp_assumptions_file - ) + begin + scenario_report_features = reopt_post_processor.run_scenario_report_features( + scenario_report: scenario_report, + save_names_feature_reports: ['feature_optimization'] * scenario_report.feature_reports.length, + save_name_scenario_report: 'feature_optimization', + run_resilience: @opthash.subopts[:reopt_backup_power], + keep_existing_output: @opthash.subopts[:reopt_keep_existing], + groundmount_photovoltaic: groundmount_photovoltaic, + erp_assumptions_file: erp_assumptions_file + ) + rescue StandardError => e + puts "\nERROR during REopt feature processing: #{e.message}" + puts "Full backtrace:" + puts e.backtrace.join("\n") + raise e + end results << { process_type: 'reopt_feature', status: 'Complete', timestamp: Time.now.strftime('%Y-%m-%dT%k:%M:%S.%L') } puts "\nDone\n" end diff --git a/spec/uo_cli_spec.rb b/spec/uo_cli_spec.rb index 4e897f74b..0d22aaf7b 100644 --- a/spec/uo_cli_spec.rb +++ b/spec/uo_cli_spec.rb @@ -477,10 +477,13 @@ def select_measures(test_dir, measure_name_list, workflow = 'base_workflow.osw', before :all do delete_directory_or_file(test_directory_ghe) system("#{call_cli} create --project-folder #{test_directory_ghe} --ghe") + # copy in smaller ghe feature file and scenario file + FileUtils.cp(spec_dir / 'spec_files' / 'reopt_ghp' / 'baseline_scenario_ghe.csv', test_scenario_ghe) + FileUtils.cp(spec_dir / 'spec_files' / 'reopt_ghp' / 'example_project_with_ghe_2features.json', test_feature_ghe) end it 'runs a ghe project', :ghe do - FileUtils.cp(spec_dir / 'spec_files' / 'reopt_ghp' / 'baseline_scenario_ghe.csv', test_scenario_ghe) + #FileUtils.cp(spec_dir / 'spec_files' / 'reopt_ghp' / 'baseline_scenario_ghe.csv', test_scenario_ghe) expect((test_scenario_ghe).exist?).to be true system("#{call_cli} run --scenario #{test_scenario_ghe} --feature #{test_feature_ghe}") expect((test_directory_ghe / 'run' / 'baseline_scenario_ghe' / '4' / 'finished.job').exist?).to be true @@ -532,7 +535,7 @@ def select_measures(test_dir, measure_name_list, workflow = 'base_workflow.osw', it 'post processes a Modelica simulation with the GMT for REopt LCCA analysis', :ghe do system("#{call_cli} des_process --model #{test_directory_ghe / 'modelica_ghe'}") - expect((test_directory_ghe / 'modelica_ghe' / 'modelica_ghe.Districts.DistrictEnergySystem_results' / 'modelica_ghe.Districts.DistrictEnergySystem_results.csv').exist?).to be true + expect((test_directory_ghe / 'modelica_ghe' / 'modelica_ghe.Districts.DistrictEnergySystem_results' / 'modelica_ghe.Districts.DistrictEnergySystem_result.csv').exist?).to be true end end @@ -941,7 +944,6 @@ def select_measures(test_dir, measure_name_list, workflow = 'base_workflow.osw', it 'opendss post-processes a scenario', :electric do # This test requires the 'successfully gets results from the opendss cli' be run first expect((test_directory_elec / 'run' / 'electrical_scenario' / '2' / 'feature_reports' / 'default_feature_report_opendss.csv').exist?).to be false - system("#{call_cli} process --default --scenario #{test_scenario_elec} --feature #{test_feature_elec}") system("#{call_cli} process --opendss --scenario #{test_scenario_elec} --feature #{test_feature_elec}") expect((test_directory_elec / 'run' / 'electrical_scenario' / '2' / 'feature_reports' / 'default_feature_report_opendss.csv').exist?).to be true expect((test_directory_elec / 'run' / 'electrical_scenario' / 'process_status.json').exist?).to be true From c88339c041db17a4364c095ce10fba2db7fa0c28 Mon Sep 17 00:00:00 2001 From: Katherine Fleming <2205659+kflemin@users.noreply.github.com> Date: Wed, 17 Jun 2026 23:20:16 -0600 Subject: [PATCH 3/7] update dependencies --- Gemfile | 2 +- uo_cli.gemspec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile b/Gemfile index 1003528cb..b0b036867 100644 --- a/Gemfile +++ b/Gemfile @@ -28,7 +28,7 @@ allow_local = ENV['FAVOR_LOCAL_GEMS'] # gem 'urbanopt-core', github: 'URBANopt/urbanopt-core-gem', branch: 'develop' # if allow_local && File.exist?('../urbanopt-scenario-gem') -# gem 'urbanopt-scenario', path: '../urbanopt-scenario-gem' +# gem 'urbanopt-scenario', path: '../urbanopt-scenario-gem' # elsif allow_local # gem 'urbanopt-scenario', github: 'URBANopt/urbanopt-scenario-gem', branch: 'develop' # end diff --git a/uo_cli.gemspec b/uo_cli.gemspec index 4dcc72869..b4045caca 100644 --- a/uo_cli.gemspec +++ b/uo_cli.gemspec @@ -38,7 +38,7 @@ Gem::Specification.new do |spec| spec.add_runtime_dependency 'urbanopt-reopt', '~> 1.3.1' spec.add_runtime_dependency 'urbanopt-reporting', '~> 1.2.0' spec.add_runtime_dependency 'urbanopt-rnm-us', '~> 1.2.0' - spec.add_runtime_dependency 'urbanopt-scenario', '~> 1.2.0' + spec.add_runtime_dependency 'urbanopt-scenario', '~> 1.2.1' spec.add_development_dependency 'rake', '~> 13.0' spec.add_development_dependency 'rspec', '~> 3.13' From 24bc396a5940f0220e7b89a70a6d8f044fa5fc68 Mon Sep 17 00:00:00 2001 From: Katherine Fleming <2205659+kflemin@users.noreply.github.com> Date: Fri, 19 Jun 2026 15:30:41 -0600 Subject: [PATCH 4/7] fix ghe test for when docker/modelica is not available --- ...ghe.Districts.DistrictEnergySystem_res.mat | Bin 0 -> 3963735 bytes spec/uo_cli_spec.rb | 10 ++++++++++ 2 files changed, 10 insertions(+) create mode 100644 spec/spec_files/modelica_ghe_results/modelica_ghe.Districts.DistrictEnergySystem_res.mat diff --git a/spec/spec_files/modelica_ghe_results/modelica_ghe.Districts.DistrictEnergySystem_res.mat b/spec/spec_files/modelica_ghe_results/modelica_ghe.Districts.DistrictEnergySystem_res.mat new file mode 100644 index 0000000000000000000000000000000000000000..582c9ec6ccd8e66fb67797ded13a82039b14adb8 GIT binary patch literal 3963735 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


93%y*ceNn_466P!cMe1{2|H0E5BCs=QISrus@ zec{VJ9P7UHrjY@(EZ_hfrz9rmglQlX6C8l!l*9y`Fb!lPPw*X_k(gnKlrYIM*ps+P zQWYvi#(4lwSFks66UfjPAK!V)Zb_`DvVa5C%PENoI$;{f!~_T6I3+PbCrksG$P@gq z3)Y`w7)@|ryC?EuB`M8F@T4miaG-)YBr!n;NP}6J;2<7{L?-9}X)p_Yf=LeX8+S6; z?(%Ms6cR(q2NrO!hK(mO!Er{zIhf!upYc>CIL>G|2YrH7;Kp?l`^7pB9)kR!N0f4c z^3Qt}tMMwPEr6>}cwqsDYnnZk3EJ7Xr7%G^PWD_((9Xs!g*?H(ClN$#3`OLDfol^c zk2s7Nt0SMc_t~`u5rvoqbgOChTuji;#w~>jx^c4SVuE%yZYfWYARJO61)No)#uF8A z{^K==lVgG`pj+M3xtO3PG50SMoJ&r>#{@NrxqrzMd>?sm@JKTwQQb5;aHVovgkBo_ z=H)>W<4ol@nZh|GIBi*SXkh{8);;|m6VxQ;{$+x5$?5l)pe8Z*FL{DLdwx(H9Y{iA zt-WN<0?w^_`aLG7NzDDr1m}{|?=eA5V(wq^1b-^v{3?;Q#uHp=U;aod3t|?~0>=3< z6Ldyp$;bpPV4NQ_L1$E!jN}Qv-+A$8k?p;85N~f`i~A;sVXM2Bsr`w5kmX*yh8>DB zf0Qy-57)435k?=i|70KRrSM|ElaRwP@VIPWF0-6;$|4JR>INSs$OO3+TRLd{m>bEd zjpRG&<-!j(nk$Eua);pt7FA#%3Bcd$WAy6sj$JIEuIzLF zGQqjz^m|NDlbHLL3C<;_-y=`({a&sE7&~BdA`B^O4<{$hj*@{<OZNwzV0-7}DTr6f-ZF;7oA!YfP|4G4p~6 z&IDJ##sq5=GcTCnOmOvUOt3~V^MX9VzsY!;@AQ850OO$GaV0z4rzpRyA(qM(BBOjf zDd5RWcI9g<;7R!4WhTf3xfPGp0d6ECfJT!oVeglW8$T=~3pmVYJe3KKGaAmp1c&*I zr!v8DM#DMC6C@w@o&_APVdJSxaGcR_4kkFvXFQb&jx!q0L7pJ_p^gO{u3_V;OmLjh za1JIo%x656363)w&Ox3a`Js*l9Ij#GsZ4O3(QpnXILv1}l?jeB8qPtVVD6>4c<{nP z;D&O&W8qncy61<~vN#q%r533C^Kr zzQY7f8gs6h;2dh^J511|G3S~*LA7-<@ei>V!67B}lq9H*M@-^au5&yCYoCCN@D-*i zEa04aXTHM(O&W8qncy61<~vN#q%r533C^KrzQY7f8gs6h;2dh^J511|G3S~I&Y@<$ z!vswlbFP`-9BSq}Owgn;=b8!5p=Q3r1Wg)qu9@H*YUVpk(4;ZvnhDOKX1>D&O&W8q zncy61<~wgwuUuvTzo*?{Sa3@M!5~lcXY*+amPR;5Sb#-oQG~Z!%5F^_?Xn z1vA0XRxpx*36207O=g0lh(555+*b_>2iM!BYvG z`aah|CU`1=Q{U%0$OKO%aO(S92Y>ej-{)SMiw7?(q=0C(xs3J_4k9ez5WmUy6o!o++$>-Zlu3`6;3QlDAHc83b()?jwPb+COivG}5quJ=JQ`BPKWrS5Iap*aKzKBPKWr zS5Id01mAk=98P7zlbN!$7Y6ZGG`#nc*Fvp zN|gyRL2kt(b$}bm2%ynq@|*Bkz|k@s$-o3h0F5Ry!BIpb8JOS*pwVRV1UX8;Xc>-V zV1grnMw6M~D58-JOmGCyXfhKVMKqG34pv-Qt~Oy2_~PR`?@G%eN8+-8M@S|NM@S|0GWKt1Sccwyg+{IBn#LnvB|ega5A#a3rw&B zWb!Q&oQ$mV0(pYGx3g1XlW&>eWMrKem|zFUFnc!4n-TX|jOJwRj6P!w{o1Y1GiA=pG zzu|=ioLZ#a{7kS*Wa>Q=oJy>lp9yw}Ouc7UCfFr1^_~e% zCDzSPo*=sfbc<~2J^6Vt`8xQEO!EMaSrcZ2g>CBjfsAue1*tA#KgjYTT}fYLNf4^T z*>++j!{kx?_CkF8;Xb-l{OY&WA)+WtoJ2tkvTpEuQ!kg|5hBCM@;*;JI3X?%k~kB2 zB0>-Irc-Ow^!&9E-48Y!kS1Qkf!b7Ju;S18bCSwkVw{`@R&*#%4+Z^sbtis`!vhlA z1YszGSOgpKIZhs9@$n|Q`{DWhKQC3Zn)Mqm%|RqD7V9KQeJD1#)pc)GNuQx;k<4Y9 z!FlDE7Dh3DzC;sz?JEYJIuScZ+v+17Pc+E=;lv zx@bJ3HHYI@K~)G~7{;!86Ugv-=UIH%1?$f-1VYEr!xMS2g0Xnv!D4{lvu7WY9Q2o+ z47R&kyV4^Z2}za03L>tP*e}+3@DSt&JrtKX|9P*}f@MeG2I}#o35wdNd2q&jb}iYI zl*a-pO?59*C8pBEK3-Ew@(zwa!|bCtQUFObkFp;ARDc=^6A)8OY#hsLrcJwOUA^CV z@n@0ky)_)4eG3E0CWv7`@nB{I-8D|;l=i=p`J^Tn8W$^wl8g z+C!90PdFglU+-@|Z(-VW=|1QiJP+MTBIs+PuP-f5tNN*%p^;>O-*UstcpX%>j%Dke z$#J+2c7$81-kAb+>R?BrE7dzwz@a+Wk#@Oy*Ag&@qyT$N5*BE=!tOUrJm{&n+f;5n z_3Yy{^%;vcb5#Y#1o(`+Hp4dRR(Z|1`9Qsqe4{4nr8)c&rl32eIQ3f8LGw!U#r4GR z4jCv;Ey zOw<1E->QO*z~m+ZU&6Eq%lXQ!=I_COeh5SWvrO!<&E^cPI{4}_0GrYto=1C_yeQ?y z`L~}ZV-;_vY#~t*=D|KhOY36*hE~-`L>6peiSayNH~mwNx|wc?imPgaV8HB_Y_}i0 zwt#=}V4V=uXsCU8nuMWTU;88m5Jo5;Yi0Zm8PHCFYZ%+vnCXTSSC20sMolGO-;0ve43G@ShEqe`a^ zCThStJBAZJuu})=33yb*Mn_FTT2>ZLsDA2IRu)br$jZX01UnryD+`l>va&E4S?7gL z9V9WjwM1lPp@n0{4SCxPc>zC2FlvA~umF2Zve{%ZN86jXUMB?@G;uPb7Lw(cH7w0< zVScp_Vz3kM6POx+|McaTXUS_bjg4C2ih-anBjtr)u!R}jx(KgfJ9-9w(TCR?FU(5c zh~kgMcVLXW6&YBM(Bz*$a-Lq%WT*s036$?f@rMFB#mWIofUbb#8VUJ+aNI_n@4y2*+XWl&+bY!JElx^9 zwMuIGc)^@sP3OV8>zp2&-#3m%TUgt^YLC+U<$5U$RD*4Sd#~zc&(c&VZe9zu>iN9) z^~*oxrLa>OlQ$k6wPIsAR=MY$w@psxc_g6W5{yR7S}_t(ao^uQ6I7HGhR&W5}A5$E`=E}ag;+|n841` zYujk_o+eXyHv~-{V0kV}iWCF+EU+?n%$K~nrOj_@R)h|Y85S%|e6E7)7~nJV1X;kI zQk(RsSudXS+H#p~M)c(*82P4#pt9@NCVgC$P|eBGW9h zn=19ym1!kxN5IGfuYgSz$UPI$r{F#k7((jv_DVjPeNp90DZ#J93@zV8l~=J;AO?N` z^#FG6uh&I-!6|FI4jOf?EhV`3mpe^~+z5{* zitO$z;pthxqh>krfnJ7am#8wu`G**eFIbBxiJ-E9r!aaP$ylb_gIIZ?3f_775Nwr= zS}BA^B!vtkPp*vf1k?|xy6^{xWEU+J-{42pujm$gCt!KDX#o8-f7!shEa1d8ag^N} z-fz8=>(AJym4|^yShUM9IP9_o{Onn0sM~|VJi|?ZWR3s<@3%BcbdOTY2POtoxz zOJ!)#dl45ux`YKhs`V2e{9d$~>ouCUIEWZgsBgvR*U=~JTJE!7)BMKYKff)bgcT6m z=QW0Sj-LPP=H>lTt0)#_Ve#(HS~IO3HN>%n4ZCUZo7%LC&H_qTRo(WI;(w@hclFh< zi|yZK3IALC@iojz@aZQ!HgmlUmp%Kf0Vayce&Kj;X`n(Zz3gH|?f3EU65akA&) ze$dXwErt6*H%|6k+z;B>xTSDE=*G#Oi~B)48@H79rYpmUu4Vve*VJZ_%C?GT*4pM; z8(Pn~o3kx=$9P0$)h;rnlxS5_r=UK*M|wMb#2jROkKZL@Y$)N zg|52!k)0~~uuOPHo}kq>!%h{B#mxGkBPeS&@&wt4ZY?{<1U8~Og0g0_cGT=tVP)1% zAm7c97m)kGc8!{T$Nk`RX6-k)A8hlOen-BWAuk~JgVSqW`wi{~+dQVqxc>x2`jVU5YXOiVuC-6eh-2kG> z!%Vc=#2Z)PnU-~Ltp%hSHL5M3F>!A@mtAoae(5TYK`_0~63*B#PSA$18lXI=z&B9# zD>$Ae6Ea`l-HMI3e(mo+RfT@<@84I|;vLiq{rI>=&Ur%KfZ0~Jt`|Yg3YV1yD;mcH z4rAa5%9@S5y7i}32HUQ3iKFgz7vqt7(C1-mu40gQ!j~Hep_r>}MKBOXNdl1xvs}us z91L&Xef#poi~kn?_qSjDU*{jA$rEG&t+n4Vfjq(fk>pks8Jwn#?%o|2saSgHqLF9b zf()zRD?dm}eHnt2;R?xZ>$vJ5YvcsEE3*TL4w1i`_%wgenr#+&VJL1YJ-593qj&+I z@oNF!<3m$-w@{ETV)6oV9sI;~@Y>Pys4vIrv%<)pLasxOlNInC1bofKcmJQ*>)?{c z_OLjJtC6MLVRy4ngUCw{0uEi45Z%#-YZw+T8r89FSs)lNyCx_%8*Hx+5bpuB>KovL zMuq(9MKnt*D%6+q%i%c&YFpk~lov!rsapaujinwz*V7%(_^h?f?9Wexoct zApvt(Olqx*C_6~C($vMfl=<@6vxeZ45D+YEIO{x;RV^~zc$*x8i-%r@HBm>9y=48v zn%J*yq0-zf)$6Q;Jy`*9x)i|?Y^CiW3x30nWx`CN=_XFSsyphqvf+1Z)0WZAebRHP zfR;K4Ekyxr_d9ry;?fx3L$n!h3-SN^0WK}hG4Gz0roMjWdY$(By<7(yh`zs*ut-u_ z-ozu$ydw{~y}%3a#H+7gyijI_ci-NM|EjJ_1Kh{I-eY{=AD&-oVT=Vlu2s{XeAor+ z&!%A&29XS+6yt$wl?e&fp4LgUM>Fiti!E~2zkjK5{Vig^IK+hI4{-_Vy_!D zioAg2cjS;4@JEij)oqp&@0s94U`N@R;1QCE53HLF$b?o?E+pktqz=o8105Lw+lSlk z^_u5pmoO(3b7xjZPeAgMCh`J0YSb5ARv)O7c|VoW3g5| z=l&%>)R7mE{7^?;K=MN!c>&1}b>sykKh%*IkjLV=W3Ya2IC7b}@P4JES;-67S%x6* zo<~nW@^M(n3)rcH<*FikVCqiJ;V*f&6!HR+SGULuNM7BdFChCYIP`TxS%%du0>=ZB z7qBxH(^I#ent-g$3^mx^H1Y;a@&Y;oZ~eoEOwfwPF@Xs>g0g0_sQji`i}#aQ z>0tu-X(xFB*_VH?f;l8IK?g{KS(xA;9*0D$>4VI64c<@UP>e%aI`iT^xeYJmCr#u9 zbkwMMKZ&)SkatTVFQ8>k!uv_Ab*`IW9gBHCNf(vnp8aMlV4NS5AL_^p$YZf{WwT@? zKh%*IkjG+6)pCB!W3e+TOGX}xEnu7-!b7iw+BtO)V7m&wdOVx6I%ww@L zDoaKli!ETB9}m0dnG5f{pQImZXBmS12m3J%JSD$fgS>#9I>;WF1GTL`iM(41c>!4; z?5|nwPgx&yXVssx(+|>f2_P@vus+E9N&4%Z`Sd$H{Rj_`Ebzd@AcxZj%R|V=&dT}c z{Y`Yi(~oKy$qVRs;@`68;?(%yg1ms1vA8-W+c-?&v&39sxCXv{LMc@lK zx^4x>1LMihqGiTW#Zxhd2rSOvFXB0(6f+REj+H;w->Z{}5VU1(OB3 z06EPwhmtv47V-jq50wp$z6^d-rzEy27AT79xXvIBWiCGcaDfWu!1?zeU{d5)MCd^9 zx&rdarw;94FbnyEMac`;bFk>wACy z9)|H?yUX7Nd#N8cIA&at7m&Q^gS>!PSG4N!xb>JX6P4o$MYpowIyw&*W2UsSm zFM2`Vm%qKBt!&b?CU@ioB!~{GVJ#K5G;Hwt`JcGeZm`!C+n^|UEv zX5hla5l^+5{Knhh(pTtZDw0IS^X$tKZPzH=7^_ON+8Em%S(JA3@tt?SoYz13-4Kmi zO1JJSk~dkg--oc27l(&i5hqxhuvrH;Jf#wL&Bg+Y`|RavjCxNf3iM%EE*N-FBlp`yF{VWxbG7FECNt+o_a= zL>nph&}P9s55pO#*|1?h*e4L;;0im3$SVuHGx5}BU7J40Z~WtJYctE5H(kvHSHH$% zagAc;1^pd4IB};u7W0OenN_cTjop-M6f-Z>q>1uwh$pbxNxYlkMl!Q))UUPuX1a@q z1l&@{x8l-=wVt-OA`oB2CA2Qv>Y^hcZsSaf?Tn6uw`;OQHBTeZPB33`RSMYE>w9hP-seJ}C+8Nw3cSe$_ybc%h8 zFZU2aVL68hm!?t*Sb0Lx60H=U1#~IKp*$tQT>^U!lQ@UIW}PIdAH>RuA0sPc{OMHy z`u1GyUD4-u%&i$^I#BxD?Bq1*#4|SHR z<@}iZQ1>1+1ByeOMyz}m{9v;wGTd%$#L?3Z${GFy9f1ZqpjWPYtMyl$_P2d_#oF6@ zD!@?XJ>3!RulE?;V4KJE zJFbJ%nYG`rtad^-vx3bnn?Qyzqbj2Pl;9HWZ#ePpJ)W)A>>DRFC00MJBOtv~$loL} zY{UhhqRNs5hi+9qM(*)KPAtUX*J}Y)MQb~5RZ(Z)0JgZ4|HEM~U)OIe<01E>_a%sm z2sS8JURw~HE_sAWJWQAp*g=GoCmdB^O<9Iu{MZQjWi6#IeTeviVWk1AHe%;qxR=Oe7JQ0ZCwSSfsi#Y zBUC2_o-UX!_{xBZ3nJMXj)jB0Kne^-{ewNiL>s&0^lg zFRDdWr*2`VhbLh||5kP;s*kRPPN4%55aLS31^XC%y~yn8XAsJVZWzmX4?Q&Wt(Q2z zbRIo?>+cD6b1L2!bh;pGUH7W02R*VHrg4}Puf?B>AO!2&HoJR^hqd0}D_ZeOsb9zY1YB{*D5kFG!l?sSj<_ zN1t@dS~`wIeAlIQ74yN7Sj_`2;)cb%EAmC$QdrU028K8c-K&hP&}NQpTnigu`|2PW z+aOj77I0qEXx<`E&}<}mf?l@uvPf?eS$te!0h`)1?@F&1r%=3LK}A>PazO`|xRr^2 zz4KBJ79(IGC5Od|rH$*&YG-U+bJFXb6BnJ-dg#fvk`L53;j6u!v2x=;M-M2^7?y#{ zRgUs;uqon>XHN$HtSKzy?ZNX=xmqN6%ElIh z$}j5j)7~8m3-23T#1s$JGBUK3I8oCQ)nb|z&?R41nq3xQkb9{Cwnd?XlLV=(&rMu&Sh@w%3S0AHg+yMLNf6|v!LDa>|y6J zN0KUp2ROY2agYZX^rMUbbyFQx2n+HMMFYJCs|P<7IYyfI@Kiuw!hz}FSpVGdyJlr$ z0cT+|UV1VFE00R;NqK|u$@aNGXJy#2Q3fmV!bc3*u7a4Ap}?|Sdj0`@M{{|hny3l3 z1^n;Y(evi(Zu?30=x?1p#~>@FfJU*L^YY0EXu8VI;dcusUqFC=I03_?s)E_YGTk1& zImBKRtTS}OHFJ!@{(BLvAQBVwg!?4Tv(fyEXV66)#1OGq!haAevGn3X2Yw6>T(z4y zSkLimw15zm9o(R^Vg)S{9ip!+R`b)efMy*ObUGP`yH(dg*pN}WoEI=GXAt5(FVgt> zHPb3!R_yoTfs%j_XzKyS2gR?c0$0D%b&&i>($xp!L=AEGW~X{zWh%$s`Yur_;)RCd zXW%NIr%6}_pc6U7m%DnQwgu2dY<4qq`s9lZb>D6_!8(8wGY+r=CjxE0RQV&B?-JM@ zRB2nggP(du2%EwT7e1ML-yQt+?>+yWn}A1=;Xt?_ll=VR9DkxNVjhc+*|>}k4@ z@WkEDXgK8!1~-Z`b&9B`j558-{gl z-^)D#opuI(JIbE|j$2d8A|$66HSE-HocMmz5AMK$1J>T*z%>Z|1wqV$EkuKZGiYEX z;?4VC#3l%rmQDSXMnIxN-TNp>@*O}k8gkQwq1Y#u$l0^2&}#AlT@@fMov%*RgPNGD zE{B4oO%bnmK^Ve<@gwwoDRhLPI&SUio*<2Y&`5F&lSfv-HbH1IG!WVdk`YjAGu5I) zDATjI!_z)c3)r^u&zTvYCWrNHEg+jdtcXSuG(k3fjDWHxv(JJRjbnnYgJew~Z<0i5 zFgOz9*~u!@ZVEm$@g~?7>WsSUYFyt@6-?IvUBqNZl15oz+l(%>X@7MQvo>m3n(BOJjkkBtSroH8qHfwuwgOpN_R74 zHEJy&*|GR-m^=zUNa2()Tqwas2h{yPy_{Dd=YPv4;H&e0)x1x%3HbHAk30Wcx(>1j z=3KU#Aa^r!_ZQn533oHDb<#$VyBSx4x)qb1lV}0Co8fN8wNjruA9pjS64kAkyP3Hp zH9?*<%_V4S#XMvSeU&%L2yv zv95!xZaE|CWYh%7chv0I(=+z$?OvZub` z5R+x)nH^1;`$2o{a!b*znEOFDUdOo_f9_rd$-0w6&vKqC`vcP^bu7zwPNXBpG$#gShC+3)#aEgPY+=b9id zLyVEKrE7xZwHa0xY(+Ts+%^`oTgn(Yovs@Rchs85)W4b_`EG`+y2bWE!S+Esk&q+V z+B+ZJ&9E1+ozZZLCdmEZFeiJeCP-Fc<#iH!;kl*gB4&Nijn{Fmh9Iw#9Mf@m@?^|! ztn#}QXI~!ONXU*PHp>F9lk^p5-!mIQUMK0J)%Q#{60!>Glj*3*5^Rc?Pa*GX0^`p# zL0%^rXVsrW6C|(Au(Hr!fa6bXV==FjjI%3q=tjcxVpn3_e3~HnZicL~!0RNuPNGg4 z;&qa4=hEEkZid%M8Ya`OG(qkMr*Ug?Yl37IR$eD*3Txh#E@IXP=kaTf2kv$=-^Xg* z5XQV_AiU66*DoN!@P4dO&#QsYp4k*uUQBc)sv8L#k6ej$ z^J#+ZevrGFdY;n-c64uR#XNC8LS=biBS>cAt{Vw=GnNt@ef(r5?&SMH@|FeG2S;0j zC4;RWWPQ*A?C9~6>1N2bVkUT0sU|*PWnm()qwG(n4zjXvRCbOJbR%J9!4cR|HdYpn zkW75=WV#tv7ABT#on3b`WC=C`@^WllYLhNBK|jdyG+5`=fnbw90* z=Gn7mB*|qO1+f>30yg|*B9(cO#@8S0tO91mejgqv37Ey3 zzgrO%SuR$xwQE}hn^U!!C)3UFVq#DIcY357iCG5;buv70cPhofOie51iTfZZYocx> zU4@lQ%p;z-pE}fWm{V)*cT8v+2|Ic_BI{&pI%=M{chETAHUxR%?ue|DO}Ap6xOc!f z-@Zx0B8oGSY((y@LMieDr)EJ63s3tbgus%%^JiToBMW#c)^ERn@mG~)ki=NfzL$IG zRhB`xX=On7U>he87JHMV;?4VC#3l%r zmQDSXMnIxN-TNp>@*O}k8gkQwq1Y#u$l0@h2qG!u14K6$I|zLa1-xy#914;)MZDex zA%+!vguX9@jxdz@^_R0v%R<|^jG%yRg3x4WAZ&`bO^}R$TAQgB9YT2(SKooQuLW#d z`R5pc2fpN#BrPDDKIT%?1WgO;oC3a>m7h%?bBk8Lr;C`EAvBSxf8QjD(qM2L5fGsm zRGKa53eazFf^Cti81qv<^Q`&5qbivGmAVd+9Z4Exfo(Io(5C&>MaVig^XqPg ztVXQ`Bs&({A~^EF0o}T0ySEYKg9B{Dy3chZA*(EC0lAx*yT91hNVuEnHU`_hjUab3 zHe%i9x)pOb(G%CQCw(`Gh_cqGAF$%t*h4TTuaixG&<^Ca$aEypOXr;!oEd2)w3fOkfqY|*kN|20zx|?Y?-#N}v^BU>sTUtO~aUVrx z$)E}Htj+>x^s!Bw;aS}%x+;UNgFLHqCDzTS36k%q*|DcvbguWhh{<-;ZhkYngP(du z7_5cdY=U(l}CvUWmgfZ_4mrFdN4R{P|&j zmF2_+*Y|<)O}@!S-g+b&%{x zVzVr;-%M|L_B^x^B(u`=WV)GdM@=TQ8WZfP_mdv!evr*?ldu_?H9=m6FrZAj)C9?E zGpsC3Dpw=3Z7k+>5(CoUrEVnLQ4eAoNYn($cQa(wEw&GGBwId$W}u6~B;C!Bw-0hZ zI8u_kR{j%$Oovn7HT`6Cdlg~Z7%M2njm>?hLr{PLT%?{WueVu z`kihhyiPKmUHOJ4NWPmPt1Pg6knMwP9~|j_bT`B6BqN}#$(kVdgH}W%37Q~Th1G4l z2Jfr0m$NQn)(7p3hEp1XK^}Nv@LL(#<>q@{Cm9A;r#=}2Cae5)nN7UVjfCt-VzVsp zeiGM`wh`q0B(4N?BO$A>KADc1EWxITd7Z?yS+w&t1XovO z(eQI!2iqF8xPjvnct6&t=N7R|VdYI%u0(YsVdIf2v2H$1u-y-GH&b`-U0_G|wpPp&_aju62R4Fa zChoeCa5rNq!O_Q0X5vo1A0%&CV1013HCQs(`a#wQEx?W*KbdZZY%6AhN0n;g16CF$ z0z1n7Wa=O*3rA(=_&_%jRu&wA9c5!>;RwmZ2T!J(VP#=r$=2C*H$#?SBOouw)}=P- zLKF0ZEKh@VF0uox&P0`occc3!IKHHW#L4GjPk ztuUu2v+Dl?oXMZJFEVjPlh1by`7pM3pjV<9}_(FSWG6! z1ReG1TM-pmE>^OoWs5-jG=1~CZN<&DH3EC+`bJ|Gu#d`=XH0Mkt-icWu#d`=XH0Mk zt-ieE32JqVe6$o6u&;i(JmVsEp){0-2@cV5Nn?U8l!o#=8G>XZ_Gp4E;7~mqN@IdU zbX?MypbMp;JWOzij!W8;A;>!uU5c|Wk1k>+*hk0Z854A&G?a%44$*N*V}dS}hVp2F zyrBKNT?*qO=JjG;FCOXyA&nc!sf~pELJkW!(gsG8ncyg*kqk_51kh+Q6C6b}l7T!y zJr?tV_DD%ulbN6ujbj26bOdG1#ssZs921zJBPeS&O^_F~t%ybvnBWMY(PSn#ifAMQ z6C43Fn#=@85shSMCQX^#Ml#Mbktd?aBy4RL4>HYzHJqUXXArGZnFqhABYrS;FrIg| zTH-t%UBqM;w8=-$BOg+zse@}7hMCyIaZTQKo62oj-9q^w!;yM?(d3d~DC2Fu!^*$? zYE#5;?q7mUWSw8s+&d9Uzl$ z$rEf^F`k(yvZP4YG7~pm?2GbA5P!~|PyXR&d!Z393cdvK77m&WP^IxUIgBZ&vt-38 z%hj-Ql~Vv40f`dSb&#yO^<)Gj>v{AxOddg_Px0hp&|o$Ys|xp$e|mYgW_aQU*#vxb z;^&_2b(?@+pY0n?{2<*($geb!H(-+Q2g!Cb%}_@)QUy1X6MLE3xr`ghTqj%GNWx>W zYu&UF4Wsest7_Kj5Jp< z#B}k&y(UOrn_&TaO3&%hlPO}dtymKzE1*puB(G7E7m&R9jl6(l<|MX8LPkK{&5+jz z$qPt+R!3eyR=1pVtDa1{6_ZsK$O}l`h)!NWUBu)&YVrb-@2JTO$RkP5AmQ{#w_+Yi z{*PN};(4)C3xQ0wSsl-dPbJ9nVpoE?qh@W!l~^~QCdk@MmyGMZCP-f0Vr^!wHbZ{e zNnSwRNXU28#FcxJfCjGWE+VVuoDmVCQcxZL6F~Px%B)4oE8fG;eC~+IXIH+V335L;mmv3pr^cgp>t?tg zwAWDGin$-OGa62LEjC^VF`^(;R2D@0FxVV~{Iw|KD%=V$%Zdm*`)|R=KNoS5L!F0h z=4r*sh^1t ze~MP(aVKLCQ^_^_!_St=1W!fD1exHqTk(4dbGbxyHTc&Hv14oXZUQ1~=#5U$SNaQ2 z``iS?4Ozh&g5xYM-?P_4@NTPNCY4#92J135p)a#w8yf*kZdCLVPki;qGLFgWtaEts z-HchpIP77NqXXDGBC+!z@{!mV(f-t);-vS-1gt_eJ$T{6!mXqFS>%iOb*amgW)G=5 zm@EKuR=k#Xq9R=DWJ>>%N~6JM15tiXD!}oV%T|1=;)X__R0jx9Z~XmpAyH5C_X6+B zq_Z~9aoJQ3Q@}8YrI&*K8I~5LmCPR{D1epVxLN}8Vpt?EK2)&5Z0Pt+GqcgJgOx&! zp<%g*=alj}i}+6bBZGyEBn}S(I{hf|WvKf5{4r6ZV0JfMM6;s?ZAQl4D#SRzXtA!= zo}f`+!|1FiPyecUZ=93hJPAhLYNnkyqg3{2Sa%RXre?>X(iLHRhM}&I7)aLNe+n+$ zH@8GS7EsyyOO+MZimjrSZT{lo9t~v=N#LuFc%M8%49A<-DsUop(n{#ZB>ntctRx0| z^n4%M1k~I}`auzio5(weZSa7KEf^`_?b=2$e+(jD2lY^=wS|(K{Nkd6 z=%qn^5TW;&-HD%|vZjv#bnf1MpC(^|2x`NOKBQIK`fobjjHgN%tT8bPhMk#GAU?$j zn2=yGv>cC{TQKCn7^KP>IwhDG6l<7-L96oR23CG@v4`nGhW4Iy0dXe!Wf**_34$#8 zGa*=FlKN%C1*IB3ysUC4$>3*QB+(EMe>j-8fJeEoRF*chVkpE1n9f~6I{3-o*XB3u z2TRFRy9L4OR=NobXxdPK(u*#FY2ZVZMvaxNv6GkN+G}$L$6FW()he=zevi?j2R{Dv zq)sD&nw|%7krWvW`0Je)Z$S%FD~Z`&UZs$qKtEW|huB6vt3v(-ty|E)bhN!pY|MT$8s%b!n$gTKPf}P1GowiKA6_Z!DOoCMx$IB3t+6(z2=4FUU<=K;2 zPu$Un&dU%zfJPsg1bG=^6jx7%b9OVl3_;xcjh7*MT7bi&N}H)INTrb)*MoT(!T}#- z(H%7}L+~;LFGE<`3@<}iz&JlXr#9pKrBgDJ7Z4}wq+R9NfH|eU_2tzB*?`$c$K{zO z$jcBewEFUBg1ijTN5|!vCdjSWg;rl4O^}x%`slbk>#_3JyIXL(!Fm_K(d52(1ec_= z+K1rsxo68WDqxa;;dLv*#PhEb0%S};U#=l8PwIuiZ@^K85byv{7*Lh1$3z zE8Q&Gf3|NwjQ9j3|tm*c~Uw2h!pa+Kj&h1hJe~RIReLG z4|k8F129lsNpQ0bV)VYnpMf>e@ZnLebLyw5-&J~lo#e{X{;h_90c@`ak0K=sRuELWO@mPOz>2yOppm)yA`8(6}pZpLMIF#AB1uV^*`Lacz*BauV3hm?md|> z&+8B0$NqQH)0<#UEz<7$W8>e)`yM9X#k;J(4G166B3ZtK|l}%2V5NQ zt`Nt-6c9&}GPn)sT%fsN92|I5t|eolAHa4Z2*Rq;aA#$nCa}**DLLJuIoJIg+$!b8 zIeHl5eonOo@mwE%j?bwG@{0Rxm|7p?6?a~7=M{HLGvXC@3mE6ezv#{DuoiZ6crIYF zsRQcb4A}W|E|&3lEdI5C5!V-J)@tH;m{Yoo$&HM;eKV<(roNwGbWt9A9Bfu zrht_%f7`IX@^A;X;witB+fh@Is6cz5-h!@JKKm+xXnU6sv`4^dvjNzMI;#+u`2Nw) zvpk14mFF~IngX8fP)Pc_!Z>=KV{5f#)0PEX zMdVFaHcCU!O@bsh{&hNP7(Lb))cb!O$6^ZN5aNP>)zVihnwc_gLf_u>qt(0r_|rM< z)#vO7he~R8nn@7HVqQ#~ijoOVCDzSvb~D^jcj>s?YZp;=Q+A=%mq!z1H|0J$F3&VU z-fZAPt1pix$gQ}Kj>|JmkXx|}t-d^(Ah+T^Ixf%HZ^nhvP##mGwm9}&*Hmo^h?6Gv zn;9z3zO;&9J^SWJ6@8S3p6N*w`^~W54ExPkS_=EkSim?xX1^I{RF;fgWr6)>ETF89 zO@ciu?ky)D>xW!2!7d>C&A4&z5M;j@H*7{OlOX%e7+{<)O@iz<46;2CI&>q#qsaRVd)9*VD|HCP?oZ&#?aRG{|8VCR z9L)tMi#8tg?jUC8oGPHHH!f?8P3p3Q_H*6#%U8BegSQW8aE&*j> zz<0|iTD#wt+-zWbDjb^_LqLg1jlq`roMW-=J5G9T5@g@4IVhRn9BSq}W;esWTP7LT zYrW#mULUT+y7@Fg_WJ0OalO|B+3UlVST~<0$gQ|b#`Rtks1eJUU)(}Hp*%4F1C}WtA3uQ*dU2B1o3S486k!Y;_BKo& zzfr-9A@cL5{}gpj`D@{Y;?F@D*%%VNaE@U59WG)`V(wq=sOOT?@0oRwJ8Dg3%3qTp zchpnJ>Ac*EHHo=@%{oZ46_>&3cr2bT4S(8kH+={K31`>EI9)RPNWY$4$#ZJgNnM{J*iaT(e zZpn|urgK>pO5@uP??qPZ@c>x@XV6##BoaphDuIiD`V5fe&!0IKkaj4IzB;JsUF`%F zOA*(NWCyEER}&8Vp^kv`Pk1R0@qy#!v+@kt`n(qm$S-49&Qk^>{B6tpGYK})QhEfG z4<4)`dU&cfnzWXY4!*?{5X`K&&Dax6Nq9aNxB7u;(S3cLr z%Lo`%urtqhaJ<=@pWf-`rxNSFZwiP*9l2n|T>*{b;EdjR(b2cf(5!gb8!(*1a_32i}(o1#0O>_BstV^5l<}9qwMsHn7U(6r7YCm-h6PtQ6(FBpz9!R zTPq+!;y!rCx4di#Bvd=30Z^r{-&*i*x1;uh%v*&L&660~HVSf?E-23NS3QAgXFVOEx%m`V z*`b--3L}!P_<-v1gG{&J_K_!`U;CN(@TX`c)W*rmh5xuTF7kwY5kCQfWeGotr7)t_ zt%e{`0f~1rT4CinIJc7=QWg?8(LfnH)?osRj1OM;fR+wrt;y5mv-}W57Y|iOzN7v} zW%|irqgn=A)>63-y|q*tO_caDytd~Id4k-E=eAz`9{E;GUce{iM~yb>5VyOw_Ph#+ zBFf%xx=9@WHS6G0b4zK;^@?68;2L#4eUSYJ$vgIt7m(<24HZ(9C?tPdU! zUelhOv!kB&&5pUbh#f&$vvCny(KsfUb&%*taz1s-k;$}dCP7vfrm-t?Kb2``T@l&) zZE7*=M#A22>{P){6_(b+-ftE#&X22E9e32u#JU-|qh{|n!)vQsJr=qDzV@5JSmLFd zmI`G6f_Xj+ALwMh2@CK~2S0P^MTykPhjF+4|92Es3R{R&*}ymt2N2&2idvIifJIh zR9K1DLE`p7lOT69169qMbk4EZ`X#3%a1ozE58ve?KAm7=AEen)m-69+j^_Erm9kI| zC+u7{wNC1Oke$oexs095EUkxq7A#<#A9F|TjLMRcJ8E_=W9KqUd}HyQ zP@Ps1hX-_$ixOXkV&`Qde@w(aN%QQkUB6uJIz=pFBb_ni^Xiuw*O#!Qb*`9cWmav0*xGJ*qR;U@Dc1~?( z#@CO(ViLro7hsb{9$+7x!i*mGFoA=0@&H>fd{7*4(?+Q(1~GJlo{tXLp4fY-7s(5C ztu3o$sJ@zq}g$tc#?M37AE&^{1Bb zcThJ zY@m@$F0^ScunBk?ujAbG>!9kWZ$$w|v+`QqaRH7$IcE{G`R!Em+jx1+$brKfs57^? zaXnVM*TI(Hqu~SXtgr($Q4e9LEBC1S`%l58`{vfqI2JI1!J<-G!Q^HawQTbj7x!o= zdq@J9VaA8bzHsvztuyezFNJw!s4`wqWjti9&7d zp06UFvlX|B=3F;=EY{jWX?v4jVA38Qu>V%ZK$!8t^e)H`Fw1+)?!-@M8F>t#bNBWz zvHuc8P#b0}BRTvEQy;`hlPcjyFO5+!sGwC%ixXIkfHs3g4eg}9h0rB12B~re?^2i; z6zekjiZ3@F7%6b$H>_kpHa@(953jJ)N2O6?W!oM66lx9FQp) zYAe?**hgy9R-WWuX!+>#Jnl4-mLK&R3^H5L!Vk&88yMqWRp%??xGYZ zFHXYVz(HG_Ibnalx~qcT^jfBBCZfajgJx*$Kd!xKt*MO-y_dm?fBZyZq?1Q7fms!2 zN>C;+>k^b@h`I!&6xSsvrMNCZS%#=eP&3Qlf4fD!7CZF%?(E))9sHa^1ADLQwtTxe zm$v|m3~V|Lx=t#vTkd%@nwrCF#uW`rUz(l%d(dFuhIqetsF0+n*yh31!1&c-2Bmo4 z$!A*%mfDZ!dW}|B?ele$4c6*XAB$dKqr(FRwZPOrK^~MBppA)VCy$b&W>Dnclh&Z8aoTGjFtYnO>9a1g@v1 zz0@dLD6>xZQZP95T?o)=+Z$gwCg>#j+WkOgM7@7j8VlV z-d7#JJ2@~Izib+s{nSUc6w5pARkDB(tU@iDMhIqURQb%FVEl%A?-D}l)zeIBa?@#Z z|JI$`j%-H9?o3~F*F;irj@`e#C8*xW(Hvty?Qp*j+oTtd1D6g7 zQ*Yl-zrRnGmoSh_Q4Ma~O`QEX23Z4DOOhOuMlVxQ&qbZ6MnTEj2WkVZs8^+Ix~G_WC+e7wcnNV_o|yHs9>M-Q8_8>7^5S24KcxLZH9tsaZ1rAf zk{AEX3CfCld1k{gWyO7%hq=nOB-9r3d-3nA^yPJ~7c6H9CT;P#T{J99er*k-Y9W}80j-$2! zsVO>&uI4$8@M#M{9a4E|H3s%xHlR5oScS;@j;V&{8#v#?L;F9vq=D&7@JxF7edE*z zFp&2wzp7@EePr?R+iC)Hj)RdN$1Fi*U|d`o*@rGx#ImJ0&3p4W;50#)B}nxk?^%B3 zVw=Wwfg8^`$L9jjpwqLq`b0K4+e1mU_p!BRuhT@eSAG9+FOL=dlO;&K8TH=F<~@fs zJ{`Yz_RPc%qnzX+o#)B_t+3=srgT^=r{@(F+L7n!%z`Su^3v4^o)Q6Bf-GPB zgNmA3kA}J);tmH@aY^T$X6MU8aI=ya>RY*Q{nOBW|4DBF~EbjpOK1m$Ie zGPHDYQi4*7b#%&vr39rEm!YMLlM<9ttfNyVO!m!`p)@W|wnv?_v1h(h)ma18ph@=4 zjB}^%S&v|U^ey{lbd<)0rGut)f=~|39!E>}EF~!WW^{DQgvq{{GL*)}$+jf2Z)O~+ zyk}X0Nn0%YX7X6+!?Ofs-;AEo_)rbO-j)E_H#44G`V3_2XRXr&CW=f;$ zMa&YEeKV%?RQxPK**8;#;3U_JW#0_FP9pnejI&`nE@r!LrdQ4MCy(0pA=;ql21lqj z=&Y6FXe)Qq={WR%>di5_nrrB?IAb2>2}}*l?4URQV^vaU4UBiJGGS59AT`Y1~b;*9Vd*t5brq>!U0&jF%FWQjBEE>Xe|A z;7Dg);{JVB*zI&$bQksTg*m!kIPI_;1DTwo zLBGC?f$1F}v%i04)Ii=xY3TA`N^fpAsN}e~Ur1JHm1%CqsR9TF^1tCFIgF&+?u5x5 zviWb+`)rcPXJ=+Tkr{9Vj_ zV^6QM(BJJX7YB@FvVwp#531MJx^zOKTpUmUY~*oDkR~si&XV12sZHk%KWNfD#;q>R zqT7LEEjq5ZtmbW+Bk89ekTFp0k5~8GH?6j>Cb1H4({0L~z+a_z$LC-j{ro*ky^%Ya z=k+X$=Lpp`&rPx_zM8Yub(>Zg1&-aGIx_eJ@j{M84qjPr2IOJ4(IZC)XeP0QCH22Qc+hWm!{ir6?M}M?ZsBoYp_~w+l`zc z{V{X-cLNMN`@<2QFP~EV*BjS4?T$m;!7g=B_p43=O$9Gghc)uo?4TK1`;TicTJejM z9$k$-yY)`?F5UnHH_%cT)7h;7L8b;WuV&Kj)`nP)W$EH^odut6G_Y*1X*F6tE#J{p z!>U8`3u=~u#>oC5XTRI7(n&UI)7e+lcccjyHF*%)ksB_p)5J`tWjCC-N7MG3PHQq} z!y7>xip-v%l;Rt-$z9NNt_YnXD!bqEOHVcrZnSMF z1HaC2j5LCBk}ZksA7sC=hrNL;d(_$93`+yE^!QaKQ`z@klFvD%belt)TrjW>{3fWX4yWet3 zw(Ne(0aH4-H>&F|*vU5K(&%~-)6Rla)KXDPMV(W6q@vCNQ#yD9bXfb1h-@w^?bd8W z_AZvqWm$Js`J8qZ)XpQOlSi_-tcqg?X|gVsWrzWn@}FR(Y3P+9*<4nJqiilKLup(b zDaGUHlzGO!6tg!_HkXyjXXE04i*t6rWe)F|_0eis17&mBI9KL9o8+KLHkYyQu(CH$ zMs;~5bzFG19+b^x<4EN_%XV0q=0WE3gIR)7&E(~?ap99}i^u()%Fo2bmC^MQii_(L z*%?SWHG)=H;`eK5_L$x}?l#ml+)n=(v`*lJp*mbb z_AJPr1#J%8vPJeR^WOJD@MA=+sj0_S; zDFz_Ml6@&=Zy@{4WgDO^W}gLz+iAL8Dn*&BOV@Sz-AKKRV7U?9G^S4N?cH@k z7iLv0O({Vs#dQfvDXvRUN^w8P7`pG)qtx6ZMS7hi-sL^ufyp;^Ohn)IXJq zTF<3?XttV>in=_vLCh>cDa8XW*R$sO%pc1Ez-F=yD?t@_cKFc3E11v+4w)-4cRA zuu5UiRx`Z~z9;VAM|;|I zs@7@IM*hHU(4Kyu27h!M+JG*a^x zPBueT__j&*W-9#o;v`vu>gol0Nh5Mq9Uah!UcJLa8?60RdIh6N9S8N&M$%Pu={QNp zZmJE~w$-r%yX{P=A{TUiXHi{QjYsA8bjZw7%v&;XV; zsu0v-F$ffb2C%eI*%M?xc_apEGnPT15Hx_LjVc7SSPTM%paCpxRQ3efPhg6H+Kgoo zC23Ef#}7A!qBX1A)Gc6_YR_XhKUDcLQuwPWt@xN{Ge&FcL9Pm&c02Bo7u5DtayiiwG4x7lK8Eik=I> zB0@#agB0@#ag+gtB#7^Z^~i=0&Nxe%0zie2 zg0zie2g0zie2gOJQMjYP8qH%dPzZ+Iw(Bi#w-&pR z<@u52cuRiJh=V*oy=Y+72|~Lid9dz1?m|!qR;j4>Igu6lR(z@p{p)!4V#~2yuS12l z;d`Fbi2NXa*)Iz0hGT`@#W1qH#*|<88#F0m;DAN7PeQO7w?Qf)IABrjlMt-NZIFsR zLFw{KmtVU4g95AlB!xr@i4+oT(HI1>Z|cOrfwQW85`xvZ4N?ig0gGy%gkUvpgH-GZ z@?U96j@@ebZJKa%(n)bfx9@_B)eOF4MJw_Dg0|hFW5U9Y@6oYgG<&${SPi??=+ePq zw4!9w%pygk>B1nQ8O1PiY+7bovKlK+;}9(aSZgZ|MF=RC8^$Y6i|UxMPT(BTy_Q(6pqL8>z$p* z+n(8CLw<(Lx|k|Ks`k{%rDNHRC|=Q2izIf70@TB%8_>E*@0nUgi2}bBOW(`?6ZM|3 zH;}!H*&BEQwX?ML7Fm8bQtNZ8s?gNSHIq$!Mq<~R8?C5ZpBT%@%02PAX6P<^RI#X% z+VYoO>atijq*G0AI9V8#zD-JTC2W~QdzRwG?Cn;|ZBv_>tYmk4y;ItE(z1i)xX)>O z*5O^5gtPisWMD|W>Q>*vg;|+3_&Y@g3c&#@{ij|j?w_yLbi;UCMZZproOZ_v?5G>i z_-MslqAGpK+JCxzSdEFiWG~)|L&q=ED2c{KexuP10uuT^XC9hopw_Oi<#(LW{EyU0 zk&Nn8sinf;ucZUyWVhJ%URR5To>Aa7BHF6xTTMq*>%Fd*>wDH#wRiELZ5^>Y-ocad8!&X99_if{;5NeMP-pK05bk6P4 znCo~qnJ1x#c5A@H{1f|471>c8VdS^THk${f9yHH^YKB$n!7AJaX|j2cXFVt`9(b$L zCvkBlY?(w^f>Kduz?A-Ytn_ATzT3G0dNa)1;`oJI>IjB3!xt{C(_&($MK4#ybA<8x zw=;FOJSW4?;cITa?XCq0=y#ru@}AlxjknBD9>S3W|zp z^aeT}jo(|H%*~B7X}+}N1kMcK>P&u7Qb^d(@{55LGax0))`RRjtn3YB+L9z)YQ}fR zGVc$vZ|bBJSFZuHO`Tk@T%F?vC?xEwnL$O(zNuqxptQwR%CeN=D%7%Rq%F?UsPZ{W zP)czng6t>J*&8^)#l-)gXTQPh7Qamu>lN+^Q_y?W3||BHBq!0i=Q(uBNXw?3 z({yr_Jvia2P47kbPAH*+FV!V#Ne|aor(3SMbSPYM2If-Wx2>HO^Vzs$>nT8gTzh(zC znA?9`doei^v3F%`%|Bc=IePh)drP2FHr$GXERlSfr2 zk7Vj&d?ix+lz(@tU(0YExMv1Utg9Ke({K8wZew>A)Ey>{O%v&ZBS4A^W91mPQ}?*5 zYng^`X{UKh38&q`PO-8RE1|L$JkTMz?BgJvLqxrt4mk`TjLOIJAu}u2W0Py#-}I_4n2`t@SOtv<4ba zHBxGIaB)%^rF%fsvUcH6WRT5&X8QoTg|Alf+K zCo8x?m#*qkrM&4Z+1*y8t{_XQFIv@Jtx}ZJ)lRY{{Z6_M%nzE$jZIWrkPS(eQ`!>97wrJ_w& zfH-!03XsNrWqgXL%4{p^&46+Z?Se?i5khBa$!)lFn%cVBrIK>op1lGy@}qi3o{u$7 zJ%mC+eNehgrt5dZ);e9lsoJO>*0AHu#mQ1p7y7UuLRyNYqLzwUD(alVA{BKGn9{-f zI!?o-7ESe$0y>?zx9P9H4$)}&v>&9m<8m<9LG7VSW72+q%sR%}X&pG_$V1ELl>XD@ zBA!0H{jNXg9JR&kTS-HFPYsz599ljyoU}n`HhTlb#pp6qy?>}|^hXe`7mqAPa^iu# z_Ovq{`~voQkUc>uB#@oLdf+-4m(dj^&E-guglCKc8^YmsIxyX{UgQlIyo5NTFqPcShs zy*@XdHY(%d-7|A>atk^2MHijkobya_R_egwf5pIJM&o0!C%BK+vwAPY#S6n+YL`CN zK`G9>T9scxQ|XOg%jy;T8C2GN7t`8d#k%b)p~Q~W3d>%x^n zG7W;NHXNDPq8Z=h&HH#0m6~C#`=`sLmqJpGQ+})yXn{EJTfJR^Y#O+M!F#;O3DkZL z$D>z-`lmVcGa9We%wTjruxI2`+*ue5G`A+32x;>WErF>MNnm6BXAcfbM@C^Gqxr+?&utmSV(qF z(H3oHhCE19M%rPyHtkFTr6sA0c|Z3p0pjAiE*649P_=mRMz@jCTwONh(nCvPviq&v zAE+Da#1`Fu9=Ht}x+h!YY1SyDBOIGtmLYTmd%YMQljz4aqAt;E5AAcT>y}BT&vdtV z8YvZZU3Uw?x&+zx2a^Tu&|OxutjX?_z@c^RM*MmhgUP}(x)Gh%n7pE!u`FKTrZ*B} zyXR_VnU;>G#)9l)FW={#Q@t8wQJsnT12y1#AE}*Tr0>-*l^;GhdGz z2UKJT1&g`s}UBD*JhH6H30h_>! z;{ri`yWeD`$=IimfW3>Qy9FLImO{`N86;p|NMsipQadpngoc3`(1b--zI(T1Anay>e(WZHJ*et!|cxxfEcmf+kB6@s~$tK{l%g366{W_sNIin`Toa8U`J^cSDLpWcZY z(n-VRK~FMX*=e~;|e+22MO+gs$~$Z2;Ry6LtXI9A5Z zXszzIPbRFWEuPF@sqrm|f$=D_?Rs6uYu5O(X(Y`U7LL8TV|gJb9h2 zNbl0&#Fn$PXAb7)|a?pAUjKg*@CA_M0>h%f8n zO0B>o5)~1g#NVj(9a#fa;k4DgjrOwbdLi8@OKY9c3Y`YB;7x*=ge{XO+hJunXxi{&k_|Jeo139Ud2nuq zrRAh-9-Nz@>}@OP`3!}UvYxA-(2_XHZ3T2 z(sOO;JXWov5A3yPJPn*#Y2taA8T&%Q-oT`(>n_yI%Tr6A-Bi(Cu-ql9yGu=^MnTuv zZaFPlK=X^A~PW5tzUGhTx@dV-)yphxY*F6 zBhlHrcxV|y9R-oRZ7_PK#>kS>$Zwraz-G>a(;-}SDjTsyQkf@6UH|hgcJGs6ZjG!7@yPAR;QWG|DLtv*RdzKaSfc? zC<*fIJ||dp8;-T&N4?3_mTxz?SVzX5+&cugcg{?=(`l_++U@7?%Vs4vbANC)4B2-U zHl%^oMs-v2xD=AQV1=L%%)c{nHj_u2IS&fKxO}m1>Ld?JJt*~HK^~}4iVMDZLXT@0 zIGc)EXJEA+^_1+Dda!O*6oPdLPOgyDwInC~W_EGTPo8kF5UdMya)m@%61q~&v1BK@ zahBBOLD^Jcg0TiclRr~EZVdycRIk8q*^mZS>+-`dpOlogxGqT{C#eX3m3CLI!zP2m%meIk`e& z{HMz$*vu|2N1$#jAy}8-RLh;wd46JRt-Dh_Nhseb@L4C!L_|E98^@yQRO6 zJ;B7lCAzuWUJU(KS1pHiz4(gx(m!&l5%;;vp53zSPABjWyKTBzoL*W}OHJ`>CB8>5 zvUyF%3+df9`Vr2mP2&NZUU{0TQQ0r=yI2|3whuGow`I%eHgQW{T~j8y$?I!u4pu8Z zsUk~zE}x~4)Wt4^WMTvtsg~)sBDd3W>8Q^5J`i=Ad)@D^oj!4K_I?spCt#-4Ol;ub zZU{~`3cEJ3^3 zbeeU)aMJ178<=~H!E9z;ih0Z2OfjSJG4^vm^GIAg-hstW*}GUbiLRy?XiCO&;yEO% z2A1s2Ov9YfjKJPN>GF>{%`9Xycll>i zNZ1ohx?9pct+B9i8Eo-U7~CM9IxRRxM12* zGX#0&LG}bU);;cR#}2!J(^i)gyP2NM7t7>Pj8H0S zll-QOE7gpSibnz64_}=D5_TL4 znCFUTy2+M|iFZ@?x7qe{>6}04@*t~f<~X%Yp#`1Q*>t4Jxkj40a-8yG3Bi0e<(`x( z#Z%Y;U(Py;B`z+FDkmcQwpd)8|Ly@W?1#8g<$E-mJ^XZL8)ePJXbncTwEGe zPDH5(bHJ1imQq|ARZc`H#W`R~2TLg~jVdQ%4T3q}IN@OSh2*4`zeaO{&eD?GaMim^ zbeh4c-CA|FTZfKq$M3Zt8J-(NTbrG2+mo|9yPg{zyY&~OCM#~SK=5}l0Xv^<7 z-nOCNG+WVIhUmXEnc6v9E5`gasi?=mDfLK4Fygdc%)S&$MO`YRjfuqG#s7~wtYh3% z=h0>^Bz3ryPs_fLh>OcRQy-JPi`n-FrAMvLS>;3Jkk0a~^fC8!JDt|L6*=vWL+=>S zc|8^#i$h~PI^tQMV#c9E2ja*nq7~?84#Z)9wA$dro(ey7YDqQ{L7pyVf3#Z0#XR#M zdxCN}UETU;sHx+4I9;ZY$k}g|yqyq~qtzZy@{Wx6M4m zI-8f<#Kro`qkO28;_|HYF{Kpixs(rOUy5rKlJXSl#N3bsWe28-%WLF8X^UgfQc;`a zH(gw*W^`0c!Xyux(9*?ap9jUoI=7jGiHl8W>EhPtEa<*&@?qlQx=h8zbqNk8(c3H! z5#5qG=2Ul#Xx-mmKYfinIGZs^4Fl`bDf10d50;@cE=~;>v(JOGF_3*8>}^vXuBB(g zW?ar2Jljk6j5h*zksNDX+x_`P{dU0_%PWiFK z#rbT?J*h!(HuDec3yBacm(%iNNoOISO}QuR3(017vDAZcCaqBqmdoUIW3ewJawt<> z7jNcjrY@Uu>Dd<&adA0E=Eq|1Vmb3D-+ASp=-OhO0;X3_=k(?&{f5n4ilsjoXHs!- zxw4uci+x2c9oBs3m3y+83rRTwbz`wFB;w*t?_xPcw62TU6O>a#>$;fs&3H~jT@FE) zyFotybYnrkNyTAkPC5GY0ZJ1Czah?2nkt5agK$*%OpQI_uVvLrt9=(pdqg zwiH_jPCci>cTFWpVxSz-Sskt%(pjBdk}`dtgzX`n`O6S;24*?u>j*~W_OQ-o8G^lm zGCx=@r{%{I7w5An_hd6q0netIky2bPr{%|zQk>7G+>;sv%l(16vDg<99YNWaV&Zlk zL00`i_IXg+Vw3!)i_6}{xgPbFfUr1^YWbfkH7|7nma>Qia z61|!GgR?0lLa=TgOt%Ec5tCI(N*=6AE=|Y2v%tPBmLn$9yj1ny&0LDBGBHcXzL1EE z%^W%!TUT)s{UJp;B1DS>54y#F(qKmtk3yJRcPCiWP!MaRqG<9|Vbh-5G zUCjP~MCnnN%W3(sbcF!JO=- z4X)v0?e|SQQ0l?DNOdm8LL&9xILbPLtSV|LB;(vy=9v&ILup(bAvlgsnP)<<45e{# zgy1+jWu6JaGL*)}5rX6BlzAou%TO8@hkb{Yy@C6jVAX9n)|wqTfz`Id&{}HwYgRzo zay>dnJ9Hy=)v=mxKv&hczBkSvQ+QTnVBoAeL71^`)&=ad%Mg(xT^5 zii-#pJr{ySgo>U^Jy=Aj=sEj(Pzp(r3yYo$!6HIM&vgVx7PPmv55^NVyRDsSywY?+ zciBtkaQag=+osgHk$SMmg+7!ILm9S+JNgm9=sPvJ29uyZ>@@pm$dlySvobgtrk5Wh~Vap_vLXv?|>EnhZD04F= zzLtvGgqAL@RMa{uCSg*|n9$P2l{~1UViLwa4~mOT+^LJp-o?7MSb8%$SLTK32u3mm zoQF#jF4c?%ic!#ptY)N;nD|%&RQA)8%e$&Nep9jUoI=7jG zv3GH~9E$NFZEzuf>ICGCCI)WltNP1#nNG|OHlG) zU4l|k*CoilqL%((T^H-B8JWN|p{gSo$poeWLaC??U}>YWuc)OzsP&scpj0yku(VO7 zn$co02xMQ)$ONW=H?>jo2(npm-{a9S&z{|~9M1`s*VEIA8-BavdyW@b2TqyW38yj9 zy?zi`k<;$bY06PIaI6ET&etIHbKH{j4tdUCJG9KjO!gHudjr{b7Q{d-m8M$iK~rKF zU+O_5VydMcG$n@dr5;2grdsMjQ(_oj>Omx8s@d0r>q-Pq+;LHu{W?rQ#Ykk+6Uf^Ke4X|#X#_wv1Cs$xehM!twqOb zcUzI$X}M0*T63cnYuTo2Cl8!G-|6(df#2*lqI7+vV+VHIQ8#2pZrh<-;b@17JJ%Z? zg`jb%fCQU{;M@v}5QHpcEQO#kGDsi<0f?~_g2u=ofe-{B#!^Og#>gN6`!2t@7(8Yy z#l^0-;xe4uWDHPXZ(x7Wl$rlsTu)|yZLg`OSUt;bHfdUT zK9j-h3GVkJ+Q{GV{g&%3TPuzoCD;Da#(Bqz0^19hoFE{6G|x^nt(I>$Lu>0X$L^&2 zfM+qkzSm!)8S`dfuXz@^w$p8QthOKdK?s?3UXne*#6aa*BNy+UnTz|Sm=<#8Sy*#( zkQkVYrsM=s^Z+ZJudmfW)^Kwic3|{RC+Dd_30J+8C2GN7fV}QF;kpnx4Mq% z5uWK#o9uTZ>K9rE_S*AZ#m@YglU4U1siAw_fu&a0ombx~V_5o8H)yJMlt%iE6aIHI zPkl@nRnFH5!5lE9gQbv^MwJs$M^N<~8ouW_jmY&qtK+*g*+BnGhE4sKd~?2W!ogBV z>HWH)tBosdEe&4BS<)irZ?bjmk8| z8e|6Zfpc!x?M=0|9fwXZN#|RqYrW3JtOiZ&UA#AN!cd(v({z_;y4>*^4sA-0)*M=W z=#f;b5%I@GYwNMSz#Sdyh+g214z+dD8|fxvrzJHL-C==ZM5YvTKUAXfre9 zLE60EbV7I8ONvL6ibdS5)~20FptK})G4Ee-g0|mW_w2UY7-U0owRY$<>m0aci@3P1 zi-n*NocGiRv?TEeQ(M7|4mayMuUz^QThx{XZiA-yJMr2!%^HQ>_T088j99HB*z3j6 z06p!*v=7E(``y+~%MJCd^|q0(o=iaRfW)>PhJ)_&WWIVb-;(KW@ibB@>bi~=f^`Y9 z?++#m+G-R+RW;Rov^ynm=pEw*joWF>bN)w)o{_8&$1gl*EQ|LqSUtPvYG#?1q;58< zm0n75Eqs(%2nxY@cljj`*3El*dHdNSWISWFzue2jTbLv{g=V9#|imrXvp)y|o($Bkgi1jsJn z42()2H*;^M5)k7=LeLl)B+zvhSk3Z_i@{^YQV1F&g9Ne*7=Rc{*#&Hj3=+f@wcHg3 zR7|AQgC?|eadn*qRx=B_L6h!>%q?s%aF<=c)ttcI#cBdmb^%v&ZjuVB8QBGF3=;_Q z+x;dhO~yWj1ngZb-7WB#u@r*F$RGjxLL$3>!DGf!b^#kBg9K8|01#s-1dWkF0`~nu z*#!(9GnTrx7+0E%zjTrbq!ibsDFlU}>;f*x1G;*U)g(ImwsC??7Lf1iVHkg_*e)QA}WX=1PcHaKJE{i=oFI71sn0%AL`Dq!Y`P1guQ{^>^34b zB2klC9Xqhwjym8pxz|jEx$0t-Y1@(e{Y3=l{{CNCf^#!e2}bgkUb3 zk`IJnNl>}b*mwEa8z}w3+{{(-fe2dojaOtUU#i#G5ccO-L5`S`=&kS!p zRaWa>c$r(@PlvI$15@!!Uux3dBfE9>=a9tq7P&Zb+8u{(r%^}uXWWd|>VErV!iw7B z$^4ZX-;x*@k22e?*QGnOYkb)>l4cAHyNh&TG2Qsg%EpX=>Qw9hw84TH=w#|s;GB{ZAGt4G}+LCHZ>LL^?q!uJb9h2Nbl0&#Fn$P zX1j_Jd>S_Jae5 zmXAENJeh*FnMZZA$ppGmtaswbZIiPxuvdybKWN)6H>5^y$@bK>aGh?uV}%`uLZTJA zXPa)-=*ExLm2rNXS{fQ=(N!VSuGPygLr}&KCzJ1us+**{l^n>=aw)9Hz_}0N%evUe zEt8B~L~xRStI~I64OE5GR`)jAY9TgE?rn@#=roWOzcsJ1XngLL8~38)i;j}ZCc`Lj z?6x&@7q9IGs;*JfT~2elH|}OpOH-GnQROrHrcPX3#jV*i>|NZSVa>bLmYQk(Y4ZKPK5Qqq?~nT9gOpW>{KI z%I3kj8OokujSg$-gz5fU!@${e7IX%(T87XW$ZCdFItz7+(Eb%CX#34|&u-I#VkbS< zmd<0 zq6Nh6QB(WtCBC>nHpG8BSAH*b^)=aBd4Y zDa^7iPUFw~-y(uDHwgb=)5H~!5g8;FYyJvtJd zy^DvIA=FV2$=e3;D{^$aLi{FOybE|_$!X-bPA6b9=fUX^!*AWp1f?E~z0JOwkvxc{ z(o|;$O|lEvl%9%TL~zbyx-DDE&MeH$P$5_)-(}OVCs?B;$^OpieXe2PY&r`%16i%r z=?rAGP9mL!y2WR|>;kTdkbNOxZ(!2YG2R8d*I%PE?&<8UHP2dHk55rh6CmMwNP919 zW}k^92Lt;vFl-FmM@u1eX@INFs-WG|Zrcg1_#lmm{QL=g2@s6W>1nIe%;ta3TJr1I z6Wq84&TW(g`F5WZthx=yTJfXaen_R3TV^8iK0^B=irrYVX)-CP!bNFSmlAF0d zI2(rSI}01qz-ptqDS2E9NnNl)PzdJVnK+xtqs^QLgVf`y0*B5Y=Y1wVa4kJ(q$Is>cqsHapdZst5VC1j9yg&+Vi zmXj+a#(%n8g3avWas=we5`uLJPOgwlsao93E}jxH$P+>kfEdf7*LRJ-aMB6NzCu3f zzgznI*b__)T%w!1?Zwb3AW%+eSaaS+!|AVACs4Q#C64<$V_`quTaiX8g8nIo&31$*XJ1L^pYT zjm^Po#V1u{Y0u@e6q35wrI1XF;3CyB-B#pwS}q;c8Q%w@UP7(={k794F3#Rh!s-Of zw3>+x9NZ1T$wnbqHxmvj>ZZHuQn!H9i>Kn73F6a!7k zcuqWrWOaPHOki-KfV%%6zJjLs*H0pb7+9AgdxHJ8SYayFOC!@N$S(g2nL|nY-U0h@Gs4kmw>Dd<&9YJ~dw48I3SUQ4Hx%Fb1 zJcSXhlz{pG8Grs zC3s^0eOKE17KX_-33aG#-7lV0dYZuOy`7ufw>E6$Yu zi={s}whk%rP?rZ~@~8y3eiR+Sh|}Z|djr{5Gt^lKBb&AWcz)2fTkd(Z?iu(Io%!Lb zGeE+QLjm(#@k}?_k}>ga>i#y{elDH!2VEXyRm~iywkforvpSoOR5{m3Q&)~tek>uF z&!*gyQl)qbJK)P%N3q1krBUTXWZxExi*r0zI+(qSb=3^39<>lGo!N3CvL`6jOpfPD z2aAhKqsoaW^k_`E)f?!`r#Kjf7I+TRHi{n{-^)h0|4_&o-V{P4ewAE<&q0`)M zEgWt69mm@?^qXcYddm>~mnKs?XKTfnza|y+7&xUK=?F%g){EJfVyUQ0WwbGo*t_`u zQHOPmo9aB;%!Q;5m-1=Z7ZP!Cd1vZlvUf52{-E@z^*O72s2tK+o|Qi4zHX<}TDKyn z-Ert013ItAqGNGrj7LX2>r>1)bm%}FIYqPr{mg+l?2lF(oY+(0hfXcYMk2`5#q5t( z%ea_l9%N5Y4yUVI{|q&C91o|<6cRc6t&+DBf^xK4C3tZn_D8ExDdv5=U;4reyzav1 zRCyxUd%w8l*sJPp;N(5y%pj$D{+UEd-7-Y7;=V9A_I`nmyjY3kMLY7MaM;4acRjXaH%G0DJL)jkQqYTO2?(oGd|is*oe*(b?^X1qpY zv+pdhZ;NTr#QU&for`g$X*6TZFk~~A;@MziUr5Bobu)svxGq6mJs6eSKUnuqmrE}$ zF2^Z9mbf^dO}QsE2+n5yfqfwng5`2rek|!McMiEylyP^ zg+vZzs_Wv-T+P&FQ!YLGLLx3M=g9n6>|HEp9_2f)+!I|}j8nk$>gk-`Jf+{TnM<+s z2jfgCE-qJA^JB5EsHMZ2@4RwPHgh2%gh!RQRr`BuNaELprO&l|wqKvrAH@?~|}Sq%(gRLe9V}=X@Q(sN5db z*(^h_H&EsW%jLBESmNS*Hszjd<|*LWR5MbF%jLBESW=4f*_3-ygJ8KoP&XF)LZTxm z+fq#2t|Q2*Kgd20N?UA_-*j==yI5C9q?*yWGA~R=P^y_cTDowlW^`0c!q`_co7u%C zj;bD4TwI-9lCnlcUH4CyOV8fLat3BON9M<>kq2ipc~rx|{9irEC+rJJ4T9`lJR1Yq zyI78xtXrZtbANC)g+vI}&4cNd06Ai^DoM$MRmr94*moA#x5aYAWSW<%{=1n=aaAT} z>DU(%aj}_0M`MeNN12#~)M)C={!rD};^M00(sbhDltk5kYY?2xu#M3MhN>tA}+4$cJ?lo zBPQ#*Sl1TICR-D#I)V|WcRSga;>}!9OP4<`OVVLAsZw-tH*+D;{ocukNj+GXX^p0? z?w>A~p1q6NACM?L>T)?PKbEeLV2?UK^$ea!OHvoI5UfkEOd**~*E#2x=nP~vs@sqT zNciJ!9V%vtM!F%pKO*v^V17 zqEcG)TuN~fp`zzPu!vC6bEyZ52o*hNUk^$lDRN=ab0JtnsOY(l;K+jZ*7m`8!e+O% zQ;k=ePUtRs$sA69%4XY?IyX`e7P+wKIs1B0TwLVBqUY>gEY(br3yYrX2uAYSS`oI) zbE#%BFe-hNYNislOd`pH85os5vd@F!;!1waBx3JkX^S)7s`OC`NhNHVL{dmHFe-iA zkOXCJ#>CfBQJc`x#g&R$N5v#esu>eny10@DbyQ5k*yllUv57l%aoM|A*A`1}M(4`B zFde~2rhxNsX~LzN(LgZ@+K|c|hMnV~4Ly~LdI(1a!M>uF z{$K^K4keLlW(Y?GA=OL;XhTWZS2KCtt)X8rPaz%Fy7Z+UtV>Yp!MX(5*Mm|>>bh7u ztaS-W9;{1HD(bof*;mxkAFS(QT{R;Um?l(p1S6TiG(ad7wE-+`RQ46M^ar(mGYFJw z#sHQ!s#G&tECzw>s~MTVH1MW2Y92v0EAD$dI_BB4TbAQF!SZ@~T5-c~cYM$BBJ02@ zb35TQCc4)TA}ey*9Xd@p>IRN=;MDmVgno`&lHMWD8El7^xtPhmqGoR(`_6(Gh^5k0 zOFd{x4C6~Zh(t`a)PttPFuv4-NW@f2J!nb{<4Zk=L`*gNdXT+=HR?fAXH|>O-az(q zGh$%1oHt0to}jeF17}tHByDjuZi7_pn>zLe)@bUcbV~ccyYVOX^`ICC9y6Bg2`1OU zMZUG@SnX~rayu>8XYdRf={*U%1 zuiAlYFSZA-kWP)%HhbDN9-3hWK+51KObzl-b1?62)L)fB5| z+07Jloj{XbEW?U7Yo7CjgdhDAqYT>r4Tem1_^{905O(A&=?sc z5P|^2SPDU7WRO4z0uW=#e$XTa8v7Iy2tfd1EQO#kGDsi<0f@0=Pf*%oW1m6-AqYT> zr4Tem1_^{905O(A&=?scVBge{HNK#ZjjG)4vq*b|ht7(8Yyg`hDq zNFW3Oh_Muc#>gOn5CkB`l6_Mr1{(Vm5(q&6Vl0KAF)~OX1ObS#WKU4qVq>2|0wD-M zjHM7XMg|FlAOJCzLeLl)Bw*jviGkoTV<`lUkwF3>2tbUb5Hv;x3D^^qwirBSEQO#k zGDsi<0f?~_g2u=ofe-{B#*%$gCk7h(6cPwQ0AehKpfNH?AOr!3v1CtB+G1m$LINQO zK#ZjjG)4vqgdhMhmO{`N86;re)QN%MF=HtNjgdhDAqYT>r4Tem1_{^`gtj=or>Wxy z(LvifVz(84TAb=V?Eq{FhB?z0vm}g1V@k<2Cye6 zZLy(8N1_YC5hR8ILeLP{NOU1Mg2XUD2pR$#iO#;M69Y$lW*8s@4S|hB7lI>53FhB?z0vm}g1V@k<2C#4H#6UxjjzkxNBS;JbgrFg?k?2Bj1c_mQ z5Htif5?u(6ATbOOf`-6Gq6@(hB!&S(&=A;2bRjr`#4tbz8Uh=ME(AxA7zPMILtrD( zh2RJh!vOXKWq#1mqa)FU;0O}K03m1yY$Uo696@3jAOsD8jYMbP)QN#3J~Ipuf`-6G zq6@(hB!&S(&=A;2boK~2#z2z3=o2bz(%4A!4V{e0qmPPG0@PX zBhiK62ol2pA!rC}B)SkBL1Gxdo}jeFh8`V>E(AxA7zPMILtrD(h2RJh!vG;@2y7%e z`=(9|9Pyc9fDkkUHWFP3jvz4%5Q2ulMxwJPc)A^i)>6w~vjRJEtjr0H3s&U!E=^pp zwzd}z#<6x=J1sY~noj60dr88k8#s-~^}TJ@fkVqjhUbh>s1qOt)}g1;3PB-Am!K|6 zDISv#q>zk(Q|eJZ!CixvWEZt0yV$iPVqhr`k7-GSpb(sQe^ByZxjeY9<22kQw_!yq zPSEz7>z>^v<#^GG-Ri7cjg}ues>-J4R>Swaq<2qa0oRKxcgboe75FhU6gY6ok%yKi z+u`4`MGP$G$oyDBFrQ7iCql3sr~Ft#FrQ7iC+rF8y8QY^!|OLE?T+tJQ!|aJqEV`1 z;3yNb5Fu#BYc#eH9A#n_A_UENjmBnAaR1Oyq!Tz{*bN-Z_4I>~1AFaB4?0Gn4TVTs zJcOfyV4nxYzzSX+N+JY@a8wXNumZH9BtmcqM+G5GT?J@ENhA*r;iw>lUe92JBRtN?8&i4YvZQ9-bO`BV(7 z;MJidLU0I21tA10KpRRT1cz``5bO!+22CBGUMjW+uXfU#opXAzlZcCf6|&t>5+OK* zqk<5E6`&0z5rRWFDhT!j*)QaXffcgdP!b_HgrkBGf)$_*B@u!{I4TJC1a(cFynJfn zX(4DrOBYuN>Zq862|*KDy0}76N5v#eUOqLUrHjkHvmgfQ+-4Fc1Wjn^;tD|>6_YR_ zXhKUDS2_ziDkfn<(1eyQt`O8wF$oibCbV>Mg`kd#NtlkHYzYv8GrJgqP)i;($#1&2 zLQqG=BuogJ(9*?~QJs#8Nth5cp{0u}1a(wQ!i1m+EnQq8sH0*MrfZ93OMnoRBgZp& zKnh6)Mx~EJuoAXRBK8EOEzWqW(nld!30o$S5X``+^ic>_!j?%S1T!!yePrL%iGh{; znn@%CGcYQB6oQqoWfBR&42()2*%RF3MNZ(^ExM`G36|F_f2nslPX9`^Q)YZA4saF& z0f?~_g2u=ofe-{B#!?6xBZCC&3ChuG;4xz<1dWkF0wD-MjHM7XMg|FlAOJCz>`yKe z1C4zO34|a3F_uEm7#SoGf&j!=vL_f%zl~059a^66oYnxe7&u^2?UN9!#%+*F2o6|O z`y>RbaT}y!Pf+$O44hT%lMt-NZIDU`4p>zCBm}E*8>A9~0~Xaj3BhXI2C0PLfJL=W zLa-XQK`J3QU{URp5Uj>+kSZQDEw%hLE3hNSS_=GjZ}XPtIgQBmJ*(rpUS!e#eB9P` zX!*!++OuF{;J{hcJ_*5U+y<$H;DAN7PeQO7w?Qf)IABrjlMt-NZIDU`4p>zCBm}E* z8>A9~0~Xaju_wrWo3a>KE$0nV3Bdu2YM+E)HEx4cLU6#M+9&n|Wgm4l#|}~n!2yeE zpM+pFZi7@paKNJ4Cm~pk+aMMDZOUTcz**Hk3BhXI2C0PLfJL=WLa-XQK`QnH{HNK#XNPs+0FgjJXXG2*Cl1YM+E)HEx4cLU6#M z+9x4cjoToV5FD_m_DKj<<2Fbo1P3gteG-DzxD8SX!2yeEpL7H}eh?kBEqbRt{ExWCqmK$14Cv=xRD-LS9LGmj6HtWDtUU_Ff?9>rtb${{x6(?x>&2`UiyA7)o zIAPcg96Gc>f0)66z4o-vEr6^lE(RdRauG>t`un2v(MFsiniDv+Dv9V7f0sCs^BsU1vQ7D~mWOWy; z1E)?r69ExZxzB0%p33O4g}eA!cw0A&0=E%affIEDs-B&8$DyNVRBg=y=W(lK&ayLP zn7wMdEqk%$SX7^cem7{$(b)Y1Vxh7}wZpF0a-#I!wRszO+_FRG1%=&Cr?ozWk%fP$ zMD1ezbHmOIf3If zoQXN8{uiC*w%v%z?yBADIw~i+aj{n8O1oA6>+65R>5i>NNo`eKXKiDX6Zbh$dib1j zbwZAfb>sl4X6oibsb=aDlxn6fLH5;5rjSTyp^~=~g5!GBmA-aziS~8dqn%ZodWG}v zswO{@J;AJj?QSb_J1v)bUvd9%*>=6j`KsbKWeueHN*a@pdA2f*=9E^}LmJl6qC=SU z7sHBwq)sw31Lx2WOAPET)cKK9P1`f@sHy&uI$xe0G|>bm&5?I^spYOH=sMdirxiL@ z_bBVY!rbOH#l>~ptI`U=$q>wR7V3WCq|+xZ-be;=o50+F-7Q|zgS~1-@?iC{ty{=x zyN6wGIk|EnoI?+5=-03}uwM_h?Zehm*GulJU{p}p8+e)>EITy(a9YVUaBscDjc2M? zY1fk<3}uO#i#|a$4yMTuc5Y^Gpsp0h>&0O@;gBpC&#k)A8R&N-TG3`=VdCQ6>cf&B zSYf2@%AvMzZN+V@(Ar7lEYltadO|}f8pJy@URO*EjAuFqYjra(s$>3O#=zbL=9tLy zc*Neo?7*GnYG;NZ&pgPU;D%kunMZ-u{>@AtlywpKZz~|7P(XRd_%c- zWSv9}1ELk`W6{3vrtas>AS@xMI)bj(bUL&zO6{OowF5WaBRc=_=fFU<3zOb->D}RY zcwu|89(H)aI>tIYzwN=f2JT7?+-2>y$jW)K>=%+u9kaM@sl__0w<=2?)Yi-y`ei?YN~@4z~X(O@nS6ekh#e|L7e)Sn?>-4hYie3!9l#a$;7~T z#6DaPva4od7qcZu{XwnUoUG1WrQlo-Yrf=I+v>)uS1 zSIA8$>IkYvh2B@>anZaK5)*go;tD|>6_YR_XhKUDR|x8;n1l&I6I!~s?61Y#tEL2_ z!F%L$n`YC|Q(DM?UKo3VIs>JU(J_1;uf$42-boystki~jn> znZ1E~xo`AlZy@{b7JCEPH+Ad{+|T`TTlNOBFC^>@WM4?w8_2$pus4u>Az^PI`$EFr zK=y@%y@5IxkIYeTZ68!4JURq!r#e%)Nf#q6)7jrDsObiDE;-FZOl#K)djr{5Gwco2 zxj5o<7zuj=*;g~{4P;+P*c-^ckgzw9eIa3Qpw7k8o9WMxm-xWGnqhCCE)Pc1n<@lv13Q#;X6aFC^>@)a60x&6wmz_SFn~19f>YlHQC#CS+gDus4u> zAz^QzlwyMdtBuOOkgzw9{Ye$<4P?JPkG+9$J;?d25B3J`rOV#JZs4T16)&~AZqquj z*FHyEZO%TBy@BjI3u0j1Tq^`OJwfSF*LATF6oOvwD%8+$C8*1Tvh&Duf zv~+QGc`%ZlM>x6M|9?n$Xh4)#X9y z&FDzwg-Jb_N2YAJl;X0a^5RJ;&LdMcTuO0SQhD*%zjVdkK=vydqj6 zoc&8z>JgxAy@*^*eKGY9*d{MLm^lK(%2|Ma4en@4`ozW0@Bzh zLU1ge5)Xx72}on39KYVN!_aE0|BJ6Gh_9`i$!n!!?dm^dZ{P{O=OvdrSYfx*X{{s7 zt!>9vhk-Pwb@@Y|mHq>J19fe&tkvnAsSlMgiJnXOP+cC3WFK{TfU@(*fR#R~lwv)X z@}W|S%d^tQlpeL7OZiat7c8?kko{5^djoa#Agdm=G1S=XQdC7rcTeL ze5mBX@~reRB@gPkln?FiS!lXTOHSZ;4aZt^qBX}+$L0mmLEEyuX7X`y9!K!%3JI&W zctaW}O@)aAjE z8P<7jX=QI9`)Y>0fjSpQvVTxpCKeS zfm^n)uV&aAsLO+q^kxh)A^U2Ey@Bit33~&j6dM#+ZB+J!guQ|63kiDzr4(z6ra>V4 zLc-oa_JxGKfl`VM3amCN`$EFrK=v>GiGkXjZxG0y;9hzq!-|}C$DxB}=ui~vz^UgL z{J!Z&WnWRVuV$nzuA57Bd2nP3cx(G$d|=aVYp3OgR?`XHWiL6ysp$sEiA2*naY$!i z#A$v|3duC`AS)M3HB;BcQb_6&WM2=8fpuNXzL2mtaF5sNQlHvin3i4_^lQV>9STu zfxEm+VKX-^`LSojfQTCrvD_uAtETan1ILbso-4K&7mR3y@UHl+-hg>!J*3Ap*B?%v z7=GjNzTa}ljF5)vjg{UQSgkVHt?kNSW%zb${n+lpcFSpnj{0~Me#tboqt;O|2|Iy?ovycRIb1spYORj7 zf%{HA+v+5X+OF?01Su7@NrBMCm1;&u#UxDfpb0HqT*-qvDkfnYhalIP1u4ZQ`ArvB zy8JpSCSmLeN+B_Er!Fpg7t7?4&TS@PQbEcQu(NQr8+c^C}u3G|R^2j8=>Eg1V zJQ^t^3u@y`%L&yMB-*ah-KG0kGYsq3gIo)V7+5zqB%Ot1$Aq;+yWLv;vfH3d6gQ;H zCU02x+b58oeQ#!@6wB^6L$_a^;-8=Xch8$A2`@tbH0{XV<1P7d$p0kaTmDP`{V#o1 z|4aW5GBBIOt1&z9i^N zfxa~8%YeQt=*xjtK-2$}eOE{Y{j2m9L0<{Q$_Gb60Dt!}( ze^bym1Klfkai~gv3wVA@&_{#573gC?9}9Xn=v#xn4d~-Q9}oHj(6`c9zl4Eiph4}iWa=UUk9F_ z3pxNDf{s9UL9c>d1AQ3uI_UF2-xKt`K;IkmeL&wA^!-5JAM^u2KM?eTKtCAtLqIrx@PeA_^^v^*59P}?h{}S}CK>r%_Z$SSR z^zT6b9`qkT{}J?`K>r!^UqJsA^xr`L9rQmy{}c4TK>r)`e?b2i^p^h_1pF_3{2$Q& z3;KMZ&kyl3ppOH6 zJm?cZ-xlec=m&s)Am|5yelX~V zfPN_Ghk<@L=tqElB6t=r4f&BIqxH{xayVfc`4zuYvwL z=x>1jCg^X0{x<0Efc`G%?}7e4=pTUoA?P20{xRsEfc`1ypMm~4=wE>TCFoy){x#^| zfc`D$-+}%;=s$q|Bj`VY{xj&mfc`7!zk&Wc=zoCzC+L5H{x|6Vfc`J&c#*m{1rU$_ z)&FJm|AIar=<|cV0O$*Xz7XgOgT4spi-Nuw=!=8C1n5hGz7*(7gT4&t%Ywcf=*xq? z0_ZD(z7pswgT4yrtAf57=&OUi2Iy;oz7}W;^tC}>2lRD8Uk~*4LEixM4MA@Oy$$q@ zK;IbjcF;$F-U0eZ&^tjdfZhfAD9|?neN)gk1ATMQw*Y-h&_{#573gC?9}9Xn=v#xn z4d~-Q9}oHj(6`c9zl4Eiph4}iWa=yO2d4fH|KcL!~QUIg6$-30A`UIM)gdIhu#`W~PUfo_3r zgZ4oCpgW+?1s#A6K}VpwpjSb!fj$g+9rSsi?+N-|pzjU(KA`Ul`hKAA5BdS19|-zE zpdSqSA)p@$`eC3S4*C(G9|`(VpdStTF`yp{`f;Ei5Bdq9p9uO%pq~u-DWIPU`e~q_ z4*D6Op9%U|pq~x;IiQ~l`gx$A5Bde5UkLg|pkEC7C7@pl`emSB4*C_KUkUnEpkEF8 zHK1P$`gNdR5Bd$D-w66mpx+GoEuh~D`fZ@!4*DIS-wFC%px+JpJ)qwU`hB3^5BdY3 zKM49mpg#=yBcMMD`eUF!4*CgT4glOM<=>=u3mX4Cu>( zz8vVwgT4ajD}uff=qrQ13h1kXz8dJOgT4mnYl6NOXbbeUL0<>-bwOVb^z}jC0Q3z( zZw0*#^o>B@81#0~M}Xb|`bf|_K`(&b1^Ot^HvxT9&^H5pbI`W{eM`_sgT58$V?ZAZ zdN=4>gT4*u<3Jw|`UKFo1$`pulR)1N^vR(2fIbEEsi02-eLCpdgFXZFUeI>{eJ1FA zp!b8mBj~e0pAGs>pzjR&E}##9zANZ+K;I4YLC|*xZG&C}-2mML?SNhay$pHMIOpw9&zfDS=Npu3<~L9c;640;{(d7$qJ`d*;#4f;Ny?+f~Vpzja* z0iYiU`az%{4EiCU9}4nKMVSEpg#}#3!uLU`b(g{ z4EigezY6+mpuZ0K8=$`l`dgsC4f;EvzYF?%puZ3L2cUll`bVID4EiUae+v3%pnnef z7odL$`d6TT4f;2re+&9|pnnhg51{`D`cI($4Eisi{|fqVp#Ki~AE5sU`d^^`4f;Qz z{|h?%0)IUIKR=BBL7xxw`9WU*^aVj*2=s+PUj+0;L0=5?#X(;J^d&)G3iPExUk3DL zL0=B^etwG-g^l_k%2YmwQ+k!q3^huy^2l`~tdqAH8`c%-Tfj%Ad?LnUbdN1fZfIbuS zKG6F?-x2g#pw9+KhXCF z{Q%Gp1pOe;4+i}Z&<_RuFwhSN{Rq&H1pO$`j|Tl1(2oWEIM9y={RGfY1pOq?PX_%I z&`$;ZG|*26{S4601pO?~&j$S*(9Z?^JkZYv{Q}T01pOk=F9!V*&@To3GSDvv{R+^p z1pO+|uLk`Z(60skI?%5N{RYr)1pOw^ZwCDq&~F9(HqdVe{SMIY1pO}1?*{!I(C-EP zKG5$6{Q=M)1pOh<9|rvq&>sc;G0-0e{Rz;Y1pO({p9cLI(4PhUInbX6{RPlp1pOt@ zUk3dZ&|d}pHPBxN{SDCH1pO`0-v<31(BB39J<#6={R7ZH1pOn>KL-61&_4zJGtfT= z{R_~)1pO<}zXtsq(7y%!JJ7!e{Rhy01pOz_e+K;*(0>K}H_(3v{SVOp1pP12{|5aZ z(EkOUJ+Lnx|6c&c|DewY`uw0T0Q!QUF9iC+pf3XYqM$DZ`r@E30s4}lF9rJ2pf3aZ zvY;;q`tqQ!0Q!ocuLSzapsxb@s-Uk1`s$#s0s5MtuLaryeQnU!0exN2*8_ch&^G{m zL(p46Zv%ZJ&^HFX9rO{PcYr<;^iI$Vpm%{j3iM4t-xT!CK;InnEkNHA^wFSi1^O7! z$AaDs`qrRt1Nu17$Adlr^ld?(2>K+@w*!4L=sloM0evdy(?FjN`u3pD0KFIV9YCK6 zdLQWhpzjF!EYN3zz7yy>gT4#s1EB8;`W(=A1AP$m-9g)+7eO~bH$gj~mq0IrUIFcb zz6a<-pj)8Zpgqt&=nm*}K?k5i&=Ke^=vB~bpbvvy2YnvsdxE|f=zD{{59s@Xz8~oO zgMI+$2ZDYO=m&#-2gMI?&CxU(w=qH1I z3h1YTej4bfgMJ3+XM%nf=x2j|4(R8Ceje!OgMI<%7lM8f=of>23Fw!Cei`VOgMJ0* zSAu>O=vRY&4d~Z`ejVu7gMI_(H-df>=r@CY3+T6kejDhwgMJ6-cY=Nw=y!vD59s%T zejn)fgZ=>M4}$&>=nsSb22QPlEmw=ud8SZ-V|7=x>Am4(RWK{vPP>gZ=^NAA zgZ>5RUxNM>=wE~W4d~y3{vGJwgZ=~PKZ5=f=s$!03+TUs{u}7OgZ>BTe}euO=zoL$ z59t4b&K}SokN+wvy4=<9*LKIj{O zz9HzXptpg(5$GF(-VXW*&^tgM33?~!1<<=d9|ig*pl=HLW}t5l`WB#X3HoTzw*q|( z=wm_e27PPLw*h?|=;J}30Q$C|PXv7u=-Yul8T1~|r+_{c^l6|^2Yq|cXMo-d`VOGa z1icURe$aOWeHQ4mLEj1Vok8CP^a0R!1$_?ayMaCk`tG1@(2JlOpqro_&`Y3~L9c*z zLEi)PA@1C63)_t~~>+qP}nwr$(C zZQHhO+xDLOpP5_r&&oqOE2;GRSKY}NJQk0`063cM1p!mIHbycVy+>+uG>5pTkq@fN%lZ^PU14!jfZ z!n^Svych4o`|$yM5Ff&a@ezC!AH&D-349Wt!l&^Wd={U>=kW!65nsZW@fCa(U&Gh& zjsNn0e%1D$Ci}m~fBawDw*&mg|FxX^zy7bh`(OXpbpPvM|97(gGydoO;5Y;hi9_Mg zI1CPp!{P8a0*;6y;m9}&j*6q<=r{(BiDTi|I1Y}B^KL`iF4uHI1kQ?^Wprs04|6N;lj8GE{coc z;bM53iEH87xDKw1>*4yi0d9yJ;l{WL zZi<`X=C}oJiCf{;xD9TL+u`=O1MY}B;m)`V?uxtN?zji;iF@JRxDW1&`{Dk003L`3 z;lX$a9*T$I;dlfdiAUklcnltk$KmmK0-lH`;mLRko{Fd8>39a7iD%*2cn+S6=i&Ky z0bYm~;l+3fUW%9D<#+{NiC5v(cnw~Q*WvYe1Kx-?;mvpp-io*3?RW>?iFe`Mcn{u- z_u>8c06vHh;lua{K8law-Yw~iErWC z_zu2{@8SFS0e*-d;m7z1eu|&r=lBJFiC^K@_zixG-{JT81OA9V;m`OB{))fh@AwD) ziGShW_z(Vz|Kb0Q@c-}L|NNivfBtj&|BnA$2E>7IU>pPo#ldiJ90G^Lp>Sv%28YGr zaCjU6N5qkEWE=%Y#nEtd90SM1v2bi02gk+naD1EqC&YqX z2B*d8aC)2pXT+IsW}F3Q#o2InoCD{?xo~cr2j|84aDH3>7sQ2dVO#_k#l>)OTmqNG zrEqCn2A9RM^b2lvJOaDO}i55$A;U_1m5 z#l!G$JOYozqwr`v29L$#@OV4{PsEe(WIP2=#nbR~JOj_fv+!&@2hYXx@O-=gFT{)R zV!Q+|#mn$=yaKPptMF>P2Cv2I@Or!fZ^WDMX1oP&#oO?9yaVsVyYOzj2k*uE@P2#% zAH;|7VSEH1#mDe*d;*`ur|@Zf2A{>}@OgXzU&NR2Wqbu+#npPo#ldiJ90G^Lp>Sv%28YGraCjU6N5qkE zWE=%Y#nEtd90SM1v2bi02gk+naD1EqC&YqX2B*d8aC)2p zXT+IsW}F3Q#o2InoCD{?xo~cr2j|84aDH3>7sQ2dVO#_k#l>)OTmqNGrEqCn2A9R< zaCuw-SHzWYWn2YU#no_iTm#p{wQy}*2iL{*aDChWH^hx_W84Hc#m#VY+yb}6t#E7H z2DioSaC_VVcf_4=XWRvM#ocgs+ynQ-y>M^b2lvJOaDO}i55$A;U_1m5#l!G$JOYoz zqwr`v29L$#@OV4{PsEe(WIP2=#nbR~JOj_fv+!&@2hYXx@O-=gFT{)RV!Q+|#mn$= zyaKPptMF>P2Cv2I@Or!fZ^WDMX1oP&#oO?9yaVsVyYOzj2k*uE@P2#%AH;|7VSEH1 z#mDe*d;*`ur|@Zf2A{>}@OgXzU&NR2Wqbu+#nzfD__GI5AFwlj3AJIZlC7;#4>_PJ`3pbT~cEfHUGuI5Wmo8o4;Ic|Yl;#RmdZiCz6cDOz6fIH$&xHIm8 zyW(!RJMMvd;$FBn?t}Z{ez-p#fCu71crYGIfG^@p_%gnNui|U?I=+E#;#>GOzJu@Ld-y(nfFI&V_%VKhpWOX5szJM>{OZYOrg0JFh z_&UCUZ{l0{Hok-J;(Pc$et;k1NBA**f}i4N_&I)oU*cEzHGYHN;&=Ex{(wK?Pxv$b zg1_Q#_&ffAf8t;GH~xeF;(s_mkpF-0{|^p`1L43p2o8#a;ovv~4v9nI&^QbZi^JjY zI0BA{BjLz63XY1S;pjL9j)`O8*fFBi`(J$xC8EpJK@f_3+{@$;qJHx?umQh-nb9$i~HgJcmN)V2jRhZ2p)=u z;o*1$9*IZc(Rd6Vi^t*dcmke?C*jF>3Z9Cm;pun=o{4AS*?10~i|66_cmZCB7vaTt z30{hq;pKP*UWr%X)p!kFi`U`xcmv*uH{s2A3*L&i;q7<_-ideN-FOe)i}&IE_y9hL z58=c32tJCB;p6xOK8a7^)A$TNi_hWn_yWF&FX7Ah3ciZ3;p_MYzKL()+xQN?i|^t4 z_yK;1AK}ON34V&7;pg}Teu-b<*Z2*7i{Ih*_yhikKjF{#3;v3~;qUkd{)vC#-}n#y zi~r#OLFs=S5C_76aS$972gAW}2pkfJ!l7{(92SSe;c)~U5l6z2aTFXCN5j!^3>*{3 z!m)8292dvK@o@s25GTTkaT1&qC&S5c3Y-$B!l`i@oEE3U>2U^}5of}gaTc5vXT#ZX z4xAI`!ntuCoEPWA`EdbU5EsIQaS>b;7sJJI30xAF!liK;To#wZ<#7dE5m&;MaTQz@ zSHsnD4O|n~!nJW7To>2F^>G8-5I4e&aTDAWH^a?w3)~X7!mV)|+!nXP?QsX(5qH9! zaTnYbcf;Lr58M;?!o6`H+!y!5{qX=i5D&tG@en)|55vRp2s{#x!lUsRJQk0`063cM1p!mIHbycVy+ z>+uG>5pTkq@fN%lZ^PU14!jfZ!n^Svych4o`|$yM5Ff&a@ezC!AH&D-349Wt!l&^W zd={U>=kW!65nsZW@fCa(U&Gh&4SW;d!ng4qd>7xt_wfV#5I@3?@e}+MKf}-Q3;Ytl z!msfg{1(5%@9_ux5r4v;@fZ9Rf5YGL5BwAV!oTq!{1^Yj0fN#0I3Ny$1LGh#C=P~$ z;}AF`4uwPGFgPp@hr{CtI3kXOBjYGIDvpMu;}|$5j)i06I5;kjhvVY}I3Z4i6XPT} zDNcry;}ke0PK8tBG&n6zhtuN>I3v!4Gvh2cE6#?q;~Y3A&V_U1JUB1Thx6kCxF9Zs z3*#cVC@zMJ;}W|uGPo=*hs)y%xFW8EE8{A-Dz1jB;~Kaou7zvkI=C*bhwI}8 zxFK$Y8{;OpDQ z-i3GLJ$NtPhxg+H_#i%n591^FC_aXd;}iHKK7~)?Gx#h%htJ~+_#(c9FXJotD!zuV z;~V%UzJ+h&JNPcXhwtMD_#u9TALA$ZDSn2Z;}`fPeuZD-H~1}nhu`B5_#^&=KjSa> zEB=PR;~)4Z{)K#$j++91e%a5pYBt z2}j0Ja8w)(N5?U6OdJcx#&K|591q9G32;K32q(r#a8jHMC&wvpN}LL(#%XX`oDQeQ z8E{6N31`Mxa8{fRXU92kPMizp#(8jFoDb*61#m%J2p7gha8X zTn?AV6>vpd30KBda8+ClSI0GQO# z#%*w0+zz+L9dJk733tX_a97+7cgH<&PuvUl#(i*K+zQ#%J(Zd=8(-7w|=V317xn@Kt;bU&lA_O?(UA#&_^td=KBp5AZ|$ z2tUS8@KgK@KgTcdOZ*DI#&7Uj{0_gzAMi)~34g|4@K^i|f5$)YPy7r2#((f%{0|2R zLI2}`I1mnugW#Yz7!Hm@;E*^J4voX$us9qJk0aoSI1-MGqu{7G8jg-*;FvfTj*a8s zxHuk;j}zd8I1x^ali;K{8BUH<;FLHOPL0#xv^X73k2BzmI1|o{v*4^a8_te%;G8%Y z&W-cnyf`1uj|<>}xDYOki{PTT7%q-W;F7o$E{)6JvbY>Bk1ODcxDu|6tKh1*8m^9O z;F`D=u8r&9y0{*$j~n2IxDjrQo8YFn8E%eS;Fh=*ZjIaEwzwT`k2~OwxD)P-yWp<4 z8}5#K;GVb_?v4B4zPKOmj|bp^cn}_phv1=j7#@yC;E{L~9*xJ~v3MLFk0;=XcoLqB zr{Jl08lH}4;F)+9o{i_=xp*F)j~C#DcoANVm*Ay%8D5T8;FWk4UX9n_wRjy~k2m0r zcoW`?x8SXK8{Uq0;GK9E-i`O*y?7tqj}PF3_z*sfkKm*D7(R|q;FI_iK8?@dv-li7 zk1ybh_!7R1ui&fr8orKi;G6gszK!qTyZ9cyk00QN_z`}LpWvtX8Gepm;FtInevRMY zxA+}?k3Zm#_!It&zu>R<8~%=e;Gg&x{*C|OzxW>x5R(4K0dXK47ze>YaWEVlhrl6m zC>$Dx!C`SY93Dr&5pg6O8AriUaWotq$G|ahEF2rh!Etds93LmZ32`Ev7$?C=aWb47 zr@$$3Dx4ap!D(?ioE~Su8F40@8E3&+aW%k88CStoaWz~W*T6M#EnFMd!F6#xTpu^U4RIsf z7&pO9aWmW;x4}!E^CE zJRdK>3-Kbn7%#y~@iM#|ufQwuD!dx6!E5n4ydH1B8}TN*8E?T`@ix32@4!3pF1#D> z!F%yOydNLH2k{|%7$3n$@iBZHpTH;aDSR5A!DsO~d>&uG7x5*08DGIy@ilxM-@rHV zEqoi_!FTaJd>=o+5Ah@X7(c;J@iY7!zrZi?EBqS2!Ef<9{2qV6AMq#r8GpfF@i+V( z|G+=-FZ>(-!GG~T93T|^j|1XBI4}-^gW_N~I1YhB;!rp=4uiwua5y}UfFt5aI5Lic zqvB{dI*x&3;#fE~j)UXkcsM>zfD__GI5AFwlj3AJIZlC7;#4>_PJ`3pbT~cEfHUGu zI5Wmo8o4;Ic|Yl;#RmdZiCz6 zcDOz6fIH$&xHIm8yW(!RJMMvd;$FBn?t}Z{ez-p#fCu71crYGIfG^@p_%gnNui|U?I=+E#;#>GOzJu@Ld-y(nfFI&V_%VKh zpWgyB`X2|x zfpB0P1P8^zaBv&~hs2?9XdDKI#o=&x905nfk#J-j1xLlvaC964$HcL4Y#ay2#qn@_ zoB$`piEv_^1SiGGaB`dir^KmnYMchA#p!T*oB?OVnQ&&D1!u+CaCV#n=ft^iZkz|_ z#rbf4TmToug>Ye91Q*4{aB*A$m&B!TX#r<%9JOB^GgYaNH1P{f-@Nhf=kHn+!Xgmgw#pCdJJONL{lkj9b1y9A( z@N_%_&&0FvY&-|g#q;odyZ|r6i|}H+1TV$Q@N&EYuf(hHYP<%o#q02Tya8{-oA745 z1#iXM@OHcd@5Hk@N@hEzr?TbYy1Yk#qaQY z`~iQ&pYUh=1%Jig@OS(J|HQxWZ~O=U#s6@CF!VnThy&rkI0z1kgW=#f1P+Nq;m|k? z4vWL#@HhgFh$G?1I0}x6qv7Z{29Aki;n+A1j*H{r_&5Phh!f$&I0;UQli}nz1x|@m z;nX+{PK(pw^f&{~h%@2LI1A2-v*GMG2hNFe;oLY6&WrQm{I~!vhzsGuxCkzai{aw9 z1TKk7;nKJaE{n_I^0)%7h%4dBxC*X{tKsUn2Cj)~;o7(ku8Zs8`nUmZh#TR?xCw5G zo8jiT1#XF3;nuhfZj0OD_P7J?h&$oVxC`!zyW#G*2kwb`;oi6p?u+~3{&)Z$hzH@p zcnBVfhvDIP1RjY;;n8>u9*f7}@puBBh$rF6cnY41r{U>%2A+v$;n{c&o{Q(<`FH_d zh!^3-cnMyLm*M4j1zw3);njEzUW?b^^>_o`h&SQQcnjW&x8d!02i}Qy;oW!--i!C) z{rCVrh!5ez_y|6VkKyC^1U`vR;nVmGK8w%c^Y{Y3h%e#G_zJ#?ui@+X2EK`J;oJBQ zzKieS`}hHVh#%p{_z8ZBpW)~D1%8QN;n(;Lev9AX_xJ<;h(F=a_zV7uzv1ur2mXnF z;otZV{)_+N0AcBW91sV>fpHKV6bHk>aR?j|hr*$87#tRd!{KoR91%ytk#Q6p6-UF- zaSR+2$HK9392^(N!|`zfoDe6%iE$E~6eq*UaSEIgr^2am8k`oV!|8DboDpZjnQ<1J z6=%cQaSogl=fb&h9-J5F!})OmTo4z+g>eyF6c@wAaS2=!m%^oS8C({Z!{u=WToG5o zm2nkZ6<5R6aSdD(*TS`N9b6aJ!}W0k+z>ayjd2s)6gR`oaSPlMx5BM)8{8JR!|ibg z+!1%eopBf36?enkaSz-R_rkq#AKVxB!~O99JP;4UgYghN6c5A0@d!K;kHVwz7(5n_ z!{hM;JP}XAlkpTh6;H#{@eDi@&%(3u96T4#!}IY1ybv$Ki}4b?6feWe@d~^WufnVG z8oU;-!|U+|yb*80oADOB6>r1a@eaHb@4~zB9=sRt!~5|8d=MYPhw%}76d%LK@d!{_k@d=X#5m+=*R6<@>G@eO=?9efwx!}sw6{189FkMR@y6hFhy z@eBMCzrwHa8~hf(!|(A2{1Jb`pYa#`6@SCu@elkH|H8lVAN&{p!vVt4|2QBHgahLs zI4BN=gX0i5Bo2i`<1jcZ4u`|z2sk2+gd^i9I4X{YqvIGjCXR(;<2X1jj)&vp1UMm1 zgcIW=I4Mqslj9UPB~FD?<1{!ePKVRu3^*gsgfrtTI4jPEv*R2%C(ea)<2*Po&WH2k z0=OV9gbU*$xF{}$i{lcwBrb(Z<1)A`E{DtG3b-P!ge&7JxGJuOtK%BDCa#5R<2tx5 zu7~U62Dl+^gd5`~xG8Rio8uO^C2oaV<2JZ0Zin0B4!9%kggfIdxGV04yW<|XC+>xN z<36}A?uYy10eB!Dga_jxcqkr*hvN}=Bp!uF<1u(F9*4){33wu&geT)Ecq*QTr{fuT zCZ2_7<2iUPo`>h-1$ZG|gcsu_cqv|nm*W+9C0>PB<286KUWeD?4R|Bogg4_Ycq`t9 zx8ognC*Fm3<2`sU-iP<&1Nb05gb(8*_$WSxkK+^gBtC^t<1_dyK8Mfa3-}_wgfHVO z_$t1Juj3o|CccGl<2(2+zK8GQ2lyd=gdgK4_$hvdpW_$!C4Plp<2U#%euv-V5BMYg zgg@gi_$&T~zvCbHC;o+h<3IQ>{)YpEr~h$490&)-L2ytU3U{Ga7kPW zm&RpqSzHd6#}#lzTnSgkRd7{Y4OhoCa7|nb*T!{lU0e^>#|>~p+z2k4(3^&Iu za7)|@x5jO7Tigz}#~pA-+zEHaU2s?24R^;qa8KL|_r`s2U)&G(#{=*{JO~fQL-0^M z3=hX6@JKugkH%y0SUe7o#}n{GJPA+6Q}9$g4Nu22@Ju`l&&G4`Ts#lY#|!X6ya+GG zOYl;>3@^tk@JhT2uf}WeTD%Ug#~biQya{i{TkuxA4R6Og@J_r7@5X!ZUc3+Q#|Q91 zdg2&;I_COZjU?Qj<^%< zjJx2jxEt<{d*Gh97w(Pw;J&yY?vDrHfp`!ejECT%co-gzN8pio6dsMo;IVid9*-yB ziFgv8jHlqKcp9FLXW*H57M_jg;JJ7no{tycg?JHOjF;f0co|-fSKyU+6<&?k;I()i zUXM56jd&B@jJM#ecpKi1ci^3P7v7Ec;JtVs-j5I9gZL0WjE~@>_!vHpPvDdI6h4j5 z;IsG~K94Wpi}(`0jIZFU_!_>BZ{VBw7QT(|;Jf%9zKr~a9JjzNaVy*!x4~_3JKP?3z#VZX+!=SlU2!+u9rwUJaWC8(_rZN} zKinS=zyt9hJQxqbL-8;?9FM>w@hChRkHKT{I6NLtz!UK#JQ+{HQ}HxB9nZis@hm(W z&%tx?JUkySzzgvrycjRROYt(i9IwDD@hZF;ufc2aI=milz#H)9|WNAWRy9G}1^@hN;7pTTGGIeZ>pz!&i)d>LQCSMfD` z9pAt=@hyBC-@$kBJ$xTOzz^{w{1`vMPw_MS9KXOX@hkiqzrkOX5szJM>{OZYOrg0JFh_&UCUZ{l0{Hok-J;(Pc$et;k1 zNBA**f}i4N_&I)oU*cEzHGYHN;&=Ex{(wK?Pxv$bg1_Q#_&ffAf8t;GH~xeF;(s_m zWcnWm#DQ>N90Ui&!EkUK0*Az*aA+I`hsEJ=cpL#o#F21h90fHB81LwrK zaBiFj=f(MOep~<-#D#ESTm%=z#c*+40++<4aA{lym&N69d0YWk#FcPmTm@If)o^uO z1J}g0aBW-%*Twa4ecS*y#Eo!c+ypnp&2V$v0=LAiaBJKKx5e#nd)xtc#GP?yW#Dnl)JOmHL!|-rC0*}O_@Mt^+kHzEgcsv15#FOx3 zJOxk1)9`dW1JA^>@N7H>&&Bibe7pcJ#EbA^yaX@B%kXl%0Z@5TG@etZBQ#E0-{*YI_G1K-5A@NIkt-^KUvef$7F#E8ws@N4`A zzs2wHd;9@^#GmkI`~`o--|%<*1OLRo@NfJF|Hc1sfGG4o4u}Kcz&HpFii6?cI0O!f zL*dXk3=WIK;qW*Dj))`S$T$j)ilgD^I0lZ1W8v614vvfC;rKWKPKXoX#5f5~ij(2w zI0a6LQ{mJ&4Ni;G;q*8I&WJPN%s30qinHPDI0w#&bK%@L56+A8;rzG&E{F@^!ng=7 zii_dmxCAbVOX1SE3@(ey;qtfwu81q)%D4)yimT!3xCX9?YvJ0s4z7#q;rh4%ZipM< z#<&S?ikso)xCL&BTjAEY4Q`9u;r6%#?ua|#&bSNiio4Mh>6X(LYaUPr(=fnAN0bCFl!i8}WTof0>#c>H-5|_fIaT#0|m&4_8 z1zZtV!j*9qToqTt)o~466W7AEaUEP2*TeO31Kbcd!i{kg+!Qy%&2bCd61T#waU0wg zx5Mpm2iy^N!kuv!+!c4j-Ej}x6ZgWsaUa|l_rv}106Y*6!h`V;JQNSZ!|@0_5|6^8 z@fbW7kHh2f1UwN>!jth7JQYvF)A0;E6VJl4@fI(f>Fg z4uk{aAUG%vhJ)h}I3x~*L*p&V)1LEI2F9hO^@wI4919bK^WX zFV2Va;{v!KE`$r?BDg3nhKu78xFjxxOXD)QEG~!3;|jPUu7oS&D!3}HhO6TmxF)WJ zYvVe&F0O~`;|91PZiE}-Cb%hXhMVISxFv3dTjMskEpCU~;|{nZ?u0wzF1Rc1hP&e) zxF_y~d*eR1FYbr?;{kXe9)t(uA$TYrhKJ)3cqAT$N8>SgEFOo);|X{oo`fgkDR?TL zhNt5hcqX2OXX80|E}n3WvsF za9A7;hsP0cL>vi6#!+xo91TauF>p*A3&+NBa9kV@$Hxh9LYxRE#z}BeoD3(&DR4@h z3a7?ta9W%Wr^gv^Mw|&}##wMyoDFBkIdD##3+Kjpa9*4b=f?$bL0kwI#zk;ZTnrb- zC2&bx3YW%Za9Laqm&X-wMO+D2##L}tTn$&pHE>N_3)jYVa9vyv*T)TTL)-{A#!YZj z+zdCzEpSWR3b)2>a9i9Cx5piDN8AZ_#$9k%+zoffJ#bIl3-`u-a9`XH_s0Y9Ks*Q! z#zXK>JPZ%VBk)K(3XjHP@K`(!kH-`6L_7&k##8WAJPl9BGw@723(v-L@LW6(&&Lb! zLc9ns#!K*0ybLeLEAUFZ3a`d%@LIeMug4qkM!X4c##``KybW*1JMd1t3-88z@Ls$R z@5cx5L3{`w#z*i`d<-AQC-6yp3ZKSj@L7BgpT`&QMSKZg##iuFd<|d6H}Fk-3*W|f z@LhZl-^UN|L;MIo#!v85{0u+GFYrtJ3ctp0@LT*2zsDc&NBjwY#$WJP{0)D{Kk!fd z3;)J{@L&872Z%xc2I2BHf)8Mo?9Zruk;EXsE&Wy9* ztT-Faj&tCgI2X>1^WeNVAI^^p;DWdiE{u!dqPQ3?j!WQ@xD+mp%iyxO94?P5;EK2s zu8gbTs<;}ij%(nWxE8LB>)^V$9K4vARHJ6 z!9j5_92|$hA#o@i8i&DQaX1_vN5BzrBpew>!BKHE9398NF>x#$8^^(MaXcI!C%_4D zBAgf}!AWs4oE)dXDRC;C8mGZ&aXOqHXTTY8CY%{(!C7%OoE_)DIdLwW8|T4!aXy?M z7r+H^AzT<2!9{T~TpX9cC2=WS8kfOkaXDNbSHKlXBitA_!A)^9+#I*SEpaQ{8n?l1aXZ`|cfcKSC)^o#!Ci4T+#UD8J#jDG z8~4F|aX;K255NQQAUqfk!9(#dJRFa}Bk?Fa8jrza@i;slPrwuLBs>{U!Bg=xJRQ%# zGx01u8_&UW@jN^qFTe}&BD@$c!AtQnyd1Bo&^C-EtK8lS;u@i}}RU%(gfC43oQ z!B_D$d>!AwH}Nfe8{ffq@jZMWKfn+1Bm5XY!B6os{2af)FYzn<8o$AB@jLt;f50E{ zC;Soafm7mCI5kd# z)8ceEJ*9L2K5l>;;zqbJZi1WQX1FGyf;!Sun-h#K{ZFoE0fp_9vcsJgI_u_qcKR$pD z;zRf_K7xa@fq&v(_&5H8 z|Kfi*Ky3OS2gHGJU>pPo#ldiJ90G^Lp>Sv%28YGraCjU6N5qkEWE=%Y#nEtd90SM1 zv2bi02gk+naD1EqC&YqX2B*d8aC)2pXT+IsW}F3Q#o2In zoCD{?xo~cr2j|84aDH3>7sQ2dVO#_k#l>)OTmqNGrEqCn2A9RM^b2lvJOaDO}i55$A;U_1m5#l!G$JOYozqwr`v29L$#@OV4{ zPsEe(WIP2=#nbR~JOj_fv+!&@2hYXx@O-=gFT{)RV!Q+|#mn$=yaKPptMF>P2Cv2I z@Or!fZ^WDMX1oP&#oO?9yaVsVyYOzj2k*uE@P2#%AH;|7VSEH1#mDe*d;*`ur|@Zf z2A{>}@OgXzU&NR2Wqbu+#n^KL`iF4uHI1kQ?^Wprs04|6N z;lj8GE{coc;bM53iEH87xDKw1>*4yi z0d9yJ;l{WLZi<`X=C}oJiCf{;xD9TL+u`=O1MY}B;m)`V?uxtN?zji;iF@JRxDW1& z`{Dk003L`3;lX$a9*T$I;dlfdiAUklcnltk$KmmK0-lH`;mLRko{Fd8>39a7iD%*2 zcn+S6=i&Ky0bYm~;l+3fUW%9D<#+{NiC5v(cnw~Q*WvYe1Kx-?;mvpp-io*3?RW>? ziFe`Mcn{u-_u>8c06vHh;lua{K8law-Yw~iErWC_zu2{@8SFS0e*-d;m7z1eu|&r=lBJFiC^K@_zixG-{JT81OA9V;m`OB z{))fh@AwD)iGShW_z(Vz|KR{}>3Y@-7Kg*(aReL@ zN5YYD6dV;t!_jdJ923XFv2h$67stc#aRQtWC&Gzw5}Xt#!^v?9oD!$Psc{;d7N^7M zaR!_bXTq6r7MvAl!`X2ToD=85xp5wx7w5zIaRFQq7s7>c5nL1(!^Lq4ToRYUrEwWt z7MH{2aRpovSHhKX67uUn}aRb~CH^Pl^6WkOx!_9FE+!D9K zt#KRN7PrIgaR=NHcfy@<7u*$h!`*QY+!Oc0y>TDh7x%;c@c=v!55j}-5IhtQ!^80i zJQ9z>qwyF#7LUW@@dP{(Pr{S&6g(AA!_)B$JQL5tv+*1}7th1<@dCUMFT#uQ61)^I z!^`msyb`a%tMMAV7O%tW@dmsRZ^E1L7Q7X2!`tx=yc6%jyYU{p7w^OS@d11gAHs+6 z5quOM!^iOnd=j6+r|}tl7N5iC@dbPlU&5F16?_$6!`JZ*d=uZoxA7f(7vID8@dNx2 zKf;gk6Z{lE!_V;x{1U&yukjoF7Qe&q@dx}7f5M;f7yK1}!{6}_{1gAezwsaZ7yrWn z;?e&&AP$5B;~+RF4u*r{5I7_bg+t>oI4ll_!{Z1zB94S3<0v>Pj)tS-7&s=5g=6D5 zI4+Kd&OPI4{nJ^Wy@zATERp<07~yE{2Qa61XHTg-hcyxGXM*%i{{TBCdoh<0`l+u7<1Q z8n`B|g=^zFxGt`T>*EHvA#Q{l<0iN%ZibuV7PuvDg z?uNVL9=Ip&g?r;ZxG(O9`{Mz4ARdGV;~{t`9)^eG5qKmXg-7Etcq|@=$KwfjBA$dN z<0*J5o`$F68F(h1g=gbAcrKoY=i>!cr9M{|FCx^ z@HSQLAHSqoB~l?7B1OhTsrT+JrNNNUL^4!}RE8!=Qfbc6K%zvN%p^nUUP@6{#*i{a zLPBW}%Kz-W_V1j1zW40*J$HEDTmSCo<37G?J?mM|de*r2*=JwyWbhR5RPZ$LJK*Wy zcfm8jGr_aKv%&9y-v`eDe*jJcr-SE$=Yc;2e*~Tn{uulTcma4J_*3v_;0*90@aN#g z;3eRt;APu4V3A`EnEqDv~JMdQU zHt=@v_uw7iAHX}oyTH4_KZ1V(?*ab|{ssIi_&4xg@bBP#;QinO;6K2Bf)9dI%HsMT zTo8N+xDfbI@L}M?!AF3P1Rn)H8eABB4ER{^ao{50!@M+)*;ELeW!Ii*gfX@V123G-}1+EIN2CfdS0j>$I1wI>G z8+;D94!AD(T=03|df@ZH7l8i*P6b5-wwV5+#TEl+!Ndjd?)xW@ZI2h!1scCgYN_P0pAbq3w{9H z5BwmwKlmZ=!{A521Hg}h9|J!Qegga?_$lzy;Ag-C!Gpkq!9&2$f}aCF4}JkW6g&+4 zB6v9XCGZIFNbt+xSHPpduYyN|$ADi0j|IODegpg__$~0;;Bnyb;0fS~;7Q=g;3?p# z;A!A@z|+C+f@gqdf@gtegWm(c51s@50GtL+2hRo11Ahqq2s|JBG58bk0`Nlcr{K@P z8Q?|W&%ukqOTbIP%fQRQE5KiXSAti8SA)L$cr*B0 z@D}iQ;H}_o;O*e=!8^b|fOmp-fp>#{1pfry1O6HO3;0*?Z{WS)-@*I9`@sjme}Ml4 z9|WhAONsszi2SbrxFGlta3S!a;KRU&gO30o2|fyZG`KMM81S*+xCFQ)xD@ylaB1+V;4zUHn=|cLU04{Mc|9U4Z)Xy zF9lx)z8u^L+!)*h+!TBTxEc6LaC2}Aa7*x2;H$ycfUgB#2W|y!4Za@S27Cj!Ew~-H zJ-7q-M(|DGo53Byoxq*Jw}88VyMk{8cLU!Bz8!oAxI4H9xF@(5_)hR$;Jd;1fbRwO z2Hywn1HK>J7yJOYANWCVfAB-#hry442Y??1KL&mr`~>((@KfNY!OwsPf(L;IgNJ~h z1wRLV9{d7$D0mq7MeuO&OW+aUk>HoXuYgB^Uj>f_j{(019t(aQ{08_<@LS-w!Q;T= z!4tp}!IQv~!BfCf!PCI+fTx4s1A3O*A0XPku4xS612mTQJ5qLiM zWAG>71>l9?Pr;voGr)_$pMw{Jmw=aomw}gqSAf3&uLQ3GuLge!UIYFL{55zjcpZ2> zcmsGN_#5yh@MiG0;4R?qz+1uFz}vy!gLi;`0Ph6v0`CU@2>uDY2mCYm7x1s(-@tpp zzk~OI_k$0B{{a69J_t@JAHDofDd1fHgA0NW0T%)v3O)>cIQR(gk>I1iM}rH4j{zSG zJ`P+2d_1@)xES~ZaB=X7;FG{7gG+!*f=hu<0hb1!3N8aK3oZvP4?YcC0bCJ$I=B+} z4DgxY%HS&Cv%pos)xg!kHNZ8&wZLbCYlF`L*8$fBp9?+@Tn~Ic_yX{Mz^PyhY=i5A zF9bILUj)7w+z@;T_)_p?;LE{{z>UF8z)itdfSZA@1UCn_0Jj8R1-=@54ftB{b>LRu z*5K>GZNN8x+k)GH+k-oRZv@{2z8TyR+zH$nd<(b>xGVTpa5wO6;M>7>fV+cxfO~>_ zf$s$01-=`65BOeiZ}5HKKH&SoeZdca`+*+>_Xj@&ei-}+cmViO@MGY|!B2pn1V06S z8vG1+Ab1dXFn9>~S@3h<=fN+4hk}QJUjz>azXTou9tnOK{0ev!_*L*|@EGuG;IZJ> z!Eb=y1iuA-8$1p?9y|d&5j+Vz89W6%6+8|64tP5FUGNO>OzEOBGdEgJhAA#qCKL&pSUI1PQ{uKO~j|)bwS0)@5yMA$a0J!(>2MCd~!Ux)U-hy3;6u>6Y;#`kZSKJy<#d}xpD@pXqAKelHU{GSbG`^fZ<{xCmT zW`B@rFU-FMXkS=7!|XAi?I&}*(*H1Kebf(Y58Hn@;z6eUoYtSy^7Q|G_&*06)}9Zb z&;DZj$y~oag+1nHAip`*gQdvd01nHqo;o47104wx7)Xk^Y4->!W^Hd)WRX5f3u$=d}KumZ$&A;Qw-PSbJ7L zpZ&%5lP974WbhPlPS@7~nEzbwXrJrl2KdAFgpHp^Q9sMmKI6&rADQPPGS@dU`-9B> zA+x{8j5ph#Z2TD?`g;)lMLq`ou@(A%fOmkmgIRtP^1lO9{|Dr={yoV534A!(6UO^c zem|JyfB!T7eE)NZKI6;yGoE4XFM$33ShV*rF#SIc`TNiwwvXeL^)a94E!yXKj{efW z259e}h&SusiTsUV#{V1SbN0moat_J<;VA@N^{5b>qO~EYBc(Xqk->`Um27l_J z{&T?=nEqXY{4o7Xp+6V?FkamMSReCw-lBb;=jbo}tBUodCj4jp<&n?(S?s?Pq0jk9 z`}BwXL2eBDjPF^@WHo7N4;AK8pBqes)EEH!$_X>}^2*@I2oM_F4a{i1+gt51mn-{@#ZC zXHmWz>>mmayWXQcmJhRk8|vHtNBsGl@e1>Y@n(O~->~?E#h2r?FXGMm??nCs;GW=K zVCvt4{C?oOz;}bGelSQ3nE5Qv{a`4{GygN>--7jJEaJ)i;$xJ5 z1N!Ux^Ux@M<;P=5#gP#P?2Y(7?e=xq2p?@vbQ|h^;W zm#ja@jt}~qYN7r!KjX#xy!J0y`|N-EKO6B3 z8}Eyu&-f?nUs(UpzvD3<$!uS;?WaD+1N~W!crbp+t|wvZ73=>3^%n_=&y~<`3Fh_r z0pwGE6Y@8MH-OiHSA*Ar*MPqPvp)J$4Da+i-H+X#*gL6J5e96j}Ak9 zCxVNHtY^ic&-%Fj?T0^C;(S5<>v6tdKI==?pJdxhf0Jzw*P}^@AKUjc;uRK;lVI;P z%vajyc;xjF#}o6%qQ0=}amJ7Sus$;Fhvjp;uS7gKevU_bn9up}BkXbhGG6lN!SgZjDuGCs{Qf35;w0(;D_iu`Ke%HT7=<-wJ}6~JeKSs(qm0s3vh z<-mQ={$|K;17`fFPd*prCu6_968Y`H3!u;SpdIvCAN3nTzgdX=HX-K+)|ae5$+nmN zCfgpKA0{Inj8`i1!{X5a`eU$O(LTo?@27G+F`xSv#~0(p`e~nhG1?QB&-%-vJjcuR zA^9Bt=R=?KlkvF-`pjqixF6jYa$d-5`-~U+kMUuCvi`9@Xumb$88*IefjCe49$*vz^>l5qmg8I(_Gd}#hBd4F=^Zp{4_ZRv3Oin-V zJrwOF^Li(z?G5{U{V|+B_<2=M+q(hdpYaU)JeTV|*Y}6uKkqm8K)l2ByFKFbe;{!lRWZ$rGSS`W}J3WXE^d{NeKwTrbINPqOWO3eR&q1ExPu zp#91ASJ-%9eNUr4wx1j}AClcK!q$($@Gsf<88-hJ54M-g{V&<}4nhC-4SAmD1++ie z^*3yNXZv47eQZCuB+gUAQT`?H$Pj)5*Oxs1^7++LsQ+cye+A6v7s-5{aV-4ddH596 zKN|Io0du_%W8R++yZ+|-9mb{M|6B0)Z7|O_VI21S0?!L!JPH0b!+D#}yI+C)w^5!v z4*BHq$S3o8ax%XkNaptg$$7orB)eZFyB~7>}KK=O!`D?MCEJXef;IRCQ)A(D zzrVrud;za3~_SUkh*F`w-xbAP1&Va)odAJ!hWzZ}K~ znf7y9e@@HO{|)HRjo`5Md_(<^`N??9LHQ5BY2ci$ug_urbG@T|u9rED|MRGy@t}Q< zf1dxyJRgy{zLD7aV-Rn0Ddhi(@pd%w_aT2TnB{*&{x4wa z??*oCF93g1z{Qi~BcOjInD)Lu5dZzgf+6~hFXPX6hP8hW>OTebp8%%+rIEh__Sim- zSJuaTp0{Y9=Q;XI|IWdBS{VMb{sS04yuM`ocSE1^hxX|Y<4Z0Fe;MDykY67ADfMZe zd0sP=ODi}xM`An0rdX^roE|{KXssg zJ(%SgZ}tb{8y1f_@aJOG-w@mcO#iMzewhB%(4Pi>7%%RBtdIFTZ_z%_bM%+~mBIRA z!GG3Y1Npq4#r~@Rea=VPr$6iuax2(peCr{<0@fGm(>}-BJlya5D1_g``g$|`xd}}D zG?br<`kq61uGhCA{|+$q!|a8f&$_@q>mLXIhhTnmMS1$$9r=S${$ALxg#He@e?)sM zA7;Nd>i-hY|MGew%pb;^{Y8Jn;u99%=Mi7d&wG)7ADH@K_QI}r?u32TKMC=E6yxD8 zl&8OakpBqE-v|4}z+v|bXpiN??Ds)^KkSb`fAjh$%pb;^{Y8Jn;u98Mj@PFUZ`S`1 z@}CAj2<{K2{s81Z1AZ9%2$=fSu%1*0*96x9r(r#R67@X}eiZx|xF2{3_*w8Ea2m$f zL->4aFgP9h-SPPm_1XXIZ?1V;f_v`j-KbZL}&;4L5$}|5<1v|_6Otp0rW4&dP@Bp zuzxe3^(E_1vg3pPCflBOFy7t;vwbrVudsN01^v-j|7f56I}qi`v*9o28{@*x z&xP=Z`JB&hK%e7#IP&Q~nf`|5bNyia-bek+XMEp7yt`xlqCVrp_%mM2&ujmZwa@;i z{|gY$u<^bY`iy_F{)P1q{W}x$k<9ib+kWbEJkXzwhzH}B?0OQmUa|g7sQ-+R__T$7 z2QaVCkHY++{*NgC6L=?h2Y3tkd+=89ZZPYkKjq+mdGNQeHw;`1`enh4C*#NRXG5Rs!EMlIebjFW{R>0vw+lHxu)bvd zNw&T8H`(^^{O|$d!FV-Bepo#2fc_|~SG3RZ$NQ-qPt523#qq^>v3}Yow?KQs@>zd1 zl;?Qq5|YpHe;M>SKN+9q&}Tm5$Ni{V$ax{J?K58NKgNgo$@<6sp#57A&#>{`1Nw}A zvi^nj5B;l(`A25^l5Icr*5jZi=LpNCO@n7_Be9@qcYA^EhQZ2de>y$}EC5B(hgede?L zAm~2_ras&MDD;`n@*|-?7EJwih&TK95tI)b51m5nvA!o^pZWA>1oTINsZW2CZ4dYF z=^^#8{ZB!k`Sf=%^j`#1KWsduqkP!&31Rg;3wz0q@38s9=OwsalG&bQ+xs-0=NJg4 zKf}=eWcw>@Jg~l(P#@b*4x10j?iXR}$1CtJ+4&hZ{}~UqHxr}(l5Ov^D1U#*^E|Ji z{mHJsVe32F{|4&I)PCgG!u7u;{#VSEn!p8 z#PfjUS;!~PMn0L(lau-VKr+7{NY3l^CfWTe+5Ir=`hoi`*Qc=lWPdUK?5~9w-=Bg% z180C2fjl-9b6Gy0lWd@aU=K}@FwtP@VDSC;P1d&!P~(3 zef(90ztzCi!8O1&!L`6=gKLA&0oNhNwh#AxO?AQNg3klj1D_AR0Q?_tD%b)q-xvS= znq}an;3eS2;LpK}z!~7rz@LKuL_80IQ*b?309+7!2)GdVQ1D^k!@>38&xPOy;ETW) zgByY`0bdHf4175_zsD~P{rv%W4)}fWd*IpNS>T!A8Q^!pHs(ux@P*(8;ETW)gByY` z0bdHf415*(`)cqt;A_Fxfm?xFgRcj-0p9?w1Ap_|`Zo^!{Wkb5@SET_z^{YHf?orV z0gndTh+lpifBF6TBftCi9nRBR!P~&w!QX>-fPVn*1n&ax2Iu$dqx`H~I z+4=i3=JPM$U%|hD_kw>1?*s1#9{~RW&hOX1W8v?=96ufzkMX$wG70gU44wj>3Z4dj z2Rt48E_eo*{^mD63h_G{oZtMVKkWb3xL(e0%=o^J@$v@vP4HXbx54AUo2b76R@7=xA<~?=Qj?E_y0OSzwami>-dD# zpWpUho*(nue4sy<$CfAe^Xx|8#^5I4rr;~U&A?ZJn}b_`^ZWhk{Qf-DN}LZ@fmegS z1g`;q1^ybm7Q7C;9?boW%<}`8*N0?YFOqrvNapn0l{YmC}LgxC&`TcKx zY(a7ECo(=QW7+QdcNO?*@HOCT!PkLXfm?&G2e$#|_s?_k`}1zwvEFTC%=;B&-oGI8eg>KMH^~34Z?Od<(fXEb ze7OIzJg-kVUb()0jL#cs|43ZlzK8E`Ic?I9^MBvhPu%sI`JbRZAG-R!>E|--u{^mL z{5=Lt`^O>w1Tgh!uLSf9gIT^f@=JoLPkU@H<5vpyHle@5@=K%qDc~~TQ^94yjOVe) zXZx9d0rbxSR{*Di%Yo~HD}p;}Fh`^_b~}N?^8b^hJ@y~_zY6Tt2G;;r1D^q|3O*BD z3(WfHAN@ZM<Pk*^TaerwC`wh|FOThFuj2REMkNz@V15iKn z8BgZ_hIob9WB%)iPjA=@tDpId7vn>J!`c&eo@fvM8zY`gz^pHf885b%?csTc9M&HC zL;LiH`pggOU-nl{$1DA%ea;V#59%|Y?PY)DcDy@cd?mY|cf5D{C;ql{ef5yxIX06{xk4zAUMo^So_1;7gj#3{vq&}@2lvC_&op)vmX}!u=a(O z53Bz^wC_=HcQDtVF#BQsAJ)FG@?rH)^<7{(|K<1dd!WC%gTw51!1{3`_&UU|6}UC{ zdT?0%j9(aYeFrS?Im-43*)f)I|}jUcn_;T%zjSShcNqnF<$xp zoG|~x+8GSSPj4o}UPo{zaA$B>{fu82^L!A-oIf0I>>sXAJa2@}f3}w# zww^LSZ2X4xe^`EAk1zHo`-|}pi!bBT4dd-LaM<+$$H%KE&+{AgIbQmpJo`VV>+S8Z zALdV3ewe>u@yKa=!q#t|f5Of;93S*QEFSEyydJ+{?dN{X^B(F-pedGF*+t-g_{h!nE7q&h>jPXf+0QtN==6HV{=NHZwmM7C5<4t>E z>kHS{F#mG8AKHi)*SoUF=l#BCaXl~u+y@-Czq0@6PZ+;}{^Wkc__968GVj0g^ZcoZ zUl>n;{yRzXH0ZAZPtIlj3iiGRuLZ9IuLo}cZv=k>-UQwZ{uaCi%y@i<{CB}0Cdu=l zKR-$S2>M&WlX982!QOW8_uw7iAHX}oyTH4_KZ1V(?*ab|W;}jD{wLrSA^ZjMSAxF; zuLd)Jl`r2}sy-`ko?CGKe|Y5IP3?QNZ)^T&e0uLY>UVU0YW1-HQWo^`gJg3rKO$?N z?fg`?w^aHfwe-O2+_#ty&>f@>G$Yq$_2?~o}xhTW`d^$=GcTf6@7w6@9y2i`S2~Zdy>q-dbS6EBDO1I^j5U`j6#| zy_A$h<&~#?mrRMYNB&$q>*wDqf4a}}!)s4uyeG1!@`6}8fhE7-IlSt z-{X`N*N=`{EJ>pmoZhy?&6oV#=Z(}BcO0?srh^&QtcAB7Q|Qq(*3=I!n{t2Wjn=ch zr+(S2=w|EXQxB=U?U!$@P3xx(eY#f6KI>7x8@bSOm#wpxd*kR!k2iU|E!v+(Z;xf# z`Ka;A zj}IMm&y`8f|3u~49<|>;|4WQLdH5rPevXb8#UqhDl}{w4FX?ZGGcU!;cj`%Ghw18X z`XxJNo@So^%2&Ond`gPaRZsComo}WVVWd^#nNEvKGp$& z`rf_fOY5WSht0b8yA9U*Zaa5Y>$=HGJWNxyAar`QUgR@^$T72iF;P*n6j$^<3u| zNu6hW=MKlNKdx>)-ny1s>9PLQx}I3FK0mwjuhE2bPui}Z!l#~kgq73I}NA&y_-`_W& z|J81l4`b;`dhM}qw>8d8&Tg|#MEt++go&4I?ESFi{61mgE=%J=($%*I+D6`PWTd~9 zKdaZRBd*%hA=*x*JNirB*Llhus{pXC>ac|8u$rfeoq4g(bSXCRG^8Gh;j`CzlvmQt0 zjq9hzePq11?DG7zT~6s59iNI9{gvH%!}ibqxbJVNs^33OG*9KXpRaO%zO}yky>FNI zdp#7LC$g*hWLNy!mYyW>^&d+ZBk@;0`Th*}>JO37q zx7xdZUHQ&E=9RJ?J*U0uH#fcs<{$OM$?7}h9RC$Z!`|=6I_Ul{B4t<7Xq;#AwGKx7 zbT2m_@vdtl*S#*!iCy=)@mQbvx;I~}gOUEx{%YD6y#8rFlyvnItbfX%^Y-Ws8D}<& zu765*%4vL?I{m*jk7H?W{IjsmsRZ@2%d)5W{C8jf{PB0jzqtF%7f(2I)v=c3rnCEx z9%1j!wEq2iLf3hBuA682Q}aXjc_Q;*RO>aniaz&H=sI}3`!hGX&uV_De5=M!_L$vl zkp0+COU9ja@381OOn#Yu*ydfAe{X4BRDO|js-2uRs${f%{&A>vO5@LAtvgPCJL$5g ze%CmVeX-)#vg@~PmUft#X?^w2E7j{rrBnLtB(uIge(u0)FZpd#ruLS)^w`qpPdMCm z{QY07ud^>JT(HWc1F+5(as5eo>_a0R=e!@Y-yd%BO~ z$#n5|A@@O@@{XTD^~p~B{UKAUzkMO)({orpdf(I3oVk9JQX#sJ8{QqgzvnOK|9=+a znEnrmV`x8QH;%fVR@}v&Oc(p_Gx*1kQ_jyp<0+9HQ)g1;)BS#AqkQx}oXR@V@4rb; zemtsuru=S8>`BEj&VSbH=X@T=xOSK}Cyt|=ckN_b(!ah({y1QCy}S93!>+r1ToIeH zY1w^arnNXO%^#2G=VvKJY{j|Vg?H^8KJ-YN(kqYkq=;E>v=2n~57$5KcV(Y493&&{ z(fUf+v*6M)BS$_F?f(ak8{ggjx~8!gInTNEc+%hBPCD87Tv73I_n{8h_aghC-(KuI zVp3yV*j`b;^osjZi`Ktr&%Di>x80Z#XE(C{x%Q*`V2Woq#iWPU>zx-O{i*Yqr0a>| z8js_55jS>w3)CU+Bd%=l7-J?WvzqQsUDU*JyiC#i2!-_%pVR{feM@>eo` z+$rv!v=`gP&TdO~Og-JA=lB!vEn4iZL*KH#*tTt4s||NY_1$tymU^80{W*PpdF;TZ zUp@0chE@EE{e#xkTWxLMH?K>NPV22x`dr+xL`XlnWrLo9# zFTTCLFrC>68$9noLX^G{5yO5a=^ai-0%1IgR`G#UH7iX)BM-vem^v? zCFAFB8*knAO87pn&Z_?0V&f+~xAT7M@~*$nysB_dyV{=0z5DgP!!{N#!+sXK-)#JS zF1~&_e#eYxym_4~|BWiwBhwydoQCjk(9jmUdu;#2 zmNf0nz8{JG({n^xN6d3m&biL*e_fZ?>TcqJ@hP92@%VQ;4;bGI+1@$Kefz7^Zs&8g z>nrR_*Z7z8+Umu@JC6m%CweZ)@;OZBXI)pB^K%J%T1L5g#eTaey3ZOvV&|}U|H7}= zW!Ko*ZHYaZE@r(!=afYHj_nZrbie&9=*Pvu`0o6!fa{JDwv*~VzcW6Hv!vO#GVh1V zSARHmogbw;|99%qa~szkJ;0i{w7u=5JM$s8_QRh(+4I<@b{SUVCi6G{`1LC5VBrgY zAHH#&b$iW|CJr0C(W>6@rD6Tw*km=iW>NXu%jeyGsOK}d9|onHIAs2v@VSj_?1%n- zaN^B=HZ^BHzs8T(meF~2Ox3-=p7Xqpm)&SepB>q+AC6`fzxdp`60 z8IgXxYyS|LM4c>BA>8|S{{aCx|t_cG-T0^JY+-C9EO;+*NMIL{>T;BDgY3GC1 z6F9#HrDyIzlTvonqDNn7-rF+r3A2wYPB}QgvOe{zWPJabbun5d!TBXjzvzeaCv50` zvvv1N2e-Cp)Y`7T;+WzyMqFbXo4J2}kw3M<%#UQwFV6Ga?s)O-&n`#q zGb!%z($GKU9OJaVfYYQJU6Ve?B#u+^=b5&vR_`iU?FH-HN@-Vgt1>TD_v4CGpW61_ zMbq8C?yh~>e_u)ST>TStj!=*F@b2?TU-fu0O?({c4YDhJzn_ln5dE|y^)2cf|0~#v zoBVLn6(>hBKGK&AI?pIy{bA}$Nm07$dFRrv%MLDjoHe#x*KMU9TjpJ#<=%Pb$PqVR zIId}iwPeebrz(z(T;G?!blXWo)>)PR-1zfH?KfI0M>XGm(*2vP0;|eh@y)S$w-1_j z9!%wVCMaF;qHOi-7fX&?@@uM*hsB@!lDNM2_d_!08I2P&p5{mARlWJ8d(U~TpmklD z)C;ctbZN97UH`RDN5CCV**MR1|DoE(wP@?oSO zOO!5fgwv0$OE259F%SFEwDYG_o@av6*?;20H@~>AXuI!Ijok0XF-398!}Cmh|Cx1B zKBXi$&xGk0SlH;;ZcSFE-uPhiZSy*0Sd9*pUD)%P1z!K>{&`0J7@v1rV*mQ)tXpAz zW%oS8`sUaEu=l%1)C@e&P`~z;I+xTsZ*l67RxQT7x9&r$^ZkEV57(IMJr|kv`!Tc| z=116hCTPEL;_TlKqGQGPpWMvXej};-kpBC`nd|eeyAq7woR-&hpZ~f%nfkL^-h|h* z%U_@3;!1sf>D?#u>zVRRqo2bVKG}Y(!1C4yE*s*_Pj#a1$BAS2dt^uVBgMKeDSu3Q z`2C=e&$*)h=JDrTnLf7)8vkmi?!PKRMkfEfz(1}18V{$;nS5W{CXMZpt=7(7QSie0 z$JYPuwpY)z%=Z&hlHUh3-rVsOIWLGM)h`-%Vt+q5^C8TypnX8~NUGn(tS{O7@>Q>V ze&xKy4eVYg-?Hq?y64ruruX@su32)9_q=0lA9$ns1shhSRkkE^>POf<5Ed`a_n`RE z&wu;zzuS*)yd%#^n(sMpk3Ww`_KU3Si`-Ad&h@ivKXSjre2;Q-Ci_|0_hgSUYCrP1 za^*KFlsf#;inbX~+NUyq&gJCGPD*-z<6jQStG+)*4!Ypsqn3SeZplL*d8ywjb58g6 zTj#n-dfAn39G7{|;Y7aIZ|vxIR_#k)GV^n}&gZx1eY(m0d`L3wT=TtpN1BpVY)R9< zcPtWt}{@D=EZlwR*d_DjBUwkjY+f_dAGOq0*_SfZ3 zsl8)Pb+?~2zWh?3i!1VyiOMU_U*4p}-b>Kr^c%a~G%NVw4Qk3qnQ~v`!c9f`7;XbQm?`gBX zJ-?T2^m6aL1i#g|_0*H^$*_JrcEHYp6;@ld%B~ktKA1D4t;Fx zCM&IK)jO{`Kkx1bnRa%yKEitmg3?VKGXJj8x8jbvKip^;+0)z)TH(FFA&K`A`1>KY zuEp2qA0HYAk}4nHzux-gyDn3IIx>+xf4=#DOfTja*Tvj_FF~nZLrxyEvZh_=HT%|m z=f$4$px;6BKT&zMNA35&m*A-KS3T7E>;ksYjkPn8J(W)+r7!7khco}h%4fTRSp6;k zR9-S@{wrVgn(`?rN>_a=R?fd|*dK3NkMC;p_ARfDwvArS=YJdTy(Aq5?j60n^CIh< z$%BU-((Eg1e$6Jg&D^ok+PJ^Kk}qD`Y_;opQkBy>Y_Vn+{Js0_H|5=XNlZJ3WqL0` zP`Zgj=HFEdK6A+4Ylm1yj?VV{_xD3=p2gSaA7>f|k}4nHzyJODKlA=R)yIvjXn)ry zz0u5pHSM7J8Q-#a()$P`6TO!}>z&$t+R)P;7+$W3J#X0S?Z4<(!<<`mj*--P#L-OQ3P4IBFi~dRXrz(72Fv^%HzASNZk-GsF6^TRrc(A|*xXPC0!q($wkyt$vNA zx&9>aISci(%kn_;&dB87+ax=Z@<%Kgl&<{0mWo^KIZ;PH7UxvkAAe__h)a9#C6K%- z;JpNzH?E%=_mO#U#|O8LxUO&bdkJLs0`I*9s^33OG*9KXpY?rNeV<T#sfDgAb|&Pe*p$K8L8eDD42sXujH+k8nh-fC}~>6L2@XuZev z>wodRS;bLta{E{7puTtAJa+wR^!|D8CD8tA+828sj_aTHLrGUZ!TP8C;Zw_u{O!or z(e+R1PC1QlQ>Xv8=5Z`d>w=_m#F9bj%1>6xp61!#ef{&t-3&|i^8NR9{Nu_g=jXU_W{kSO6WLLA66MqVeq^J3 z^uDLcI?`XiNl*TBUA51Y4~%1+|E$-~`8gy0~D-eL1JR z6VISH%1-?K3R7!V`a%BWuzd7BoT)i;{U#;(@tDOprvF3Ym>$*-ilZxi?yC%)~t@;YvA79gF{*3P1^nJLD zIJ=pypYr~_1l>NpYuSvgN7%J~TrlnPPPL<-Yx(yZ#l!#n_}}e&h;F|{;%oXO{CO?K zMfze-ri&FfN6(2<(7KyQ-zgKKpYFGx1^sA0I=Zo+3byLkJaO{Wua0DVOj&Q->bcy= zIF=pbSM2+eFJ1O_k?B1iv>x3t@{?w-H?!l)>-pYDqFYZA_viGzuHPHix%|v)GOVeE zUVXSy+A8b(o;!P0nz7D$?em)#9(T`1Ywq3M&ssZZll9FVmli#EQr>-jY1-L6)Azc9 z(oGyP|6cNO%aPMxzQr=~UUS{AI4Rz_@LmG-x1{?yRf6{tDBnNt9j}${{NEWT`keZ* z{lDznUfs5xbZ31tc60t-f~T7IJ^Pd98P?qAk16xslvP&$=PrEZu-DdE7p|Sxp__QAH@#*)^dGI>xwT{oV|F^<@U@04=!)LzoBg+k^J+I zZn?jBFM<3q_PHLJ_Bi7-%rD)?Ff#Vsq3Vy55zzCGs$c8!y1m=>*7{~r;B)ZQZ{L4k zrMJ&*VqN+C#G?ieyU;E%Zq0`4PPCK$ULWm-`4RT~qlsrB_nZ@bK1uhh{vW)TK57 zXSXHxWV)F32Axw9={vSV^wa(Jv!EXr2jjc*y8^B|%=40eb*@pIC4=@u<*Pqbr_vpE z>RIkRw{hpx19u&_xSMVCa&JHUcHfk%&gzz7U9<4BRf7tywhle9-yd~OT5r|3`-x9h zP1$J8sn_(YQXg%yZa(^>Cr4J#yZz9#bC|{bFeu%`A@lEq&uwI5KlJy5vmbIEs2^OZ z^HfByoO^v*(XQjptM<|R(0|mPeP!uCMp~DyIM8Y7$Xo5W@;aAA65V>Taeh60)>A|G zbj`5#PrCQ`<$tcS>h0=N<(uQzTf^S&ykhjkjaHA#Z~VBy+)dV!amVj%QZ4WL(X{jF zOz+hSN;h%H{QH*0MV4M)Xn!i;wv>WC}R?jacuHNSqzWv!9KmT9eOOR5< z`#Xna(=~4-O?-mSF^S`p{CVcWqgxMo<+jVMfp3ocuEW;U-xB@) zwDBkQy}Nin!_PCatNA4MWSW@u2Axk5={vSV^wa$Iv!HKL-}qm_R@~%=lm1ud8R<&~ zooAG<{xJ2Wq$pkW)OzmxGRq&Dm%4J$h!*3D5Ad!JbMHJ;;`>3Tj*fhv{l~|Cedfr> z_t}>|Q}wXjgV$NpCoKPUeB}G=SH4hmOu@+a*+*vF)o*nkexKd6b84pd5(K3yUX+D@ z=u+~7>f=(4d@nWbK1dSpCGht{GUplH=Pv5bt9zsKYUPyP6+f-}Zfd#nwx&OF_9M}L zbp6kT^UNzHe=6zpW1q?!9&-Az+17Ty?uztduTPu*;Pm6s+g}^*^yBho&-Ka6eq?{R z>qq2#meq9Wt*B(*wfc%tsYXuzuf3N*^E}~tkl;KMroZvhlLsF6+!Lu6p8mq82e$RI zu35k9u^A2S_u`TJ=Nb89;<(!q``hEJUtxY__dLV;4&QmlB_B23oSOK&klDYw9e)fB%HLt<$!>G5+j6y^?+}L9%`%_AmCH$e{hkiL-w{(D?Ps+|1X0EUEjD z{`+?Q0NHBhLT3*+E{_FB&>d$U@6W`3A7b-5Uj6C-eq-WBb+VP)5o@^gdxX+*0 zUzGFr63DLnksp6GjvSrY_*_(WD3^@?{l;qbV&4Y}va52-eELp3d9Cl%;oJ}U|K5HR zho<(rg9VNse^Fz*%W-}F)98=-^?$u=?v}!3^X|O_>UUHBZcFSR2hKbV^DAf{(EWEw zQ%~%^JnJiTT&dJvUj)A|nEFjSJ~(#V!Upzp#ZS2Umg?u#Z`;zl$8Jf_M>@TMB_K7{piL!@|b`QJg1iRhG7xu7wt$M$~qKkUiUlcg6(u#&X>^f&nKkBPX z^S?dQUtzybwvC3Q^u?0i{i>5T+V{AB|Mn*9j+!U-8a=M9_dUlit=evYt9!iA`myt- z$ENT7In|syrdb(n8Z9{dKTleh9CFXm70!6s`t;UQEB$u%;M5~O`_I#p3yn2?yczp@ z;OE`)-m4o&k54Ul-G`miDtmt)r`cWw8fJ7FaCP|!Sy&YF8;sG zuiS3$()u^A9e7AjE4QQ>NwNJcf3n7VUQ5j*N!2HoR63>dC6zChR63>dC6zChR63>d zC6zChR63>dC6zChR63>dC6zChR63>dC6zChR63>dC6zChR63>dC6zChR63>dC6zCh zjD4=-Y1lcEk#*HAp9@m^c5X@S|G6d2e)6UFTwTtk&Lg=cjeiS0|8g#MKFTerb5?Fi zo!4?p>fD!GQs>9qk~)XxmUQQ>&a=5Ceb=jIUCI9buJd(nNuASkOSf4$Lj^+s=&dA>T!=XTvM zmUPCV^COnbf6rOEZl?F}zE57=4vLTTTp9Tuj=8V+Ve~y!CcnSED8u>rI?a>bbLys) z^Zgx@zQZf`W2W*Z{(Qb&ui%>!F!Lz!_jz}@%C1fJv(64PZ{;s z(>J9P{Pvz(kJY1kDOvWwTR$#q(xI8LANl(c{63HwSIYzI*Yjy=m)Mi(;=h{r{&g~_ zzC?D^mL$rj`~Ap9`MC8fQF%8lGENo8>$~57*5E}&ZKE6O&qVF4k^q~4=H-~YK^FwX$`x8=sXnEJBFOGTDPx4)Hq4dYe-#)jT zJ;{Fk=)I#_-dx#=o2N1wnXmec#YE%Gu_e2bS+t*NUCJ%{ikIS}zklxk{$VB`BjeId)A)^ipHclkYIWPC$Glt2 zUbJCe(J!Z&zXS4D*Ng1mu>MiKlB!qIP4|rt#aYtiXZ<(*qkZ(h#-I92^DW(rZ+ck! zOt$I{u>Z`CE>^js?y5k4U$_eCsmj7yFC(Y=6H}WA0w@=?qKKwIA6JB{lAY zq^p<2dhY7`=8tRlFWSfUXkC&t_VC;1f7#`QzB_x>P)kz#isa*apMP*t-x+q7J0{*Z zvFJRTOn$QkO^-lOy${4pRgp8EpPO*|2t@0C_OA5re>X|JQ;Z(jhh~ovHd{p zlr-gI@zQxh{Yz==di#myQ{;YzvExZ!f4b>^aqi)~QM)DG@{##Lzf67J`%vXaq#ng9 z(fHOmA|*1uIi7ENc z@{Lcod}RNYzPsNSbki4BIg+6&+h2=;FbSY+UZ}OHg3D! zw(^3CGjCdzNsr?}7*px+U###$Lf9;NP=RFWDZ|tt|IQ#F#oihEVl_Q?X zux_omtNrhtS6k^)!P7vqulIj2vYtPKtl}19fW;c>P1$l#O4XG;UK; zQls-#dU5kUvd^iXBwf8}yN%t(YmM~jh4u4Jub)S~bIjJ#Pd^kbZ|rXHIQ#uP{Lhc8 z%zHV*npNS}8C{33wi>Ru?CO_xt+#$0^Dms z>KBJe*;P5Qq|%f1H%MQ0De0%`WqJ_Hp2~?OnJ)j7F1upWt0^gB<;z}}lzo+x46`Ra zN!gK9I_qb?^m1As>mjQiN!3TG{2)nvage^!rAMj!AW3~O^%Yl*2ezLa)%Vr|+EYE0 z)FVru=|L<%l&|tkSH99Er7x*=N}p1Clq^T49n~+%eA*XNkL9Jubd^)Oq|zl-UK}Q+ zFB#Tu=~1#AnSRKBN#@hOn0hQPJ*KOi(j}EHsq*45DSgSXc1w?v<;e7d<;f~98P;Bw zXMJSqi>asjnJ!j2N|qz5ykuBD?TcBCEc=owr+7*Rr7K@Dt9q(W<$`38p4vefwc~9R z%+IQSQ9IuLL8e`?{FPLF;xH*YDkqjyI{nEm%PuATRJ}|OV%bwUu_V*wztUw_tbJds zeAx?=vafQIVfLgaDLax%XZ_5VUQX*{J!I7*sro3DA0(+S4$@b;^eB}dB&jc^zT&F! z!1j})`rbUIJ=H@=J+kzf9>nrP`6|zJw4r+qQ?SYCQe zS2?9iDqT|L#bHwVl40$Z9wp0>>4*H6WIpYSsmJotW4g*IT~g_iDlZO`(w7WtxAZ7k zj!ZvTo~-hcVeMsk)<>qkn0l(8>0*_mWI3|RONQmszL@36vM;G}il<~yy7DEns;Bx? zE=UIHsU4J2JKjdYeEH|4_iN$p4`kV4`5dz9%PpCU-`6$)%VGO`pC`Naa;u%Plk4qO zKmRMe3FFO&f8+6QJe&yV^LUL1u9GKt#&u+TxW>sdl9+hJ~O3$vOy)e#hJt{~0O3$hcE3fe>DSe$+B!kkGA10G6 zFMpi5>-=PwRW3*x>oNP%Q@UhU)1@b=@{&qVRtA+>3XRSwgWeM#v{hNXw)%Z_BS`YI>M@v(jy0@OE0IA_GK^Gbd{4-`DCTa zOR{`WdRFyVK8Tqv`%0HodXSW!r1Z!^>C(%oqRmJed4 z%f8Yjl^!IeCn-I$(t{-Rv&zy-R?3fL%Sk_|e6s1XN13dhAbr_YepY3&<)lxU)%v8T z^5QTleM*&6dUjdmBxz6SlFScdmCLH6J(W|sWLDFqC#mw1N>5e>l~;OprTk!dri&$| zFP2ogWLDFqC#mw1N>5e>l~;OprTk!dri&%1FIIk#q#jx2n4VP*)02Hk=}U&ChvmzT zWU~4yC&}_b%ygBfl%AyW$x08B$?6B$2}-AZF(u0@KPWvcpXGu$t9GbI4zjOw>XW4> zseDPMi^C+#hv{cGU-eLC*IstZseYDEHl5|g$=V6hmp#fL{bbW=SDdV!Abr}Co@7|Q z^dy7ym7ZNm`?8Z;>9Qv&yOKfa%9qTlp7gUTSx*o%UG*tlQt3fbdXmy32c=6dr;_$% zFWGdJlT`U+rOHdPd{BB;^;kZLnJ)WEmsEO?l%AyY$U*7S%c-P&*-JKE9R+eteqfz*;Rg4 zWwPa@Pnp&Fq^I)YFe!aXl~a0lS>+^YPwA4(4`Y?1R5?oNFdtod;sh8DsmLtoKr1B+|E~#`$rH4uBOXfFy`6WsJlrEWU{{LEE zeoN-mpPZJLA3-wAeo#53vwRqV(^3peURu8G$Yq$_2?~p1(n| z;GL#?kj&%uC=QbT_L-h3Y#Ui9DxLV$YF~J+q?5mQ!J+m2GUd&?jDAGA@vP;=p@aAL zY}kLkzgytyE1rs5tzPkQ^4Rf1^}6L`U;0D5dKJgfUj0AyH2$UB;7NU-u$IT(`0TRU zu>OuhiucoHuk_6OY9sbd&hGfXj}%F4@%qu$O$(~nTMI0B<(_$0yYJ^!y#3O=H`x0- zR>qk7J5hOM`^%fO8%&%c{#-ok=ie)Ty3c#RwC3AxE0I0g@w4)RFEVsQzr*etW1U&}h9>6}8fhE7 z-IlSt-{b7RKefdjM=ZSQVC4O&3vWB7(4%XtsUKW6<^Ikat!H~r{jyon&DP7O9#VPR zFW*|5)=wMybgeDk`-o%G_>+>Ne%E`W^}c??`a4vcym7TH+Mh;mk7e5Vto31;t5=mc z;b+tT9k&Fgt6s`JV_rV0{j*P5MvjP&lj7fhvlqA6cyjEhzn%Bws(*}q=^4^*={r*6 zKvL!7``5GMTc`c@6WR0Uv)<@B7ybUC{M35jaW2gNW_6EQJg!AW+y3I?LkHbs{tmR? zU&l9xH4fyfWTNuQqn(t!U-g>uDJe=n1DpK&REkTYYOyn7;VV_qONV`;$#OpUyP@ zgVGf*%K5FTbiaSsBbJfRXM6tp`yn>Z;%oDd4~+v!m5=Y=|Ni{n+3DrW9y{37?or^Q zS>OCw!F#WN=KVRoW$|=wvA*v9C7DuoyzOd8`t~!myU$HM3LI6wu6^s^I>Qco?=&-? zhj`~0$;iH`c$peaeEf0Ei}YB3YQ0P>>4%@)`PXPdx+hIMhA*+jZoAaZh&1h}W@OnB z@$t}kZ<%*KR5`^ba^7?I$=hS+y(>y>edocZjl6ZySkL@-E@$B!cLVxg?N<3PmY$^7 zp2*)D(>OCZ-rtFc_^-dmIPsE=y-%39%hI@zboK3lwvqa~WxJz#vwGb+;;KCzqV4pT zTk^inQ>NC~Z?+@(^O4(sk@H7RrF_!9nBDV{>`2Nlv1CxX^8Z>YZo4h@o1-6#bE@r+ zzcY`-=I?gaOp|O;#vWRKVun?(S zc+p?ktv77{?2r5Yma6*w<3#gRe*5_<_vc&dtKa)}dB4{~(fJ{}s!w*suWk8hNxO#! zx#Ljw9O)nTiPDuX>9@mm$X{OPXSe>y{HnLD>ez{$e~ZRj?cKkweCHnXO4*K{(_ZzP z8{Y);k9y){^__B#|B9nw?{{P!bpIETvMXsc&NKO12P1yI==?n5UDrmgdtIIr+aKI` ztj~Pin=jVENdIVmHSG&t|Fj=Uy7~#$KjqJPd-R5kGn+-%Kcze6G`>xp{@vgzqhn5D!<4%)lN|2Wh-rSa#m)*Yw6opjk#ziS-GzF6^V+4b8t zOFPWWw7&Z1mFjh*(kcCRl38CLKX>4@m;AOVQ+rEYdTi(_2Gu7! z@%M*Jt^W3fluyrL`RIL5Q*-9}O-hC6`eJyuw{8Ug{qHQsG5sGB$IyPrZX9(zt+
    +TRc9=FNj-#7*?POchzrLrW6p5~PH~(?ib+?ZzVpBFPyKl_27RROe0sCHLAN1RcokvV+j0@W<>X%+|Uux0%7wwt1dGod# zGt>{--z2?~p4}7^r_g$%?@vtEc}&u^r?^I>`cZMw-``an{ripLk)pr19+A2pGxisH z@vLAk%5Z*mM6b8w>W|#-k7xBmEKc$EV)^mu(vP;+#L3q_X&4#1P7|yB@p>`pd))Z$ z_SZFS=_^j2)Ze?ddla16wrYbm(erGOU6ogyRa1z5dXoA!^-Vn$Y}K#+b<)+Zj*K67 zin}N6#kR4t+manqPq%2hPrSEivAYg^%lcy5wsEaC+#S_-%Pm>zaq{=)+LpNalArs$ zk$UXFre8htK!#QPiv5Gu)mv?C-#4#Ik522YQ~F%ovE(-!tx45KZrZwYlQn5^*>|pK zkawS7n0CHsJw9ed!{g78~P*i zxuvnlbT7WXbF}(f(!FopV5KRq`4U+VmG7VTP8~{j{_l(veNNqS%#@=B*Xd+C>CXCQ z?0#&!82ROnrzGw}sGmy@Jgilhju}?!;$!Ep`(c$eW%J{g&iZ|wW%b!Qq~xfLR>ic2 zZQ8xF$r{ycpxx$-yz6IuPF-iqMdME>k{<2npmepHGU4ac4ZJuh{++#jIbdIM?)Urq z!HKulQSW*@&3|3)_d)YoGJgJ=bt|gx`@A}<`g4nopYYty`>o5n{yy`n!aeP3dn)(t z*ZU6J*u2cd%{Lz9r;*Qj`$p6Q^Pf9rMB~ltT={PlxgN#V;V{4c(vL{}u6@Y}$Pd-8 zb$0vQPkP+<^-AmYmp&>x`4sQ-jp%banf+US%#eFO-_y%lRK3kD>)!5S_iTCl@!uWa z$-AE$i^oGlTkP(!{S#Z#v^V>HB=%3w5osMU&rLb!I=BCIU0zFn-&%T-@@lvBcRLRl z&kNb!Ijph6PP?7+%k>rZrEC04dM&jj|2jU=b4ixZVLCtSy2_lNOW4yg%GE3O+eOiR z*3{qB^P_2|`4x1Y@cd4ZUBkOAu_x2TtT)JRB7Mhph<>`?eiroO;$VDtepkSCM+w_W z{i}10;w%}oA1Yt{;n;P4l8j_QOTR8Vxae`#*mhmFm3nNM zcYT(7*Y`(`xcS0yO*5<|Tc$i!act!JzWk-zP8zb#s{H51pFe89(ONmG`Sz3U-((e7 zRql#!j?KG$(6sYlD$g@P>53O+t7pGha@>+%Q;j?<{ys<&*Z2N@Naj4Fabm{P{OG)@ zH@|f6IjmR zfB7)dk0nYMIKt`2)}@zi*_em@XxjNxD$g@P>Fhu8;hSIFSG3*tsYdR1HL_D z`*E@_srf4z-+yLZlx|9b^Guk2frX8Z?bc*v>WvRJ-!`v9hSlgm*@ZoyS>W}5?w@Dm zkMTLS{`%K9XWa_(E4$|z)vx;I*Z#2gyGPUvJkLX23~#=N)gL#y-s ze^?LKnCm?knf3cIv>WC}*m)*szj5O1-w&c=#rL1w%-1-T)O|?*ed5gZdDmSD#&1r` z>$=Z>U7k$+*)4CvYue?nPjPXjKEI5dTO57Ao+;ln`ZwkCKt7lr~`-v&Z?*kfd?)Zw_{}4;6Uo`H-{(f@iLzrJd z`+(|^RF8{UU$Xb*t6us1%6W?$*u74^W!af^&#Qk;@AErdv*aA_dB@m3@J96uHmpjk zY)R(SkFb3pEMA=NLGh!X|Mug5w;$bjN1l^3-*evXt?ydr6Mz27{UeB->u1+~Asl;P=C+*R`kTd3FD6h-Wv_e{Q~>|NSq% zm*DLxpLZG8_7MB)a;MbZF{ipazBRu5QlE<}@{)U((+W=X=Rw@||;|%1gTUgA%-#K>4cIlut=fy2DQW z5A@hkqE3bTtdhN_&HDEIUbfN8z4sFQR^!%FPrfI^`tjHSI}27=ZPhBXZqxdP>#gz^ z_k6ei=NqkdADlS!v9+75w5nC_yz2bCyB}oQ+12_8?*$qh(}I zb3bT>_x^??-b>)`hs@Ulre6Q}&^VA(`S||z)-T_6nflX_iR}6F&HrP1F~7Jj=KgyL zO7$9Y@|cx1?Lx2Fx9&SH_M8X(4x0ao%CkLczyG}iN0q`7c&J+ZDv>Z~3S4l0oxd`Ks5HPf1a_>RYjL{%ynlc++}(SDUwQd3CgH^m0D` z+j!6Qbr`sJ^zzP&taBz09(G8xudMkso7^^Y$3|=8{sK$BcxkiMuIouvPV2D6nqBbs z?zi8R`Fpy?pPav!#I$o*ruPyArK?`bss*1pWbd^@EF(u}d;a_TAvVwAYx9pYjRQ%Q zkMH0A{`{YLf1m2(Mpm@H>yzGS=D?bG{x`loL8SK)NG5tOfz~^<`?R5_Jutjn5qsXS z*V}*5uZB6d=o}-d^Ner*bbRo~)%axMmRsqu{*0|B{(6+p`uyyEzSnp{x+l%&eUa}O zirsObc1EPJ|Id9dfySBQsCl64VZE0?<3iHaPw>55<=6ku4C}{k^`iIVllLKf5dsv@aUDF#5Tw;qdo1$&RG_5laT8EB~*h;uic~0)PCSc_J>| zf6j;<_ts34yei_g^F5dp~>XPhHnGUlNVC z+S_J&6CsuT303g<+;9=*wE_K^QXo7Q|-NC#&cg~EGlL@{{Ao4*ZlTg z0;fOy_e)JbR*AnaS<74RwZH5Bs3h-`=A-u#=sL!-fi&Q_jzE?F#k`~Ap9`RIL5m35@Qev_X3=ela2DIXZeIR9C%pYwSfD_lz z9Cdx|$#ikSko$5@c_*Ghag?3-`xU0vtn`EY$zl2EeK=Ed=K4)a^5Zd!aZLY*#4$ar z9~4Jd`rb>R_1)wbiLQ4U!z=e2ZhdD_^1TF3`Pk=YMQn|$ve#a={nt*#ZOXiQFM-w{ z%56PIP5NnuWy!DiPJ3j@yvTiR(_WpMjr5OuC!g%Rmq77y&v6~F??v{(M0QP@^IP>5 zwm-h6&-@wPx9R(E8F6+a=R((hM0#bTGHdlF|NMBjPw!ebW9t!itsfUm`@B=_=;vDg z{YLTdKR^C=dwxGYuHnyXDK4fTc3Wakri&FfN6(2<(7KyQ-zgKKpYFGx1^sA0I=Zo+ z3byLkJaO{Wua0DVOj&Q->bcy=IF=pbSL}Nx3t@{?w-H?!l)>-pYD zqFYZA_viF|_1_!Ux%|v)GOVeEUVXSy+A8b(o;!P0nz7D$?em)#9(T`1Ywq3M&ssZZ zll9FVmli#EQr>-jY1-L6)Azc9(oGyP|6cNO%aPMxzQr=~UUS{AI4R!Qcn+HVsQ#98 zKc`CYUIOL&=e^^#(w+Z1<3yiRU$+03ecP+swv+CxZ^mxU-%IdR^S)<)(mcbO`}{Fw z-kY+@>i^t@uN?N;I_tu<^O`(!>qhJHGcVZu=73GsZLM1#+o)LH^|L;Y=JytY(oGyP z|4#ThbvC|->F)<8-p;=9;)}ENUfC?ammq%r){fq9ay|EbUafHyrvFE=1HZLg-_p9` zixp=t9(1`qbHIbkTkmgZn@A-8{G(g$FWyTae~f*uN2Wc_I1Tel_c4r&J$I=3<75Q% z{G;mEy1Z`hw!O8!nH2aOJoVf6-&g7FbDLOKK0ooO!NV@JON?8y;kpy;q`%ikyJ3EW zJ^yIpS;#%-M4wO6{i^>5?s9(CSX{ZZ$n^;V6$pZH|el#SM$dQHD7_0cBl=A%D)a%A(XA&N=hxF`JvDSs*9>d_qp zyJ3E0_55Pu>U~b(+n?R>^Z(_&1SwT)^LGl%rfc3vn)n2tV-m+H`SZ+$N4FmG%59fh z1K%9?Vcj?GOx^C?k1IB`)5Blyza{$pY2#1!-?JpUnonX+rioc^(D@{hzGFK?Kh1AH z3;GuIjsF#F#Z7)V>3?;ek-lWmc}Dr_4^v-Ciqch2t>?}!^MCAJbwE_h_h0NrL9i9; z*@-Rey=xa@cc7S41YNGOWMZ*F|yq7?~9g?%2!9KSYe_f4}uB*F;#+STY^Qf|D?N{2F_A{k+X1>z9Wczl`~n()A3TU&e^xjnB4tu1tKrkkG%H{XQMMw`Q91%z*UMzU~{t6o0*A zul>Z4$$l?Ea{Wl$KizvG<>ni%p7rMg^k026WjfXkK6?-M7?PyF8?k^cLu`nd1Y zzb{Wt{wdWL>Nny4g{T)E$#XAqast04YxqB8UN&vEi9fnE`1SV^z%KlOA3y6yoQx0k zzbNd`7_c|awPGDzJdm7S=-twj=kod8@?0L=e$fB-@(cCQl6@3!k!x>*7Ob1)M91de zRjSygr^2$?{l51SpxuT1BN@>8{eZhpjrk=v4`BZtDCDEtm#6bfXIVfw@{aubf@%4d z{ibf)bE!VN%qDk-ft6~jdOFSCwE0r<-%CK-HRgx0dB9kG(fwVn{^;7kf{$|+&nqMQk*MdS%!~9q2U`EV1VS8Tlw=q7lQQqY9*vTH z@?6S48mGqt)Cu29fPRDe;_`(Z{r3{2R3GKA9sA6y%;PwJ3(JpHtK_?y>fcMi&wDjJ zSYWx}z=$oiJlOeZTix1S$AgWiaP`O`2M@MYrzWe9D?Qjl)6P!RupX?{KGx-YJr8!| zJ>UA*8hEgGENYj!-N=KjQT|AlkS3|$p3q*#zVotz1Q7C|f#QBuo~P{C++2iNA7*$J z+mW01^c3S9gBfAJtCC1xVxk5-n{(vz2c@v?_=maLz4^tAj`NttX~$+QQF;S&d2r!U zpX?VaGhcC>e=yxP!H=D~^T2BlJh|!V=Do@^ozD!=loij%X|+}KSCQ)56E*pBMEwFG z4H}sG>L1TP@E((X@&E1mGIe=xs`@@$n05qXDinH>ZhlLhH2VARMqEcgWAsL^^07_%tFNh;-0E@M%Ok5b2`l5v&SHvwYaHWgz2Hx&x=NwD}_-LE6oBc?*Z zze}Qjzm8ZRnF_JaG8JOIW-7$G&s2!@qp1+j6&+k}Yn+mZ` zHx=^b!+PITs4(65jP-A7MT2=m=q#z~yVR*%iwblo!e z=|H4|27*r`(t$_^4K&?+&gWo)`z+Wo)qNK1nCdMVS+K)jcc!|}f*tey7R%RbO7Fi+c)umA>+_21`_zY~x{raK)V|-8 z+Wq7DE&l&Dqwt>n|3W>OdcTDq->~lEiC_DQ_*krY*mNOY^w%s2+Nu3Io5(*8K*ewW zV!=~mKm9HJ?icIncdDoMe)l`do*MfdS5D3^wsoWM4FzhlsTEDVUuCN2AYe!6FDd`O z=y&MzQ}z*15@8~mb{x<4>6v+5-V3fkmHfW;RySRXQcO33F*_=Ygf6?1C5B{ zbLxT?7r!I$!$rNQ1o}e#)6cgHU-n;e7yv=Hn4)Tq2%lmk5eA$MQ(}Lt*|L2n#V^F;%bq61`rC z9wd=2(C|A_V@N|9NXvnb|6%Z+0@R0;t`>g5zCxrCZ`qj@(o2Z%v6vy%r_kSaNwjE( zqLDw1lE0$7pqJfsK;*Zlgcl?X2lA!y7o-0Jo@F}#p^;CAQ((R%2{s&G* zKV6@OK9H6JADAE=^{)4Re_qz@70V+@4{v?E@XWXG#Bm4XtcdFRf*d(dmzP(!kj_6x z92v^ZUx#6TN$U^r4eImrCc%y#3gf2kIoU!=*I|oS`7uCT-$33Ez54_7PoR*V^zSh3 z#-|gyRA#qcSkhrfr^og8vcD0r}beBHg~m+6VapkuQ+v>-7)RGf+rR`Zw(#ZJ%m?^gpy0t~ae%zglDE zgP%ZSo>KY$Tl=3>KmW@9*DsCG{|WN#r8h3q*B9MhbUIyrb%8BoZeKpe0D1dlJ_MrQ z%ONk9jPab8*SmgryFV!(T^@`}K*1jMt>?d8V7iy~_f|4M%qzgTpO;TPF!>nkHhjP9 zeyh_gP1F7|wel2DX)ZC{-EODNa{8<=Z|b#&F@M>^Tl;TR-eZ9C-yQM#bpD_cDCGB9 zoR3A!IiKbE1R)39*|tbopO&5sFuD4Ie9FJ&`UUvL>O;sG>nRb*`)GK+gu3|v-rz~iPgL0mtOzm z^~wAVd49ej@%4gTp`D?}A<7Np>#tvFaewNWhNr#VMSZ1+RkVUV(a%KMO-NTLDptyJ zwOyN=!uw~FVHa^Ph*#n5;W;Pr+>)_$gYuAdjNnhC6bFy=U7Ejwi|={E_AGm`iWwEcbW#TClAoLSKJRpnZaf#SRv z#>nxx`bq3_u4bR}OS3Lw1oUE1PpE(Gl$zCMZ9l^bx`yKu`mI8tl&)9E8C>^don-W+EM%2Q)RRMcpE0?#p+CC&9PFP0kw0i-2)ob&4Fo^A{>sV2 zE{(LG$d~5J(XaXoe+XqeS(KPG>p@;ee%JGp7OsX96gPt79$)OxH zN_NDFf=*AWf07+>{-9~vE@=1*M1G)+A?!d8G!T5+pOn(DOC#+k@}>E5H0(hSG?3=Q zfAC=!H0FKKNQXUR2>Z|j8nXvEAnX9ar}L-NA@{5K(fQCc@&O`08j&uCv^;1zdGH}e zBhuxNmIqDCqh8S;=(MlA2l)f(blN^>T8`F-9L(Mmr2mA-p>9l>&v>dGu zIhqeW@PXh1p%2;^LLO+W+>oP@)}v|K4_cq5p${}xURs~dkEUsP(6k)#r}?0vM&Sn%Z81Z^A*N3@2xEjF!@#qiqIGJ1Q zFHRzYh93BG;|lE32zi=(8f#4?><@CW%DZ&q0pXP%G((<5@E{C)n zO+%07CzUoP2m3(C1C8;GrNa&|x$@8h()w~V&4)gXkOLx}roorPk_$LDNX< zBVCSfES=VqqmycfmZNDo`{2{^Gz~c*(t$J|v@xXhjmf7p9r@6hQhO=YL;kdWa{07A z=;YdwlZQPT<>Zsgr|p7Ht{pjf+8*S9#?m1Nl#>TPrAXU{9aHgP4+y(JIX=>XNtJ_q zN|DY-j;8s@4}2i_atJvfim6>0mhms~#dfY47aLLW%$%kh&cN9)VcG#~cC2ZAq$kOM-Froop( zT0W^Xr!lGdK@R$$jUnV|gdX@QrJ)C; z?ST)Z(~Z&4ODfX#pa(uMseH%*p$`NeH$oPF?Vd76eC5a~dg584>g z`o`o_nvQ&EOsTz;>LGtxKe>EbA9Ql<$jQSVjdJqI<*Xni@F=EFYtK=9=dazMz@v>YFDzlyYd*h?-SdO+wW7oiWN_2u|U zm813LXqpfE-~+*zL&yOkN7LZTAuXR&8gj`+_>o*a$jj*`mk)b1CfAOfJnSMpshC_n z$kUkA{2&K?(8dt*G(r#jl+w@x()Pdy(&@%%=+Ov08X-sXLDT7=Q!B#n|1X$Y+W~(4 ze`yDEIZaao=r^W9(|Gm!teC2tu=D#oHH~HXX(}|0S2`=E@(Xr!mQDN1)b{1I-Dv^@Agq|-Fbr_({xD5pouC6|WXf&aw6#;W-E_+55~c5~&hYjxS|& z$tz?{Wv}7%W-d0XZB*g)+&VNlY@=E{==tdd_ia=qm-VQ0M`5eF;v2NKKq*^Q&lhbn z^>(sVMPa_0zJ)v6kepGK^`%Bi~6R;8I;*JnbQt;*E)NPQZ7NPkcq=y*&8 zEZKC)=oVv-bM@`AaMW=XO{1Ry^^HaLYwWL2bH5L3pH}PkZKA|q*KyIlJ+AGT2akh2 zeVy&Zey-Ch*ZR8G#fF_U;D82#Pum4wL^VZ&Ou(n@f(D9;&;yEW3BWfMN``;;kC6V? zdqutpbF}vN3vpi3*6!|Az`7dy00$f=&4W+0s( z2Q%jh)r#^8zCZOF&1Nq0_dx3g#aO%b2YprzTfq((_t~u->22q!pG+`7U{k(-IZ$v z^K#mPYES3Akosw^!8d#KBjb7f{&~jSix-bLam&kHFY=$C_#5I{(8~SCQr19OSC0al zruFDSu&?AnM&stnc=1jzteIbcXSn-f70v zz_bl`n$ek4IFq^j>T4Wz`nwj3h zd;Pw_w}_uP*G)uYGiXAwkL6IYSr)l>ekLsH5U=-V?agMEFwMsUsVQ2HG_{;~of>Z+T#uY%0i=Co$|2{s9AAwD*a!N})Sj{~)rdtp zjVIGb&s~|dGh4Ja`f|qb~D&U zrESZNpVHmWscc-arnV25>)8ZEIDIci}pnkx8|F;Nt^Fi_A-)S960!Y4$-Cc3p=$cb0g0GQb9o|8%%|@Sd`o`oPI` z>phtRFM}7yZ;jyf)!i*r+e!%aN@_Vie!&+Oeo=lCkGW4IlPw~6VbIwq5k<82S%7vW2P<`;y$>Cu7+=lHi^fuDfg)g`lyx{&# zBfK*HnK*9c)C%__!5YC1UC%kSoL0dL7Fsb~l)psFEBNyNq<@L)2Votk>#vd?`tzA* zd({3tmM|`pd%lZjZfN@p$UfV!CTCrT2TXX2k{i;Odrr*{y8EoxZ$ljpX0_(-ANYPR z_$@b{3#t0wJ@fT#{9)n_VVy$~&>s5jse4twP7`t#91G80~OcXX*%XZS#CzW=J{W~TbF{J15q zPaR>8u7B{8igN9*udmlk_YxPS96MWb33`Fhf|OLO-0 zxO#qab_4x%<(B#l$qfAlm}t4ge&(sMW{Nd;xl_L65viW_{MCNGTwUWi{&30qY*2#! z6gX<=jpi*wB)vb?pR#KX1bDRR&PMc)$?e_VgWb)4>ak~!cN!l)wVoFI3T;-gA6k(8 z6tC}<95b|L)rar2)QyLcOqQ&3+OH?$vR--lpUaqby77?I(_Y7H14efD5#(@v(n^FD z?|X!CiqLZP-e6$|_ucVxnE54gdF`|ESBm~=;b+~lewN`YTQb!nYmD}J@rqer&bd~e zU2P>l(XN=E{!&y}H>{;4$IBc~TGR^u7l!`P1Vv5mOU6Cc1LFiD7e= zvM*M9T9WdxoW8CckqrFc*+MyZJ=iZ)&?(1A_f-k%lauHCfc>YF8;8D?>I?NGwl7&X z2=~FBET0d)$a;WpcQQ^3_np%X(z$UL{i4j~>N5*OoR!kMPii8K&s_b#7Tc?uxNefu zi(LG$HpX>MPi$wFURUuh>a{0t@0PTWs^-(l7uLtv9}xNKcXce%28^D~yx0-=HPfL* z5<-tg;b`tMEX_}p{>lA&WRs$Y50;Vq6x4-w)tRE{pWMG!@A=+;X?&>RI6?L|6TN@e zhC;kSv$o#U_2`|<_f%cE4f8uZBsQ4m*>B0>CO~QVILH@XJ(IJx6;twFrm!rWq zihMuoM~|Zk_ZxUQvfscNEpf> zc0e2GCu|ogSt8Zaub=-&s+_P6N^1L%d5z2VPwY3eKILM6Hnbt1AD1Wn*|uo8x|@F| zwqU=EH+FAGJ^Kx!pKADvakGa-=glFj`<)yzOk2sT=k$~GIEr*$Pp==*G(T^;M)UKs zHrHDg`B12)XnvjbWS6*)Oecc=1N#kE*OXPSVP0Z9ll-*n)bveke;XFAB#uqkPgx>A zthk#~&?oy1iOUgg`FHs*7TBgdRAz0ysACKRY<9*WJpaNdzfnPdSB)lozCIVeVL3b8 zegj9VyGOBDPr)zBZ%&;5BzM1oS7Pf^_h*sJ3HHZ^)}wAq_gOubeLR0Z$jY#Me{jEn zuNS%>ie=_N{2#-CmIICc{PDDt_vI|r#c~BW_OWt)+a&&+-`ZWaZdW?n_`J>V?BRUd z?kDB$-+JoT!%zItbIstVoLzk({rgSuvED*?cs|J=e9%0qiz=&S>)UwWvaMpjrsfrw z`u>)FZyS29xsYJpiSYpW{;B)JU)XOTFIKKE-oHgMZ7T)6;I1e54}7&$*MIf*8w~0b z!g?tFPv#32TB6XEKh)+Tg!TV%X~iPnBUp&Vq9|@pRzN%*YQa! z-(O#f<)-~bzX2MgqhABnMg14p9?Gpba7wN}DK}rKSmI)n=Lz~#rOe^W*@lZGy+75T zG(&H#YDo4Q#||D zcY0BDeQS56=${sTcChiPx?oRp<}Y=Zr?(fqW{Na>=2WV6YspWvE9R%%Z#&pdCHoDn zC%-w-fB0dh{Kp#0f}FjSF00zV<@Os~1!POC4(0b7m=e`~y5BH3Cg@WB304XAU6C)4 z?pG+E!nSl{Za=|$OyN55)$WV)k8Ye&Hx$yp#E0Z_%kjgJzW?Uza`Pfz#iXC|c7L+p zP~e~W)m`_|?WoI-w?n>Ye_`JMAxtB#7a*NZXsP^M8sxM!mFX-CC`aBo&opRhKeXbZ zZ3)WDo6^?w&%H5M?ibURvd;?~DND+u;rY_OiC7+D*Pt9kkFxJa*QaP-N!gdKTjayH zE7@;&&)*04W(B_Zt+(GG+;=WANY~$Qc#^(bi@h&(`weIH#%Hcxr1lcmP3TXw-ZW}H z7WFjrx{CKuuU>e2iR?FEeQZ!J($(f&NMm`0@nDDBzPG58{*FPpDB1rcY3k>&OkGK) z_Rl@+`m2^*8!)LA|G)M_Q}-LQy{3T}+Q8txdzspV{E~gGw(DY@`J*>|% zXRr9~`+hN+9cAZTzwn!AHqWRX!OE;L?8Qs#hV?8T!@3n-l3wi;!)6^Zd#%^d7}oE? z#44xA^MO4IdR%yVknHcc_wSzORt#$@J0ny1{A=oY$bRIY;!`GCu_i;#K@&dzY%;&Z za+s5z3{a8d)(X$-aT*}(VjX;KlvB27@6;Rseh7f4|ajD3rw#4o)k_ORWN zPHCPj(|UehKJ~!lW30>Y{jU41PP1Zt3x480m|!0F+Mpy3Fu?)T!L51b%{#{NN7|eBgb`{`QR4{Qv63sry#QV;tdW zMJB%+0}n5MoZW*x-!D((6dzCaT+Ke`mu6kWsQLQ5rxlTXe8Zzlqv{Wss%hHn&;D1! z=jG;%bM41H$1Xe%Scye`#l2UhnVFGX521Iq1wEa?+OPPUe{9*gj5y9|G2TsfnlYk4 z`(S2rbgh+V+@CQ&Vuw9x7eqaGPV5`_Pug$N)>~V$+Z*#$%7Ah&_M8ML^_SM98Jr~gAe(n(vUNTuxkvB*-2`;v3!u8xIJ^69_C}rW4hGJyL&q&!L&)^n|!bbDUmc*OfU=kH1e# zh0o3XSL5`;A_tZ-$LUG<X%AP7mn6zjk{ruBf^>PLEVE;`+>S zdUSuo{*}S=5M*Bhd_0fwt8sc550L+#dd}$=o|`j>(>wRftHpmQPOtr}wMF&g^wtNJ z@4&_BxlK6rj*HW4HTs96IZh9~RT{??ri#7lVWJ?JMjPOr8Yr?)1F zae9TsIK5{waeDQ{IK9(JjMIa^LJ^I}=|TQa$LU2UGfofVDf~4Sr}u+XKpZ*t`}Nu# zKVc8Z@u@hyOi78;d;1@c(|e!7I6bkQS$bVXwD35*JdFD7h zgBk;&#t*FHf&aBQy}9=u+NuxsJDGEP&ijqWOh1Y76Nq%aKJ@w#P4n}nIZjXbANpr; zdKaC}o+oj7@xkx&a&dY<_kpEf-dG*w=aI_d^wMQ`IDNsC|4y79`g6L=nftV{(Z%W2 zuJ|CfS(fvDKW?_FRcV-wkDryZrMJC&+!NyT^w*0RGm?VIjnjfnj6(+blIs$DgX{7a z;`A^cAm4w%euF`r-uOFbo^aO_{0IJ9UwD2tVdC1gpaH-wDl-0VtmZ{5&c^7e9<~Tk1x;H_JIZjWe5^+BSOl};V zj9G~dyTIhyH^=FbswDUKri#{fvLjiE6+NliDF57HC2XO7b|$Lam*`Fy56|IXC*=$_B*Q<~4yGkSiX zTC6vqNJ;>{sZcWfyMLJD^hgcsJ%?tF(=*5EC0wWBDm2IG@%L%wI6a|5;D1#h;nL4P z;yFkldJ@psd3yU!d@f;*)05&m)Tp=L6{nXulMtr|blIS6XO7b|pQo2v&eOwqfa~C2 z@Z6k1oL>LHZO#8naeAAZueQ^V)2o~RulD?TdK;#_<>K@*JsRy`j?+VLmBw*%oF2E3 zBJUfc&(r(=8mAYV%s4&1N0D_Gp0hF*r-$d^AdenNBkbtQQE_@%k`kx){y!e47n8y` zJ+YlxdR>L~ME&#k8HqeMXDm)HRE*OD((Mb{9H)nxAgFi$!gFa_Z+}Eji~nhk)1zy| zfL0q&<~Ti62VF1VC&1LY-|%0H)7uv|zV%W~zmu27H7=TY_Vkk&KY>W+8;Bks^k{zG zG{@-~kJFpD;K?}>r`P$*BtA|LxXORn(|2A`e#28)oL=07i`%=+`tQW)p+Ap*JCJEp zP#34iey{k~x?Jb|9M7(b9X!d#XKnwT-}5$>k9$I#UZU4Ug3&A?BelorVLX86|APGn zgE+lSWwVBG*Ax5){#)bpyk0!$;Zsx>r?+#>`w^paoOgUT;C;guV{Cjr`N!SVDCPU> z|2j^u{J%U-Z*nr@^l;yaen+FRI6dh9?l`?NRGePFKNP3O*9W(L_>Z2ar@xOtw>?Lr zeWiNfewgF*4;oW_5E7{7Ma|MP*arulSOfuBrU`U3L=lIaTn?ae66h22;;N<~Y5SwF9(F z-5!{C&2f6D;opkpI6ax_#r+U4xp8zdW+gW40+Vas9H&RBlI(MsFJ&?M?4x( zy4=JcG(WjCZBLGdU1KPxpIpANe2|{dZVAHDkJIbR4M=1k2;&m)a%sh!7%wjs(utba zwArgwNDp);zm|Bg>$ddE@V1e+BlyU%&yDiroYqUsgLY%{EqFOc3I4XU{mGWydj{!p zH0&XN&_J^9MEo1BB6gd&zTT)B8gkTi_KC|9l5}!j-5AMVA~#3fWt&9vc8LG?2Q)0N z=rZX9?7~m@2O22nFXWL9dvZwZ{j1N@o4nNB#b&jQsz;Rp9hw}rQFWj8^z?%JHma!I zT`S#D*s4|r-dS6ql&z}VH|I>foorQpB`%NLIl@-e$Em^7h}E{LPow;us+05d=546u zGa<}Y6}YSgZ_lp$5Z>Oob}xB*ohS9;?Zs~k;q5KG-k!Ht^3x68-qj+_czZ5Q&hqv& zv+MHqst#txc6D4;`*h6lnO|mD)@hL8d;I>6$5h;YB^R$(vgwl1Eyf<_`j5-PQO6U| zbi1YHI>7KW{v6cW*Tf%mIzp@art_atK6Ib+w~2f@C)2}e+P*!m?U)t!0zG}5?Wprl z6^d!SoV+eJ)Wyw#?yl;{^Q$*1=vmOCzawpzv#s}0>;2|`s?~!|`t`|Go94ql_@LK? zchL7kEv5q@uBh~>Nt$wH2RnW({Br&C2c`Uc)7Q>E^K#`BqiDxbw3A|#95nJ{dK=5Y zTyMi1vwRLHGipg^hvM6tXZAhi=v(yjNw*4h?Uic>?yP;FipuXvw&r)c-3V5;-S(Y7 zmmu?sYdo$bquB{^u6^si0$h#>ni~VYU?NrZBGg!DYIL(UH zne&8dL1*g5^{mnCiZYGetQ!<#9XosbtQxk0z1BX<$ME$(n^&>?S9wB`1Tn}vPPn|zJ&4bM_{r2@~pLPBgs!D`mmmuo>l33qc*n`o- z3!PzVRdbp#b@>8~hz$6Z7vwAZVCD>oh99$nTOYaJ_bjt$&|^-IfgEV>lOBuhLrybS z7pL8@Z}2Tre{Tql32|UUdK51*fXq{mR@pI^d_S{Kq9$2H<$J}#4YDFh6q|EvrmbP+KCz=R%;n0@Kpyd2ZCaJ-_KcJVH2f4%P0@0s zspS+&Z6EY+&anW}J~HKy^IMLuMgr^u|E=fg%@(g0lndjgP3X?g58BOO?E~|=adCPf z%@-DHYWslcR#8Bt^LpZSylC%G2Ys6RUAY4JBIzM*Y-UL3$?!t>QgiE2X?`x$a#i%M z`Ij}mwI4iATpoG^X9(l4T|o=E@lUNME&XI;Ke7@b^FtV~-#8#XN~C=uo_L&IWk;k7 z*o2)QKP_ht$L_*)O5Sf@H%G^VM~lp31-v53@3351ihWRpU3z50?Im8G46x4y#c(dJ zX#A0!C)cg_WOnzAT^YYMg5~V1yIZJ=bP?*6|G#~~7Z!fO?~X+~ANbm+te8(ElPw~6 zW20+UZ1c&7p68iYmAAv$!Uz4C$KLL&%irf1#hf!Nm+q40j(EQi$)ufrdjaP!$LBun z57l-!m_E1E4#M;9w^=@sxY}U<{Q?)Y67JW0;ad$iNa zqu>QyoL+!y26Ci!!t?YD&MOj>4Zg+ogFjzSIM;|sKo9+S>kFmYzsC~hiR0#X@yrcv zn1JlO8})M5b$Gxq%fi;DFZW!UCyV9L#F1GR!BE8D6qL-|6dL^X)+Dk?-$Z zea<~lr%R^mr|LF}8MHD`mC4br*us_{ChidHS)ssv7TWXvfgkZxoUK%$%PZvAohDY2 zL;eQ&lIxD<4;Pjuzdw}<_G^FVl{($~3c zme?BkxpbF#MXZ$=4^Zyk)2^^C^#{c-oTsO#=v`ebUnFzkegFQ6#pyZrE>&mvKx@AL zs^?~w`Z4c`IKIIveH7QH(sgXXB|;vkuVCbNa-W-gQ{yj3{W!fWSF3t(aeAE=B=qnO?*VZ0VY~5v3zqi*37b7w*$+UJd&_K5nFMWt84O~DR#FV z8-Zw57IM)G)Hr57vk@%T*(rIlsS@ zel5sdf1F5X{SUX#q2c6oAE7@HJ*CCm`vD$py0gw@a@csc_h5gl*mZFC?s{y;%gxl` zQ|oELFH?2}`=JFnSIg^rCC3b{Sw+-4Cya;Oepi6qn|ABTxU9=V_?0~~%a4cCzHYJL z>NRcU8N)|*_hH_3j^o$=v^;3>zK0(lINpc7-*ocC4)ndJcW~bwKZn_Do6BpTmA_K- zPYXY-3;J1xuWZRgMb{YZ^WqiL)y}zAo?UGvKhdt3pZ-!*SU0StmC7r~r`gz|N0=8M zYE-dyd8_ntTkx722iFS7#>~EXv{SpsOy8JNJ8rs!$&Q1^m&fqqAQ@bA{*(GbzN#N& zWFz-6+b;_DZEy7Jg_Ki${cCG(94ehRd*qJqB@^^3HioUqrN?_&tY25FX@Y)ru7fZy zMu_=y5KrbuzMjQ?EA{tn5p2K&2b=JqDq62%GdkRvMydSX74)d?c)fa7_Z(p)*5blFLSs`7az6{!l?xKH`*<5{QfrztGdi0FC()i4^TcFrpyTx^roZigU0ktu%b9!Ps zv-G+O^@4im?cGXvo*vf6*dO5hCLi_32?MeOjGoP0TC(hGrbCM)6p|Buo8$EK>IBy# zSTy~U{RUIT>8<#(sbh}bhw1$}wdfKM9;!w86G+E?H3X81d_POVegiK@_8U06-2E)h zpEHt=no5_WX}+k2af7l#NbDED51Ka6Kzjo9^l@JfJD?5p$@N9ia-^x{Qtf`jeITkE2NE8(yy;(KJ7Po8$C^b>7d;)9byyHy5XO)q>&U z^nl|(_T7@1od1<(-Hj^I(um3Y=0Z}>YB3Z zHOxzCeaXplpXBa0@Jeib>Asey$-41j@s1l8PSC~a#jJgG{(g{^N=O&KhyJ`>zZ!oA&2egiZ}N52ND zi~8Sn>SwJva7wN}DYYSC@9#Ewo}fQjf7rX6ZMaArry`j~4`1;64cBrN5%wGQlK&OS ze#5m6?!tb9K(kzBYRlyFSBvQn{q7s=H`I7^M0US{=qW3e{l2Op*>AY;`ReuMWWOOz z)XNOyu7Sy77ue6L^+yf(8NM%wE9OMjdFu7Wsy}pQ72d&(^!FRqlr8<58<*+E-7&Dp zrTn9;RoHK+8xh~H-h>lO^QAxEZxH`~mHOxSONRRmEkym_9jE6|;qKBPXD{WGj;r2s z`wdS8WP|d(;P)GzzpI|;enT&=!;pQ1SKCit%0IzMwTqjWr2SppeuKtBkb4>;>^FQ| zqE|1ZU$F%zHRbjbp0=%4E56!&CA}}IZ7!te^KYF&o#Tfiy)Vl3S8iV9+lAP}{0Q0r z$$mqDf96+r-N!J)Dm|?{tDUy6Lc zz5&`xA+DP+PSJ6CdDiKzOLTe~dR>M7fcE9>C9>au^)c0S>UkH^SYBZ~SUjgaH}0XU z>g#g8+ph?o(sp4()JU?~x^@ z_1=Ri#>+LT+uPS9|G)bMMr^6&!4`e!d~0_d4|ZC{t49twc(Bi_G+BLI>A^Pac6OqM zCHsuCSeNtlJlIT!eCuCp;K2?Isa5KBBMp6v&OJzT5cTHvwRHOcgwQ$YNr@B{pY!By@tlH z$68FOa*8}3*m={)3r`QmunPD7-P7EPVTW0qZHHJ!q3!(=Nky~q@6fV+CC8G$uSv(c__HD zFb~z~D$GM`XA1Ms_XEN_)Z@M|PioQ$^N^|I^pwuRJh@qMo1e$il@sR4zU>A7E=&>p zE4^FrZ|-fuzqdaG|5}tWoF`4~pQ+oEl$Ku?lnWNt1;2VO3+7!qPH*1#YW5=zMYElj z-3VDp)<^zds@MBL);m&pTHSML5)j5H1k{M>T5(;gy|(qldgr{a8K5G^trecv<1|3n z#X9)fD5q>yUB780`ym@#JFbn^*o%5=oQ3=(d!k?hntI-rw_g?K_qYrDOWq=q`#veZ zU;KgR(Sb7N)Z+8N$XBiKBDejkcO|$Vr|qDgc(j7wxZeZna;?L6luBA~(7tQAhz?S2 z{=T7!H~fHD0z|&FeEG{`y}!N7l0d&x(7?9aCj=(oCooJgkPk4qadecq1SISNlWQMw zdcJl?I;DBCOzZi1`P2iGkFo0E`(5{2oo2=QW=C%o_6Np^&zXCO>AXX@KPEWe;^k|r z&`-<~5f@N2##hoW@2`bLl*Dm{Fp^fo~o9|&? ziS1&wxeE8c{k|Cwije&Q&76F;d(z)ss#T1!e%PtpDalXR2Ol*20fG?pR+qQVv3I^d#+}m^GmZXVxG94S09*sPb(tZ zyyxyNjjBIjE*=`UKl@(^pO^D*<;wSC;d#JH>}PS`rt;QqX=Y|5*F)%?Z9z}T^QSAm z<{w*jE+dX}T8wv-oo0+E&_0-%99?VW8TV(*kJw>P+67V1os;?-E1&5W*a%hxynXrx#H{Sf{q?B&<^pO%v9sR{Ml?>d1S-I`xi);X3vI zTb$kr%i1;Khw*WGtn+$rf6#qTT(p~Fj?+tayq>A=*Y(G^#D3Fpdgb!@FMk^C=-Xb5 z(>r*rOhztF@2~8JaeAYjzlC%E$K=>v@Zk9)(Xw%R8^k!hZ^?|)WBx~RdJn`ny?HfrTb;v&v9dpIZiK3HcnA4PR~}1)AQbWz?O^CyC=r! zbrR$Bkj{_k;{B^RPA}zgdK&S0bKjY3_&7bFYmsR!xwxXS|D!lPRwhnQLB;8{`ya>Y z89Z;0$U;M0KO~6LgC6?xCMr(vr5L9-Ta43lFcPQN_YcMCu}c$=)5HJ%xGpgcqMV93 zKabO6jl}6;JU|uy3!a-ZI8X0!#RVVs`0KK-A?=`FtNonJprueM`JXD&{! zp0&#(?mWG0t!LQ(EKYBL3F7oTe;%i&{rr2c9pr6z@z4v0AUiT!%>1`6@^g^jPy>()o-bXP`ub+`Py<;hi)5G|s zH4>+%HgTNZ(22>5)5CZQe=*+bHKoB%#Dg1?gFPUTr{nYnCM8a9c#;2hoL&d9z3_em z%yV>nA04MBwlhnwtI(c6-rgL&YOM`<0la5T>VP%^*mun^Yf-TPEXhe`$?Q0o2FsDEnn^_A8XdHw8a)8^e`SE-+#e=gTZ-vH5_73a@Q052Ts;&w|`TdUQf^7b-onW#pyjBKjLH6T<0Cb zTJJ63HPOcBd*z@P7LDZlE8-LN?r-=iLB9bSr0exBUicT{^sN5naeC`z;`DaP#OWc< z4*ibC)DoxXNX6-i@p|liF;4G=kvP5AVw~PiZs0-OncjPW5T_SP#pz+3`qOcGclXqq zm!VVAz;ptp9c1c9_+7IeZ9Q-?KZze?Gry>|60pQYOcO$ z`}}x8-V5};Nzuax%k*Z2bn%7>!5pWTcs!puPVf4wmR%b#h?DzY zBc7i%xc2dXd`z2j>IyhJRu!{Zfi_=S2Vt=ymVy-t?n)yIH<2;Q+hv|7>rC1?N9#ApDE0ZNaC5uH<<3tgD{?uqTJa zp22x~Ve#=rS{=Hq3XeU@;A|S(^lO)&$z9ve^#0UN_E0)jQ~At1(4vRV@w|Z|K+1R#l*R zn|)~q+p0E)?atS1iLGjSsS>jm9k*2#{JuW=?ju{3Qkf?Ai4DY#U&g}kPTHsjZkXz6 zA8Mm=Z}%m3TqYuyy`HPKqOHn($<<34+S{sHcJlISF~L^lw!Bxx*_&)tE}H7YZ7d1qV=9lTFMDk!=jk(& zf#ruM5&EK=-2m%XXT|+vg~BQ_|F?!V?U)iz%6)lIIN^DEQyy0Iz520(B>$wC_g;=( z_rgA;eBO>4TiY)Kmfwu`r|qI2#(lE?dgM$!yk{G1#T&P{*g9vLACeg2kM|CTcj@Ps zGv6AX-uS)rmyCHjYF>N!I=6e?{)C*}We@t)9kffq+`6&kN5uYP%FU|gp;bnl@&B~z zX7!`T&iT(gx@&sAd*}QQYp0AG5p>S~>CmiW)dZQYkuMez^tW%^H#qp5zb5VZ@UVC1 z{EJ#;-~6P^DdmGFXG?8+e@?k`VwP+^!RM6aGuEFzKj@q?{=^wuqObISm~sA4f{i-f z%&on9PWiU&yb~J_pHr@yFtMil_A|;>J%;59F0$BP`{v7+g4YK5l}Ot*{L-_L%8Y!u zD?7%v-GAlDtkwR$1!klR*d3#M`u%D6ioPQq>)*5vwe;=i7Zu*TRe+l8i$5RL_|mAZ z{+W)~zMto>Fy>fz3vF+=4{Wa^kDk`*|AB36+xThd{1`U-I7|Ah-XH2 zVzD7*$G`Gob3e~jKFi5jNLO4RvbNob?4epwUa_e2HNR%$JiUL^T^C=8D9*lbb5l8N z#0vKF;?euho!=_S@$!kBPdDV_qn15Lzr=ZZt~Vl@`YyU6j8kM?*IT6BdMs%@KPraZ z=DFIVSeNoby54hWIS#yRfA#hP=H=)D%W6Dd!KCfJvi82eb?50l^(+!lW3xNEHOJiw zg%lB@{=e@$z16)uG!yWD8mS-D`xmjkce|DQSoZm8ra=R%_K#{W(1^%@Z#k($hektY zOElVX!mUMJ;=7z>TG-uh`9iahfgEUu?2jFfE^oyF>Reqv&cMqz2f|D7s>nWuh;z+5Sl;Xd3wkfehrv?wA8hcgBky! z%^U9VXejk7LmKM@lnNNh^cVFD96h$lJ0{_Idhi49x6j__uiEdkzGDCB;5p~U=4sll z=f8fa;ughPu3FKp>&I9&@{XU!q(X zH(zM>E!c5v7JL3mmHwXN+xcBuP_*dV+#yWM@d6^9*CW?2^l92D?b=P_W<6uqJem_b z9@o2`u(%G@g4Mh1keFNREm^zZz$xL~LRs(=#ou_IUYgfe13EjbVQ`L_NRx3w_~6_+ z(29c7;_i=pB#sy0Het^q5HaT4lDa;Icv?ky|#w*o;mfRx3j{tzWSo6cD8j^{+ukg z7VEh8RX5L!0>ZXl$(tk}T`s5WW!;1cQ98o4C_3h%yVYE!*bW7Z@i^`)YdEL1~=cMAKs4o5bwSp;z`p69b1UZN_1oLsjy^eM?uj=QcGUKx?Y?dy+(%7a zCzN|&PeXqrS_$W!6^yFSj|Y`(=JWlE_nVCOeiz7yBbKkx*u2bnzj^gP_db-MKM{HD zsM1w6xzAl4a@MbZg8o!%+@0-_E$&P0V|DY%qINmIYWl7E$=bEv!jEz|A@Q5Jo?gRrK$rpUqXqX zc;BM|>;8llntDXO#Efy|jPQ@_Jd3uxeqQfsO`XYkdX?QRC(q%|(-ZvD!q3c)y+%(Y z=jnB?{CdYta-QCW{S7Mn?QARgS$kKH;_faU()=_m+;0PSp5Eb6E+>1C^Yl)w3@lP6 z{I&8)hRJ=oaqz8x?4nV(rxx$>nCV|>#N`it5}v2G%rdG%M{*yuxrZY^4rXwy=a^Bt z4kDSsRKDwwA-GPYH~eT3^GzzJP9DD|Ul*>Ifg*xW zBhnY%^3;A3?5SrrDy_kJcSJs*LlbRc=iMoYoOGVvu$2zONqJboKJF(XnM&@0|NBM= z$fa|7uwO2~W9XBrD-yHM`+@WHN__9Uf~zmuKGqHNd3sn6@atys+??Ebdgvc?yxoP| z-TCpk%MGC(=ZWq0MqD>xo}=}4fBD*h8`m-aiS5kN>#E|tiXQz=>bt0~V4wH%mJoMC z%BU8~sZd~jjQs(Tub$Mq>72n4K1{~8^ZgFwS;RDGE+F)1+*@YZ$ZJ>2u;BM^x^n%X ztntEm)L;S=*>B+eBiB(R|9qkc+dSm4<>l73rSq(5`s|9uvoB;>Q_JVaU?em5|pn>2U zB00xO)UPoy^kZD^hLZo-U%)wdG;Lr9?Mcw>=qmMH7Y_%>V}Aj5KpW`mU4ImxCe<`U zhEA%SIZjW%0`=MvY`PuMen7}ks0NL3^X>qPL0=m5Jh`NdeavTz2`4dr0+G(^!4LEc z9j)M>2R9z4hwK&NIO)sjJ=sOxxBj!wZ`^M{w$!DdKL7N2 zdJ0y$pA!6yWH$b@R*@myP3e6oJ#$+=Ke76?zIiUL? z{*U3f{%VwTpTwmWn-_e7p8@D@~rP zA^QzkUhwUz$TUM}SAk}E`PeM}NN=r~kz2oAbKcERRoAYtF1BxMmS5R#AjVjK!D1xS zsr{EZ+Scz9#OY%aQ@4OKe5)vGu7r9<(5GRdBuSpPK+kSB?La{r;TVE8M!?H_)y zZ>vwGT8jAx__>bi^itjNv}3KzE)nbK`4WI_X#6?|jkGiog5|jd5W@Z2aWRhS5@p{LF;`%m{ zsX-Qi-*b@thB=#mG_tlNU@H#8Vq`BG-G-yqOrzoGh&MPrYG*7j|cCcyWs zZolDXv-0aIu1IXZf!AZEHapdOcHNrntorXa-^=dA7WL0CZ_NC(Z1xdn|4Mf>jkeiG z$8rCV{f3wmhXBI_BmJcR z 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 C7kU-| literal 0 HcmV?d00001 diff --git a/spec/uo_cli_spec.rb b/spec/uo_cli_spec.rb index 0d22aaf7b..969190ccd 100644 --- a/spec/uo_cli_spec.rb +++ b/spec/uo_cli_spec.rb @@ -534,6 +534,16 @@ def select_measures(test_dir, measure_name_list, workflow = 'base_workflow.osw', end it 'post processes a Modelica simulation with the GMT for REopt LCCA analysis', :ghe do + # copy in the modelica results from spec_files (in case previous test was skipped due to lack of docker) + # check if exists first to avoid overwriting any existing results + unless (test_directory_ghe / 'modelica_ghe' / 'modelica_ghe.Districts.DistrictEnergySystem_results').exist? + unless (test_directory_ghe / 'modelica_ghe').exist? + FileUtils.mkdir_p(test_directory_ghe / 'modelica_ghe') + end + FileUtils.mkdir_p(test_directory_ghe / 'modelica_ghe' / 'modelica_ghe.Districts.DistrictEnergySystem_results') + FileUtils.cp_r(Dir.glob(spec_dir / 'spec_files' / 'modelica_ghe_results' / '*'), test_directory_ghe / 'modelica_ghe' / 'modelica_ghe.Districts.DistrictEnergySystem_results') + end + system("#{call_cli} des_process --model #{test_directory_ghe / 'modelica_ghe'}") expect((test_directory_ghe / 'modelica_ghe' / 'modelica_ghe.Districts.DistrictEnergySystem_results' / 'modelica_ghe.Districts.DistrictEnergySystem_result.csv').exist?).to be true end From 7b180d3aa3d4371d64b2d06a489a6b8a7b414244 Mon Sep 17 00:00:00 2001 From: Katherine Fleming <2205659+kflemin@users.noreply.github.com> Date: Mon, 22 Jun 2026 11:55:05 -0600 Subject: [PATCH 5/7] process code refactor --- lib/uo_cli.rb | 497 ++++++++++++++++++++++++-------------------------- 1 file changed, 243 insertions(+), 254 deletions(-) diff --git a/lib/uo_cli.rb b/lib/uo_cli.rb index 571b3dabd..8484b26fb 100755 --- a/lib/uo_cli.rb +++ b/lib/uo_cli.rb @@ -46,6 +46,124 @@ class UrbanOptCLI }.freeze + # Helper class: Manages loading or generating default post-processor context + # Encapsulates logic for cache validation and CSV header rehydration + class DefaultContextLoader + def initialize(root_dir, scenario_name, run_func) + @root_dir = root_dir + @scenario_name = scenario_name + @run_func = run_func + @run_dir = File.join(root_dir, 'run', scenario_name.downcase) + @default_report_json = File.join(@run_dir, 'default_scenario_report.json') + @default_report_csv = File.join(@run_dir, 'default_scenario_report.csv') + @post_processor = nil + @scenario_report = nil + end + + # Load existing default report from cache, or generate if missing + def load_or_generate + @post_processor ||= URBANopt::Scenario::ScenarioDefaultPostProcessor.new(@run_func) + + if File.exist?(@default_report_json) && File.exist?(@default_report_csv) + puts "\nDefault post-process outputs already exist for '#{@scenario_name}'. Skipping default re-run." + begin + @scenario_report = load_cached_report + puts 'Loaded existing default post-process outputs.' + rescue StandardError => e + puts "\nWARNING: Error loading cached default report: #{e.message}. Re-running default post-processor." + @scenario_report = @post_processor.run + @scenario_report.save(file_name = 'default_scenario_report', save_feature_reports: false) + @scenario_report.feature_reports.each(&:save) + puts 'Default post-process complete.' + end + else + puts "\nDefault post-process outputs not found for '#{@scenario_name}'. Running default post-process first." + @scenario_report = @post_processor.run + @scenario_report.save(file_name = 'default_scenario_report', save_feature_reports: false) + @scenario_report.feature_reports.each(&:save) + puts 'Default post-process complete.' + end + + @scenario_report + end + + # Get the post-processor instance + def post_processor + @post_processor ||= URBANopt::Scenario::ScenarioDefaultPostProcessor.new(@run_func) + @post_processor + end + + private + + # Load and rehydrate a cached scenario report from JSON and CSV files + def load_cached_report + report_hash = JSON.parse(File.read(@default_report_json), symbolize_names: true) + raise "Malformed report JSON in #{@default_report_json}: expected Hash" unless report_hash.is_a?(Hash) + + scenario_report_hash = report_hash[:scenario_report] + raise "Could not find :scenario_report in #{@default_report_json}" if scenario_report_hash.nil? + + rehydrate_scenario_report(scenario_report_hash, report_hash[:feature_reports] || []) + end + + # Rehydrate scenario and feature reports with CSV headers + def rehydrate_scenario_report(scenario_report_hash, feature_reports) + scenario_report_hash[:directory_name] = @run_dir + scenario_report_hash[:timeseries_csv] ||= {} + scenario_report_path = scenario_report_hash[:timeseries_csv][:path] + scenario_report_hash[:timeseries_csv][:path] = resolve_csv_path(scenario_report_path, @run_dir) || @default_report_csv + + scenario_header = csv_header_for(scenario_report_hash[:timeseries_csv][:path]) + scenario_report_hash[:timeseries_csv][:column_names] = scenario_header if scenario_header&.any? + + feature_reports.each do |feature_hash| + feature_dir = File.join(@run_dir, feature_hash[:id].to_s) + feature_hash[:directory_name] = feature_dir + feature_csv_path = feature_hash[:timeseries_csv]&.[](:path) + feature_hash[:timeseries_csv] ||= {} + feature_hash[:timeseries_csv][:path] = resolve_csv_path(feature_csv_path, feature_dir) + raise "Malformed feature report for id=#{feature_hash[:id]}: missing :timeseries_csv[:path]" if feature_hash[:timeseries_csv][:path].nil? + + feature_header = csv_header_for(feature_hash[:timeseries_csv][:path]) + feature_hash[:timeseries_csv][:column_names] = feature_header if feature_header&.any? + end + + scenario_report_hash[:feature_reports] = feature_reports + loaded_report = URBANopt::Reporting::DefaultReports::ScenarioReport.new(scenario_report_hash) + + # Rehydrate feature-level headers (TimeseriesCSV initializer filters them) + loaded_report.feature_reports.each do |feature_report| + feature_header = csv_header_for(feature_report.timeseries_csv.path) + feature_report.timeseries_csv.column_names = feature_header if feature_header&.any? + end + + loaded_report + end + + # Resolve CSV path (absolute or relative to base directory) + def resolve_csv_path(saved_path, base_dir) + return nil if saved_path.nil? + + raw_path = saved_path.to_s.strip + return nil if raw_path.empty? + + return raw_path if Pathname.new(raw_path).absolute? && File.exist?(raw_path) + + relative_path = raw_path.sub(%r{\A/+}, '') + File.join(base_dir, relative_path) + end + + # Read CSV headers from file + def csv_header_for(csv_path) + return nil if csv_path.nil? || !File.exist?(csv_path) + + header = CSV.open(csv_path, 'r', &:readline) + header.is_a?(Array) ? header : nil + rescue StandardError + nil + end + end + def initialize @subopts = nil @command = nil @@ -1598,132 +1716,134 @@ def self.install_python_dependencies end - # Post-process the scenario - if @opthash.command == 'process' - if @opthash.subopts[:default] == false && @opthash.subopts[:opendss] == false && @opthash.subopts[:reopt_scenario] == false && @opthash.subopts[:reopt_feature] == false && @opthash.subopts[:disco] == false && @opthash.subopts[:reopt_ghp] == false - abort("\nERROR: No valid process type entered. Must enter a valid process type\n") - end - - puts 'Post-processing URBANopt results' - - # delete process_status.json - process_filename = File.join(@root_dir, 'run', @scenario_name.downcase, 'process_status.json') - FileUtils.rm_rf(process_filename) if File.exist?(process_filename) - results = [] - run_dir = File.join(@root_dir, 'run', @scenario_name.downcase) - default_report_json = File.join(run_dir, 'default_scenario_report.json') - default_report_csv = File.join(run_dir, 'default_scenario_report.csv') - default_post_processor = nil - scenario_report = nil - - # New function to reload the default report from file, ensuring that the feature report paths are correct. - # This is needed in case the default post process was run in a previous execution and we are now trying to run an additional - # post process type that also needs access to the default scenario report. - - load_default_scenario_report = lambda do - report_hash = JSON.parse(File.read(default_report_json), symbolize_names: true) - raise "Malformed report JSON in #{default_report_json}: expected Hash" unless report_hash.is_a?(Hash) - - csv_header_for = lambda do |csv_path| - return nil if csv_path.nil? - return nil unless File.exist?(csv_path) - - header = CSV.open(csv_path, 'r', &:readline) - return nil unless header.is_a?(Array) - - header - rescue StandardError - nil - end - - scenario_report_hash = report_hash[:scenario_report] - raise "Could not find :scenario_report in #{default_report_json}" if scenario_report_hash.nil? - raise "Malformed :scenario_report in #{default_report_json}: expected Hash" unless scenario_report_hash.is_a?(Hash) - - resolve_saved_csv_path = lambda do |saved_path, base_dir| - return nil if saved_path.nil? - - raw_path = saved_path.to_s.strip - return nil if raw_path.empty? - - # Keep truly absolute, existing paths. Some historical reports stored - # project-relative paths with a leading '/', so those are normalized below. - return raw_path if Pathname.new(raw_path).absolute? && File.exist?(raw_path) - - relative_path = raw_path.sub(%r{\A/+}, '') - File.join(base_dir, relative_path) - end - - scenario_report_hash[:directory_name] = run_dir - scenario_report_hash[:timeseries_csv] ||= {} - scenario_report_path = scenario_report_hash[:timeseries_csv][:path] - scenario_report_hash[:timeseries_csv][:path] = resolve_saved_csv_path.call(scenario_report_path, run_dir) - if scenario_report_hash[:timeseries_csv][:path].nil? - scenario_report_hash[:timeseries_csv][:path] = default_report_csv - end - - scenario_header = csv_header_for.call(scenario_report_hash[:timeseries_csv][:path]) - if scenario_header && !scenario_header.empty? - scenario_report_hash[:timeseries_csv][:column_names] = scenario_header + # Handles capital costs, fuel loads, boiler config, and community PV + def build_reopt_assumptions(root_dir, scenario_name, scenario_path, feature_path, scenario_assumptions_default, subopts) + # Retrieve assumptions hash for modifications + assumptions_hash = JSON.parse(File.read(File.expand_path(scenario_assumptions_default)), symbolize_names: true) + + # Parse feature file to find community photovoltaic systems + community_photovoltaic = [] + feature_file = JSON.parse(File.read(File.expand_path(feature_path)), symbolize_names: true) + feature_file[:features].each do |feature| + if feature[:properties][:district_system_type] && (feature[:properties][:district_system_type] == 'Community Photovoltaic') + community_photovoltaic << feature end + rescue StandardError => e + puts "\nERROR: #{e.message}" + end - feature_reports = report_hash[:feature_reports] || [] - raise "Malformed :feature_reports in #{default_report_json}: expected Array" unless feature_reports.is_a?(Array) + # Configure Capital Costs Processing (retrieve from scenario CSV if they exist) + scenario_file = CSV.read(File.expand_path(scenario_path), headers: true, header_converters: :symbol) + required_columns = [:total_capital_costs, :capital_cost_per_floor_area_sqft] + if (scenario_file.headers & required_columns).any? + puts "\nINFO: Capital cost data found in ScenarioFile. Preparing wind capital costs for REopt Analysis...\n" - feature_reports.each do |feature_hash| - raise 'Malformed feature report entry: expected Hash' unless feature_hash.is_a?(Hash) + has_total_costs = scenario_file.headers.include?(:total_capital_costs) + has_cost_per_sqft = scenario_file.headers.include?(:capital_cost_per_floor_area_sqft) - feature_hash[:directory_name] = File.join(run_dir, feature_hash[:id].to_s) - if feature_hash[:timeseries_csv].nil? || !feature_hash[:timeseries_csv].is_a?(Hash) - raise "Malformed feature report for id=#{feature_hash[:id]}: missing or invalid :timeseries_csv" + # total_costs takes precedence over cost_per_sqft + if has_total_costs && !scenario_file.all? { |row| row[:total_capital_costs].nil? } + puts "\nINFO: Using 'Total Capital Costs ($)' column for REopt Cost Analysis.\n" + # warn if default values but run anyway + if scenario_file.all? { |row| row[:total_capital_costs].to_f == 100 } + puts "\nWARNING: 'Total Capital Costs ($)' column in ScenarioFile still contains default values for all rows. You should update these values in the scenario file with realistic capital costs and rerun REopt optimization.\n" end - - feature_csv_path = feature_hash[:timeseries_csv][:path] - feature_hash[:timeseries_csv][:path] = resolve_saved_csv_path.call(feature_csv_path, feature_hash[:directory_name]) - if feature_hash[:timeseries_csv][:path].nil? - raise "Malformed feature report for id=#{feature_hash[:id]}: missing :timeseries_csv[:path]" + total_sum = scenario_file.map { |row| row[:total_capital_costs].to_f }.sum + elsif has_cost_per_sqft && !scenario_file.all? { |row| row[:capital_cost_per_floor_area_sqft].nil? } + puts "\nINFO: Using 'Capital Cost Per Floor Area ($/sq.ft.)' column for REopt Cost Analysis.\n" + # warn if default values but run anyway + if scenario_file.all? { |row| row[:capital_cost_per_floor_area_sqft].to_f == 100 } + puts "\nWARNING: 'Capital Cost Per Floor Area ($/sq.ft.)' column in ScenarioFile still contains default values for all rows. You should update these values in the scenario file with realistic capital costs and rerun REopt optimization.\n" end - - feature_header = csv_header_for.call(feature_hash[:timeseries_csv][:path]) - if feature_header && !feature_header.empty? - feature_hash[:timeseries_csv][:column_names] = feature_header + total_sum = 0 + scenario_file.each do |row| + feature_id = row[:feature_id] + cost_per_sqft = row[:capital_cost_per_floor_area_sqft].to_f + feature = feature_file[:features].find { |f| f[:properties][:id] == feature_id } + floor_area = feature[:properties][:floor_area].to_f + total_sum += floor_area * cost_per_sqft end + else + # no cost data + puts "\nWARNING: Both 'Total Capital Costs ($)' and 'Capital Cost Per Floor Area ($/sq.ft.)' have no data. Update these values in the scenario file with realistic capital costs and rerun REopt optimization.\n" + total_sum = 0 end - # now add the features array back to report hash - scenario_report_hash[:feature_reports] = feature_reports + + # Configure Wind assumptions with capital costs + assumptions_hash[:Wind] ||= {} + assumptions_hash[:Wind][:min_kw] = total_sum + assumptions_hash[:Wind][:max_kw] = total_sum + puts "\nINFO: Total Wind Capital Cost for Scenario set to min_kw: $#{assumptions_hash[:Wind][:min_kw]}, max_kw: $#{assumptions_hash[:Wind][:max_kw]} for REopt Analysis.\n" + assumptions_hash[:Wind][:installed_cost_us_dollars_per_kw] = 1 + assumptions_hash[:Wind][:acres_per_kw] = assumptions_hash[:Wind][:acres_per_kw].nil? ? 0.0000000000001 : assumptions_hash[:Wind][:acres_per_kw] + assumptions_hash[:Wind][:installed_cost_per_kw] = 1 + assumptions_hash[:Wind][:macrs_option_years] = 0 + assumptions_hash[:Wind][:macrs_bonus_fraction] = 0 + assumptions_hash[:Wind][:federal_itc_fraction] = 0 + assumptions_hash[:Wind][:production_factor_series] = Array.new(8760, 0) + end + + # Validate and log boiler assumptions + boiler_assumptions = assumptions_hash[:ExistingBoiler] || assumptions_hash['ExistingBoiler'] + if boiler_assumptions.nil? + puts "[WARN] ExistingBoiler assumptions not found. Available keys: #{assumptions_hash.keys.inspect}" + else + fuel_cost = boiler_assumptions[:fuel_cost_per_mmbtu] || boiler_assumptions['fuel_cost_per_mmbtu'] + if fuel_cost.nil? + puts "WARNING: There is no 'ExistingBoiler.fuel_cost_per_mmbtu' value in the assumptions file." + elsif fuel_cost == 11.5 + puts "WARNING: The 'fuel_cost_per_mmbtu' under 'ExistingBoiler' is still set to the default value of $11.5/MMBtu. Please update this value with a site-specific fuel cost." + else + puts "INFO: Using ExistingBoiler fuel cost of #{fuel_cost} $/MMBtu." + end + end - loaded_report = URBANopt::Reporting::DefaultReports::ScenarioReport.new(scenario_report_hash) + # Add timeseries fuel consumption data if default report exists + scenario_csv_path = File.join(root_dir, 'run', scenario_name.downcase, 'default_scenario_report.csv') + if File.exist?(scenario_csv_path) + assumptions_hash[:SpaceHeatingLoad] ||= {} + assumptions_hash[:SpaceHeatingLoad][:fuel_loads_mmbtu_per_hour] ||= [] + scenario_csv = CSV.read(scenario_csv_path, headers: true) + column_name = 'NaturalGas:Facility(kBtu)' - # TimeseriesCSV initializer filters columns against scenario-level schema. - # Rehydrate from CSV headers to preserve feature-specific columns required by REopt feature processing. - loaded_report.feature_reports.each do |feature_report| - feature_header = csv_header_for.call(feature_report.timeseries_csv.path) - feature_report.timeseries_csv.column_names = feature_header if feature_header && !feature_header.empty? + if scenario_csv.headers.include?(column_name) + scenario_csv.each do |row| + kbtu_value = row[column_name].to_f + mmbtu_value = kbtu_value / 1000.0 + if assumptions_hash[:SpaceHeatingLoad][:fuel_loads_mmbtu_per_hour].is_a?(Array) + assumptions_hash[:SpaceHeatingLoad][:fuel_loads_mmbtu_per_hour] << mmbtu_value + end + end end + end - loaded_report + { assumptions_hash: assumptions_hash, community_photovoltaic: community_photovoltaic } + end + + # Post-process the scenario + if @opthash.command == 'process' + # Validate that at least one process mode is selected + process_modes = [:default, :opendss, :disco, :reopt_scenario, :reopt_feature, :reopt_ghp] + has_mode = process_modes.any? { |mode| @opthash.subopts[mode] == true } + unless has_mode + abort("\nERROR: No valid process type entered. Must enter a valid process type\n") end - ensure_default_context = lambda do - default_post_processor ||= URBANopt::Scenario::ScenarioDefaultPostProcessor.new(run_func) + puts 'Post-processing URBANopt results' - if File.exist?(default_report_json) && File.exist?(default_report_csv) - puts "\nDefault post-process outputs already exist for '#{@scenario_name}'. Skipping default re-run." - begin - scenario_report = load_default_scenario_report.call - puts 'Loaded existing default post-process outputs.' - next - rescue StandardError => e - puts "Could not load existing default outputs (#{e.message}). Re-running default post-process." - end - else - puts "\nDefault post-process outputs not found for '#{@scenario_name}'. Running default post-process first." - end + # delete process_status.json + process_filename = File.join(@root_dir, 'run', @scenario_name.downcase, 'process_status.json') + FileUtils.rm_rf(process_filename) if File.exist?(process_filename) + results = [] + run_dir = File.join(@root_dir, 'run', @scenario_name.downcase) - scenario_report = default_post_processor.run - scenario_report.save(file_name = 'default_scenario_report', save_feature_reports: false) - scenario_report.feature_reports.each(&:save) - puts 'Default post-process complete.' + # Initialize context loader for managing default report caching and rehydration + context_loader = DefaultContextLoader.new(@root_dir, @scenario_name, run_func) + scenario_report = nil + + # Helper to ensure default context is loaded - returns scenario report + ensure_default_context = lambda do + scenario_report = context_loader.load_or_generate end if @opthash.subopts[:default] == true @@ -1741,7 +1861,7 @@ def self.install_python_dependencies results << { process_type: 'default', status: 'Complete', timestamp: Time.now.strftime('%Y-%m-%dT%k:%M:%S.%L') } elsif @opthash.subopts[:opendss] == true puts "\nPost-processing OpenDSS results\n" - ensure_default_context.call + scenario_report = ensure_default_context.call opendss_folder = File.join(@root_dir, 'run', @scenario_name.downcase, 'opendss') if File.directory?(opendss_folder) opendss_folder_name = File.basename(opendss_folder) @@ -1760,7 +1880,7 @@ def self.install_python_dependencies abort("\nDISCO post-processing is not available in this version due to a temporary dependency issue. It will be restored in the next version.\n") elsif (@opthash.subopts[:reopt_scenario] == true) || (@opthash.subopts[:reopt_feature] == true) || (@opthash.subopts[:reopt_backup_power] == true) # --- REOPT Scenarios --- - ensure_default_context.call + scenario_report = ensure_default_context.call # Configure ERP Assumptions if @opthash.subopts[:reopt_backup_power] == true @@ -1812,149 +1932,18 @@ def self.install_python_dependencies end puts "\nRunning the REopt post-processor with scenario assumptions file: #{scenario_assumptions}\n" - # Add community photovoltaic if present in the Feature File - community_photovoltaic = [] - feature_file = JSON.parse(File.read(File.expand_path(@opthash.subopts[:feature])), symbolize_names: true) - feature_file[:features].each do |feature| - if feature[:properties][:district_system_type] && (feature[:properties][:district_system_type] == 'Community Photovoltaic') - community_photovoltaic << feature - end - rescue StandardError => e - puts "\nERROR: #{e.message}" - end - # retrieve assumptions hash for modifications - assumptions_hash = JSON.parse(File.read(File.expand_path(scenario_assumptions)), symbolize_names: true) - - # # Defensively initialize all expected nested structures that gems might append to - # assumptions_hash[:PV] = Array(assumptions_hash[:PV]) if assumptions_hash[:PV].nil? - # assumptions_hash[:Battery] ||= {} - # assumptions_hash[:ElectricStorage] ||= {} - # assumptions_hash[:Generator] ||= {} - # assumptions_hash[:CHP] ||= {} - # assumptions_hash[:GHP] ||= {} - # assumptions_hash[:Wind] ||= {} - # assumptions_hash[:Boiler] ||= {} - # assumptions_hash[:ExistingBoiler] ||= {} - # assumptions_hash[:SpaceHeatingLoad] ||= {} - # assumptions_hash[:SpaceHeatingLoad][:fuel_loads_mmbtu_per_hour] ||= [] - - - # Configure Capital Costs Processing (retrieve from scenario CSV if they exist) - scenario_file = CSV.read(File.expand_path(@opthash.subopts[:scenario]), headers: true, header_converters: :symbol) - # column headers converted to symbols - required_columns = [:total_capital_costs, :capital_cost_per_floor_area_sqft] - if (scenario_file.headers & required_columns).any? - # assume cost analysis if either column is present - puts "\nINFO: Capital cost data found in ScenarioFile. Preparing wind capital costs for REopt Analysis...\n" - - # check if both columns are present or just one - has_total_costs = scenario_file.headers.include?(:total_capital_costs) - has_cost_per_sqft = scenario_file.headers.include?(:capital_cost_per_floor_area_sqft) - - # total_costs takes precedence over cost_per_sqft - if has_total_costs and not scenario_file.all? { |row| row[:total_capital_costs].nil?} - puts "\nINFO: Using 'Total Capital Costs ($)' column for REopt Cost Analysis.\n" - # warn if default values but run anyway - if scenario_file.all? { |row| row[:total_capital_costs].to_f == 100 } - puts "\nWARNING: 'Total Capital Costs ($)' column in ScenarioFile still contains default values for all rows. You should update these values in the scenario file with realistic capital costs and rerun REopt optimization.\n" - end - total_sum = scenario_file.map { |row| row[:total_capital_costs].to_f }.sum - elsif has_cost_per_sqft and not scenario_file.all? { |row| row[:capital_cost_per_floor_area_sqft].nil?} - puts "\nINFO: Using 'Capital Cost Per Floor Area ($/sq.ft.)' column for REopt Cost Analysis.\n" - # warn if default values but run anyway - if scenario_file.all? { |row| row[:capital_cost_per_floor_area_sqft].to_f == 100 } - puts "\nWARNING: 'Capital Cost Per Floor Area ($/sq.ft.)' column in ScenarioFile still contains default values for all rows. You should update these values in the scenario file with realistic capital costs and rerun REopt optimization.\n" - end - total_sum = 0 - scenario_file.each do |row| - feature_id = row[:feature_id] - cost_per_sqft = row[:capital_cost_per_floor_area_sqft].to_f - feature = feature_file[:features].find { |f| f[:properties][:id] == feature_id } - floor_area = feature[:properties][:floor_area].to_f - total_sum += floor_area * cost_per_sqft - end - else - # no cost data - puts "\nWARNING: Both 'Total Capital Costs ($)' and 'Capital Cost Per Floor Area ($/sq.ft.)' have no data. Update these values in the scenario file with realistic capital costs and rerun REopt optimization.\n" - total_sum = 0 - end - # Ensure Wind key exists before setting properties - assumptions_hash[:Wind] ||= {} - # set min_kw and max_kw to total_sum to capture capital cost in REopt - assumptions_hash[:Wind][:min_kw] = total_sum - assumptions_hash[:Wind][:max_kw] = total_sum - puts "\nINFO: Total Wind Capital Cost for Scenario set to min_kw: $#{assumptions_hash[:Wind][:min_kw]}, max_kw: $#{assumptions_hash[:Wind][:max_kw]} for REopt Analysis.\n" - # set the installed_cost_per_kw to 1 to ensure REopt uses min/max kw values for capital cost - assumptions_hash[:Wind][:installed_cost_us_dollars_per_kw] = 1 - - # Set the acres_per_kw to a very small value to allow the REopt optimization to succeed - # this value will divide the calculated Site.land_acres value to give the maximum allowable kw for the run - # if that value is smaller than the total_sum above, the simulation will fail with the - # following error: "Userprovided minimum wind kW is greater than either wind.max_kw or - # calculated landconstrained kW (site.land_acres x wind.acres_per_kw). Update wind.min_kw or site.land_acres" - # if you run into errors with this default, set it manually to an even smaller value in your - # assumptions file and UO will keep that value - assumptions_hash[:Wind][:acres_per_kw] = assumptions_hash[:Wind][:acres_per_kw].nil? ? 0.0000000000001: assumptions_hash[:Wind][:acres_per_kw] - - # other wind-related assumptions to compute costs - assumptions_hash[:Wind][:installed_cost_per_kw] = 1 - assumptions_hash[:Wind][:macrs_option_years] = 0 - assumptions_hash[:Wind][:macrs_bonus_fraction] = 0 - assumptions_hash[:Wind][:federal_itc_fraction] = 0 - assumptions_hash[:Wind][:production_factor_series] = Array.new(8760, 0) - - if assumptions_hash.nil? - puts "[WARN] Assumptions hash is nil." - else - # Look for boiler assumptions (symbol or string keys) - boiler_assumptions = - assumptions_hash[:ExistingBoiler] || - assumptions_hash['ExistingBoiler'] - - if boiler_assumptions.nil? - puts "[WARN] ExistingBoiler assumptions not found. Available keys: #{assumptions_hash.keys.inspect}" - else - # Try to read fuel cost - fuel_cost = - boiler_assumptions[:fuel_cost_per_mmbtu] || - boiler_assumptions['fuel_cost_per_mmbtu'] - - if fuel_cost.nil? - puts "WARNING: There is no 'ExistingBoiler.fuel_cost_per_mmbtu' value in the assumptions file." - elsif fuel_cost == 11.5 - puts "WARNING: The 'fuel_cost_per_mmbtu' under 'ExistingBoiler' is still set to the default value of $11.5/MMBtu. Please update this value with a site-specific fuel cost." - else - puts "INFO: Using ExistingBoiler fuel cost of #{fuel_cost} $/MMBtu." - end - end - end - - # Add timeseries data for fuel consumption to assumptions file, if present - # read scenario csv report - if assumptions_hash.nil? - puts "[WARN] Assumptions hash is nil." - else - # Look for boiler assumptions (symbol or string keys) - assumptions_hash[:SpaceHeatingLoad] ||= {} - assumptions_hash[:SpaceHeatingLoad][:fuel_loads_mmbtu_per_hour] ||= [] - scenario_csv = CSV.read(File.join(@root_dir, 'run', @scenario_name.downcase, 'default_scenario_report.csv'), headers: true) - - column_name = 'NaturalGas:Facility(kBtu)' - - # Read every row - if scenario_csv.headers.include?(column_name) - # puts "\nINFO: Found '#{column_name}' column in default_scenario_report.csv. Adding space heating fuel load timeseries to REopt assumptions.\n" - scenario_csv.each do |row| - kbtu_value = row[column_name].to_f - mmbtu_value = kbtu_value / 1000.0 - if assumptions_hash[:SpaceHeatingLoad][:fuel_loads_mmbtu_per_hour].is_a?(Array) - assumptions_hash[:SpaceHeatingLoad][:fuel_loads_mmbtu_per_hour] << mmbtu_value - end - end - end - end - end + # Build and update REopt assumptions (capital costs, fuel loads, boiler config, community PV) + assumptions_result = build_reopt_assumptions( + @root_dir, + @scenario_name, + @opthash.subopts[:scenario], + @opthash.subopts[:feature], + scenario_assumptions, + @opthash.subopts + ) + assumptions_hash = assumptions_result[:assumptions_hash] + community_photovoltaic = assumptions_result[:community_photovoltaic] # Write assumptions hash to file since REoptPostProcessor reads from file updated_assumptions_file = File.join(@root_dir, 'run', @scenario_name.downcase, 'updated_reopt_scenario_assumptions.json') From a42486c27a2fe3bebcbaa5e781fffc27abe5a271 Mon Sep 17 00:00:00 2001 From: Katherine Fleming <2205659+kflemin@users.noreply.github.com> Date: Mon, 22 Jun 2026 12:49:58 -0600 Subject: [PATCH 6/7] fix tests --- lib/uo_cli.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/uo_cli.rb b/lib/uo_cli.rb index 8484b26fb..35601c80f 100755 --- a/lib/uo_cli.rb +++ b/lib/uo_cli.rb @@ -1838,7 +1838,7 @@ def build_reopt_assumptions(root_dir, scenario_name, scenario_path, feature_path run_dir = File.join(@root_dir, 'run', @scenario_name.downcase) # Initialize context loader for managing default report caching and rehydration - context_loader = DefaultContextLoader.new(@root_dir, @scenario_name, run_func) + context_loader = UrbanOptCLI::DefaultContextLoader.new(@root_dir, @scenario_name, run_func) scenario_report = nil # Helper to ensure default context is loaded - returns scenario report From 1bde76060d431205a83e35861bad273aa3b6c360 Mon Sep 17 00:00:00 2001 From: Katherine Fleming <2205659+kflemin@users.noreply.github.com> Date: Tue, 23 Jun 2026 21:50:39 -0600 Subject: [PATCH 7/7] refactor process --- lib/uo_cli.rb | 357 ++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 316 insertions(+), 41 deletions(-) diff --git a/lib/uo_cli.rb b/lib/uo_cli.rb index 35601c80f..6d19c5352 100755 --- a/lib/uo_cli.rb +++ b/lib/uo_cli.rb @@ -650,6 +650,48 @@ def self.run_func reopt_files_dir = @root_dir / 'reopt/' num_header_rows = 1 + # Ensure the scenario run directory exists before handing off to the + # scenario runner. Some downstream OpenStudio/Scenario workflows assume + # the parent path already exists when writing status or output files. + FileUtils.mkdir_p(run_dir) + + # Preserve a copy of the Scenario CSV inside the run directory so later + # process steps can recover if the project-root copy disappears during an + # interrupted or partially failed simulation workflow. + begin + if File.exist?(csv_file) + scenario_backup_csv = run_dir / @scenario_file_name + FileUtils.cp(csv_file, scenario_backup_csv) unless scenario_backup_csv.exist? + + persistent_scenario_backup_csv = @root_dir / ".#{@scenario_file_name}.backup" + FileUtils.cp(csv_file, persistent_scenario_backup_csv) unless persistent_scenario_backup_csv.exist? + end + rescue StandardError => e + puts "WARNING: Could not back up scenario CSV into run directory: #{e.message}" + end + + # Pre-create per-feature run directories from the Scenario CSV to reduce + # intermittent failures where downstream tools attempt to write into a + # feature run directory that has not yet been materialized. + begin + if File.exist?(csv_file) + parsed_run_csv = CSV.read(csv_file, headers: true, col_sep: ',') + feature_id_header = if parsed_run_csv.headers.include?('Feature Id') + 'Feature Id' + elsif parsed_run_csv.headers.include?('feature_id') + 'feature_id' + end + + if feature_id_header + parsed_run_csv[feature_id_header].compact.each do |feature_id| + FileUtils.mkdir_p(run_dir / feature_id.to_s) + end + end + end + rescue StandardError => e + puts "WARNING: Could not pre-create scenario run directories: #{e.message}" + end + if @feature_id feature_run_dir = run_dir / @feature_id # If run folder for feature exists, remove it @@ -1717,7 +1759,7 @@ def self.install_python_dependencies end # Handles capital costs, fuel loads, boiler config, and community PV - def build_reopt_assumptions(root_dir, scenario_name, scenario_path, feature_path, scenario_assumptions_default, subopts) + def self.build_reopt_assumptions(root_dir, scenario_name, scenario_path, feature_path, scenario_assumptions_default, subopts) # Retrieve assumptions hash for modifications assumptions_hash = JSON.parse(File.read(File.expand_path(scenario_assumptions_default)), symbolize_names: true) @@ -1735,7 +1777,9 @@ def build_reopt_assumptions(root_dir, scenario_name, scenario_path, feature_path # Configure Capital Costs Processing (retrieve from scenario CSV if they exist) scenario_file = CSV.read(File.expand_path(scenario_path), headers: true, header_converters: :symbol) required_columns = [:total_capital_costs, :capital_cost_per_floor_area_sqft] + has_capital_cost_data = false if (scenario_file.headers & required_columns).any? + has_capital_cost_data = true puts "\nINFO: Capital cost data found in ScenarioFile. Preparing wind capital costs for REopt Analysis...\n" has_total_costs = scenario_file.headers.include?(:total_capital_costs) @@ -1783,35 +1827,39 @@ def build_reopt_assumptions(root_dir, scenario_name, scenario_path, feature_path assumptions_hash[:Wind][:production_factor_series] = Array.new(8760, 0) end - # Validate and log boiler assumptions - boiler_assumptions = assumptions_hash[:ExistingBoiler] || assumptions_hash['ExistingBoiler'] - if boiler_assumptions.nil? - puts "[WARN] ExistingBoiler assumptions not found. Available keys: #{assumptions_hash.keys.inspect}" - else - fuel_cost = boiler_assumptions[:fuel_cost_per_mmbtu] || boiler_assumptions['fuel_cost_per_mmbtu'] - if fuel_cost.nil? - puts "WARNING: There is no 'ExistingBoiler.fuel_cost_per_mmbtu' value in the assumptions file." - elsif fuel_cost == 11.5 - puts "WARNING: The 'fuel_cost_per_mmbtu' under 'ExistingBoiler' is still set to the default value of $11.5/MMBtu. Please update this value with a site-specific fuel cost." + # Keep legacy behavior: boiler checks and space-heating timeseries are only + # applied when capital-cost mode is active. + if has_capital_cost_data + # Validate and log boiler assumptions + boiler_assumptions = assumptions_hash[:ExistingBoiler] || assumptions_hash['ExistingBoiler'] + if boiler_assumptions.nil? + puts "[WARN] ExistingBoiler assumptions not found. Available keys: #{assumptions_hash.keys.inspect}" else - puts "INFO: Using ExistingBoiler fuel cost of #{fuel_cost} $/MMBtu." + fuel_cost = boiler_assumptions[:fuel_cost_per_mmbtu] || boiler_assumptions['fuel_cost_per_mmbtu'] + if fuel_cost.nil? + puts "WARNING: There is no 'ExistingBoiler.fuel_cost_per_mmbtu' value in the assumptions file." + elsif fuel_cost == 11.5 + puts "WARNING: The 'fuel_cost_per_mmbtu' under 'ExistingBoiler' is still set to the default value of $11.5/MMBtu. Please update this value with a site-specific fuel cost." + else + puts "INFO: Using ExistingBoiler fuel cost of #{fuel_cost} $/MMBtu." + end end - end - # Add timeseries fuel consumption data if default report exists - scenario_csv_path = File.join(root_dir, 'run', scenario_name.downcase, 'default_scenario_report.csv') - if File.exist?(scenario_csv_path) - assumptions_hash[:SpaceHeatingLoad] ||= {} - assumptions_hash[:SpaceHeatingLoad][:fuel_loads_mmbtu_per_hour] ||= [] - scenario_csv = CSV.read(scenario_csv_path, headers: true) - column_name = 'NaturalGas:Facility(kBtu)' - - if scenario_csv.headers.include?(column_name) - scenario_csv.each do |row| - kbtu_value = row[column_name].to_f - mmbtu_value = kbtu_value / 1000.0 - if assumptions_hash[:SpaceHeatingLoad][:fuel_loads_mmbtu_per_hour].is_a?(Array) - assumptions_hash[:SpaceHeatingLoad][:fuel_loads_mmbtu_per_hour] << mmbtu_value + # Add timeseries fuel consumption data if default report exists + scenario_csv_path = File.join(root_dir, 'run', scenario_name.downcase, 'default_scenario_report.csv') + if File.exist?(scenario_csv_path) + assumptions_hash[:SpaceHeatingLoad] ||= {} + assumptions_hash[:SpaceHeatingLoad][:fuel_loads_mmbtu_per_hour] ||= [] + scenario_csv = CSV.read(scenario_csv_path, headers: true) + column_name = 'NaturalGas:Facility(kBtu)' + + if scenario_csv.headers.include?(column_name) + scenario_csv.each do |row| + kbtu_value = row[column_name].to_f + mmbtu_value = kbtu_value / 1000.0 + if assumptions_hash[:SpaceHeatingLoad][:fuel_loads_mmbtu_per_hour].is_a?(Array) + assumptions_hash[:SpaceHeatingLoad][:fuel_loads_mmbtu_per_hour] << mmbtu_value + end end end end @@ -1829,6 +1877,20 @@ def build_reopt_assumptions(root_dir, scenario_name, scenario_path, feature_path abort("\nERROR: No valid process type entered. Must enter a valid process type\n") end + # Recover the Scenario CSV from the run directory backup when available. + scenario_input_path = File.expand_path(@opthash.subopts[:scenario]) + scenario_backup_path = File.join(@root_dir, 'run', @scenario_name.downcase, @scenario_file_name.to_s) + persistent_scenario_backup_path = File.join(@root_dir, ".#{@scenario_file_name}.backup") + if !File.exist?(scenario_input_path) + if File.exist?(scenario_backup_path) + FileUtils.cp(scenario_backup_path, scenario_input_path) + puts "Recovered missing Scenario CSV from run directory backup: #{scenario_input_path}" + elsif File.exist?(persistent_scenario_backup_path) + FileUtils.cp(persistent_scenario_backup_path, scenario_input_path) + puts "Recovered missing Scenario CSV from persistent backup: #{scenario_input_path}" + end + end + puts 'Post-processing URBANopt results' # delete process_status.json @@ -1839,11 +1901,14 @@ def build_reopt_assumptions(root_dir, scenario_name, scenario_path, feature_path # Initialize context loader for managing default report caching and rehydration context_loader = UrbanOptCLI::DefaultContextLoader.new(@root_dir, @scenario_name, run_func) + default_post_processor = nil scenario_report = nil # Helper to ensure default context is loaded - returns scenario report ensure_default_context = lambda do scenario_report = context_loader.load_or_generate + default_post_processor = context_loader.post_processor + scenario_report end if @opthash.subopts[:default] == true @@ -1933,21 +1998,215 @@ def build_reopt_assumptions(root_dir, scenario_name, scenario_path, feature_path puts "\nRunning the REopt post-processor with scenario assumptions file: #{scenario_assumptions}\n" - # Build and update REopt assumptions (capital costs, fuel loads, boiler config, community PV) - assumptions_result = build_reopt_assumptions( - @root_dir, - @scenario_name, - @opthash.subopts[:scenario], - @opthash.subopts[:feature], - scenario_assumptions, - @opthash.subopts - ) - assumptions_hash = assumptions_result[:assumptions_hash] - community_photovoltaic = assumptions_result[:community_photovoltaic] + # Add community photovoltaic if present in the Feature File + community_photovoltaic = [] + feature_file = JSON.parse(File.read(File.expand_path(@opthash.subopts[:feature])), symbolize_names: true) + feature_file[:features].each do |feature| + if feature[:properties][:district_system_type] && (feature[:properties][:district_system_type] == 'Community Photovoltaic') + community_photovoltaic << feature + end + rescue StandardError => e + puts "\nERROR: #{e.message}" + end + # retrieve assumptions hash for modifications + assumptions_hash = JSON.parse(File.read(File.expand_path(scenario_assumptions)), symbolize_names: true) + + # Configure Capital Costs Processing (retrieve from scenario CSV if they exist) + scenario_file = CSV.read(File.expand_path(@opthash.subopts[:scenario]), headers: true, header_converters: :symbol) + # column headers converted to symbols + required_columns = [:total_capital_costs, :capital_cost_per_floor_area_sqft] + if (scenario_file.headers & required_columns).any? + # assume cost analysis if either column is present + puts "\nINFO: Capital cost data found in ScenarioFile. Preparing wind capital costs for REopt Analysis...\n" + + # check if both columns are present or just one + has_total_costs = scenario_file.headers.include?(:total_capital_costs) + has_cost_per_sqft = scenario_file.headers.include?(:capital_cost_per_floor_area_sqft) + + # total_costs takes precedence over cost_per_sqft + if has_total_costs and not scenario_file.all? { |row| row[:total_capital_costs].nil?} + puts "\nINFO: Using 'Total Capital Costs ($)' column for REopt Cost Analysis.\n" + # warn if default values but run anyway + if scenario_file.all? { |row| row[:total_capital_costs].to_f == 100 } + puts "\nWARNING: 'Total Capital Costs ($)' column in ScenarioFile still contains default values for all rows. You should update these values in the scenario file with realistic capital costs and rerun REopt optimization.\n" + end + total_sum = scenario_file.map { |row| row[:total_capital_costs].to_f }.sum + elsif has_cost_per_sqft and not scenario_file.all? { |row| row[:capital_cost_per_floor_area_sqft].nil?} + puts "\nINFO: Using 'Capital Cost Per Floor Area ($/sq.ft.)' column for REopt Cost Analysis.\n" + # warn if default values but run anyway + if scenario_file.all? { |row| row[:capital_cost_per_floor_area_sqft].to_f == 100 } + puts "\nWARNING: 'Capital Cost Per Floor Area ($/sq.ft.)' column in ScenarioFile still contains default values for all rows. You should update these values in the scenario file with realistic capital costs and rerun REopt optimization.\n" + end + total_sum = 0 + scenario_file.each do |row| + feature_id = row[:feature_id] + cost_per_sqft = row[:capital_cost_per_floor_area_sqft].to_f + feature = feature_file[:features].find { |f| f[:properties][:id] == feature_id } + floor_area = feature[:properties][:floor_area].to_f + total_sum += floor_area * cost_per_sqft + end + else + # no cost data + puts "\nWARNING: Both 'Total Capital Costs ($)' and 'Capital Cost Per Floor Area ($/sq.ft.)' have no data. Update these values in the scenario file with realistic capital costs and rerun REopt optimization.\n" + total_sum = 0 + end + # Ensure Wind key exists before setting properties + assumptions_hash[:Wind] ||= {} + # set min_kw and max_kw to total_sum to capture capital cost in REopt + assumptions_hash[:Wind][:min_kw] = total_sum + assumptions_hash[:Wind][:max_kw] = total_sum + puts "\nINFO: Total Wind Capital Cost for Scenario set to min_kw: $#{assumptions_hash[:Wind][:min_kw]}, max_kw: $#{assumptions_hash[:Wind][:max_kw]} for REopt Analysis.\n" + # set the installed_cost_per_kw to 1 to ensure REopt uses min/max kw values for capital cost + assumptions_hash[:Wind][:installed_cost_us_dollars_per_kw] = 1 + + # Set the acres_per_kw to a very small value to allow the REopt optimization to succeed + # this value will divide the calculated Site.land_acres value to give the maximum allowable kw for the run + # if that value is smaller than the total_sum above, the simulation will fail with the + # following error: "Userprovided minimum wind kW is greater than either wind.max_kw or + # calculated landconstrained kW (site.land_acres x wind.acres_per_kw). Update wind.min_kw or site.land_acres" + # if you run into errors with this default, set it manually to an even smaller value in your + # assumptions file and UO will keep that value + assumptions_hash[:Wind][:acres_per_kw] = assumptions_hash[:Wind][:acres_per_kw].nil? ? 0.0000000000001: assumptions_hash[:Wind][:acres_per_kw] + + # other wind-related assumptions to compute costs + assumptions_hash[:Wind][:installed_cost_per_kw] = 1 + assumptions_hash[:Wind][:macrs_option_years] = 0 + assumptions_hash[:Wind][:macrs_bonus_fraction] = 0 + assumptions_hash[:Wind][:federal_itc_fraction] = 0 + assumptions_hash[:Wind][:production_factor_series] = Array.new(8760, 0) + + if assumptions_hash.nil? + puts "[WARN] Assumptions hash is nil." + else + # Look for boiler assumptions (symbol or string keys) + boiler_assumptions = + assumptions_hash[:ExistingBoiler] || + assumptions_hash['ExistingBoiler'] + + if boiler_assumptions.nil? + puts "[WARN] ExistingBoiler assumptions not found. Available keys: #{assumptions_hash.keys.inspect}" + else + # Try to read fuel cost + fuel_cost = + boiler_assumptions[:fuel_cost_per_mmbtu] || + boiler_assumptions['fuel_cost_per_mmbtu'] + + if fuel_cost.nil? + puts "WARNING: There is no 'ExistingBoiler.fuel_cost_per_mmbtu' value in the assumptions file." + elsif fuel_cost == 11.5 + puts "WARNING: The 'fuel_cost_per_mmbtu' under 'ExistingBoiler' is still set to the default value of $11.5/MMBtu. Please update this value with a site-specific fuel cost." + else + puts "INFO: Using ExistingBoiler fuel cost of #{fuel_cost} $/MMBtu." + end + + end + end + + # Add timeseries data for fuel consumption to assumptions file, if present + # read scenario csv report + if assumptions_hash.nil? + puts "[WARN] Assumptions hash is nil." + else + assumptions_hash[:SpaceHeatingLoad] ||= {} + assumptions_hash[:SpaceHeatingLoad][:fuel_loads_mmbtu_per_hour] ||= [] + scenario_csv = CSV.read(File.join(@root_dir, 'run', @scenario_name.downcase, 'default_scenario_report.csv'), headers: true) + + column_name = 'NaturalGas:Facility(kBtu)' + + # Read every row + if scenario_csv.headers.include?(column_name) + scenario_csv.each do |row| + kbtu_value = row[column_name].to_f + mmbtu_value = kbtu_value / 1000.0 + if assumptions_hash[:SpaceHeatingLoad][:fuel_loads_mmbtu_per_hour].is_a?(Array) + assumptions_hash[:SpaceHeatingLoad][:fuel_loads_mmbtu_per_hour] << mmbtu_value + end + end + end + end + end # Write assumptions hash to file since REoptPostProcessor reads from file updated_assumptions_file = File.join(@root_dir, 'run', @scenario_name.downcase, 'updated_reopt_scenario_assumptions.json') File.open(updated_assumptions_file, 'w') { |f| f.write JSON.pretty_generate(assumptions_hash) } + + # REopt expects these directories/files to exist in project run folders. + scenario_run_dir = File.join(@root_dir, 'run', @scenario_name.downcase) + FileUtils.mkdir_p(File.join(scenario_run_dir, 'reopt')) + + # Prepare per-feature folders from the Scenario CSV to avoid path drift in + # cached/default report reloads. + begin + scenario_rows_for_dirs = CSV.read(File.expand_path(@opthash.subopts[:scenario]), headers: true) + scenario_feature_ids = [] + if scenario_rows_for_dirs.headers.include?('Feature Id') + scenario_feature_ids = scenario_rows_for_dirs['Feature Id'].compact.map(&:to_s) + elsif scenario_rows_for_dirs.headers.include?('feature_id') + scenario_feature_ids = scenario_rows_for_dirs['feature_id'].compact.map(&:to_s) + end + + scenario_feature_ids.each do |feature_id| + feature_dir = File.join(scenario_run_dir, feature_id) + FileUtils.mkdir_p(feature_dir) + FileUtils.mkdir_p(File.join(feature_dir, 'reopt')) + + legacy_default_dir = File.join(feature_dir, '025_default_feature_reports') + legacy_csv = File.join(legacy_default_dir, 'default_feature_reports.csv') + legacy_json = File.join(legacy_default_dir, 'default_feature_reports.json') + current_csv = File.join(feature_dir, 'feature_reports', 'default_feature_report.csv') + current_json = File.join(feature_dir, 'feature_reports', 'default_feature_report.json') + + if !File.exist?(legacy_csv) && File.exist?(current_csv) + FileUtils.mkdir_p(legacy_default_dir) + FileUtils.cp(current_csv, legacy_csv) + end + + if !File.exist?(legacy_json) && File.exist?(current_json) + FileUtils.mkdir_p(legacy_default_dir) + FileUtils.cp(current_json, legacy_json) + end + end + rescue StandardError => e + puts "WARNING: Could not prepare REopt feature directories from Scenario CSV: #{e.message}" + end + + default_scenario_csv = File.join(scenario_run_dir, 'default_scenario_report.csv') + # Refresh the default report artifacts immediately before REopt runs. + # The REopt gem and adapters still expect these files to exist on disk, + # even when we successfully rehydrate a cached scenario report object. + if scenario_report.respond_to?(:directory_name=) + scenario_report.directory_name = scenario_run_dir + end + if scenario_report.respond_to?(:save) + scenario_report.save(file_name = 'default_scenario_report', save_feature_reports: false) + end + + scenario_report.feature_reports.each do |fr| + feature_dir = File.join(scenario_run_dir, fr.id.to_s) + fr.directory_name = feature_dir if fr.respond_to?(:directory_name=) + FileUtils.mkdir_p(feature_dir) + FileUtils.mkdir_p(File.join(feature_dir, 'reopt')) + + fr.save if fr.respond_to?(:save) + + # Some REopt adapters look for legacy default feature report paths. + legacy_default_dir = File.join(feature_dir, '025_default_feature_reports') + legacy_csv = File.join(legacy_default_dir, 'default_feature_reports.csv') + legacy_json = File.join(legacy_default_dir, 'default_feature_reports.json') + current_csv = File.join(feature_dir, 'feature_reports', 'default_feature_report.csv') + current_json = File.join(feature_dir, 'feature_reports', 'default_feature_report.json') + + if !File.exist?(legacy_csv) && File.exist?(current_csv) + FileUtils.mkdir_p(legacy_default_dir) + FileUtils.cp(current_csv, legacy_csv) + end + + if !File.exist?(legacy_json) && File.exist?(current_json) + FileUtils.mkdir_p(legacy_default_dir) + FileUtils.cp(current_json, legacy_json) + end + end + reopt_post_processor = URBANopt::REopt::REoptPostProcessor.new( scenario_report, updated_assumptions_file, @@ -1960,11 +2219,14 @@ def build_reopt_assumptions(root_dir, scenario_name, scenario_path, feature_path puts "\nPost-processing entire scenario with REopt\n" scenario_report_scenario = reopt_post_processor.run_scenario_report( scenario_report: scenario_report, + timeseries_csv_path: default_scenario_csv, save_name: 'scenario_optimization', run_resilience: @opthash.subopts[:reopt_backup_power], community_photovoltaic: community_photovoltaic, erp_assumptions_file: erp_assumptions_file ) + scenario_report_scenario.directory_name = File.join(@root_dir, 'run', @scenario_name.downcase) if scenario_report_scenario.respond_to?(:directory_name=) + scenario_report_scenario.save('scenario_optimization', false) if scenario_report_scenario.respond_to?(:save) results << { process_type: 'reopt_scenario', status: 'Complete', timestamp: Time.now.strftime('%Y-%m-%dT%k:%M:%S.%L') } puts "\nDone\n" elsif @opthash.subopts[:reopt_feature] == true @@ -1979,15 +2241,28 @@ def build_reopt_assumptions(root_dir, scenario_name, scenario_path, feature_path puts "\nERROR: #{e.message}" end begin + feature_timeseries_csv_paths = scenario_report.feature_reports.map do |fr| + feature_dir = File.join(scenario_run_dir, fr.id.to_s) + legacy_csv = File.join(feature_dir, '025_default_feature_reports', 'default_feature_reports.csv') + current_csv = File.join(feature_dir, 'feature_reports', 'default_feature_report.csv') + File.exist?(legacy_csv) ? legacy_csv : current_csv + end + scenario_report_features = reopt_post_processor.run_scenario_report_features( scenario_report: scenario_report, - save_names_feature_reports: ['feature_optimization'] * scenario_report.feature_reports.length, - save_name_scenario_report: 'feature_optimization', + feature_report_timeseries_csv_paths: feature_timeseries_csv_paths, run_resilience: @opthash.subopts[:reopt_backup_power], keep_existing_output: @opthash.subopts[:reopt_keep_existing], groundmount_photovoltaic: groundmount_photovoltaic, erp_assumptions_file: erp_assumptions_file ) + scenario_report_features.directory_name = File.join(@root_dir, 'run', @scenario_name.downcase) if scenario_report_features.respond_to?(:directory_name=) + if scenario_report_features.respond_to?(:feature_reports) + scenario_report_features.feature_reports.each do |fr| + fr.directory_name = File.join(scenario_run_dir, fr.id.to_s) if fr.respond_to?(:directory_name=) + end + end + scenario_report_features.save('feature_optimization') if scenario_report_features.respond_to?(:save) && !scenario_report_features.feature_reports.empty? rescue StandardError => e puts "\nERROR during REopt feature processing: #{e.message}" puts "Full backtrace:" @@ -2093,7 +2368,7 @@ def build_reopt_assumptions(root_dir, scenario_name, scenario_path, feature_path run_dir = File.join(@feature_path, 'run') scenario_folders = [] scenario_report_exists = false - Dir.glob(File.join(run_dir, '/*_scenario')) do |scenario_folder| + Dir.glob(File.join(run_dir, '*_scenario*')) do |scenario_folder| scenario_report = File.join(scenario_folder, 'scenario_optimization.csv') # Check if Scenario Optimization REopt file exists and add that if File.exist?(File.join(scenario_folder, 'scenario_optimization.csv'))