From dafef462b2d3ec56b895993254805b896e61cdde Mon Sep 17 00:00:00 2001 From: Senad Uka Date: Mon, 1 Jun 2020 18:59:15 +0200 Subject: [PATCH 01/25] Sync of the branch --- .../appearance_release_imports_controller.rb | 68 ++++------------ app/jobs/match_appearance_releases_job.rb | 79 +++++++++++++++++++ app/models/concerns/attachable.rb | 9 +++ app/models/matching_request.rb | 7 ++ config/locales/en.yml | 3 + config/locales/es.yml | 3 + ...20200430151828_create_matching_requests.rb | 9 +++ ...2_add_identifier_to_appearance_releases.rb | 5 ++ lib/brayniac_ai.rb | 1 + .../appearance_release_matching.rb | 64 +++++++++++++++ .../user_managing_appearance_releases_spec.rb | 3 + 11 files changed, 199 insertions(+), 52 deletions(-) create mode 100644 app/jobs/match_appearance_releases_job.rb create mode 100644 app/models/concerns/attachable.rb create mode 100644 app/models/matching_request.rb create mode 100644 db/migrate/20200430151828_create_matching_requests.rb create mode 100644 db/migrate/20200430190412_add_identifier_to_appearance_releases.rb create mode 100644 lib/brayniac_ai/appearance_release_matching.rb diff --git a/app/controllers/appearance_release_imports_controller.rb b/app/controllers/appearance_release_imports_controller.rb index 40a0857..3dee19b 100644 --- a/app/controllers/appearance_release_imports_controller.rb +++ b/app/controllers/appearance_release_imports_controller.rb @@ -3,7 +3,6 @@ class AppearanceReleaseImportsController < ApplicationController include AppearanceReleaseContext include ProjectContext - include CreateReleasableJobs before_action :set_project, only: [:create] @@ -11,24 +10,16 @@ class AppearanceReleaseImportsController < ApplicationController def create authorize AppearanceRelease - @failed_files = [] attachments = appearance_release_params if attachments.nil? alert_message = t 'appearance_releases.create.no_attachments' + redirect_to [@project, :appearance_releases], alert: alert_message else - attachments.each do |attachment| - create_imported_appearance_release attachment - end + filtered_attachments = filter_attachments attachments + MatchAppearanceReleasesJob.perform_later(@project, filtered_attachments) + notice_message = t 'appearance_releases.create.matching_started' + redirect_to [@project, :appearance_releases], notice: notice_message end - - unless @failed_files.empty? - alert_message = t 'appearance_releases.create.failed_import' - alert_message += '
' - end - - redirect_to [@project, :appearance_releases], alert: alert_message end private @@ -45,45 +36,18 @@ class AppearanceReleaseImportsController < ApplicationController params.require(:attachments) end - def build_appearance_release(params = {}) - authorize appearance_releases.build(params) + def filter_attachments(attachments) + filtered_attachments = [] + attachments.each do |attachment| + blob = ActiveStorage::Blob.find_signed attachment + next if blob.nil? + + extension = blob.filename.extension + filtered_attachments << attachment if blob.image? || extension == 'pdf' + end end - def log_create_analytics - TrackAnalyticsJob.perform_later(Current.user, Current.account, :track_create_non_native_release, release_type: AppearanceRelease.to_s, user_agent: request.user_agent, user_ip: request.remote_ip) - end - - def create_imported_appearance_release(attachment) - blob = ActiveStorage::Blob.find_signed(attachment) - return if blob.nil? - - extension = blob.filename.extension_with_delimiter - unless AppearanceRelease.acceptable_import_file_extensions.include? extension - blob.purge - @failed_files << blob.filename - return - end - - random_contract_no = AppearanceRelease.random_contract_number.to_s - appearance_release_params = { - person_last_name: random_contract_no - } - - if blob.image? - appearance_release_params[:person_photo] = attachment - appearance_release_params[:person_first_name] = I18n.t('appearance_releases.shared.imported_appearance_release_headshot_name') - elsif extension == '.pdf' - appearance_release_params[:contract] = attachment - appearance_release_params[:person_first_name] = I18n.t('appearance_releases.shared.imported_appearance_release_contract_name') - end - - appearance_release = build_appearance_release(appearance_release_params) - - if appearance_release.save(context: :non_native) - log_create_analytics - after_create appearance_release - else - @failed_files << blob.filename - end + def acceptable_extensions + AppearanceRelease.acceptable_import_file_extensions end end diff --git a/app/jobs/match_appearance_releases_job.rb b/app/jobs/match_appearance_releases_job.rb new file mode 100644 index 0000000..b3fdd71 --- /dev/null +++ b/app/jobs/match_appearance_releases_job.rb @@ -0,0 +1,79 @@ +# frozen_string_literal: true + +class MatchAppearanceReleasesJob < ApplicationJob + queue_as :default + + def perform(project, attachments) + matching_request = MatchingRequest.create project: project, attachments: attachments + + payload = { request_id: matching_request.id, bucket: aws_bucket_name, files: attachments} + response = BrayniacAI::AppearanceReleaseMatching.match_attachments payload + + matches = response[:matches] || [] + errors = response[:errors] || [] + + handle_matches matches, project + handle_errors errors + end + + private + + def handle_matches(matches, project) + matches.each do |match| + contract = match[:contract] + headshot = match[:headshot] + identifier = match[:identifier] + + identified_release = identifier.blank? ? nil : AppearanceRelease.find_by(identifier: identifier) + if identified_release.nil? + create_release project, contract, headshot, identifier + else + update_release identified_release, contract, headshot + end + end + end + + def handle_errors(errors) + logger.error "== MATCHING ERRORS ==" unless errors.empty? + errors.each do |error| + logger.error "[#{error[:error_code]}] #{error[:file]}" + end + end + + def create_release(project, contract, headshot, identifier) + random_contract_no = AppearanceRelease.random_contract_number.to_s + is_incomplete = contract.nil? || headshot.nil? + params = { + project: project, + person_first_name: appearance_first_name(is_incomplete), + person_last_name: random_contract_no + } + + params[:person_photo] = headshot unless headshot.nil? + params[:contract] = contract unless contract.nil? + params[:identifier] = identifier unless blank? + + return if AppearanceRelease.create(params) + + logger.error "Failed to create AppearanceRelease with params : \r\n#{params}" + end + + def update_release(release, contract, headshot) + release.contract = contract unless contract.nil? + release.person_photo = headshot unless headshot.nil? + + release.save + end + + def appearance_first_name(incomplete) + if incomplete + I18n.t('appearance_releases.shared.incomplete_match') + else + I18n.t('appearance_releases.shared.matched_import') + end + end + + def aws_bucket_name + ENV.fetch 'AWS_BUCKET' + end +end diff --git a/app/models/concerns/attachable.rb b/app/models/concerns/attachable.rb new file mode 100644 index 0000000..7d4860a --- /dev/null +++ b/app/models/concerns/attachable.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Attachable + extend ActiveSupport::Concern + + included do + has_many_attached :attachments + end +end diff --git a/app/models/matching_request.rb b/app/models/matching_request.rb new file mode 100644 index 0000000..c719d57 --- /dev/null +++ b/app/models/matching_request.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class MatchingRequest < ApplicationRecord + include Attachable + + belongs_to :project +end diff --git a/config/locales/en.yml b/config/locales/en.yml index a45e867..7073de2 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -112,6 +112,7 @@ en: no_photos: Needs Photo create: failed_import: Failed to create appearance release for files listed below + matching_started: Matching started no_attachments: Failed to import - no attachments edit: heading: Edit Appearance Release @@ -141,6 +142,8 @@ en: shared: imported_appearance_release_contract_name: Imported Contract imported_appearance_release_headshot_name: Imported Headshot + incomplete_match: Incomplete Match + matched_import: Complete Match type_filter_actions: all_releases: All Releases complete_releases: Complete Releases diff --git a/config/locales/es.yml b/config/locales/es.yml index 674a7f0..be353f4 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -25,6 +25,7 @@ es: appearance_releases: create: failed_import: Failed to create appearance release for files listed below (ES) + matching_started: Matching started (ES) no_attachments: Failed to import - no attachments (ES) form: photos: @@ -37,6 +38,8 @@ es: shared: imported_appearance_release_contract_name: Contrato Importado imported_appearance_release_headshot_name: Retrato Importado + incomplete_match: Incomplete Match (ES) + matched_import: Complete Match (ES) type_filter_actions: all_releases: All Releases (ES) complete_releases: Complete Releases (ES) diff --git a/db/migrate/20200430151828_create_matching_requests.rb b/db/migrate/20200430151828_create_matching_requests.rb new file mode 100644 index 0000000..cc4e4cb --- /dev/null +++ b/db/migrate/20200430151828_create_matching_requests.rb @@ -0,0 +1,9 @@ +class CreateMatchingRequests < ActiveRecord::Migration[6.0] + def change + create_table :matching_requests do |t| + t.belongs_to :project, foreign_key: true + + t.timestamps + end + end +end diff --git a/db/migrate/20200430190412_add_identifier_to_appearance_releases.rb b/db/migrate/20200430190412_add_identifier_to_appearance_releases.rb new file mode 100644 index 0000000..a1ff2fa --- /dev/null +++ b/db/migrate/20200430190412_add_identifier_to_appearance_releases.rb @@ -0,0 +1,5 @@ +class AddIdentifierToAppearanceReleases < ActiveRecord::Migration[6.0] + def change + add_column :appearance_releases, :identifier, :string, default: nil + end +end diff --git a/lib/brayniac_ai.rb b/lib/brayniac_ai.rb index ce9bc72..7e02af0 100644 --- a/lib/brayniac_ai.rb +++ b/lib/brayniac_ai.rb @@ -3,6 +3,7 @@ require_relative "./brayniac_ai/aws_request_signing" require_relative "./brayniac_ai/aws_signed_connection" require_relative "./brayniac_ai/base" +require_relative "./brayniac_ai/appearance_release_matching" require_relative "./brayniac_ai/audio_recognition" require_relative "./brayniac_ai/collection" require_relative "./brayniac_ai/document_analysis" diff --git a/lib/brayniac_ai/appearance_release_matching.rb b/lib/brayniac_ai/appearance_release_matching.rb new file mode 100644 index 0000000..4f89c69 --- /dev/null +++ b/lib/brayniac_ai/appearance_release_matching.rb @@ -0,0 +1,64 @@ +# frozen_string_literal: true + +module BrayniacAI + class AppearanceReleaseMatching + class << self + def match_attachments(request_data) + # TODO: Send request with request_data and receive real response + mock_response request_data + end + + private + + def mock_response(request_data) + attachments = request_data[:files] + pdfs = [] + images = [] + matches = [] + errors = [] + + # Use first file for the error entry + first_attachment = attachments.shift + unless first_attachment.nil? + errors << { file: first_attachment, error_code: 1 } + end + + attachments.each do |attachment| + blob = ActiveStorage::Blob.find_signed attachment + next if blob.nil? + + if blob.image? + images << attachment + else + pdfs << attachment + end + end + + # Create pairs of matches and single headshot/contract after pairs are exhausted + more_pdfs = pdfs.length > images.length + pairs = more_pdfs ? pdfs.zip(images) : images.zip(pdfs) + pairs.each do |pair_element1, pair_element2| + if more_pdfs + pdf = pair_element1 + image = pair_element2 + else + pdf = pair_element2 + image = pair_element1 + end + if pdf.nil? || image.nil? + matches << { headshot: image } if pdf.nil? + matches << { contract: pdf } if image.nil? + else + matches << { headshot: image, contract: pdf, identifier: '' } + end + end + + { + request_id: request_data[:request_id], + matches: matches, + errors: errors + } + end + end + end +end diff --git a/spec/features/user_managing_appearance_releases_spec.rb b/spec/features/user_managing_appearance_releases_spec.rb index 17e2ae1..728757e 100644 --- a/spec/features/user_managing_appearance_releases_spec.rb +++ b/spec/features/user_managing_appearance_releases_spec.rb @@ -148,6 +148,7 @@ feature 'User managing appearance releases' do end scenario 'importing a releases works when image is selected', js: true do + skip 'Will be changed according to new matching capability' visit project_appearance_releases_path(project) expect(page).to have_content submit_create_button @@ -160,6 +161,7 @@ feature 'User managing appearance releases' do end scenario 'importing a releases works when pdf is selected', js: true do + skip 'Will be changed according to new matching capability' visit project_appearance_releases_path(project) expect(page).to have_content submit_create_button @@ -172,6 +174,7 @@ feature 'User managing appearance releases' do end scenario 'importing a releases fails when file other than image or pdf is selected', js: true do + skip 'Will be changed according to new matching capability' visit project_appearance_releases_path(project) expect(page).to have_content submit_create_button -- 2.47.3 From 94c0dc3732422d56f4ba6265cb16e825d98fcb05 Mon Sep 17 00:00:00 2001 From: bilal Date: Tue, 2 Jun 2020 22:23:19 +0200 Subject: [PATCH 02/25] Handle QrMatching response - mock --- app/jobs/match_appearance_releases_job.rb | 18 +++++------ .../appearance_release_matching.rb | 31 ++++++++++++------- 2 files changed, 26 insertions(+), 23 deletions(-) diff --git a/app/jobs/match_appearance_releases_job.rb b/app/jobs/match_appearance_releases_job.rb index b3fdd71..e087277 100644 --- a/app/jobs/match_appearance_releases_job.rb +++ b/app/jobs/match_appearance_releases_job.rb @@ -8,22 +8,25 @@ class MatchAppearanceReleasesJob < ApplicationJob payload = { request_id: matching_request.id, bucket: aws_bucket_name, files: attachments} response = BrayniacAI::AppearanceReleaseMatching.match_attachments payload + # BrayniacAI::QrMatching.enable_logging + # response = BrayniacAI::QrMatching.create! payload matches = response[:matches] || [] - errors = response[:errors] || [] handle_matches matches, project - handle_errors errors + matching_request.destroy end private def handle_matches(matches, project) matches.each do |match| - contract = match[:contract] - headshot = match[:headshot] + contract = match[:contracts].blank? ? nil : match[:contracts].first + headshot = match[:headshots].blank? ? nil : match[:headshots].first identifier = match[:identifier] + next if contract.nil? && headshot.nil? + identified_release = identifier.blank? ? nil : AppearanceRelease.find_by(identifier: identifier) if identified_release.nil? create_release project, contract, headshot, identifier @@ -33,13 +36,6 @@ class MatchAppearanceReleasesJob < ApplicationJob end end - def handle_errors(errors) - logger.error "== MATCHING ERRORS ==" unless errors.empty? - errors.each do |error| - logger.error "[#{error[:error_code]}] #{error[:file]}" - end - end - def create_release(project, contract, headshot, identifier) random_contract_no = AppearanceRelease.random_contract_number.to_s is_incomplete = contract.nil? || headshot.nil? diff --git a/lib/brayniac_ai/appearance_release_matching.rb b/lib/brayniac_ai/appearance_release_matching.rb index 4f89c69..4c19339 100644 --- a/lib/brayniac_ai/appearance_release_matching.rb +++ b/lib/brayniac_ai/appearance_release_matching.rb @@ -15,12 +15,17 @@ module BrayniacAI pdfs = [] images = [] matches = [] - errors = [] # Use first file for the error entry first_attachment = attachments.shift - unless first_attachment.nil? - errors << { file: first_attachment, error_code: 1 } + + if first_attachment.present? + matches << { + headshots: [], + contracts: [], + unknowns: [first_attachment], + identifier: '' + } end attachments.each do |attachment| @@ -45,18 +50,20 @@ module BrayniacAI pdf = pair_element2 image = pair_element1 end - if pdf.nil? || image.nil? - matches << { headshot: image } if pdf.nil? - matches << { contract: pdf } if image.nil? - else - matches << { headshot: image, contract: pdf, identifier: '' } - end + headshots = image.present? ? [image] : [] + contracts = pdf.present? ? [pdf] : [] + + matches << { + headshots: headshots, + contracts: contracts, + unknowns: [], + identifier: '' + } end { - request_id: request_data[:request_id], - matches: matches, - errors: errors + request_id: request_data[:request_id], + matches: matches } end end -- 2.47.3 From 21e8933471343ade9657a6b09a14b0589e6ab739 Mon Sep 17 00:00:00 2001 From: bilal Date: Wed, 3 Jun 2020 10:47:03 +0200 Subject: [PATCH 03/25] add QrMatching to the BrayniacAI lib --- lib/brayniac_ai.rb | 1 + lib/brayniac_ai/qr_matching.rb | 4 ++++ 2 files changed, 5 insertions(+) create mode 100644 lib/brayniac_ai/qr_matching.rb diff --git a/lib/brayniac_ai.rb b/lib/brayniac_ai.rb index 7e02af0..db9034b 100644 --- a/lib/brayniac_ai.rb +++ b/lib/brayniac_ai.rb @@ -11,5 +11,6 @@ require_relative "./brayniac_ai/edl_parse" require_relative "./brayniac_ai/edl_parse_result" require_relative "./brayniac_ai/facial_recognition" require_relative "./brayniac_ai/facial_recognition_result" +require_relative "./brayniac_ai/qr_matching" require_relative "./brayniac_ai/tag" require_relative "./brayniac_ai/validation" diff --git a/lib/brayniac_ai/qr_matching.rb b/lib/brayniac_ai/qr_matching.rb new file mode 100644 index 0000000..4328870 --- /dev/null +++ b/lib/brayniac_ai/qr_matching.rb @@ -0,0 +1,4 @@ +module BrayniacAI + class QrMatching < Base + end +end -- 2.47.3 From f2283782e83a596424b8f71d9927ccfef14298dc Mon Sep 17 00:00:00 2001 From: bilal Date: Sat, 6 Jun 2020 01:18:48 +0200 Subject: [PATCH 04/25] send attachment keys using ActiveResource --- .../appearance_release_imports_controller.rb | 15 +------- app/jobs/match_appearance_releases_job.rb | 37 ++++++++++++++++--- 2 files changed, 34 insertions(+), 18 deletions(-) diff --git a/app/controllers/appearance_release_imports_controller.rb b/app/controllers/appearance_release_imports_controller.rb index 3dee19b..064e21d 100644 --- a/app/controllers/appearance_release_imports_controller.rb +++ b/app/controllers/appearance_release_imports_controller.rb @@ -15,8 +15,8 @@ class AppearanceReleaseImportsController < ApplicationController alert_message = t 'appearance_releases.create.no_attachments' redirect_to [@project, :appearance_releases], alert: alert_message else - filtered_attachments = filter_attachments attachments - MatchAppearanceReleasesJob.perform_later(@project, filtered_attachments) + # filtered_attachments = filter_attachments attachments + MatchAppearanceReleasesJob.perform_later(@project, attachments) notice_message = t 'appearance_releases.create.matching_started' redirect_to [@project, :appearance_releases], notice: notice_message end @@ -36,17 +36,6 @@ class AppearanceReleaseImportsController < ApplicationController params.require(:attachments) end - def filter_attachments(attachments) - filtered_attachments = [] - attachments.each do |attachment| - blob = ActiveStorage::Blob.find_signed attachment - next if blob.nil? - - extension = blob.filename.extension - filtered_attachments << attachment if blob.image? || extension == 'pdf' - end - end - def acceptable_extensions AppearanceRelease.acceptable_import_file_extensions end diff --git a/app/jobs/match_appearance_releases_job.rb b/app/jobs/match_appearance_releases_job.rb index e087277..a47cd12 100644 --- a/app/jobs/match_appearance_releases_job.rb +++ b/app/jobs/match_appearance_releases_job.rb @@ -4,12 +4,17 @@ class MatchAppearanceReleasesJob < ApplicationJob queue_as :default def perform(project, attachments) - matching_request = MatchingRequest.create project: project, attachments: attachments + filtered_attachments_object = filter_attachments attachments - payload = { request_id: matching_request.id, bucket: aws_bucket_name, files: attachments} - response = BrayniacAI::AppearanceReleaseMatching.match_attachments payload - # BrayniacAI::QrMatching.enable_logging - # response = BrayniacAI::QrMatching.create! payload + return if filtered_attachments_object[:keys].blank? + + matching_request = MatchingRequest.create project: project, attachments: filtered_attachments_object[:signed_keys] + + payload = { request_id: matching_request.id, bucket: aws_bucket_name, files: filtered_attachments_object[:keys]} + + # response = BrayniacAI::AppearanceReleaseMatching.match_attachments payload + BrayniacAI::QrMatching.enable_logging + response = BrayniacAI::QrMatching.create! payload matches = response[:matches] || [] @@ -72,4 +77,26 @@ class MatchAppearanceReleasesJob < ApplicationJob def aws_bucket_name ENV.fetch 'AWS_BUCKET' end + + def filter_attachments(attachments) + filtered_attachments_keys = [] + filtered_attachments_names = [] + filtered_attachments_signed_ids = [] + attachments.each do |attachment| + blob = ActiveStorage::Blob.find_signed attachment + next if blob.nil? + + extension = blob.filename.extension + next unless blob.image? || extension == 'pdf' + + filtered_attachments_keys << blob.key + filtered_attachments_names << blob.filename.to_s + filtered_attachments_signed_ids << attachment + end + { + keys: filtered_attachments_keys, + names: filtered_attachments_names, + signed_keys: filtered_attachments_signed_ids + } + end end -- 2.47.3 From c903a2dcdedb7408e30815793c419eb6d44a18ca Mon Sep 17 00:00:00 2001 From: bilal Date: Tue, 9 Jun 2020 10:51:13 +0200 Subject: [PATCH 05/25] use attachment key for BrayniacAI API payload --- app/jobs/match_appearance_releases_job.rb | 32 +++++++++++------------ 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/app/jobs/match_appearance_releases_job.rb b/app/jobs/match_appearance_releases_job.rb index a47cd12..cea5b89 100644 --- a/app/jobs/match_appearance_releases_job.rb +++ b/app/jobs/match_appearance_releases_job.rb @@ -8,28 +8,27 @@ class MatchAppearanceReleasesJob < ApplicationJob return if filtered_attachments_object[:keys].blank? - matching_request = MatchingRequest.create project: project, attachments: filtered_attachments_object[:signed_keys] - + matching_request = MatchingRequest.create project: project, attachments: filtered_attachments_object[:signed_ids] payload = { request_id: matching_request.id, bucket: aws_bucket_name, files: filtered_attachments_object[:keys]} - - # response = BrayniacAI::AppearanceReleaseMatching.match_attachments payload - BrayniacAI::QrMatching.enable_logging response = BrayniacAI::QrMatching.create! payload - - matches = response[:matches] || [] - - handle_matches matches, project + matches = response.attributes[:matches] || [] + key_signed_id_hash = Hash[filtered_attachments_object[:keys].zip(filtered_attachments_object[:signed_ids])] + handle_matches matches, project, key_signed_id_hash matching_request.destroy end private - def handle_matches(matches, project) - matches.each do |match| - contract = match[:contracts].blank? ? nil : match[:contracts].first - headshot = match[:headshots].blank? ? nil : match[:headshots].first + def handle_matches(matches, project, key_signed_id_hash) + matches.each do |qr_matching_match| + match = qr_matching_match.attributes + contract_key = match[:contracts].blank? ? nil : match[:contracts].first + headshot_key = match[:headshots].blank? ? nil : match[:headshots].first identifier = match[:identifier] + contract = key_signed_id_hash[contract_key] + headshot = key_signed_id_hash[headshot_key] + next if contract.nil? && headshot.nil? identified_release = identifier.blank? ? nil : AppearanceRelease.find_by(identifier: identifier) @@ -80,8 +79,8 @@ class MatchAppearanceReleasesJob < ApplicationJob def filter_attachments(attachments) filtered_attachments_keys = [] - filtered_attachments_names = [] filtered_attachments_signed_ids = [] + attachments.each do |attachment| blob = ActiveStorage::Blob.find_signed attachment next if blob.nil? @@ -90,13 +89,12 @@ class MatchAppearanceReleasesJob < ApplicationJob next unless blob.image? || extension == 'pdf' filtered_attachments_keys << blob.key - filtered_attachments_names << blob.filename.to_s filtered_attachments_signed_ids << attachment end + { keys: filtered_attachments_keys, - names: filtered_attachments_names, - signed_keys: filtered_attachments_signed_ids + signed_ids: filtered_attachments_signed_ids } end end -- 2.47.3 From ed312c186fc2d49ac21f4e34b8e82c36cdcf196e Mon Sep 17 00:00:00 2001 From: bilal Date: Tue, 9 Jun 2020 12:55:09 +0200 Subject: [PATCH 06/25] remove commented code --- app/controllers/appearance_release_imports_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/appearance_release_imports_controller.rb b/app/controllers/appearance_release_imports_controller.rb index 064e21d..b80a7d2 100644 --- a/app/controllers/appearance_release_imports_controller.rb +++ b/app/controllers/appearance_release_imports_controller.rb @@ -11,11 +11,11 @@ class AppearanceReleaseImportsController < ApplicationController def create authorize AppearanceRelease attachments = appearance_release_params + if attachments.nil? alert_message = t 'appearance_releases.create.no_attachments' redirect_to [@project, :appearance_releases], alert: alert_message else - # filtered_attachments = filter_attachments attachments MatchAppearanceReleasesJob.perform_later(@project, attachments) notice_message = t 'appearance_releases.create.matching_started' redirect_to [@project, :appearance_releases], notice: notice_message -- 2.47.3 From 2a6305b417430b8eea666dc876d4d20794085e9a Mon Sep 17 00:00:00 2001 From: bilal Date: Tue, 9 Jun 2020 13:32:23 +0200 Subject: [PATCH 07/25] update feature specs --- .../user_managing_appearance_releases_spec.rb | 34 +++++++++++++------ 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/spec/features/user_managing_appearance_releases_spec.rb b/spec/features/user_managing_appearance_releases_spec.rb index 728757e..eecca43 100644 --- a/spec/features/user_managing_appearance_releases_spec.rb +++ b/spec/features/user_managing_appearance_releases_spec.rb @@ -138,26 +138,34 @@ feature 'User managing appearance releases' do end scenario 'progress bar shows when user imports a release', js: true do - skip "TODO" visit project_appearance_releases_path(project) - attach_file import_appearance_release_field, Rails.root.join(file_fixture('person_photo.png')), visible: false - expect(page).to have_content importing_label + expect(page).not_to have_css('#upload-progress-container') + large_pdf_file = build_large_pdf_file + attach_file import_appearance_release_field, Rails.root.join(large_pdf_file.path), visible: false + expect(page).to have_css('#upload-progress-container') click_button submit_create_button - expect(page).to have_css('.progress') + expect(page).to have_content matching_started end - scenario 'importing a releases works when image is selected', js: true do - skip 'Will be changed according to new matching capability' + scenario 'no appearance releases are added if BrayniacAI returns no matches', js: true do visit project_appearance_releases_path(project) - expect(page).to have_content submit_create_button - expect(page).to have_content no_appearance_releases attach_file import_appearance_release_field, Rails.root.join(file_fixture('person_photo.png')), visible: false - expect(page).to have_content importing_label click_button submit_create_button - expect(page).not_to have_content no_appearance_releases - expect(page).to have_content /Imported Headshot\s+\d{7}/ + visit project_appearance_releases_path(project) + expect(page).to have_content no_appearance_releases + end + + scenario 'incomplete appearance release is added if headshot only is matched', js: true do + skip 'Will be updated' + visit project_appearance_releases_path(project) + + expect(page).to have_content no_appearance_releases + attach_file import_appearance_release_field, Rails.root.join(file_fixture('pratt_headshot_with_code.jpg')), visible: false + click_button submit_create_button + visit project_appearance_releases_path(project) + expect(page).to have_content no_appearance_releases end scenario 'importing a releases works when pdf is selected', js: true do @@ -438,6 +446,10 @@ feature 'User managing appearance releases' do tempfile end + def matching_started + t 'appearance_releases.create.matching_started' + end + def filter_type_all t 'appearance_releases.type_filter_actions.all_releases' end -- 2.47.3 From ffc93b470bad84b31434edbb51aaa9fd3e17045f Mon Sep 17 00:00:00 2001 From: bilal Date: Wed, 10 Jun 2020 02:55:24 +0200 Subject: [PATCH 08/25] increase QrCode size; remove serial number from blank contract --- app/assets/stylesheets/contract_pdf.scss | 10 +++++++++- app/models/blank_contract.rb | 2 +- app/models/qr_code.rb | 2 +- app/views/blank_contracts/pdf.html.erb | 14 +++++--------- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/app/assets/stylesheets/contract_pdf.scss b/app/assets/stylesheets/contract_pdf.scss index 59c6abc..8c2571f 100644 --- a/app/assets/stylesheets/contract_pdf.scss +++ b/app/assets/stylesheets/contract_pdf.scss @@ -31,7 +31,7 @@ u { } .page { - page-break-before: always; + page-break-before: always; } .logo { @@ -44,6 +44,14 @@ u { text-align: right; } +.qr-code { + margin-right: -30px; +} + +.do-not-copy-warning { + padding-right: 15px; +} + .heading-table td { width: 50%; } diff --git a/app/models/blank_contract.rb b/app/models/blank_contract.rb index ee36282..cde5d8a 100644 --- a/app/models/blank_contract.rb +++ b/app/models/blank_contract.rb @@ -8,7 +8,7 @@ class BlankContract end def to_pdf - kit = PDFKit.new(as_html) + kit = PDFKit.new(as_html, margin_right: 1, margin_left: 1, margin_top: 10, margin_bottom: 1) kit.to_file("tmp/#{filename}") end diff --git a/app/models/qr_code.rb b/app/models/qr_code.rb index 637fc6c..a38e0df 100644 --- a/app/models/qr_code.rb +++ b/app/models/qr_code.rb @@ -24,7 +24,7 @@ class QrCode end end - def to_base64_png(width = 100, height = 100) + def to_base64_png(width = 200, height = 200) _qr_code.as_png.resize(width, height).to_data_url end diff --git a/app/views/blank_contracts/pdf.html.erb b/app/views/blank_contracts/pdf.html.erb index e70dbc3..87cc5f1 100644 --- a/app/views/blank_contracts/pdf.html.erb +++ b/app/views/blank_contracts/pdf.html.erb @@ -2,6 +2,10 @@
<% has_logo = local_assigns[:logo] %> + + + + - - - - - - - -
 <%= t '.do_not_copy_warning' %>
<% if has_logo %> @@ -11,17 +15,9 @@ <% end %> - +
 <%= serial_numbers[copy_index] %>
 <%= t '.do_not_copy_warning' %>

<% if contract_template.body.present? %> -- 2.47.3 From 9a96bf708db4898c22c9d451ed0c78ef7cadac70 Mon Sep 17 00:00:00 2001 From: bilal Date: Wed, 10 Jun 2020 03:16:02 +0200 Subject: [PATCH 09/25] update spec --- spec/models/blank_contract_spec.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/spec/models/blank_contract_spec.rb b/spec/models/blank_contract_spec.rb index d3c2d20..9b7e421 100644 --- a/spec/models/blank_contract_spec.rb +++ b/spec/models/blank_contract_spec.rb @@ -42,7 +42,6 @@ describe BlankContract do material_release = create(:material_release_with_contract_template, project: project, person_name: 'Jane Doe') result = render_contract_html_for(material_release) - expect(result).to include 'serial-number' expect(result).to include 'DO NOT COPY' end end -- 2.47.3 From 29d3fa258a319ef39c59080022527cbd421ddbe1 Mon Sep 17 00:00:00 2001 From: bilal Date: Wed, 10 Jun 2020 03:34:48 +0200 Subject: [PATCH 10/25] add fixture files --- spec/fixtures/files/contract_1.pdf | Bin 0 -> 19133 bytes spec/fixtures/files/contract_1_headshot.jpg | Bin 0 -> 67538 bytes spec/fixtures/files/contract_2.pdf | Bin 0 -> 19057 bytes spec/fixtures/files/contract_2_headshot.jpeg | Bin 0 -> 40220 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 spec/fixtures/files/contract_1.pdf create mode 100644 spec/fixtures/files/contract_1_headshot.jpg create mode 100644 spec/fixtures/files/contract_2.pdf create mode 100644 spec/fixtures/files/contract_2_headshot.jpeg diff --git a/spec/fixtures/files/contract_1.pdf b/spec/fixtures/files/contract_1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..561012c85277d763bf411ea542380b4796b63038 GIT binary patch literal 19133 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 KQdC|H`Tqj^eWD-$ literal 0 HcmV?d00001 diff --git a/spec/fixtures/files/contract_1_headshot.jpg b/spec/fixtures/files/contract_1_headshot.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a49d5cd2b95403153e382ce2c17458c960ba2e72 GIT binary patch literal 67538 zcmb5TWk6g@)Fs-uyF=p^EV#S7yCpcm-95N9?i$?PLvYuiL4&)yCYdJpes^Zx{CY(< zeNLS^wYF5P+O_M?(w|KLx}21(6aWGO0w4qa1N>P9hy$P?A>TgW0uBDaz{9{mL&G4# z!NI~KBO)UsAtE86pkkt(U}+%${}pH$SU7k{CfiB|q%6f0KX;?h zfdm*T_#>jh^_id+M^BcjP6OhU;1bObLmRwPccuOCyGMB*BS)y< zO^DGR<9&crolBt5jSHR1f9Mbyy)*d$i0=R(;1D8VB+C^o=~VnGecgOV!GpeA{CnU< zo0{i?wfRDNp`F)QHRn=LJlNON_w~V}^WZQK04u6eu=}%Xv zc&G`kT~s9&D0?{GB7**KwvS~#7VX)}9|K9^5n49qtGh-SpH1rdL@%z-YcL>bFq76cgBea1p! zoS<@rbXE{-+WQ^q)a6qRb6ELUDWA0eQ6Avx<>K{m^p4@D%Yd|Qxt8qKGiHsu#$1Iw zmKu7iW#s8j<@70CzF-`QfTKbqV#;h4_W;z7o8;{e9LIdJqr{Z~{3%7HM85qvnH&>F zpLT>Z9cz$xKW+a3(A6Vo;>vQfV`vd!H^5@tj%?~e7s2d6oN}fZ{nnvv_ebve*Z$(n z+%d0tiiwF=Jja?l&*~YA8p1U9iMRb-{DPoCMpPnq*Ndcxs|}nashAV#;)>`W%%l>g zIM+_HCDQsE(l#sVo z2dbholWXN=02N3a-LUNc%wGT>{nG}M{8GOzW2}}%QXXxW#mTkuL?>0ZFBF>Ta-NZL ztXA2b?*-v-$6ZU8pm5d7{WYD{4PtgkAOJTZL{Y*<7(Eeo{{TRMnc_ z5-uzgTDm+3J00+D&Q81p3H^HrC8Q4`3!}{*WznWYn=%uwm*2CFv`2j(EIks9LNc2g zs%IlFLTWMx%8?E4E-i&|5}?!>?BEjz{xt#w$qwT9S|i^_1_3X>d*{koXA+>Bq=^mc z6q<#PU@Ob%jUdaFfc}+!l%Wy-HVz1b*<}{reC3sDljpY>{9SC z+y1c`uTvIn^huf+;y8rxO);?k$@uwBc$x3UX`)F(!}uvIrP^7)2tdi;#t#ADjQ)zC z^?J^mRy9pReUkCyA9J;E&R2A~eba(VGJ5aBzP!Brb00{z?Gzrt*#mOjT3YjS{Z;h& zx6XPY{@qh+XlLBHuyNERp$g2d)^6E^C77h6$-2jEVcB`pf}HRrHcFf*2DkMr%o$9@ z(BQ=SziXKG-?9K;Spfg|01|I%Ti1KeG7j@zzw2ZE>+vwjtf$k+y=i09d@%X)sYm<0 zXBp5aeX9oACI8e!sH0%ktTW3FKcIH7$!;fy2R!{bWp>rgm7MiMXH|;pw1(6;gG`b! zWU?3s!%E+Y>k_=%*nKxh8HB-6cI}nn8kaVL_hc4h1aSYWI~3Q~AnFt9@`-P$%xR0q zK4@m4oDsDfP@R^+b^L;Hb`yyF0+tfPAdd8_9Efnd>V=Sv$#qk-+u;w-zin^YeEay! z#BB(6M+;`1?bLbl5LoS_k+(nH0CBFCpJ_}IoV-}g)7FMTF0f+D{h8uWH>PN1fK zWDSH^`iqaeVnpCWY+f$#55Bu#qU&0MdKYB285VIi$#BcT@;b!8(YEJ~EQnUZ)Sg+M z0iip?&t&=tRDAdPLfPQk&w|yUWU1Pjnp&SJuQ4T6!wd4 zgsqc);M3z2ed(BoTB6CKtg-V$NsrktT63q|FHdNsD37Ijf`pvI$pmNFB(+^S75^3P zAfX=dG#by#I$flC5~wF48M7;#74kVL_)B0EyuzUs<|}>=SoKrz7uMeceSGP&VWRX8 zo1O2+e4CeymcgA)GL0_xus(QoQ?-_LHpF2*z1!bW3mx-Jr!Cx?RPX6(nV?Reewb4| zg}Jb?G|h#&>IBnOk9^6Fj?YSODv2eu>PIE~R1tNXg8eezvG@}{|for#PwQ*R>Qmwo7hoM4Jx@TIlJ)!P6S*zzr*dtEab_o;b@}VIOfNL~IkU0%kzU_aLAr2W zJGZ`$D7{yBOD`X&tzK_d=q1KQUOJo`zFwKL-Yo~{-!ybfhm&F?8D$_pDSnJjC0ZE`+TOp(x}V=m(>J!Nqv)YairQ@M zR$f&tk<;W`F}cp#(#gQLRJeslwOZ*Ax_DsJk{L4=AdOC+uuMyHKb<|pIoS$_Y`Aax zJ%yu@_?A;@e5VO}J1K`1;rssiCMlLTX91wKZ;vb||NT)IqU$H`cCk1OzVxG_JYWkJW>;Og+^Xygh{aIUuU zlG^=RYu|#w^tNou)Uj!z^hh--wAk4{oZz(vg-2pkHx&uL5^-sM+obUw#Se;-8HR+2 z(&_JsS&Ri5EdQ<<#DT%MQ{BwBZp@9l%d@wW#Ygd@J8h8JcE%fUQkN@D!bI7NY(F2r zg;ja`C2nwQP(@(CSN%cMYoEi3!Fva7LsDFBy?=W%V^`1jBAn|#aixoZllp{61*2fU zRTYOCyqR99;7^N-ViCdx$i8Ek?O?N_=X{Drn*X3jW61p_ZFJca`E7)}8N(g8C%OCL zR+_g0+F&ylcCFBKGhU$PPqT8bjaY~t!ZrT+Vf2@8h4}z}scGd{&CJVsILc#Wag#GR zstWo<^0KoKoz_}A$?{B!a>J-)op4)%cpII=j$RZFT?YI&LEa`b>T%SQVEaq|eY)KZ&C-J`rFP3&g7eyZ;i+c? z>tP^$u$MnAIAn`##oqjoRb5cpws~cXE*DvBw#HSht=5fOy^PZL=8N6}SZKwU-&Xv4h+5XTKaa zy!tn%uU^->j3uok=|rKN!#0@`$KdMRv+pdQ4WBT{bi1}@3Q;OgyHvZYVi71AdoRE-8jBS~xqp>JJg5_-Ckhe>c--HwIj zFuL$3njHP>0|3|wcR%?ja`qmWuU@Ehl$H~+oE9%1fiQS)^_YT;LU}_0@XlUk7XZ?wMnS3 z8~|Cza$C>YfRfITNamKk*A_1*eq5v*e(Ufb6Tlh4S;G1p)IjV!vrjV@Z^lpdoG5ta zGPNXpuv17Rwh12mIZOl91YX@MgoYy)qBPwrH)fx>YioO41l}}{n&c4aX^5%%1cgdy zI~Cf+M`$(?`iYi8^3)cyi6R&yNfGG#Zu^D3zD{IH!f^v`f3yYZ5(EH{1is;e(ao*K z4nC63)cbZl1Z`W)tz=sBSPoe4?_Mi5hZQcJTH1Mzq#s){YWQIBt;R06SN#DT`SO4K zv9*&01C(JIH2-Y`;QFFTXjUR)9FW1WI#4#frzIl?_)a~dY1*4HNu~xT*&%=&%IB5j zT=w3ns%89tql4p1%KfWszr z*}f-k{kDEceoudIjr<$wb&3ztNJlVo!B~MU;dSVgKir-aLl5G+FZy2N)nr( zM(TzcNA{~M9TVG?NS4_IOpRH8p=k#8Pgp}HiX#Rnd?KT-Bb#qxK)j6sI3w-ObHf`y zUID*ES$9na;6#YoSqA-mabAkQe5=m^zohS%6$UKuvOs_nw0$^|R*LA8gK+V9L6XOf z`d0!s`W^t3QCuLbD>KxVOdi6h6}Vd*-JDo_MPz>f0H)$oAY~x93XGNi7FQ9d`5&(N z*>@Q#7FyB1yJvIN2o`kKl@B`Qr8xdPAk{`>DS^1KI!Eh8bnA6iOIu@i=MTL)x4-oh z#z1frKnegn0^oX}8vhB-|MvUWsNgH`pn`MV8q&L^{|NWpKh(TS*{shm9sWs@){aIn zM}hIeP%Y76@YM0xT=!reNz-qYwsw>})WWxk_QK!&aW}_#^9Cv@I8dO6V;2<_jXj>E zE^YHKz}r6vLcV{lp}qqE7rs?~U3{>2v9H1%t0U8|x$RWvyK;rnL8c`A6kYx6owL~A z$`4MZiP)>Ag@zU@F1Wkg19Gdh;2r`5uFjuY1E%jTFVcb8K!|;aQZh$RaBA%(r29WC z0Q~p2Bp|pz973#l^zl6~`Nids+;~5}J{(cHUyhhs3BPa9%$sTueet&kN=LafuVJ@2 zAYt0Yl?XJ+aaGw3{ETC2-o5L%=^7xqc;yM$c*IK^yPNFvpB8lF<>7&v7C}{dQ;~<{ zGJW$e(qA+}0N@`j1p)ZRcV)E>iCD*p4rt{sH{HdS=3!SK`;+Y~y?!~9kZ`lO4eHm&c+gM_#hxmEnumh}uJ8p$E`#s&k%Q0BMcob}1Zccy1ur&?J_$a8UPH!2fgw zP>O&@e#)th&^DBLS{_Lbf{YiW^=3XjR{L-QQI~zE@9?2$xCaiNq^~PR;aaiM5L;H32i@G-}wGX6;iUF7@kpixE z)VdpSSbqR;C6-7&%Hp}+7ynA|s$lY;0DxE(=pOJOgE%DKHC+t!_H|+y%PI77yIGtN7G@QZu`BD2j`F4 ziP7hcvBu?7ADKoeQCLKs2*ivi}4CTL5eTShu4- zM5S*JQV_>CPO~{%W!rHWq^N3KhcRx`lmWCSdVc_Uzi8`XoBH{X@8Y5z{AfVCJIP~` zI|-+rQIZrxJSfK@&)sY;&!m&XRXcFxGJ!Sq`iKqceW+L_WyJM=eF<9M?)1p@odyqp zWsZpd1c2le0sG(2nfhqb>h!Ajn_h~u&`KsN30I7+2-jta#0n>>j_1=iw2kCnA^kb` z4g-oLQYYB!tIPeU;%h(qZtD2)a(jl&OtlKSWuLMrk6ueE@it?eu~Xb_xQf1RRfaPq zC#^|;zRsB zMpy7LR)Za+F6_Aa6fmp&J7C#o7;3(}Nd* zAluf@rd05RF8>4nj~g+MZlIg>T-Dt-nOZ zi2P>&jLCyB@QmNme-Usx3G(OYRBUG^*%noU7?Y`qhMwn&!{5O1$adsZwlB!z>Yx6nTC~YE4)`e%jyxNOT?0*2tATD>fy3R1Jy7Q%v z6heZaA*V&qU=j_bUB}Q5?cg~}&*T4OfKc`!*Ygvm6m&V8dOV3ny#t}L#Ya<^RSxJ< zqUQD?Vxj7+Sm&~XP!F1S?fE^QNOdo6x=Y=N)ls=Nw?fHdA9E*|`PW_q<1o3SHGjlt z-)?04-+Gni){>g?6gfj;u3RbB?NJB`NKya_gI6pmqfG>fbaIuYf}ezX{u2T@_?a}d z=%VAw&AhO8n~ds`5jEXfmo^Uh0Mf=GlCUKnROJrz=tETZaCh<@UvMRD}} zx_s*HSy!Y6(aFhxX;FFmlnd7WsfI3E+CPAhfIpPhvL1?xTznX%jS~rmHWnTgj&jM4 z_5-O_&=U!md;TrRgU_UC+tStHs+Ka)racdkM#rpbBVUO`tXqB+am5FtnZPf=p*dZE zxQF-t01O`XZac1R&@6ZeQ?K}O!F$R2ZO;qj<38P>UmsIge&O|SM*enQkoN0im8lCv z>&r=txU}RU{T%j%WtR>kDGsgT;r{|JeU6KdxyOqPvGkRty5GWgBP!pff{QcI7>#Y0 zU6+#-klk5)R3qQ7q;_##LHUSwi$+Rx=Hs}VIOHkd@pc9gyqsrR&l2YohyEhP`rwcK z#>h|31k?~SW#@74vW3Cs?Td}0F-d?{FYsY?94(onM zs{XQM>Q7;-%97D-gbvT$c9XztnP9p0sLu4%uvT@_Wkup;_{+KaG^1(NO8heZuN+cR z2t0KPo-;jlS2X^lif7k?J^u+pV0qh3PH^h(L(-S=4K$6B8z%Z}F{7-gNi+1TU`Hd@ zGkMy23g3~;eTKqak=2xxHl!X z_#Z&=6LBPH@W!1hN-`W;E@Ys>0%ODu9V>kyAr*b6zFaCl#dJ-8KmYaq_DNVx`Q~@H zPv32FHaw9+g{3FDsiMINZR^<1gAiU?X+O@fV3i|EKeYosM_vOXcN~<4b;+#%Xkuv$ zBnu_U;pVwHZCy;Z=QnPT@rVEX0I*P=eT~B)+xMQx-n|7vQ@sy`Zm=Nt+U3S<(`{M0 zBHF$o!ZxE)5>t9whPE>^O-&nk$?^P^Tkh_M(ekr4sSJ8<6|QmU=&p-O{OI-kAtd-c z*VT_^7o1q5nUyja^cK0ndARTj!L>>F0Afk@z!65?o^{o(N)CRx^E;w7C2x z8TtblH_fYYF*#1@c@LQ$w+$&5sU$hpAO>q+Mw-eaUzR9;4SUg+eS8P+=575LNMAss zjP_{UQ>@8tW)OISXQ2*RnZA_tWt~nfU4>5$sTX=s6?4z)8s$2RMSH@ZjOak-X;#QJ zE{F1;3*{WF14)I$@*EuY{1R8}sm~eT)$wVZnSSFRK=)13djM$Jc*+5#YlB#U_LNyc zbvUfzl{sovgDS)e!fnifHL#-x?8yMdj!FzsoLQA!M;KI#UJcwH$P!wAGYM_=zQ?o6 zR}D(Ptjv&`{^?hJ|9hR+&YmRypVXS%eoCp24;pusZ@*f zr){Uxlh%=O{_gN{45;`2-F`*6XKT1wga;CYKvIH#?mojYEOMn4fo> zB2ioqnp^2u{nz`yP})^?j1#{{H9E#tclDdK2M|P*U?F6XY02e?_Ir!~td26U(9om# z;-4b{7`BFy34Lfl@}2=~q1a0iT$m*ynD)6IDD2?&K#%@71#Jjj2$?~CHDX&?GL>Ze z4BI^1jc=LLYmO^oLvjo=Jg>J(!h%?FJ=ii&v-V0#}YRie) zDZbNR90iJNe9*ln_ocEt*26d1L0L(8*cnjFsNfoEFM+{odB0;eb6xy5FlNy4+d2EP1s-FC0cuj!kj zT=p=erbbk-)2KAq>5+A&;Q;_!a_9p0&LHY35CnV+qFBaAU^1UrT`TB4CJXl^%*Lpw zu@(>u-E!aqC!LIFuLd^2k(#7Df$tT_UZ^8w!oRut(5U+o+i_r5x*?!!IgPbktX8v^ z-<;KU5`i(P=Uj6q%Qh?7`UVodv&-g6PVi*__wf zWYf~DHcE>n41Qh99!sh8uJEnSf6U#qFtHQ|4}#vPqg2JysgHXv#Gao!W*32V8d5Dh z5OQlfWO+|SRlu^H64e&o*)?kjz34hI9g+u&Od3u`FUS!;4h|WH#djLSLrVqC6A`bN z&1b2}dwIlLnX%`!X{PnZOCetb+%?3 z$I(h3;dZKEbPc$SJoNQLdQ&BD)vs@bhRs#qCR5(;ErNc|)GWW?XdWh-NKB!60BlL< zA}XkHi+0~(5!4N2hGCRh2K89LqCpzqn%G|VtR+ai$0)-V5P}rVA?Nb+7v1VI!T!1ARV6Cy)0M#8tTp1eU}@jY*{$BTJ)Sp6w7S_#R=$~oo zU5-SG2FCa92h&f_et|BbE;tT+-L72oo?OjjUv+0VH8;{(le@b3VK3A(+f5QwAvV%kudAm;sAHUMZ8MJIv~Iq6)LCyr zZ#WM2V`8;ST5R6@`EzEk1?DtOTZ!*(>pckwHYl z0-SqMc?^E(4)Zwmp!t2f+(`WcfC}#d@*LcI1|`8kvxWH6G6c~o;L%D#LmkdpM%KcB zM<Y5qy(jrn6$F-FBDN%3;}Zrsux6_y;hGbxnQyEys>X z>q|#-eZ?_lMfTOtmIgLhq`GJ{lJJBOkt5);W6X zz6SOvE4jr=zQxvKaJCPurA;NJt?6O5yEiQ{n2Rh6oR+~inl|tYl)s17#eWNIN^->W z;GvUc;mCMOQ&CeuM4CVh$OiJ(U9`aUz;XAG#&y9Pg}0z02rkez4j?r}!iX0QC+x}; z4x@pzPG(3mxjcycA1C)09s%KubPg$8zPk+Mfd^l~lWY4a6KvvB*>w>Yc zw3OnO*6v!Z#Q14OEfgU$EQx}nrf`w1*P3d^K(Ojv&Q_a9Fg2g zi6L?B7F`mONMv02^v9Njce%}|(Q!hc$q$L2uHndwXfs=!j3_h~&Tif(fKog#Yf{Ge zQfq(3#?I*UKo%6hq4Efa!2>ef3r_+3MI=YCSVw)N2*E9O;0+mIzf)C4u9AQE_~8LU9v9Xh@OkCzTQ4jcABfdk z_DM4N-iMdjpE-9-uDJ>dSlL8_W^plUi*#{i;|da%H7g4>Onv9M-DI`?0IvCg?(uc8 ze%6(RHm1~ECCSy+O-wfa4o8FP?VNe7)*TV&Wqsk6dOxt0kA?IqMpl-7p1?0qSG?8t zmiZ2wI+Y+-zWd&cuwJ9~PzE|~Sj^&EEWN6Y#s33XY-hZyk$;!!R;?;*%2uuxE`Cdv zMh>E3rzHoVJnTfEG0J!b8UgURdY)Zgl58<1`vG1?@UMcGB94w5>6_=aJU#(?->*km z=+dmq2wtChMKw_~u{W%<9Da@>p4v8)Efr-MYDs|9=C$5wZ0%ALk28>(Bu2`$J7l=< zo9dk9yOs=6GYM9-(7nqz<1-0uAV&0MFt?4)X+nMDgHkhw`i61qDt(!Zi%jZHYV~$1 ziWPb4ih4T=%UjEq)0Cyf`aFK6{p2OH;!-Mb+se1L<ND*vS^fZuM1nd!PV5C_yX)+Y?14_?_hb-`EG+Cs zT#noPMs_36E>27BtvwqMy@1|lf3&Q~&ra$zjLHL3t-4-Vk=kE?ikjdBzP$E8Us1Fv z@Y3ZT*Q)PmZs9D6FiYpMQO^SjT_;knN#4`5oPj8kD3fuAvWRd>o}ow)*YYD@s7xxa zg;IV~80RWKY{gPhL1~%wkn$jA2A~{4BiO`FvGMVf9$`Y#mC9sc7MJSUOQl~}26{FH zY-&x`fz?`kvKxJ)&M3$9hm@vr-phrNVFyOdPufR1$tvYo+Pj$oL2vO5RyGFZK-*}% zQ&fRzKBPtju%4ps0Si9RMV)^?@F|C^D3mtJHW<%;}4-V_#b?>$sO z7Q~Dr&R(D|knDaB65zUigT|~OW1i>_ z8Kvj=cuvsr>vUcYJ0;ifhJCm*#8c+U2YHMzdv4}vtyY1&1O@+lQ4yoAX#+&_xDrc z{hVbzE$S-t%43(Y*I7c7DG?!~>iW4zy^~3aE~ym?*Xv(II$`q+MEU~bOmvz4vv6|z zrX_Cw#Oi~aS2iqz?zJuVfdH1k0}Tw?%nTzf-@^!ncRMgM$(RCs6pIQa*u)5RAi?LZ z)$2a^(;eq*O=8eVNz$k}w-aB5rJSGNLJnK{`de#NRxxAu$3=}esJweJ#A$|P128?DC=rkTo{5{l71>a2Kr!%iOp2k zOij#Em(%*Pg4;Z(@QuS(15`62%lfG4hO(|2?C?YkvXM!b8Z_5eSzo|cIX%(at|lHt z9B5GM0(Yxd7podts6ctboJ_*TJc($oGN<4F`IIpfqQ2(KZ z4r9FM`v`iE*w!1UsUVh*gybF1-6x)$&r-BxeDzhmpq!fp$Tk#@eLxa<42dAc!;s*G zNcnxz@|>^KZfTMK6LU_fvzY2yMg2X&yQ2I*fVHXss$PqN2C;IqQib^D{$qxP<0Pcj zeS>0s36N!%?B_|%Xd4{CV$G#x9c+5^$&?oNpH`agTw0JqOjT-JW1TYM8ZSwjd&C31 zM;ck>I>_?RaTbPB-w9QX6H~L}Ylgax6DL}zeq<~Ul*r@ z(&Gmy%6c*Y*$TwnZm1$k!H|)QK+ZA~^%=0Hz%yYKNfq66lpOLbCXCiqXLPsz+><&) zQ2+xMd`^cD>Nf0VWB-Bu`U|DDHE)dF{v4Ceu>MLXkDmmY(`4O~DeV@#lNWSaxY5mn ziLjFOscCB};`lhdTB_MZb$~M2jM7JyEey4f%H##=5mNP#O9H>SIo%Zt$6o!yGB+W9MiaYiLSzMcQ0kGB)nwH8KDv$ta568sBtvKmtrS9nNZwRA?*A;uUVXp*opxC?$Z1UI^1z#z=)<$bhDT=n%Yo^o02TLMFy@SY*&#cP`Auk5OtsF5>!ttMbvwq!OKS= z?5Zg?*A&1&=+W1gG^7k6TeKPX@*uP zg-=%SQMFF{jUF^_fhYzt38vTsc-xxk!wlqcOgTWG+SevsYi<+cis zpA!Wvq#sYs8p53s)@nWsNxVHo7DQtp9yGfxrVpvFkPyb9M0`z=jv#s6?)EbW*Q1{6 zU2*lpRE_AVd;IXQP}d4xg{1cn>V)|6;|6xdXkrGOUiMAdluh)>7AXpm!>iFd zigYKyp1?D z0P^hQKNE$A;-^ST8U%0+-%M)N$qXtjp3KykvWc-)Rp?dYFVcGp^-^Ld{#)(n#2eK1am5<#ywCr+>m~4&h>w_U-<~V!e6bFz3ux7<zxvgZ1Duu`VDlrB zQtA`EbQGVDvG&iUBCkWM!%D?qB&~$ke0;%QZU9mQ~ze)9Ng*#aGHF{_`lS4D}-uM6oF@&)`|! zWQ&oLXb*aCp#sY+F>?G5aF*_X2Um&9Rn8*QsHEvXi-Siv`% z8f6Kxn+8wVp*b+f+zOb}1VP{s#yh(Yrd4P@;wzEdtK7gdyAaDYFZlo!jn78EbT1<4c_0aXwNCyT z@G=6SKJs+$*=QgxK+Aj&ic!O!wR?FgbEP8^_{#iv=j@>QWtV~>rB%x#(@W1yCjv}O zm1y9o&5Thw7gI3z%Z6#y6`_|us7gY)pSk>e1H7BYh-M!VxOI2oxNbSF$1v@d)*|8m z1BlnzI8qpJ5e{_*^Q#5=Nz4Flih{I)jj;XRTaDQtfLsY>hQ`;ltuhU;)%q91jn0eL zI%eKda>C|kNshl!`UjG&D^xsA90>`XW-3LV`>azA+IrcdVkyQ0;9dtW;_V}sT&Bjxzmf86fkJO3r*Cks3J@zdsqs} zqe(C7urY?l)&TJMSo|KI9EKK$yBVGmo{NHWV*E+R7FRD$;|zpdxca=!U$$B68lq|t~1+Mz1skyOf zTeEH&zxD5|PQ8WqeXLb_!dASpR8cX|R~PXlB8v6QWe8cDzCbue|FuEB^B@rlr5VGJ z`Uz!hddTKvDpZ+#MJ>kOcCP!?B}eIv04G!)%JA1b`%Dah-)1tK`M!j|e=9V7HXKf! zXCJr5@3B#}?k1cs=+ajiO+lQkvyqtFKC*Emrxh}enN+hcT01kJOrg^@mpE(YEW$*u zV#H*%vdYQF3#k(wqDBAPI>kUcbAGJt3s(*cKdE6Nf?YFn`adV1E$otQVqub|LVYIU zE9Qa^BNDuXT2}vT%y@_`R@|`2^4R?A6-=tTI29k1YWRdLk{589!Hl7{>P2DehJ@V_C`x*&KWlJ6g~ zG0TDvY{aWNnk0_S>=sN&b$v3c%T=Wu$ZiuRn%@{I>TLsTsAwd0T*o_BLHY&af$Rlw zQ z=fNtmL!VKY#O-2{nzSSLVC}_z;{%YWPkQc`Y4Ehp=5@Qd%_mFnvhfFSfF6fH$}G$h zR@z*@xUNNFb@t3xkKPwd@p}-w8^l0IKRNQL76b1CC$!(Oak(3#woQnF`NXwL=VE3d zysN%<_qU_hu>5nfQAuA>n)f1seV7~gb^G_FtI1&(s+qJ!l%(ZK{na|_~QqY2g)`$6Yh z^+hxF%h3+MhFr;$^U$jLN8Pk;s~f%|3vg(&(rGO{LcccCV8z20iJ_tbPo^g1_E>EQ z$AQOQ3ZP}}ZO0yfUoS(BcAa96O(x^}lmTfP=2h=bb)q3tb%KMrKE4Tifx+Ws?YYI4 z-cb+h^VzDWKyF8^`Sbsyaph_>g){<7?XYBJ+{x8!)YNh@<-U+}*6__WTO>FBc4|dHl-&|?4X0@!NTLXhz5hl$8lc))K&@o;yut!nk z`vYbdv@5zjAjkR#01=t6MlfQVj2R6OlKcS0^s3i z4~p;zi~uTa?8Yc^(6v;u)$>V;!U&5CoW%q)xEGeUna#&Zn zY&iZ#Br|BcIdb%ibUU*=6+?wmwK!N)ES%O%hWehttGJ1Bjpl|Q?8(QpXgEzoo6WxN z98q#EYx}Rr@Z*Jo6lm`v)LKK1zNXfV`LVsQ#%=U=wJ88m+)Xk zgzcegs(n^UW{DD06*q~1&w{dRfkNxDHzj`FY794Uf_mg)68ZRk9kL)9Sk4ID)A zSf7+(yzejy?oko_AXF(0Zo@J zuvAk@C24M=S4g_L#ME8ZUk`N`+jO%% z3&YD20qno2Z~BHClUxgjLrCxB^YOP(GwY}L`WTY?dV4ht(9SpP0-*$3HK6-v$?Nhy zi)c9FVHp9DrQx99qM&D84@0T4BOHT`=mjXzH^qz*2I*#<2e|2*kMdo^m-_zz*nd-) zxK$CNo!Xa%svf_GL&NV7u{F%-P|nKWTp78GSijP*_`K^VbT&Kt|(t38fvX>!2H+XAVb$s5gte?UcNq8!5)Q-ojlhb>X0Jq zR}T?MiF9Cj{w9QYo7Xmu{iW*QMoD_jBsXIB$CBie?Z-0DFFLwKW-ft5=rETNaO`JI z8Ba2|!C5Y86;BZM$!7gwUvR8#9|O+Ae_OuNpOh@ntwvNO*6;=PQZl+mDE1%mU!kH5 z4{#ggl2dTgi8^Z9dM0@6QxD)BLurm=Dt^4}3Gc;BKH`JoI}V2%-ad>%!q!MG7+2(H(K@Ro$P^dzyaNJ6lh`U+8&i$S~{y=7E z$Ua6>zY}}SD*_wlkx|4|9WEoU!XrdM+n1h%9ym?R8F`cwkz%}5jNQT#G|&d%`K4;T zh=UrfDPHmp$R=?_2g+>qB%7#~M3v)&MxAtb7pIMUpY=Ha@CSe`d?UQ+7ll@3yA&Mx z8Qdg-h=cR zQjRu~zCC4K9ZIXBtbB>*2qVyye6yWuy^KPsT$KWv4ir8M8Hg9 zgT%Ri8ob;3>2B)pBSYv!Lq;nOXI$V21wRpF0TtmWn23V@J`~9p0*g%Z$5k^8qtKle z$BP6afSpTjw!Vy&Zak!#=5?YbFM?7Ohf8vSlv7qD_{21n#BQGmhv_YBBsdg6>3|CI zMTIhd4SnfgrZ56L{3tRJNAQQJ z*IU?pRq$=?MegmG7nWFG`kCoTK`L;$$CMZl%YhQ^`D5XJrex~fu{YKbEd?2|bSyO( zy+L_-5ie$;QTjo`&DAHV*EzKfrC(@;ZUSE5CUuQs- z4+VA-BIJof7P(idD5-pQL;kE*5*rXk-+e|B3_MU*a`@nw+;-iBY$vj82-XBDG{-*g z!9C^gs&bB`moE+ld(!Pjaa6e??2)q(u}?P22tx)1mf~#R+wq8ITet}^1G5Q+! z!S%w;$?+gl51ZZ6bz*bd7J`|Om)rhvWQd+LuO3o>)+I0_-ZNVf3Pf1Q+n4T0)a`=h zrq+M$h*;077@6Z7%lScMz#ewUfA8IrnsfxEJza5Jfvz;dVM6O1lxtRe^dxdwu!iw_ z&_Sdq^$RJatmBV77`R!F78_>ba)`&uJeX)Et`|jZuuby(L_3K5+_vrCBmE%dD6ck2AB>43 zM?s?@cV%VzjqtIevJp1#;Ag2=73l_EnFlll^m2{~7Bnhs36VafIbm!(yv!Ja)CW0t zLj;pRVi587hXo!2P|*HqR(ze&(4c*My898c>-(xR!em1FeBQ9g3{f^A#)B6IPP9JX zYlFpBp;q7LEK0#a1rw8fU1eoGJRf|^6FgIGZfIW;IF>--I?dw~Zde8*(;l1(b!ui7 zPCexO4sH19Q{ZveUSL0`cb<`|z~czW7lL`yzlWp%hy0BhJSWD-dzHd1MMGG(Y}oT( z3wm-gkSS_v-)M-%L5GOgzd@qyDQfO)#Dr`m1n(=`gvGFw9_D!L$0WFq)sTi1T%plm zPs9iJaR&|0MXUL~#)Ndqjo}Ai!q?W4?q(S#K?mugz9c>WLWl-s-W~kqeG*f zow&H!*P7cUb7%Lp!u`gSP-xvi&Q=tsNGV?PBN@4i9cCKlM~tG<7yFLnDrG`CF89o! zA_TFT7p*VWTKl?Bq6!EOegmf1;6$WLBC{+#Pd?h2k_u}uJaDvi0s#>^;7dHbG)M)0 zuqY|_AUon^kswq_qRy$`4UdTuA6d(-N@1eKS+UKG>pW$sb(=U_kVJV1F0}KB^cXLx z{5ew%)J7~EM9sJBMMr4az}okh-&D{M#~3D%1>K-&}k0_d92SP^B^;SC#^&5oE5GQjMKWI9u zy?iyN$ql%f%H?6GT<|Xn`T~r^oRc=fo(SPzCT_!GLqm5zt>j*Ye$f@$Ht`s#HDr`C zOwz@`ISrJHjegy-(-K-ney=nqMP3nCSeWLurOOJL4xOIRvS|nl&lBFf8x%%(wr#uB zCoH~5V7T@4f%owPGJjuy+(9YP#OKr|Dl|T7Q7`I;Df3p8Z6XK~5I5$z5_(iF@n^*d zkuylo1s8}u#MpqB?uU`aFJ7Wdg7BsfvP&+AzO+yzll}&|-YWt-MZQ5owS~z(}qd|Ufr$c`1&0`j%*J`>7*TR`7#yWctEA0EgOA2u!n|wCRBQ>5?K$<6o;@X+; z614jP)I<4_5Vbdq5M^l5uSwU*sb43fdvklGhx3E(v_gvPks1UYUR5~`Dm&eh2{FC9 zLkgPp))~axmO#B%s^QsZ@xyE+Umis_1p+`VfxnDpBLc8?gFq&i?_C1Ya|-Fn0!*J4 z(s5v*($FCm-x3tSvH`IXs>8tB@SOM$yp*?F(>5_LFOls(6toN}(0 z8n!&4%*z z79CR<$9=woM{B@X7}}arH>x5q4XN#@YJa#(H>ijQ#9qS9 zby0%Myz2BmjwwYol*3tAK;uMwY|_z-GAp1oDva7z4f4Z_jSXT5`Ed9*r7t20`|`vh zoXC((MhggV>8Q4tu8Rb5!xlq!!`OWJd;v321R)}DttANm0ojCy*O^UFG@}b!TrfG( zJ}5l>uq;AFnQd9A<;V?Lyfg1)+!%!Wh9Cb04RaPwfvew~Sjn4*^X(pLeQ0&ah!>zm z*joaW_hGDC=Oeq)g;8pW<4J;C&;PO`33m@I+Vh**4_brKwM^dT~z~$5xusIHL)60Ch5V8Ss_vwIz z-5?>Lpuh{dfuNq#`XM0E(4kPtph*=mSlQTxMaW?=MU|ej^`Rgjgdn~=Z+VfldC@Py z8(cTL0KG*%+J2w5w6=6=1Xk>AdYlAtqyVM2w2xslY9c1;=I-n)kesJYoFrz4VC*AMk}QL*1upmZ z&mdwtBKFv)NJ|0_&x6kX+L^F8mQ zQbg&)QKJXP!5UPKY|-xyvCm91NtHPVt7R{ zdav>Oe>nh$kylvULnCPuAjrtaqQ`(Oj46IV0s%X=i0A95m2YOkj-BBA4Ji=jYuM^M=dZlH84i)gt?~dno9uY;Lkoj zG)0x-IB^R0+^&yqkY9^Z%LNRu4GoPp!Wlr`;}3OR*mT|Oe%gQE@k*OI$1bf6bwDl> z_kJ>%TnPHz+x!G4bbmpuHa-hS&iwA;pKCt3FHI9L*=};-#NWX^Bz>FR!uWMDy1D;N zVKZ(~6d%~u5WN!Ca;s*^5IwWSKM%^%CkU02)C6;IaB#L^|D3h9!>Bi694rR z@x7FuwPcL6@v)qOJ9{Llta~JFZk#u*=o&(7x$?q`o3Z`T8PnZF4D4ewOySfMWGYOy z>s$x!2*J`m?^u0nezb)uxH?ABwP+nfLt|rIxjgGP{mhpXn(tiD8KY2}O;Dp4hlcvo zYek29B2Ps*2frH*2`)1`L5t|}0CD0JUXfwo<6PQH3V-lL{ zQ9}pD9g=>1-v)Y3;J8*=nXwkwIwn)^s>V6o42-;PfnNl0fK9q?0N8G%WnGUW`Knt! zUrVMI4s}Y`u{4dY)ehD5k-;UAkfZ$uNgazCe4iLfj*Zcc5SEKNsk?C|jA9f;jghos zSR%Q6>N6Y6{t%JPy&AtQ7RV;BUp0bH2p!xk9s3(}$rW3e@O`}1ZpLqbHfd8%!JEOG zR$39A!PiG<-;NmWP$O;7${IcOksDpm80et7_yU?nOeIlKW6h)-|3`S+rs$zVJTDpP z)Z7b`&NOt6U*VI$mR>*&6jPjB;*BudSa`G8B>7rW+&5~|JK4gVd!^_g`&DBHrjod+ zq_HvBdWeeqXwgJ+W~Z!}MT({_-Y%4yd>e=^Z#u|E1ecS9fs?>ZPfs>*xIEmAmT4z% zuTW;ED3R1BZUSzUWywN}-mek~Q==WDDvh}JxYk;;b%o>wUE&-&_^81P1^W2T*ZBCf z)$SxJ6=`?Z#MhcF*oA1b6ha#kiE~s!y;FydEcTJOH@OsQI~ZCkH$WAOtpp@T$-~ws zaa#u#%0gGy`?+zh!LhZ|G(VP%H?Lz|ETmIMN1z~t1_+pwVluu1p3l2T)15MW?C zHo3VJT&Iu3z`)1nvr-`&lVl%dtQ-9?mr+)So-3C~Szdd8N8*5GcH(nzP9dwjvtoAh zke>OI60lF#mX>kQtAv4*_G`e1v%k7r$}LYHY{Nc_s4fjGuew4B8eL;! z1MsC|4W)VSAA*9QUx0x1PyeoY3Lq#HDmp1N85lnmF+^a&f9Qij+@tO zRm|G}cf|;NNM5Gu<6yKx#1_M+AXl2pGBJ)Xu;xT$lFZK(qL8fDOwagb{!S|*;xFv! zudwi5UzLC{82AG}8rnP+@kC?r-4RimWd&@~Mp7q9hb&H736b-@k|~hWDx&@mG{GNC z{K<{i2ea)h9hXBs5)WQeGadV3vB_Fvd-{;fn=CIbe&fZDk<3>rnYHEw;4X9A*w`4` zQmdskrZShD3CY}Aijf$LLry%=DHp)TvXoXIjCtle3 zr?HW=6*Cm%goDoqqNrsO-(?Xynwa7)1`AcPy);eVC>s2Ly9CQchH?a8WjkI;Z%nu- z>Qg=L;8AU+Wp9dUFxjIyTij9tq&Zx$P{jbd{#ZB$t2lUP;{3e%!|lG(1R3 zsjKt>fop?eW>YUTa-b~RkGe;mpHxE;Xy7Vxb#V0HRIu6HJAukOBgYY|f;m$$8n0@# zd<-{ZF1B_F5ceBRi(4m4^#FjdmKO-1xw%>KuNs^PY#T5-^V$bt$ zOY4r|#vQ+*loZ(4T0dg(%O0b}61&Gu7>@JCb_WKAuaT)^xM-+QEx8h<>{8F-(?p_p z#|Ngk6X`UGtEsTs$5QnD+N*?++Q%Zc+{y+e2?t9XYf(wupZ-?SmNtG^9l4dI@VF-9 zj{~8h{F70Pohg_SO4Np)QQSB9__#ks!6UXa1UE8@m0u$3-rEhmrzA0sTso1q5`2I8 zNRtu|+c zkNEx3^(9hilElQsbXI0Xp-g=I<6?&yr~=KD{Iq;6%PD#nQ*b^CMX-!#J9o@ z(u?csupD9aN{r;1Kp_Fqkc2O_MwHH4>YgK0v88+I>FJ?ikdYISROC7)i$SfpdZBD5 zo+eQvcdt&)@+x9sqL5o7rp9w(>Y8Mu~TGn?PVVsnkLMfmF~a@w42K;tzU`%t{ntU0 zp4uA!NQpasT_%*S;$8|Q#7~3G5;$Ue{J`@NZ^bw{DyImRLg8aD#=Xw9 zOLK`1dHYD|IQ7lwQuB@pnVN&6{3EBiBP3#^JoQOya+b*XsD6Ib%GA@8nuMOhg{6=Z6HGqYF`G z9(9>0X80J(77zG?%j=+q@>e($Yl|~Wp%Fx|Fz#1<#C%Cph~$4Dkr~|I^ykXq!EC7t z_wIl(oOs74r>WZ35j;VRDQKPuIGFoURAX_Be;aTcE`~=fp#`|O&gxE%k5%RBjt_#l zV$!Y2ij$M!b^OE56Mt%qj!0HtrnR)bPhZ66Q=%eZWj&6&q^(%Sr|tDBpceKMWa-_Z zK+}@2%L@$+Lm6sKzt!f`RH{coZpAXg$`TWwdXXh&`eJ7LLBIh(2w7ARcy=@}B^n+U z8VU|r0~=Tc8wwhj98JbXE}{g3YUF~+F6xv(@rpxOIWRG|8;g`vJgHXE*m;UoEEpD> zQpI)a?A#=%F7NN0X;>l1U!m3M*1%hSqaRWE9)4%++@<@UFZ(A3Qr35`HKvyTZ)fRl z4L2$YOenqMy?6gTjQI!X_qGt&ZOXUVN1Wc_#`q|j`2-;YpKNk9jUffoAx#5MTeuwM zm{SJW-MS>we9^6;1MEY-V8jqTnc3nJu(l&Ts@{Gx{2FsZa{}%7Wxf4w6w@8W>if(k z!!BYD?$kMn`9qK4CO3DiQT=BWaq*z-8zcVDg1g0K+|4XlA&ZnA4ENF`zjDm)^Y%+m zQGQ)&xUD0f;KSHp8}sSXgzG~~DbI}d8?(2>)peaSjuko~xjjZ5Ym9OF_G*m5{DkoR zV!(>?=iA?1NCvEPKan05#sF!abz>Y{juTu8Bb(4D45q7xgmtbjyw~o?Adx%u)E`5H zunj%pg(62+orcn87&%sKwv;%9dm^{IUt!O??aBom2IBNgb-WkvyPx*^Nw=3D6>H~; zPV^IO8qS6$!+6%eXuq5G+G2d|`5RQ%u9bniJJXFJ_xNZ@lB=2d#2mL)Jovb9^BY9p zj~u&!BL4EdzTv@R5@R>%BD#R8Sjg~NlV%o%3B??snQ7Zf-soy?%prIllKX7OYYkA8 z`wdN}?a9iTN1!yVzkM9%)X(okob~ATj=g13+JHHHz1bnnakVS7TB*&R01I!=TSt{t{JX{+V3ZxN*=aBJoa3w;|U(yTArGvBta z7Mq`|L1h0a@nKZAYD4RDDvQNE!-l^9X~juwh?(>|xx+zMiRNu<-UJMPtE>>m2eUS< z9W|HyRvx0%&mBe1VhL*n@1m3}h~I365_^a--u32DUy}yBL0ZcB*GwUz!p!CQIe4SNeGhkNVw!2@E*UC!Y+uk&r zDYHD^ZCv#1Z!auO{pG}sQIRb#m6blfy<^w@8)W{_Twrc?m#HVK!gR51Pou^6F^-$9 zvVUNO8hjOOpaSp}3>sQGNLXIk**2FvWv=JnSWH(zD+PFEy$>bmR zHiY2lj+sFxfkE-e6DyB?P{E(dq~x$+Badmi@27AK$~}c0p)2=w>if5{de~Y!W|u@* zgSZ54*0p@j47xA+@*J(kLc(?3w6}2Iz0h zn{dC>38covQ1Z#f%+rcAg-Df+-GcYl_R>eWNlIxLZ=@SJ7kM<##D*f?d?!n^Gf?52 zt|N_!l1)n8`NMURlj~iHwOPi5JpsSRocm9DGuLwrMGA`0gXc05|H`EQEko-YpQFYp zSJPVEYYubILQr>6SNrq7h6NvLn)!}1_j{Clj_)$NqvZ9{(mb_q=bk{wnNTRpEYj2^ z2^~W`xFQK=DV}|Y+L@ztD;imZkYVn!5&9Lufag&GZMWuV^P{z_ldbSxO-%C*!w!+E?vXA12_x-(r&)%8O)pYP!`7vFDLXDQT_Z|Y zG1(}4$s?@K2-JOnO_BYXh>t_klbZq5J<1XA4Qgu8xf1i$m!Q&SI=n2eddC)lklu%ETkm3 zL_7Jkyj||8M+RgA20gVo^%Y%rI!4_q& z=KT-)`6)!70PTZuofaLNLnUMaYowGPog=*(4*m`AJ7le;mbIb$iLK|i2x24WYub8N zFq%40LD^SuFF`9Q3D5-DQxs@tFuGAIq93QCa3oS)iRr)CjFIZv>r`Rd+l6-X_t|f! zFJRa423r0G**aiQHVHSEkjHF4(!*F;T6-)>BO9U^AhLz$&w zYMdXKe4gaXsGqWrdMC-Kl{$ZL4s_l+%{z*#PoU)kNbH#|j&7Liv8}WUs-4tMQ2-kkUB!krs^{r-4_OfJ5%n6%9 z)<-E~!P0ZtZ7 zd5s12cg2?@Y~)}?;xObZ{&a=D^y%>i5B;C#jzbi>zu_T$K+Jpl?oF>lLm1JI#-K^A zhX@V+*7D_tpuQ8Chxld>;YK*Crop^UP__Bd5K{wxN@dfiLnO>{CCBNC{x%Bd@nU{q zL#;%CZnLTI=JW#m&)1syJk@inL7wy9U1qv1n7LQY1TD_G^2YG3$T;C{S@^a=_ zMe}PEsH)ceB6f=$HQ?3$PAAN%m59ZPYaJ z@l+xkBFmmoQCIp?W@skk!?0dRvvKjy)f?w{)~E9{p;zZYtvPq|Nb)q z*L<&Hx-b{)H;6V9O(qQ2SfPfU6Z8t%aM0?7W*7tFV zrcu%Jo%^#ray|@R&bk5cv_eeGW(J60cgzz%Ge7-IesYp8su&-0adPB3tZv#Fx#VTx zX>X}1Da~s#t?FUUQqf9D{cg1BHoNYm_>0Vc>M4@mvJ#AB2aQ-6TK4Y5FZATUW1%Es zQOPxrMtFR2&=PQ`_pJP{o1-9NThn&6S2EUM@RkTGEG-SjUKsnM~k zt2*#V^XC-=Kj-17z-Dk){cAACrB`cA657BD_<7L}I#8sOS%fV!a9txWp*tScQAR=K z>WUen-Z1#x7%XX7bDYk!8{85T-7&c#Vp`bsu%lIVqi&uuvBt^-SlcVKce7?Q%T{j9 z8K1YMVn2Lik3awMeRX|LO+kf`*~W1x(2p;F6KAGO5aR#)fThL&?_ylU1PvIzzfY{} zBY-6HTlJ8SX)#Lx#QZA0E>Lrkr6L`-A%uxZqO&N9#BN-y>dBUc;ZWh6==VqlW1+I_ zGZy-<`G!9d;N*SxQ9sOCj-MN6YUJTt>}RMH9X1VySeZ zy+kC#Xu$x@7xEA96izg)_foY*GUs^^2`H9Q#_R~4UQXV+(YmW)5NKcw*z-2fHLCOt zeIN)OlX~v#@t;9v92cG7R`p*V#swI>ExCpH|317e4AmH$KGyJ`4QYPW^h9elv>#IQ zzH_t`T2F#PGIR^MX|_^*ZKK+~>pYzBzF{w%Y@RP$De*1bBGWQP4W4sW<`j8kJhW`@j~s9CmCNFw|(OCH`Nrj~VDmF~uKp1168mK~N_ zl7;5cj%H9uR?0WOlrO}Goz$7J5E#Gc$WLy#qm+b zhQKHW2CN>YU*T&C+XC44bp?fG)tTO2rbxc_d^{9PM1-mrXvTXmIEk2v^GXs*q{-0= zh}T+WN!R`bX5Ip~j+b(&%oBl$tZP+JX3$_0E5;O+-W93(j*7A|sWVT64mW4bfblJ3 zLIU~%@*B@12C9;13CD$;(ytirrCpE@p=!8chXy2f%#699d0gw7x(9xPT2EKH3|7w{ z@82CX3#75jH|^zF;ak!lS2AMI&a93o76!=hNC_v46A`|Z}O*VfxPuPs>;O=6W z&K>WlF~L!r?%N(FKqKo-M0-YX?w*UH)Vf&u28NOTHf? zsK}}sgiI7UU?t}?m5tK7aA46OR@90xP&ud*R85s#!ue4!O^h`)>t%oEZX=VTCH84Ig2Ab(bi zzn~;MEHYpw;9Xs;@*AW`?+%<-HNF(v<>X-ASz2SDn@~9O!6qG8WAJ)_U*>-RFZnOv zQ8v1C=E+U72_35aDqB`{YlERz2&H@D6?3`(M|7gO-o$Y09XN z&NL3QR+p{ERtLEOfav-`GyL>*>@r6u3Z+$csbOh7L3y>v*eqnkPTpKyCp#=~LFLy7 zUnYM=(_mQ4ylV3F3OjwkjQu|Uw?pvGb`*k&0UN)fEe@e(YIOb$@hNy$YAvP^ydT7L-e`%sfg%=*hi zn*W0{brlKQVG}011u!DXl~jy?xd?I_Cx@4o(W2*?>7Df$UZ|Wd>|t3ZgSo7t_DVGv z>blaN^85hc?IrVo=$b7;y4Wpd#sLN?Cs$rQG0-sqdfW}|Bq;f{ ztx`N&+|RCtvO8l&X9m$HE(c^P4SB43s^|v2*9|@g0tzQ?v7SnK{*VmqRJKb8RT%YotW9WDiMf137xu@B+Yw>Pq9hFuc@F8{5pkL5~# z)&yoP#m6UR(j&5FF?TX2vT1$_VosOILjbfsO*Kh8;mAZ}b=fHxQ) zDQa(FHQ)>`JNA{?lE-h*NY|c<&!-Cw3oj-$H93fhh>$N>RE(GB;`8-bi>kzL63e_J zj9m;u#}E*T)Zcy=KNd#CysW0GOlgrpJeVT^Wy?ZWr&PH!bV$j<@GCct0Z29WBk8iW zrRJh7s5B+1b?P-LH1vqouCKgJtzNjh9wLDT=6i0!m7+NX400Ep&@qEc|GeWLyk$8P zZwrGy(rJG;ZXfYeJ!hxkytVBUy2`0`p({=~=d9{?r&jJ}*tIfe=-^95@GP`)XZTzM z->ERYx7|B(@K}zdS~n{FN_!B(#EgmK?+vKX85T#Xrvf$Ffop`_s>j5VvvkRGCq=kJ z66&k|H1qK0`C2cw>IDn+zgtg1oeJ)zea$01MwqnOY(8Ts+1>0IV!^6wtccC=ChE6t z&=*+vvC+O-)o{B1I;`L!WgP!vX;CD?`ksp~S%oMT3 z6+}O*CAs{e7LK2+10ydb_q;{3;iuA^ySV)EU6@SpFmmXStj6m@O31~J(W-8VGk^`N zDZ?#1!P_7x1T|#Oxz_U3N%l!Qek+QstJ4ne)9AU#i%hK3_8imb=>b@o=YOm$$t-)cE1UI@msY=7t^3!e? z030Pfu%~~i(@`N(J#66IcxD`r_8BvASQ(ewc*-an|CQT?3W*G&()H+-IW=9Rn!yZNjoEjR6(l{{c{Kl-#) zzOKGc{Xx4THs|C$-sTgxB88n>-NUac?A^@c@U>t0{V`61uZmBegSlX7&F)bm2Vf)0 zG2b^hhDrY-8jR~#Z$r2h?|Jq9WzdbX^7ZGc69o6ca4D|5L+Wb_i&pR%icf9v+Da3e1>c!zm@IhmW65=pdp#)!_!+R$TP~1tew0jP&u>VcKu zV9tfz?dR;?=EhM}`S{^3n%T$!!no2+$Xt{L?E|h(<-D(PUT}LDF~PI{1aJNQnMu#O zVO};u^hU(lAmrJJHx@yW4n`Es|A;wLk!5fWt*~3L=(u!g%u{mKRPtHHpK7Jgu2JoO zRqt+61@57!xH{&-mL@v*9$uR|L2hBBUt}&-L(Zqrrxi`7_$)J>BRghQYs*jH<4*4v z3b<1XF>DOfJdlQ*NXnS;Ak^)f=HU^NdG0%Bpj_W^MfZ$Zd9jr8LO` zh``&@g2B`UqaAF${BNzws-wOw1;|_mWAC8Xr;norV+VE#cY@czlu%|d(frQTJz(iG zPl_HGPuQnimm~kM!0I(Bu;m5AV^{hE;;*6)d_ zkDay~Cbc$8pNH3x9sd}052aK~-WKsa;95erXeOU#ndJ1<8`vYtG^If2S zA@|*LOpPwxxoN)>QXi~kEZ=sJosQ#Cpw^|U_;aGbGI1-pXR9mZPq%a48n_td73Yr+ zEU^*V)%pGF#tapiI7TUenM)`UOTrU`>m9}x=|+RchIbK|bl)WxO?Wj0*q40|Rl=WO3z zpfK5t5vP54kB@Zmy&uVPT%HvHk(8@zjY>a*?wE$Rg|)mIhx1(Y0^27|JwLAeO^mWn zC8-*`Ew)!gjF{(d7G7bk$60F#%q9*vzc*SEs@p0Il`chA(cQMU?F>;kr@hv5A&|i| z;SeO6JZ{70s-lCn@?9yVFOEpy1(ZeL+4O1=}+OgKN z)C9z9dAO0%KOIxg^chAPNTHKxk9cb&&X258hFmVk1;`Z!X^c#dY503sxEtj4rnvV< z?mf<~JEu(uDKk6OOBP%z$tu7>qzC%1DAaDavB<8WAX~2*RUS6r4hAkE)~-|LranO1 zIo;(Up2s$eXB~Bxhua45tz_aXYH9vlLOzYsOJ)9$lF7_mWoAj^lMk#c-xV}<`)jov z?Z-KQF%_{!PL@l#kdvE|xi)S0jYG!Oqvf1<6k;|4qzF6A*g(z&@JL8jV&LFSk3QYgRv^b?N4t*V+{0)~%Z?z9oRSZ-Zn zdE>T&r7D*kxlALM()6`>)$yH&RQMor(81KR_=bp`)Rqed(F0+oKlljXJ-}^@JF)4^ z$^o}RgsGOFdKAY(co^TF5O%b|H))OW8H%YWFnZX);62=l&HRT^F}AZWuep1Cz(iMm zd*}7Csjr_A%x=Ima~1Hf%BsP_>tX~lVe9y-yNWh_hna=5?>vP51|@!Gxlf55LVO(Ayvf3Hb|pxx#2Jot7EsX2 zd|)ziHF~PQd7o9tJpySMy(TFkc8n$Wleot0+*<|A`3`*v}%4~qtV zP@@KZNEy0ckbFG5z$YGGOpO_$Rmkv!TrT;WkNXBN9QE7`?p%jKFZdc8ayPM4KX9oX z{~@wuCuPDTwjD^)_4fG!QPPw}qq8%JO@|^Ys%KIv8J|k0=H<&{BQpX&8!L_W`|;)6 z1&R*Q8)q!Fvn@zILpY$Ms;1~wWB7>X))}G8m)4P8vep5+Jz6RX zCn%+(=&o2St;lhD|8>LCn}fWub5MsR}dp9#tv(fLS~ei0`%lnMs2SWYaep1Yv0o( z_(URj#M^ACZH1iXf}pYr!R|Tc?Yh#^{GwDIiug8O+%=G@YoprqR|Uqv>X<<(7$gN# z$=8A&V0Sh+1k9hkUP<@;29>IMF4Ac;+qu0fR{iRHwxnyzp`jlm*K?Cp-o|)3Wl_L$ z$n2-4NT3i)LFTHweE8|5ds=uiS%B+|JjPB{E=%?_9)!`Aw`SgVkq;}YhF6n`uhM6_ zmMuDTE%%a{eZG<_#Y<$6PDLO6&`J_me48g2xpaDiUX%Wjz{m3Hr*<fQhKV>6RrO-%a-Y_pd-s-vbU-7SZ4Ly~-C>sasj?M8S9;oCAZWz8jI zgO|kQiR!7`(cC(OcI1o7yTRc?Zk1pCYS)xnof%A7wnK|G@a07++_VCyM^%dVT7+{ZZ?Kqad zsQ5ktt<{N&Ui!~NxwHPf+Di?1T6Rjem>g5^KY=E?1G*{xKhFho&hr(blOsV%J2K&h zTqVac>Hmyuu0K*QqRfO zRa+qtcjuR=M~$RDs(W2ybzxj&`}^vSNzxVMek+qxT{$Z<%Q2WW-f|=n2LJZwBwD`%jmIc4cV%xi#IvLO0$5!1PCW>qu%}l zxtBS+<~zMrBl=^76PJ-iyRR^8nN=IHytM4&fT%&UyC==mt?VVhw~NFq{aO%7h>}Intj4!G3RYJ4~FD zi3$wK_=zq2y>VMD)w*glNVW9xzWo$l9$c^BI#<8_gm|gGAzFE+e%)2q#oBrF^dpYE ziu+u>DL-*VV$zf8iD9E{L21g;;fLf8tGr!d&cdvSYSG$>C?cWZ<3eflesV~lY zp<}kLX4fdp2G9m5p0xoLWnj9Hw&AoWpgy=fs}C?(a%k)t;CS+K>5l1Jq+WBHXU_%* z@|L|x3s{g7?<*G)TMw(Me^q6FD}R!9 z)Bna;xzM)ubb2y(-=_Djqn}-ogN5{xlB`-_=Bxay{^`C+K}G7vS6Bdr$3L*#_A^PR ze1+Dhx6mS?0fcE`Z}oHkK{*8$m1zSwu1B9V{Z5C=C=RC~i_tF|iqfjZ(S8KaipGyW zRL9u(iAL!*KD7#vuwiNiyfr@c9uP-G0g$fPPa(GB`U(4^H69%;AWe_j%E9%^Xfg4d zZXhCnPf9D;YoBH_9{cY0@HYRPF2DS*3~&Q)y}u16sGe#U{Y#VVU}=HCBfXS?Du~@7 zBt%ASd5Wv^lT5G-SJ6oQRHqa@#(R{y67sYL3t#(W$mx^G*eY06R)Q_>Cp?8)jk6K| zp8Qy@P_{;QB*Mmj50Wpp8IR(JFyu67<_E1yQ9!7R)G6Yfe-BdfgMgm-u1d}hfy z{tfEG=ApHsc2KwOfa1$R8UJSdkYpD3Pb_)yp|)F|ar|&#&F~{l&uJXC)_Me&T6G+3 zsz|hzOY9fAqH2?pZ8l9oqhLLgAa%L*3T{oB(nuUvpNbD=jDD}ON(D>d*y1O72MrN| zuPw|Q>&Wt-8lcEmTZ^I^SGO0+Dgp^$Eu-4PG0P5Z7)a@J^wA`W|AF}ANb^iA{x z8Q^3jB=z0uWx9Gc&-Ue8Q9Sf`@oiz#of}AIqnrAXxoMf zo@OswHlMcYz3zF$YR@tGp(yi;^MkR?yRQ-FqFhlBpWxpgpJRfR)unY=)j4(pX6kJ& z9o0XinfxQyGii2ExLr72Cy^c-*^sRSo;ALmyjB#`MDLfQV%2Hfx@9mC_AtNhq)?)$ zmz3^f{HJVJ-qzfw&XEL4$V*d=*`~Lwm~nqlb>j$StOfornwI=xBD^0nk29FoE2|Da z({&{kWq7A1IbFND#LNm=uoAjbatK&yu!_yH)RZ+XK*BILeN_K>Geb!u4hk&AvKJ*0 zYsR7A0*p^H?N3AyoMtoq%6%SevN60RRGc#+ns68ZTmB4Y!$33i%n*<%XubNOv3#V~IX+2wrN##z9mP ze-kABhQ_acwBe6+M;=bUrr5O}l3KRY-rK%$zbzO1$oTfx;Gr*u zPhM#O+aER_HSM1g7Kaj4UKFj6!DyCu{I;l|8=OHV^!AoM==pwaZ2w%*Lqg# zT5VW-!n9>KRf0Ya=% z&wU5LAFN3MATejjt5c0J0Z+KpkKk8n3!7(YnHj5D->T%-A8ztwQ9xo5K}DDO*`1`h zM#vnMT+z#C&RqPnJzGWEcoeyJ;E3+u33^%Ik*~o+q0iHE&5VgZb&#MY3k-&T81~1u z*oezP&5wwAP6soma;4i-o4TY@Y;K#O_%~g>atiPANf}D^T)Wo+J8uQ885O@WUPkVIHvQjhMQ&%}=(31SO zk9&Wh#&IbUxyKZZ?<1Wbp|qb3-GRQW4ufMNrkkRwEW?KfE`Qf2CzWXcI@Gr)X|4-6 zU&$~5u~@xYG8uV(G_V-Hw7Oh+NEI<|PrxQ3*Q2{wRuiQ9pAeox0_x0AI)ii9gCbA^ zqNjAtfY#`Vk{0Wb9i@j%+)wE zyyqs~3`|lx!MRq4(U)pso7;WKVnrm%wUE~_e#r)itzTbszmO;tg&IOlA`=zg_w+RIjVXq`8Oy;N`8sGEhu|xo2~a#TW+Eh&d`1! zGyj6+FJ{R%G8+nH*ncRf7Z6!|`f>MlPGb}!iqcj*3|SU@9fQ6@A#{Ku=h^xF&3_r% zu{0sjFq|4ydk%|&MQxUCHRHITQc_biFoV??m8T7rLE0d=GWo1}HpGgZIE|v% zabM1Y6nS>A_B7<8e=_AF6>~g=A>@Y3TKS|kmtN$-kn$T8YLd>6 zirl_>^40C@VB1FKl+Bt0%r(++$#Hk&w-zRj<~lEr<`&`^JG#te3nJT2hx#Wn-wlfg zQTA!UNO&Omhlh+xXTKOMAP4>G{CXRrddCg7JcO(jm)45!VxUBu6b5snJgz^e)Ms4d z+Y8rr=O=Up8EFm6S4V~wwS^lp2hGA+S%?B^cpo|u6^!j+=fNb<0@VE3s2xT2tuM{n^ll!P}7|+Czg+Z|KPq2 zU~VZGbIbdbl-LVvvp}AKs%QY!T%!f@&IXkvWDvc(Bw`WhWisY6OMnnUyi_tWHuKlg zOI(+W<>OHspkhm3du%5DSx$ij+)vrlMl4~XqKVqA8~hms#{P4zYLZ_#5-5bv^`UgG zGze2aFN86lmOZK^AlkXZ5V;b>mYiu`i1XNui?8hOv`DE3%-A4X#=cpds-3>3Mb#FW z9_{T?a~9}-$rl#2QpT>|Uz<3v@viB{Rr?1xg)Rk2&irMoPPpFDeDQy4y?3rJgE?a-b3u$RVy6-YywgnO? zMy_1j09U!Iby=X$)0vIWKu5=e4`7yD%{X{U%q^%nHTwWzMl~wAv~F<1)s?jnB>3efPt8W42WYX+ zxo}heP+$IdeYlSXP@!M{k=Ow_KVVG;fG2i7IbEc-u%;b0Z_0X$sP-s?@}k(K!~t#Q z>}9>m;BJa%gpMsr!i@$iynIFR{on|ITiWqD;lo%pB9QU*@|n**?ain~$N@b=;C49s z4n{*B!vZY(yO&t~Nn6TZ7Wl6^qT(eUiPr?lF0mM{|N3*`ctt*E|CfGM+J8x3?poZ7yK8Yuad+rTzjyCi@5lSYtRzF$B$=c8oV|ey{T6DESL&My zg+1Rv@q9d0&}Qqq8h>mfo4ufN%2hhf-!836&T`>^(ut!oP`PVwOTnUy6*qtxgM^2X?LRR1zl%0+B!N zUJ@sX6K?JJM#3)s4S0bkv2t#o$H9|c|H9tCim9^FRQ3PHO@#w6Jj?fAJxKG%AmQd8 zt_vPf)ZT*6F0Rb={0|ToX*|YTPcOzVS+I9~Re*MOc6PYwC@Jx!N42R#rO=g7Q2ERu;-tIjxdC)%W>xrsrYGv>)i}zh8nMA9mlPDMgGmZe09k z-YW%{2=;2DCUv=`_SwKfkNK}fC(P3^W^Mo;*ok&YN$meO z@)Vo`?!Q5_Qa^(G9*g8v0ZH|sT@UfklK3#-;t*R&SzQLk?32U43YBKhRXd&dzmR@T zLQ%2*?_4n-CM2$ZF%gW@Mtx3f)FAJ^s;~POad~LHh24jDjpomnBoYg6gwv+!nk#+b z2;Un2IqS851IL^I!uZ(QTFq6|K|NJ4n$qK11FJZUcsj+Z%V3WEbU8Fj;DhtJDP~(%>s+pmNi3Tr7R9Ad+7Nn z%e&umWS3*ckYT^FV^1GXse*CzQF1W0i_7C>X=bm^aS}bVR{z^HS|h7w!6dF}=ik?b zy3z4vEw&QCJ(JOZQj4QJzUwm&=|!h?qEpvD3*NHV-Ao7DzkXxA>Yc!;l6aW z8{qHn#l0u(^KXk%M(Zy4WV|MkjX2mjYTszYZcyQAf_FuZzw=tzZ~YwR_!jf9glTi- zO7Tgu9qv&Ul}Hh2mkDc51fdSCGUcj%v7je|6>@H)@0A>LM*)3O4g!?)Pdj(qfq6nB zb9tj601=4^Hy6Oc4>j0!C;`Xrxy5OD62@>j25ACypNt(q6l;R z&v=wJp;Bnp=MHeK1Foe`q%)f^jElfED!70|5&rV;{lFnb!{i@a`4?hGOhHnE_+M;g z(#pFo1IJeua8ngj*#RC_1^@T|n*jW8BJl5Mr4{+_T?d$X{z7Qpg zPifOl*GxI)d-^;xL)9xSBYohkJq^o%ol++47Gs;<^;-Pvxe?aP+NYLoCE)AmmX2$JX-dy*O{6RAadPDLNX(`KlqM?=QM;Tq=?zt7Bx~20}UHD5ms@VNXV$Z~8%g4!(oEtE@VvMZnX(iQg2!-EQnZAn^dBHp7*Rp<)hQ)AadC~pa zXypnNmz3)>jNQH{9Iz9gyX}pf%DC*5-}kQKT3;3%CNhH^(30Y$$Or7&8*vB|gaz=r zQLmFIyT1qwII0SSzciq3){osd5YsoDH8XXymYgY(i`YrRqjGA_Jz*1^X@pfn2nI6l z`@$byeCr-Sbk(mhPmtD8xd5C zU2eOQwcx?Usst_+vY)}9 zM-ua2O@Mrh{aF}U6LhA>PsWR3fv4cjG*M&QP4w6&)O)4}MO5E?s=@bJOMvM?YZfWU z5v6G`=uX{kNXI~l7gT$lF4uY`8!0#o*|X9JUi9Qx=dI*SS>ZeT&I6f$t-b9{#^AL2 z?5szGMA*Mcc066}SJZE|(7TPlhH&_d=;J1Ez4Z}yWlTSVG0f>md##u_dS2bNbs_%o zO2b}H(LPd=+|J|(`1!9#qv%WtvGt?( zBq-|65?XZxz)E?!Ya+rvbgmLyrz+1sO7L$%|eE;I(Kwwe^2sbC8{ zWeo4wEO~|P6NWV|L2E}L5{dz3N`3};R-B3PIv65|16ZAqQ`*b^_+!J~o37^>_Nt|` zxs&C27%E1mKS>-JY3s#Y$EdT zY*8Dxg1Gki(ca{RELc9DbYMULGMy{!{f;1>!|6TS2izm2SWw`sP*NdqNP`U$UYt>P z@nu3=zd)S><`!9{F<1L|7&DK&K21R7vChf!$W8S|6}hD&kW;h4f|#viue<*~K!nk` zprvGqMV^P-E2!@Pq%#R~{%JM;IG1=~(ti+qi}uyJAY30|j72dt@DMnU<*sy|yE(B+2bWEv3qr(qdzYq`m2RI=RJirRBWnbnA1#cVi4K}xhJBXUswAR_K zHWJ&6ffX%M-!+sHQ!dJqoDuJJFErV!$K2O73cdBv6rLFWIbb;25^IPPC0j!I zjLmG7gNp1C^jS8qa<+Ph(+uW~%|)2`2_-+#wW15e2V;q~IUsaRN_abOq5MX9QAP3y zEq7O&DhTwRVq%}A&51A~9!(ai zP3S>~SWGw&#C*j1##6!Uolx=CmZAeF24^}|P1FhwFJrf|wUummbeHE|E5^1!>_-E+ zj5FF18O6~eWvRd??zkmLMP}a0F0-AF*WQKu zjU>Y*bbxaQj5aZW+Y@Q_joyB{U_xu3w;qj#vAfC`RvXXhl=T>YPl6$0| z`ZwRSoYwe$4Nov%r}D=`VQ7tvK8b+w#MWizF-|;b)G5T z7A+@@I%gM1peRuiduzn^H^om?M8YY>W)ctbyCf1^GtBM?Xr?GyIF99)?k|2#k;2P> z65PR?X~Lx=-;8nQX5UOslzVgEA zz;>n*wx?o~x($T8K6p-MVuk`{(z(=%s`9W3@2>uF@SUf~=9`uk+=Lt&1zO8P;IkQg zKy&mKJ}K9rTO;IVJYdJEZIRl)=;W!G!GLg_p~%b;%)-n|nnTO^;0bH@$t!sf2r9l; zVih=)zlI#D!NZQ{6<+q5CZXJ_=W-daHYUdzXk1ROON#uE5y7lEpU z?cZ_SagVgKW<8U+ve&ED>-#_i?0iI1Zh&+GL_#TG(T%$IBSPOnV9sOE#C1_m;P2Yk zxByT^9u)uxF>!$nyyqq#Wv1n;RyYrk8jbHt3nGOlA#<%EPyi?|XVG|ainkpJG>`;) zFwqZ71&g`e;DpDxD!dAbVwv6gZxv~qbM@-K$H$&BMw%p%mPC6bKzQP{V)-1oyvK8= zyq5|Cpr7p;_BAOF@R=LAA&@(4qA?s>B)zJztppx5;#G2i8@_C^ksI;oXm z6y>T4C;tIM0gncCybZ$-)qZCOHWA%{UmN*?E18pIPeM*UA+g@gc0Hee3vyCA>J9%% zbQC9aIZ+|}!e_T{Lgx6);$ry_XwWID_9b=ml}0LX$RV3}CC)Xau8h+7T3grU;)kB^ z@)Mo29-Z2I=L?hH@#MLDAC5?>j)+L6%ohhQxt$Mm+oF`x3Tqc3DTD_fH1ZI!<#t7POYsrf(JRD$0~v_q4oH9 zqYespLa>Ab?0CQ{dw+V>A+8|H5fbhF$ISE&kTuA}(*+wu6FSIC12m8Wm7ry*<3(>* zT;6@uKTd1J&yXHmH`zYbu$>xxr+U!dP*xjZsX^$f^W^H#R6erWch~UdT*AO}!(C0o zEUAt=3L1tdv3`#yqi-j{cXa8QdQ+KF{m4-H(yBxCBZ-`E%1%ZwtWvH8At>~>5l-q`%9HE2 z23Y%!tTBPDUUh?>)0E*Vxv!%+VeHP0K*ot)Ho@hWz+4Ir$A-nSUBBgn+Ff7VDTo+h z;sXSj^}Vr7uR(3Pt#wEPwePcatzI(~$j{W$)(K*=nN@+%hs5a`WmHz89 z?Ef-w^$a<)}#f7I^T?sV-C zNbG2Qq-VebHGHzE_|wUY;xtOQ+~$pOOa99{xSoID(U}|DAosdgR+N})hT0KN0ZJmu;yHI?44Z`&(tfoLK2G|%;kGNmZ0VIe=5cw4q z+p6`Zc&+WdbUESrW%D5KV!MhN%MNvE9eJu+Qnn{>@KWa+)H-_e@)@b-Al!=3k2bPH zKFA$L+=tlp?*VwRf#cc^&LZiJ>pMh9W~t=f&Jz0S6Xq_WIfUW?%7f@lS`R?pLW~{j zoxAuisM(&dd`YaZa+8h3#z|Uy(s!9T2y-6bu$9}L{Z_bn?bg=YrQtW~d#L;kDr2-0nI8Qf#6!AY4;56!g6=F{ z89=awFr})(4$^~e@wp43m!|1VRgw=FsGF%#*mPQ;GL)ECIgu=rJwxG_=8Nx;Khw5! z&>VHe?nTjgLRR{vB~<%h@0K)>(Ze0=N}z2Y5zt+=?B@WHdUoS{UE23%=o5boU7a`y zr8it?Gi?|N73&wVtjS4%c#sQ;xI~J4Jhuos&YZB;1@NM}t)!KN0kcJ64&vpT+nGHp z5L-~Y-Z@C0V(d#&80f_s#@MEvi}^CKTMZ}5G8#qfEhn%|UU->|e9MS7gTw- zK9TX91kZsax6+EFZ&6$oc9XqXsy#hTfA(La8SXEWR6c$@2F_W(hN*hxq?Jfv9oSHv z!+)5BiHFe3C-(@;lc81Lp85_Nd?&ckqXY!&;wT~TnIIOxXJxg$4wS@OP#9AH#L5%_ z<;rbu*`ZgXzCjPFZ6Udg2(p&-%Oj#<7qDk4gUz4HYB-M~poWi~dUk?{n4IVEaldrHT_yOulu>?lgxyGtFT;-s0et*6Qwij7XBoWdf4>@^T4pbhs^2+p15 zmdk(H(|C={mQtwgC6xNSGz}1{4foC`d-&QUE#7l)q#1Sh6SxJ+&xb!q| zd%MuMcwp=~V5U>CMT?2#7ahXuB8*rZ_V=zt02;Q*l+7CFAPBbYq5aWGBb!ia%PIh} zm?*OCTVqKD*&a6}DSu88N#T@%--7$cPmmSjoZ*9x%U4_=vbstf80qHqDku`{zMMms zaX|=VatL4F7iIKZKi(Gcg(Bd(KtFJ5X4{)j2y*&T;H1+ukRLbfHmc7a`mW?sQ#4R*1qh*dw+iXdMOCL zij@)nA$QSM4cW5jj1W{wIlo!|RCqhN$yu1P>e{Qyh!qkRpfKdFA)a;=R^=-`s@e6m zzXd;O7P;jrX!Ig$Z81R(4xQ!5t)m*PA>Lc0)AYxM$76>?$J`I+cGdSH#fN?o$m#L> zV(*&LN-0N4(F^CzFMeXcW4Srfb;|;TiT#tr&`)p=wBK7Qe_u$bfn;Le1#oYoT2`b$%uxoyP&r_`-KCHohOM^m;8{Nus{>R{cgKm* zX}ojOZR7uTc_o&#LePj!T_4v*_DT5IKiLM8Q+-B<0Fx5J!Tv`8{2%`>1SAG2`WGRk zhATtIfP{iig8g&XyUdFJ!#xElK>CZ-V``sMb_;x1_;+ym-$N6J>>8`hv`-14<4(;4 zwxN0v;WYZGUC;hQ(kt;7uJiruSe5o~nodO!^WQWF(0LkpjCM{getW3O>HZp>f}b=h zNX}t3AHQeh!G_&|JGBH$N9NKx8$POx@|vISu%V0yZ~1h|<6Ew!{*wFPFIYG3pFyo^ zrVcf`&I+~H>^8g4TDHe;Hk->5x7Tbo>wozYZ3}(~ewJs>%*qZtH9*e3&TOtS&6Mwo zvXbkMHM23YD*2I9VU$7QvEV@o3Sts3618L{b>=slohPz6CqS58pdcqv>)-D49AmJD z&i21L;si7L-46!TXG|`d{fI4D+yl*MWp89G7g=r=Jf%;zLG7v=r*f8Eijfq=A#70i zeSe31fqsO)K-(m#5zz8me6M(QzBfOaS<34qroH}R)O%nCRQqn2N;_WW!_{?@QGR_l zW!06Jo>_xVu-+6BXLrQO97Brmx}DQ%ot=e32RG}sfd0a+rMYuY+IKJ2D~@N-YU)byJHJuBBTF(p zX^GlWMnY*Ouqwf~&0zm`bW(1rXKGPmf@i~#$2*(^pRv-)TqvGAIy^iA?bEWx27rJEV;GCaUD^5HT%CG%iP-9&hIP)@C z^XE8b-+$Ng44c#Z@*h264{qct-ULc!KrL6v@DZ0%;_Ms!=ype^qbvaub1I*Xdn7m_ zF0jQ+p}dXMn`5-cnM`xu;`S#WtF)7Gms)}{34@VIsW~Go;J;^0Pj8xtE|B|8Pff5| zjhd3|?J=o0F{DqBrBfVTpCa_BWFRSPGO~Pz0x|&8<}x@YuU|Be_{bsU-P|JF%re0E z&8+O0Y*rb{jcQz&Jjdh@8c|olt7foNpa|;br(QRU{iD?KMzdmYz z#1KSFg|39yH8mwJ3qun;s!q+2zez*!qx>p4rsT>1S5k>xh*y3in5>o2TXiuvI08|y zj5k7t7MAotSIlIAOzTs)tqIeA=Lf^cXB=ZtQhpxaX=tL>P`rNe@?kjh@D>8(X_kA# zT^()x#^IeksMdUXO&rqP}@E zI57wPcWcoovKGilKzKmw^l8!X*_A8>&hL_yM)XH&IvH3MZ#FiT1n4SPBRN3N3H>n9 zfzYBsKU_1ZSxe)AmI*P?`=nLDNMMVNE~`LaoDI2y>VkRGWebt7ti0GX^2fZQdPa>J zLY3(F2g2&rgV8l$$?=cHMS9Pkpg*m?O$B)3qD&*F@5G3gp+~b zk2jlAPxbgJ>k3)4 zk{zi;JgMh2(EMEfGBKu|jz2QZeqPomc7}X;^A;L4b!7V6ZheMau8Xu#x*6nkO>}LD zQ$MP#C}T0Lh7f+HE&gp2ZEzmeV0LnO4}(_+fT z9#_z_YeRb|N`0HQmC(j%I1*uVrP??>0kb&L7R=yNGo>}Ys3B=~Irbk?oC z#bN%?-+nUkGgsn^<{UR)F$=$lqr;kZALEyvQqN7PfNlgSxi%N)5pHmnirr5YIg8>6 z#V1WBAuwZk#wo*^G#Bn)l_@ou@FL(~CS{$`mkWtf-7;~N#c(D@v!4CRphh>~Xyl}y zsv=7xbxLw%-RGbBlk5|ST3vm!j1j+2Dl~X|2@rcymusRPpb1^nHN|y_q8wJ&OEc4E z`7tL%&H2iY$H|ghbcAPLFa2RC$bU8O`iL+`dwKctWrr^=Pajm~xQr%$?9$o(K)9k( z=}nQDC7@Z-F)2dBWD^wwOz4LbR`_x!*hrw{P=BhNoypVShy*sFLiwKL)*TJUHu>WF zh6SCu%RaX!P8Qh;W_wi~TCWF7Qy&@%(!omI00GM=v-!5d6#_8}r+6L<;9 zGJ$$dl%o*`uW-yUt??`l7L#}2pna_rc(YEfs>819J7Q^SCr$S|Z&QUljzs_a)9C5( zQ)yUPz-ot8E~A@xlMLe-DmK~!(o1A(8XT?Z5M*W2^s!<+aiz={Y>Bj+#}@J^v>K%l zq(#2eE5f1aMnGj^Jj}ha?Hb5W{5>Zt)zmA(BEL{c$;8>s>@wlVmF8|j3|2kkq__(a z7rPUhmn=C&&%81be5)(!@pU3;H$z3q&Pg=xWsQfSf>Bh8vQ3It-HSru*7pYW?!ORS z??2xqa*At1XT5k)1@x4vS$c~!!LCg?1)2xD**F~4ArcDg1xBt2uA68izZ4AOP$10j zV$;JH204w7m%_SA)6!rs(O-E1<8dqH*<`;(IHxyrS!_2k=Ax=*v!&M|Lvt8u(E5oz z_g$6b^hebEWCvgCRwEriZHcDnpUWUON*2;J)1sl_pAdt?F)tYOTNbys_)+AAvGRzu z=@g^6(cR@e)Eg<{k&(;VReH~XlxC)}T9Nu+P?<__89K2=g<5iKKk?WS|6*0X=n53P z7P0We+Lq#FNgTA2ni2Y>bwT|V=5>4(DgUXUSz_*<>URZ$qD7I1qG)JUmeOJ`!z=5+ zF|)Pq(C_?>m~R|KHH}eLCvr1NjwJZhU*S-F_MB&*J++~rn88Mh^lj75JiMnaTiy%l z_<5@QgmM3(b*Vx0A})J9WM<8gWX`*)T77sE^-{s9$?5Z3PiN_=E#a?YenkjBal_jr z;M@ytmyPuSs(PxJC?YC-v;vc2e?pjvWClVqY@;bT6*Of@0z3LAs$1GM99mA`jhJ}U zun?4_)YM){Kt9#cb>jC{l#<;P$|fd?${1iY8Ekw~*62317?H}?ksf)%~vXvv%$##3W}o}J_AX|_>mn9Bxer3Nf;W{(P9?}aKvFW02}gl z6!`o!R88#hAtf&Zj>1bb#@C*lSbz6R_YL*Kx(vC}d9Tv#fPKq|Jf*v~%YfuIi>Q+K z%o=+0#2VrgCtz$N;uoGeV#(GH?10wr2b6>I6pKeisnJa3D++Wf6=akyGL^k{hq7|Z zCDGZ)c$7>{9iA$;9E(`8;I0-#(nq2ApJS+aThz+t;k5=9h+V_<1THK$IBZ91Z0r#O zDO_WGlqw9f1aFqJ6QgbcY@Tou)-7TyI{e{s>+tN6_xzY=LmGW1ZKHmWx&X_*0t{*m z?|S}h6MZ>g46MjV%5KTU0du>l&95asqndmEQY@ao%4Jo)rv+%%19KktiVf!4xh-<=8xa$$fqGM`NhgVyZJ`fTQ z&X~C!VZ!iHHwi^)r>C|_b+uWn9@b;_orgt*^Gus@3ieZ!!ivbuwl(}@FLT_eox)}J z^ie*(InG|@^(M4!^$vS}ngNg;9DVBj@#Tmk6uF*A^8@QU-5z)fgb3_?+~o^bgzVUg*X$=6)L z2@@^l!s=GNGkOtCOriSS5#b2_)5hGIJbT^>9i!7+7*1hCvmn zGj@@TANCOeCDOs%GtJ1=s&pRZzBw7~ElezYTbD;u+QH$~c%*9h?#X(#Z%B4Vjx2Svvz_K?JHH zo&!ucsMy$Gml6QkBqIbv36))v)gy{lY>{80$$*XUHB$?ro*5g-Db?d0UV-9XStUC) z5~d$kx&V0a#kzkQ1K+y25Xmt~jCkTX0RJgeKt6S!n!ld40xZd8=FU&Bv)No`FG2-% z{$t82;k3VaZRXs?Ki%!^l&Yz;7V#dKhwzmSWoxP=TrJOcp0@HSV-R>w=EA%RCKEKjJ{ z>|Nm+nbq;~!uuOWDyhSg?1%`!^mM=7C|xr-@t+iy8lB&^FH&b(6UkpQkOydmFH(uaUy;auR?@Xk#_?zuaF8Q{bAo7LnDMjpMRDh070SB> z2CCp-K8*269@Ps$;D z7FYI4XF=Jj3q4j1jDcMYMjRC_J~w8LBEs5$V>+WjJCRXP@Xkp2(XDK%t1R`QuYOMX z9?BAzNmw`MLef+)g$pj*#6Epa3MC6YegZ;tN_@KRh^W_PNrCDtm@Y|47mD%D|E7E2vZ zt`bt|uiGU!+~u`>B%1x~&I9#oD!Uw*Um(F8^D-ymMoWyaiGB z&vK4c?6W?o^v`=8sc18C>z~32|72Mf{CGD$0_~&n)!Tx4# z`2l=7%5g}3fRPF#(TNnLVjY)yL7{q~q~S7=rBUJSgCL6i%%ELg4sGKX6{?yb>z6q)#UvE&qY^t>Stj(?9f$7i0S}tcHG$0pcz#M21eK9lQygOZQFvmYN`&-|XaP zN%53fDpkD}lAR6Z_AV*v#uvxLSrunPp3XQyGrdb90yv<|Dyzm%fJ_D}@Gr!Oc#zp> zZaqrq>?NYOj5K`*-70yNmassgYJYrRmy3`;tgAIbX<$I&PDUWQ>I+!9C2a&vJn;qT zWGLPK9(jZcJ3NGc`Q~89Br29qP0sz97G-X1zlVwdCdt*f@p7n%KW3c{+=^3UMdyenyS93`12+ zIKc`JA)Bt%N=wI8Ef<3K7i`mnDWV){?F#V1(LS@A^F z@qaMI1L5yxn=y=Iy-Zm-&)!jN7cJ>+DtLvUF-^cWbtKG!GHzJ?Zi~$V* zn;Jc46o+_y8ac)xm>rk^gLqT3{{2(??&;AF?sZz?%?959R*e)jBYpv8owN1Ww{8^o z3+Ej>*S(>wbsoNr63#o;ZgL&`9LlfNer8jv6G3!)iaECUD=Yd6__M}XZBJeYO{TO53k zNmnRdC|wez5Z}`SaH!T(Vt~yr&^Ta2D;`<%|UhKC?4kxp;CHV$mujj9!ZXbQ{|$PK=k}d& z5avu{F$$B2UQ(Q)1J<(i}a*;LIf>~a=4JPuo9e16zAD!;}=pY`F#2hrT){c7Ov&PXINW<=lIj^wFYxVdMKy99cGR- zWqM`O_#2vNb3Nyd=`WE2Sj=v+6SKbJ<+`!yi!!8z#dLF3^E2?}A8->a6-AytSrZ2t zb~8JyMCL8qna$DpVkkKviAO}Md9`CsnS!a95d#i7m8X;^|Kh$g}bHJG~{ ziC;W_J(-&H`cbkcyt~C3!ouKjVJQC5jxF_@==dBJUekLFM5Lj?XN0>O3_Xz&aV}5j zO)tp6^bG!^0roeP9x9Ou?SqLmu%OSHuz8Jk@#W#L49k+nS0{_!zRYgjXsbPF1-H}) zH9&mpR{M}|HWqP{bN3Q_6b1Dca;4k3UHOa=d0S7@9Y(VC( zvVi8qgtxvp@FyLLAYW9dKoG{@r$znztw3M!9#am>g`T^5MG{ z0$5u32qc7IM9_peD+C-vL(;E75Jr#sT^c;o-rhIZ6-pSE({*y-5;OaOnh}x3#CO9R zr%-rU} zh~2Ptd1}p zSThgs33B+Dn6c_TbQ(U_(hk0ME91VyI->)-nCotWp>eFb3V@iyj*oSzua$B7>&)OG zo*Y{EWpLyPf!VQRROzmXojg~L)=n*n+VLOm*a(c11FP{7J^(^5J%8hQ%H=alQ2VOQ z_#5jLAMW{?6wU2=-7`tes*ilvPkKPTH3#rFODf{}!RUf+NmSbcYw3|WbgeIR>ncrs z5bQQ+1Ul3Wjg!1tDpSl*f!b^{4jz$Ts&EU?pwq7E-WtaE#3j~tbi_ZPH9oc+NyWm+ z3U4}-(&;5P4cS(lJNQ-N<6tne(y;{&NO7A#4pk$)WgPwAC^C_`9^NCiCBMjqR(L! z#>Fzi<8Nc{CHk}KF}syWjNYcv+AW*{YStM5`3Gqu<6M7!+I$$P#O@sYh4_}WyXc` ze+Jb}9<#ltgJ^Or-F}&~-TBWmE`Y!Fr?83rS|tQL!0gr-=tRus_f)pL=VnuQKPt=J zaT#fAsuEe&KVw(ex($DjRMG`)uX%M=y3-?Vy^u?9OlvBBJ za4rjSVNj@6zuLhD%h+3~8z>Hc&z84i;Qkh~3-yTi(^J|{J3Wx=Q?x)i&DECKqCBa) zUXxFvEd2yL8>~M#;o$_|$U%hqj01DQ#<4!m+~mfqBTJca_*Gd8NsJ#vzDRm*+wW2m zR!v`<%==zt=uugk`quYVS8+Lg%AE+wEi#?I(C_!=PqP5m=|Iu>2R@sOPlCBK^%~o~SfaN61ruU|D8y$6QN?X^AswnoWGz zt6j3ZkKj_Tc6OCGWS7>rK~z?+smtS(_<0lk^8fv z{_1^$DDoCDJFB8|-BhVOgOxVBw`(}fao7X$r-{kS0QJi&sQwF005R?wzx_oc>Wj|m z9g9usx))|){o6y;CT`Mti-O7dA-QsudoZnH#AQgPjeN@D-6j_sxns$P$35-2 z>U8`88!jQ(UsDa){M?8!_nlj4Vw|tL`qPSnPzkaZhG%E|6qmbZTj z;d3%g&f%4qbv~Sj72;NRj{a~)3FIueT-qF)-uUN+C?cUuN+UV}hF2OQSh#d3HP7Z7A$5{4hb;{}@U3rJKHL zZhU=2j`_7RTS3H8%S^13p6%497;UP{6zQTcbtF!$nYS><_WH-A@YG1A&BS#XIp$-e zBhCD5d6>M8hZ75Dq=sZk^P!IVnTxxryQyN_jxZIq3-EkDW>(wlk@sMe^m)QQaYJH8 z(cD_ET4F=rlVxo6FNAj3rqAl4K!wrZpBIyv_W5e*ndXp)zYyHVbFV(#(5zIJE4%|k zN6mmm7IH&YZ?`aMy!ZV-g(6*f_h5-whpRtGZRMNiXBhS*rZcUTAIe5twq_ns zR~^y|C@&0cIhLcgKj^uL#w<3S`Os}rR_)#wt^VP|IWtkJVOX5{L!JO@yDuoN>Y4YfL z9CHw`|Hy7nkIOvACmbC*hF85W!0N7nebOJEIM6XPtQ>CXm^bfxXsG%M;k!}jr6%i1%rrZs^WqAJ*d5zwFiu= zPo54X!#vQ?L%j=rx83WH8RQ+1fc+whK4M%aS-h8|CfHPn+zfsoYo#q*{ELiu+jZPN ze@PQ3NQz4fzo(|U?5SkPGAAdwLq01)G-Srx4z9YqL0RlbF+aK7BajIl=@OIdu0MQH zxQ;ooy(36tp@ACoy)9ja-?1hZCMu`{v$2#yk1SL(5HeVdOf%r$4E1eGz%ZE|P$_Mc z^-?jskO@0_Mf9ugX7Ds0f|ot}XIXaTKPC+=lx?O;ChnEWhe{3KrUqN9=ImBuhbKFw ziV{KZ=yJ4d#STQv=7et{dOPe?b|#>MEYcfhRRr_N^!cbJymV(S8C9iuB>q%N=ruu& zo!Twd)mm#LMo3uQp6!GG)7E=HHPtl#;{if%p*Mj9Ly_J@KuSVQq$@~MnsljxRE5wx zhR~}tDbkCeG(iyQ9i<~k?;?T}@qh7opZELz&iRLXE;)BUcXoDXcXoENJ6rP8GU1(A z8$sO-{$EV_!LBj)eX#~ZpwO8#b^dpF%6I2j_B2v=-vcY&D1gHn@j(Q@x;ThK!x#!5 zO_FPZ!s75kV(=YK$dK+b45?(gN$FoOn`hGz$}*rz~XMJB5CDTTW@6OdHU zzlgsp?BE!1rUQKxm^Q&)Y9SZ}0-@lv2sn_00bSieATWkL)0sXK%+rpNng;+75EzF9 zLqKrg`U`-!!!aPPdoWR2O?n&-cpV7`A>ddL7$5x~3QO>GFbKgd8KlKCCXNF51A|DQ z5K<^UfV}#EEvti(@NpCfr-{k5{YwEu3I`tj7Xag;b!eE?ZZUEYkMTmmF=!A50T2G0 z1?DdWs1&VJ%Gez|&Ksh^z*|@}6pI35NWipc@IL@hF1}OB;T;6$jY8AAXgHP>j*kLk zksurZ{!4+ImJQu7hEI{{T#tv31_cAm1FV9e5H$EN0A!OitJQFfuL1yO^ARA-6@7q7 zFi;#E;);Z7N`^Ba7(80%LM%QCSjq?mFgPR>M+*N3@G<-fa0f)|oZCx_f(9eNv>~4 z0A%qGfYuaUpWz@%>)g+qC?K0C764h92NWEWjiR$l~hy zhXNLn=?rg2^JHq(2LtT{f(N2S{q0u&0&w`_&OGf}^%+`4SDhC}3dW#-whjM}G|_OJ z+PHHyDLvzeGnDNLfCml+x)mP$zs1C5i0rNb+lfp@@X1#74OOW`k{zX~xFATkH|h*m=;N}>>;@IL@Bz=L%?#sS2N zu5Y(#&_m;{vY7cl3IITW5*}@jBZH?v0BPc3G+uJoPW>-HDGCfucMcBbs|U112ObZr z`u{@#o{SqofpJ<~(^?Hc+l~S@dRZs`PZoIB@gTG)aEKPT-5CH>qn&H}@j{>Y{WlA; zF$bViz!NRufCfu+7DYSPM>#cgn*R&HXJo!o3visnKLDBUmYDvwa*m6n3uK+Ip z@&FJ50BF1f-@V%7P%Jl&^nU@aZRgHyvq3_&HwW6Lk7sw`yiTp@e?V>jM*>*v zew_w{4}1vlu0B_t0Z>3RVh|WqR}_KNb04+H`@6~=NLPfcpQ%LA9w<6GsU@Mmsv5ok zJt2qs`%G7Nk19kFbsKa`H{5Sk`~$kwJb(EC28mSRVp1FDiEcWIAD3kVcfM~ z<(ruY(edXEuq|yqQ-}oCft*XNNE!Auye`20`JR*J6!xt|qzn#@O7VeogGoHpN1XP& z?B?Pf;YoL($|MjdB7#PfjG-r#1y3*Ngg&}3Uw2FQ8=6w#~_5+Uc(-3_2{QV6<3)BYCw!PSBYZAC0?wwf*i#9u`)Fg0eN1QMO=JAH&eRM=E0Cz>lkK z+;8*3(VFT04keLn;tBzd=T zK-RxrEnENkaQHZA_jr_5GJL@uq;6(GM_-qFi6< z6KSN(^WIGrjrJX5p3`6za)s$orJiyX^fe_RwYC!>8E6z3G1uW5VHyo(36Lbdd*lb_m`3ZvGM^^sBvQbwOcE{Xxp6&Qb(SM>;Tt?Jol8kcgDTeV z-yuTs5M?bRf^HIgg<$!F*q{&YK|Z|+&WnnI_U|kykHg}A9d+uHn<*<@#$} zPjdiu)eXHjqA~|s5Jr(OiGWJo8D&pe z-y2`QKH|_p?uHkR4A_Bt?MB99x|lz_?T3r%DVx%M(J8$_(*Db%mz&e)fmZtU9^8rs zW0Ogh$Mp@#n>CcS@`EUt z=$&5Ip)BzbyZt`h2IdTRM^Z*baiq%qkc!ZH=iNInWm2cvQAbElobMgRWs?=TcSp1= z;r80%0d0klhHxouZpe{Y2Ho}1sAyCUQU4^%_iZI0cxUE;#%LDR{6;AkEOw8xu(v%k zP(I2mpM}DvF!;J^fZGI&Mc%&obm!IP2iB3n`sH0R_r0mK_O*Xm9$ zJy#zrg>W4*l}D9~D$R9?CP!CeKlPAVbiwk~SO2De)gTHQqk5PmG!TY5BU77Q66V$> zC52q11S$@j0wV|Szas|-pWyF&@ZXU`6rrn!%uyjjv~fvwgmdExx(JUz9&;!yYo274$6P@lN3r* z5vJA1qok&N$H?~CVYf8oYoruO2atz#5EcG&6QV)+H$)FQLeT$?JIhX6_&GCSwcG?M z;U{TdfwAaaoZt=(K@+DoxBMFoa-vA9=U4m{5^(Ya6}M=F>9{uu+DrL(3aYav<8r*Yn{S3ivr24}Yz&hgupp-0{!zUKi7O!gu>H$5{yon0?H5Z;t*jgrTi_*_-j?|(L>Y$d_3+*kxOhYngwIZ#K+ZAi;QDN%5!}SspAW^i{iJ_6fP>GF4K<9!u)_puvRIDF2I*b@}m*&nJR(u@%ejYO7pJ| z0eNkU`@%H}#eI{d9sYnYxuFRp5%e}RBL>nAdyCR6D?#{re90pT=jg|j9y-r7mOwBv zO{ERZskn@_P;nNDaG*Fnfh7OWA5s4Adn4)f59#7~hT1h^Y`cWJQ$w|tr{f5O$tL=o>l$uBFxG+Qjq*X+mSEykcd*ngmB@q)*+}bd9!Gvjr(XtQ$Dx_Z2amU; z?7BoOC*tBrL&ca`HxdMeB2goWBC)v9mrZOU!}x6(&}{0Y9+sBIV4ecT0g9Zb31V%>1CM9TwS)@;r!x`(N zK9g`~1S?}Ha_N(4j%65~D6Hi}ea) zXn8Uv7bCA+`ZKd?c}7X04{&$R9!*GFhTPgp+Vgsy2JU=DNF8#)TuA9tNH5AM|}gwJr%kjIhRS>6%6C1d5#lj`ys(s+gBqE)0N5pZYw z#41+-8CKqjL<=9ka`NhVXc!?g+F{7u6|B?a_JX8)rPmObeo6gX(Vd3yYZ1~*r!%`( zJeI)=J4*}2CMU2Z`SdA*o#6^oVfJBNRxNy{K%SCKJpGkp#Fx-~dMU-Wn>6j>ed`+e~@rEPjnJw9io>bG=qcJDpr0m2-h1~*Ma zaWQZq%b6G5;=xz}2Jb(hp39ecB+pc%9$`B28X}$MY;Rped9bqEvfFb%u_vmYN*DRy z#}a9<2<)3Y3&=7;VJlv}Y1g2UwVoCI(m0dwn0Z!eD~vF``U?#QW#EAM73N8v;Tjn* zuVzn_gxN&pW+4>6v9N&8->(GfjPFhmT1~%Y^`I_BPG0L%K@)Yo4GE!7VeaaI%Qp$+> zR)pCw&RUoGc|&_FO^H-%-`A7^wRIl!>!-DobbL(VqMD@B_Y~H%?e*EHTN{hut=BV( zM57)F`ui$=XAJI_lai)&pR`EEg}?oX$b%Ud#0 zfUch6r(Zn{7KWxDhP4bo^Nk2q{ib=jTKJc$SW@WIAEs(CcrQP;bhbw%6a_vR;|Rjo z4>UoHKtp9U_5YJM@NU=~2!Q()0jvJkhoYKq4xi9oeycMX3R_!SrO=NxdD=2R{%Ocp zc)!Z&usirs>cq^h4ncDy;y5}&tEJy2`47j(GRh+Avg|%0Lsd8$eos>+NC=k zy6AZ;g2*I@tvR@Rxla$z;2{BVonACl617jZneQ3%$XgfcRoi3zfWWWhBZL+19e!<8 zTD7L>30rO+p#sKvD{SKhLs1duePdo&0gjaa#)m!2GuXYn(uhfZWQ*?+(ZiSR{eltw zE^cB?9=ECW_wRWHWxf`9?!Wo)SSX&vJ?`0%8OQ3a%4g=En)^<@Z)otg4|{lbyB*xB zdbU#4zPH)67d-W3!-Uv(hm&qffp=Q_e4=a38=()IZV(>niuk2`W0VNmGhv0nRH%KF zjnxx<*k!;P%S_9lgn57Om6z`9iz^7kbs-@7zQs+c!@?E``H*FH8a&c>{GW_uD92-` zsdLr7j~Q4h3y@&*Lt4P~5xL1}Y^2wUG&)5kA@T8|U1B#U&^2ZjC@7X3({fZCHHFkg zt%{qmuk~$H?t=ll$!=;YNX4kK0Y(JHEVY4Tx3whkfNLcVF`|Q9QO6 z1AB){<5;#^+%sae57c-xiWybOe(kc0F=y49Rij*%=xW@;F~fNtVbnE6L`!IBTaJIt z+pKshu3V?wS((8~Cd|rSbqqsdsn`9t3CN$R`Q-s);#s)BQ}8ogZ?j5!MZub z-rBsLyNDt_JEVNVvj6oi!n}+CM(?bl&G{w4vG5{h4YtDjeDW5(c=y^k7Lv`q14zkCevgaNS*b5whnWja2>y5{Bmw(}iUB$g2=U>5q9Z&v&9T+_X<)&|Lm z&WIHa8ANcqeC|?@FXbTy(*gBsQ|pb{)5XzVZ)R7QW^MViKHw5lbYrGhVnd@*+0Z z1(VeD{g2|?BjRqx3u|)EgpLYVQ{vYUi2Y`SCWmki zD$f~40ZOV6eh^76sHA8Kx#=T$*G+N+McB@i#_iD4H3{%QgTj}E^33K%7NYc!3+%Os z4Ycu3R%!O@_YDL4ZVMSX{U};o^R|f|&3}R6zSgBgx0&p?>irb9L>SgKa=@f7M9{+c znK*2!jyn0|w|PE5T62UbAqDWhcemT`{uH?XTv4(s=f1cByl-;ae z!Co{bC_x(ah?F94Rp`lgQWf}bJsUmVnuNEYnA=v~zT3oq%Ve4~FlH?kiV6s3(T@>8-~;PW|Bv{P)Z-U`cjEF-R>D}N?McdPgf$@Pa+@ocl{gznD~vCGqpoT}t# zP~jZbC^K(F%w?3e`>L!XtX@P*-%_z}$Vu!0TO#xiX!Z;69&dr8&KFZufi(6dGTZwk=Z`x&ZMA)gJzi=W8}Y8zUAT+V)SP;>hMcZS}C=c>0x zk^Xi>SX47EGc5aS)N{Iu(d6Pg8*+_Q-Q)J_je?)YvC{_(K%s1dc77=>*uo}{2u!qO z4Z5Auf6=^;@y)bne%mzT#O3B_hrDeb(N&V5YA|J#_JF1;!zeS7;%(W23oYV5X}bZO zbUv0$cxIQca*XNIHwB-VrtGxQ?e1--y-8vHKo;vvoL@k=>g~Dgt=)xh8}13w*PXB9 z6OeG_zD0h!AESv6?ch4fQeX2vG8Gle%k&dUPr4}~9&PiXf8eW>XRpP4EnhPoU%yw6 z_=Yx$+AtE-sfC9qiu5OA9qjdrSNJI{Zry~D6ser7hXqmYy&j+>Jl3iqjPxOQWW;!5 zKni2k#vy{{eJSK(>I=n0;4ock&48^bt#L!!*S)XV&!#lIT}8 z{N=*f=ZgGO&7Z;rHgV&=-A>_2SOi{>^Svn!=!H-#xV(KG_Ew$ZJ8MZo@GyZi0>}uQ%eQUX-|+v`0GEvfvRI zF~93`;kEjXC=rjYdqSm>*ju>}&3PSKNx*C@-40b=jYNC{UB^&ab&6>7k&vx@i@P3+ zaiP%_&5cr_XM0TPSp}vz&=7&_^<8LbVn{PFk_HqFpuYKB0f=97z0#$&79&Rg7KD_j z7yecG4U0`KAS1BMaim+KwXV2$NMr<82bc{Kh<*rI zah*9u6RGLOLCD*z>D)eH=s&_8%nqs|Sm+Ch#YQ>`*79@OzvHDvZ!9&0>jp)xz$qn{ z*-Wp=ru4g=vs$=-X^h2c(eyAhvxO9z7a#onX9}FAbYMrpBBQamAie9S&T02b!}-2l z;F~YySvmckCkYvs7gT$pq11wXwLfU?@eFjbvb69`W9^U}9e8%4n+EB7i@;om@e%*P z^|W7+^A=a#s!Iy!R?0)hJgZAqYzGhO1VluMgQRUaq&7qNt*6tK@5#@u2^J6y*qBsF z%yL}cpnHnRnKiC^az&Q>J8??hl+lKl=D8?fqY9g1Y-uNas7vNEg zgIkNSHyvrbp*1ioTKj|W7hAaHH~XE8e$l*Apg2UQ;Z{jzmU;vSa}pW=VV;9^D^+%N zWP|EzjL{62FS{oHq;GI+PrVgYs!_D3KR(IR_Q(ubMt=k|d5r;6nr`g0C__s}7jvz3 z(~R!YPEv z^g%ar=IQvVu{Vnt42i3)DeW<@OSF|y7HqAS0k7Z`77T^AC%mpSS?)FPGLnA`{2{z8 zf7UxFl2MtN&|$y0%BctO2Z-wc66<#YN=`-`1ag z`B|31{??GrX>zQ3X6rE$P%-CgLxSGfX3G znRf?PRtXH{zpu&RO?>UmEM^ql^0Cm;w^!a=rDJl7r;yU>fmu;wW(I30i`(Qr1@LZZ zXe}o){iMi&nlT@d2a^xq#kIW1$G3~r>+4r9yg|k7UcsMZoRaYS&%bF{RS){>1EvLFL;Y&|52F#g+H~8=uI4 zubFOvX5`+8QjUj7D3*{=`EaLfS~ij=LI_ZAcz&1WAOe1u2uV|OGk6rG0sj!f4bgQ5 z3$^<|s;N?affcjWPU@*PSSnZ~LEEHYSG0HzGo1lxAx3qt2io*jOn{4PnIz?-797SC ziG3>tpOOqB3%xBKdkiD98Jk&%?U|Mm*@9M|`F?pV1KAo1~WOOn(PPw%lD5AX^CCs}#FG?!^-Fu<1LI{I@&)T<|LU-o4v_66)@Ec=Z}EC3ZOJ~Ro?TQ%>)J!!Oa@np1qF*KiN338 z6gJi>YApq(CO9f*c5qj{A3@;fY{{Ei26XwbLMAKz+nrg)`4$3;6P^7+pDPL9G$n7w zhiiL?Z9hQyl<}CwS#6d(?9X1bzSzcfu5{CvU7O7veIb0O_6G<7^F(}3)ULP8qO08y zM40K{ks;P7N2poM16*yXvou+g(NzODz=$2`jwmJv+!xL}f-N63g;^rvayQ<2{dVm9 zlJ{V*hl0Xad{9uw;#WxP3%6kMo~5GCeBKe7a_=6K(}m3)8Qjk+_LG>+SCPA7w*%!S z*&_SUiWV7Ev1(E!b|BdeQ`aMUN9D~zsd@4uJ=9VS@U1*MY2}k$kN7e;=&!Z)HfXZ% zrrnn|%YTP+9Dso-KJ>T|R^VB*5BUYi3u^4I-& z#jAp!x9!h0ANTri=LC*>%RlriIByLoe)axHYa=XeHD40bD^(fvmFnD}r4e-7pkjS; zOlZqEi#FHs>(5gA2M{yc1w8NK`qgI$cVg%58L;Jf_TCR-2QAwvn))d+o(YXE7(~9Z z)b>dm7nt*j%lVLD*ZdaG3jQ#{jjKtTav4^dO|M6|UfL%%EtgbBXKv;LCVdSlVPrbQ zkL$6clp-;D`QUp4)Kz*>BJKxGS5puiG~;&L^GXpr@?5CQa-OW1o;{zrT>P^AT_`&8 zz24UGnRCFrboR)Y5wkyqtmyk7hu11W9_jOv?(`Wvsz`r#Mo=E}U3cmoB9Los#X}Nd zbdh}QwSn;8enaPc5*5Iko^4Mq_5Els0^q~IE3JIJ~-gP+w6 zt7DG=1B#_4h}88RUF6fpTxk4W>7ahGkJTVXiB{=c7Fl;0Qkgv!E0!doPECx9XlAtd z+O(&(oiMq7-W?Vhe^8uB(4d+-oe_+Sa7bUA6rWI=+>`$rm|)@)iboU$+rmq{O(SFS}8YsIf zlVuonqU-WydcoZcngPC5eNaPH4XcOe{vN)g73ts0ycmO~#CPB!$;+qy6!`Nqbk= z)C{4=s#B_|lJG@qbYogx5EO`*TPSvy@TO57kT;B#(d;8&A~uQmG^TxRM>wwU?J_ul z8BFpPI6QI}hV+q-@lNv_GiE2LCQFOHw7>aMX@6e#Y=OOL^Zm&S0ZD@&_m8qF_b}~s zrozEpv<#UMrzDh0&YB^@q0(Kzp_ty`zY_h)Zv)ZrTy1RDsOT80S;ri}#srSGx)Yth z(G_8;Yjm<&fXZlpLYS9+zii-kA+l>MKA%ODXRb#gH>)`E-i^lUx)$~~DaZHCEcYm5 zF2FZIUg0)`cBO-YH>(E)k;LS;ws-c)G3+&fO|^xhle-U?f0FI%?%4YQ;PC0%2A34r z)9brk(Xvthb(Zmy$QJKReiETN>CA|Ex!|nwi{bOo8ws|)`K4=>d!>N;4d~Y@hnGO_ z*OstDM2pq8H<;Bne0|*!q+6(R)`jxx$dDZcG{`t+8q)jHD2m$X0V(GK*hD@rB-rZ&V)g8&3NsMqyYGFjh?X2*h$EgPC8)VR)xd)Y?I7LDmRb5fmM74=H^a zdT1v^YL5`m4l?&-9)T(pK|Y%emSh6P+;~iRz=h!B~IN7xzyM4xfKK*MFBH zQbsnn3)m04ztRfMw%WWE4865F^B=1S4)J!uSLE5SN`PNW<8?uWiE)-rb4y&#g1;-U4i#MH`;X8 z-WpyX*PB{V6&pa z@AFzMFSF>+E8d=*D<=GjTun)Qo~T(ZKVAoM$u9+Yh!h@j6J=x}74h4L{ESO3#mW=l zV1I4B-=Wd1M07k6GgPQkmRe7gZY-I?H+1E1xL&>^Ju64uq+rM7)9})pdSgA+1yt*X zc%aJETE?}=qePX-4?hjVV;tt7a2APPlRQh=!okE&Wn;RIcVI#7et58&YGoMR1Hex} zWf2XJ#K$n!Qv}ImIMLLbh7H?;v%0=ecGiTXoei0b8=JPjh7x7D{2=}M*Hi&tpSA_8 zk=A%~z#8!@DyvQtXgiZ?OBF(wLF_IH_NZ@%Wi?j0|J)UwD?I!7j{Qn8-e{jm2dwt? zUs=>q?Y}VExP`u<-+DmH%p&RuxfuCe?!6h*TmGiDWFOzzrZqYHjDqTS!Pck1aB!r5 z2r!Q3dDg$dmF!cqFCROeM6|r~U~m<^*M9datG)CFwxPbsM%^c1H?_vFWz}0ua72i8 zGX8**AiG=n9-+$07{7=FFdL$EE>e=aGoCSO^HW4&+xl{@@AP`j!kykx6vq2i2 zVd4OH(y*PtI!NtW=G=4T_76dXz01&@7-AY&de)gr^4Rj5!@%A~ur%d6U{Xi4G{FeW zlpq3Qrqjj?EYey7K&N-GdI0#2V2SvE#*iiP7^tr8d?jS@H2!{n_ek3qYnqQy5ZCa; z(_`;29-^s%+;ZT!^q6#|1v~OJI?S#hpk!`g9@YTULelj6DSD%X<&zA{%w+~^9JfF2 zOzv}VGdi8sERcP@{m6th{ljUNNE%f|a_vKB>FjlaMs2{&99MFKQ>bR+b1gwK`_?zJ zu9Ekz6ZcU5jZGULqQPDVHqrhUJo5tmwJZ1uMR_7jQABdYC1Qi?p`?2CH z&fEHLvM7^%^on(3ITTKN%TDMQ%Z`V4ikIbD7Yvyi*^CV1#rQAnw7a963Rol?Qx30w zu*uz_d_>RZ*B&%qIe1g9qar{xsk_xj0k1q*lG3wXA?jL`3ZYa)TIH8QmGJ8GAq6%# z&i+nATfj12m#3t6x>RHI%sF6ebO{&}w_Iy?z1#j4+H%B8;KM&d^z|SY9Zz5sZi|m# z0NIYd=AX`rBjMz;{_If~eDF%njboIs^Kng3x^Z&X$CN>87BSGwZsG20FPwIyh{Kei zL!9Mkm}Bs$bm)^ufU=QOQW>zkQ*^HdDUKvSNh62&$<=lASCgHj-!LV(?HW05Sr68W z9e*qhQ`&6}bT;9XMIHVWw`6E?7#l7rZ;9Uv%JR4ejKu5Dw7vhmDRU@4h@$uUMHID}yTXiUZbhfd8!BpMX0CUopjSFQf!vfD=HfF7^Y=5E} zkV!clGQ0mV_av7#lL61!j{b6p<#*P%bD2-a0R^XzWloMg_IK77r`zAx1qIs4Tn=gc z&N?}l;XHn#xWh+4Bu3y#{RiZ+pE2z?7KSUHYwUKm(ahSOS(NuQ*9*OyV&GK?HdC6) zG0+^gxPDYGTKAeAZ&- z4=7LC{=L|0-|Mx*@HvrvQ}ibnuBY<;TjAu_%W$Sob%nztfRj+v84?QwtxMzR^c`>1 zSh?Q(iKF^#xV^*TD%zRYm&d*HyK(sB$ky=V1)Ynayx>SCHMlNh(rC?0SN37Qs#emi z9s7Xa&(n0cbK-qrt4LJ6meY@~T6S zb%SpYSBH1=Do;$RM2H^T|M0&1_EZvZ981yYm>V2*T6K3*=6mHmbtk z-TaHujlfYQCwire?ju6a-fUM@oZj!f^|NjN!I-3S)= zIK*@iFDIA!^1|bNi|aT0?S=)7m6I8b({^xYQNy>ij}##n;k)_)UA}#=53;)^R!jVN#%PB;f|JC z+GNJA^%HW^=L$8gdAm|iHXAR@JU;L60VmjXkd^K%cbS_vZ#4^BpIjJa?`rBE76n!m zskWPOPQPGq>+Rnrd9nW1>t`z5f7M(5(@UA*YqnqVZJCLFjU2_4K757De(aAs8*lE_ z@dyOGMZP=v#XJlA72IpbJ50u@?CGwu8pH6K=8w=pQ%yQ#0%KhW%4(FT|~cDHRKTP86R%?3a<@G;o~Udv&{OYvyC?XZKro zPI!k}gf)2u=iTV@Zw89cnNlCq;g!{GWe2`)Qo2KzWjM`H>b3J`apEuNKUDa`xbLm2`=ln!=r|UH}AW5 zHmPPR{K_tld3m-`8tU0+aJCx(xag3N?gC7KNj2NM>dkS9>o)7Vzk&Dyzc1GVT{MO# z&70_D6k@k;vo=vH%$oBIxw5w2mRy#v}(oCt+Ks3OPG{PP%UBV;OOr=WpiX#RorOla)Uc8D=_<5a!`G>{40m9o$@*Ji}xgAiecC3c09}t39ELP z@Ne%eF`ml@MpY5w-_-`WA02Z1mPQtv8{R>{%qodbmW1(`_;g>uzHn?f#VPaTWd_ny z&sV=9V7u#`gV4+K@`Kqm4>&-+_e}_a<_8GBPH*`dBt#2Ua?h7G0}OKEXId%O-IMi(tRK~g%y8~ pNqo^Kz-P$yDfNamNl&D%oO?~_qCq5Lm{(thE{!JWaQM&k{|5rL^#}j} literal 0 HcmV?d00001 diff --git a/spec/fixtures/files/contract_2.pdf b/spec/fixtures/files/contract_2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..deed7fb403be56f2275f4c3b66f6ff29e4872a1e GIT binary patch literal 19057 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 Qt%#RS4tn&5>fhJ@0|gN4b^rhX literal 0 HcmV?d00001 -- 2.47.3 From 3307f0ebe8090a85fbe02ad60f43d6317ed69bb8 Mon Sep 17 00:00:00 2001 From: bilal Date: Wed, 10 Jun 2020 03:34:55 +0200 Subject: [PATCH 11/25] update specs --- .../user_managing_appearance_releases_spec.rb | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/spec/features/user_managing_appearance_releases_spec.rb b/spec/features/user_managing_appearance_releases_spec.rb index eecca43..8dd09d4 100644 --- a/spec/features/user_managing_appearance_releases_spec.rb +++ b/spec/features/user_managing_appearance_releases_spec.rb @@ -162,10 +162,47 @@ feature 'User managing appearance releases' do visit project_appearance_releases_path(project) expect(page).to have_content no_appearance_releases - attach_file import_appearance_release_field, Rails.root.join(file_fixture('pratt_headshot_with_code.jpg')), visible: false + attach_file import_appearance_release_field, Rails.root.join(file_fixture('contract_1_headshot.jpg')), visible: false click_button submit_create_button visit project_appearance_releases_path(project) + expect(page).not_to have_content no_appearance_releases + end + + scenario 'incomplete appearance release is added if contract only is matched', js: true do + skip 'Will be updated' + visit project_appearance_releases_path(project) + expect(page).to have_content no_appearance_releases + attach_file import_appearance_release_field, Rails.root.join(file_fixture('contract_1.pdf')), visible: false + click_button submit_create_button + visit project_appearance_releases_path(project) + expect(page).not_to have_content no_appearance_releases + end + + scenario 'two incomplete appearance releases are added if uploaded contract and headshot have different identifier', js: true do + skip 'Will be updated' + visit project_appearance_releases_path(project) + + expect(page).to have_content no_appearance_releases + attach_file import_appearance_release_field, Rails.root.join(file_fixture('contract_1.pdf')), visible: false + attach_file import_appearance_release_field, Rails.root.join(file_fixture('contract_2_headshot.jpeg')), visible: false + click_button submit_create_button + visit project_appearance_releases_path(project) + expect(page).not_to have_content no_appearance_releases + expect(page).to have_content /Incomplete Contract\s+\d{7}/.twice + end + + scenario 'complete appearance release is added if uploaded contract and headshot have same identifier', js: true do + skip 'Will be updated' + visit project_appearance_releases_path(project) + + expect(page).to have_content no_appearance_releases + attach_file import_appearance_release_field, Rails.root.join(file_fixture('contract_1.pdf')), visible: false + attach_file import_appearance_release_field, Rails.root.join(file_fixture('contract_1_headshot.jpeg')), visible: false + click_button submit_create_button + visit project_appearance_releases_path(project) + expect(page).not_to have_content no_appearance_releases + expect(page).to have_content /Incomplete Contract\s+\d{7}/ end scenario 'importing a releases works when pdf is selected', js: true do -- 2.47.3 From 62019bcc37706f02a698b5797fb523a1a3b8de1c Mon Sep 17 00:00:00 2001 From: bilal Date: Thu, 11 Jun 2020 10:30:29 +0200 Subject: [PATCH 12/25] update features specs --- .../user_managing_appearance_releases_spec.rb | 27 ++++++------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/spec/features/user_managing_appearance_releases_spec.rb b/spec/features/user_managing_appearance_releases_spec.rb index 8dd09d4..70c359a 100644 --- a/spec/features/user_managing_appearance_releases_spec.rb +++ b/spec/features/user_managing_appearance_releases_spec.rb @@ -158,14 +158,16 @@ feature 'User managing appearance releases' do end scenario 'incomplete appearance release is added if headshot only is matched', js: true do - skip 'Will be updated' + # skip 'Will be updated' visit project_appearance_releases_path(project) - expect(page).to have_content no_appearance_releases - attach_file import_appearance_release_field, Rails.root.join(file_fixture('contract_1_headshot.jpg')), visible: false - click_button submit_create_button - visit project_appearance_releases_path(project) - expect(page).not_to have_content no_appearance_releases + Sidekiq::Testing.inline! do + expect(page).to have_content no_appearance_releases + attach_file import_appearance_release_field, Rails.root.join(file_fixture('contract_1_headshot.jpg')), visible: false + click_button submit_create_button + visit project_appearance_releases_path(project) + expect(page).not_to have_content no_appearance_releases + end end scenario 'incomplete appearance release is added if contract only is matched', js: true do @@ -205,19 +207,6 @@ feature 'User managing appearance releases' do expect(page).to have_content /Incomplete Contract\s+\d{7}/ end - scenario 'importing a releases works when pdf is selected', js: true do - skip 'Will be changed according to new matching capability' - visit project_appearance_releases_path(project) - - expect(page).to have_content submit_create_button - expect(page).to have_content no_appearance_releases - attach_file import_appearance_release_field, Rails.root.join(file_fixture('contract.pdf')), visible: false - expect(page).to have_content importing_label - click_button submit_create_button - expect(page).not_to have_content no_appearance_releases - expect(page).to have_content /Imported Contract\s+\d{7}/ - end - scenario 'importing a releases fails when file other than image or pdf is selected', js: true do skip 'Will be changed according to new matching capability' visit project_appearance_releases_path(project) -- 2.47.3 From dbda554cd73e44b2a8f2729a960eee612700a08c Mon Sep 17 00:00:00 2001 From: bilal Date: Thu, 11 Jun 2020 10:30:37 +0200 Subject: [PATCH 13/25] add job specs --- .../match_appearance_releases_job_spec.rb | 160 ++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 spec/jobs/match_appearance_releases_job_spec.rb diff --git a/spec/jobs/match_appearance_releases_job_spec.rb b/spec/jobs/match_appearance_releases_job_spec.rb new file mode 100644 index 0000000..5b2efbc --- /dev/null +++ b/spec/jobs/match_appearance_releases_job_spec.rb @@ -0,0 +1,160 @@ +require "rails_helper" + +describe MatchAppearanceReleasesJob do + let(:project) { create(:project) } + let(:dummy_appearance_release) { create(:appearance_release_import, :with_headshot, :with_contract) } + let(:dummy_matching_request) { instance_double(MatchingRequest, id: 999) } + + describe ".perform_now" do + it "returns if no attachment is sent" do + expect(MatchingRequest).not_to receive(:create) + attachments = [] + MatchAppearanceReleasesJob.perform_now project, attachments + end + + it "returns if no valid attachment is sent" do + expect(MatchingRequest).not_to receive(:create) + dummy_video = create(:video) + attachments = [dummy_video.file.blob.signed_id] + MatchAppearanceReleasesJob.perform_now project, attachments + end + + it "does not create new appearance release if BrayniacAI returns empty matches array" do + signed_ids = [dummy_appearance_release.person_photo.blob.signed_id] + keys = [dummy_appearance_release.person_photo.key] + payload = { + project: project, + attachments: signed_ids + } + qr_matching_payload = { + bucket: '', + files: keys, + request_id: dummy_matching_request.id + } + qr_matching_mock_response = double( + request_id: dummy_matching_request.id, + matches: [] + ) + + expect(MatchingRequest).to receive(:create).with(payload).and_return(dummy_matching_request) + expect(BrayniacAI::QrMatching).to receive(:create!).with(qr_matching_payload).and_return(qr_matching_mock_response) + expect(dummy_matching_request).to receive(:destroy) + + MatchAppearanceReleasesJob.perform_now project, signed_ids + + expect(AppearanceRelease.last).to eq dummy_appearance_release + end + + it "creates new incomplete appearance release if BrayniacAI returns single headshot match" do + signed_ids = [dummy_appearance_release.person_photo.blob.signed_id] + keys = [dummy_appearance_release.person_photo.key] + payload = { + project: project, + attachments: signed_ids + } + qr_matching_payload = { + bucket: '', + files: keys, + request_id: dummy_matching_request.id + } + mock_match = double( + headshots: keys, + contracts: [], + unknowns: [], + identifier: 'some/identifier/123' + ) + matches = [mock_match] + qr_matching_mock_response = double( + request_id: dummy_matching_request.id, + matches: matches + ) + + expect(MatchingRequest).to receive(:create).with(payload).and_return(dummy_matching_request) + expect(BrayniacAI::QrMatching).to receive(:create!).with(qr_matching_payload).and_return(qr_matching_mock_response) + expect(dummy_matching_request).to receive(:destroy) + + MatchAppearanceReleasesJob.perform_now project, signed_ids + + expect(AppearanceRelease.last.identifier).to eq mock_match.identifier + expect(AppearanceRelease.last.person_photo.attached?).to eq true + expect(AppearanceRelease.last.contract.attached?).to eq false + end + + it "creates new incomplete appearance release if BrayniacAI returns single contract match" do + signed_ids = [dummy_appearance_release.contract.blob.signed_id] + keys = [dummy_appearance_release.contract.key] + payload = { + project: project, + attachments: signed_ids + } + qr_matching_payload = { + bucket: '', + files: keys, + request_id: dummy_matching_request.id + } + mock_match = double( + headshots: [], + contracts: keys, + unknowns: [], + identifier: 'some/identifier/123' + ) + matches = [mock_match] + qr_matching_mock_response = double( + request_id: dummy_matching_request.id, + matches: matches + ) + + expect(MatchingRequest).to receive(:create).with(payload).and_return(dummy_matching_request) + expect(BrayniacAI::QrMatching).to receive(:create!).with(qr_matching_payload).and_return(qr_matching_mock_response) + expect(dummy_matching_request).to receive(:destroy) + + MatchAppearanceReleasesJob.perform_now project, signed_ids + + expect(AppearanceRelease.last.identifier).to eq mock_match.identifier + expect(AppearanceRelease.last.person_photo.attached?).to eq false + expect(AppearanceRelease.last.contract.attached?).to eq true + end + + it "creates new complete appearance release if BrayniacAI returns match for headshot and contract" do + signed_ids = [ + dummy_appearance_release.person_photo.blob.signed_id, + dummy_appearance_release.contract.blob.signed_id + ] + keys = [ + dummy_appearance_release.person_photo.key, + dummy_appearance_release.contract.key + ] + payload = { + project: project, + attachments: signed_ids + } + qr_matching_payload = { + bucket: '', + files: keys, + request_id: dummy_matching_request.id + } + mock_match = double( + headshots: [keys[0]], + contracts: [keys[1]], + unknowns: [], + identifier: 'some/identifier/123' + ) + matches = [mock_match] + qr_matching_mock_response = double( + request_id: dummy_matching_request.id, + matches: matches + ) + + expect(MatchingRequest).to receive(:create).with(payload).and_return(dummy_matching_request) + expect(BrayniacAI::QrMatching).to receive(:create!).with(qr_matching_payload).and_return(qr_matching_mock_response) + expect(dummy_matching_request).to receive(:destroy) + + MatchAppearanceReleasesJob.perform_now project, signed_ids + + expect(AppearanceRelease.last.identifier).to eq mock_match.identifier + expect(AppearanceRelease.last.person_photo.attached?).to eq true + expect(AppearanceRelease.last.contract.attached?).to eq true + end + + end +end -- 2.47.3 From 1d1df4a1dac8c16503cd46af702bc620151ef48e Mon Sep 17 00:00:00 2001 From: bilal Date: Thu, 11 Jun 2020 10:30:58 +0200 Subject: [PATCH 14/25] add appearance_release_imports factory --- spec/factories/appearance_releases.rb | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/spec/factories/appearance_releases.rb b/spec/factories/appearance_releases.rb index a64c4a9..afcec4e 100644 --- a/spec/factories/appearance_releases.rb +++ b/spec/factories/appearance_releases.rb @@ -67,5 +67,24 @@ FactoryBot.define do appearance_release.contract_template = build(:appearance_release_contract_template) end end + + factory :appearance_release_import do + person_photo nil + + trait :with_headshot do + person_photo do + path = Rails.root.join("spec", "fixtures", "files", "person_photo.png") + Rack::Test::UploadedFile.new(path, "image/png") + end + end + + trait :with_contract do + contract do + path = Rails.root.join("spec", "fixtures", "files", "AppearanceRelease.pdf") + Rack::Test::UploadedFile.new(path, "application/pdf") + end + end + end + end end -- 2.47.3 From dc7f50b932abeb0f2e5a7812de56588aad85fc86 Mon Sep 17 00:00:00 2001 From: bilal Date: Thu, 11 Jun 2020 10:31:14 +0200 Subject: [PATCH 15/25] refactor matching job --- app/jobs/match_appearance_releases_job.rb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/jobs/match_appearance_releases_job.rb b/app/jobs/match_appearance_releases_job.rb index cea5b89..6087faa 100644 --- a/app/jobs/match_appearance_releases_job.rb +++ b/app/jobs/match_appearance_releases_job.rb @@ -9,9 +9,10 @@ class MatchAppearanceReleasesJob < ApplicationJob return if filtered_attachments_object[:keys].blank? matching_request = MatchingRequest.create project: project, attachments: filtered_attachments_object[:signed_ids] + payload = { request_id: matching_request.id, bucket: aws_bucket_name, files: filtered_attachments_object[:keys]} response = BrayniacAI::QrMatching.create! payload - matches = response.attributes[:matches] || [] + matches = response.matches || [] key_signed_id_hash = Hash[filtered_attachments_object[:keys].zip(filtered_attachments_object[:signed_ids])] handle_matches matches, project, key_signed_id_hash matching_request.destroy @@ -20,11 +21,10 @@ class MatchAppearanceReleasesJob < ApplicationJob private def handle_matches(matches, project, key_signed_id_hash) - matches.each do |qr_matching_match| - match = qr_matching_match.attributes - contract_key = match[:contracts].blank? ? nil : match[:contracts].first - headshot_key = match[:headshots].blank? ? nil : match[:headshots].first - identifier = match[:identifier] + matches.each do |match| + contract_key = match.contracts.blank? ? nil : match.contracts.first + headshot_key = match.headshots.blank? ? nil : match.headshots.first + identifier = match.identifier contract = key_signed_id_hash[contract_key] headshot = key_signed_id_hash[headshot_key] -- 2.47.3 From eeec214cc8e8174a62408998bfff768310b3a24a Mon Sep 17 00:00:00 2001 From: bilal Date: Thu, 11 Jun 2020 10:31:26 +0200 Subject: [PATCH 16/25] add AWS_BUCKET env variable for tests --- config/environments/test.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/config/environments/test.rb b/config/environments/test.rb index 62c0971..f972042 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -49,4 +49,5 @@ Rails.application.configure do ENV["ENABLE_ANALYTICS"] = "true" ENV["BRAYNIAC_AI_API_ENDPOINT"] ||= "" + ENV["AWS_BUCKET"] = "" end -- 2.47.3 From f6e6d5d049111d5d6f22392e6d9e56842996adbc Mon Sep 17 00:00:00 2001 From: bilal Date: Thu, 11 Jun 2020 10:39:38 +0200 Subject: [PATCH 17/25] add job spec --- .../match_appearance_releases_job_spec.rb | 54 ++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/spec/jobs/match_appearance_releases_job_spec.rb b/spec/jobs/match_appearance_releases_job_spec.rb index 5b2efbc..84710fa 100644 --- a/spec/jobs/match_appearance_releases_job_spec.rb +++ b/spec/jobs/match_appearance_releases_job_spec.rb @@ -156,5 +156,57 @@ describe MatchAppearanceReleasesJob do expect(AppearanceRelease.last.contract.attached?).to eq true end + it "creates two new incomplete appearance releases if BrayniacAI returns two matches for headshot and contract" do + signed_ids = [ + dummy_appearance_release.person_photo.blob.signed_id, + dummy_appearance_release.contract.blob.signed_id + ] + keys = [ + dummy_appearance_release.person_photo.key, + dummy_appearance_release.contract.key + ] + payload = { + project: project, + attachments: signed_ids + } + qr_matching_payload = { + bucket: '', + files: keys, + request_id: dummy_matching_request.id + } + mock_match1 = double( + headshots: [keys[0]], + contracts: [], + unknowns: [], + identifier: 'some/identifier/123' + ) + mock_match2 = double( + headshots: [], + contracts: [keys[1]], + unknowns: [], + identifier: 'some/identifier/789' + ) + matches = [mock_match1, mock_match2] + qr_matching_mock_response = double( + request_id: dummy_matching_request.id, + matches: matches + ) + + expect(MatchingRequest).to receive(:create).with(payload).and_return(dummy_matching_request) + expect(BrayniacAI::QrMatching).to receive(:create!).with(qr_matching_payload).and_return(qr_matching_mock_response) + expect(dummy_matching_request).to receive(:destroy) + + MatchAppearanceReleasesJob.perform_now project, signed_ids + + releases = AppearanceRelease.last(2) + + expect(releases[0].identifier).to eq mock_match1.identifier + expect(releases[0].person_photo.attached?).to eq true + expect(releases[0].contract.attached?).to eq false + + expect(releases[1].identifier).to eq mock_match2.identifier + expect(releases[1].person_photo.attached?).to eq false + expect(releases[1].contract.attached?).to eq true + end end -end +end \ No newline at end of file -- 2.47.3 From 47b68e86e64d2aba174eb80aa4fe10c6cc2fe595 Mon Sep 17 00:00:00 2001 From: bilal Date: Thu, 11 Jun 2020 10:47:19 +0200 Subject: [PATCH 18/25] skipp failing test --- spec/features/user_managing_appearance_releases_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/user_managing_appearance_releases_spec.rb b/spec/features/user_managing_appearance_releases_spec.rb index 70c359a..37e15ba 100644 --- a/spec/features/user_managing_appearance_releases_spec.rb +++ b/spec/features/user_managing_appearance_releases_spec.rb @@ -158,7 +158,7 @@ feature 'User managing appearance releases' do end scenario 'incomplete appearance release is added if headshot only is matched', js: true do - # skip 'Will be updated' + skip 'Will be updated' visit project_appearance_releases_path(project) Sidekiq::Testing.inline! do -- 2.47.3 From badc3786dd93489f6735c6ad88c55a42e36e6058 Mon Sep 17 00:00:00 2001 From: bilal Date: Thu, 11 Jun 2020 15:09:46 +0200 Subject: [PATCH 19/25] update matching features specs --- .../user_managing_appearance_releases_spec.rb | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/spec/features/user_managing_appearance_releases_spec.rb b/spec/features/user_managing_appearance_releases_spec.rb index 37e15ba..bf8854a 100644 --- a/spec/features/user_managing_appearance_releases_spec.rb +++ b/spec/features/user_managing_appearance_releases_spec.rb @@ -148,11 +148,13 @@ feature 'User managing appearance releases' do expect(page).to have_content matching_started end - scenario 'no appearance releases are added if BrayniacAI returns no matches', js: true do + scenario 'MatchAppearanceReleasesJob is started when import is finished', js: true do visit project_appearance_releases_path(project) attach_file import_appearance_release_field, Rails.root.join(file_fixture('person_photo.png')), visible: false + allow(MatchAppearanceReleasesJob).to receive(:perform_later).with(project, anything) click_button submit_create_button + expect(page).to have_content matching_started visit project_appearance_releases_path(project) expect(page).to have_content no_appearance_releases end @@ -161,13 +163,11 @@ feature 'User managing appearance releases' do skip 'Will be updated' visit project_appearance_releases_path(project) - Sidekiq::Testing.inline! do - expect(page).to have_content no_appearance_releases - attach_file import_appearance_release_field, Rails.root.join(file_fixture('contract_1_headshot.jpg')), visible: false - click_button submit_create_button - visit project_appearance_releases_path(project) - expect(page).not_to have_content no_appearance_releases - end + expect(page).to have_content no_appearance_releases + attach_file import_appearance_release_field, Rails.root.join(file_fixture('contract_1_headshot.jpg')), visible: false + click_button submit_create_button + visit project_appearance_releases_path(project) + expect(page).not_to have_content no_appearance_releases end scenario 'incomplete appearance release is added if contract only is matched', js: true do -- 2.47.3 From fbd07a6ea63726e31816527ad0280de860b0514e Mon Sep 17 00:00:00 2001 From: bilal Date: Thu, 11 Jun 2020 15:24:21 +0200 Subject: [PATCH 20/25] remove old specs --- .../user_managing_appearance_releases_spec.rb | 61 ------------------- 1 file changed, 61 deletions(-) diff --git a/spec/features/user_managing_appearance_releases_spec.rb b/spec/features/user_managing_appearance_releases_spec.rb index bf8854a..1bdc663 100644 --- a/spec/features/user_managing_appearance_releases_spec.rb +++ b/spec/features/user_managing_appearance_releases_spec.rb @@ -159,67 +159,6 @@ feature 'User managing appearance releases' do expect(page).to have_content no_appearance_releases end - scenario 'incomplete appearance release is added if headshot only is matched', js: true do - skip 'Will be updated' - visit project_appearance_releases_path(project) - - expect(page).to have_content no_appearance_releases - attach_file import_appearance_release_field, Rails.root.join(file_fixture('contract_1_headshot.jpg')), visible: false - click_button submit_create_button - visit project_appearance_releases_path(project) - expect(page).not_to have_content no_appearance_releases - end - - scenario 'incomplete appearance release is added if contract only is matched', js: true do - skip 'Will be updated' - visit project_appearance_releases_path(project) - - expect(page).to have_content no_appearance_releases - attach_file import_appearance_release_field, Rails.root.join(file_fixture('contract_1.pdf')), visible: false - click_button submit_create_button - visit project_appearance_releases_path(project) - expect(page).not_to have_content no_appearance_releases - end - - scenario 'two incomplete appearance releases are added if uploaded contract and headshot have different identifier', js: true do - skip 'Will be updated' - visit project_appearance_releases_path(project) - - expect(page).to have_content no_appearance_releases - attach_file import_appearance_release_field, Rails.root.join(file_fixture('contract_1.pdf')), visible: false - attach_file import_appearance_release_field, Rails.root.join(file_fixture('contract_2_headshot.jpeg')), visible: false - click_button submit_create_button - visit project_appearance_releases_path(project) - expect(page).not_to have_content no_appearance_releases - expect(page).to have_content /Incomplete Contract\s+\d{7}/.twice - end - - scenario 'complete appearance release is added if uploaded contract and headshot have same identifier', js: true do - skip 'Will be updated' - visit project_appearance_releases_path(project) - - expect(page).to have_content no_appearance_releases - attach_file import_appearance_release_field, Rails.root.join(file_fixture('contract_1.pdf')), visible: false - attach_file import_appearance_release_field, Rails.root.join(file_fixture('contract_1_headshot.jpeg')), visible: false - click_button submit_create_button - visit project_appearance_releases_path(project) - expect(page).not_to have_content no_appearance_releases - expect(page).to have_content /Incomplete Contract\s+\d{7}/ - end - - scenario 'importing a releases fails when file other than image or pdf is selected', js: true do - skip 'Will be changed according to new matching capability' - visit project_appearance_releases_path(project) - - expect(page).to have_content submit_create_button - expect(page).to have_content no_appearance_releases - attach_file import_appearance_release_field, Rails.root.join(file_fixture('audio.mp3')), visible: false - expect(page).to have_content importing_label - click_button submit_create_button - expect(page).to have_content failed_to_import_notice - expect(page).to have_content no_appearance_releases - end - scenario 'user leaving the page is presented with the warning if file upload is in progress', js: true do skip "Test is inconsistently failing in CI" -- 2.47.3 From c83e6cae0e0cd7a0c8c962b7cda092f3d5b31723 Mon Sep 17 00:00:00 2001 From: bilal Date: Thu, 11 Jun 2020 15:26:44 +0200 Subject: [PATCH 21/25] delete unused files --- spec/fixtures/files/contract_1.pdf | Bin 19133 -> 0 bytes spec/fixtures/files/contract_1_headshot.jpg | Bin 67538 -> 0 bytes spec/fixtures/files/contract_2.pdf | Bin 19057 -> 0 bytes spec/fixtures/files/contract_2_headshot.jpeg | Bin 40220 -> 0 bytes 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 spec/fixtures/files/contract_1.pdf delete mode 100644 spec/fixtures/files/contract_1_headshot.jpg delete mode 100644 spec/fixtures/files/contract_2.pdf delete mode 100644 spec/fixtures/files/contract_2_headshot.jpeg diff --git a/spec/fixtures/files/contract_1.pdf b/spec/fixtures/files/contract_1.pdf deleted file mode 100644 index 561012c85277d763bf411ea542380b4796b63038..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19133 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 KQdC|H`Tqj^eWD-$ diff --git a/spec/fixtures/files/contract_1_headshot.jpg b/spec/fixtures/files/contract_1_headshot.jpg deleted file mode 100644 index a49d5cd2b95403153e382ce2c17458c960ba2e72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67538 zcmb5TWk6g@)Fs-uyF=p^EV#S7yCpcm-95N9?i$?PLvYuiL4&)yCYdJpes^Zx{CY(< zeNLS^wYF5P+O_M?(w|KLx}21(6aWGO0w4qa1N>P9hy$P?A>TgW0uBDaz{9{mL&G4# z!NI~KBO)UsAtE86pkkt(U}+%${}pH$SU7k{CfiB|q%6f0KX;?h zfdm*T_#>jh^_id+M^BcjP6OhU;1bObLmRwPccuOCyGMB*BS)y< zO^DGR<9&crolBt5jSHR1f9Mbyy)*d$i0=R(;1D8VB+C^o=~VnGecgOV!GpeA{CnU< zo0{i?wfRDNp`F)QHRn=LJlNON_w~V}^WZQK04u6eu=}%Xv zc&G`kT~s9&D0?{GB7**KwvS~#7VX)}9|K9^5n49qtGh-SpH1rdL@%z-YcL>bFq76cgBea1p! zoS<@rbXE{-+WQ^q)a6qRb6ELUDWA0eQ6Avx<>K{m^p4@D%Yd|Qxt8qKGiHsu#$1Iw zmKu7iW#s8j<@70CzF-`QfTKbqV#;h4_W;z7o8;{e9LIdJqr{Z~{3%7HM85qvnH&>F zpLT>Z9cz$xKW+a3(A6Vo;>vQfV`vd!H^5@tj%?~e7s2d6oN}fZ{nnvv_ebve*Z$(n z+%d0tiiwF=Jja?l&*~YA8p1U9iMRb-{DPoCMpPnq*Ndcxs|}nashAV#;)>`W%%l>g zIM+_HCDQsE(l#sVo z2dbholWXN=02N3a-LUNc%wGT>{nG}M{8GOzW2}}%QXXxW#mTkuL?>0ZFBF>Ta-NZL ztXA2b?*-v-$6ZU8pm5d7{WYD{4PtgkAOJTZL{Y*<7(Eeo{{TRMnc_ z5-uzgTDm+3J00+D&Q81p3H^HrC8Q4`3!}{*WznWYn=%uwm*2CFv`2j(EIks9LNc2g zs%IlFLTWMx%8?E4E-i&|5}?!>?BEjz{xt#w$qwT9S|i^_1_3X>d*{koXA+>Bq=^mc z6q<#PU@Ob%jUdaFfc}+!l%Wy-HVz1b*<}{reC3sDljpY>{9SC z+y1c`uTvIn^huf+;y8rxO);?k$@uwBc$x3UX`)F(!}uvIrP^7)2tdi;#t#ADjQ)zC z^?J^mRy9pReUkCyA9J;E&R2A~eba(VGJ5aBzP!Brb00{z?Gzrt*#mOjT3YjS{Z;h& zx6XPY{@qh+XlLBHuyNERp$g2d)^6E^C77h6$-2jEVcB`pf}HRrHcFf*2DkMr%o$9@ z(BQ=SziXKG-?9K;Spfg|01|I%Ti1KeG7j@zzw2ZE>+vwjtf$k+y=i09d@%X)sYm<0 zXBp5aeX9oACI8e!sH0%ktTW3FKcIH7$!;fy2R!{bWp>rgm7MiMXH|;pw1(6;gG`b! zWU?3s!%E+Y>k_=%*nKxh8HB-6cI}nn8kaVL_hc4h1aSYWI~3Q~AnFt9@`-P$%xR0q zK4@m4oDsDfP@R^+b^L;Hb`yyF0+tfPAdd8_9Efnd>V=Sv$#qk-+u;w-zin^YeEay! z#BB(6M+;`1?bLbl5LoS_k+(nH0CBFCpJ_}IoV-}g)7FMTF0f+D{h8uWH>PN1fK zWDSH^`iqaeVnpCWY+f$#55Bu#qU&0MdKYB285VIi$#BcT@;b!8(YEJ~EQnUZ)Sg+M z0iip?&t&=tRDAdPLfPQk&w|yUWU1Pjnp&SJuQ4T6!wd4 zgsqc);M3z2ed(BoTB6CKtg-V$NsrktT63q|FHdNsD37Ijf`pvI$pmNFB(+^S75^3P zAfX=dG#by#I$flC5~wF48M7;#74kVL_)B0EyuzUs<|}>=SoKrz7uMeceSGP&VWRX8 zo1O2+e4CeymcgA)GL0_xus(QoQ?-_LHpF2*z1!bW3mx-Jr!Cx?RPX6(nV?Reewb4| zg}Jb?G|h#&>IBnOk9^6Fj?YSODv2eu>PIE~R1tNXg8eezvG@}{|for#PwQ*R>Qmwo7hoM4Jx@TIlJ)!P6S*zzr*dtEab_o;b@}VIOfNL~IkU0%kzU_aLAr2W zJGZ`$D7{yBOD`X&tzK_d=q1KQUOJo`zFwKL-Yo~{-!ybfhm&F?8D$_pDSnJjC0ZE`+TOp(x}V=m(>J!Nqv)YairQ@M zR$f&tk<;W`F}cp#(#gQLRJeslwOZ*Ax_DsJk{L4=AdOC+uuMyHKb<|pIoS$_Y`Aax zJ%yu@_?A;@e5VO}J1K`1;rssiCMlLTX91wKZ;vb||NT)IqU$H`cCk1OzVxG_JYWkJW>;Og+^Xygh{aIUuU zlG^=RYu|#w^tNou)Uj!z^hh--wAk4{oZz(vg-2pkHx&uL5^-sM+obUw#Se;-8HR+2 z(&_JsS&Ri5EdQ<<#DT%MQ{BwBZp@9l%d@wW#Ygd@J8h8JcE%fUQkN@D!bI7NY(F2r zg;ja`C2nwQP(@(CSN%cMYoEi3!Fva7LsDFBy?=W%V^`1jBAn|#aixoZllp{61*2fU zRTYOCyqR99;7^N-ViCdx$i8Ek?O?N_=X{Drn*X3jW61p_ZFJca`E7)}8N(g8C%OCL zR+_g0+F&ylcCFBKGhU$PPqT8bjaY~t!ZrT+Vf2@8h4}z}scGd{&CJVsILc#Wag#GR zstWo<^0KoKoz_}A$?{B!a>J-)op4)%cpII=j$RZFT?YI&LEa`b>T%SQVEaq|eY)KZ&C-J`rFP3&g7eyZ;i+c? z>tP^$u$MnAIAn`##oqjoRb5cpws~cXE*DvBw#HSht=5fOy^PZL=8N6}SZKwU-&Xv4h+5XTKaa zy!tn%uU^->j3uok=|rKN!#0@`$KdMRv+pdQ4WBT{bi1}@3Q;OgyHvZYVi71AdoRE-8jBS~xqp>JJg5_-Ckhe>c--HwIj zFuL$3njHP>0|3|wcR%?ja`qmWuU@Ehl$H~+oE9%1fiQS)^_YT;LU}_0@XlUk7XZ?wMnS3 z8~|Cza$C>YfRfITNamKk*A_1*eq5v*e(Ufb6Tlh4S;G1p)IjV!vrjV@Z^lpdoG5ta zGPNXpuv17Rwh12mIZOl91YX@MgoYy)qBPwrH)fx>YioO41l}}{n&c4aX^5%%1cgdy zI~Cf+M`$(?`iYi8^3)cyi6R&yNfGG#Zu^D3zD{IH!f^v`f3yYZ5(EH{1is;e(ao*K z4nC63)cbZl1Z`W)tz=sBSPoe4?_Mi5hZQcJTH1Mzq#s){YWQIBt;R06SN#DT`SO4K zv9*&01C(JIH2-Y`;QFFTXjUR)9FW1WI#4#frzIl?_)a~dY1*4HNu~xT*&%=&%IB5j zT=w3ns%89tql4p1%KfWszr z*}f-k{kDEceoudIjr<$wb&3ztNJlVo!B~MU;dSVgKir-aLl5G+FZy2N)nr( zM(TzcNA{~M9TVG?NS4_IOpRH8p=k#8Pgp}HiX#Rnd?KT-Bb#qxK)j6sI3w-ObHf`y zUID*ES$9na;6#YoSqA-mabAkQe5=m^zohS%6$UKuvOs_nw0$^|R*LA8gK+V9L6XOf z`d0!s`W^t3QCuLbD>KxVOdi6h6}Vd*-JDo_MPz>f0H)$oAY~x93XGNi7FQ9d`5&(N z*>@Q#7FyB1yJvIN2o`kKl@B`Qr8xdPAk{`>DS^1KI!Eh8bnA6iOIu@i=MTL)x4-oh z#z1frKnegn0^oX}8vhB-|MvUWsNgH`pn`MV8q&L^{|NWpKh(TS*{shm9sWs@){aIn zM}hIeP%Y76@YM0xT=!reNz-qYwsw>})WWxk_QK!&aW}_#^9Cv@I8dO6V;2<_jXj>E zE^YHKz}r6vLcV{lp}qqE7rs?~U3{>2v9H1%t0U8|x$RWvyK;rnL8c`A6kYx6owL~A z$`4MZiP)>Ag@zU@F1Wkg19Gdh;2r`5uFjuY1E%jTFVcb8K!|;aQZh$RaBA%(r29WC z0Q~p2Bp|pz973#l^zl6~`Nids+;~5}J{(cHUyhhs3BPa9%$sTueet&kN=LafuVJ@2 zAYt0Yl?XJ+aaGw3{ETC2-o5L%=^7xqc;yM$c*IK^yPNFvpB8lF<>7&v7C}{dQ;~<{ zGJW$e(qA+}0N@`j1p)ZRcV)E>iCD*p4rt{sH{HdS=3!SK`;+Y~y?!~9kZ`lO4eHm&c+gM_#hxmEnumh}uJ8p$E`#s&k%Q0BMcob}1Zccy1ur&?J_$a8UPH!2fgw zP>O&@e#)th&^DBLS{_Lbf{YiW^=3XjR{L-QQI~zE@9?2$xCaiNq^~PR;aaiM5L;H32i@G-}wGX6;iUF7@kpixE z)VdpSSbqR;C6-7&%Hp}+7ynA|s$lY;0DxE(=pOJOgE%DKHC+t!_H|+y%PI77yIGtN7G@QZu`BD2j`F4 ziP7hcvBu?7ADKoeQCLKs2*ivi}4CTL5eTShu4- zM5S*JQV_>CPO~{%W!rHWq^N3KhcRx`lmWCSdVc_Uzi8`XoBH{X@8Y5z{AfVCJIP~` zI|-+rQIZrxJSfK@&)sY;&!m&XRXcFxGJ!Sq`iKqceW+L_WyJM=eF<9M?)1p@odyqp zWsZpd1c2le0sG(2nfhqb>h!Ajn_h~u&`KsN30I7+2-jta#0n>>j_1=iw2kCnA^kb` z4g-oLQYYB!tIPeU;%h(qZtD2)a(jl&OtlKSWuLMrk6ueE@it?eu~Xb_xQf1RRfaPq zC#^|;zRsB zMpy7LR)Za+F6_Aa6fmp&J7C#o7;3(}Nd* zAluf@rd05RF8>4nj~g+MZlIg>T-Dt-nOZ zi2P>&jLCyB@QmNme-Usx3G(OYRBUG^*%noU7?Y`qhMwn&!{5O1$adsZwlB!z>Yx6nTC~YE4)`e%jyxNOT?0*2tATD>fy3R1Jy7Q%v z6heZaA*V&qU=j_bUB}Q5?cg~}&*T4OfKc`!*Ygvm6m&V8dOV3ny#t}L#Ya<^RSxJ< zqUQD?Vxj7+Sm&~XP!F1S?fE^QNOdo6x=Y=N)ls=Nw?fHdA9E*|`PW_q<1o3SHGjlt z-)?04-+Gni){>g?6gfj;u3RbB?NJB`NKya_gI6pmqfG>fbaIuYf}ezX{u2T@_?a}d z=%VAw&AhO8n~ds`5jEXfmo^Uh0Mf=GlCUKnROJrz=tETZaCh<@UvMRD}} zx_s*HSy!Y6(aFhxX;FFmlnd7WsfI3E+CPAhfIpPhvL1?xTznX%jS~rmHWnTgj&jM4 z_5-O_&=U!md;TrRgU_UC+tStHs+Ka)racdkM#rpbBVUO`tXqB+am5FtnZPf=p*dZE zxQF-t01O`XZac1R&@6ZeQ?K}O!F$R2ZO;qj<38P>UmsIge&O|SM*enQkoN0im8lCv z>&r=txU}RU{T%j%WtR>kDGsgT;r{|JeU6KdxyOqPvGkRty5GWgBP!pff{QcI7>#Y0 zU6+#-klk5)R3qQ7q;_##LHUSwi$+Rx=Hs}VIOHkd@pc9gyqsrR&l2YohyEhP`rwcK z#>h|31k?~SW#@74vW3Cs?Td}0F-d?{FYsY?94(onM zs{XQM>Q7;-%97D-gbvT$c9XztnP9p0sLu4%uvT@_Wkup;_{+KaG^1(NO8heZuN+cR z2t0KPo-;jlS2X^lif7k?J^u+pV0qh3PH^h(L(-S=4K$6B8z%Z}F{7-gNi+1TU`Hd@ zGkMy23g3~;eTKqak=2xxHl!X z_#Z&=6LBPH@W!1hN-`W;E@Ys>0%ODu9V>kyAr*b6zFaCl#dJ-8KmYaq_DNVx`Q~@H zPv32FHaw9+g{3FDsiMINZR^<1gAiU?X+O@fV3i|EKeYosM_vOXcN~<4b;+#%Xkuv$ zBnu_U;pVwHZCy;Z=QnPT@rVEX0I*P=eT~B)+xMQx-n|7vQ@sy`Zm=Nt+U3S<(`{M0 zBHF$o!ZxE)5>t9whPE>^O-&nk$?^P^Tkh_M(ekr4sSJ8<6|QmU=&p-O{OI-kAtd-c z*VT_^7o1q5nUyja^cK0ndARTj!L>>F0Afk@z!65?o^{o(N)CRx^E;w7C2x z8TtblH_fYYF*#1@c@LQ$w+$&5sU$hpAO>q+Mw-eaUzR9;4SUg+eS8P+=575LNMAss zjP_{UQ>@8tW)OISXQ2*RnZA_tWt~nfU4>5$sTX=s6?4z)8s$2RMSH@ZjOak-X;#QJ zE{F1;3*{WF14)I$@*EuY{1R8}sm~eT)$wVZnSSFRK=)13djM$Jc*+5#YlB#U_LNyc zbvUfzl{sovgDS)e!fnifHL#-x?8yMdj!FzsoLQA!M;KI#UJcwH$P!wAGYM_=zQ?o6 zR}D(Ptjv&`{^?hJ|9hR+&YmRypVXS%eoCp24;pusZ@*f zr){Uxlh%=O{_gN{45;`2-F`*6XKT1wga;CYKvIH#?mojYEOMn4fo> zB2ioqnp^2u{nz`yP})^?j1#{{H9E#tclDdK2M|P*U?F6XY02e?_Ir!~td26U(9om# z;-4b{7`BFy34Lfl@}2=~q1a0iT$m*ynD)6IDD2?&K#%@71#Jjj2$?~CHDX&?GL>Ze z4BI^1jc=LLYmO^oLvjo=Jg>J(!h%?FJ=ii&v-V0#}YRie) zDZbNR90iJNe9*ln_ocEt*26d1L0L(8*cnjFsNfoEFM+{odB0;eb6xy5FlNy4+d2EP1s-FC0cuj!kj zT=p=erbbk-)2KAq>5+A&;Q;_!a_9p0&LHY35CnV+qFBaAU^1UrT`TB4CJXl^%*Lpw zu@(>u-E!aqC!LIFuLd^2k(#7Df$tT_UZ^8w!oRut(5U+o+i_r5x*?!!IgPbktX8v^ z-<;KU5`i(P=Uj6q%Qh?7`UVodv&-g6PVi*__wf zWYf~DHcE>n41Qh99!sh8uJEnSf6U#qFtHQ|4}#vPqg2JysgHXv#Gao!W*32V8d5Dh z5OQlfWO+|SRlu^H64e&o*)?kjz34hI9g+u&Od3u`FUS!;4h|WH#djLSLrVqC6A`bN z&1b2}dwIlLnX%`!X{PnZOCetb+%?3 z$I(h3;dZKEbPc$SJoNQLdQ&BD)vs@bhRs#qCR5(;ErNc|)GWW?XdWh-NKB!60BlL< zA}XkHi+0~(5!4N2hGCRh2K89LqCpzqn%G|VtR+ai$0)-V5P}rVA?Nb+7v1VI!T!1ARV6Cy)0M#8tTp1eU}@jY*{$BTJ)Sp6w7S_#R=$~oo zU5-SG2FCa92h&f_et|BbE;tT+-L72oo?OjjUv+0VH8;{(le@b3VK3A(+f5QwAvV%kudAm;sAHUMZ8MJIv~Iq6)LCyr zZ#WM2V`8;ST5R6@`EzEk1?DtOTZ!*(>pckwHYl z0-SqMc?^E(4)Zwmp!t2f+(`WcfC}#d@*LcI1|`8kvxWH6G6c~o;L%D#LmkdpM%KcB zM<Y5qy(jrn6$F-FBDN%3;}Zrsux6_y;hGbxnQyEys>X z>q|#-eZ?_lMfTOtmIgLhq`GJ{lJJBOkt5);W6X zz6SOvE4jr=zQxvKaJCPurA;NJt?6O5yEiQ{n2Rh6oR+~inl|tYl)s17#eWNIN^->W z;GvUc;mCMOQ&CeuM4CVh$OiJ(U9`aUz;XAG#&y9Pg}0z02rkez4j?r}!iX0QC+x}; z4x@pzPG(3mxjcycA1C)09s%KubPg$8zPk+Mfd^l~lWY4a6KvvB*>w>Yc zw3OnO*6v!Z#Q14OEfgU$EQx}nrf`w1*P3d^K(Ojv&Q_a9Fg2g zi6L?B7F`mONMv02^v9Njce%}|(Q!hc$q$L2uHndwXfs=!j3_h~&Tif(fKog#Yf{Ge zQfq(3#?I*UKo%6hq4Efa!2>ef3r_+3MI=YCSVw)N2*E9O;0+mIzf)C4u9AQE_~8LU9v9Xh@OkCzTQ4jcABfdk z_DM4N-iMdjpE-9-uDJ>dSlL8_W^plUi*#{i;|da%H7g4>Onv9M-DI`?0IvCg?(uc8 ze%6(RHm1~ECCSy+O-wfa4o8FP?VNe7)*TV&Wqsk6dOxt0kA?IqMpl-7p1?0qSG?8t zmiZ2wI+Y+-zWd&cuwJ9~PzE|~Sj^&EEWN6Y#s33XY-hZyk$;!!R;?;*%2uuxE`Cdv zMh>E3rzHoVJnTfEG0J!b8UgURdY)Zgl58<1`vG1?@UMcGB94w5>6_=aJU#(?->*km z=+dmq2wtChMKw_~u{W%<9Da@>p4v8)Efr-MYDs|9=C$5wZ0%ALk28>(Bu2`$J7l=< zo9dk9yOs=6GYM9-(7nqz<1-0uAV&0MFt?4)X+nMDgHkhw`i61qDt(!Zi%jZHYV~$1 ziWPb4ih4T=%UjEq)0Cyf`aFK6{p2OH;!-Mb+se1L<ND*vS^fZuM1nd!PV5C_yX)+Y?14_?_hb-`EG+Cs zT#noPMs_36E>27BtvwqMy@1|lf3&Q~&ra$zjLHL3t-4-Vk=kE?ikjdBzP$E8Us1Fv z@Y3ZT*Q)PmZs9D6FiYpMQO^SjT_;knN#4`5oPj8kD3fuAvWRd>o}ow)*YYD@s7xxa zg;IV~80RWKY{gPhL1~%wkn$jA2A~{4BiO`FvGMVf9$`Y#mC9sc7MJSUOQl~}26{FH zY-&x`fz?`kvKxJ)&M3$9hm@vr-phrNVFyOdPufR1$tvYo+Pj$oL2vO5RyGFZK-*}% zQ&fRzKBPtju%4ps0Si9RMV)^?@F|C^D3mtJHW<%;}4-V_#b?>$sO z7Q~Dr&R(D|knDaB65zUigT|~OW1i>_ z8Kvj=cuvsr>vUcYJ0;ifhJCm*#8c+U2YHMzdv4}vtyY1&1O@+lQ4yoAX#+&_xDrc z{hVbzE$S-t%43(Y*I7c7DG?!~>iW4zy^~3aE~ym?*Xv(II$`q+MEU~bOmvz4vv6|z zrX_Cw#Oi~aS2iqz?zJuVfdH1k0}Tw?%nTzf-@^!ncRMgM$(RCs6pIQa*u)5RAi?LZ z)$2a^(;eq*O=8eVNz$k}w-aB5rJSGNLJnK{`de#NRxxAu$3=}esJweJ#A$|P128?DC=rkTo{5{l71>a2Kr!%iOp2k zOij#Em(%*Pg4;Z(@QuS(15`62%lfG4hO(|2?C?YkvXM!b8Z_5eSzo|cIX%(at|lHt z9B5GM0(Yxd7podts6ctboJ_*TJc($oGN<4F`IIpfqQ2(KZ z4r9FM`v`iE*w!1UsUVh*gybF1-6x)$&r-BxeDzhmpq!fp$Tk#@eLxa<42dAc!;s*G zNcnxz@|>^KZfTMK6LU_fvzY2yMg2X&yQ2I*fVHXss$PqN2C;IqQib^D{$qxP<0Pcj zeS>0s36N!%?B_|%Xd4{CV$G#x9c+5^$&?oNpH`agTw0JqOjT-JW1TYM8ZSwjd&C31 zM;ck>I>_?RaTbPB-w9QX6H~L}Ylgax6DL}zeq<~Ul*r@ z(&Gmy%6c*Y*$TwnZm1$k!H|)QK+ZA~^%=0Hz%yYKNfq66lpOLbCXCiqXLPsz+><&) zQ2+xMd`^cD>Nf0VWB-Bu`U|DDHE)dF{v4Ceu>MLXkDmmY(`4O~DeV@#lNWSaxY5mn ziLjFOscCB};`lhdTB_MZb$~M2jM7JyEey4f%H##=5mNP#O9H>SIo%Zt$6o!yGB+W9MiaYiLSzMcQ0kGB)nwH8KDv$ta568sBtvKmtrS9nNZwRA?*A;uUVXp*opxC?$Z1UI^1z#z=)<$bhDT=n%Yo^o02TLMFy@SY*&#cP`Auk5OtsF5>!ttMbvwq!OKS= z?5Zg?*A&1&=+W1gG^7k6TeKPX@*uP zg-=%SQMFF{jUF^_fhYzt38vTsc-xxk!wlqcOgTWG+SevsYi<+cis zpA!Wvq#sYs8p53s)@nWsNxVHo7DQtp9yGfxrVpvFkPyb9M0`z=jv#s6?)EbW*Q1{6 zU2*lpRE_AVd;IXQP}d4xg{1cn>V)|6;|6xdXkrGOUiMAdluh)>7AXpm!>iFd zigYKyp1?D z0P^hQKNE$A;-^ST8U%0+-%M)N$qXtjp3KykvWc-)Rp?dYFVcGp^-^Ld{#)(n#2eK1am5<#ywCr+>m~4&h>w_U-<~V!e6bFz3ux7<zxvgZ1Duu`VDlrB zQtA`EbQGVDvG&iUBCkWM!%D?qB&~$ke0;%QZU9mQ~ze)9Ng*#aGHF{_`lS4D}-uM6oF@&)`|! zWQ&oLXb*aCp#sY+F>?G5aF*_X2Um&9Rn8*QsHEvXi-Siv`% z8f6Kxn+8wVp*b+f+zOb}1VP{s#yh(Yrd4P@;wzEdtK7gdyAaDYFZlo!jn78EbT1<4c_0aXwNCyT z@G=6SKJs+$*=QgxK+Aj&ic!O!wR?FgbEP8^_{#iv=j@>QWtV~>rB%x#(@W1yCjv}O zm1y9o&5Thw7gI3z%Z6#y6`_|us7gY)pSk>e1H7BYh-M!VxOI2oxNbSF$1v@d)*|8m z1BlnzI8qpJ5e{_*^Q#5=Nz4Flih{I)jj;XRTaDQtfLsY>hQ`;ltuhU;)%q91jn0eL zI%eKda>C|kNshl!`UjG&D^xsA90>`XW-3LV`>azA+IrcdVkyQ0;9dtW;_V}sT&Bjxzmf86fkJO3r*Cks3J@zdsqs} zqe(C7urY?l)&TJMSo|KI9EKK$yBVGmo{NHWV*E+R7FRD$;|zpdxca=!U$$B68lq|t~1+Mz1skyOf zTeEH&zxD5|PQ8WqeXLb_!dASpR8cX|R~PXlB8v6QWe8cDzCbue|FuEB^B@rlr5VGJ z`Uz!hddTKvDpZ+#MJ>kOcCP!?B}eIv04G!)%JA1b`%Dah-)1tK`M!j|e=9V7HXKf! zXCJr5@3B#}?k1cs=+ajiO+lQkvyqtFKC*Emrxh}enN+hcT01kJOrg^@mpE(YEW$*u zV#H*%vdYQF3#k(wqDBAPI>kUcbAGJt3s(*cKdE6Nf?YFn`adV1E$otQVqub|LVYIU zE9Qa^BNDuXT2}vT%y@_`R@|`2^4R?A6-=tTI29k1YWRdLk{589!Hl7{>P2DehJ@V_C`x*&KWlJ6g~ zG0TDvY{aWNnk0_S>=sN&b$v3c%T=Wu$ZiuRn%@{I>TLsTsAwd0T*o_BLHY&af$Rlw zQ z=fNtmL!VKY#O-2{nzSSLVC}_z;{%YWPkQc`Y4Ehp=5@Qd%_mFnvhfFSfF6fH$}G$h zR@z*@xUNNFb@t3xkKPwd@p}-w8^l0IKRNQL76b1CC$!(Oak(3#woQnF`NXwL=VE3d zysN%<_qU_hu>5nfQAuA>n)f1seV7~gb^G_FtI1&(s+qJ!l%(ZK{na|_~QqY2g)`$6Yh z^+hxF%h3+MhFr;$^U$jLN8Pk;s~f%|3vg(&(rGO{LcccCV8z20iJ_tbPo^g1_E>EQ z$AQOQ3ZP}}ZO0yfUoS(BcAa96O(x^}lmTfP=2h=bb)q3tb%KMrKE4Tifx+Ws?YYI4 z-cb+h^VzDWKyF8^`Sbsyaph_>g){<7?XYBJ+{x8!)YNh@<-U+}*6__WTO>FBc4|dHl-&|?4X0@!NTLXhz5hl$8lc))K&@o;yut!nk z`vYbdv@5zjAjkR#01=t6MlfQVj2R6OlKcS0^s3i z4~p;zi~uTa?8Yc^(6v;u)$>V;!U&5CoW%q)xEGeUna#&Zn zY&iZ#Br|BcIdb%ibUU*=6+?wmwK!N)ES%O%hWehttGJ1Bjpl|Q?8(QpXgEzoo6WxN z98q#EYx}Rr@Z*Jo6lm`v)LKK1zNXfV`LVsQ#%=U=wJ88m+)Xk zgzcegs(n^UW{DD06*q~1&w{dRfkNxDHzj`FY794Uf_mg)68ZRk9kL)9Sk4ID)A zSf7+(yzejy?oko_AXF(0Zo@J zuvAk@C24M=S4g_L#ME8ZUk`N`+jO%% z3&YD20qno2Z~BHClUxgjLrCxB^YOP(GwY}L`WTY?dV4ht(9SpP0-*$3HK6-v$?Nhy zi)c9FVHp9DrQx99qM&D84@0T4BOHT`=mjXzH^qz*2I*#<2e|2*kMdo^m-_zz*nd-) zxK$CNo!Xa%svf_GL&NV7u{F%-P|nKWTp78GSijP*_`K^VbT&Kt|(t38fvX>!2H+XAVb$s5gte?UcNq8!5)Q-ojlhb>X0Jq zR}T?MiF9Cj{w9QYo7Xmu{iW*QMoD_jBsXIB$CBie?Z-0DFFLwKW-ft5=rETNaO`JI z8Ba2|!C5Y86;BZM$!7gwUvR8#9|O+Ae_OuNpOh@ntwvNO*6;=PQZl+mDE1%mU!kH5 z4{#ggl2dTgi8^Z9dM0@6QxD)BLurm=Dt^4}3Gc;BKH`JoI}V2%-ad>%!q!MG7+2(H(K@Ro$P^dzyaNJ6lh`U+8&i$S~{y=7E z$Ua6>zY}}SD*_wlkx|4|9WEoU!XrdM+n1h%9ym?R8F`cwkz%}5jNQT#G|&d%`K4;T zh=UrfDPHmp$R=?_2g+>qB%7#~M3v)&MxAtb7pIMUpY=Ha@CSe`d?UQ+7ll@3yA&Mx z8Qdg-h=cR zQjRu~zCC4K9ZIXBtbB>*2qVyye6yWuy^KPsT$KWv4ir8M8Hg9 zgT%Ri8ob;3>2B)pBSYv!Lq;nOXI$V21wRpF0TtmWn23V@J`~9p0*g%Z$5k^8qtKle z$BP6afSpTjw!Vy&Zak!#=5?YbFM?7Ohf8vSlv7qD_{21n#BQGmhv_YBBsdg6>3|CI zMTIhd4SnfgrZ56L{3tRJNAQQJ z*IU?pRq$=?MegmG7nWFG`kCoTK`L;$$CMZl%YhQ^`D5XJrex~fu{YKbEd?2|bSyO( zy+L_-5ie$;QTjo`&DAHV*EzKfrC(@;ZUSE5CUuQs- z4+VA-BIJof7P(idD5-pQL;kE*5*rXk-+e|B3_MU*a`@nw+;-iBY$vj82-XBDG{-*g z!9C^gs&bB`moE+ld(!Pjaa6e??2)q(u}?P22tx)1mf~#R+wq8ITet}^1G5Q+! z!S%w;$?+gl51ZZ6bz*bd7J`|Om)rhvWQd+LuO3o>)+I0_-ZNVf3Pf1Q+n4T0)a`=h zrq+M$h*;077@6Z7%lScMz#ewUfA8IrnsfxEJza5Jfvz;dVM6O1lxtRe^dxdwu!iw_ z&_Sdq^$RJatmBV77`R!F78_>ba)`&uJeX)Et`|jZuuby(L_3K5+_vrCBmE%dD6ck2AB>43 zM?s?@cV%VzjqtIevJp1#;Ag2=73l_EnFlll^m2{~7Bnhs36VafIbm!(yv!Ja)CW0t zLj;pRVi587hXo!2P|*HqR(ze&(4c*My898c>-(xR!em1FeBQ9g3{f^A#)B6IPP9JX zYlFpBp;q7LEK0#a1rw8fU1eoGJRf|^6FgIGZfIW;IF>--I?dw~Zde8*(;l1(b!ui7 zPCexO4sH19Q{ZveUSL0`cb<`|z~czW7lL`yzlWp%hy0BhJSWD-dzHd1MMGG(Y}oT( z3wm-gkSS_v-)M-%L5GOgzd@qyDQfO)#Dr`m1n(=`gvGFw9_D!L$0WFq)sTi1T%plm zPs9iJaR&|0MXUL~#)Ndqjo}Ai!q?W4?q(S#K?mugz9c>WLWl-s-W~kqeG*f zow&H!*P7cUb7%Lp!u`gSP-xvi&Q=tsNGV?PBN@4i9cCKlM~tG<7yFLnDrG`CF89o! zA_TFT7p*VWTKl?Bq6!EOegmf1;6$WLBC{+#Pd?h2k_u}uJaDvi0s#>^;7dHbG)M)0 zuqY|_AUon^kswq_qRy$`4UdTuA6d(-N@1eKS+UKG>pW$sb(=U_kVJV1F0}KB^cXLx z{5ew%)J7~EM9sJBMMr4az}okh-&D{M#~3D%1>K-&}k0_d92SP^B^;SC#^&5oE5GQjMKWI9u zy?iyN$ql%f%H?6GT<|Xn`T~r^oRc=fo(SPzCT_!GLqm5zt>j*Ye$f@$Ht`s#HDr`C zOwz@`ISrJHjegy-(-K-ney=nqMP3nCSeWLurOOJL4xOIRvS|nl&lBFf8x%%(wr#uB zCoH~5V7T@4f%owPGJjuy+(9YP#OKr|Dl|T7Q7`I;Df3p8Z6XK~5I5$z5_(iF@n^*d zkuylo1s8}u#MpqB?uU`aFJ7Wdg7BsfvP&+AzO+yzll}&|-YWt-MZQ5owS~z(}qd|Ufr$c`1&0`j%*J`>7*TR`7#yWctEA0EgOA2u!n|wCRBQ>5?K$<6o;@X+; z614jP)I<4_5Vbdq5M^l5uSwU*sb43fdvklGhx3E(v_gvPks1UYUR5~`Dm&eh2{FC9 zLkgPp))~axmO#B%s^QsZ@xyE+Umis_1p+`VfxnDpBLc8?gFq&i?_C1Ya|-Fn0!*J4 z(s5v*($FCm-x3tSvH`IXs>8tB@SOM$yp*?F(>5_LFOls(6toN}(0 z8n!&4%*z z79CR<$9=woM{B@X7}}arH>x5q4XN#@YJa#(H>ijQ#9qS9 zby0%Myz2BmjwwYol*3tAK;uMwY|_z-GAp1oDva7z4f4Z_jSXT5`Ed9*r7t20`|`vh zoXC((MhggV>8Q4tu8Rb5!xlq!!`OWJd;v321R)}DttANm0ojCy*O^UFG@}b!TrfG( zJ}5l>uq;AFnQd9A<;V?Lyfg1)+!%!Wh9Cb04RaPwfvew~Sjn4*^X(pLeQ0&ah!>zm z*joaW_hGDC=Oeq)g;8pW<4J;C&;PO`33m@I+Vh**4_brKwM^dT~z~$5xusIHL)60Ch5V8Ss_vwIz z-5?>Lpuh{dfuNq#`XM0E(4kPtph*=mSlQTxMaW?=MU|ej^`Rgjgdn~=Z+VfldC@Py z8(cTL0KG*%+J2w5w6=6=1Xk>AdYlAtqyVM2w2xslY9c1;=I-n)kesJYoFrz4VC*AMk}QL*1upmZ z&mdwtBKFv)NJ|0_&x6kX+L^F8mQ zQbg&)QKJXP!5UPKY|-xyvCm91NtHPVt7R{ zdav>Oe>nh$kylvULnCPuAjrtaqQ`(Oj46IV0s%X=i0A95m2YOkj-BBA4Ji=jYuM^M=dZlH84i)gt?~dno9uY;Lkoj zG)0x-IB^R0+^&yqkY9^Z%LNRu4GoPp!Wlr`;}3OR*mT|Oe%gQE@k*OI$1bf6bwDl> z_kJ>%TnPHz+x!G4bbmpuHa-hS&iwA;pKCt3FHI9L*=};-#NWX^Bz>FR!uWMDy1D;N zVKZ(~6d%~u5WN!Ca;s*^5IwWSKM%^%CkU02)C6;IaB#L^|D3h9!>Bi694rR z@x7FuwPcL6@v)qOJ9{Llta~JFZk#u*=o&(7x$?q`o3Z`T8PnZF4D4ewOySfMWGYOy z>s$x!2*J`m?^u0nezb)uxH?ABwP+nfLt|rIxjgGP{mhpXn(tiD8KY2}O;Dp4hlcvo zYek29B2Ps*2frH*2`)1`L5t|}0CD0JUXfwo<6PQH3V-lL{ zQ9}pD9g=>1-v)Y3;J8*=nXwkwIwn)^s>V6o42-;PfnNl0fK9q?0N8G%WnGUW`Knt! zUrVMI4s}Y`u{4dY)ehD5k-;UAkfZ$uNgazCe4iLfj*Zcc5SEKNsk?C|jA9f;jghos zSR%Q6>N6Y6{t%JPy&AtQ7RV;BUp0bH2p!xk9s3(}$rW3e@O`}1ZpLqbHfd8%!JEOG zR$39A!PiG<-;NmWP$O;7${IcOksDpm80et7_yU?nOeIlKW6h)-|3`S+rs$zVJTDpP z)Z7b`&NOt6U*VI$mR>*&6jPjB;*BudSa`G8B>7rW+&5~|JK4gVd!^_g`&DBHrjod+ zq_HvBdWeeqXwgJ+W~Z!}MT({_-Y%4yd>e=^Z#u|E1ecS9fs?>ZPfs>*xIEmAmT4z% zuTW;ED3R1BZUSzUWywN}-mek~Q==WDDvh}JxYk;;b%o>wUE&-&_^81P1^W2T*ZBCf z)$SxJ6=`?Z#MhcF*oA1b6ha#kiE~s!y;FydEcTJOH@OsQI~ZCkH$WAOtpp@T$-~ws zaa#u#%0gGy`?+zh!LhZ|G(VP%H?Lz|ETmIMN1z~t1_+pwVluu1p3l2T)15MW?C zHo3VJT&Iu3z`)1nvr-`&lVl%dtQ-9?mr+)So-3C~Szdd8N8*5GcH(nzP9dwjvtoAh zke>OI60lF#mX>kQtAv4*_G`e1v%k7r$}LYHY{Nc_s4fjGuew4B8eL;! z1MsC|4W)VSAA*9QUx0x1PyeoY3Lq#HDmp1N85lnmF+^a&f9Qij+@tO zRm|G}cf|;NNM5Gu<6yKx#1_M+AXl2pGBJ)Xu;xT$lFZK(qL8fDOwagb{!S|*;xFv! zudwi5UzLC{82AG}8rnP+@kC?r-4RimWd&@~Mp7q9hb&H736b-@k|~hWDx&@mG{GNC z{K<{i2ea)h9hXBs5)WQeGadV3vB_Fvd-{;fn=CIbe&fZDk<3>rnYHEw;4X9A*w`4` zQmdskrZShD3CY}Aijf$LLry%=DHp)TvXoXIjCtle3 zr?HW=6*Cm%goDoqqNrsO-(?Xynwa7)1`AcPy);eVC>s2Ly9CQchH?a8WjkI;Z%nu- z>Qg=L;8AU+Wp9dUFxjIyTij9tq&Zx$P{jbd{#ZB$t2lUP;{3e%!|lG(1R3 zsjKt>fop?eW>YUTa-b~RkGe;mpHxE;Xy7Vxb#V0HRIu6HJAukOBgYY|f;m$$8n0@# zd<-{ZF1B_F5ceBRi(4m4^#FjdmKO-1xw%>KuNs^PY#T5-^V$bt$ zOY4r|#vQ+*loZ(4T0dg(%O0b}61&Gu7>@JCb_WKAuaT)^xM-+QEx8h<>{8F-(?p_p z#|Ngk6X`UGtEsTs$5QnD+N*?++Q%Zc+{y+e2?t9XYf(wupZ-?SmNtG^9l4dI@VF-9 zj{~8h{F70Pohg_SO4Np)QQSB9__#ks!6UXa1UE8@m0u$3-rEhmrzA0sTso1q5`2I8 zNRtu|+c zkNEx3^(9hilElQsbXI0Xp-g=I<6?&yr~=KD{Iq;6%PD#nQ*b^CMX-!#J9o@ z(u?csupD9aN{r;1Kp_Fqkc2O_MwHH4>YgK0v88+I>FJ?ikdYISROC7)i$SfpdZBD5 zo+eQvcdt&)@+x9sqL5o7rp9w(>Y8Mu~TGn?PVVsnkLMfmF~a@w42K;tzU`%t{ntU0 zp4uA!NQpasT_%*S;$8|Q#7~3G5;$Ue{J`@NZ^bw{DyImRLg8aD#=Xw9 zOLK`1dHYD|IQ7lwQuB@pnVN&6{3EBiBP3#^JoQOya+b*XsD6Ib%GA@8nuMOhg{6=Z6HGqYF`G z9(9>0X80J(77zG?%j=+q@>e($Yl|~Wp%Fx|Fz#1<#C%Cph~$4Dkr~|I^ykXq!EC7t z_wIl(oOs74r>WZ35j;VRDQKPuIGFoURAX_Be;aTcE`~=fp#`|O&gxE%k5%RBjt_#l zV$!Y2ij$M!b^OE56Mt%qj!0HtrnR)bPhZ66Q=%eZWj&6&q^(%Sr|tDBpceKMWa-_Z zK+}@2%L@$+Lm6sKzt!f`RH{coZpAXg$`TWwdXXh&`eJ7LLBIh(2w7ARcy=@}B^n+U z8VU|r0~=Tc8wwhj98JbXE}{g3YUF~+F6xv(@rpxOIWRG|8;g`vJgHXE*m;UoEEpD> zQpI)a?A#=%F7NN0X;>l1U!m3M*1%hSqaRWE9)4%++@<@UFZ(A3Qr35`HKvyTZ)fRl z4L2$YOenqMy?6gTjQI!X_qGt&ZOXUVN1Wc_#`q|j`2-;YpKNk9jUffoAx#5MTeuwM zm{SJW-MS>we9^6;1MEY-V8jqTnc3nJu(l&Ts@{Gx{2FsZa{}%7Wxf4w6w@8W>if(k z!!BYD?$kMn`9qK4CO3DiQT=BWaq*z-8zcVDg1g0K+|4XlA&ZnA4ENF`zjDm)^Y%+m zQGQ)&xUD0f;KSHp8}sSXgzG~~DbI}d8?(2>)peaSjuko~xjjZ5Ym9OF_G*m5{DkoR zV!(>?=iA?1NCvEPKan05#sF!abz>Y{juTu8Bb(4D45q7xgmtbjyw~o?Adx%u)E`5H zunj%pg(62+orcn87&%sKwv;%9dm^{IUt!O??aBom2IBNgb-WkvyPx*^Nw=3D6>H~; zPV^IO8qS6$!+6%eXuq5G+G2d|`5RQ%u9bniJJXFJ_xNZ@lB=2d#2mL)Jovb9^BY9p zj~u&!BL4EdzTv@R5@R>%BD#R8Sjg~NlV%o%3B??snQ7Zf-soy?%prIllKX7OYYkA8 z`wdN}?a9iTN1!yVzkM9%)X(okob~ATj=g13+JHHHz1bnnakVS7TB*&R01I!=TSt{t{JX{+V3ZxN*=aBJoa3w;|U(yTArGvBta z7Mq`|L1h0a@nKZAYD4RDDvQNE!-l^9X~juwh?(>|xx+zMiRNu<-UJMPtE>>m2eUS< z9W|HyRvx0%&mBe1VhL*n@1m3}h~I365_^a--u32DUy}yBL0ZcB*GwUz!p!CQIe4SNeGhkNVw!2@E*UC!Y+uk&r zDYHD^ZCv#1Z!auO{pG}sQIRb#m6blfy<^w@8)W{_Twrc?m#HVK!gR51Pou^6F^-$9 zvVUNO8hjOOpaSp}3>sQGNLXIk**2FvWv=JnSWH(zD+PFEy$>bmR zHiY2lj+sFxfkE-e6DyB?P{E(dq~x$+Badmi@27AK$~}c0p)2=w>if5{de~Y!W|u@* zgSZ54*0p@j47xA+@*J(kLc(?3w6}2Iz0h zn{dC>38covQ1Z#f%+rcAg-Df+-GcYl_R>eWNlIxLZ=@SJ7kM<##D*f?d?!n^Gf?52 zt|N_!l1)n8`NMURlj~iHwOPi5JpsSRocm9DGuLwrMGA`0gXc05|H`EQEko-YpQFYp zSJPVEYYubILQr>6SNrq7h6NvLn)!}1_j{Clj_)$NqvZ9{(mb_q=bk{wnNTRpEYj2^ z2^~W`xFQK=DV}|Y+L@ztD;imZkYVn!5&9Lufag&GZMWuV^P{z_ldbSxO-%C*!w!+E?vXA12_x-(r&)%8O)pYP!`7vFDLXDQT_Z|Y zG1(}4$s?@K2-JOnO_BYXh>t_klbZq5J<1XA4Qgu8xf1i$m!Q&SI=n2eddC)lklu%ETkm3 zL_7Jkyj||8M+RgA20gVo^%Y%rI!4_q& z=KT-)`6)!70PTZuofaLNLnUMaYowGPog=*(4*m`AJ7le;mbIb$iLK|i2x24WYub8N zFq%40LD^SuFF`9Q3D5-DQxs@tFuGAIq93QCa3oS)iRr)CjFIZv>r`Rd+l6-X_t|f! zFJRa423r0G**aiQHVHSEkjHF4(!*F;T6-)>BO9U^AhLz$&w zYMdXKe4gaXsGqWrdMC-Kl{$ZL4s_l+%{z*#PoU)kNbH#|j&7Liv8}WUs-4tMQ2-kkUB!krs^{r-4_OfJ5%n6%9 z)<-E~!P0ZtZ7 zd5s12cg2?@Y~)}?;xObZ{&a=D^y%>i5B;C#jzbi>zu_T$K+Jpl?oF>lLm1JI#-K^A zhX@V+*7D_tpuQ8Chxld>;YK*Crop^UP__Bd5K{wxN@dfiLnO>{CCBNC{x%Bd@nU{q zL#;%CZnLTI=JW#m&)1syJk@inL7wy9U1qv1n7LQY1TD_G^2YG3$T;C{S@^a=_ zMe}PEsH)ceB6f=$HQ?3$PAAN%m59ZPYaJ z@l+xkBFmmoQCIp?W@skk!?0dRvvKjy)f?w{)~E9{p;zZYtvPq|Nb)q z*L<&Hx-b{)H;6V9O(qQ2SfPfU6Z8t%aM0?7W*7tFV zrcu%Jo%^#ray|@R&bk5cv_eeGW(J60cgzz%Ge7-IesYp8su&-0adPB3tZv#Fx#VTx zX>X}1Da~s#t?FUUQqf9D{cg1BHoNYm_>0Vc>M4@mvJ#AB2aQ-6TK4Y5FZATUW1%Es zQOPxrMtFR2&=PQ`_pJP{o1-9NThn&6S2EUM@RkTGEG-SjUKsnM~k zt2*#V^XC-=Kj-17z-Dk){cAACrB`cA657BD_<7L}I#8sOS%fV!a9txWp*tScQAR=K z>WUen-Z1#x7%XX7bDYk!8{85T-7&c#Vp`bsu%lIVqi&uuvBt^-SlcVKce7?Q%T{j9 z8K1YMVn2Lik3awMeRX|LO+kf`*~W1x(2p;F6KAGO5aR#)fThL&?_ylU1PvIzzfY{} zBY-6HTlJ8SX)#Lx#QZA0E>Lrkr6L`-A%uxZqO&N9#BN-y>dBUc;ZWh6==VqlW1+I_ zGZy-<`G!9d;N*SxQ9sOCj-MN6YUJTt>}RMH9X1VySeZ zy+kC#Xu$x@7xEA96izg)_foY*GUs^^2`H9Q#_R~4UQXV+(YmW)5NKcw*z-2fHLCOt zeIN)OlX~v#@t;9v92cG7R`p*V#swI>ExCpH|317e4AmH$KGyJ`4QYPW^h9elv>#IQ zzH_t`T2F#PGIR^MX|_^*ZKK+~>pYzBzF{w%Y@RP$De*1bBGWQP4W4sW<`j8kJhW`@j~s9CmCNFw|(OCH`Nrj~VDmF~uKp1168mK~N_ zl7;5cj%H9uR?0WOlrO}Goz$7J5E#Gc$WLy#qm+b zhQKHW2CN>YU*T&C+XC44bp?fG)tTO2rbxc_d^{9PM1-mrXvTXmIEk2v^GXs*q{-0= zh}T+WN!R`bX5Ip~j+b(&%oBl$tZP+JX3$_0E5;O+-W93(j*7A|sWVT64mW4bfblJ3 zLIU~%@*B@12C9;13CD$;(ytirrCpE@p=!8chXy2f%#699d0gw7x(9xPT2EKH3|7w{ z@82CX3#75jH|^zF;ak!lS2AMI&a93o76!=hNC_v46A`|Z}O*VfxPuPs>;O=6W z&K>WlF~L!r?%N(FKqKo-M0-YX?w*UH)Vf&u28NOTHf? zsK}}sgiI7UU?t}?m5tK7aA46OR@90xP&ud*R85s#!ue4!O^h`)>t%oEZX=VTCH84Ig2Ab(bi zzn~;MEHYpw;9Xs;@*AW`?+%<-HNF(v<>X-ASz2SDn@~9O!6qG8WAJ)_U*>-RFZnOv zQ8v1C=E+U72_35aDqB`{YlERz2&H@D6?3`(M|7gO-o$Y09XN z&NL3QR+p{ERtLEOfav-`GyL>*>@r6u3Z+$csbOh7L3y>v*eqnkPTpKyCp#=~LFLy7 zUnYM=(_mQ4ylV3F3OjwkjQu|Uw?pvGb`*k&0UN)fEe@e(YIOb$@hNy$YAvP^ydT7L-e`%sfg%=*hi zn*W0{brlKQVG}011u!DXl~jy?xd?I_Cx@4o(W2*?>7Df$UZ|Wd>|t3ZgSo7t_DVGv z>blaN^85hc?IrVo=$b7;y4Wpd#sLN?Cs$rQG0-sqdfW}|Bq;f{ ztx`N&+|RCtvO8l&X9m$HE(c^P4SB43s^|v2*9|@g0tzQ?v7SnK{*VmqRJKb8RT%YotW9WDiMf137xu@B+Yw>Pq9hFuc@F8{5pkL5~# z)&yoP#m6UR(j&5FF?TX2vT1$_VosOILjbfsO*Kh8;mAZ}b=fHxQ) zDQa(FHQ)>`JNA{?lE-h*NY|c<&!-Cw3oj-$H93fhh>$N>RE(GB;`8-bi>kzL63e_J zj9m;u#}E*T)Zcy=KNd#CysW0GOlgrpJeVT^Wy?ZWr&PH!bV$j<@GCct0Z29WBk8iW zrRJh7s5B+1b?P-LH1vqouCKgJtzNjh9wLDT=6i0!m7+NX400Ep&@qEc|GeWLyk$8P zZwrGy(rJG;ZXfYeJ!hxkytVBUy2`0`p({=~=d9{?r&jJ}*tIfe=-^95@GP`)XZTzM z->ERYx7|B(@K}zdS~n{FN_!B(#EgmK?+vKX85T#Xrvf$Ffop`_s>j5VvvkRGCq=kJ z66&k|H1qK0`C2cw>IDn+zgtg1oeJ)zea$01MwqnOY(8Ts+1>0IV!^6wtccC=ChE6t z&=*+vvC+O-)o{B1I;`L!WgP!vX;CD?`ksp~S%oMT3 z6+}O*CAs{e7LK2+10ydb_q;{3;iuA^ySV)EU6@SpFmmXStj6m@O31~J(W-8VGk^`N zDZ?#1!P_7x1T|#Oxz_U3N%l!Qek+QstJ4ne)9AU#i%hK3_8imb=>b@o=YOm$$t-)cE1UI@msY=7t^3!e? z030Pfu%~~i(@`N(J#66IcxD`r_8BvASQ(ewc*-an|CQT?3W*G&()H+-IW=9Rn!yZNjoEjR6(l{{c{Kl-#) zzOKGc{Xx4THs|C$-sTgxB88n>-NUac?A^@c@U>t0{V`61uZmBegSlX7&F)bm2Vf)0 zG2b^hhDrY-8jR~#Z$r2h?|Jq9WzdbX^7ZGc69o6ca4D|5L+Wb_i&pR%icf9v+Da3e1>c!zm@IhmW65=pdp#)!_!+R$TP~1tew0jP&u>VcKu zV9tfz?dR;?=EhM}`S{^3n%T$!!no2+$Xt{L?E|h(<-D(PUT}LDF~PI{1aJNQnMu#O zVO};u^hU(lAmrJJHx@yW4n`Es|A;wLk!5fWt*~3L=(u!g%u{mKRPtHHpK7Jgu2JoO zRqt+61@57!xH{&-mL@v*9$uR|L2hBBUt}&-L(Zqrrxi`7_$)J>BRghQYs*jH<4*4v z3b<1XF>DOfJdlQ*NXnS;Ak^)f=HU^NdG0%Bpj_W^MfZ$Zd9jr8LO` zh``&@g2B`UqaAF${BNzws-wOw1;|_mWAC8Xr;norV+VE#cY@czlu%|d(frQTJz(iG zPl_HGPuQnimm~kM!0I(Bu;m5AV^{hE;;*6)d_ zkDay~Cbc$8pNH3x9sd}052aK~-WKsa;95erXeOU#ndJ1<8`vYtG^If2S zA@|*LOpPwxxoN)>QXi~kEZ=sJosQ#Cpw^|U_;aGbGI1-pXR9mZPq%a48n_td73Yr+ zEU^*V)%pGF#tapiI7TUenM)`UOTrU`>m9}x=|+RchIbK|bl)WxO?Wj0*q40|Rl=WO3z zpfK5t5vP54kB@Zmy&uVPT%HvHk(8@zjY>a*?wE$Rg|)mIhx1(Y0^27|JwLAeO^mWn zC8-*`Ew)!gjF{(d7G7bk$60F#%q9*vzc*SEs@p0Il`chA(cQMU?F>;kr@hv5A&|i| z;SeO6JZ{70s-lCn@?9yVFOEpy1(ZeL+4O1=}+OgKN z)C9z9dAO0%KOIxg^chAPNTHKxk9cb&&X258hFmVk1;`Z!X^c#dY503sxEtj4rnvV< z?mf<~JEu(uDKk6OOBP%z$tu7>qzC%1DAaDavB<8WAX~2*RUS6r4hAkE)~-|LranO1 zIo;(Up2s$eXB~Bxhua45tz_aXYH9vlLOzYsOJ)9$lF7_mWoAj^lMk#c-xV}<`)jov z?Z-KQF%_{!PL@l#kdvE|xi)S0jYG!Oqvf1<6k;|4qzF6A*g(z&@JL8jV&LFSk3QYgRv^b?N4t*V+{0)~%Z?z9oRSZ-Zn zdE>T&r7D*kxlALM()6`>)$yH&RQMor(81KR_=bp`)Rqed(F0+oKlljXJ-}^@JF)4^ z$^o}RgsGOFdKAY(co^TF5O%b|H))OW8H%YWFnZX);62=l&HRT^F}AZWuep1Cz(iMm zd*}7Csjr_A%x=Ima~1Hf%BsP_>tX~lVe9y-yNWh_hna=5?>vP51|@!Gxlf55LVO(Ayvf3Hb|pxx#2Jot7EsX2 zd|)ziHF~PQd7o9tJpySMy(TFkc8n$Wleot0+*<|A`3`*v}%4~qtV zP@@KZNEy0ckbFG5z$YGGOpO_$Rmkv!TrT;WkNXBN9QE7`?p%jKFZdc8ayPM4KX9oX z{~@wuCuPDTwjD^)_4fG!QPPw}qq8%JO@|^Ys%KIv8J|k0=H<&{BQpX&8!L_W`|;)6 z1&R*Q8)q!Fvn@zILpY$Ms;1~wWB7>X))}G8m)4P8vep5+Jz6RX zCn%+(=&o2St;lhD|8>LCn}fWub5MsR}dp9#tv(fLS~ei0`%lnMs2SWYaep1Yv0o( z_(URj#M^ACZH1iXf}pYr!R|Tc?Yh#^{GwDIiug8O+%=G@YoprqR|Uqv>X<<(7$gN# z$=8A&V0Sh+1k9hkUP<@;29>IMF4Ac;+qu0fR{iRHwxnyzp`jlm*K?Cp-o|)3Wl_L$ z$n2-4NT3i)LFTHweE8|5ds=uiS%B+|JjPB{E=%?_9)!`Aw`SgVkq;}YhF6n`uhM6_ zmMuDTE%%a{eZG<_#Y<$6PDLO6&`J_me48g2xpaDiUX%Wjz{m3Hr*<fQhKV>6RrO-%a-Y_pd-s-vbU-7SZ4Ly~-C>sasj?M8S9;oCAZWz8jI zgO|kQiR!7`(cC(OcI1o7yTRc?Zk1pCYS)xnof%A7wnK|G@a07++_VCyM^%dVT7+{ZZ?Kqad zsQ5ktt<{N&Ui!~NxwHPf+Di?1T6Rjem>g5^KY=E?1G*{xKhFho&hr(blOsV%J2K&h zTqVac>Hmyuu0K*QqRfO zRa+qtcjuR=M~$RDs(W2ybzxj&`}^vSNzxVMek+qxT{$Z<%Q2WW-f|=n2LJZwBwD`%jmIc4cV%xi#IvLO0$5!1PCW>qu%}l zxtBS+<~zMrBl=^76PJ-iyRR^8nN=IHytM4&fT%&UyC==mt?VVhw~NFq{aO%7h>}Intj4!G3RYJ4~FD zi3$wK_=zq2y>VMD)w*glNVW9xzWo$l9$c^BI#<8_gm|gGAzFE+e%)2q#oBrF^dpYE ziu+u>DL-*VV$zf8iD9E{L21g;;fLf8tGr!d&cdvSYSG$>C?cWZ<3eflesV~lY zp<}kLX4fdp2G9m5p0xoLWnj9Hw&AoWpgy=fs}C?(a%k)t;CS+K>5l1Jq+WBHXU_%* z@|L|x3s{g7?<*G)TMw(Me^q6FD}R!9 z)Bna;xzM)ubb2y(-=_Djqn}-ogN5{xlB`-_=Bxay{^`C+K}G7vS6Bdr$3L*#_A^PR ze1+Dhx6mS?0fcE`Z}oHkK{*8$m1zSwu1B9V{Z5C=C=RC~i_tF|iqfjZ(S8KaipGyW zRL9u(iAL!*KD7#vuwiNiyfr@c9uP-G0g$fPPa(GB`U(4^H69%;AWe_j%E9%^Xfg4d zZXhCnPf9D;YoBH_9{cY0@HYRPF2DS*3~&Q)y}u16sGe#U{Y#VVU}=HCBfXS?Du~@7 zBt%ASd5Wv^lT5G-SJ6oQRHqa@#(R{y67sYL3t#(W$mx^G*eY06R)Q_>Cp?8)jk6K| zp8Qy@P_{;QB*Mmj50Wpp8IR(JFyu67<_E1yQ9!7R)G6Yfe-BdfgMgm-u1d}hfy z{tfEG=ApHsc2KwOfa1$R8UJSdkYpD3Pb_)yp|)F|ar|&#&F~{l&uJXC)_Me&T6G+3 zsz|hzOY9fAqH2?pZ8l9oqhLLgAa%L*3T{oB(nuUvpNbD=jDD}ON(D>d*y1O72MrN| zuPw|Q>&Wt-8lcEmTZ^I^SGO0+Dgp^$Eu-4PG0P5Z7)a@J^wA`W|AF}ANb^iA{x z8Q^3jB=z0uWx9Gc&-Ue8Q9Sf`@oiz#of}AIqnrAXxoMf zo@OswHlMcYz3zF$YR@tGp(yi;^MkR?yRQ-FqFhlBpWxpgpJRfR)unY=)j4(pX6kJ& z9o0XinfxQyGii2ExLr72Cy^c-*^sRSo;ALmyjB#`MDLfQV%2Hfx@9mC_AtNhq)?)$ zmz3^f{HJVJ-qzfw&XEL4$V*d=*`~Lwm~nqlb>j$StOfornwI=xBD^0nk29FoE2|Da z({&{kWq7A1IbFND#LNm=uoAjbatK&yu!_yH)RZ+XK*BILeN_K>Geb!u4hk&AvKJ*0 zYsR7A0*p^H?N3AyoMtoq%6%SevN60RRGc#+ns68ZTmB4Y!$33i%n*<%XubNOv3#V~IX+2wrN##z9mP ze-kABhQ_acwBe6+M;=bUrr5O}l3KRY-rK%$zbzO1$oTfx;Gr*u zPhM#O+aER_HSM1g7Kaj4UKFj6!DyCu{I;l|8=OHV^!AoM==pwaZ2w%*Lqg# zT5VW-!n9>KRf0Ya=% z&wU5LAFN3MATejjt5c0J0Z+KpkKk8n3!7(YnHj5D->T%-A8ztwQ9xo5K}DDO*`1`h zM#vnMT+z#C&RqPnJzGWEcoeyJ;E3+u33^%Ik*~o+q0iHE&5VgZb&#MY3k-&T81~1u z*oezP&5wwAP6soma;4i-o4TY@Y;K#O_%~g>atiPANf}D^T)Wo+J8uQ885O@WUPkVIHvQjhMQ&%}=(31SO zk9&Wh#&IbUxyKZZ?<1Wbp|qb3-GRQW4ufMNrkkRwEW?KfE`Qf2CzWXcI@Gr)X|4-6 zU&$~5u~@xYG8uV(G_V-Hw7Oh+NEI<|PrxQ3*Q2{wRuiQ9pAeox0_x0AI)ii9gCbA^ zqNjAtfY#`Vk{0Wb9i@j%+)wE zyyqs~3`|lx!MRq4(U)pso7;WKVnrm%wUE~_e#r)itzTbszmO;tg&IOlA`=zg_w+RIjVXq`8Oy;N`8sGEhu|xo2~a#TW+Eh&d`1! zGyj6+FJ{R%G8+nH*ncRf7Z6!|`f>MlPGb}!iqcj*3|SU@9fQ6@A#{Ku=h^xF&3_r% zu{0sjFq|4ydk%|&MQxUCHRHITQc_biFoV??m8T7rLE0d=GWo1}HpGgZIE|v% zabM1Y6nS>A_B7<8e=_AF6>~g=A>@Y3TKS|kmtN$-kn$T8YLd>6 zirl_>^40C@VB1FKl+Bt0%r(++$#Hk&w-zRj<~lEr<`&`^JG#te3nJT2hx#Wn-wlfg zQTA!UNO&Omhlh+xXTKOMAP4>G{CXRrddCg7JcO(jm)45!VxUBu6b5snJgz^e)Ms4d z+Y8rr=O=Up8EFm6S4V~wwS^lp2hGA+S%?B^cpo|u6^!j+=fNb<0@VE3s2xT2tuM{n^ll!P}7|+Czg+Z|KPq2 zU~VZGbIbdbl-LVvvp}AKs%QY!T%!f@&IXkvWDvc(Bw`WhWisY6OMnnUyi_tWHuKlg zOI(+W<>OHspkhm3du%5DSx$ij+)vrlMl4~XqKVqA8~hms#{P4zYLZ_#5-5bv^`UgG zGze2aFN86lmOZK^AlkXZ5V;b>mYiu`i1XNui?8hOv`DE3%-A4X#=cpds-3>3Mb#FW z9_{T?a~9}-$rl#2QpT>|Uz<3v@viB{Rr?1xg)Rk2&irMoPPpFDeDQy4y?3rJgE?a-b3u$RVy6-YywgnO? zMy_1j09U!Iby=X$)0vIWKu5=e4`7yD%{X{U%q^%nHTwWzMl~wAv~F<1)s?jnB>3efPt8W42WYX+ zxo}heP+$IdeYlSXP@!M{k=Ow_KVVG;fG2i7IbEc-u%;b0Z_0X$sP-s?@}k(K!~t#Q z>}9>m;BJa%gpMsr!i@$iynIFR{on|ITiWqD;lo%pB9QU*@|n**?ain~$N@b=;C49s z4n{*B!vZY(yO&t~Nn6TZ7Wl6^qT(eUiPr?lF0mM{|N3*`ctt*E|CfGM+J8x3?poZ7yK8Yuad+rTzjyCi@5lSYtRzF$B$=c8oV|ey{T6DESL&My zg+1Rv@q9d0&}Qqq8h>mfo4ufN%2hhf-!836&T`>^(ut!oP`PVwOTnUy6*qtxgM^2X?LRR1zl%0+B!N zUJ@sX6K?JJM#3)s4S0bkv2t#o$H9|c|H9tCim9^FRQ3PHO@#w6Jj?fAJxKG%AmQd8 zt_vPf)ZT*6F0Rb={0|ToX*|YTPcOzVS+I9~Re*MOc6PYwC@Jx!N42R#rO=g7Q2ERu;-tIjxdC)%W>xrsrYGv>)i}zh8nMA9mlPDMgGmZe09k z-YW%{2=;2DCUv=`_SwKfkNK}fC(P3^W^Mo;*ok&YN$meO z@)Vo`?!Q5_Qa^(G9*g8v0ZH|sT@UfklK3#-;t*R&SzQLk?32U43YBKhRXd&dzmR@T zLQ%2*?_4n-CM2$ZF%gW@Mtx3f)FAJ^s;~POad~LHh24jDjpomnBoYg6gwv+!nk#+b z2;Un2IqS851IL^I!uZ(QTFq6|K|NJ4n$qK11FJZUcsj+Z%V3WEbU8Fj;DhtJDP~(%>s+pmNi3Tr7R9Ad+7Nn z%e&umWS3*ckYT^FV^1GXse*CzQF1W0i_7C>X=bm^aS}bVR{z^HS|h7w!6dF}=ik?b zy3z4vEw&QCJ(JOZQj4QJzUwm&=|!h?qEpvD3*NHV-Ao7DzkXxA>Yc!;l6aW z8{qHn#l0u(^KXk%M(Zy4WV|MkjX2mjYTszYZcyQAf_FuZzw=tzZ~YwR_!jf9glTi- zO7Tgu9qv&Ul}Hh2mkDc51fdSCGUcj%v7je|6>@H)@0A>LM*)3O4g!?)Pdj(qfq6nB zb9tj601=4^Hy6Oc4>j0!C;`Xrxy5OD62@>j25ACypNt(q6l;R z&v=wJp;Bnp=MHeK1Foe`q%)f^jElfED!70|5&rV;{lFnb!{i@a`4?hGOhHnE_+M;g z(#pFo1IJeua8ngj*#RC_1^@T|n*jW8BJl5Mr4{+_T?d$X{z7Qpg zPifOl*GxI)d-^;xL)9xSBYohkJq^o%ol++47Gs;<^;-Pvxe?aP+NYLoCE)AmmX2$JX-dy*O{6RAadPDLNX(`KlqM?=QM;Tq=?zt7Bx~20}UHD5ms@VNXV$Z~8%g4!(oEtE@VvMZnX(iQg2!-EQnZAn^dBHp7*Rp<)hQ)AadC~pa zXypnNmz3)>jNQH{9Iz9gyX}pf%DC*5-}kQKT3;3%CNhH^(30Y$$Or7&8*vB|gaz=r zQLmFIyT1qwII0SSzciq3){osd5YsoDH8XXymYgY(i`YrRqjGA_Jz*1^X@pfn2nI6l z`@$byeCr-Sbk(mhPmtD8xd5C zU2eOQwcx?Usst_+vY)}9 zM-ua2O@Mrh{aF}U6LhA>PsWR3fv4cjG*M&QP4w6&)O)4}MO5E?s=@bJOMvM?YZfWU z5v6G`=uX{kNXI~l7gT$lF4uY`8!0#o*|X9JUi9Qx=dI*SS>ZeT&I6f$t-b9{#^AL2 z?5szGMA*Mcc066}SJZE|(7TPlhH&_d=;J1Ez4Z}yWlTSVG0f>md##u_dS2bNbs_%o zO2b}H(LPd=+|J|(`1!9#qv%WtvGt?( zBq-|65?XZxz)E?!Ya+rvbgmLyrz+1sO7L$%|eE;I(Kwwe^2sbC8{ zWeo4wEO~|P6NWV|L2E}L5{dz3N`3};R-B3PIv65|16ZAqQ`*b^_+!J~o37^>_Nt|` zxs&C27%E1mKS>-JY3s#Y$EdT zY*8Dxg1Gki(ca{RELc9DbYMULGMy{!{f;1>!|6TS2izm2SWw`sP*NdqNP`U$UYt>P z@nu3=zd)S><`!9{F<1L|7&DK&K21R7vChf!$W8S|6}hD&kW;h4f|#viue<*~K!nk` zprvGqMV^P-E2!@Pq%#R~{%JM;IG1=~(ti+qi}uyJAY30|j72dt@DMnU<*sy|yE(B+2bWEv3qr(qdzYq`m2RI=RJirRBWnbnA1#cVi4K}xhJBXUswAR_K zHWJ&6ffX%M-!+sHQ!dJqoDuJJFErV!$K2O73cdBv6rLFWIbb;25^IPPC0j!I zjLmG7gNp1C^jS8qa<+Ph(+uW~%|)2`2_-+#wW15e2V;q~IUsaRN_abOq5MX9QAP3y zEq7O&DhTwRVq%}A&51A~9!(ai zP3S>~SWGw&#C*j1##6!Uolx=CmZAeF24^}|P1FhwFJrf|wUummbeHE|E5^1!>_-E+ zj5FF18O6~eWvRd??zkmLMP}a0F0-AF*WQKu zjU>Y*bbxaQj5aZW+Y@Q_joyB{U_xu3w;qj#vAfC`RvXXhl=T>YPl6$0| z`ZwRSoYwe$4Nov%r}D=`VQ7tvK8b+w#MWizF-|;b)G5T z7A+@@I%gM1peRuiduzn^H^om?M8YY>W)ctbyCf1^GtBM?Xr?GyIF99)?k|2#k;2P> z65PR?X~Lx=-;8nQX5UOslzVgEA zz;>n*wx?o~x($T8K6p-MVuk`{(z(=%s`9W3@2>uF@SUf~=9`uk+=Lt&1zO8P;IkQg zKy&mKJ}K9rTO;IVJYdJEZIRl)=;W!G!GLg_p~%b;%)-n|nnTO^;0bH@$t!sf2r9l; zVih=)zlI#D!NZQ{6<+q5CZXJ_=W-daHYUdzXk1ROON#uE5y7lEpU z?cZ_SagVgKW<8U+ve&ED>-#_i?0iI1Zh&+GL_#TG(T%$IBSPOnV9sOE#C1_m;P2Yk zxByT^9u)uxF>!$nyyqq#Wv1n;RyYrk8jbHt3nGOlA#<%EPyi?|XVG|ainkpJG>`;) zFwqZ71&g`e;DpDxD!dAbVwv6gZxv~qbM@-K$H$&BMw%p%mPC6bKzQP{V)-1oyvK8= zyq5|Cpr7p;_BAOF@R=LAA&@(4qA?s>B)zJztppx5;#G2i8@_C^ksI;oXm z6y>T4C;tIM0gncCybZ$-)qZCOHWA%{UmN*?E18pIPeM*UA+g@gc0Hee3vyCA>J9%% zbQC9aIZ+|}!e_T{Lgx6);$ry_XwWID_9b=ml}0LX$RV3}CC)Xau8h+7T3grU;)kB^ z@)Mo29-Z2I=L?hH@#MLDAC5?>j)+L6%ohhQxt$Mm+oF`x3Tqc3DTD_fH1ZI!<#t7POYsrf(JRD$0~v_q4oH9 zqYespLa>Ab?0CQ{dw+V>A+8|H5fbhF$ISE&kTuA}(*+wu6FSIC12m8Wm7ry*<3(>* zT;6@uKTd1J&yXHmH`zYbu$>xxr+U!dP*xjZsX^$f^W^H#R6erWch~UdT*AO}!(C0o zEUAt=3L1tdv3`#yqi-j{cXa8QdQ+KF{m4-H(yBxCBZ-`E%1%ZwtWvH8At>~>5l-q`%9HE2 z23Y%!tTBPDUUh?>)0E*Vxv!%+VeHP0K*ot)Ho@hWz+4Ir$A-nSUBBgn+Ff7VDTo+h z;sXSj^}Vr7uR(3Pt#wEPwePcatzI(~$j{W$)(K*=nN@+%hs5a`WmHz89 z?Ef-w^$a<)}#f7I^T?sV-C zNbG2Qq-VebHGHzE_|wUY;xtOQ+~$pOOa99{xSoID(U}|DAosdgR+N})hT0KN0ZJmu;yHI?44Z`&(tfoLK2G|%;kGNmZ0VIe=5cw4q z+p6`Zc&+WdbUESrW%D5KV!MhN%MNvE9eJu+Qnn{>@KWa+)H-_e@)@b-Al!=3k2bPH zKFA$L+=tlp?*VwRf#cc^&LZiJ>pMh9W~t=f&Jz0S6Xq_WIfUW?%7f@lS`R?pLW~{j zoxAuisM(&dd`YaZa+8h3#z|Uy(s!9T2y-6bu$9}L{Z_bn?bg=YrQtW~d#L;kDr2-0nI8Qf#6!AY4;56!g6=F{ z89=awFr})(4$^~e@wp43m!|1VRgw=FsGF%#*mPQ;GL)ECIgu=rJwxG_=8Nx;Khw5! z&>VHe?nTjgLRR{vB~<%h@0K)>(Ze0=N}z2Y5zt+=?B@WHdUoS{UE23%=o5boU7a`y zr8it?Gi?|N73&wVtjS4%c#sQ;xI~J4Jhuos&YZB;1@NM}t)!KN0kcJ64&vpT+nGHp z5L-~Y-Z@C0V(d#&80f_s#@MEvi}^CKTMZ}5G8#qfEhn%|UU->|e9MS7gTw- zK9TX91kZsax6+EFZ&6$oc9XqXsy#hTfA(La8SXEWR6c$@2F_W(hN*hxq?Jfv9oSHv z!+)5BiHFe3C-(@;lc81Lp85_Nd?&ckqXY!&;wT~TnIIOxXJxg$4wS@OP#9AH#L5%_ z<;rbu*`ZgXzCjPFZ6Udg2(p&-%Oj#<7qDk4gUz4HYB-M~poWi~dUk?{n4IVEaldrHT_yOulu>?lgxyGtFT;-s0et*6Qwij7XBoWdf4>@^T4pbhs^2+p15 zmdk(H(|C={mQtwgC6xNSGz}1{4foC`d-&QUE#7l)q#1Sh6SxJ+&xb!q| zd%MuMcwp=~V5U>CMT?2#7ahXuB8*rZ_V=zt02;Q*l+7CFAPBbYq5aWGBb!ia%PIh} zm?*OCTVqKD*&a6}DSu88N#T@%--7$cPmmSjoZ*9x%U4_=vbstf80qHqDku`{zMMms zaX|=VatL4F7iIKZKi(Gcg(Bd(KtFJ5X4{)j2y*&T;H1+ukRLbfHmc7a`mW?sQ#4R*1qh*dw+iXdMOCL zij@)nA$QSM4cW5jj1W{wIlo!|RCqhN$yu1P>e{Qyh!qkRpfKdFA)a;=R^=-`s@e6m zzXd;O7P;jrX!Ig$Z81R(4xQ!5t)m*PA>Lc0)AYxM$76>?$J`I+cGdSH#fN?o$m#L> zV(*&LN-0N4(F^CzFMeXcW4Srfb;|;TiT#tr&`)p=wBK7Qe_u$bfn;Le1#oYoT2`b$%uxoyP&r_`-KCHohOM^m;8{Nus{>R{cgKm* zX}ojOZR7uTc_o&#LePj!T_4v*_DT5IKiLM8Q+-B<0Fx5J!Tv`8{2%`>1SAG2`WGRk zhATtIfP{iig8g&XyUdFJ!#xElK>CZ-V``sMb_;x1_;+ym-$N6J>>8`hv`-14<4(;4 zwxN0v;WYZGUC;hQ(kt;7uJiruSe5o~nodO!^WQWF(0LkpjCM{getW3O>HZp>f}b=h zNX}t3AHQeh!G_&|JGBH$N9NKx8$POx@|vISu%V0yZ~1h|<6Ew!{*wFPFIYG3pFyo^ zrVcf`&I+~H>^8g4TDHe;Hk->5x7Tbo>wozYZ3}(~ewJs>%*qZtH9*e3&TOtS&6Mwo zvXbkMHM23YD*2I9VU$7QvEV@o3Sts3618L{b>=slohPz6CqS58pdcqv>)-D49AmJD z&i21L;si7L-46!TXG|`d{fI4D+yl*MWp89G7g=r=Jf%;zLG7v=r*f8Eijfq=A#70i zeSe31fqsO)K-(m#5zz8me6M(QzBfOaS<34qroH}R)O%nCRQqn2N;_WW!_{?@QGR_l zW!06Jo>_xVu-+6BXLrQO97Brmx}DQ%ot=e32RG}sfd0a+rMYuY+IKJ2D~@N-YU)byJHJuBBTF(p zX^GlWMnY*Ouqwf~&0zm`bW(1rXKGPmf@i~#$2*(^pRv-)TqvGAIy^iA?bEWx27rJEV;GCaUD^5HT%CG%iP-9&hIP)@C z^XE8b-+$Ng44c#Z@*h264{qct-ULc!KrL6v@DZ0%;_Ms!=ype^qbvaub1I*Xdn7m_ zF0jQ+p}dXMn`5-cnM`xu;`S#WtF)7Gms)}{34@VIsW~Go;J;^0Pj8xtE|B|8Pff5| zjhd3|?J=o0F{DqBrBfVTpCa_BWFRSPGO~Pz0x|&8<}x@YuU|Be_{bsU-P|JF%re0E z&8+O0Y*rb{jcQz&Jjdh@8c|olt7foNpa|;br(QRU{iD?KMzdmYz z#1KSFg|39yH8mwJ3qun;s!q+2zez*!qx>p4rsT>1S5k>xh*y3in5>o2TXiuvI08|y zj5k7t7MAotSIlIAOzTs)tqIeA=Lf^cXB=ZtQhpxaX=tL>P`rNe@?kjh@D>8(X_kA# zT^()x#^IeksMdUXO&rqP}@E zI57wPcWcoovKGilKzKmw^l8!X*_A8>&hL_yM)XH&IvH3MZ#FiT1n4SPBRN3N3H>n9 zfzYBsKU_1ZSxe)AmI*P?`=nLDNMMVNE~`LaoDI2y>VkRGWebt7ti0GX^2fZQdPa>J zLY3(F2g2&rgV8l$$?=cHMS9Pkpg*m?O$B)3qD&*F@5G3gp+~b zk2jlAPxbgJ>k3)4 zk{zi;JgMh2(EMEfGBKu|jz2QZeqPomc7}X;^A;L4b!7V6ZheMau8Xu#x*6nkO>}LD zQ$MP#C}T0Lh7f+HE&gp2ZEzmeV0LnO4}(_+fT z9#_z_YeRb|N`0HQmC(j%I1*uVrP??>0kb&L7R=yNGo>}Ys3B=~Irbk?oC z#bN%?-+nUkGgsn^<{UR)F$=$lqr;kZALEyvQqN7PfNlgSxi%N)5pHmnirr5YIg8>6 z#V1WBAuwZk#wo*^G#Bn)l_@ou@FL(~CS{$`mkWtf-7;~N#c(D@v!4CRphh>~Xyl}y zsv=7xbxLw%-RGbBlk5|ST3vm!j1j+2Dl~X|2@rcymusRPpb1^nHN|y_q8wJ&OEc4E z`7tL%&H2iY$H|ghbcAPLFa2RC$bU8O`iL+`dwKctWrr^=Pajm~xQr%$?9$o(K)9k( z=}nQDC7@Z-F)2dBWD^wwOz4LbR`_x!*hrw{P=BhNoypVShy*sFLiwKL)*TJUHu>WF zh6SCu%RaX!P8Qh;W_wi~TCWF7Qy&@%(!omI00GM=v-!5d6#_8}r+6L<;9 zGJ$$dl%o*`uW-yUt??`l7L#}2pna_rc(YEfs>819J7Q^SCr$S|Z&QUljzs_a)9C5( zQ)yUPz-ot8E~A@xlMLe-DmK~!(o1A(8XT?Z5M*W2^s!<+aiz={Y>Bj+#}@J^v>K%l zq(#2eE5f1aMnGj^Jj}ha?Hb5W{5>Zt)zmA(BEL{c$;8>s>@wlVmF8|j3|2kkq__(a z7rPUhmn=C&&%81be5)(!@pU3;H$z3q&Pg=xWsQfSf>Bh8vQ3It-HSru*7pYW?!ORS z??2xqa*At1XT5k)1@x4vS$c~!!LCg?1)2xD**F~4ArcDg1xBt2uA68izZ4AOP$10j zV$;JH204w7m%_SA)6!rs(O-E1<8dqH*<`;(IHxyrS!_2k=Ax=*v!&M|Lvt8u(E5oz z_g$6b^hebEWCvgCRwEriZHcDnpUWUON*2;J)1sl_pAdt?F)tYOTNbys_)+AAvGRzu z=@g^6(cR@e)Eg<{k&(;VReH~XlxC)}T9Nu+P?<__89K2=g<5iKKk?WS|6*0X=n53P z7P0We+Lq#FNgTA2ni2Y>bwT|V=5>4(DgUXUSz_*<>URZ$qD7I1qG)JUmeOJ`!z=5+ zF|)Pq(C_?>m~R|KHH}eLCvr1NjwJZhU*S-F_MB&*J++~rn88Mh^lj75JiMnaTiy%l z_<5@QgmM3(b*Vx0A})J9WM<8gWX`*)T77sE^-{s9$?5Z3PiN_=E#a?YenkjBal_jr z;M@ytmyPuSs(PxJC?YC-v;vc2e?pjvWClVqY@;bT6*Of@0z3LAs$1GM99mA`jhJ}U zun?4_)YM){Kt9#cb>jC{l#<;P$|fd?${1iY8Ekw~*62317?H}?ksf)%~vXvv%$##3W}o}J_AX|_>mn9Bxer3Nf;W{(P9?}aKvFW02}gl z6!`o!R88#hAtf&Zj>1bb#@C*lSbz6R_YL*Kx(vC}d9Tv#fPKq|Jf*v~%YfuIi>Q+K z%o=+0#2VrgCtz$N;uoGeV#(GH?10wr2b6>I6pKeisnJa3D++Wf6=akyGL^k{hq7|Z zCDGZ)c$7>{9iA$;9E(`8;I0-#(nq2ApJS+aThz+t;k5=9h+V_<1THK$IBZ91Z0r#O zDO_WGlqw9f1aFqJ6QgbcY@Tou)-7TyI{e{s>+tN6_xzY=LmGW1ZKHmWx&X_*0t{*m z?|S}h6MZ>g46MjV%5KTU0du>l&95asqndmEQY@ao%4Jo)rv+%%19KktiVf!4xh-<=8xa$$fqGM`NhgVyZJ`fTQ z&X~C!VZ!iHHwi^)r>C|_b+uWn9@b;_orgt*^Gus@3ieZ!!ivbuwl(}@FLT_eox)}J z^ie*(InG|@^(M4!^$vS}ngNg;9DVBj@#Tmk6uF*A^8@QU-5z)fgb3_?+~o^bgzVUg*X$=6)L z2@@^l!s=GNGkOtCOriSS5#b2_)5hGIJbT^>9i!7+7*1hCvmn zGj@@TANCOeCDOs%GtJ1=s&pRZzBw7~ElezYTbD;u+QH$~c%*9h?#X(#Z%B4Vjx2Svvz_K?JHH zo&!ucsMy$Gml6QkBqIbv36))v)gy{lY>{80$$*XUHB$?ro*5g-Db?d0UV-9XStUC) z5~d$kx&V0a#kzkQ1K+y25Xmt~jCkTX0RJgeKt6S!n!ld40xZd8=FU&Bv)No`FG2-% z{$t82;k3VaZRXs?Ki%!^l&Yz;7V#dKhwzmSWoxP=TrJOcp0@HSV-R>w=EA%RCKEKjJ{ z>|Nm+nbq;~!uuOWDyhSg?1%`!^mM=7C|xr-@t+iy8lB&^FH&b(6UkpQkOydmFH(uaUy;auR?@Xk#_?zuaF8Q{bAo7LnDMjpMRDh070SB> z2CCp-K8*269@Ps$;D z7FYI4XF=Jj3q4j1jDcMYMjRC_J~w8LBEs5$V>+WjJCRXP@Xkp2(XDK%t1R`QuYOMX z9?BAzNmw`MLef+)g$pj*#6Epa3MC6YegZ;tN_@KRh^W_PNrCDtm@Y|47mD%D|E7E2vZ zt`bt|uiGU!+~u`>B%1x~&I9#oD!Uw*Um(F8^D-ymMoWyaiGB z&vK4c?6W?o^v`=8sc18C>z~32|72Mf{CGD$0_~&n)!Tx4# z`2l=7%5g}3fRPF#(TNnLVjY)yL7{q~q~S7=rBUJSgCL6i%%ELg4sGKX6{?yb>z6q)#UvE&qY^t>Stj(?9f$7i0S}tcHG$0pcz#M21eK9lQygOZQFvmYN`&-|XaP zN%53fDpkD}lAR6Z_AV*v#uvxLSrunPp3XQyGrdb90yv<|Dyzm%fJ_D}@Gr!Oc#zp> zZaqrq>?NYOj5K`*-70yNmassgYJYrRmy3`;tgAIbX<$I&PDUWQ>I+!9C2a&vJn;qT zWGLPK9(jZcJ3NGc`Q~89Br29qP0sz97G-X1zlVwdCdt*f@p7n%KW3c{+=^3UMdyenyS93`12+ zIKc`JA)Bt%N=wI8Ef<3K7i`mnDWV){?F#V1(LS@A^F z@qaMI1L5yxn=y=Iy-Zm-&)!jN7cJ>+DtLvUF-^cWbtKG!GHzJ?Zi~$V* zn;Jc46o+_y8ac)xm>rk^gLqT3{{2(??&;AF?sZz?%?959R*e)jBYpv8owN1Ww{8^o z3+Ej>*S(>wbsoNr63#o;ZgL&`9LlfNer8jv6G3!)iaECUD=Yd6__M}XZBJeYO{TO53k zNmnRdC|wez5Z}`SaH!T(Vt~yr&^Ta2D;`<%|UhKC?4kxp;CHV$mujj9!ZXbQ{|$PK=k}d& z5avu{F$$B2UQ(Q)1J<(i}a*;LIf>~a=4JPuo9e16zAD!;}=pY`F#2hrT){c7Ov&PXINW<=lIj^wFYxVdMKy99cGR- zWqM`O_#2vNb3Nyd=`WE2Sj=v+6SKbJ<+`!yi!!8z#dLF3^E2?}A8->a6-AytSrZ2t zb~8JyMCL8qna$DpVkkKviAO}Md9`CsnS!a95d#i7m8X;^|Kh$g}bHJG~{ ziC;W_J(-&H`cbkcyt~C3!ouKjVJQC5jxF_@==dBJUekLFM5Lj?XN0>O3_Xz&aV}5j zO)tp6^bG!^0roeP9x9Ou?SqLmu%OSHuz8Jk@#W#L49k+nS0{_!zRYgjXsbPF1-H}) zH9&mpR{M}|HWqP{bN3Q_6b1Dca;4k3UHOa=d0S7@9Y(VC( zvVi8qgtxvp@FyLLAYW9dKoG{@r$znztw3M!9#am>g`T^5MG{ z0$5u32qc7IM9_peD+C-vL(;E75Jr#sT^c;o-rhIZ6-pSE({*y-5;OaOnh}x3#CO9R zr%-rU} zh~2Ptd1}p zSThgs33B+Dn6c_TbQ(U_(hk0ME91VyI->)-nCotWp>eFb3V@iyj*oSzua$B7>&)OG zo*Y{EWpLyPf!VQRROzmXojg~L)=n*n+VLOm*a(c11FP{7J^(^5J%8hQ%H=alQ2VOQ z_#5jLAMW{?6wU2=-7`tes*ilvPkKPTH3#rFODf{}!RUf+NmSbcYw3|WbgeIR>ncrs z5bQQ+1Ul3Wjg!1tDpSl*f!b^{4jz$Ts&EU?pwq7E-WtaE#3j~tbi_ZPH9oc+NyWm+ z3U4}-(&;5P4cS(lJNQ-N<6tne(y;{&NO7A#4pk$)WgPwAC^C_`9^NCiCBMjqR(L! z#>Fzi<8Nc{CHk}KF}syWjNYcv+AW*{YStM5`3Gqu<6M7!+I$$P#O@sYh4_}WyXc` ze+Jb}9<#ltgJ^Or-F}&~-TBWmE`Y!Fr?83rS|tQL!0gr-=tRus_f)pL=VnuQKPt=J zaT#fAsuEe&KVw(ex($DjRMG`)uX%M=y3-?Vy^u?9OlvBBJ za4rjSVNj@6zuLhD%h+3~8z>Hc&z84i;Qkh~3-yTi(^J|{J3Wx=Q?x)i&DECKqCBa) zUXxFvEd2yL8>~M#;o$_|$U%hqj01DQ#<4!m+~mfqBTJca_*Gd8NsJ#vzDRm*+wW2m zR!v`<%==zt=uugk`quYVS8+Lg%AE+wEi#?I(C_!=PqP5m=|Iu>2R@sOPlCBK^%~o~SfaN61ruU|D8y$6QN?X^AswnoWGz zt6j3ZkKj_Tc6OCGWS7>rK~z?+smtS(_<0lk^8fv z{_1^$DDoCDJFB8|-BhVOgOxVBw`(}fao7X$r-{kS0QJi&sQwF005R?wzx_oc>Wj|m z9g9usx))|){o6y;CT`Mti-O7dA-QsudoZnH#AQgPjeN@D-6j_sxns$P$35-2 z>U8`88!jQ(UsDa){M?8!_nlj4Vw|tL`qPSnPzkaZhG%E|6qmbZTj z;d3%g&f%4qbv~Sj72;NRj{a~)3FIueT-qF)-uUN+C?cUuN+UV}hF2OQSh#d3HP7Z7A$5{4hb;{}@U3rJKHL zZhU=2j`_7RTS3H8%S^13p6%497;UP{6zQTcbtF!$nYS><_WH-A@YG1A&BS#XIp$-e zBhCD5d6>M8hZ75Dq=sZk^P!IVnTxxryQyN_jxZIq3-EkDW>(wlk@sMe^m)QQaYJH8 z(cD_ET4F=rlVxo6FNAj3rqAl4K!wrZpBIyv_W5e*ndXp)zYyHVbFV(#(5zIJE4%|k zN6mmm7IH&YZ?`aMy!ZV-g(6*f_h5-whpRtGZRMNiXBhS*rZcUTAIe5twq_ns zR~^y|C@&0cIhLcgKj^uL#w<3S`Os}rR_)#wt^VP|IWtkJVOX5{L!JO@yDuoN>Y4YfL z9CHw`|Hy7nkIOvACmbC*hF85W!0N7nebOJEIM6XPtQ>CXm^bfxXsG%M;k!}jr6%i1%rrZs^WqAJ*d5zwFiu= zPo54X!#vQ?L%j=rx83WH8RQ+1fc+whK4M%aS-h8|CfHPn+zfsoYo#q*{ELiu+jZPN ze@PQ3NQz4fzo(|U?5SkPGAAdwLq01)G-Srx4z9YqL0RlbF+aK7BajIl=@OIdu0MQH zxQ;ooy(36tp@ACoy)9ja-?1hZCMu`{v$2#yk1SL(5HeVdOf%r$4E1eGz%ZE|P$_Mc z^-?jskO@0_Mf9ugX7Ds0f|ot}XIXaTKPC+=lx?O;ChnEWhe{3KrUqN9=ImBuhbKFw ziV{KZ=yJ4d#STQv=7et{dOPe?b|#>MEYcfhRRr_N^!cbJymV(S8C9iuB>q%N=ruu& zo!Twd)mm#LMo3uQp6!GG)7E=HHPtl#;{if%p*Mj9Ly_J@KuSVQq$@~MnsljxRE5wx zhR~}tDbkCeG(iyQ9i<~k?;?T}@qh7opZELz&iRLXE;)BUcXoDXcXoENJ6rP8GU1(A z8$sO-{$EV_!LBj)eX#~ZpwO8#b^dpF%6I2j_B2v=-vcY&D1gHn@j(Q@x;ThK!x#!5 zO_FPZ!s75kV(=YK$dK+b45?(gN$FoOn`hGz$}*rz~XMJB5CDTTW@6OdHU zzlgsp?BE!1rUQKxm^Q&)Y9SZ}0-@lv2sn_00bSieATWkL)0sXK%+rpNng;+75EzF9 zLqKrg`U`-!!!aPPdoWR2O?n&-cpV7`A>ddL7$5x~3QO>GFbKgd8KlKCCXNF51A|DQ z5K<^UfV}#EEvti(@NpCfr-{k5{YwEu3I`tj7Xag;b!eE?ZZUEYkMTmmF=!A50T2G0 z1?DdWs1&VJ%Gez|&Ksh^z*|@}6pI35NWipc@IL@hF1}OB;T;6$jY8AAXgHP>j*kLk zksurZ{!4+ImJQu7hEI{{T#tv31_cAm1FV9e5H$EN0A!OitJQFfuL1yO^ARA-6@7q7 zFi;#E;);Z7N`^Ba7(80%LM%QCSjq?mFgPR>M+*N3@G<-fa0f)|oZCx_f(9eNv>~4 z0A%qGfYuaUpWz@%>)g+qC?K0C764h92NWEWjiR$l~hy zhXNLn=?rg2^JHq(2LtT{f(N2S{q0u&0&w`_&OGf}^%+`4SDhC}3dW#-whjM}G|_OJ z+PHHyDLvzeGnDNLfCml+x)mP$zs1C5i0rNb+lfp@@X1#74OOW`k{zX~xFATkH|h*m=;N}>>;@IL@Bz=L%?#sS2N zu5Y(#&_m;{vY7cl3IITW5*}@jBZH?v0BPc3G+uJoPW>-HDGCfucMcBbs|U112ObZr z`u{@#o{SqofpJ<~(^?Hc+l~S@dRZs`PZoIB@gTG)aEKPT-5CH>qn&H}@j{>Y{WlA; zF$bViz!NRufCfu+7DYSPM>#cgn*R&HXJo!o3visnKLDBUmYDvwa*m6n3uK+Ip z@&FJ50BF1f-@V%7P%Jl&^nU@aZRgHyvq3_&HwW6Lk7sw`yiTp@e?V>jM*>*v zew_w{4}1vlu0B_t0Z>3RVh|WqR}_KNb04+H`@6~=NLPfcpQ%LA9w<6GsU@Mmsv5ok zJt2qs`%G7Nk19kFbsKa`H{5Sk`~$kwJb(EC28mSRVp1FDiEcWIAD3kVcfM~ z<(ruY(edXEuq|yqQ-}oCft*XNNE!Auye`20`JR*J6!xt|qzn#@O7VeogGoHpN1XP& z?B?Pf;YoL($|MjdB7#PfjG-r#1y3*Ngg&}3Uw2FQ8=6w#~_5+Uc(-3_2{QV6<3)BYCw!PSBYZAC0?wwf*i#9u`)Fg0eN1QMO=JAH&eRM=E0Cz>lkK z+;8*3(VFT04keLn;tBzd=T zK-RxrEnENkaQHZA_jr_5GJL@uq;6(GM_-qFi6< z6KSN(^WIGrjrJX5p3`6za)s$orJiyX^fe_RwYC!>8E6z3G1uW5VHyo(36Lbdd*lb_m`3ZvGM^^sBvQbwOcE{Xxp6&Qb(SM>;Tt?Jol8kcgDTeV z-yuTs5M?bRf^HIgg<$!F*q{&YK|Z|+&WnnI_U|kykHg}A9d+uHn<*<@#$} zPjdiu)eXHjqA~|s5Jr(OiGWJo8D&pe z-y2`QKH|_p?uHkR4A_Bt?MB99x|lz_?T3r%DVx%M(J8$_(*Db%mz&e)fmZtU9^8rs zW0Ogh$Mp@#n>CcS@`EUt z=$&5Ip)BzbyZt`h2IdTRM^Z*baiq%qkc!ZH=iNInWm2cvQAbElobMgRWs?=TcSp1= z;r80%0d0klhHxouZpe{Y2Ho}1sAyCUQU4^%_iZI0cxUE;#%LDR{6;AkEOw8xu(v%k zP(I2mpM}DvF!;J^fZGI&Mc%&obm!IP2iB3n`sH0R_r0mK_O*Xm9$ zJy#zrg>W4*l}D9~D$R9?CP!CeKlPAVbiwk~SO2De)gTHQqk5PmG!TY5BU77Q66V$> zC52q11S$@j0wV|Szas|-pWyF&@ZXU`6rrn!%uyjjv~fvwgmdExx(JUz9&;!yYo274$6P@lN3r* z5vJA1qok&N$H?~CVYf8oYoruO2atz#5EcG&6QV)+H$)FQLeT$?JIhX6_&GCSwcG?M z;U{TdfwAaaoZt=(K@+DoxBMFoa-vA9=U4m{5^(Ya6}M=F>9{uu+DrL(3aYav<8r*Yn{S3ivr24}Yz&hgupp-0{!zUKi7O!gu>H$5{yon0?H5Z;t*jgrTi_*_-j?|(L>Y$d_3+*kxOhYngwIZ#K+ZAi;QDN%5!}SspAW^i{iJ_6fP>GF4K<9!u)_puvRIDF2I*b@}m*&nJR(u@%ejYO7pJ| z0eNkU`@%H}#eI{d9sYnYxuFRp5%e}RBL>nAdyCR6D?#{re90pT=jg|j9y-r7mOwBv zO{ERZskn@_P;nNDaG*Fnfh7OWA5s4Adn4)f59#7~hT1h^Y`cWJQ$w|tr{f5O$tL=o>l$uBFxG+Qjq*X+mSEykcd*ngmB@q)*+}bd9!Gvjr(XtQ$Dx_Z2amU; z?7BoOC*tBrL&ca`HxdMeB2goWBC)v9mrZOU!}x6(&}{0Y9+sBIV4ecT0g9Zb31V%>1CM9TwS)@;r!x`(N zK9g`~1S?}Ha_N(4j%65~D6Hi}ea) zXn8Uv7bCA+`ZKd?c}7X04{&$R9!*GFhTPgp+Vgsy2JU=DNF8#)TuA9tNH5AM|}gwJr%kjIhRS>6%6C1d5#lj`ys(s+gBqE)0N5pZYw z#41+-8CKqjL<=9ka`NhVXc!?g+F{7u6|B?a_JX8)rPmObeo6gX(Vd3yYZ1~*r!%`( zJeI)=J4*}2CMU2Z`SdA*o#6^oVfJBNRxNy{K%SCKJpGkp#Fx-~dMU-Wn>6j>ed`+e~@rEPjnJw9io>bG=qcJDpr0m2-h1~*Ma zaWQZq%b6G5;=xz}2Jb(hp39ecB+pc%9$`B28X}$MY;Rped9bqEvfFb%u_vmYN*DRy z#}a9<2<)3Y3&=7;VJlv}Y1g2UwVoCI(m0dwn0Z!eD~vF``U?#QW#EAM73N8v;Tjn* zuVzn_gxN&pW+4>6v9N&8->(GfjPFhmT1~%Y^`I_BPG0L%K@)Yo4GE!7VeaaI%Qp$+> zR)pCw&RUoGc|&_FO^H-%-`A7^wRIl!>!-DobbL(VqMD@B_Y~H%?e*EHTN{hut=BV( zM57)F`ui$=XAJI_lai)&pR`EEg}?oX$b%Ud#0 zfUch6r(Zn{7KWxDhP4bo^Nk2q{ib=jTKJc$SW@WIAEs(CcrQP;bhbw%6a_vR;|Rjo z4>UoHKtp9U_5YJM@NU=~2!Q()0jvJkhoYKq4xi9oeycMX3R_!SrO=NxdD=2R{%Ocp zc)!Z&usirs>cq^h4ncDy;y5}&tEJy2`47j(GRh+Avg|%0Lsd8$eos>+NC=k zy6AZ;g2*I@tvR@Rxla$z;2{BVonACl617jZneQ3%$XgfcRoi3zfWWWhBZL+19e!<8 zTD7L>30rO+p#sKvD{SKhLs1duePdo&0gjaa#)m!2GuXYn(uhfZWQ*?+(ZiSR{eltw zE^cB?9=ECW_wRWHWxf`9?!Wo)SSX&vJ?`0%8OQ3a%4g=En)^<@Z)otg4|{lbyB*xB zdbU#4zPH)67d-W3!-Uv(hm&qffp=Q_e4=a38=()IZV(>niuk2`W0VNmGhv0nRH%KF zjnxx<*k!;P%S_9lgn57Om6z`9iz^7kbs-@7zQs+c!@?E``H*FH8a&c>{GW_uD92-` zsdLr7j~Q4h3y@&*Lt4P~5xL1}Y^2wUG&)5kA@T8|U1B#U&^2ZjC@7X3({fZCHHFkg zt%{qmuk~$H?t=ll$!=;YNX4kK0Y(JHEVY4Tx3whkfNLcVF`|Q9QO6 z1AB){<5;#^+%sae57c-xiWybOe(kc0F=y49Rij*%=xW@;F~fNtVbnE6L`!IBTaJIt z+pKshu3V?wS((8~Cd|rSbqqsdsn`9t3CN$R`Q-s);#s)BQ}8ogZ?j5!MZub z-rBsLyNDt_JEVNVvj6oi!n}+CM(?bl&G{w4vG5{h4YtDjeDW5(c=y^k7Lv`q14zkCevgaNS*b5whnWja2>y5{Bmw(}iUB$g2=U>5q9Z&v&9T+_X<)&|Lm z&WIHa8ANcqeC|?@FXbTy(*gBsQ|pb{)5XzVZ)R7QW^MViKHw5lbYrGhVnd@*+0Z z1(VeD{g2|?BjRqx3u|)EgpLYVQ{vYUi2Y`SCWmki zD$f~40ZOV6eh^76sHA8Kx#=T$*G+N+McB@i#_iD4H3{%QgTj}E^33K%7NYc!3+%Os z4Ycu3R%!O@_YDL4ZVMSX{U};o^R|f|&3}R6zSgBgx0&p?>irb9L>SgKa=@f7M9{+c znK*2!jyn0|w|PE5T62UbAqDWhcemT`{uH?XTv4(s=f1cByl-;ae z!Co{bC_x(ah?F94Rp`lgQWf}bJsUmVnuNEYnA=v~zT3oq%Ve4~FlH?kiV6s3(T@>8-~;PW|Bv{P)Z-U`cjEF-R>D}N?McdPgf$@Pa+@ocl{gznD~vCGqpoT}t# zP~jZbC^K(F%w?3e`>L!XtX@P*-%_z}$Vu!0TO#xiX!Z;69&dr8&KFZufi(6dGTZwk=Z`x&ZMA)gJzi=W8}Y8zUAT+V)SP;>hMcZS}C=c>0x zk^Xi>SX47EGc5aS)N{Iu(d6Pg8*+_Q-Q)J_je?)YvC{_(K%s1dc77=>*uo}{2u!qO z4Z5Auf6=^;@y)bne%mzT#O3B_hrDeb(N&V5YA|J#_JF1;!zeS7;%(W23oYV5X}bZO zbUv0$cxIQca*XNIHwB-VrtGxQ?e1--y-8vHKo;vvoL@k=>g~Dgt=)xh8}13w*PXB9 z6OeG_zD0h!AESv6?ch4fQeX2vG8Gle%k&dUPr4}~9&PiXf8eW>XRpP4EnhPoU%yw6 z_=Yx$+AtE-sfC9qiu5OA9qjdrSNJI{Zry~D6ser7hXqmYy&j+>Jl3iqjPxOQWW;!5 zKni2k#vy{{eJSK(>I=n0;4ock&48^bt#L!!*S)XV&!#lIT}8 z{N=*f=ZgGO&7Z;rHgV&=-A>_2SOi{>^Svn!=!H-#xV(KG_Ew$ZJ8MZo@GyZi0>}uQ%eQUX-|+v`0GEvfvRI zF~93`;kEjXC=rjYdqSm>*ju>}&3PSKNx*C@-40b=jYNC{UB^&ab&6>7k&vx@i@P3+ zaiP%_&5cr_XM0TPSp}vz&=7&_^<8LbVn{PFk_HqFpuYKB0f=97z0#$&79&Rg7KD_j z7yecG4U0`KAS1BMaim+KwXV2$NMr<82bc{Kh<*rI zah*9u6RGLOLCD*z>D)eH=s&_8%nqs|Sm+Ch#YQ>`*79@OzvHDvZ!9&0>jp)xz$qn{ z*-Wp=ru4g=vs$=-X^h2c(eyAhvxO9z7a#onX9}FAbYMrpBBQamAie9S&T02b!}-2l z;F~YySvmckCkYvs7gT$pq11wXwLfU?@eFjbvb69`W9^U}9e8%4n+EB7i@;om@e%*P z^|W7+^A=a#s!Iy!R?0)hJgZAqYzGhO1VluMgQRUaq&7qNt*6tK@5#@u2^J6y*qBsF z%yL}cpnHnRnKiC^az&Q>J8??hl+lKl=D8?fqY9g1Y-uNas7vNEg zgIkNSHyvrbp*1ioTKj|W7hAaHH~XE8e$l*Apg2UQ;Z{jzmU;vSa}pW=VV;9^D^+%N zWP|EzjL{62FS{oHq;GI+PrVgYs!_D3KR(IR_Q(ubMt=k|d5r;6nr`g0C__s}7jvz3 z(~R!YPEv z^g%ar=IQvVu{Vnt42i3)DeW<@OSF|y7HqAS0k7Z`77T^AC%mpSS?)FPGLnA`{2{z8 zf7UxFl2MtN&|$y0%BctO2Z-wc66<#YN=`-`1ag z`B|31{??GrX>zQ3X6rE$P%-CgLxSGfX3G znRf?PRtXH{zpu&RO?>UmEM^ql^0Cm;w^!a=rDJl7r;yU>fmu;wW(I30i`(Qr1@LZZ zXe}o){iMi&nlT@d2a^xq#kIW1$G3~r>+4r9yg|k7UcsMZoRaYS&%bF{RS){>1EvLFL;Y&|52F#g+H~8=uI4 zubFOvX5`+8QjUj7D3*{=`EaLfS~ij=LI_ZAcz&1WAOe1u2uV|OGk6rG0sj!f4bgQ5 z3$^<|s;N?affcjWPU@*PSSnZ~LEEHYSG0HzGo1lxAx3qt2io*jOn{4PnIz?-797SC ziG3>tpOOqB3%xBKdkiD98Jk&%?U|Mm*@9M|`F?pV1KAo1~WOOn(PPw%lD5AX^CCs}#FG?!^-Fu<1LI{I@&)T<|LU-o4v_66)@Ec=Z}EC3ZOJ~Ro?TQ%>)J!!Oa@np1qF*KiN338 z6gJi>YApq(CO9f*c5qj{A3@;fY{{Ei26XwbLMAKz+nrg)`4$3;6P^7+pDPL9G$n7w zhiiL?Z9hQyl<}CwS#6d(?9X1bzSzcfu5{CvU7O7veIb0O_6G<7^F(}3)ULP8qO08y zM40K{ks;P7N2poM16*yXvou+g(NzODz=$2`jwmJv+!xL}f-N63g;^rvayQ<2{dVm9 zlJ{V*hl0Xad{9uw;#WxP3%6kMo~5GCeBKe7a_=6K(}m3)8Qjk+_LG>+SCPA7w*%!S z*&_SUiWV7Ev1(E!b|BdeQ`aMUN9D~zsd@4uJ=9VS@U1*MY2}k$kN7e;=&!Z)HfXZ% zrrnn|%YTP+9Dso-KJ>T|R^VB*5BUYi3u^4I-& z#jAp!x9!h0ANTri=LC*>%RlriIByLoe)axHYa=XeHD40bD^(fvmFnD}r4e-7pkjS; zOlZqEi#FHs>(5gA2M{yc1w8NK`qgI$cVg%58L;Jf_TCR-2QAwvn))d+o(YXE7(~9Z z)b>dm7nt*j%lVLD*ZdaG3jQ#{jjKtTav4^dO|M6|UfL%%EtgbBXKv;LCVdSlVPrbQ zkL$6clp-;D`QUp4)Kz*>BJKxGS5puiG~;&L^GXpr@?5CQa-OW1o;{zrT>P^AT_`&8 zz24UGnRCFrboR)Y5wkyqtmyk7hu11W9_jOv?(`Wvsz`r#Mo=E}U3cmoB9Los#X}Nd zbdh}QwSn;8enaPc5*5Iko^4Mq_5Els0^q~IE3JIJ~-gP+w6 zt7DG=1B#_4h}88RUF6fpTxk4W>7ahGkJTVXiB{=c7Fl;0Qkgv!E0!doPECx9XlAtd z+O(&(oiMq7-W?Vhe^8uB(4d+-oe_+Sa7bUA6rWI=+>`$rm|)@)iboU$+rmq{O(SFS}8YsIf zlVuonqU-WydcoZcngPC5eNaPH4XcOe{vN)g73ts0ycmO~#CPB!$;+qy6!`Nqbk= z)C{4=s#B_|lJG@qbYogx5EO`*TPSvy@TO57kT;B#(d;8&A~uQmG^TxRM>wwU?J_ul z8BFpPI6QI}hV+q-@lNv_GiE2LCQFOHw7>aMX@6e#Y=OOL^Zm&S0ZD@&_m8qF_b}~s zrozEpv<#UMrzDh0&YB^@q0(Kzp_ty`zY_h)Zv)ZrTy1RDsOT80S;ri}#srSGx)Yth z(G_8;Yjm<&fXZlpLYS9+zii-kA+l>MKA%ODXRb#gH>)`E-i^lUx)$~~DaZHCEcYm5 zF2FZIUg0)`cBO-YH>(E)k;LS;ws-c)G3+&fO|^xhle-U?f0FI%?%4YQ;PC0%2A34r z)9brk(Xvthb(Zmy$QJKReiETN>CA|Ex!|nwi{bOo8ws|)`K4=>d!>N;4d~Y@hnGO_ z*OstDM2pq8H<;Bne0|*!q+6(R)`jxx$dDZcG{`t+8q)jHD2m$X0V(GK*hD@rB-rZ&V)g8&3NsMqyYGFjh?X2*h$EgPC8)VR)xd)Y?I7LDmRb5fmM74=H^a zdT1v^YL5`m4l?&-9)T(pK|Y%emSh6P+;~iRz=h!B~IN7xzyM4xfKK*MFBH zQbsnn3)m04ztRfMw%WWE4865F^B=1S4)J!uSLE5SN`PNW<8?uWiE)-rb4y&#g1;-U4i#MH`;X8 z-WpyX*PB{V6&pa z@AFzMFSF>+E8d=*D<=GjTun)Qo~T(ZKVAoM$u9+Yh!h@j6J=x}74h4L{ESO3#mW=l zV1I4B-=Wd1M07k6GgPQkmRe7gZY-I?H+1E1xL&>^Ju64uq+rM7)9})pdSgA+1yt*X zc%aJETE?}=qePX-4?hjVV;tt7a2APPlRQh=!okE&Wn;RIcVI#7et58&YGoMR1Hex} zWf2XJ#K$n!Qv}ImIMLLbh7H?;v%0=ecGiTXoei0b8=JPjh7x7D{2=}M*Hi&tpSA_8 zk=A%~z#8!@DyvQtXgiZ?OBF(wLF_IH_NZ@%Wi?j0|J)UwD?I!7j{Qn8-e{jm2dwt? zUs=>q?Y}VExP`u<-+DmH%p&RuxfuCe?!6h*TmGiDWFOzzrZqYHjDqTS!Pck1aB!r5 z2r!Q3dDg$dmF!cqFCROeM6|r~U~m<^*M9datG)CFwxPbsM%^c1H?_vFWz}0ua72i8 zGX8**AiG=n9-+$07{7=FFdL$EE>e=aGoCSO^HW4&+xl{@@AP`j!kykx6vq2i2 zVd4OH(y*PtI!NtW=G=4T_76dXz01&@7-AY&de)gr^4Rj5!@%A~ur%d6U{Xi4G{FeW zlpq3Qrqjj?EYey7K&N-GdI0#2V2SvE#*iiP7^tr8d?jS@H2!{n_ek3qYnqQy5ZCa; z(_`;29-^s%+;ZT!^q6#|1v~OJI?S#hpk!`g9@YTULelj6DSD%X<&zA{%w+~^9JfF2 zOzv}VGdi8sERcP@{m6th{ljUNNE%f|a_vKB>FjlaMs2{&99MFKQ>bR+b1gwK`_?zJ zu9Ekz6ZcU5jZGULqQPDVHqrhUJo5tmwJZ1uMR_7jQABdYC1Qi?p`?2CH z&fEHLvM7^%^on(3ITTKN%TDMQ%Z`V4ikIbD7Yvyi*^CV1#rQAnw7a963Rol?Qx30w zu*uz_d_>RZ*B&%qIe1g9qar{xsk_xj0k1q*lG3wXA?jL`3ZYa)TIH8QmGJ8GAq6%# z&i+nATfj12m#3t6x>RHI%sF6ebO{&}w_Iy?z1#j4+H%B8;KM&d^z|SY9Zz5sZi|m# z0NIYd=AX`rBjMz;{_If~eDF%njboIs^Kng3x^Z&X$CN>87BSGwZsG20FPwIyh{Kei zL!9Mkm}Bs$bm)^ufU=QOQW>zkQ*^HdDUKvSNh62&$<=lASCgHj-!LV(?HW05Sr68W z9e*qhQ`&6}bT;9XMIHVWw`6E?7#l7rZ;9Uv%JR4ejKu5Dw7vhmDRU@4h@$uUMHID}yTXiUZbhfd8!BpMX0CUopjSFQf!vfD=HfF7^Y=5E} zkV!clGQ0mV_av7#lL61!j{b6p<#*P%bD2-a0R^XzWloMg_IK77r`zAx1qIs4Tn=gc z&N?}l;XHn#xWh+4Bu3y#{RiZ+pE2z?7KSUHYwUKm(ahSOS(NuQ*9*OyV&GK?HdC6) zG0+^gxPDYGTKAeAZ&- z4=7LC{=L|0-|Mx*@HvrvQ}ibnuBY<;TjAu_%W$Sob%nztfRj+v84?QwtxMzR^c`>1 zSh?Q(iKF^#xV^*TD%zRYm&d*HyK(sB$ky=V1)Ynayx>SCHMlNh(rC?0SN37Qs#emi z9s7Xa&(n0cbK-qrt4LJ6meY@~T6S zb%SpYSBH1=Do;$RM2H^T|M0&1_EZvZ981yYm>V2*T6K3*=6mHmbtk z-TaHujlfYQCwire?ju6a-fUM@oZj!f^|NjN!I-3S)= zIK*@iFDIA!^1|bNi|aT0?S=)7m6I8b({^xYQNy>ij}##n;k)_)UA}#=53;)^R!jVN#%PB;f|JC z+GNJA^%HW^=L$8gdAm|iHXAR@JU;L60VmjXkd^K%cbS_vZ#4^BpIjJa?`rBE76n!m zskWPOPQPGq>+Rnrd9nW1>t`z5f7M(5(@UA*YqnqVZJCLFjU2_4K757De(aAs8*lE_ z@dyOGMZP=v#XJlA72IpbJ50u@?CGwu8pH6K=8w=pQ%yQ#0%KhW%4(FT|~cDHRKTP86R%?3a<@G;o~Udv&{OYvyC?XZKro zPI!k}gf)2u=iTV@Zw89cnNlCq;g!{GWe2`)Qo2KzWjM`H>b3J`apEuNKUDa`xbLm2`=ln!=r|UH}AW5 zHmPPR{K_tld3m-`8tU0+aJCx(xag3N?gC7KNj2NM>dkS9>o)7Vzk&Dyzc1GVT{MO# z&70_D6k@k;vo=vH%$oBIxw5w2mRy#v}(oCt+Ks3OPG{PP%UBV;OOr=WpiX#RorOla)Uc8D=_<5a!`G>{40m9o$@*Ji}xgAiecC3c09}t39ELP z@Ne%eF`ml@MpY5w-_-`WA02Z1mPQtv8{R>{%qodbmW1(`_;g>uzHn?f#VPaTWd_ny z&sV=9V7u#`gV4+K@`Kqm4>&-+_e}_a<_8GBPH*`dBt#2Ua?h7G0}OKEXId%O-IMi(tRK~g%y8~ pNqo^Kz-P$yDfNamNl&D%oO?~_qCq5Lm{(thE{!JWaQM&k{|5rL^#}j} diff --git a/spec/fixtures/files/contract_2.pdf b/spec/fixtures/files/contract_2.pdf deleted file mode 100644 index deed7fb403be56f2275f4c3b66f6ff29e4872a1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19057 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 Qt%#RS4tn&5>fhJ@0|gN4b^rhX -- 2.47.3 From 16d4d7511c31a74bc390846baa54b676f2f900a3 Mon Sep 17 00:00:00 2001 From: Senad Uka Date: Mon, 15 Jun 2020 11:02:51 +0200 Subject: [PATCH 22/25] Rebased match --- app/models/account.rb | 1 + app/views/contract_templates/_form.html.erb | 2 +- spec/features/user_managing_appearance_releases_spec.rb | 1 + spec/models/account_spec.rb | 3 ++- 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/models/account.rb b/app/models/account.rb index 188dd71..009c671 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -56,6 +56,7 @@ class Account < ApplicationRecord Broadcast.where(project: projects), ZoomMeeting.where(project: projects), MedicalRelease.where(project: projects), + # MatchingRequest.where(project: projects), self ])).sum(:byte_size).to_f end diff --git a/app/views/contract_templates/_form.html.erb b/app/views/contract_templates/_form.html.erb index 9bd9b4a..dc74784 100644 --- a/app/views/contract_templates/_form.html.erb +++ b/app/views/contract_templates/_form.html.erb @@ -26,7 +26,7 @@ <% end %>
<% end %> - + <%= field_set_tag content_tag(:span, t(".custom_fields.heading"), class: "h6 text-muted text-uppercase"), id: "custom_fields", style: "display: none;" do %>

<%= fa_icon("info-circle", text: t(".custom_fields.instructions")) %>

<%= render "shared/custom_fields", form: form %> diff --git a/spec/features/user_managing_appearance_releases_spec.rb b/spec/features/user_managing_appearance_releases_spec.rb index 1bdc663..d4f8c70 100644 --- a/spec/features/user_managing_appearance_releases_spec.rb +++ b/spec/features/user_managing_appearance_releases_spec.rb @@ -144,6 +144,7 @@ feature 'User managing appearance releases' do large_pdf_file = build_large_pdf_file attach_file import_appearance_release_field, Rails.root.join(large_pdf_file.path), visible: false expect(page).to have_css('#upload-progress-container') + expect(page).to have_content submit_create_button, wait: 30 click_button submit_create_button expect(page).to have_content matching_started end diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index 3fbd316..8147964 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -131,7 +131,8 @@ RSpec.describe Account do Broadcast, Account, ZoomMeeting, - MedicalRelease + MedicalRelease, + MatchingRequest ] Rails.application.eager_load! ActiveRecord::Base.descendants.each do |model| -- 2.47.3 From 3650d6022c095dacc256ed21d908842c4f8b6605 Mon Sep 17 00:00:00 2001 From: bilal Date: Mon, 15 Jun 2020 12:18:23 +0200 Subject: [PATCH 23/25] set AWS_BUCKET just in one spec file --- config/environments/test.rb | 1 - spec/jobs/match_appearance_releases_job_spec.rb | 4 ++++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/config/environments/test.rb b/config/environments/test.rb index f972042..62c0971 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -49,5 +49,4 @@ Rails.application.configure do ENV["ENABLE_ANALYTICS"] = "true" ENV["BRAYNIAC_AI_API_ENDPOINT"] ||= "" - ENV["AWS_BUCKET"] = "" end diff --git a/spec/jobs/match_appearance_releases_job_spec.rb b/spec/jobs/match_appearance_releases_job_spec.rb index 84710fa..1a2a403 100644 --- a/spec/jobs/match_appearance_releases_job_spec.rb +++ b/spec/jobs/match_appearance_releases_job_spec.rb @@ -5,6 +5,10 @@ describe MatchAppearanceReleasesJob do let(:dummy_appearance_release) { create(:appearance_release_import, :with_headshot, :with_contract) } let(:dummy_matching_request) { instance_double(MatchingRequest, id: 999) } + before :all do + ENV["AWS_BUCKET"] = "" + end + describe ".perform_now" do it "returns if no attachment is sent" do expect(MatchingRequest).not_to receive(:create) -- 2.47.3 From 223833871060033f935e918514f934eab9132734 Mon Sep 17 00:00:00 2001 From: bilal Date: Tue, 16 Jun 2020 08:51:54 +0200 Subject: [PATCH 24/25] fix MR comments --- app/jobs/match_appearance_releases_job.rb | 4 +- app/models/account.rb | 2 +- lib/brayniac_ai.rb | 1 - .../appearance_release_matching.rb | 71 ------------------- .../match_appearance_releases_job_spec.rb | 4 +- 5 files changed, 5 insertions(+), 77 deletions(-) delete mode 100644 lib/brayniac_ai/appearance_release_matching.rb diff --git a/app/jobs/match_appearance_releases_job.rb b/app/jobs/match_appearance_releases_job.rb index 6087faa..5136170 100644 --- a/app/jobs/match_appearance_releases_job.rb +++ b/app/jobs/match_appearance_releases_job.rb @@ -22,8 +22,8 @@ class MatchAppearanceReleasesJob < ApplicationJob def handle_matches(matches, project, key_signed_id_hash) matches.each do |match| - contract_key = match.contracts.blank? ? nil : match.contracts.first - headshot_key = match.headshots.blank? ? nil : match.headshots.first + contract_key = Array.wrap(match.contracts).first + headshot_key = Array.wrap(match.headshots).first identifier = match.identifier contract = key_signed_id_hash[contract_key] diff --git a/app/models/account.rb b/app/models/account.rb index 009c671..5c82e51 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -56,7 +56,7 @@ class Account < ApplicationRecord Broadcast.where(project: projects), ZoomMeeting.where(project: projects), MedicalRelease.where(project: projects), - # MatchingRequest.where(project: projects), + MatchingRequest.where(project: projects), self ])).sum(:byte_size).to_f end diff --git a/lib/brayniac_ai.rb b/lib/brayniac_ai.rb index db9034b..a6a7143 100644 --- a/lib/brayniac_ai.rb +++ b/lib/brayniac_ai.rb @@ -3,7 +3,6 @@ require_relative "./brayniac_ai/aws_request_signing" require_relative "./brayniac_ai/aws_signed_connection" require_relative "./brayniac_ai/base" -require_relative "./brayniac_ai/appearance_release_matching" require_relative "./brayniac_ai/audio_recognition" require_relative "./brayniac_ai/collection" require_relative "./brayniac_ai/document_analysis" diff --git a/lib/brayniac_ai/appearance_release_matching.rb b/lib/brayniac_ai/appearance_release_matching.rb deleted file mode 100644 index 4c19339..0000000 --- a/lib/brayniac_ai/appearance_release_matching.rb +++ /dev/null @@ -1,71 +0,0 @@ -# frozen_string_literal: true - -module BrayniacAI - class AppearanceReleaseMatching - class << self - def match_attachments(request_data) - # TODO: Send request with request_data and receive real response - mock_response request_data - end - - private - - def mock_response(request_data) - attachments = request_data[:files] - pdfs = [] - images = [] - matches = [] - - # Use first file for the error entry - first_attachment = attachments.shift - - if first_attachment.present? - matches << { - headshots: [], - contracts: [], - unknowns: [first_attachment], - identifier: '' - } - end - - attachments.each do |attachment| - blob = ActiveStorage::Blob.find_signed attachment - next if blob.nil? - - if blob.image? - images << attachment - else - pdfs << attachment - end - end - - # Create pairs of matches and single headshot/contract after pairs are exhausted - more_pdfs = pdfs.length > images.length - pairs = more_pdfs ? pdfs.zip(images) : images.zip(pdfs) - pairs.each do |pair_element1, pair_element2| - if more_pdfs - pdf = pair_element1 - image = pair_element2 - else - pdf = pair_element2 - image = pair_element1 - end - headshots = image.present? ? [image] : [] - contracts = pdf.present? ? [pdf] : [] - - matches << { - headshots: headshots, - contracts: contracts, - unknowns: [], - identifier: '' - } - end - - { - request_id: request_data[:request_id], - matches: matches - } - end - end - end -end diff --git a/spec/jobs/match_appearance_releases_job_spec.rb b/spec/jobs/match_appearance_releases_job_spec.rb index 1a2a403..bd35985 100644 --- a/spec/jobs/match_appearance_releases_job_spec.rb +++ b/spec/jobs/match_appearance_releases_job_spec.rb @@ -80,8 +80,8 @@ describe MatchAppearanceReleasesJob do MatchAppearanceReleasesJob.perform_now project, signed_ids expect(AppearanceRelease.last.identifier).to eq mock_match.identifier - expect(AppearanceRelease.last.person_photo.attached?).to eq true - expect(AppearanceRelease.last.contract.attached?).to eq false + expect(AppearanceRelease.last.person_photo).to be_attached + expect(AppearanceRelease.last.contract).not_to be_attached end it "creates new incomplete appearance release if BrayniacAI returns single contract match" do -- 2.47.3 From fa4660d819ed4c9b7ff020bd51960d5ed94574cf Mon Sep 17 00:00:00 2001 From: bilal Date: Tue, 16 Jun 2020 17:24:40 +0200 Subject: [PATCH 25/25] rebase master --- db/structure.sql | 100 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 69 insertions(+), 31 deletions(-) diff --git a/db/structure.sql b/db/structure.sql index 204f848..f6a1918 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -9,20 +9,6 @@ SET xmloption = content; SET client_min_messages = warning; SET row_security = off; --- --- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - --- - -CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; - - --- --- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - --- - -COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; - - -- -- Name: fuzzystrmatch; Type: EXTENSION; Schema: -; Owner: - -- @@ -331,6 +317,7 @@ CREATE TABLE public.appearance_releases ( person_last_name character varying, guardian_first_name character varying, guardian_last_name character varying, + identifier character varying, guardian_email character varying ); @@ -886,6 +873,37 @@ CREATE SEQUENCE public.location_releases_id_seq ALTER SEQUENCE public.location_releases_id_seq OWNED BY public.location_releases.id; +-- +-- Name: matching_requests; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public.matching_requests ( + id bigint NOT NULL, + project_id bigint, + created_at timestamp(6) without time zone NOT NULL, + updated_at timestamp(6) without time zone NOT NULL +); + + +-- +-- Name: matching_requests_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.matching_requests_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: matching_requests_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.matching_requests_id_seq OWNED BY public.matching_requests.id; + + -- -- Name: material_releases; Type: TABLE; Schema: public; Owner: - -- @@ -1253,6 +1271,7 @@ CREATE TABLE public.settings ( -- CREATE SEQUENCE public.settings_id_seq + AS integer START WITH 1 INCREMENT BY 1 NO MINVALUE @@ -1288,6 +1307,7 @@ CREATE TABLE public.taggings ( -- CREATE SEQUENCE public.taggings_id_seq + AS integer START WITH 1 INCREMENT BY 1 NO MINVALUE @@ -1318,6 +1338,7 @@ CREATE TABLE public.tags ( -- CREATE SEQUENCE public.tags_id_seq + AS integer START WITH 1 INCREMENT BY 1 NO MINVALUE @@ -1630,7 +1651,6 @@ CREATE TABLE public.zoom_meetings ( api_meeting_id character varying, created_at timestamp(6) without time zone NOT NULL, updated_at timestamp(6) without time zone NOT NULL, - broadcast_id bigint, zoom_user_id bigint, project_id bigint, status integer DEFAULT 0 @@ -1829,6 +1849,13 @@ ALTER TABLE ONLY public.imports ALTER COLUMN id SET DEFAULT nextval('public.impo ALTER TABLE ONLY public.location_releases ALTER COLUMN id SET DEFAULT nextval('public.location_releases_id_seq'::regclass); +-- +-- Name: matching_requests id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.matching_requests ALTER COLUMN id SET DEFAULT nextval('public.matching_requests_id_seq'::regclass); + + -- -- Name: material_releases id; Type: DEFAULT; Schema: public; Owner: - -- @@ -2137,6 +2164,14 @@ ALTER TABLE ONLY public.location_releases ADD CONSTRAINT location_releases_pkey PRIMARY KEY (id); +-- +-- Name: matching_requests matching_requests_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.matching_requests + ADD CONSTRAINT matching_requests_pkey PRIMARY KEY (id); + + -- -- Name: material_releases material_releases_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- @@ -2606,6 +2641,13 @@ CREATE INDEX index_location_releases_on_term_id ON public.location_releases USIN CREATE INDEX index_location_releases_on_territory_id ON public.location_releases USING btree (territory_id); +-- +-- Name: index_matching_requests_on_project_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_matching_requests_on_project_id ON public.matching_requests USING btree (project_id); + + -- -- Name: index_material_releases_on_applicable_medium_id; Type: INDEX; Schema: public; Owner: - -- @@ -2935,13 +2977,6 @@ CREATE INDEX index_videos_on_audio_analysis_uid ON public.videos USING btree (au CREATE INDEX index_videos_on_project_id ON public.videos USING btree (project_id); --- --- Name: index_zoom_meetings_on_broadcast_id; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX index_zoom_meetings_on_broadcast_id ON public.zoom_meetings USING btree (broadcast_id); - - -- -- Name: index_zoom_meetings_on_project_id; Type: INDEX; Schema: public; Owner: - -- @@ -3250,6 +3285,14 @@ ALTER TABLE ONLY public.material_releases ADD CONSTRAINT fk_rails_6b945b36b9 FOREIGN KEY (contract_template_id) REFERENCES public.contract_templates(id); +-- +-- Name: matching_requests fk_rails_71d16e64c8; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.matching_requests + ADD CONSTRAINT fk_rails_71d16e64c8 FOREIGN KEY (project_id) REFERENCES public.projects(id); + + -- -- Name: appearance_releases fk_rails_7a58302526; Type: FK CONSTRAINT; Schema: public; Owner: - -- @@ -3282,14 +3325,6 @@ ALTER TABLE ONLY public.music_releases ADD CONSTRAINT fk_rails_890d967673 FOREIGN KEY (territory_id) REFERENCES public.territories(id); --- --- Name: zoom_meetings fk_rails_8d814ea729; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.zoom_meetings - ADD CONSTRAINT fk_rails_8d814ea729 FOREIGN KEY (broadcast_id) REFERENCES public.broadcasts(id); - - -- -- Name: medical_releases fk_rails_98aa92daa9; Type: FK CONSTRAINT; Schema: public; Owner: - -- @@ -3609,6 +3644,8 @@ INSERT INTO "schema_migrations" (version) VALUES ('20200424161117'), ('20200427073429'), ('20200428091105'), +('20200430151828'), +('20200430190412'), ('20200507110804'), ('20200512161738'), ('20200526113516'), @@ -3616,6 +3653,7 @@ INSERT INTO "schema_migrations" (version) VALUES ('20200606044747'), ('20200610085411'), ('20200610140459'), -('20200612121539'); +('20200612121539'), +('20200615131722'); -- 2.47.3