From c09e28324ffc038900f674ebbd0658d21beab7bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Bol=C3=ADvar?= Date: Thu, 5 Dec 2024 09:20:29 +0100 Subject: [PATCH 01/11] Register role by user and include it in the center authorization --- Gemfile.lock | 2 +- README.md | 16 +- .../centers/publish_center_update_event.rb | 1 + .../decidim/centers/admin/create_role.rb | 50 ++++++ .../decidim/centers/admin/destroy_role.rb | 47 +++++ .../decidim/centers/admin/update_role.rb | 47 +++++ .../centers/create_or_update_role_user.rb | 44 +++++ .../decidim/centers/admin/roles_controller.rb | 106 +++++++++++ .../decidim/centers/account_form_override.rb | 7 + app/forms/decidim/centers/admin/role_form.rb | 18 ++ .../decidim/centers/verifications/center.rb | 8 + .../decidim/centers/application_helper.rb | 6 + .../decidim/centers/auto_verification_job.rb | 2 +- .../decidim/centers/sync_role_user_job.rb | 29 +++ .../concerns/decidim/centers/user_override.rb | 18 ++ app/models/decidim/centers/role.rb | 25 +++ app/models/decidim/centers/role_user.rb | 28 +++ .../admin/resource_permissions_select2.js | 4 + .../decidim/centers/admin/permissions.rb | 2 +- .../centers/admin_log/role_presenter.rb | 29 +++ .../decidim/centers/_profile_form.html.erb | 5 + .../centers/_registration_form.html.erb | 4 + .../centers/admin/centers/index.html.erb | 8 +- .../centers/admin/roles/_form.html.erb | 10 ++ .../decidim/centers/admin/roles/edit.html.erb | 8 + .../centers/admin/roles/index.html.erb | 45 +++++ .../decidim/centers/admin/roles/new.html.erb | 8 + config/locales/en.yml | 48 ++++- ...1204134913_create_decidim_centers_roles.rb | 13 ++ ...35138_create_decidim_centers_role_users.rb | 12 ++ lib/decidim/centers.rb | 5 + lib/decidim/centers/admin_engine.rb | 7 + lib/decidim/centers/engine.rb | 2 + lib/decidim/centers/test/factories.rb | 15 ++ lib/decidim/centers/test/shared_contexts.rb | 11 +- .../verifications/center_action_authorizer.rb | 18 +- lib/decidim/centers/version.rb | 2 +- .../create_or_update_role_user_spec.rb | 40 +++++ .../centers/admin/roles_controller_spec.rb | 170 ++++++++++++++++++ .../decidim/centers/admin/role_form_spec.rb | 47 +++++ .../centers/verifications/center_spec.rb | 104 +++++++++++ .../centers/auto_verification_job_spec.rb | 5 +- spec/jobs/centers/sync_role_user_job_spec.rb | 47 +++++ spec/models/decidim/centers/role_spec.rb | 41 +++++ spec/models/decidim/centers/role_user_spec.rb | 32 ++++ spec/models/decidim/user_spec.rb | 40 ++++- .../decidim/centers/admin/permissions_spec.rb | 121 +++++++++---- .../centers/admin_log/role_presenter_spec.rb | 37 ++++ spec/system/account_spec.rb | 166 ++++++++++++++++- ...dmin_manages_component_permissions_spec.rb | 57 +++++- spec/system/admin_manages_roles_spec.rb | 166 +++++++++++++++++ spec/system/center_verifications_spec.rb | 155 +++++++++++++++- spec/system/registration_spec.rb | 25 ++- 53 files changed, 1882 insertions(+), 81 deletions(-) create mode 100644 app/commands/decidim/centers/admin/create_role.rb create mode 100644 app/commands/decidim/centers/admin/destroy_role.rb create mode 100644 app/commands/decidim/centers/admin/update_role.rb create mode 100644 app/commands/decidim/centers/create_or_update_role_user.rb create mode 100644 app/controllers/decidim/centers/admin/roles_controller.rb create mode 100644 app/forms/decidim/centers/admin/role_form.rb create mode 100644 app/jobs/decidim/centers/sync_role_user_job.rb create mode 100644 app/models/decidim/centers/role.rb create mode 100644 app/models/decidim/centers/role_user.rb create mode 100644 app/presenters/decidim/centers/admin_log/role_presenter.rb create mode 100644 app/views/decidim/centers/admin/roles/_form.html.erb create mode 100644 app/views/decidim/centers/admin/roles/edit.html.erb create mode 100644 app/views/decidim/centers/admin/roles/index.html.erb create mode 100644 app/views/decidim/centers/admin/roles/new.html.erb create mode 100644 db/migrate/20241204134913_create_decidim_centers_roles.rb create mode 100644 db/migrate/20241204135138_create_decidim_centers_role_users.rb create mode 100644 spec/commands/decidim/centers/create_or_update_role_user_spec.rb create mode 100644 spec/controllers/decidim/centers/admin/roles_controller_spec.rb create mode 100644 spec/forms/decidim/centers/admin/role_form_spec.rb create mode 100644 spec/jobs/centers/sync_role_user_job_spec.rb create mode 100644 spec/models/decidim/centers/role_spec.rb create mode 100644 spec/models/decidim/centers/role_user_spec.rb create mode 100644 spec/presenters/decidim/centers/admin_log/role_presenter_spec.rb create mode 100644 spec/system/admin_manages_roles_spec.rb diff --git a/Gemfile.lock b/Gemfile.lock index 6aadc24..1b816fe 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - decidim-centers (0.1.1) + decidim-centers (0.1.2) decidim-core (>= 0.27.0, < 0.28) deface (~> 1.9) diff --git a/README.md b/README.md index 9d01b89..828b95e 100644 --- a/README.md +++ b/README.md @@ -6,13 +6,14 @@ [![Maintainability](https://api.codeclimate.com/v1/badges/6b1b656b229f9731a64b/maintainability)](https://codeclimate.com/github/Platoniq/decidim-module-centers/maintainability) [![codecov](https://codecov.io/gh/Platoniq/decidim-module-centers/branch/main/graph/badge.svg)](https://codecov.io/gh/Platoniq/decidim-module-centers) -Manage your centers and scopes so the users can be authorized over them. As an admin you will be able -to create centers and scopes (we use the model Decidim currently provides). +Manage your centers, roles and scopes so the users can be authorized over them. As an admin you will be able +to create centers, roles and scopes (we use the model Decidim currently provides). When a user signs up in the platform two new fields will appear in the registration form. - **Center**: Where the user works. For example: "University of Granada" - **Scope**: The work scope in which the user works. For example: "Computer Science" +- **Role**: The role of the user in the center. For example: "Professor" ![Registration form](examples/registration.png) @@ -22,8 +23,8 @@ When they create the account or update their values, a `center` authorization wi with the value of the center and scope the user has selected. As an admin you will be able to configure the permissions of a component restricting the access to -specific centers and scopes. When you select multiple centers or scopes they work as "or". When you specify -both the center and the scope it will work as an "and" between them. +specific centers, roles and scopes. When you select multiple centers, roles or scopes they work as "or". When you specify +the center, the role and the scope it will work as an "and" between them. ![Permissions in the admin page](examples/permissions.png) @@ -58,9 +59,10 @@ Depending on your Decidim version, choose the corresponding version to ensure co You can customize your installation using the environment variables below: -| ENV | Description | Default | Example | -|--------------------------------------|-----------------------------------------------------------|---------|--------------| -| DECIDIM_CENTERS_SCOPES_ENABLED | Use scopes to categorize users too along with the centers | true | false | +| ENV | Description | Default | Example | +|--------------------------------|-----------------------------------------------------------|---------|--------------| +| DECIDIM_CENTERS_SCOPES_ENABLED | Use scopes to categorize users too along with the centers | true | false | +| DECIDIM_CENTERS_ROLES_ENABLED | Use roles to categorize users too along with the centers | true | false | > **IMPORTANT**: Remember to activate the verification method `center` in the > Decidim `/system` admin page for your organization. diff --git a/app/commands/concerns/decidim/centers/publish_center_update_event.rb b/app/commands/concerns/decidim/centers/publish_center_update_event.rb index 58ec1dc..257dc34 100644 --- a/app/commands/concerns/decidim/centers/publish_center_update_event.rb +++ b/app/commands/concerns/decidim/centers/publish_center_update_event.rb @@ -12,6 +12,7 @@ def publish_center_update_event "decidim.centers.user.updated", user_id: @user.id, center_id: @form.center_id, + role_id: @form.role_id, scope_id: @form.scope_id ) end diff --git a/app/commands/decidim/centers/admin/create_role.rb b/app/commands/decidim/centers/admin/create_role.rb new file mode 100644 index 0000000..f83b6d2 --- /dev/null +++ b/app/commands/decidim/centers/admin/create_role.rb @@ -0,0 +1,50 @@ +# frozen_string_literal: true + +module Decidim + module Centers + module Admin + # This command is executed when the user creates a Role from the admin + # panel. + class CreateRole < Decidim::Command + # Initializes a CreateRole Command. + # + # form - The form from which to get the data. + # current_user - The user who performs the action. + def initialize(form, current_user) + @form = form + @current_user = current_user + end + + # Creates the role if valid. + # + # Broadcasts :ok if successful, :invalid otherwise. + def call + return broadcast(:invalid) if form.invalid? + + transaction do + create_role! + end + + broadcast(:ok, @role) + end + + private + + attr_reader :form, :current_user + + def create_role! + attributes = { + organization: form.current_organization, + title: form.title + } + + @role = Decidim.traceability.create!( + Role, + current_user, + attributes + ) + end + end + end + end +end diff --git a/app/commands/decidim/centers/admin/destroy_role.rb b/app/commands/decidim/centers/admin/destroy_role.rb new file mode 100644 index 0000000..0137258 --- /dev/null +++ b/app/commands/decidim/centers/admin/destroy_role.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +module Decidim + module Centers + module Admin + # This command is executed when the user destroys a Role from the admin + # panel. + class DestroyRole < Decidim::Command + # Initializes a DestroyRole Command. + # + # role - The current instance of the role to be destroyed. + # current_user - The user who performs the action. + def initialize(role, current_user) + @role = role + @current_user = current_user + end + + # Destroys the role if valid. + # + # Broadcasts :ok if successful, :invalid otherwise. + def call + transaction do + destroy_role! + end + + broadcast(:ok, role) + end + + private + + attr_reader :role, :current_user + + def destroy_role! + attributes = { + deleted_at: Time.current + } + + Decidim.traceability.update!( + role, + current_user, + attributes + ) + end + end + end + end +end diff --git a/app/commands/decidim/centers/admin/update_role.rb b/app/commands/decidim/centers/admin/update_role.rb new file mode 100644 index 0000000..9c75607 --- /dev/null +++ b/app/commands/decidim/centers/admin/update_role.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +module Decidim + module Centers + module Admin + # This command is executed when the user changes a Role from the admin + # panel. + class UpdateRole < Decidim::Command + # Initializes a UpdateRole Command. + # + # form - The form from which to get the data. + # role - The current instance of the role to be updated. + # current_user - The user who performs the action. + def initialize(form, role, current_user) + @form = form + @role = role + @current_user = current_user + end + + # Updates the role if valid. + # + # Broadcasts :ok if successful, :invalid otherwise. + def call + return broadcast(:invalid) if form.invalid? + + transaction do + update_role! + end + + broadcast(:ok, role) + end + + private + + attr_reader :form, :role, :current_user + + def update_role! + Decidim.traceability.update!( + role, + current_user, + title: form.title + ) + end + end + end + end +end diff --git a/app/commands/decidim/centers/create_or_update_role_user.rb b/app/commands/decidim/centers/create_or_update_role_user.rb new file mode 100644 index 0000000..ebe896c --- /dev/null +++ b/app/commands/decidim/centers/create_or_update_role_user.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +module Decidim + module Centers + # This command is executed when a new relationship between user + # and role is created + class CreateOrUpdateRoleUser < Decidim::Command + # Initializes a CreateOrUpdateRoleUser Command. + # + # role - The role to be related with the user. + # user - The user to be related with the role. + def initialize(role, user) + @role = role + @user = user + end + + # Creates or update the role user if valid. + # + # Broadcasts :ok if successful, :invalid otherwise. + def call + transaction do + delete_existing_role_user! + create_role_user! + rescue ActiveRecord::RecordInvalid + broadcast(:invalid) + end + + broadcast(:ok, @role_user) + end + + private + + attr_reader :role, :user + + def delete_existing_role_user! + RoleUser.where(user: user).destroy_all + end + + def create_role_user! + @role_user = RoleUser.create!(role: role, user: user) + end + end + end +end diff --git a/app/controllers/decidim/centers/admin/roles_controller.rb b/app/controllers/decidim/centers/admin/roles_controller.rb new file mode 100644 index 0000000..07f7fc2 --- /dev/null +++ b/app/controllers/decidim/centers/admin/roles_controller.rb @@ -0,0 +1,106 @@ +# frozen_string_literal: true + +module Decidim + module Centers + module Admin + # This controller allows the create or update a role. + class RolesController < ApplicationController + include TranslatableAttributes + + helper_method :roles, :role + + def index + enforce_permission_to :index, :role + respond_to do |format| + format.html + format.json do + render json: json_roles + end + end + end + + def new + enforce_permission_to :create, :role + @form = form(RoleForm).instance + end + + def create + enforce_permission_to :create, :role + @form = form(RoleForm).from_params(params) + + CreateRole.call(@form, current_user) do + on(:ok) do + flash[:notice] = I18n.t("roles.create.success", scope: "decidim.centers.admin") + redirect_to roles_path + end + + on(:invalid) do + flash.now[:alert] = I18n.t("roles.create.invalid", scope: "decidim.centers.admin") + render action: "new" + end + end + end + + def edit + enforce_permission_to :update, :role, role: role + @form = form(RoleForm).from_model(role) + end + + def update + enforce_permission_to :update, :role, role: role + @form = form(RoleForm).from_params(params) + + UpdateRole.call(@form, role, current_user) do + on(:ok) do + flash[:notice] = I18n.t("roles.update.success", scope: "decidim.centers.admin") + redirect_to roles_path + end + + on(:invalid) do + flash.now[:alert] = I18n.t("roles.update.invalid", scope: "decidim.centers.admin") + render action: "edit" + end + end + end + + def destroy + enforce_permission_to :destroy, :role, role: role + + DestroyRole.call(role, current_user) do + on(:ok) do + flash[:notice] = I18n.t("roles.destroy.success", scope: "decidim.centers.admin") + end + end + + redirect_to roles_path + end + + private + + def json_roles + query = filtered_roles + query = query.where(id: params[:ids]) if params[:ids] + query = query.where("title->>? ilike ?", I18n.locale, "%#{params[:q]}%") if params[:q] + query.map do |item| + { + id: item.id, + text: translated_attribute(item.title) + } + end + end + + def role + @role ||= filtered_roles.find(params[:id]) + end + + def roles + @roles ||= filtered_roles.page(params[:page]).per(15) + end + + def filtered_roles + Role.where(organization: current_organization).not_deleted + end + end + end + end +end diff --git a/app/forms/concerns/decidim/centers/account_form_override.rb b/app/forms/concerns/decidim/centers/account_form_override.rb index f473748..b5e4db8 100644 --- a/app/forms/concerns/decidim/centers/account_form_override.rb +++ b/app/forms/concerns/decidim/centers/account_form_override.rb @@ -13,20 +13,27 @@ module AccountFormOverride include Decidim::Centers::ApplicationHelper attribute :center_id, Integer + attribute :role_id, Integer attribute :scope_id, Integer validates :center_id, presence: true + validates :role_id, presence: true, if: :role_id? validates :scope_id, presence: true, if: :scope_id? def map_model(model) original_map_model(model) self.center_id = model.center.try(:id) + self.role_id = model.role.try(:id) self.scope_id = model.scope.try(:id) end private + def role_id? + Decidim::Centers.roles_enabled + end + def scope_id? Decidim::Centers.scopes_enabled end diff --git a/app/forms/decidim/centers/admin/role_form.rb b/app/forms/decidim/centers/admin/role_form.rb new file mode 100644 index 0000000..e2990b2 --- /dev/null +++ b/app/forms/decidim/centers/admin/role_form.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +module Decidim + module Centers + module Admin + # This class holds a Form to update roles from Decidim's admin panel. + class RoleForm < Decidim::Form + include TranslatableAttributes + + translatable_attribute :title, String + + validates :title, translatable_presence: true + + alias organization current_organization + end + end + end +end diff --git a/app/forms/decidim/centers/verifications/center.rb b/app/forms/decidim/centers/verifications/center.rb index 33915fb..85c5c3b 100644 --- a/app/forms/decidim/centers/verifications/center.rb +++ b/app/forms/decidim/centers/verifications/center.rb @@ -7,11 +7,13 @@ module Centers module Verifications class Center < Decidim::AuthorizationHandler validate :center_present + validate :role_present validate :scope_present def metadata super.merge( centers: user.centers.pluck(:id), + roles: user.roles.pluck(:id), scopes: user.scopes.pluck(:id) ) end @@ -22,6 +24,12 @@ def center_present errors.add(:user, I18n.t("decidim.centers.authorizations.new.error")) unless user.centers.any? end + def role_present + return unless Decidim::Centers.roles_enabled + + errors.add(:user, I18n.t("decidim.centers.authorizations.new.error")) unless user.roles.any? + end + def scope_present return unless Decidim::Centers.scopes_enabled diff --git a/app/helpers/decidim/centers/application_helper.rb b/app/helpers/decidim/centers/application_helper.rb index 70ab802..9815372 100644 --- a/app/helpers/decidim/centers/application_helper.rb +++ b/app/helpers/decidim/centers/application_helper.rb @@ -12,6 +12,12 @@ def center_options_for_select [center.id, translated_attribute(center.title)] end end + + def role_options_for_select + Decidim::Centers::Role.where(organization: current_organization).map do |role| + [role.id, translated_attribute(role.title)] + end + end end end end diff --git a/app/jobs/decidim/centers/auto_verification_job.rb b/app/jobs/decidim/centers/auto_verification_job.rb index ce12300..79aad91 100644 --- a/app/jobs/decidim/centers/auto_verification_job.rb +++ b/app/jobs/decidim/centers/auto_verification_job.rb @@ -7,7 +7,7 @@ class AutoVerificationJob < ApplicationJob def perform(user_id) @user = Decidim::User.find(user_id) - @user.centers.any? || @user.scopes.any? ? create_auth : remove_auth + @user.centers.any? || @user.scopes.any? || @user.roles.any? ? create_auth : remove_auth rescue ActiveRecord::RecordNotFound => _e Rails.logger.error "AutoVerificationJob: ERROR: user not found #{user_id}" end diff --git a/app/jobs/decidim/centers/sync_role_user_job.rb b/app/jobs/decidim/centers/sync_role_user_job.rb new file mode 100644 index 0000000..71dc4cd --- /dev/null +++ b/app/jobs/decidim/centers/sync_role_user_job.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +module Decidim + module Centers + class SyncRoleUserJob < ApplicationJob + queue_as :default + + def perform(data) + @user = Decidim::User.find(data[:user_id]) + @role = Decidim::Centers::Role.find(data[:role_id]) + create_or_update_role_user + end + + private + + def create_or_update_role_user + Decidim::Centers::CreateOrUpdateRoleUser.call(@role, @user) do + on(:ok) do + Rails.logger.info "SyncRoleUserJob: Success: updated for user #{@user.id}" + end + + on(:invalid) do + Rails.logger.error "SyncRoleUserJob: ERROR: not updated for user #{@user.id}" + end + end + end + end + end +end diff --git a/app/models/concerns/decidim/centers/user_override.rb b/app/models/concerns/decidim/centers/user_override.rb index a09bbee..0b89f3c 100644 --- a/app/models/concerns/decidim/centers/user_override.rb +++ b/app/models/concerns/decidim/centers/user_override.rb @@ -13,6 +13,13 @@ module UserOverride has_many :centers, through: :center_users + has_many :role_users, + class_name: "Decidim::Centers::RoleUser", + foreign_key: "decidim_user_id", + dependent: :destroy + + has_many :roles, through: :role_users + has_many :scope_users, class_name: "Decidim::Centers::ScopeUser", foreign_key: "decidim_user_id", @@ -24,9 +31,20 @@ def center centers.first end + def role + roles.first + end + def scope scopes.first end + + def valid?(context = nil) + # @todo: Try to remove this hack and fix the root cause of the issue. When the user already has a role, the validation of the roles is failing + super(context) + errors.delete(:roles) + errors.empty? + end end end end diff --git a/app/models/decidim/centers/role.rb b/app/models/decidim/centers/role.rb new file mode 100644 index 0000000..fef6515 --- /dev/null +++ b/app/models/decidim/centers/role.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +module Decidim + module Centers + class Role < Centers::ApplicationRecord + include Decidim::TranslatableResource + + translatable_fields :title + + belongs_to :organization, + foreign_key: "decidim_organization_id", + class_name: "Decidim::Organization" + + scope :not_deleted, -> { where(deleted_at: nil) } + + def deleted? + deleted_at.present? + end + + def self.log_presenter_class_for(_log) + Decidim::Centers::AdminLog::RolePresenter + end + end + end +end diff --git a/app/models/decidim/centers/role_user.rb b/app/models/decidim/centers/role_user.rb new file mode 100644 index 0000000..91b1d87 --- /dev/null +++ b/app/models/decidim/centers/role_user.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +module Decidim + module Centers + class RoleUser < Centers::ApplicationRecord + include UniqueByUser + + belongs_to :role, + foreign_key: "decidim_centers_role_id", + class_name: "Decidim::Centers::Role" + + belongs_to :user, + foreign_key: "decidim_user_id", + class_name: "Decidim::User" + + validate :same_organization + + private + + def same_organization + return if role.try(:organization) == user.try(:organization) + + errors.add(:role, :invalid) + errors.add(:user, :invalid) + end + end + end +end diff --git a/app/packs/src/decidim/centers/admin/resource_permissions_select2.js b/app/packs/src/decidim/centers/admin/resource_permissions_select2.js index 5b6580d..e07fd79 100644 --- a/app/packs/src/decidim/centers/admin/resource_permissions_select2.js +++ b/app/packs/src/decidim/centers/admin/resource_permissions_select2.js @@ -9,6 +9,10 @@ $(() => { url: "/admin/centers/centers", inputName: "[authorization_handlers_options][center][centers]" }, + { + url: "/admin/centers/roles", + inputName: "[authorization_handlers_options][center][roles]" + }, { url: "/admin/centers/scopes", inputName: "[authorization_handlers_options][center][scopes]" diff --git a/app/permissions/decidim/centers/admin/permissions.rb b/app/permissions/decidim/centers/admin/permissions.rb index c1b42db..e4186f8 100644 --- a/app/permissions/decidim/centers/admin/permissions.rb +++ b/app/permissions/decidim/centers/admin/permissions.rb @@ -8,7 +8,7 @@ def permissions return permission_action unless user return permission_action unless user.admin? return permission_action unless permission_action.scope == :admin - return permission_action unless permission_action.subject == :center + return permission_action unless [:center, :role].include?(permission_action.subject) allow! permission_action diff --git a/app/presenters/decidim/centers/admin_log/role_presenter.rb b/app/presenters/decidim/centers/admin_log/role_presenter.rb new file mode 100644 index 0000000..9ffd0a7 --- /dev/null +++ b/app/presenters/decidim/centers/admin_log/role_presenter.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +module Decidim + module Centers + module AdminLog + # This class holds the logic to present a `Decidim::Centers::Role` + # for the `AdminLog` log. + # + # Usage should be automatic and you shouldn't need to call this class + # directly, but here's an example: + # + # action_log = Decidim::ActionLog.last + # view_helpers # => this comes from the views + # RolePresenter.new(action_log, view_helpers).present + class RolePresenter < Decidim::Log::BasePresenter + private + + def action_string + case action + when "create", "delete", "update" + "decidim.centers.admin_log.role.#{action}" + else + super + end + end + end + end + end +end diff --git a/app/views/decidim/centers/_profile_form.html.erb b/app/views/decidim/centers/_profile_form.html.erb index d4d8480..70620cb 100644 --- a/app/views/decidim/centers/_profile_form.html.erb +++ b/app/views/decidim/centers/_profile_form.html.erb @@ -1,5 +1,10 @@ <%= f.collection_select :center_id, f.object.center_options_for_select, :first, :last %> +<% if Decidim::Centers.roles_enabled %> + <%= f.collection_select :role_id, f.object.role_options_for_select, :first, :last %> +<% end %> + + <% if Decidim::Centers.scopes_enabled %> <%= scopes_picker_field f, :scope_id, root: nil %> <% end %> diff --git a/app/views/decidim/centers/_registration_form.html.erb b/app/views/decidim/centers/_registration_form.html.erb index 0d28e15..6e639e7 100644 --- a/app/views/decidim/centers/_registration_form.html.erb +++ b/app/views/decidim/centers/_registration_form.html.erb @@ -3,6 +3,10 @@
<%= f.collection_select :center_id, f.object.center_options_for_select, :first, :last %> + <% if Decidim::Centers.roles_enabled %> + <%= f.collection_select :role_id, f.object.role_options_for_select, :first, :last %> + <% end %> + <% if Decidim::Centers.scopes_enabled %> <%= scopes_picker_field f, :scope_id, root: nil %> <% end %> diff --git a/app/views/decidim/centers/admin/centers/index.html.erb b/app/views/decidim/centers/admin/centers/index.html.erb index 517da15..6417032 100644 --- a/app/views/decidim/centers/admin/centers/index.html.erb +++ b/app/views/decidim/centers/admin/centers/index.html.erb @@ -3,7 +3,7 @@

<%= t(".title") %> - <%= link_to t("actions.new", scope: "decidim.centers", name: t("models.center.name", scope: "decidim.centers.admin")), new_center_path, class: "button tiny button--title" if allowed_to? :create, :center %> + <%= link_to t("actions.new", scope: "decidim.centers.admin.centers", name: t("models.center.name", scope: "decidim.centers.admin")), new_center_path, class: "button tiny button--title" if allowed_to? :create, :center %>

@@ -14,7 +14,7 @@ <%= t("models.center.fields.title", scope: "decidim.centers") %> <%= t("models.center.fields.created_at", scope: "decidim.centers") %> - <%= t("actions.title", scope: "decidim.centers") %> + <%= t("actions.title", scope: "decidim.centers.admin.centers") %> @@ -28,11 +28,11 @@ <% if allowed_to? :update, :center, center: center %> - <%= icon_link_to "pencil", edit_center_path(center), t("actions.edit", scope: "decidim.centers"), class: "action-icon--edit" %> + <%= icon_link_to "pencil", edit_center_path(center), t("actions.edit", scope: "decidim.centers.admin.centers"), class: "action-icon--edit" %> <% end %> <% if allowed_to? :destroy, :center, center: center %> - <%= icon_link_to "circle-x", center_path(center), t("actions.destroy", scope: "decidim.centers"), method: :delete, class: "action-icon--remove", data: { confirm: t("actions.confirm_destroy", scope: "decidim.centers") } %> + <%= icon_link_to "circle-x", center_path(center), t("actions.destroy", scope: "decidim.centers.admin.centers"), method: :delete, class: "action-icon--remove", data: { confirm: t("actions.confirm_destroy", scope: "decidim.centers.admin.centers") } %> <% end %> diff --git a/app/views/decidim/centers/admin/roles/_form.html.erb b/app/views/decidim/centers/admin/roles/_form.html.erb new file mode 100644 index 0000000..245ebbd --- /dev/null +++ b/app/views/decidim/centers/admin/roles/_form.html.erb @@ -0,0 +1,10 @@ +
+
+

<%= title %>

+
+
+
+ <%= form.translated :text_field, :title, autofocus: true %> +
+
+
diff --git a/app/views/decidim/centers/admin/roles/edit.html.erb b/app/views/decidim/centers/admin/roles/edit.html.erb new file mode 100644 index 0000000..6404799 --- /dev/null +++ b/app/views/decidim/centers/admin/roles/edit.html.erb @@ -0,0 +1,8 @@ +<% add_decidim_page_title(t(".title")) %> +<%= decidim_form_for(@form, html: { class: "form edit_role" }) do |f| %> + <%= render partial: "form", object: f, locals: { title: t(".title") } %> + +
+ <%= f.submit t(".save") %> +
+<% end %> diff --git a/app/views/decidim/centers/admin/roles/index.html.erb b/app/views/decidim/centers/admin/roles/index.html.erb new file mode 100644 index 0000000..16f6339 --- /dev/null +++ b/app/views/decidim/centers/admin/roles/index.html.erb @@ -0,0 +1,45 @@ +<% add_decidim_page_title(t(".title")) %> +
+
+

+ <%= t(".title") %> + <%= link_to t("actions.new", scope: "decidim.centers.admin.roles", name: t("models.role.name", scope: "decidim.centers.admin")), new_role_path, class: "button tiny button--title" if allowed_to? :create, :role %> +

+
+ +
+
+ + + + + + + + + + <% roles.each do |role| %> + + + + + + <% end %> + +
<%= t("models.role.fields.title", scope: "decidim.centers") %><%= t("models.role.fields.created_at", scope: "decidim.centers") %><%= t("actions.title", scope: "decidim.centers.admin.roles") %>
+ <%= translated_attribute(role.title) %>
+
+ <%= l role.created_at, format: "%d/%m/%Y - %H:%M" %> + + <% if allowed_to? :update, :role, role: role %> + <%= icon_link_to "pencil", edit_role_path(role), t("actions.edit", scope: "decidim.centers.admin.roles"), class: "action-icon--edit" %> + <% end %> + + <% if allowed_to? :destroy, :role, role: role %> + <%= icon_link_to "circle-x", role_path(role), t("actions.destroy", scope: "decidim.centers.admin.roles"), method: :delete, class: "action-icon--remove", data: { confirm: t("actions.confirm_destroy", scope: "decidim.centers.admin.roles") } %> + <% end %> +
+ <%= paginate roles, theme: "decidim" %> +
+
+
diff --git a/app/views/decidim/centers/admin/roles/new.html.erb b/app/views/decidim/centers/admin/roles/new.html.erb new file mode 100644 index 0000000..a78366c --- /dev/null +++ b/app/views/decidim/centers/admin/roles/new.html.erb @@ -0,0 +1,8 @@ +<% add_decidim_page_title(t(".title")) %> +<%= decidim_form_for(@form, html: { class: "form new_role" }) do |f| %> + <%= render partial: "form", object: f, locals: { title: t(".title") } %> + +
+ <%= f.submit t(".create") %> +
+<% end %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 14fb89a..79176dd 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -6,17 +6,18 @@ en: explanation: Get verified with the center of the user fields: centers: Centers + roles: Roles scopes: Scopes name: Center centers: - actions: - confirm_destroy: Are you sure you want to delete this center? - destroy: Delete - edit: Edit - new: New center - title: Actions admin: centers: + actions: + confirm_destroy: Are you sure you want to delete this center? + destroy: Delete + edit: Edit + new: New center + title: Actions create: invalid: There was a problem creating this center success: Center successfully created @@ -33,19 +34,52 @@ en: update: invalid: There was a problem saving the center. success: Center successfully saved + roles: + actions: + confirm_destroy: Are you sure you want to delete this role? + destroy: Delete + edit: Edit + new: New role + title: Actions + create: + invalid: There was a problem creating this role + success: Role successfully created + destroy: + success: Role successfully deleted + edit: + save: Update + title: Edit role + index: + title: Roles + new: + create: Create + title: Create role + update: + invalid: There was a problem saving the role. + success: Role successfully saved models: center: name: Center + role: + name: Role admin_log: center: create: "%{user_name} created the %{resource_name} center" delete: "%{user_name} deleted the %{resource_name} center" update: "%{user_name} updated the %{resource_name} center" + role: + create: "%{user_name} created the %{resource_name} role" + delete: "%{user_name} deleted the %{resource_name} role" + update: "%{user_name} updated the %{resource_name} role" authorizations: new: - error: The user has no center or scope configured + error: The user has no center, role or scope configured models: center: fields: created_at: Created at title: Title + role: + fields: + title: Title + created_at: Created at diff --git a/db/migrate/20241204134913_create_decidim_centers_roles.rb b/db/migrate/20241204134913_create_decidim_centers_roles.rb new file mode 100644 index 0000000..f5a810a --- /dev/null +++ b/db/migrate/20241204134913_create_decidim_centers_roles.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class CreateDecidimCentersRoles < ActiveRecord::Migration[6.1] + def change + create_table :decidim_centers_roles do |t| + t.references :decidim_organization, foreign_key: true, index: true + t.jsonb :title, null: false + t.datetime :deleted_at + + t.timestamps + end + end +end diff --git a/db/migrate/20241204135138_create_decidim_centers_role_users.rb b/db/migrate/20241204135138_create_decidim_centers_role_users.rb new file mode 100644 index 0000000..e78f49b --- /dev/null +++ b/db/migrate/20241204135138_create_decidim_centers_role_users.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +class CreateDecidimCentersRoleUsers < ActiveRecord::Migration[6.1] + def change + create_table :decidim_centers_role_users do |t| + t.references :decidim_centers_role, foreign_key: true, index: { name: "index_decidim_role_users_on_decidim_role_id" } + t.references :decidim_user, foreign_key: true, index: { name: "index_decidim_role_users_on_decidim_user_id" } + + t.timestamps + end + end +end diff --git a/lib/decidim/centers.rb b/lib/decidim/centers.rb index e004b0e..7c1710f 100644 --- a/lib/decidim/centers.rb +++ b/lib/decidim/centers.rb @@ -15,5 +15,10 @@ module Centers config_accessor :scopes_enabled do Decidim::Env.new("DECIDIM_CENTERS_SCOPES_ENABLED", true).default_or_present_if_exists end + + # if false, it won't ask the user for the role + config_accessor :roles_enabled do + Decidim::Env.new("DECIDIM_CENTERS_ROLES_ENABLED", true).default_or_present_if_exists + end end end diff --git a/lib/decidim/centers/admin_engine.rb b/lib/decidim/centers/admin_engine.rb index 72930b8..f9967c8 100644 --- a/lib/decidim/centers/admin_engine.rb +++ b/lib/decidim/centers/admin_engine.rb @@ -11,6 +11,7 @@ class AdminEngine < ::Rails::Engine routes do resources :centers + resources :roles resources :scopes, only: :index root to: "centers#index" end @@ -29,6 +30,12 @@ class AdminEngine < ::Rails::Engine icon_name: "home", position: 15, active: :inclusive + menu.add_item :roles, + I18n.t("menu.roles", scope: "decidim.admin", default: "Roles"), + decidim_admin_centers.roles_path, + icon_name: "members", + position: 16, + active: :inclusive end end diff --git a/lib/decidim/centers/engine.rb b/lib/decidim/centers/engine.rb index 1b5b0dd..8070e98 100644 --- a/lib/decidim/centers/engine.rb +++ b/lib/decidim/centers/engine.rb @@ -54,6 +54,7 @@ class Engine < ::Rails::Engine initializer "decidim_centers.sync" do ActiveSupport::Notifications.subscribe "decidim.centers.user.updated" do |_name, data| Decidim::Centers::SyncCenterUserJob.perform_now(data) + Decidim::Centers::SyncRoleUserJob.perform_now(data) if Decidim::Centers.roles_enabled Decidim::Centers::SyncScopeUserJob.perform_now(data) if Decidim::Centers.scopes_enabled Decidim::Centers::AutoVerificationJob.perform_later(data[:user_id]) end @@ -66,6 +67,7 @@ class Engine < ::Rails::Engine workflow.options do |options| options.attribute :centers, type: :string + options.attribute :roles, type: :string if Decidim::Centers.roles_enabled options.attribute :scopes, type: :string if Decidim::Centers.scopes_enabled end end diff --git a/lib/decidim/centers/test/factories.rb b/lib/decidim/centers/test/factories.rb index 9cd396e..3685de1 100644 --- a/lib/decidim/centers/test/factories.rb +++ b/lib/decidim/centers/test/factories.rb @@ -18,6 +18,21 @@ center { create :center, organization: user.organization } end + factory :role, class: "Decidim::Centers::Role" do + organization { create :organization } + title { generate_localized_title } + deleted_at { nil } + + trait :deleted do + deleted_at { Time.current } + end + end + + factory :role_user, class: "Decidim::Centers::RoleUser" do + user { create :user } + role { create :role, organization: user.organization } + end + factory :scope_user, class: "Decidim::Centers::ScopeUser" do user { create :user } scope { create :scope, organization: user.organization } diff --git a/lib/decidim/centers/test/shared_contexts.rb b/lib/decidim/centers/test/shared_contexts.rb index e3acd1a..4afc8ad 100644 --- a/lib/decidim/centers/test/shared_contexts.rb +++ b/lib/decidim/centers/test/shared_contexts.rb @@ -1,10 +1,11 @@ # frozen_string_literal: true -def check_center_authorization(authorization, user, center, scope = nil) +def check_center_authorization(authorization, user, center, scope: nil, role: nil) expect(authorization.name).to eq("center") expect(authorization.user).to eq(user) expect(authorization.metadata["centers"]).to include(center.id) expect(authorization.metadata["scopes"]).to include(scope.id) if scope + expect(authorization.metadata["roles"]).to include(role.id) if role end shared_examples_for "no authorization is created" do @@ -20,3 +21,11 @@ def check_center_authorization(authorization, user, center, scope = nil) allow(Decidim::Centers).to receive(:scopes_enabled).and_return(false) end end + +shared_context "with roles disabled" do + let(:role) { nil } + + before do + allow(Decidim::Centers).to receive(:roles_enabled).and_return(false) + end +end diff --git a/lib/decidim/centers/verifications/center_action_authorizer.rb b/lib/decidim/centers/verifications/center_action_authorizer.rb index 428eafe..fba3cc4 100644 --- a/lib/decidim/centers/verifications/center_action_authorizer.rb +++ b/lib/decidim/centers/verifications/center_action_authorizer.rb @@ -9,7 +9,7 @@ def authorize status_code = :unauthorized return [status_code, { fields: { centers: "..." } }] if authorization_centers.blank? - return [:ok, {}] if belongs_to_center? && belongs_to_scope? + return [:ok, {}] if belongs_to_center? && belongs_to_scope? && belongs_to_role? [status_code, {}] end @@ -20,6 +20,12 @@ def options_centers options["centers"]&.split(",") || [] end + def options_roles + return [] unless Decidim::Centers.roles_enabled + + options["roles"]&.split(",") || [] + end + def options_scopes return [] unless Decidim::Centers.scopes_enabled @@ -30,6 +36,10 @@ def authorization_centers authorization.metadata["centers"] || [] end + def authorization_roles + authorization.metadata["roles"] || [] + end + def authorization_scopes authorization.metadata["scopes"] || [] end @@ -38,6 +48,12 @@ def belongs_to_center? options_centers.empty? || options_centers.detect { |center| authorization_centers.include? center.to_i } end + def belongs_to_role? + return true unless Decidim::Centers.roles_enabled + + options_roles.empty? || options_roles.detect { |center| authorization_roles.include? center.to_i } + end + def belongs_to_scope? return true unless Decidim::Centers.scopes_enabled diff --git a/lib/decidim/centers/version.rb b/lib/decidim/centers/version.rb index b51add3..2a6e664 100644 --- a/lib/decidim/centers/version.rb +++ b/lib/decidim/centers/version.rb @@ -3,7 +3,7 @@ module Decidim # This holds the decidim-centers version. module Centers - VERSION = "0.1.1" + VERSION = "0.1.2" DECIDIM_VERSION = "0.27.4" COMPAT_DECIDIM_VERSION = [">= 0.27.0", "< 0.28"].freeze end diff --git a/spec/commands/decidim/centers/create_or_update_role_user_spec.rb b/spec/commands/decidim/centers/create_or_update_role_user_spec.rb new file mode 100644 index 0000000..19336d9 --- /dev/null +++ b/spec/commands/decidim/centers/create_or_update_role_user_spec.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +require "spec_helper" + +module Decidim + module Centers + describe CreateOrUpdateRoleUser do + subject { described_class.new(role, user) } + + let(:organization) { create :organization } + let(:user) { create :user, organization: organization } + let(:role) { create :role, organization: organization } + + context "when the user and role organizations are different" do + let(:other_organization) { create :organization } + let(:role) { create :role, organization: other_organization } + + it "is not valid" do + expect { subject.call }.to broadcast(:invalid) + end + end + + context "when everything is ok" do + context "when the user has no role" do + it "increases the number of role users" do + expect { subject.call }.to change(RoleUser, :count).by(1) + end + end + + context "when the user already has a role" do + let!(:role_user) { create :role_user, user: user } + + it "does not increase the number of role users" do + expect { subject.call }.not_to change(RoleUser, :count) + end + end + end + end + end +end diff --git a/spec/controllers/decidim/centers/admin/roles_controller_spec.rb b/spec/controllers/decidim/centers/admin/roles_controller_spec.rb new file mode 100644 index 0000000..fa578a0 --- /dev/null +++ b/spec/controllers/decidim/centers/admin/roles_controller_spec.rb @@ -0,0 +1,170 @@ +# frozen_string_literal: true + +require "spec_helper" + +module Decidim + module Centers + module Admin + describe RolesController, type: :controller do + routes { Decidim::Centers::AdminEngine.routes } + + let(:organization) { create :organization } + let(:user) { create :user, :admin, :confirmed, organization: organization } + let!(:roles) { create_list :role, 20, organization: organization } + + before do + request.env["decidim.current_organization"] = organization + sign_in user, scope: :user + end + + describe "#index" do + it "renders the index template" do + get :index + + expect(response).to render_template(:index) + end + end + + describe "#new" do + it "renders the new template" do + get :new + + expect(response).to render_template(:new) + end + end + + describe "#edit" do + let(:params) do + { + id: id + } + end + + context "with valid params" do + let(:id) { roles.first.id } + + it "renders the edit template" do + get :edit, params: params + + expect(response).to render_template(:edit) + end + end + + context "with non existing record" do + let(:id) { -1 } + + it "raise not found exception" do + expect { get :edit, params: params }.to raise_error(ActiveRecord::RecordNotFound) + end + end + end + + describe "#create" do + let(:params) do + { + title: { + en: title + } + } + end + + context "with invalid params" do + let(:title) { "" } + + it "renders the new template" do + post :create, params: params + + expect(response).to render_template(:new) + end + end + + context "with valid params" do + let(:title) { "My title" } + + it "redirects to index" do + expect(controller).to receive(:redirect_to) do |params| + expect(params).to eq("/roles") + end + + post :create, params: params + end + end + end + + describe "#update" do + let(:params) do + { + id: id, + title: { + en: title + } + } + end + + context "with existing record" do + let(:id) { roles.first.id } + + context "with invalid params" do + let(:title) { "" } + + it "renders the edit template" do + put :update, params: params + + expect(response).to render_template(:edit) + end + end + + context "with valid params" do + let(:title) { "My title" } + + it "redirects to index" do + expect(controller).to receive(:redirect_to) do |params| + expect(params).to eq("/roles") + end + + put :update, params: params + end + end + end + + context "with non existing record" do + let(:id) { -1 } + let(:title) { "My title" } + + it "raise not found exception" do + expect { put :update, params: params }.to raise_error(ActiveRecord::RecordNotFound) + end + end + end + + describe "#destroy" do + let(:params) do + { + id: id + } + end + + context "with existing record" do + let(:id) { roles.first.id } + + it "redirects to index" do + expect(controller).to receive(:redirect_to) do |params| + expect(params).to eq("/roles") + end + + delete :destroy, params: params + end + end + + context "with non existing record" do + let(:id) { -1 } + + it "raise not found exception" do + expect { delete :destroy, params: params }.to raise_error(ActiveRecord::RecordNotFound) + end + end + end + end + end + end +end diff --git a/spec/forms/decidim/centers/admin/role_form_spec.rb b/spec/forms/decidim/centers/admin/role_form_spec.rb new file mode 100644 index 0000000..19613e7 --- /dev/null +++ b/spec/forms/decidim/centers/admin/role_form_spec.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +require "spec_helper" + +module Decidim + module Centers + module Admin + describe RoleForm do + subject do + described_class.from_params(attributes).with_context( + current_organization: current_organization + ) + end + + let(:current_organization) { create :organization } + + let(:title) do + { + "en" => "Title", + "ca" => "Títol", + "es" => "Título" + } + end + + let(:attributes) do + { + "role" => { + "title" => title + } + } + end + + context "when everything is OK" do + it { is_expected.to be_valid } + end + + context "when title is missing" do + let(:title) do + { "en" => "" } + end + + it { is_expected.to be_invalid } + end + end + end + end +end diff --git a/spec/forms/decidim/centers/verifications/center_spec.rb b/spec/forms/decidim/centers/verifications/center_spec.rb index 7b4853e..782ecf8 100644 --- a/spec/forms/decidim/centers/verifications/center_spec.rb +++ b/spec/forms/decidim/centers/verifications/center_spec.rb @@ -19,10 +19,62 @@ module Verifications let(:metadata) do { centers: [center_user.center.id], + roles: [], scopes: [] } end + context "when roles are disabled" do + include_context "with roles disabled" + + context "when the user has no center" do + let(:user) { create :user } + + it { is_expected.not_to be_valid } + end + end + + context "when roles are enabled" do + let(:metadata) do + { + centers: [center_user.center.id], + roles: [role_user.role.id] + } + end + + context "when the user has no center" do + let(:user) { create :user } + + context "when the user has no role" do + let(:role_user) { create :role_user } + + it { is_expected.not_to be_valid } + end + + context "when the user has role" do + let!(:role_user) { create :role_user, user: user } + + it { is_expected.not_to be_valid } + end + end + + context "when the user has center" do + context "when the user has no scope" do + it { is_expected.not_to be_valid } + end + + context "when the user has role" do + let!(:role_user) { create :role_user, user: user } + + it { is_expected.to be_valid } + + it "returns valid metadata" do + expect(subject.metadata).to eq(metadata) + end + end + end + end + context "when scopes are disabled" do include_context "with scopes disabled" @@ -73,6 +125,58 @@ module Verifications end end end + + context "when scopes and roles are enabled" do + let(:metadata) do + { + centers: [center_user.center.id], + roles: [role_user.role.id], + scopes: [scope_user.scope.id] + } + end + + context "when the user has center" do + context "when the user has no scope" do + it { is_expected.not_to be_valid } + end + + context "when the user has scope" do + let!(:scope_user) { create :scope_user, user: user } + + context "when the user has no role" do + it { is_expected.not_to be_valid } + end + + context "when the user has role" do + let!(:role_user) { create :role_user, user: user } + + it { is_expected.to be_valid } + + it "returns valid metadata" do + expect(subject.metadata).to eq(metadata) + end + end + end + + context "when the user has role" do + let!(:role_user) { create :role_user, user: user } + + context "when the user has no scope" do + it { is_expected.not_to be_valid } + end + + context "when the user has scope" do + let!(:scope_user) { create :scope_user, user: user } + + it { is_expected.to be_valid } + + it "returns valid metadata" do + expect(subject.metadata).to eq(metadata) + end + end + end + end + end end end end diff --git a/spec/jobs/centers/auto_verification_job_spec.rb b/spec/jobs/centers/auto_verification_job_spec.rb index d45f7ea..7dc2297 100644 --- a/spec/jobs/centers/auto_verification_job_spec.rb +++ b/spec/jobs/centers/auto_verification_job_spec.rb @@ -23,7 +23,7 @@ module Centers allow(Rails.logger).to receive(:error).and_call_original end - context "when the user has no center neither scope" do + context "when the user has no center neither role neither scope" do it_behaves_like "no authorization is created" context "when there is a previous authorization for the user" do @@ -48,8 +48,9 @@ module Centers end end - context "when the user has center and scope" do + context "when the user has center, role and scope" do let!(:center_user) { create :center_user, user: user } + let!(:role_user) { create :role_user, user: user } let!(:scope_user) { create :scope_user, user: user } it "creates an authorization" do diff --git a/spec/jobs/centers/sync_role_user_job_spec.rb b/spec/jobs/centers/sync_role_user_job_spec.rb new file mode 100644 index 0000000..8fe3e86 --- /dev/null +++ b/spec/jobs/centers/sync_role_user_job_spec.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +require "spec_helper" + +module Decidim + module Centers + describe SyncRoleUserJob do + subject { described_class } + + describe "queue" do + it "is queued to events" do + expect(subject.queue_name).to eq "default" + end + end + + describe "perform" do + let(:user) { create :user } + let(:role) { create :role } + let(:params) { { user_id: user.id, role_id: role.id } } + + before do + allow(Rails.logger).to receive(:info).and_call_original + allow(Rails.logger).to receive(:error).and_call_original + subject.perform_now(params) + end + + context "when the sync runs successfully" do + it "writes an info log" do + expect(Rails.logger).to have_received(:info).with(/SyncRoleUserJob: Success/) + end + end + + context "when the sync fails" do + before do + # rubocop: disable RSpec/AnyInstance + allow_any_instance_of(Decidim::Centers::CreateOrUpdateRoleUser).to receive(:delete_existing_role_user!).and_raise + # rubocop: enable RSpec/AnyInstance + end + + it "writes an error log" do + expect(Rails.logger).to have_received(:error).with(/SyncRoleUserJob: ERROR/) + end + end + end + end + end +end diff --git a/spec/models/decidim/centers/role_spec.rb b/spec/models/decidim/centers/role_spec.rb new file mode 100644 index 0000000..c42c679 --- /dev/null +++ b/spec/models/decidim/centers/role_spec.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +require "spec_helper" + +module Decidim + module Centers + describe Role do + subject { role } + + let(:role) { create :role } + + it { is_expected.to be_valid } + + describe "deleted?" do + subject { role.deleted? } + + context "when not deleted" do + it { is_expected.to be false } + end + + context "when deleted" do + let(:role) { create :role, :deleted } + + it { is_expected.to be true } + end + end + + describe "not_deleted" do + subject { described_class.not_deleted } + + let!(:roles) { create_list :role, 5 } + let!(:deleted_roles) { create_list :role, 3, :deleted } + + it "returns not deleted roles" do + expect(subject.count).to be 5 + expect(described_class.count).to be 8 + end + end + end + end +end diff --git a/spec/models/decidim/centers/role_user_spec.rb b/spec/models/decidim/centers/role_user_spec.rb new file mode 100644 index 0000000..e5b7c1e --- /dev/null +++ b/spec/models/decidim/centers/role_user_spec.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +require "spec_helper" + +module Decidim + module Centers + describe RoleUser do + subject { role_user } + + let(:role_user) { build :role_user } + + it { is_expected.to be_valid } + + describe "same_organization" do + let(:organization) { create :organization } + let(:other_organization) { create :organization } + let(:role) { create :role, organization: organization } + let(:user) { create :user, organization: other_organization } + let(:role_user) { build :role_user, role: role, user: user } + + it { is_expected.not_to be_valid } + end + + describe "unique_by_user" do + let!(:other_rule_user) { create :role_user } + let(:role_user) { build :role_user, user: other_rule_user.user } + + it { is_expected.not_to be_valid } + end + end + end +end diff --git a/spec/models/decidim/user_spec.rb b/spec/models/decidim/user_spec.rb index 7754b0b..9e62d57 100644 --- a/spec/models/decidim/user_spec.rb +++ b/spec/models/decidim/user_spec.rb @@ -30,16 +30,48 @@ module Decidim expect(subject.center_users).to eq Centers::CenterUser.all end - it "has no centers" do + it "has centers" do expect(subject.centers).to eq Centers::Center.all end - it "has no center" do + it "has center" do expect(subject.center).to eq Centers::Center.first end end end + describe "roles" do + context "without role" do + it "has no role_users" do + expect(subject.role_users).to eq [] + end + + it "has no roles" do + expect(subject.roles).to eq [] + end + + it "has no rule" do + expect(subject.rule).to be_nil + end + end + + context "with role" do + let!(:role_user) { create :role_user, user: user } + + it "has role_users" do + expect(subject.role_users).to eq Centers::RoleUser.all + end + + it "has roles" do + expect(subject.roles).to eq Centers::Role.all + end + + it "has role" do + expect(subject.role).to eq Centers::Role.first + end + end + end + describe "scopes" do context "without scope" do it "has no scope_users" do @@ -62,11 +94,11 @@ module Decidim expect(subject.scope_users).to eq Centers::ScopeUser.all end - it "has no scopes" do + it "has scopes" do expect(subject.scopes).to eq Scope.all end - it "has no scope" do + it "has scope" do expect(subject.scope).to eq Scope.first end end diff --git a/spec/permissions/decidim/centers/admin/permissions_spec.rb b/spec/permissions/decidim/centers/admin/permissions_spec.rb index 2a465e2..f1d43f5 100644 --- a/spec/permissions/decidim/centers/admin/permissions_spec.rb +++ b/spec/permissions/decidim/centers/admin/permissions_spec.rb @@ -8,57 +8,114 @@ module Admin describe Permissions do subject { described_class.new(user, permission_action, context).permissions.allowed? } - let(:user) { create :user, :admin, organization: center.organization } - let(:context) do - { - center: center - } - end - let(:center) { create :center } + let(:user) { create :user, :admin, organization: organization } + let(:organization) { create :organization } + let(:center) { create :center, organization: organization } + let(:role) { create :role, organization: organization } let(:permission_action) { Decidim::PermissionAction.new(**action) } - context "when scope is admin" do - let(:action) do - { scope: :admin, action: :foo, subject: :center } + context "with center as scope" do + let(:context) do + { + center: center + } end - it { is_expected.to be true } - end + context "when scope is admin" do + let(:action) do + { scope: :admin, action: :foo, subject: :center } + end + + it { is_expected.to be true } + end - context "when no user" do - let(:user) { nil } + context "when no user" do + let(:user) { nil } - let(:action) do - { scope: :admin, action: :foo, subject: :center } + let(:action) do + { scope: :admin, action: :foo, subject: :center } + end + + it_behaves_like "permission is not set" end - it_behaves_like "permission is not set" - end + context "when user is not admin" do + let(:user) { create :user, organization: center.organization } - context "when user is not admin" do - let(:user) { create :user, organization: center.organization } + let(:action) do + { scope: :admin, action: :foo, subject: :center } + end - let(:action) do - { scope: :admin, action: :foo, subject: :center } + it_behaves_like "permission is not set" end - it_behaves_like "permission is not set" - end + context "when scope is a random one" do + let(:action) do + { scope: :foo, action: :foo, subject: :center } + end - context "when scope is a random one" do - let(:action) do - { scope: :foo, action: :foo, subject: :center } + it_behaves_like "permission is not set" end - it_behaves_like "permission is not set" + context "when subject is a random one" do + let(:action) do + { scope: :admin, action: :foo, subject: :foo } + end + + it_behaves_like "permission is not set" + end end - context "when subject is a random one" do - let(:action) do - { scope: :admin, action: :foo, subject: :foo } + context "with role as scope" do + let(:context) do + { + role: role + } + end + + context "when scope is admin" do + let(:action) do + { scope: :admin, action: :foo, subject: :role } + end + + it { is_expected.to be true } end - it_behaves_like "permission is not set" + context "when no user" do + let(:user) { nil } + + let(:action) do + { scope: :admin, action: :foo, subject: :role } + end + + it_behaves_like "permission is not set" + end + + context "when user is not admin" do + let(:user) { create :user, organization: role.organization } + + let(:action) do + { scope: :admin, action: :foo, subject: :role } + end + + it_behaves_like "permission is not set" + end + + context "when scope is a random one" do + let(:action) do + { scope: :foo, action: :foo, subject: :role } + end + + it_behaves_like "permission is not set" + end + + context "when subject is a random one" do + let(:action) do + { scope: :admin, action: :foo, subject: :foo } + end + + it_behaves_like "permission is not set" + end end end end diff --git a/spec/presenters/decidim/centers/admin_log/role_presenter_spec.rb b/spec/presenters/decidim/centers/admin_log/role_presenter_spec.rb new file mode 100644 index 0000000..b3fd8e2 --- /dev/null +++ b/spec/presenters/decidim/centers/admin_log/role_presenter_spec.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +require "spec_helper" + +module Decidim + module Centers + module AdminLog + describe RolePresenter, type: :helper do + let(:admin_log_resource) { create :role } + + context "when action is create" do + include_examples "present admin log entry" do + let(:action) { "create" } + end + end + + context "when action is delete" do + include_examples "present admin log entry" do + let(:action) { "delete" } + end + end + + context "when action is update" do + include_examples "present admin log entry" do + let(:action) { "update" } + end + end + + context "when action is other" do + include_examples "present admin log entry" do + let(:action) { "other" } + end + end + end + end + end +end diff --git a/spec/system/account_spec.rb b/spec/system/account_spec.rb index b3b8703..8663fa1 100644 --- a/spec/system/account_spec.rb +++ b/spec/system/account_spec.rb @@ -8,6 +8,8 @@ let(:user) { create :user, :confirmed, organization: organization } let!(:center) { create :center, organization: organization } let!(:other_center) { create :center, organization: organization } + let!(:role) { create :role, organization: organization } + let!(:other_role) { create :role, organization: organization } let!(:scope) { create :scope, organization: organization } let!(:other_scope) { create :scope, organization: organization } @@ -23,7 +25,7 @@ end shared_context "with authorization" do - let!(:authorization) { create :authorization, name: "center", user: user, metadata: { centers: [center.id], scopes: [scope&.id].compact } } + let!(:authorization) { create :authorization, name: "center", user: user, metadata: { centers: [center.id], roles: [role&.id].compact, scopes: [scope&.id].compact } } end shared_context "with user with center" do @@ -32,6 +34,12 @@ include_context "when visiting account path" end + shared_context "with user with role" do + let!(:role_user) { create :role_user, role: role, user: user } + + include_context "when visiting account path" + end + shared_context "with user with scope" do let!(:scope_user) { create :scope_user, scope: scope, user: user } @@ -89,6 +97,47 @@ end end + shared_examples_for "user without role changes the role" do + it "shows an empty value on the role input" do + expect(find("#user_role_id").value).to eq("") + end + + include_examples "user changes the role", false + end + + shared_examples_for "user with role changes the role" do + it "has an authorization for the center and the role" do + check_center_authorization(Decidim::Authorization.last, user, center, role: role) + end + + it "shows the current role on the role input" do + expect(find("#user_role_id").value).to eq(role.id.to_s) + end + + include_examples "user changes the role", true + end + + shared_examples_for "user changes the role" do + it "can update the role and changes the authorization" do + within "form.edit_user" do + within "#user_role_id" do + find("option[value='#{other_role.id}']").click + end + + find("*[type=submit]").click + end + + within_flash_messages do + expect(page).to have_content("successfully") + end + + expect(find("#user_role_id").value).to eq(other_role.id.to_s) + + perform_enqueued_jobs + check_center_authorization(Decidim::Authorization.last, user, center, role: other_role) + end + end + shared_examples_for "user without scope changes the scope" do it "shows an empty value on the scope input" do within "#user_scope_id" do @@ -101,7 +150,7 @@ shared_examples_for "user with scope changes the scope" do it "has an authorization for the center and the scope" do - check_center_authorization(Decidim::Authorization.last, user, center, scope) + check_center_authorization(Decidim::Authorization.last, user, center, scope: scope) end it "shows the current scope on the scope input" do @@ -134,17 +183,19 @@ end perform_enqueued_jobs - check_center_authorization(Decidim::Authorization.last, user, center, other_scope) + check_center_authorization(Decidim::Authorization.last, user, center, scope: other_scope) end end include_context "when visiting account path" - context "when the scopes are disabled" do + context "when the roles and the scopes are disabled" do + include_context "with roles disabled" include_context "with scopes disabled" include_context "when visiting account path" - it "doesn't show the scope input" do + it "doesn't show the role input" do + expect(page).not_to have_selector("#user_role_id") expect(page).not_to have_selector("#user_scope_id") end @@ -161,7 +212,42 @@ end end - context "when the scopes are enabled" do + context "when the roles are enabled and the scopes disabled" do + include_context "with scopes disabled" + include_context "when visiting account path" + + context "when the user doesn't have role" do + context "when the user doesn't have center" do + include_examples "user cannot be saved without changes" + end + + context "when the user has center" do + include_context "with user with center" + include_context "with authorization" + + include_examples "user cannot be saved without changes" + include_examples "user without role changes the role" + end + end + + context "when the user has role" do + include_context "with user with role" + + context "when the user doesn't have center" do + include_examples "user cannot be saved without changes" + end + + context "when the user has center" do + include_context "with user with center" + include_context "with authorization" + + include_examples "user with role changes the role" + end + end + end + + context "when the scopes are enabled and the roles disabled" do + include_context "with roles disabled" include_context "when visiting account path" context "when the user doesn't have scope" do @@ -193,4 +279,72 @@ end end end + + context "when the roles and the scopes are enabled" do + include_context "when visiting account path" + + context "when the user doesn't have role nor scope" do + context "when the user doesn't have center" do + include_examples "user cannot be saved without changes" + end + + context "when the user has center" do + include_context "with user with center" + include_context "with authorization" + + include_examples "user cannot be saved without changes" + end + end + + context "when the user has role" do + include_context "with user with role" + + context "when the user doesn't have center" do + include_examples "user cannot be saved without changes" + end + + context "when the user has center" do + include_context "with user with center" + include_context "with authorization" + + include_examples "user cannot be saved without changes" + include_examples "user without scope changes the scope" + end + end + + context "when the user has scope" do + include_context "with user with scope" + + context "when the user doesn't have center" do + include_examples "user cannot be saved without changes" + end + + context "when the user has center" do + include_context "with user with center" + include_context "with authorization" + + include_examples "user cannot be saved without changes" + include_examples "user without role changes the role" + end + end + + context "when the user has role and scope" do + include_context "with user with role" + include_context "with user with scope" + + context "when the user doesn't have center" do + include_examples "user cannot be saved without changes" + include_examples "user without center changes the center" + end + + context "when the user has center" do + include_context "with user with center" + include_context "with authorization" + + include_context "user with center changes the center" + include_examples "user with scope changes the scope" + include_examples "user with role changes the role" + end + end + end end diff --git a/spec/system/admin_manages_component_permissions_spec.rb b/spec/system/admin_manages_component_permissions_spec.rb index 99b9450..ef55e4d 100644 --- a/spec/system/admin_manages_component_permissions_spec.rb +++ b/spec/system/admin_manages_component_permissions_spec.rb @@ -7,10 +7,14 @@ let(:organization) { create :organization, available_authorizations: %w(center) } let(:user) { create :user, :admin, :confirmed, organization: organization } let!(:centers) { create_list :center, 10, organization: organization } + let!(:roles) { create_list :role, 10, organization: organization } let!(:scopes) { create_list :scope, 10, organization: organization } let(:center) { centers.first } let(:other_center) { centers.second } let(:another_center) { centers.last } + let(:role) { roles.first } + let(:other_role) { roles.second } + let(:another_role) { roles.last } let(:scope) { scopes.first } let(:other_scope) { scopes.second } let(:another_scope) { scopes.last } @@ -22,7 +26,11 @@ "foo" => { "authorization_handlers" => { "center" => { - "options" => { "centers" => "#{center.id},#{other_center.id}", "scopes" => "#{scope.id},#{other_scope.id}" } + "options" => { + "centers" => "#{center.id},#{other_center.id}", + "roles" => "#{role.id},#{other_role.id}", + "scopes" => "#{scope.id},#{other_scope.id}" + } } } } @@ -39,7 +47,18 @@ def select_center(name) within "form.new_component_permissions" do within ".foo-permission" do check "Center" - fill_in "Centers", with: name + fill_in "Centers", with: name, match: :prefer_exact + end + end + + find("li.select2-results__option", text: name).click + end + + def select_role(name) + within "form.new_component_permissions" do + within ".foo-permission" do + check "Center" + fill_in "Roles", with: name, match: :prefer_exact end end @@ -50,7 +69,7 @@ def select_scope(name) within "form.new_component_permissions" do within ".foo-permission" do check "Center" - fill_in "Scopes", with: name + fill_in "Scopes", with: name, match: :prefer_exact end end @@ -58,11 +77,15 @@ def select_scope(name) end def unselect_center(name) - find(".centers_container li.select2-selection__choice[title=\"#{name}\"] button.select2-selection__choice__remove").click + all(".centers_container label li.select2-selection__choice[title=\"#{name}\"] button.select2-selection__choice__remove").first.click + end + + def unselect_role(name) + all(".roles_container label li.select2-selection__choice[title=\"#{name}\"] button.select2-selection__choice__remove").first.click end def unselect_scope(name) - find(".scopes_container li.select2-selection__choice[title=\"#{name}\"] button.select2-selection__choice__remove").click + all(".scopes_container label li.select2-selection__choice[title=\"#{name}\"] button.select2-selection__choice__remove").first.click end def submit_form @@ -79,6 +102,14 @@ def submit_form end end + context "when roles are disabled" do + include_context "with roles disabled" + + it "doesn't show a field for the roles" do + expect(page).not_to have_selector(".roles_container") + end + end + context "when setting permissions" do before do within ".component-#{component.id}" do @@ -89,6 +120,8 @@ def submit_form it "saves permission settings in the component" do select_center(center.title["en"]) select_center(other_center.title["en"]) + select_role(role.title["en"]) + select_role(other_role.title["en"]) select_scope(scope.name["en"]) select_scope(other_scope.name["en"]) submit_form @@ -99,7 +132,11 @@ def submit_form include( "authorization_handlers" => { "center" => { - "options" => { "centers" => "#{center.id},#{other_center.id}", "scopes" => "#{scope.id},#{other_scope.id}" } + "options" => { + "centers" => "#{center.id},#{other_center.id}", + "roles" => "#{role.id},#{other_role.id}", + "scopes" => "#{scope.id},#{other_scope.id}" + } } } ) @@ -143,6 +180,8 @@ def submit_form it "changes the configured action in the permissions hash" do unselect_center(center.title["en"]) select_center(another_center.title["en"]) + unselect_role(role.title["en"]) + select_role(another_role.title["en"]) unselect_scope(scope.name["en"]) select_scope(another_scope.name["en"]) submit_form @@ -153,7 +192,11 @@ def submit_form include( "authorization_handlers" => { "center" => { - "options" => { "centers" => "#{other_center.id},#{another_center.id}", "scopes" => "#{other_scope.id},#{another_scope.id}" } + "options" => { + "centers" => "#{other_center.id},#{another_center.id}", + "roles" => "#{other_role.id},#{another_role.id}", + "scopes" => "#{other_scope.id},#{another_scope.id}" + } } } ) diff --git a/spec/system/admin_manages_roles_spec.rb b/spec/system/admin_manages_roles_spec.rb new file mode 100644 index 0000000..eb3b437 --- /dev/null +++ b/spec/system/admin_manages_roles_spec.rb @@ -0,0 +1,166 @@ +# frozen_string_literal: true + +require "spec_helper" + +describe "Admin manages roles", type: :system do + let(:organization) { create :organization } + let(:user) { create :user, :admin, :confirmed, organization: organization } + + before do + switch_to_host(organization.host) + login_as user, scope: :user + visit decidim_admin.root_path + end + + def visit_roles_path + visit decidim_admin_centers.roles_path + end + + def visit_edit_role_path(role) + visit decidim_admin_centers.edit_role_path(role) + end + + it "renders the expected menu" do + within ".main-nav" do + expect(page).to have_content("Roles") + end + + click_link "Roles" + + expect(page).to have_content("Roles") + end + + context "when visiting roles path" do + before do + visit_roles_path + end + + it "shows new role button" do + expect(page).to have_content("New role") + end + + context "when no roles created" do + it "shows an empty table" do + expect(page).to have_no_selector("table.table-list.roles tbody tr") + end + end + + context "when roles created" do + let!(:roles) { create_list :role, 5, organization: organization } + let(:role) { roles.first } + + before do + visit_roles_path + end + + it "shows table rows" do + expect(page).to have_selector("table.table-list.roles tbody tr", count: 5) + end + + it "shows all the roles" do + roles.each do |role| + expect(page).to have_content(role.title["en"]) + end + end + + it "can create role and show the action in the admin log" do + find(".card-title a.button").click + + fill_in_i18n( + :role_title, + "#role-title-tabs", + en: "My role" + ) + + within ".new_role" do + find("*[type=submit]").click + end + + expect(page).to have_admin_callout("successfully") + + within "table" do + expect(page).to have_content("My role") + end + + click_link "Dashboard" + + expect(page).to have_content("created the My role role") + end + + it "cannot create an invalid role" do + find(".card-title a.button").click + + within ".new_role" do + find("*[type=submit]").click + end + + expect(page).to have_admin_callout("problem") + end + + it "can edit role and show the action in the admin log" do + within find("tr", text: translated(role.title)) do + click_link "Edit" + end + + fill_in_i18n( + :role_title, + "#role-title-tabs", + en: "My edited role" + ) + + within ".edit_role" do + find("*[type=submit]").click + end + + expect(page).to have_admin_callout("successfully") + expect(page).to have_content("My edited role") + + click_link "Dashboard" + + expect(page).to have_content("updated the My edited role role") + end + + it "cannot save an edited invalid role" do + within find("tr", text: translated(role.title)) do + click_link "Edit" + end + + fill_in_i18n( + :role_title, + "#role-title-tabs", + en: "" + ) + + within ".edit_role" do + find("*[type=submit]").click + end + + expect(page).to have_admin_callout("problem") + end + + it "can delete role" do + within find("tr", text: translated(role.title)) do + accept_confirm { click_link "Delete" } + end + + expect(page).to have_admin_callout("successfully") + + within "table" do + expect(page).to have_no_content(translated(role.title)) + expect(page).to have_selector("table.table-list.roles tbody tr", count: 4) + end + end + + context "when role from other organization" do + let(:other_organization) { create :organization } + let!(:role) { create :role, organization: other_organization } + + it "does not show the it" do + visit_roles_path + + expect(page).not_to have_content(role.title["en"]) + end + end + end + end +end diff --git a/spec/system/center_verifications_spec.rb b/spec/system/center_verifications_spec.rb index 87890d8..58b255d 100644 --- a/spec/system/center_verifications_spec.rb +++ b/spec/system/center_verifications_spec.rb @@ -12,14 +12,18 @@ let!(:proposal) { create :proposal, component: component } let!(:component) { create :proposal_component, :with_creation_enabled, participatory_space: participatory_process } let!(:centers) { create_list :center, 10, organization: organization } + let!(:roles) { create_list :role, 10, organization: organization } let!(:scopes) { create_list :scope, 10, organization: organization } let(:center) { centers.first } let(:other_center) { centers.second } let(:another_center) { centers.last } + let(:role) { roles.first } + let(:other_role) { roles.second } + let(:another_role) { roles.last } let(:scope) { scopes.first } let(:other_scope) { scopes.second } let(:another_scope) { scopes.last } - let!(:authorization) { create(:authorization, :granted, user: user, name: "center", metadata: { "centers" => [center.id], "scopes" => [scope.id] }) } + let!(:authorization) { create(:authorization, :granted, user: user, name: "center", metadata: { "centers" => [center.id], "roles" => [role.id], "scopes" => [scope.id] }) } before do switch_to_host(organization.host) @@ -63,7 +67,8 @@ end end - context "when scopes are disabled" do + context "when roles and scopes are disabled" do + include_context "with roles disabled" include_context "with scopes disabled" let!(:authorization) { create(:authorization, :granted, user: user, name: "center", metadata: { "centers" => [center.id] }) } @@ -95,9 +100,125 @@ end end - context "when scopes are enabled" do + context "when roles are disabled but scopes are enabled" do + include_context "with roles disabled" + + let!(:authorization) { create(:authorization, :granted, user: user, name: "center", metadata: { "centers" => [center.id], "scopes" => [scope.id] }) } + + context "with no centers nor scopes specified" do + let(:options) { {} } + + it_behaves_like "user is authorized" + + context "when no authorization" do + let!(:authorization) { nil } + + it_behaves_like "user is not authorized" + end + end + + context "with centers specified" do + context "when the user has one of the specified centers" do + let(:options) { { "centers" => "#{center.id},#{other_center.id}" } } + + it_behaves_like "user is authorized" + end + + context "when the user doesn't have one of the specified centers" do + let(:options) { { "centers" => "#{other_center.id},#{another_center.id}" } } + + it_behaves_like "user is authorized with wrong metadata" + end + end + + context "with centers and scopes specified" do + context "when the user has one of the specified centers" do + let(:options) { { "centers" => "#{center.id},#{other_center.id}", "scopes" => "#{scope.id},#{other_scope.id}" } } + + it_behaves_like "user is authorized" + end + + context "when the user doesn't have one of the specified centers" do + let(:options) { { "centers" => "#{other_center.id},#{another_center.id}", "scopes" => "#{scope.id},#{other_scope.id}" } } + + it_behaves_like "user is authorized with wrong metadata" + end + + context "when the user doesn't have one of the specified scopes" do + let(:options) { { "centers" => "#{center.id},#{other_center.id}", "scopes" => "#{other_scope.id},#{another_scope.id}" } } + + it_behaves_like "user is authorized with wrong metadata" + end + + context "when the user doesn't have one of the specified centers nor scopes" do + let(:options) { { "centers" => "#{other_center.id},#{another_center.id}", "scopes" => "#{other_scope.id},#{another_scope.id}" } } + + it_behaves_like "user is authorized with wrong metadata" + end + end + end + + context "when scopes are disabled but roles are enabled" do + include_context "with scopes disabled" + + let!(:authorization) { create(:authorization, :granted, user: user, name: "center", metadata: { "centers" => [center.id], "roles" => [role.id] }) } + + context "with no centers nor roles specified" do + let(:options) { {} } + + it_behaves_like "user is authorized" + + context "when no authorization" do + let!(:authorization) { nil } + + it_behaves_like "user is not authorized" + end + end + + context "with centers specified" do + context "when the user has one of the specified centers" do + let(:options) { { "centers" => "#{center.id},#{other_center.id}" } } + + it_behaves_like "user is authorized" + end + + context "when the user doesn't have one of the specified centers" do + let(:options) { { "centers" => "#{other_center.id},#{another_center.id}" } } + + it_behaves_like "user is authorized with wrong metadata" + end + end + + context "with centers and roles specified" do + context "when the user has one of the specified centers" do + let(:options) { { "centers" => "#{center.id},#{other_center.id}", "roles" => "#{role.id},#{other_role.id}" } } + + it_behaves_like "user is authorized" + end + + context "when the user doesn't have one of the specified centers" do + let(:options) { { "centers" => "#{other_center.id},#{another_center.id}", "roles" => "#{role.id},#{other_role.id}" } } + + it_behaves_like "user is authorized with wrong metadata" + end + + context "when the user doesn't have one of the specified roles" do + let(:options) { { "centers" => "#{center.id},#{other_center.id}", "roles" => "#{other_role.id},#{another_role.id}" } } + + it_behaves_like "user is authorized with wrong metadata" + end + + context "when the user doesn't have one of the specified centers nor scopes" do + let(:options) { { "centers" => "#{other_center.id},#{another_center.id}", "scopes" => "#{other_scope.id},#{another_scope.id}" } } + + it_behaves_like "user is authorized with wrong metadata" + end + end + end + + context "when roles and scopes are enabled" do context "with no centers specified" do - context "with no scopes specified" do + context "with no roles nor scopes specified" do let(:options) { {} } it_behaves_like "user is authorized" @@ -109,14 +230,38 @@ end end + context "with roles specified" do + let(:options) { { "roles" => "#{role.id},#{other_role.id}" } } + + it_behaves_like "user is authorized" + end + context "with scopes specified" do let(:options) { { "scopes" => "#{scope.id},#{other_scope.id}" } } it_behaves_like "user is authorized" end + context "with scopes and roles are specified" do + let(:options) { { "roles" => "#{role.id},#{other_role.id}", "scopes" => "#{scope.id},#{other_scope.id}" } } + + it_behaves_like "user is authorized" + end + + context "when the user doesn't have one of the specified roles" do + let(:options) { { "roles" => "#{other_role.id},#{another_role.id}", "scopes" => "#{scope.id},#{other_scope.id}" } } + + it_behaves_like "user is authorized with wrong metadata" + end + context "when the user doesn't have one of the specified scopes" do - let(:options) { { "scopes" => "#{other_scope.id},#{another_scope.id}" } } + let(:options) { { "roles" => "#{role.id},#{other_role.id}", "scopes" => "#{other_scope.id},#{another_scope.id}" } } + + it_behaves_like "user is authorized with wrong metadata" + end + + context "when the user doesn't have one of the specified roles or scopes" do + let(:options) { { "roles" => "#{other_role.id},#{another_role.id}", "scopes" => "#{other_scope.id},#{another_scope.id}" } } it_behaves_like "user is authorized with wrong metadata" end diff --git a/spec/system/registration_spec.rb b/spec/system/registration_spec.rb index 428c39c..931ea7e 100644 --- a/spec/system/registration_spec.rb +++ b/spec/system/registration_spec.rb @@ -11,6 +11,8 @@ let(:password) { Faker::Internet.password(min_length: 17) } let!(:center) { create :center, organization: organization } let!(:other_center) { create :center, organization: organization } + let!(:role) { create :role, organization: organization } + let!(:other_role) { create :role, organization: organization } let!(:scope) { create :scope, organization: organization } let!(:other_scope) { create :scope, organization: organization } @@ -25,6 +27,12 @@ end end + it "contains role field" do + within ".card__centers" do + expect(page).to have_content("Role") + end + end + it "contains scope field" do within ".card__centers" do expect(page).to have_content("Scope") @@ -37,6 +45,12 @@ end end + it "displays role as mandatory" do + within ".card__centers label[for='registration_user_role_id']" do + expect(page).to have_css("span.label-required") + end + end + it "displays scope as mandatory" do within all(".card__centers label").last do expect(page).to have_css("span.label-required") @@ -55,6 +69,10 @@ find("option[value='#{center.id}']").click end + within "#registration_user_role_id" do + find("option[value='#{role.id}']").click + end + scope_pick select_data_picker(:registration_user), scope end @@ -67,10 +85,11 @@ expect(page).to have_content("message with a confirmation link has been sent") expect(Decidim::User.last.center).to eq(center) + expect(Decidim::User.last.role).to eq(role) expect(Decidim::User.last.scope).to eq(scope) perform_enqueued_jobs - check_center_authorization(Decidim::Authorization.last, Decidim::User.last, center, scope) + check_center_authorization(Decidim::Authorization.last, Decidim::User.last, center, scope: scope, role: role) end context "with scopes disabled" do @@ -83,5 +102,9 @@ it "doesn't show the scope input" do expect(page).not_to have_content("Global scope") end + + it "doesn't show the role input" do + expect(page).not_to have_content("Roles") + end end end From 3901fdcc8fd1eca0710739f41dee900079b8c4a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Bol=C3=ADvar?= Date: Thu, 5 Dec 2024 09:22:42 +0100 Subject: [PATCH 02/11] Bump upload-artifact on CI --- .github/workflows/test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f7ff4bd..ca73b26 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -50,8 +50,9 @@ jobs: env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - - uses: actions/upload-artifact@v2-preview + - uses: actions/upload-artifact@v3 if: always() with: name: screenshots path: ./spec/decidim_dummy_app/tmp/screenshots + if-no-files-found: ignore From 474a8553ba3186949d87408d6d462cc84e437ebf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Bol=C3=ADvar?= Date: Thu, 5 Dec 2024 09:23:34 +0100 Subject: [PATCH 03/11] Lint --- spec/system/center_verifications_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/system/center_verifications_spec.rb b/spec/system/center_verifications_spec.rb index 58b255d..114d8b4 100644 --- a/spec/system/center_verifications_spec.rb +++ b/spec/system/center_verifications_spec.rb @@ -135,7 +135,7 @@ context "when the user has one of the specified centers" do let(:options) { { "centers" => "#{center.id},#{other_center.id}", "scopes" => "#{scope.id},#{other_scope.id}" } } - it_behaves_like "user is authorized" + it_behaves_like "user is authorized" end context "when the user doesn't have one of the specified centers" do From 9b33c19e33191d544cee970b859e912fa04b0eb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Bol=C3=ADvar?= Date: Thu, 5 Dec 2024 09:25:09 +0100 Subject: [PATCH 04/11] Lint --- app/views/decidim/centers/_profile_form.html.erb | 1 - 1 file changed, 1 deletion(-) diff --git a/app/views/decidim/centers/_profile_form.html.erb b/app/views/decidim/centers/_profile_form.html.erb index 70620cb..f5e5c54 100644 --- a/app/views/decidim/centers/_profile_form.html.erb +++ b/app/views/decidim/centers/_profile_form.html.erb @@ -4,7 +4,6 @@ <%= f.collection_select :role_id, f.object.role_options_for_select, :first, :last %> <% end %> - <% if Decidim::Centers.scopes_enabled %> <%= scopes_picker_field f, :scope_id, root: nil %> <% end %> From 1365e7a23342e64792479edbd5528a4483a3779c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Bol=C3=ADvar?= Date: Thu, 5 Dec 2024 09:48:22 +0100 Subject: [PATCH 05/11] Fix user model spec --- spec/models/decidim/user_spec.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/models/decidim/user_spec.rb b/spec/models/decidim/user_spec.rb index 9e62d57..224add4 100644 --- a/spec/models/decidim/user_spec.rb +++ b/spec/models/decidim/user_spec.rb @@ -4,7 +4,7 @@ module Decidim describe User do - subject { user } + subject { user.reload } let(:user) { create :user } @@ -50,8 +50,8 @@ module Decidim expect(subject.roles).to eq [] end - it "has no rule" do - expect(subject.rule).to be_nil + it "has no role" do + expect(subject.role).to be_nil end end From 2524c61103250be83c3aa153d2054d7d36c03aa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Bol=C3=ADvar?= Date: Thu, 5 Dec 2024 09:49:25 +0100 Subject: [PATCH 06/11] Normalize locales --- config/locales/en.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index 79176dd..48056b0 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -34,6 +34,11 @@ en: update: invalid: There was a problem saving the center. success: Center successfully saved + models: + center: + name: Center + role: + name: Role roles: actions: confirm_destroy: Are you sure you want to delete this role? @@ -57,11 +62,6 @@ en: update: invalid: There was a problem saving the role. success: Role successfully saved - models: - center: - name: Center - role: - name: Role admin_log: center: create: "%{user_name} created the %{resource_name} center" @@ -81,5 +81,5 @@ en: title: Title role: fields: - title: Title created_at: Created at + title: Title From f92ff57472e43486ef750208b407615a9da9e7db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Bol=C3=ADvar?= Date: Thu, 5 Dec 2024 10:07:20 +0100 Subject: [PATCH 07/11] Fix conflict between center roles and original user roles attribute --- .../decidim/centers/account_form_override.rb | 2 +- .../decidim/centers/verifications/center.rb | 4 +- .../decidim/centers/auto_verification_job.rb | 2 +- .../concerns/decidim/centers/user_override.rb | 13 +-- .../centers/verifications/center_spec.rb | 79 ++----------------- spec/models/decidim/user_spec.rb | 10 +-- spec/system/registration_spec.rb | 2 +- 7 files changed, 21 insertions(+), 91 deletions(-) diff --git a/app/forms/concerns/decidim/centers/account_form_override.rb b/app/forms/concerns/decidim/centers/account_form_override.rb index b5e4db8..b8e9266 100644 --- a/app/forms/concerns/decidim/centers/account_form_override.rb +++ b/app/forms/concerns/decidim/centers/account_form_override.rb @@ -24,7 +24,7 @@ def map_model(model) original_map_model(model) self.center_id = model.center.try(:id) - self.role_id = model.role.try(:id) + self.role_id = model.center_role.try(:id) self.scope_id = model.scope.try(:id) end diff --git a/app/forms/decidim/centers/verifications/center.rb b/app/forms/decidim/centers/verifications/center.rb index 85c5c3b..57ecc03 100644 --- a/app/forms/decidim/centers/verifications/center.rb +++ b/app/forms/decidim/centers/verifications/center.rb @@ -13,7 +13,7 @@ class Center < Decidim::AuthorizationHandler def metadata super.merge( centers: user.centers.pluck(:id), - roles: user.roles.pluck(:id), + roles: user.center_roles.pluck(:id), scopes: user.scopes.pluck(:id) ) end @@ -27,7 +27,7 @@ def center_present def role_present return unless Decidim::Centers.roles_enabled - errors.add(:user, I18n.t("decidim.centers.authorizations.new.error")) unless user.roles.any? + errors.add(:user, I18n.t("decidim.centers.authorizations.new.error")) unless user.center_roles.any? end def scope_present diff --git a/app/jobs/decidim/centers/auto_verification_job.rb b/app/jobs/decidim/centers/auto_verification_job.rb index 79aad91..9145999 100644 --- a/app/jobs/decidim/centers/auto_verification_job.rb +++ b/app/jobs/decidim/centers/auto_verification_job.rb @@ -7,7 +7,7 @@ class AutoVerificationJob < ApplicationJob def perform(user_id) @user = Decidim::User.find(user_id) - @user.centers.any? || @user.scopes.any? || @user.roles.any? ? create_auth : remove_auth + @user.centers.any? || @user.scopes.any? || @user.center_roles.any? ? create_auth : remove_auth rescue ActiveRecord::RecordNotFound => _e Rails.logger.error "AutoVerificationJob: ERROR: user not found #{user_id}" end diff --git a/app/models/concerns/decidim/centers/user_override.rb b/app/models/concerns/decidim/centers/user_override.rb index 0b89f3c..9bb11eb 100644 --- a/app/models/concerns/decidim/centers/user_override.rb +++ b/app/models/concerns/decidim/centers/user_override.rb @@ -18,7 +18,7 @@ module UserOverride foreign_key: "decidim_user_id", dependent: :destroy - has_many :roles, through: :role_users + has_many :center_roles, through: :role_users, source: :role has_many :scope_users, class_name: "Decidim::Centers::ScopeUser", @@ -31,20 +31,13 @@ def center centers.first end - def role - roles.first + def center_role + center_roles.first end def scope scopes.first end - - def valid?(context = nil) - # @todo: Try to remove this hack and fix the root cause of the issue. When the user already has a role, the validation of the roles is failing - super(context) - errors.delete(:roles) - errors.empty? - end end end end diff --git a/spec/forms/decidim/centers/verifications/center_spec.rb b/spec/forms/decidim/centers/verifications/center_spec.rb index 782ecf8..dcb6cf8 100644 --- a/spec/forms/decidim/centers/verifications/center_spec.rb +++ b/spec/forms/decidim/centers/verifications/center_spec.rb @@ -34,47 +34,6 @@ module Verifications end end - context "when roles are enabled" do - let(:metadata) do - { - centers: [center_user.center.id], - roles: [role_user.role.id] - } - end - - context "when the user has no center" do - let(:user) { create :user } - - context "when the user has no role" do - let(:role_user) { create :role_user } - - it { is_expected.not_to be_valid } - end - - context "when the user has role" do - let!(:role_user) { create :role_user, user: user } - - it { is_expected.not_to be_valid } - end - end - - context "when the user has center" do - context "when the user has no scope" do - it { is_expected.not_to be_valid } - end - - context "when the user has role" do - let!(:role_user) { create :role_user, user: user } - - it { is_expected.to be_valid } - - it "returns valid metadata" do - expect(subject.metadata).to eq(metadata) - end - end - end - end - context "when scopes are disabled" do include_context "with scopes disabled" @@ -85,48 +44,26 @@ module Verifications end end - context "when scopes are enabled" do - let(:metadata) do - { - centers: [center_user.center.id], - scopes: [scope_user.scope.id] - } - end + context "when roles and scopes are disabled" do + include_context "with roles disabled" + include_context "with scopes disabled" context "when the user has no center" do let(:user) { create :user } - context "when the user has no scope" do - let(:scope_user) { create :scope_user } - - it { is_expected.not_to be_valid } - end - - context "when the user has scope" do - let!(:scope_user) { create :scope_user, user: user } - - it { is_expected.not_to be_valid } - end + it { is_expected.not_to be_valid } end context "when the user has center" do - context "when the user has no scope" do - it { is_expected.not_to be_valid } - end + it { is_expected.to be_valid } - context "when the user has scope" do - let!(:scope_user) { create :scope_user, user: user } - - it { is_expected.to be_valid } - - it "returns valid metadata" do - expect(subject.metadata).to eq(metadata) - end + it "returns valid metadata" do + expect(subject.metadata).to eq(metadata) end end end - context "when scopes and roles are enabled" do + context "when roles and scopes are enabled" do let(:metadata) do { centers: [center_user.center.id], diff --git a/spec/models/decidim/user_spec.rb b/spec/models/decidim/user_spec.rb index 224add4..0881b6f 100644 --- a/spec/models/decidim/user_spec.rb +++ b/spec/models/decidim/user_spec.rb @@ -4,7 +4,7 @@ module Decidim describe User do - subject { user.reload } + subject { user } let(:user) { create :user } @@ -47,11 +47,11 @@ module Decidim end it "has no roles" do - expect(subject.roles).to eq [] + expect(subject.center_roles).to eq [] end it "has no role" do - expect(subject.role).to be_nil + expect(subject.center_role).to be_nil end end @@ -63,11 +63,11 @@ module Decidim end it "has roles" do - expect(subject.roles).to eq Centers::Role.all + expect(subject.center_roles).to eq Centers::Role.all end it "has role" do - expect(subject.role).to eq Centers::Role.first + expect(subject.center_role).to eq Centers::Role.first end end end diff --git a/spec/system/registration_spec.rb b/spec/system/registration_spec.rb index 931ea7e..d1d2982 100644 --- a/spec/system/registration_spec.rb +++ b/spec/system/registration_spec.rb @@ -85,7 +85,7 @@ expect(page).to have_content("message with a confirmation link has been sent") expect(Decidim::User.last.center).to eq(center) - expect(Decidim::User.last.role).to eq(role) + expect(Decidim::User.last.center_role).to eq(role) expect(Decidim::User.last.scope).to eq(scope) perform_enqueued_jobs From 24040739f955d37e64e986b5b0a69f2164def20d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Bol=C3=ADvar?= Date: Thu, 5 Dec 2024 10:14:04 +0100 Subject: [PATCH 08/11] Bump version --- Gemfile.lock | 2 +- README.md | 1 + lib/decidim/centers/version.rb | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 1b816fe..ce55a95 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - decidim-centers (0.1.2) + decidim-centers (0.2.0) decidim-core (>= 0.27.0, < 0.28) deface (~> 1.9) diff --git a/README.md b/README.md index 828b95e..c7ac953 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,7 @@ Depending on your Decidim version, choose the corresponding version to ensure co | Version | Compatible decidim versions | |---------|-----------------------------| | 0.1.x | v0.27.x | +| 0.2.x | v0.27.x | ## Configuration diff --git a/lib/decidim/centers/version.rb b/lib/decidim/centers/version.rb index 2a6e664..8f16b29 100644 --- a/lib/decidim/centers/version.rb +++ b/lib/decidim/centers/version.rb @@ -3,7 +3,7 @@ module Decidim # This holds the decidim-centers version. module Centers - VERSION = "0.1.2" + VERSION = "0.2.0" DECIDIM_VERSION = "0.27.4" COMPAT_DECIDIM_VERSION = [">= 0.27.0", "< 0.28"].freeze end From 64c44b7a6b07e7c01f9fbec63f42e517577d4a1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Bol=C3=ADvar?= Date: Thu, 5 Dec 2024 10:14:27 +0100 Subject: [PATCH 09/11] Add .node-version --- .node-version | 1 + 1 file changed, 1 insertion(+) create mode 100644 .node-version diff --git a/.node-version b/.node-version new file mode 100644 index 0000000..06e7515 --- /dev/null +++ b/.node-version @@ -0,0 +1 @@ +16.9.1 From 1dbb446d8af4c50faf7b775e2a5176fd0c0265ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Bol=C3=ADvar?= Date: Thu, 5 Dec 2024 10:23:56 +0100 Subject: [PATCH 10/11] Change codecov with coveralls --- .github/workflows/test.yml | 8 ++------ Gemfile | 2 +- Gemfile.lock | 16 +++++++++++++--- README.md | 2 +- spec/spec_helper.rb | 6 +++--- 5 files changed, 20 insertions(+), 14 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ca73b26..ad2eebf 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -28,6 +28,7 @@ jobs: DATABASE_USERNAME: postgres DATABASE_PASSWORD: postgres DATABASE_HOST: localhost + COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} steps: - uses: actions/checkout@v2 @@ -43,12 +44,7 @@ jobs: run: bundle exec rake test_app - name: Run RSpec - run: SIMPLECOV=1 CODECOV=1 bundle exec rspec - - - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@v3 - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + run: CI=1 bundle exec rspec - uses: actions/upload-artifact@v3 if: always() diff --git a/Gemfile b/Gemfile index 1065fe8..c68a4bd 100644 --- a/Gemfile +++ b/Gemfile @@ -35,5 +35,5 @@ group :development do end group :test do - gem "codecov", require: false + gem "coveralls_reborn", require: false end diff --git a/Gemfile.lock b/Gemfile.lock index ce55a95..1820173 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -97,6 +97,7 @@ GEM html_tokenizer (~> 0.0.6) parser (>= 2.4) smart_properties + bigdecimal (3.1.8) bindex (0.8.1) bootsnap (1.17.0) msgpack (~> 1.2) @@ -135,8 +136,6 @@ GEM chef-utils (18.3.0) concurrent-ruby childprocess (4.1.0) - codecov (0.6.0) - simplecov (>= 0.15, < 0.22) coercible (1.0.0) descendants_tracker (~> 0.0.1) coffee-rails (5.0.0) @@ -148,6 +147,11 @@ GEM coffee-script-source (1.12.2) commonmarker (0.23.10) concurrent-ruby (1.2.2) + coveralls_reborn (0.25.0) + simplecov (>= 0.18.1, < 0.22.0) + term-ansicolor (~> 1.6) + thor (>= 0.20.3, < 2.0) + tins (~> 1.16) crack (0.4.5) rexml crass (1.0.6) @@ -745,13 +749,19 @@ GEM activesupport (>= 5.2) sprockets (>= 3.0.0) ssrf_filter (1.1.2) + sync (0.5.0) temple (0.10.3) + term-ansicolor (1.11.2) + tins (~> 1.0) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) thor (1.3.0) thread_safe (0.3.6) tilt (2.3.0) timeout (0.4.1) + tins (1.37.0) + bigdecimal + sync tomlrb (2.0.3) tzinfo (2.0.6) concurrent-ruby (~> 1.0) @@ -811,7 +821,7 @@ PLATFORMS DEPENDENCIES bootsnap (~> 1.4) byebug (~> 11.0) - codecov + coveralls_reborn decidim (= 0.27.4) decidim-centers! decidim-dev (= 0.27.4) diff --git a/README.md b/README.md index c7ac953..010792f 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![[CI] Lint](https://github.com/Platoniq/decidim-module-centers/actions/workflows/lint.yml/badge.svg)](https://github.com/Platoniq/decidim-module-centers/actions/workflows/lint.yml) [![[CI] Test](https://github.com/Platoniq/decidim-module-centers/actions/workflows/test.yml/badge.svg)](https://github.com/Platoniq/decidim-module-centers/actions/workflows/test.yml) [![Maintainability](https://api.codeclimate.com/v1/badges/6b1b656b229f9731a64b/maintainability)](https://codeclimate.com/github/Platoniq/decidim-module-centers/maintainability) -[![codecov](https://codecov.io/gh/Platoniq/decidim-module-centers/branch/main/graph/badge.svg)](https://codecov.io/gh/Platoniq/decidim-module-centers) +[![Coverage Status](https://coveralls.io/repos/github/Platoniq/decidim-module-centers/badge.svg?branch=main)](https://coveralls.io/github/Platoniq/decidim-module-centers?branch=main) Manage your centers, roles and scopes so the users can be authorized over them. As an admin you will be able to create centers, roles and scopes (we use the model Decidim currently provides). diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 53cbf11..e67ff19 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -3,9 +3,9 @@ require "decidim/dev" require "simplecov" -if ENV["CODECOV"] - require "codecov" - SimpleCov.formatter = SimpleCov::Formatter::Codecov +if ENV["CI"] + require "coveralls" + SimpleCov.formatter = Coveralls::SimpleCov::Formatter end ENV["ENGINE_ROOT"] = File.dirname(__dir__) From eb87a8462cc7fb53d4f37045f4f523f6b8117248 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Bol=C3=ADvar?= Date: Thu, 5 Dec 2024 10:36:02 +0100 Subject: [PATCH 11/11] Update screenshots --- examples/permissions.png | Bin 67211 -> 187180 bytes examples/registration.png | Bin 13625 -> 47209 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/examples/permissions.png b/examples/permissions.png index 3d0930d75f9f29b695e0d2cadc3d0c8909fccd30..ccb3b56c34f81aad34a8e44d46d60dfe4a71558e 100644 GIT binary patch literal 187180 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⪻qdwz_ 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�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 AZvX%Q diff --git a/examples/registration.png b/examples/registration.png index fc3c08f9d7cb3e8cac04de1702fb6569b13d048a..a59c78336c46e32ffd88c17a1c25a158318066da 100644 GIT binary patch literal 47209 zcmeFZXH-i6}@7;qn+go>oJH2738b}%)yb$kYK+8S%~2Vb1Gd#vS%het+_`#mA8 ze0vSNYrsNP(@9faPS6-)!)|B-F*0R$v$4a~gD31J2rg|*oeb&RY^-e^1>Hn${<=dD zT;smxxJmcx7AGr_o0{@UbdnGUQ#xMuyX<#wiW1P#(Fr@4m z1UWcdU0vB-x!55N<{X>?0sU}5KE z0kNgS)oW-3adr~9c@y`d|NQ*bPE$9Ff8J#4_;9~9=mb^VW__-mYheG3L!lt7r{KSC2F7`p5XM2tse@jy`(e1aK=`#B*8 z{xJRZiMv*>J)QpriH9eSC;dP|)$PR6*qJh_z5}rzkjM9*zk14cnu+}~RiLLGlhSB) znWVkz9ro0+sFQ3t4cTRq=T`Q^yT89W{pRbzYAhyxSzmT#Y^+i`$~B2`X{9Y(U{!8U zcz3fcmi_ai5X*CvCr+L|cZp8?Io^LR{Lbrs2%@t(S#w_j`p>t27t>w6WKw?l$P=K9 zf#8Hh{{#EjgxmkA=l8{Px>k`t>;LQfyHC!YD_{t0oxXkk->(P7r?pmoKm1Pv{NCOd z594{F%fKl8M`QoGkFLpq_*gCHVrceBhplhlNEGtX!tz0rEXG$MjR`A#p~7y46Wqcam> z0slqVx_$ux0ZVtPH;eS+*4~$_j8!7ut0-tiM&!tZMRwN9s36kfEHjr*XF0e~+&Cut z7^XAbuhKtCzBZFpRI@TuZ;(*eCbSyNGbI06)T6*sAIAh?W0XJI*e`H#g2I3c9`S?oDQAAv9PTYzKef22O0U!R z0!D5Y^YPt=QuMJld{8(8-&@GCHhBRPto|BsOa@=Bosdwk)|H+*HdlJfpVMV^aO6!~ zK3cT!P&`bHL!+Djm}s2Y>6$V(2(8_Y&MrTX%a=_0S|hnH9_vja;kkl^{gae5N7vj3 zeK1$I9Oy${9_^LV99UU`HD3dyj*jF1x^wz}()r(H6aU}Zx%B^PRZ#P4f=Jh*Pt!Z3 zZ}NNH#a;Rf1K0m;sC?y62U_^EteDf!?`|`Z8dJp@2GCNZkI-z4aj2%z+XmyV2C}zF zBA)#}Sr-c91}WI+1s4w5>+rv@IKs`f}-XKIRaCowC~L>kMNOc zKMmJ3Y?zr^a_k76OY#;y#2~SaB_lRm9WEqCcM}G7umdsb=dK2LU&E}rJ{|R3_15C> z#&l51vX(z+tNFT*nrBR|?@<(^D%iD=Yd0>3a9xi_=on`K?v5na5Ys=-?QD>9<%J)=zM(fH15DHj*~`S2iaV3?8!57+2+FLFY>eXG z=g$=g&U?UlcCt0Si;E}IlYIiODhi6a4BBH97BVW@+2MoADC{8;8~@`ajC(;*?0{8W z+wf`du7zAMxky^x_~0jdL}F>lIl?TK6rLj;dg_I%UfL(9y)+O(>v_{G-n+zY|E*L@ z(v8hkU*D_I`VJOVo0F}miPyBG{jcH}$@HAM28}z%wDoQu2Dat~fAha&lUu#rwC6K3 zqcOQsxymNYzGHHMnwNE!@-E%B*i+>7yU6F0O+9fc7G^5iVWRDqC`CM+F6f#*H4K4~ z7u-{k<8-HT-Oq1W-;J(Zg)^>H&LyL|TR9LWA|57CIom4Kqx^k>)|rQa$xxAPw^8T0 zvHbpFtH!T>EQlX`_y{7t(d)#c*r#pW8*M1G@96glJj>V1t}P1&_A{oa?~=skg~$#; zOz@!fhJ4V$-u)v6K`#^-F;{a;2?A!53L)Iw-1W&F{A?womO%v`?wef*qZ;pRD2Z9B z%|b?c2Tg`7axTs)r))B_)o7)BPDU(fq-4aJmRMxRPSnVgnzFLM_hwQeQimskK*gO*mpG#hk;I!M0Go$H$P(XOp2qHp$t!Jj+ErjeN-c^tH3~Qb#ieO1|r;%i?l4nHsi-JRPAd z%Mt7E0u^1?EGhHWE?mgjhLwrDU)6mF6!%pdnyTxOLUvBlUFmJ%JRYQm}wus#h1 z%Lnfo!^ihxAa|a|8wK8BT~B(sbNk`_L%Dkm(^}HF@{PGQQ*l@eJh@3wIH%=B3OJ4~|BIX%xYwISo@?ta2e3**(Eyp+}v@_Ze{rpa^3 zu7(L7Ef(Rm8BkH5n&v65JJ%NmT;VWX9SGb0K!jpLTD*1Ana5DkZKVlRov8e9&0LbF z@m!)y$ZR2OosNZ60m?J(uqbBKa>tV=V-f$Tt^3p(=->SL_wGvxg`FW{i9TlgdjmCr z8v33Yb=kt$eL{b!Ro=GRPa68(`F*A2`i@)0_Jbd#>N_g;Z-k1h{4}C<4=e6d*J+$L zPtYDs_I2M)jh=E{ge4!y%|&%^B8RV^qhg{?sSi) zN3&^RGO_4p=TET@zCKKz({{RC1!M`n;X9qahgZ>u8!MW2-_8U&%hte3SI(j)2{{_Y zXv<31+>E9!K8pFUS4D<0Ozo)${#QMPur+NNY&G^^LEU&T{f zhAX=}IBPyFKBwWcr~3h|&(00eogXh*5-A8G1sxHl}lAR zaw1#3C`&_$?ahF1+qQ}1CaI3s%epgB+as$c5M?=ts`V;ElV$FEhoc*z4wzgeCd{K) zB=)d0@5`P8r}bc-reizLWNlCfWNZ1Q7VReEz}3k>a1TMc}55j%qs35ku`o%gl^4%O`2Y)GuKD zs!O+y%p1X*Kxe#B$8XhlnJ2Yx>q3|nlW94H^G^l$e1g=#y8t3#jl`_h&`Qy|TMO^~ zG#(l`=>D`EA$L#Og_UhPiOhSo>$6mXUAKKcSc_&DFh>q|=TMD{FO5QYG&)^PlOs=S zW%!v!>5GaU{+!aZ*;1QYXJHS?(TivQnM4+A;NGA%2@IW})M$O?j>;biF&1gDfpcNC zd6g?wLQy(CLoqJH7D1RZS`P^fj?6N@dqCHl))tozBXeqQgbJ?5JU*c`?15gPJ|Hku z*XH+b3cE1`*D_C}Ck#2;#z%)qJd8N`u^K(hXIr_oZEfHo`{O<#TZ~BNPKVHHqhqJY zwXsTPXnKKE`C`JI`CR-?yQ z`t?1tCoklxe(0vNnr;dolFOrnlw}MW#L>H8s7txsF-8RWq5S(_cILd%=0U@A{+`=Q z2~`m9BKfWUtavGBSFvqli%pSiO-f8fMi{vBTRqZDFmhPEashnfl||cS;DE znfO+)`)nd#T0((_XI7Nj3YfqQXKMubE1VbOL@o-9IrS6|cf@cSPma}I$mf9X7u;pB z%846mzWZqD`_=V#B-IWeGM>-`V;((-LK?BTs1#ccN0UL+f+oX!)^56lm zdtb1&)bWx?fJ`%Ysr(n<(F`;o?#bet<1)Mg#)jTw;W)_MD+e0DWl4QpQmQ~RXFgCo zhK1t!#Q_h;@=^A!Bl_eyo}UaDo5-ITvd2Y$6Aq&a6hO^BI}@+3^H{3xZ}uoAj>gX( zk&2%|h4?^@o^iJ{V@NY&vT%j#s=fx*3z$MxLR|n+>wTEQ(*2&JgW|_~MmeSrfW*8| zMQeOufIBt754K0F$d>Kj$;2`3dFTnp8fp(aY$Ke>mHYE zSl@ZR=CB)*1?uUEF4{NLBfWW!nhZq-bpBdf?^Vtf4ErvRsNG8riKJm%>dVroTwppj zg@3a80k6g!O5R@wW0g>kTzvXFduncZSwntBa7tjiF3WO`r%N? zFtyZpW_(f;wezZ6M}#TfaB}ON#`F|ee_pcOykRd13NlY;k{_9DAB_AwnpxKE!BT+J zQ&2WZoY7J{*?07PO8Mf|)1I>`Q1qgNdPC_0<5L1(KuG3WMXS>I@Ve4Ui0m%ZSDe>|23Pgm;Rn5Q}Eek=J1z?S6;wCxa&HIqirtqW$E#5 zsXhbdjaE!gwI|wxLOm!yn1Y8{L3ko%2P4mi$TO@fm{O7FQQM!H6hjcOup>WJQ5Tb5 z=Q5Mq_c;hDP{6;ad*>p*9dBt-{j%RPZ0iuSiXe-(p*HY6a9*lJ zj^|@fVAQ1TY9X_sBdftLi3M+0xGa;+8Q3WRyywR&-)_^SiQjlh&~T?PTD9$7D@1z< z(isY(S$D>Lu`k``mR&!Y=O%G3!V2qk9ozeoGF!N>Ugz?VYvWx^7#a`Z8^7Bjf=w`^ z-~ZE}7ytZwP}C|49lu+i(ZZRPFia)V+}yP-UkX9%GH#z>UUA?eWHwQ^RM<(QxWCwC zAH|XWRm(hy+C0hLMco-dJfVE!UN}@wSwZEhUSbH}Fl&;}!u(RzfVNe8*;1e^Lj`Bi z+$#gGi3Ux`7*W9|LXIjWDwmy)`M@@=|G;;)p}UoJEQuk|)Cbu0Wz&^S=nx9oklWDWF6`v=++WN6Ul@6A+=UR{hXPsbU1oh#i`Qhbaw0?dMt;;ieFQY;G z6@j^i`Sir_#051CgUeaja7(T9gCX-|gsA5-Wv3`cH)8M3jvO>S$`)8mrc?%H(H@&W zpHz&XdBJXK^L6l#xTrXxpXD4Wo8XtOP@KAA_M7{#MPovrL+iWGd3dl2Y4NFt$xKhB z#&WONj#V^r_sI2FVp(#_WU4kgD(#y-;v+;cD}9!+=e_6r@To}n_Lm!3^C-D@iXU4U zJ3Dz!q8JG$7IRQzd8-APt*n)D)_LFd^1s&-K0>-<8X1#)u5es4qaI&}>P&S>(YEeY z?8UJdN2)EN?b|~sLbI#rtgHn?|JYlUn3a~RJ{2u%`*h;8*gKDld$Pcqd!QcO&RX^3 zlU5TSC%%@@YLV5bV`ue{(IKP;WA-{%g+Ne4({^TOf1|VTxh3*o`|T-gnQs?Co8XwDfEP zues3}DoUd$j54`Ee((0#%~e`Tn*u|Wn`07)hc|*CLG-e|#SE!&1F1$6Tx`ARGit|J z(FEx_W;6G*CtYzPvjLfE11lM34yO^af{X0d*GvK}0gcx8pg-Jb=i_|(_4!hM5e}kE zTM{wdm>gR5@{(mQegG?jv{I0V|0fsM>PqAge;v_ zwX89Mw0~@2pvC}}-?)&SV-=+#ygIruH3Gp>#@kldZ_<7jtMsLD`|<7Za_ZuUcek`L zy!LPmJ;-LokvlMKPJumz7K_=fLG685qKW_5d7-Pujz)*H|CDUdPpB0ouzPi}12ql6 z*{7YKA?_h-j9IX$7-I0ZDi?1PF-KaX_U+GT&3FVa?o<5%u{|9mRJxMNvI)1C@banUJ3c8;-S0r{1m#gCB@eol6UxM2>m%!^wV|0 zqGuoSZe`cJ?>CegIYm5v?G(WcMR=-jRkGc_v=(0ED$9YKL`y^TAw8Mq)5GquA+(p* zuGo_6m?@f}8J+3>oi)4eeF?YmPZ(F{TkgWtVw*%{Hg$S}hjPU8=`>0#4KDhmzE4{^ zs(PVP8SmZ6%zT@SYFUE0>bh;Ah6Ah@od*C6a^Z){asa-xQJ3}m4(0=GR&Ktwu6y5% zO_Y@nonDV|s3`lR;OkxcO52_h_mv!hiU#DAZA%BQ#Nz(;7aa^jvOc2@BVtC)^wCU1 zJ?o1NzU8+=#d1(sPX5IuE~CPBJ{zqsr#u}tV$I_2B>AFZ%NAO)rry*+nM=YN*JgDf zCQvrf{qJ?C^q$V(0e#PEx2oOf?9w4-1<{%MpTosg8v-Kd6>&L=CrtRNp|jT3Ef77qG*WTVV>2E zbDp0cQqGU|7{|;DV$n6&kbNJBex5RPc6s;DZNUAc#Uu5&*uHSK_Ieqvg3Nq1q1-Qx z0+BtxRGxrGc5kx;V*p*2K@FT!Yl3#lB1$TbyvV^YphMTOlN`kKlv94tW$W~2=b3dC zc8c^FnW^bWsAm>#zH5CX2w%HNh!{h2cj#LBGnb4zj6CKl+uKg$qw(4NW)$Ar$Uq69 zQ54&9DuGPN^9DNiYYBDBMR9vFSIcu0BeOJe-S&nU37a>I8Y<>xX-rbdrGi*1>=N7? zhlW_QoCgl{ZrqK7-EAx{*rxGZLJe95*%a8b7kz(`Kk;?>K$RXeH7#5uvKo* z;lW-5wd+`v|3!C3_b=~!qR(m(i|s!qQ}D(tmp1%hC4V1aL&(bSYhBzIh5G)ISjwZ) zWVoYdZFJDCj;LU@9UDOwtVoDRU+%o7cj=Cob!XH#Z%jgWRBf_J+2aY_?!j)kv{Bw6 zq$^fLzR`8!%r#OkF}Akvo~$g%D}HPxJ4jgmn9B&gS+enVuT%U8EwOOf^-#Fzm%Bk< zhIlLsjVSRQHkujYSqX2H4m-rhfVfD3eLKH#GOVA*bA_hvH8IpQN*jKcWkrm0t5*fV zoOL1i4B>!Fhk!XQZp@fdHMwBjo}>DatrKADgdH{83syr|ATwVvfa=BW9xOJe z7l`&C3uD4uu6H?lryvxsg;A*xfr6o!43*TRF4cIg{LS~ADM(cZJ7^aC9n)tGpPZzkL ztP8hXv~~f~3h!ITtQ7j@w{C%k#OBONCQ33@Hb4iXqa3Kt9+ub|;H6WxBPbDj+JZ2iLb%RAEW~*n? zO%(1vw}Qk0NW3I3vIDw4KPqJ^?HtFL+O+YuCJ+JRd6f(SsBP5&wV&PDwviw_+_2#Z zj8Ppb+Wpxdlc-taRzfVmABbx7oSI>yv+*{utF|cjj-fd-QvxWI2Nwxs3oR}Ad})xx z1_bDr19IVe71H^&ON9Z`QAiDcEerY3IkCgMDR!;c>A^0W182Ubh3!OFajC2lZFq0h zs_+4&x}IrB0Pxe(+6x$y>>MN~y86fvH9M0*0VfW~nmTNX)%vaNg_kuaOJzxI_S%IE zBqyE>G0b!qv%Jb{xCf%nauHLz(9cl8w25IW?68vCD{iFPzSqx>uYpNv|1%v>Qma#>S**yKtE$y5mqeSx_yh!Hr1?zcCXDs>#W!hEp)ZKJ* zm&~Ao>p!hWo1F*qR<(;F@U{H;6nRO^>Wlf4T!eSNN;dH3RIcP^N0AS7sGZG8D$d`_ zWII({d#j>hn{UXikT+iDgbjt%UXOZMpV;6)%_Li zS!Oka&`ndD+|rfRcq$GUrP}^$_qd_n{wTAlY3y?dP5=9|T8hGlCOY!mR4zX+Yf)O5 zX&PQ$x&v`CtsC@!x zX33X0e68$6DgB)~Vo}zTCvHN<@Jh*K&((5B|067Xqx6f0pfS6@wvA06aJ6Q-)REg) z|Dl*D!M}dQr|mL}i41jaR0sAyS4X~x%`C7@ilwrsO&z|wkl1L1qd=GnQL4;z&u*qq zJ7KZx1x%KsylRK|U>16fj4X{^bWdHgs8V`lF40p$ouj?Q@{ma_;)Or01+Thb&1Q`H zygG$RW&Q9vou76HT73Tm?L-KpBWD-`u2 zbn{w~$jC-#by%M?yN14fpJo=xxPlg|=k#T%QYIbSut*A-xr7eGkiLG)F5BTJZt({B ztExGhoer(A!A~7!Z91wV*m`5?0bndh+b4EOepnA4_N<+Jb zj&u9c`%wP%yvKyvP^%G#jqF=&CP`$DzCXk9wMja!Nh;!tVkaZW5F6C~h}weE)U8D% z2aU(hp_l7+ESU~uIosd;qc0W{uW23L@HsC@iQCuH@W%T$r?#=iPK*6)`W`d843N{K zR-N9T)}RMVHV!HZ0;c1-S;_u)Z|HnEXe&G8G_p&FzgaN#aoN?J*Xy-bt?NC${m~rJdX9 z4+mtg1sI@RYoPbT$aQRsAMVcw_h|Rp*dUw-^k`pGIX!dvIlPz?=;z6%Q)syqYZIfF^6}#+;q|)JH3!Rx82T1YteV10g71G++GW0kmuD9~A zqNd@q|C!mj1ji1yNdqXa05AIngFm4d!Q$Hn>QW@RFJ^=YRlC8#E093;RuRz?HLf2! zE~i;B6I9Jn-PVnQ#zR;|RQHp}o+!FljM%4B6F_{0bKGE?vL4100AzVz{jqTEoDE7z zn+h%kr9n+W#mq3{?hw1}v#nL)dzF!gp*+5q@B0X2seWTKo&98P_GmxcjiM2fTYQ~*peWjP zh@jaZx5*eEq>*mLXjzBT7l?Ly$hViun3+WCzw9T|gN$qJdG8oXnawHB2g6FoJt}Wx zLm~|j+$EdqFAy}|RUa?q@s2tVj5QeJNJv2{7M;PcRX8SR@R1Hzfo;ul=ww@6(M9bW zPi@QgGOZ}OVdX_io_m;tWaB-(iqwXKo_wNyt zpa<9*8||ee*pEpx<}x}2JnN;TX;bZ`UK8`1O$G$+EknaX@cv<+*;sQ*mqDNON%wUB zhMrr7sX9C_VZF8Ub}xm=oaX7&Wt$@8;R_7{Lai1%@bk9otkGj zWU7AMyztIl8PlHRR*uR~V7d@_FcTGYe?soIz1!FArjVE)?LKs>+KnQk?(D=amm)2E z%JgbRgy8u+F2Ja~CYb~f$|C75OMI==Aow+!?AE=OfyaV?yb!l3l0!@DvsUx43G1{M zYs{83-W08q?6_Ud)}jtJGplHPfmYUPFU}8EUDC~=mZ!BW4l=mYNTOyZETpdu4QQX% znx{WIFWhaNS45*}H8Kd8Sk*HnS_eaBv4w^p`ypGcbNg4^#$afWsut)__ zU#=10>_ml_qQ|z|Iyl%W#)hNFbU@c*K0~dtoA}Yiu3l4?OvJakKcQ1cz#i6pcfQP6 zktut47VSkgc!;4M45M+DgQ_#U?l&VT9(p_>9@o(CI(|ZH49Q+Gt$FRO;teg^gCD1e zi=UOeqhsNT!dJ3|`e$1jd-v`8yWxUDO~5h{U0kcbs=&Tn(ToP> zM5-@TWoM+HH-|2Zg2racM(jT*7|2tJ7B`Jd2ELjobZkKpcp@tH323 zKt$bdx$$!RdhcBf%+VAZMmsVr2;`l4*+c|jP(!;Zr6+y1`UV=pQj34wrd2&;sNw#c zE&{pSwm6f#OpOF!PFQyA`vCv|6h2+w`rQ55@Ye{CJeWDrwc4*$Q)C&Br1e<)2vewW zpKE=$qw1>*jV$gPqz6Q%C9&$=yka&Hhp3t@PJim`YVzD}z=t8_3}FnR7paY*;iDRf zx?iP=8Q0`Wi!&>lfqLhZw8Rm$BQ0ZwDFF^IX>q;0Qy;^-%HU~bVp($qN)|FK@lSx~>w`Pr z$=w@vp8txryz{xJojM!Xo-!o8E9TKNEaqR@%tJE%ChEX=`v8rEJobAi8pOzU+E6t5#e81i&vS5(b(a{D|B0RD&z8_Pu9+(yP zUa>G#Sv>0gi`w`f+T1-!DAMtB1K(>__lYbH@+l8pj3W?KDwo1(id(BW__3Yxd)GC> zA_>y(GW02OIgYzcg%};o`aSgd;M9foLZMX@1w_O~KX#hHfjT7X#7;*jSUmoyJlt)t z$(_X!A|h0C|Es1Oms!@b28BuLBkUnMKIn$^0*A;w*8>A=f7ty260)?0fu6Q+!c}sn zz@jFAd|(a51dAoAU3lI-<$Xt3zOYxBb~m}>TtRmkAw-mQ8?{ykB^eNqmC*KR<0Zbl zvGHsfKIjOo4zht2ZhH{TKlx6=pSBo(a(o|ER~6F#0%qx!f*SlIycM%^Mvx`>UDUk;$j!c_#G>^1e2Gko5jaB9;4X3HqX{Ax`Nlzz?8NknuEBe( z!Zqk6u_)8_s1B(oKz~=Nf7}}~*&74iy8^S@g73vLo#A16-HkL8>(L0Lv#6?_hb=bws215*mU6~ z;fF}~vnCjqQH$676ZKPZR5deEI-l1xZS0XwJ@VIjI`4W{>G4DFUyn@eiL=Tk2cEya z`fMWltW*U}s*d4u(V*Gla?rqCYFzAnaxNfws?rc?`jBtb?&Z#OkK)a-&UwKk&qIM! zdDVu`(l34fh_l}9B5+dIe_|EpMb)DqWMitQ5%+55t#)=ql_h#$XzFp{>+X@|b*<~E z$@7=<@7r;9+$c70RJKf^;3`lS0{m-_hz)N*NbXs&x3wU9qHWCLOK3c=*%KVi!d_GG z@zS&6XX({bvV~3^Vym?Q_vr?v_m#ygTy)}^-q!v z#V~9=ITss9m{Q71n6v91yy&_o6x;ty1{yhYklwi&GY9yr<7*(U0xf=P+1At|^my@6 zYU#6_qS~*M*Ebwx2;8kGy%TxX{kz|56NGkr zcx1_m!>FF+pKhGH#8z1MZ>l?mfqGHM?cwVz5bfU0`p_X)zEC>1tHt@!nXDJi+!Dh z*J$d3xwDo4DKG@b1vdk0d0(kgl#vALk_fy12bAIzD4x9@s35TW?$L(5s^BeI0GfOe zcxH~TML+O;K=5+ecHH9Rcgc&;&8D%QPEm5efObp_ZoB)3BBT?4>h&KkK&sGRl!(o1 z-E!KF7UibuZ)zv!^0$Yr8UTpAPe@*F_%8yFINLw*W4(x9Jc&KRXAB~O?)4K=4LlkK z@$HQjQ#m6A2!ziGNxldF3VMGD|0lj{{}<(9u_(4^w(Ih1YEqT$qLt zQsPsO?mVg&q^>ahBfKa6{Hxog-*g8Vz9+wE49^mIH}*F;>Q@Iw^7t!?F72*(E>Ymq zIw%3(F}n^qa|V z59`0WaUJ;|w#a;F%l}v)|34zl2!gz5sc3e+%-+nS)R_|}XU^j?PX-Kp6V;Li8ONu~ zgXprVJU>3n#u29g4=Vlfhp|dmi2dmC>{zxlkDxTvk^vXq=IB*6=K5@9X}joc!B1 zYqu2zR0=_2GP#E1A9@70Yl*);y}*_ZIO{*xOLOg_hSn&-`4BH~X90+^u*eVL_CH~x zK~dh+e<=?@xnm|sxnzZ7o?Usob(fN*3wSneFW>WS0q?Bw%ahLqdh?uhK%+hYd0DJ@ z27%K;N7}2T=2w)50bE%l9D#T0RR&6$F_AkBM8Yz+x!@F6O`Jb@iE?FKt^Ce?~3k$nPF4!FD9iCqY$zxgSR4vUr^|&+-a~HLZk~3O7 zi~~20R{C6A0I(PxdV7yDs{oA>mmWPkE%;Ax{cvoUwh&t&ow}!OwfIO zykrK@C|jPWy#B{c{<|q3W^pvih{dquB~*aLC}6qphnewr3wm`y0~{Tw|D~UQJ^%g| zAiPS+Q~yhA;Q$H0I6zdfRLGG$Ug7|VA2VMvjxx{y8`%-Zacy>f{EzGMcO#WT!Prpo zI3JlFpi7px1aX1#i${2tpri$GTq8fHT|6#=cECpdpK$&sod2zy|Erb5>o-si{Q1ev zo{l#Hb8%cN@VQWwO9{@CtHJ=jRjUp5I%E#)2me++AAG>_PIO{JQtYc&p&CDsWuw9A z9cjsidpN#N8}A5=EmXr8VZdI&ufTtp663j2KAF!*lkq6Rv^ak&YNRp#B|buyL(D+k zJM!3aPX)S5IfU6qY;}}y66E2~S_K{8Z$icP4H1K0LG6v&IiK+n=3&merW%cMT%Fft z*@{i90rramNdbsONYxdNsvRR-ero=zkEayaGz0~2&m2=7H<}hw;^~MBaNEQn$P^5! zzCe4Zcj92tZT+op0|;%$FJq@9@aqrpmo!*a=A%)hCLw?^8Kvzow6oBf`$;yMeJDBE z_fUW#*5uveWI%s#AN5{M>?&QYioE#5`^bR(xW)vMgi?Z%@U=j4k_L#1wIVReKOMW@ zG9pZ)^~2AIx{~%6XuD1LXFBjsu{6mris5)qb1R-xz!D7xT)~b;u7k~*(CY1R7Tz(Z zsh9%vdo}XUkB*FJ~HvSVXItkqBzq7`14C&19bHId?>#uC;=!59e-Y2#5?-j9a`;oPuKx z$tfXKh6%uRW$Q2lX+rk%^wAAC;@E1{fo+@MA}fymXaZ&F5SU9~Ye}bGK3@Q!gsU35 z_NKyHy*->iL-;;-27CWX#L*)(9JVg(?6<639*gZj4;qI;^;}2j$#m`faG;Daj-}z) zDO6c4&vcZ8e(Bi_x+Y5rD{b3MX6h9;KQb5Oc0~Dmkj7iwB9>Umhv(BD1e8V_TloMfC1FmpC9MYqHnKo z!%iDWO(uTnJDQCTDG2zh6dHPt4?(P{y5^unX!4^JO;bmuWXK)4qnp}}7%pjGi~w{V z4#MV|_Pc(ZM)hy_S9Xl2h=o=)h2u9h^*w|+MAAx^99ruQUsGS%Xcsf^TKo3ezPTZ~ zF@$gQePs2{yP!$e#T*q_G(4ECi9*1^1XeZ4j6xxj>m6D-C>fI-j8dGd;MhY9E}k&? zK0>jzHZ48b`(9e2%P_-o30g{UuITI_iHcmfn)JlT+QhA!{wBOfrs#9=a-7vN)A$6U zE75P2TTO$HMTNN?Z1LT!9$L#VPkO`6#cXqDXXxoc$mH&vLDPL0;JvZySY;Nq)?F02 znNz+u90S;5sGY0O2f6xK!nciNCI|DITvNE@RR3#Q{3~S}{nm}D7L`)e?sB^JyOH@A zn#zW7DQbO>CfB2_`RayCf4t%g=r_+TelW9`SEoF;9QVC_Q;u7Qs=mQ+u61 zFJEqW7qE950&0-_LOvjCs}XX|fEA;^mkcarMOF~~`4y=u%q$u48JV0Yc>&{Au^cbQ zNX13=se|-#j6Mt?6fre-F^kE>qdL|-M?5^>B<_&m=09oEOIS%94oott-WmuIK@Z=W zP4diPXvnEpU*Mly`}|2USrj$d+Q}oJzGuA1RvJh>^sPjb6Bs5 zhd8DX0!Md*3hzC2S{<)$AfJX3vFF!M+Jju&QvRgXXIZ*B68(v;qog>3Mam_%?4Z7W zUbnR$))Q#gaY`zHuvurt9Q<3a<4ih`L?!rEh`2!c>E=!Zl*Cgy2$n8|?ruvjI;*A~ zl(`!<&J;7g&Sw|tXTR*M!6T--@4YUaUhjWRmjrkG0`ax``Ce8mO%;D52c5MUsnJ@@ z9ODb-9+H!!8v10o#K$be@-Y**R~uxYN>ADVjzMLFf-rq|8>~pQ|0>pl6_-mW-!ZvV z*zuO@&`G^bXjK^1WK8^PltEl0Sje`9tABTF*uFW{_YRFEOOprSQyNVX@wJc3>}*#; zO7@-^=3hRV`v?LIF}TrXZyJ07!gG`~t!#x}DQ8CbM!b4(q`J6-1`+fqC63%HCpe#i zTF>IB?^RJ8n|9kn0kjdZ-kME<(;HMfh=VD>JmiS7U}>VbXY!c!F0xju9J5lxh@%u5 zQU8}0SNzh_-@%J}XAH0&-cj^|gc?s=^T@{A`t*1i#Q@?DK<3C_c54 zaFlO3Cdbn#I?=V2=AaTYE@TYArY7QtfcVCocj!Ths#mCAP7HZl|q z8l_XaghFZ#cuU4?f*x(TDnI6=6iEP=U2Js5(nmQNz z-YzMVpqe>Z@OJsKaeq%PLq8X5JyUjin3S@kD&X&*~TwFf43NoofG0e)JE#8!M`ZrZZP#yL zJhK0ZKdl0uj^O;2BE}{ez4TZ$KnCvorR+=$C(w7&Vm>vK<4*7hA6JO!?`bJ5dc4nG zxk80mDRss14FHhrh*@?C#;0{-qM)FdJj7oO*`1BgZAMAFJlpUMpPDSUdQZD#T;1pH z8J)_dz1P-h1Hkc4THXGG*Y=l}bbS>lX_U|TVb_zu_;AOO;(ujDP&u}RXNU0Q#97?f z;TEz2YtHg=*o<=x*b{1}LS7mJ&zKW}be|fiIaKp$I^Mq*SHK~1O3`)A$L7qrB6_gF z$~O8O)zEl;=Vid*b`p9Q8IQYp-=ly?*~l@+WPO@}2^_k2+F2msXr>cD5dKQ%UiyPJ z{P%_$^8px~S9@pd?j2QFCr;XcT)yFV`N_w8-KYOA=~RrHqS-9DdAq_PSVC{RS1ruv zSG!lQu0Bf?I5H3Kih^O7lB~XnVf~d!`Z4N|{XqZqg@B{!c21wb@L#p(`Gax$+shUK zDqxGX_~;Xt=)S)NQ%j+~?-)q(Tzm_>wy&`F%8}*(i811~i_03v(iu;j>;u`KYMsim z#|4&%vxOh%${*Y9&Z#N_3_?Vf?OzD(uZI7BwL>aBAh8pd2Xy062n8uPCsBnFo#uXI zsr`s%$DNWG;{>SsAm#uCM;8u|f;7de9CJ8s?4|!RXp6*b3*6d1b#>&I+Rw+S?|A>n zxYeOTbKG%@AlIBs4jT7p^*3s! z2FG$Zm#;lGR2P{c0SAT{U|b^Gejk+Bmm^4UY)S~qKHXWH7%~pny2~OPrZ!VK9S?yw zr!B>XsF`XWtJ?JZbYVgFmB%%EeYq``#`iOBH)XCzHc5b!lROA3HHOrWp_zy?-6z*@ zNo?x&Afo%z?bKDJ5Mfv8t8bWxDnRaB=Erwu*XMW^&o~*;O3@D}A5AiTT6?AG)Q7hs ze`P;*A4I-XSmJvW$9kKxCV zJgh85y{5YT_>vOI=?f;!5+u^h(kGrs)W0IQdG1s071b9np8J`ceey0Ab}mNZLHLK8 zPfnb;dh-g|rSq*xK9;4ka)ZlyW*z~C<(SH-*p-ExoI~f_)gi2gTH*}I;gP=btpKEW zIXa;x8*Y7>nWo(XFurNvBLD8YBD@o)FNy!_Pt}zsR(JpE&{}^&sRt4MbSy)iFOnAg zbRQ_5!oT$#@8mhUKmLg8o;QiAs@2Drh?0UvpP_GBKlk49NQIZg>5Tl^-f0Xj(lrI{ zgg?&t`r?X-`)L`Tf7OJm_)@;OSu@L$^Cgpq`;TvHJe4?KAbc{F;%Eymz0ssAoF?5C zJXdhj=k`06ybq_fX#A9k{@pZC;RDt%t#txV>eE`6#jZ4yYAU^8g^FjKJ=W!$WWTz6 z@dfM+?b~SrRwfB`rf2u>zgQZHrlXf3iKY^8c(wAC?07o@f4A3tGX~TS!{U2ygp^JX znLla`r50*?M3hhCmIvKj7~8&>EDL?eBpJ)9|00Ox2(6*j1)JW8IaktRo8o}nU@p;M}m ziAf3$!6&A9FIc?L3IYc5LKxzojBGl^VadFQx3B5C`H?Uw{V?GUa=iJ6cyU6p8$R!r zsFA=bjvGgsu@i&~reUduN{^ytBAJ`5BJ?92JK18pBtMlPOOfo+E;hsQdzCJgI%kP| zSS{y1866w6$2wmZt8OlHJuI#NHElY`xG5ym)8irUR?sdR#hX9A`Od5+3Yl)qvaPRF z_Lz zP7y-4I8HM*6E1~GAL{;g>UGnr^H=5FbH~xrNFUCXPy%gImC%h-?Ugb7RIl zM%Ww%#`I2xcAXzV#%!m71PtQ!sRf>QTp9`)+QosrIeM*C&UZltCoqdGEu<_ni@DLw z@91TxTN`BM+%ek&(&3*TwxJtCD5dLI*!hslVhAX0G#x0AEJRa=g~ttoo>-&#pQ-fyfD{kYOl%a*mQUe z2p9WvIBE{ID}{v?EG)VT%8P7=9+g-RO|sDP|9mp#{mG2M%;Y( z?&V!D4hn~{m)i$h(VF`YlC zYkBgw5`K#0Ay9AsJx}Z`37d%qt7u`t^#OX=@&(STMWSb^u zwB#ub?ojetb62O$a$Hy{c_#TDen8{mAJ!Y*$yp<8t zR?{Vri)vGBIpD;Qmpmi%+NX=xl9<~DK_9IextO4D;IXv5T+=eyV9?T=(UWq2cl{pv z<gI6`R)aeO#g*f)6!!w^(v!)_?e6eCXigSO z?xCFj5bS1I=Cm?;=P9k8fY(kQw{5RniOrZqfEOt&#CQr^tadDg;E^$E0x@K zwVz#)omzO)OD_N zz5j?@k3P@Nwbs7xd#$Z&Q2zcla3L((Z`C8-wnd!e8Ow1ilHxl+P`%w6T8nO(&M$p^ znx+QQV?lmD`i4ug{hqje9Xly@Cq-XlN$vIC=2B!^`x8Oy{_nIIrnP)cbCPF8MA?7y zxUicH8DLmww5-1UXIOAXr|mT&jo zp$TMp!E_>8>GsO=qpF?IU#$V~8lwS!c}QkQ1rNCeHh~W+X+bp!~Kmmh?ky zv-}7;{UkA0p>-oLQ#V;uRhNe@YsxmiMt&)F$rG}$>xl_Ln%osTGf+NIM(!P)ij=%l zUnX8X%GH-^9AO}6k+AF;qCN06L>lJeotL($ZZn!0p2Jjr5+TskD5+RLY%BLmj7iog zfe#_(ee)H1GjG<#3mTyJwv}-Z#9OFD^~-~DbmaUR(E+N!E?q+~~PX8(>fd|iq7RCB-Zf*H|s150QoUd8pH|p5ZW}%pwG(8rB z$tI~=>^hLz*&LZcwhfQuJ!&9fIm@oQ$boV_n9NeTy)65oNniH2E=A$z{N1Hs^zklX zSv)mXF7jPW&o?UR#yWOa?{0c3dTby&%7;xPSKP+$i}Wm(KCTb5=yvsdW(du)zrx{p z_|gKteO3OoVp9Zqu--@-1=Oa`oaWkhzkY#eqoBfX5p2>&wM}ld>T6Qgt)=ORLO)8$ zqrmmqmgy#KGYpWc3DeI@?X1m29-iE7UUD0q75}Uf`DXMaDrm>=w{?|6upju>Z5zcj z0<2h3@y6HPo*%*48U^+)G5q4ii#G~0N;B?XhT3AGB# z@3TRwtV?{m)C!Z-^Vpobh6`%i+j;84HHbAT3u4j>x5pPQS|t*qQVp-OB1E;E=1>l4M{6lF|Mg;w#Ze`R}FNQsKc| z)jT@S2?!~g0Rdvyyo?!Fqodwd{NRHj(C0>M!->2nm7H1^B3YUN=1b+^mC0^bXvfMP zQxx?&`bKj@3P+=+3zLGxH4yRHZyMJ<2?3${2d}MWFlcg>&y#*TZb?vl7c2Vy-kqwj z9ZaEaK+~vOS!%W;wA^DOtULFM;9KFIXg$HmpdvM>?GT*6X#4reGnv3N;{xr7IvF4R z{Ta%O5=tH(vN8Q#?;dFH0Cpis6t3LNn!<@CP{3nVc_fc6yy1Pgqg7@V4wb}tsf~F7 z9v9)-Nk@0U_q0mkf~>`nO1&F8xtAQ@Jf8E>Accvey_=H6D{c4PlkC?#id4_SwahJ< zejQVpC<5GAj*bfC;iBJYmad@7_d2yj8@t)*wg(wt+w%*vlhlIMHv_`Fw4B$RY1QAY z8*I$?HF(XF)GH808rs)Pxg${8ShPf4KW)|&~9Dbq~`{m z%x6jY%|Vr10`v3AeB_|R9A~;sulcQjO-2eQp_91o?IC@Aeb#%f=lY%W7w2L&7l$5I zKn9)B#%_(NA5W^KPLJ@;sNDAB7~A+lX~LJ*1HzxSa534vm+cN;y*;;@D(ps>d3n2R zea-h(ki7L`X2otRQt9O73+a+yxoW@Tv)z3Mjb?07}%ukV$M zZ%g2Irl0vIqsr8552!h}FF2<0c@3WB->DgUn?h-%sU9FH+KWwILoFXkX2{0SWsnza zt%%F$7VNfTU%@x5?&*S%yXxrBqiRwWemA zO>$*{ZD$=#c)iEr@n{^nRkVC7`lvhCMa6x(3s0-sneC_z55>gG*myqGjNsP;Kf`T& z5JK}>yEa08gwUNYDnI&pTsC_-aDFAMdt6maBkJ@mom|}*ATRFOixd%@*StwwUSU7N zm6gbVib$*NI}R#sGmmfQ5dMpl=p!q&4?hxjmb*|LMX8`Nea{dVm%#%M)R)A<}*I*T2V3Bg_l>E!i}E){{!v(Gkjoz|L2jh|GmR!kbjRCpbo(b<$r+h7|4=k zw6r1?N2_{hymH-YOR5L~lG1Ur@lK8FQpD%ax9)V}kh!Q*ykmQY>{ZqWU>wc2md9{s ze>Q_MD-MmNovO2N2^KZ5bL9d_ny4%j89{Kg{@ykBx9AiHJ*cZrfJ3_D_X*jiNY*eM zIQE$&v=jjlNhG7tOs_R2dWM&)kMTFK?AeEN=gcY+{TLQrJof$ST7iIxv%-DLvUyE-?H|3ZXQ-3C?j33XQ6m0ZgNM zVkPXe+b;nU?rq=i%CNdhyDrAjNO=tsvGz7Q&9<_=Jb!r&E5Vw_=a+xIc_dl?js$_u zG3fRLKIFVvO!B=={B!X9TTxQw)G6wRg@{tDT>!`L#){#Yi~xaiF4NM>EJoc>8qsw3 z+_(WX=w&BI^;gF%5x{XnPsr+uSkoN0Qs9{ro?m`kq|?n~T>-|);nZ39r#n-B{pnd8 zA(`2i#6XP=FpF|f~0Cz2gsBr*&%pfL`;BF7)EQES#{V{`up?8Os5DVuyN#* zVkJq!_TwC+l7o6NoO?ojCr8Q2 zey@TReb;B_44W7g3a=vqLvR0r&WNrH|t0? z#vLgEyAVCq5S9>J{q5_5dF$Yv>}7&($NygMnz!5Q14v>iO`j^gj=j#cj`qDTbr3cV zKt72fn^m&|0u6j8DxZiKmP5e!2CSR<%owp>=;Qrjph4w_X7+ zPzv0RJch)yr@A2Dpi0>TyU2Bt4nv<+nn>4&l-@d7l|6!pkPPf$Uzp=n)d(AD*ZJK+ zkzEC5_U2?;!0A|_sDe7%kn7GnfUYy2%qwbfLwU0TT7usRqT|F8RM$nNrI%q50u7k& ztZ9mT+bnGA%OricoiWX=DU+*Pa20^}?8HUyCCq%simkdHg6aeA-L*S?vv$t_DDK}H zFWQpx2u9=FZi+AvgbY=`EOVI6ax~N}I=nOPv2I5`jwx;itesNESG~rzBylAGQI3+h zaEd?uo+?nAUjl-uTW>qO^gI9sLM?pAoZ@pB9>uQLzH#sT@o{lFhZ`3kSHuDxOn60( z|4e`2I*OFaAZ{Gu;z^m>r zzP`qF2caXayj4!no3b4c^D~ql6|hjw@-Wz_VbX8UdW_G?%~pWkhI8{7FB_X zj%{cGl3_J_wxpID8sicchuo6Lp=h<4my{`yUOQ_$da>VDOt}vX9@mryt0wPO!z>rU zr3X-5&cg6Bbc;-tqr;;08^ymN55UPL?gAHkr#f&~7qKvGV*e@o;g@#4dcu)%8=HWJ zEH`E1tazcSX4qec#ZjDwx&acriq-?U*N#LN2q`(DvQs?1o^xeUDz}b}%LUa$r6D-h z0(qdvrVq~~qUTiwG#S${zx8tBmicz1dgC;cBo^J z_ErbD9&75WV74Ex<+Ey(fuN8{(@l{ILbii* z*yL){{z7AR$(5Rc7x(ebB!75qqJWp}1~Yb!*xx5u8`1flPa~6=5CEaU>&cM*2hZhB zOLGMU1KCzUuUx4_C)uck zH{IE^GGBSEVQ%8kZBD)v*HE^lrj5f|QRE3#LOW=dWO=fWYo?K#am}+w^&aV=U0Y`OBSQL@$v4!Mjb~Y&S$||c85><_tm~r73 z=%9-o&Q|yF`9?6)Mx*7uC&_{E*iy9vdlVFpZ%j#;Ba=cC~%{bFn(wWyO>hVX-JVq{B=EJ@2s&_*5f|I z;S*R@tf~~_cw%mSpU)LFjc%cYos=M)01k{=B{zuy)W<}gbMtggcO8n!;^9{Lg5F+5 z_J%yGlzsR0D%M^-70Q+!^L7oF0m@`wrDPhRQB^4NY17deU8-|%+&LkdorUy~7kaGH zYiX&!yasmNXChT0YedpmTXN;B<#ImyD}up4=|P~In;J>I)>wGR@t9Rc3^WpR!rgcu zo#GpR-*P?*Vxi@dq+#6^n*ysUz#5(0m7cG4cX-{KuhVl5VUgwOarD5y&UP$nmd40c zns&Al(sCQs`T5N$eX+E?ovaqviRGa?8Y&G5VsWm5)`Pcv4&5W8082I9adhN#Z%5c; zK)R-tOpdr(;QPZrguK9>(dm{sP>i^$}11{0@0G>)<`ZF7)WA)p9}H3ZUZTB(G+GBqpQ6?HN4{OTjBd6WsjANX{hJf;GOzG9U2T!rHfbc=Sl+RpWrpSf3uJgNFDOE$)s@1ofO zD50TM)Sfj9B~5Ia%o}+37-@<^`os3}fO(s3dr_f&e4n0pZUt7myquuFixl4kFATeD zmZMYi)?GY}P6)?vBj9k$4z3nGu1H|891GM?f8EQusZ-j~3yI8B>S4)QJ_6-%nnvsq zOdH$<+&z}HQzNWQviVe(ybgK~*fZWo_drJQh4tHGwmcnoOqyL$i z3d5R4yUMYv14biaef)C{h`b_eHXI{dv%Gv&j*i}TbEInB9-?{Vi1TqXpSljsD6GC2U39b#6TxDi# zYkae>?rB%7qjp2WH9)BG*|Zbo7}vxUz4@K>18e%(09eE(!D1W#=HYUx^TgG)FI{&8{au-g>RhYzjA1azFg?L@Qf; z>DihNyPlFRx;jrs#b@Dx4CDX6=-qbfJ7G2bDtiWa!USRR`6oEMnz8fnFAsddV_-F5{o{h%)YUWpct*74d2o|)31 zj4xIpP3Ae&ai3g$5D^!59b8LP(VJsvxVb!JvpGQbQ0&%|wO%Eya_i`4PD2drZp))U zhk1b?;%Eq+O;unQFE9U^c6K*a*((gC(p?x58{-ViFO;0ozVuL3@} zb)csiP$XE|0Q{mg5@L7UihnoH$% zg+>pp@C*e0{NF+2WM)Bl(JZmWm(Pw1Q~AuB@8V*iH+1W^_goyvj@wx>LNNRHt~-$& z`_vEA8fg7kGV%ZP>>ekY&Lk~e?UY*PN z1B4^PKmiO*iRLWL@hQN;@W589DiZwZSqT|1qc8c;zbc#lMrK~!1C4oj^Tr>ay#yYJ zBTBU49AT71O_b>DmUQJ_DDgN&?ea+YaZ3ng19%YMjGg2L_lFJNgCPRPb2keL6ek56z&oN%RIz@J9^pAY^Y z8q%kluHc3XQRg`*?hJR4oLur<_>JR`-}5p8Agy2#b()Qma9>jdmZW=p^%4goI0mSx zC@S(W>R!^2?K?iLGV%CVEG}QyWN2H{26v>fE4$ftBul=fjL|J(d&i~J5ZRi&!`gD> zJ9Av(%0L$W%y$|pDC*qV^`P2{>&`pPv{$)dvHs`a=?<*68XQZ_+0v5|s`_xV)q^vp9 z#nV$;K+?!<+`TN0{Tr$%Mx!Xbt@LzzkkXfVh-k)610iQe;XK+9KqA_=;`tIIbT*hSJFBojtXO?6<&8{ zrE?3oOs66sSxR!?)~M=xx6GD?%O zmi*)^RfMFcYozP^_nXxBhdRDziCjExAr*~3oYGgn)4j^fD+x~w8V>`I4UiWLoH2_T z1)A}VJ>O4;c6@Qtraq?7tori@tRB+eltuqwP8(C7dE2C&D+LpLaAq?h;~YHV0wz3q zjc3O%fB%Ty3}Z-$35x!R5^_C8(f}?~ptZY_f@PS&Mp`yT`i89T>i}Z-`DyO^9%egr zC7twdR{pS<%TC!s&1ah&11MM)HF&bq6?EYuvbxQYXhQgT<}>=6Auq9wultKwHhu?k zp2-wHqcVx((}-ygkA})XXY6l5qth>dYMZK9b?D5|`|q^J1}dHHKDr4mM|cj7Uw#g* zC2!0UjfiC zriK>`0;z1wp8rj@W2XC-=`)6wu{Z|yFM$j#2eN6GjyIPZbn7v2>63EMnZs1g*T;NA z7hpFWg;^SvR~Z`}eKoJk|30VB=YR{Wq6U}sZiAoF*Q1UPBNjNQ(GV~kUf?JFCFS4u zy9@&ki&_5qe{nceroVryhl3&!K-6+Ubm|TNXbR2oc6|Wk6^9#Gs+UrFL>qA!19m}J z#%Fjtk{M{f0i2fkB=Ret%P{j+c3^jp?){^~lM&Ls$eztze{Pzv`xp9u?kR&2?q#C5 zmqk*UEsa!a2p!ZmVFRk?CWAALs^AfVHo9Bl=sTF)=scW2XJ)YE5uV^UNH68HSbX=) zE}tQ_qiJJc>^kmHbvvXGDm)(VF`PjJWQeswt1fKrkCkAe3z7hB{S2|k|79Xy{Fr71 zFwIVUejLQ%r^S6w6&aQAO>oV$#A@W;Ex7svNg}{|Nmt}NKd4W^X}|$6=SV41Yzz?D z$RF-lR!%p=w3Sm#ho?%DkbMUL^U^9(_a{0DQaj};Y!5{1_ZqAlis}x*ByM`8cvWlO zxSM}pPot&-ob{UJDepo7!5L@cyC1~p2;?n^t|Uf0Kdo1o{(VryfzPTlHO}~|Y>c=d zSk)T&{`vpHKqMxXt+?|6JbcEs=RT(7d6?pOt^3Ie&ysZX4W~l_$Hh6`9IY%k$M#%3 z)LJ3*slm95d9^8>wbRW>aC6*kZpj=IsllpEUa$gB>n_Bftl}5dvMZ7CL2X1@zkO9 z69;aC`hi`>8YA03DR0``mh_l6Eqc?#WBc1t(+n|pBv6)U3)zof&GWs-X^+^c@LF%< z>#6Q~lpIYhK04vUT7UfjRI|=>ZS$CI{MW&nMythJ(xasnR+{O(w_rB9{^(}&5R@11 zh#}9eMyPuyCc&7rSF;q<7b)CJ%)faMHXp-jn8;W>qpnLnxm-I^@i?-yL)6ewOp@vs zXTjif&I+2PlK-RC=)k{Q4X)eHlq)Mc)6kH@1qDd~0i)NJI5*~B1g(J^;)6)^UVnu@ zI5-U%p1z^Ik@_)AY2dM2VB%Y+Y{QxLjyizdgo~CCAIkP4B&%DP!ZxK#&JR-mYHB7j z&ki!EXwU`o1OrPXgfkYOZ!~r{!COr4DvK=jqZosG4GkI~P9v93oC#7uq zZFej%eEJBFa%N^`5hqHWm|UPhPY_2j1IGNkJHE5xw>>9ms9J(hOM-o^c{51xwq%JT z9pAxeltJCGW>CJ60T3FSmnpf7?kz9$)vMk;`go?v$;JhlrJY;f=4_JnO(RsGLAOw= z>BU3j>wTnE0#4jS^-y2a1BGfSV%}K@Af`5NiZyKl2@mFN@#T*9k9^on(`tKjbyTWF z5lwJ(BOTDp#qoO<;&L{$Doto1a!4u~El{JcmDZST+tU;hEA&kCG^)PKhOWw)RNbeayH{aLRW;M!j?DcU z;;jxKM|Sh(M0*pG33dnM+`6O%R-_d34S5s^LP`;C(rpDPgY6Oy{k3R!6C4#2E7F1X zKl1#5RmMt7m9K=42RejS4h(*z>dxyJ1UgHR0YP2od&OL0Zb>8!eP6~Y4+@1J~>hfGusZ&BA^h}37ow{3KP#(2fgj~$C z$XGwKSE>;fK`Ncdy-S!htd-}g2HPIa`=P0PDCn^=hH(Vfhc*qOzbaN1j>*f>)CknT zb5xVps*MHhQ^C!04_Fr0?67<31K*op#I~K<@kubQ1M7Tf!K!D|fQsKWifHcW9SoEs zB0pM5JCj(cIi6w=PJVMKywJ@p7No4Gl}kLGGLIF8x{a%mNR;P4UfOMk4xo}w6eCrE zX8gl4xSlLw-Sw+VTg4X@DPh?M12xr6?Mc387PHy2l#^Ij+MepQOA0$%6~x$BkvDn2 znttjT(h=%mU{GeuRbW`byY2_6ai;oLYR&rCIHmEztn@S=spxbX^xl^iR8-|8+e8Ka63Ri5GS)ypc)8$* z{YWOm*$=+PD-v^0U;xE(n&nfsr%Y-^xGotiyWMzq*Z=w3_K~SF%22K=hXS^}otWn? zZ#j-!U)COMisR5QwjQNn7r1MU6;CEYOrW#)xjM+&NTO4?yvT*@09tFFZ{Zc|@Rlpv z6_jjRx4_*Fvf8=_5%FtVs2bH3aPyFRPi5Ev-@|Q1_s64zu6?KOUwN^^Jsg?s2y&@N zBQG$e5Y6E^ud7uy0z#Khval@n2T?SB$D`wIov>UCx9Nl2?sL6@9A`~zJ5w8Ui|(i; zds~#vZ5TPJ*E$&DgW2OJXaWY6(kJ>q0%7Pkf^Qu9mYtkE9eszKTrdaM2 zFNAH7RY%zy4ikX6wU}~LC3VULdYL$Py?mQ(R7KbwTLp>8ZdaXk0G9SC_ z_03OrTU;I$B_rCT%sc8j2MJaN;qErt%h+bV6m1p_;_+*ckNYp*s&;I&#F*kYCrxnX zER1b2+YQxTyI)f{S2|Lt=IOM!lhu4p6wkC#3gNlIJ40!#$(S=elogRU!HAg)&tTlc zoJQM)BVAh)dD+eAU2Gj7a-|(pasdHR+2tQ$WhlKBe^QAk?0QE+_x_WB$t;5q1c{*7 zR${jjx5UxIMj!S2bK)KEEENKyd_g4}q@(3ibH$x7=|bKuqXjqoE~w*}X14B{Q{Q1V zwOn(h{ZXG@T}A2YWwl7>grkUJZbnSRjlMRYnP#IXETE}(C=+mAKryUx;OXkirjFL$ z9Qzk#U5~%lal0lQWf!POChn|8Bz_Az{Gzmrx`NI+FC~nYC&Qbm=ELRSx#u{wFc;{T zvSjY}ohyQ^S?ky^i>5h%pzh~G6@wQZt7cc4EaXt+f$ny6wqvHng0zee1M!9#eb_Ib=X^pswdqb%xTYKumOAma{biNh2_>F^P7|hkH%qPEsJh|EMl~y z!Vccop2fa6$EITM&p+Mi=98U$r*ZjE)}PSxr;m3wua1u4i-q>mF$?zi;UN{^`8%P{ZXABRZHK+_o`q8`tW05g3I4K^Fti8Sh`P4;8fWFJ&opV5BjT;Ce*e?cSc0azLV#e_>ax`nl1_* zX&A-^sDd&NrM}@SHAgG+WstNq{SliYev=%S&9z;c;l1TnL3Cd1FCZgX)ic9a<}I~E z05BPKy5W}}WhvG#8*`wu3yQ-qPgGFj_QpV`1Lv%MgNa0xc+D9{>qb=1MrY>;k>4>E5XvVqLDb zH(Xi6_>P%PN$!@5<7~-!wo+<=&pqDQDpk9ZkE+&buYJSvEmM>vp*>=_4A~A%fBmCt z-Fsx1)nN+HkYOhF^6@u^OB;aQs2o|TDD16Wl&Z7c`GUT%FP^z4!u^V8#(UYflkVbL z4rB4SFfsct_U3~)9<^?jH^2r~?3`j9#I=T|K*mEpr&Yd(83F2{xxm-9VStD@X+-#K;zPmvSomSmUnbj~r#PNC13SF}8 z-fo7z6?I~Rx!UZN=UH2;1XA1c?TwBgEUmvFp{(WiSu$k%_jd?eMSDBlogRL0zltCY zrz;9+QrtG9P8#=aQZyb8R^`N^yA)0j=X$49#3qu+s@rwlf3J!mY+Zd^&!86>-6q-`I-@%GxLtd<7OvE8Hi)$7D{_MkE!RTYY-{$~A6twa#V>ZsB-Pz0 z*hv#`?&?$wBPH46y6#!Baz&f^bc{*oed-12mAK7kPxiVha`W21M1_BmZtUI({iF|u zq}v|+vrKn;GHVinOB!w+ z>S+`5)=uW55cC9=KMqu>*w&5Q2!W->v|M6y?MHozEDI zd2{txkIrcl4}sKB?D!2!x8>fFQVxT%!P>T!$zX1Hg0b`&iEflp-h#S%TC6>1uT$2h ztHj9ZY_~*_$clu@dGFmJ1&}4uD{SJt=uqm;o`F1gJh?#LYRFLTfHoEXg2B7q664K| z^!ujt?h_xS7#kJ>!lZX^J+3PVW=r5%y$l(GzqGGY zT#?Icu#p=r>>B8d;>JjtQspe*1mUYMFRO(ZFW1T?|0TveA)wyLp7*@^wFgR8c z?hJ=`v!^Coe*T`_3R#p;+>Mc{nfp9m9k!Y4c=%K}VM)RyXX9?S@bFNYznHW2E|!XM z-3HTnt3ccLDkgkmFyo{e?eN02f(LG!V(M6a6Av>;P5FS~hIM&s`Me?9hP$d{{kVJB#%?Du*}|gix5%YCE3k3#J&Uf}#0kup zeY;zu9U_O1V4>A=Sr*M| zdje9_X^K+{=Y(u{Jo^(ta54eRrW4_iQZqsLvad*Nv^6TfjMpj7Hab!p{Dtv;g?)-}t+XMk2m-HQERagst>^(FK7q6tlDxiD zy+ATcEOGqDCCgu6-%$cT|9q=}d&3v~aOX@`zAS+l*_hMfR67|?osayzKfZ1^Hls|c zX*|uV!t& z)y$t-8a`|YBod6QSa4gi%R&_S#RABIXU}@j<@>}(oc+;(Zj8C1_KY^#pe9_a7tJs& zL}lpc)B3Jbd2n@e8HvKIK!nlrQ|H2#Y1;J)4ydLhQ)JTc?et{ zr`ONW?XxZXLs{K2ISxBXSqhL>m^=vpmPZY5_&3x;@eGP$zB$$d*9#eBNpQ3#E>#+xxNpf)OvYA&+m`&UogX zQs{a+OmZL!q7lKH(Gb5PJl@G`COyXUv~vn6=Fgfp;7I%+`O3~4`xM0h3TyB7TD7-a zw1rvEU+JmTf|1j5Af~FPmBLW0Jq1k66Z)%&u*U;`?W^Kqy8Al5VL&^?w2jUGITr%t z9NI!J2a~CAzhnT5Q7+6G%-YgMcZnRU>0G*G>}jm8fRd*bq%-Z~CqU?jXUb(*-_5hz z?5UgrDUg(m1NTwbY~RuTq7eqjm$l2t`!_x9$3_s@D-vS0JmuGzK%lczSwu&iy7&-X z318UMMlW>>VW5HsG$5nVaC)ydS;oWo3PriKd%@5OsQrhH-t%?eO4{;5*JZ8SAw{2I zDMw(P5}4|WfxYGpukh3QyZwqIglcF;kAre0JVZ2>4s+1?Epk&01S@I_HNMcSExAC| zw_A@qRfoiS2vrw-9s|?q9@DGjTV{z0XHr;vKy~O$=w5ps{=-?XxQ2Yx#Eiwh>5T?f z(e6Z{+>2PQgZSioABCU0`~+~OUk8|J{!I=95m?m>!IczZ8kt-r9yV#~s$%wY3C#5Y zQf%#=sne0!`+4@t&VCnBLdL%DSLC|ak)GZo`*k7+m>Kq6$t>sTYDwSc`&ymu3zPPB z2g@UBD7x)W!5vEBSLMA%7GvMkmTRJ3&Aw2ZCG*yn!wK&ySs$Y+jQjKVKGuHg=+90G zBYLXJf{+@jgmh02OgHDn@ANNGvf73V+Vl_W!0H^50nYNJ@^PJrY_Pjw0>5SSP!xdD zbMBS+Rec30Uc9iXYh7i6h!a=PGI^6B;gV=lsxsaCBiSbbx8l`?oXlbgxob7y7EL#R z?3%*zZ03;9$WmoLgXKF93z+1Q?NoXHKC$GIu;M)ruG2C8ExZ#3wKp9wd zkOONo{j}1iY^gNmKa)`j0^fbQdH$kcq`si<;r?t}Zgnz~B?+5B=DS31^>gbM-8Lge zOd$5{yZVcs=9MN6KELBG{=lHEdsN0(fWA|>gO!;%&N!Hobbo}SU~0;xrp*{@->ygj zpi)V~T;JXW`k>uF#9??!zl{)+?7*WW;j_&>Oeq&E8&hb+oUf;f5!+lba?K&4lhAC| zyH2l3QM(4}UMivjcL9{S(CYuVMezN+w=Xxw5xoR4kpo$(1uF+t^so4fqUY#GT<@e* z(YMA}_i>dZw4xj6y|1DL@8ph=g#@b>1Ki__|7aCxmGgrLYx-hdbS#dUqT z%^qU)4pz*bgY=H$>P1s`Kw4+ICJpmBbY_5R6y_Mm2IEPhgms|ui(DKkRX8mvbSp90 zo^cBeict!pF#vU8lua&rE^9h@t+Cs}8vyMP)N(*7#am?Vx4A`8{w$z?@)mzjzz+}; zk59lRzHg{8&LF)yqXO)JWFL_CO#_)9L5fu02Cm>y>(Gi4(krdbGl%ZO?VolB*(++m z=4=^)tmR4a1%{S!ilwnBqSeSc*X5{3>h>_8PF2=Nv+5NZxyBNCFN5r2%(t@J7dNjd z&fJL3G;4~W664AchlmT?4qnG$_384#%F(&eY8uIJ=vKb?3{xwg{NP7Gs2p;oPh;?U zqL7HOm^rYyW*JUP@~Xes)Va*+&SGxl=8> z(hk-8>m85v>wNsZcAK)1$)W!e&kD@!|B~L74RXF>_7LDE#Z^&#@V6zvF4_|$Hf^<$ zwZ@wG$U1MsMkZB1aGP@KTl z71bQg-t;L9U9+UDe~I9&I*jFDmjrsgebfOEQk@&ByV6f%@8*2NcJ3-HFMGri(eZV< z_@4inSYS8=`mWKHbN?Y#F*)3+a&iem$Zn%XEY%7QiO+VwBlf1$eBGwC)@o~Wjw?)J zSh~%d?N#Bk^;uPSZ1{7Fwapd1qA31$5vDfs_GCc?k5SJQwv^qkW{_@X(f6wBC(i#8 z9WLX(Y5(gtk9hNSG71+5OXS+c^4`6n6IU*LpZ?$j^PZT-$fBrIo1viFVR?^g=F#{Y zH|?b2qh3l;!9p3iFCYwi-M+2^&}Ax7$ES@d44X?Mmg5v+%`h^Pl{Dn535@0KWv^(KIKab2 z)N$J3Q@B%G;yvS}ooMUc{BU<4z04M;@A_>+h8v(=N6}u&UN4dR0HC-9+Hn?UYmhdDlNoJs8^mUBU%c=EmlDHMm*ZRiGGpLYaA7!a(+2 z5lB-SBAHj8rqhVKssfd(YTK7!%B?vf*6b?@HJ7-IMAA#ZB9xYc>`6 zIJO-~{^+<#ZXZ)LkYDIzSlC{ja+FwoPou)zc)o(EQTf79xlJsN_D6c{Fe`-8;PQ<9 z@+Y!i{v0&@y{}*8J|l(;WQcfR-_eLTd@#EtA50N4@19{?wIp*Zj3X?wJZ~J7d}ao+ z+6Y!Rx^?Ja+DjsC>{-|!w3}*p;?lYiB%IEE`Ep0J5dfRkSetHQ67yTUYXSsJNY8l3 zWl+kh*E)dGq9d8cBC9oAK5m9rdkDa zZh8J7AfFzZ)ZUF`V1Es6t!{li$@cEbuOu>Vo)oniO0l2el!{REYw6e=ws$P4@h|32 z+5B?u{5whezfzd{bEH^xi^*kmi_b0`6WV}({DcjN7-K76-aeMz4cdDO$Xf`4i+?N3 z^y3p`u{hPFyP?&kpQH@`{(wyJiGM!$&yfCmIs8YD^UtFBXIuQUE&kaSzq*Wnyv6@Z z4*0V%ROjzXH7X9``U<}Xh#(FT2_cAxhybO3lWwPi+~o^OX5eh1sKqP@>Y!-=LB2e7 z1Q0wb=1$%_7D$2g7F8Appx++?$xOJ+*Ygw{e|7cA)0ojpJk`YIp;;zA37Bq)ht#$K#{mG zA~*H(DgNJUBp<*c(G%pyhhK)F5F8XIcQ-pljt}z*Ja!on(Qf~#hRiD)kel=#DJekm ihnN0e@7{+ayk-SaP0p&jY@oLN2_<>;TZK38`~5dMcHlVx literal 13625 zcmeHuc{J4T`!`Za*-|NmLCBsZ`x=s6$UcPZyRi=j+4?B^zNRb*BZTZlWheVKOl2L6 zu?-D|=dFy-_dL%z&-p#iAI~|@IX~yjczeI!_jTX*bzk>=y{^}Fd9JOgOhHahPDDgR zq4H2shlq&8l8A`-EZI5Wj+|C>I`D^?y@GoV*&zqbuS4 zY0PQ&|QEP3rbwZx%#B=`CnKJ3mNH?|LU zL+~_>PS0H3VkL~b7*iyaX&3zI=cDV~62wVe5jm#D>*YnF2XI^8AK^EJu4@l-MXTzB zs;;A_+XI3>;e!%d?zP}_ZoEWxqLN&FvF{JJYnxX-RvABLI|3=`72XV{W=Ywh_=bz} z)h^15(h^^EYW|T`fvbO9mGFWFd3m?Qk4+5$qO_6NG(DgC4|I9#Qh}U$o#-cl(Y_k?;BML{cfR+1Lut)e{do8J3K%z0`b45+%3@%lnf^P}#;Dven43tL ziFc*R#;6zas)!PimTNI@`HYK7T>wzHzO|u>jfMsh7jR8RL>y^PL<(FH10QI~tU`0VkE^12EtD!^}DD-UaH7l@s!XPHDnJ0NP*UeD0e zP(xk9%GH_A;;E~pHJ`7u+i?>jDPIZT(%IV60_5xLRybwPZPYYjO7YOTLAp|*!)(|TXdpA#eR~OK+TnkHAFHdO} zmgA02fBufs+SmTyo?IX&(*h>QfBb}BfbTB z0#bk8|6iW`+v9(aY=slin-{80%NBvIjA+cTt z=@sq#s3?#~zQI{VJyK4Qe_poIBBFrKf^bJYq1*9!ULRvu* zx>$KS3q=sAy}iB1@-U~0ib{NyZT~qP(#6wp%JWh)GV;a8$6vmBl`Wk7>}c)05B1QG zMIzYyd^r(AJ#J1;-*s-A!l17fR5^(`%q8 zYY~f!geGzPfN}yX7FbS|^WP%=U+conlUfb1L+r{CcZq%=b7yB~x+CTlucXgf67w@A zFYT9a$xoI`3=C>5zIw1dlq|UP^Ydk0nFp%LT%5A_4@zcxD|+?=zapd_`whJIVM9A* zcrGIZwB~(trTn+IDq+YV+(IUWpxdWsf=`~v7K0mVc9{bn5R6jrf|y_wdVHf~8#QfU zmcCQ@p%JZbf?|RlsHmp!#G}p~Oux6EW#^=4Kx6F18D%|}sOzefwI-SaBVXJS52a3d zb4~JOFMQ(t(UI4gT6p-_#c^biw)I2h^XK<&Gc$i4otpRPOsc{^HpXl>Zt+dn`qz36R4(+JfLN8K*zVEtr-B>2C(t*JAlpj<&;R)+0k^f- zL1!Ki?=HG>YU3#+F_$cnfxFqJW83vS+@&`cdvds$_`vLHsk|w>Gv-fQ`%^djTIeQb zsTd?~(|>drRZr4Nf!((5GQC~ia_G}geiR%u_})T6l1Ci&Q_3Fkn|`9oHWp#)k9-iz z$mTd!mZAumNz}Tum2@u%LHhjp^Z0&)vZQ~ma!&#yqot$chAj5R+w^93zFo}e{g~-> zy0z7amCse+_jlDMDy^$Z-@9aqTNPen66gsl71Sx#VM7g8SCtx8v_cNbYG+u0nZ|p} zcd4{%GFVrmHU>hENy$<`*-achkdiLTq)u|olf}m%6-sUYqyWO_AfeR>$ z663Oeqy(2NZhn)Z>-eRRcORxx53_YA%RD{GJxOA+SPOqT^sh;yxR#qL1KTP6T!tZ+ zZ``mJ&6Nq9qy+mj%^n5}DAB3t=p;bz4Pl&3YCG$_Rtjc!Wqo(R9vfdhHs@3t;9eH; z1S{){3}$_1h~G2lKF`FH(ttrF&r7#|{icGMX>!&wOgaC%LO_Pu%whN~bJb$c<}458 zsUO+oJ2tBGO#X5r&Xc!w&9b;``?6@Vvs#{Z>ZFUgS2oR3GE8+}5|TpYNWoUe1+=L2 zU2YesrY4lNIAL#%!oenzSBf!QLrNTY3=;OKDwm323ZHP7-JVhp;VdvsNAQ5{0cD*x z{u=vVe$A=ytCr~38bvZIoL4I|zBfPlZLISpuS<%Fiwh?bO2NAjHc~dlP#J(DuY-4D z1zpzyigk-()U&oj5y;wH;pW2UrbFw-Mt5QIno94f2u@9mgT!J1jpc)>4i;UWE{|Vd zY?O=DP?g{-F1A%%^tU$E%$8tNj=5Dqi)m|Z6uAC#^$gSPIhO*?YT z({bwDo`Ot-oF3{|zSrJeQV2cdi=nbSoS|-KB{)tTFSQ*tWbXUZpjmfmf|0!f9sBsa zzI&(cixqIE{e)%uKXs?UtS!Ipq-C%%!(U$t^n6&)r6q_YdT)z_drldiuDu}nI%CBP zmeSLa1pzk%WIv1DBB}2>cbl){^Q9NmnWuoi7s)@b|nY$&xkTMKcyhd0l5I;!T|mpfpierLkT z#VZ{&ot2lvPb3(TiAih4c~{yAi!lFPa=9fkG2CbBP{XBzY>F2k6C!Q!QhDe^r zb235lWQ9XOw4kW7M$aCBPsYBk^$OHHJTpdr`OBgCGN9zn>VALQdR!VY>Y!bAyQr^;;uacOjm|pRq z9PwF-;zvz|t5dbI?X!LDec6&eUDhL)t!EIp#W%m5x=pwHSnQGTH@Bp{dxCB_=$~Jv zD{yGa39w9ias4oqn#&EvghZjrmC8t94W&-RqMPv(_{O0_+g?exskG=3{$n; z`E=~SE2{N_&eTFc|IW7cXz?=P=9-G_rk2@o_^aI^re0Zx@qHKz`$T z>+SwM-0$~J6YYbA&W<-kU0!&iC)tMBj?XXAY2Rq|%$;{(=@`5^q@Z)FKQ_5JaL-yI zg@UkPX>y8Bio!>Y?m4pmb9m*8PX0q0KaX)*6kihzDZ^=2YFO_KoE8liDtV0&an=>| zF8ACv(WoG?Vy>>DhBUiK|#vd zz92}OLpLtVIdjn`Q3GOgpsXd17ZQg&|xwtCOmdzm=KP9e<#H6}l}aE$cE zIS#F4baLeK>}Jh2BeNzI&=4+#i;^}GdQ3q}GrHPC@^Oc-PiQbege;S>2Uu?pfMQzNTtRlcQ+yqc;(aJ9{PU!UfMMkLpt2zz&#^ z&WC;Q(T4h*gWt1So2Vl0=?3fFwdu`6C`RqsIV`%S0Xpr>9?p~ippV;D-(I9BMb9Lo zV7WiV&B}euG0i#!s@Cb!(3CGSe)PHoJy-TD<5sH_k&joGy) zgA)KlO%%Cn0-I1wlk%@$vvc)@8msrZlDSjiml#r_wZqy@iJA*DKPSGIABB~nue zCPaIt8S5@Pv}{p1cB3@&!Y2Hjfv87swordn8KejfFV;2NENzgr6TixB`b&_C_@ii@ zIwos+XF!<=T7$yBU=saYwT91o+&v1nXnWu*l73+w4j}3UoVfRP+H{f2qd$v z$IoAIQana0Zl%Gy)Yf+{snq8&-1riZ?#qz7z8Hu2tbjt^wDy0n+VnN^=cm<_`xfHJ z9qgEB^6N*BHc|g1SK9V7PCRK%mE2wm^U7YlLaW=i1sQp4&^5kcRoRd=eYh>OfTgmz zBZLThM~Rl~>YxGQsDN+T(+xg}SavddU(=dZ)?(d#^18W%Xdy=SBF!9C(em!VV9k$X zfz3RROZ1bOdgdPP>NI#eOCE>@wTkT)I>CxP|GjOa2+illuq3geu5I-jVcP2JK1erMwDss05CI%ZxP4E2Cwi zP1290&=oVK%2#6I{wZv~{hh5fX$l@_f?IE+vc@zwdGy|U*&|hMXp+?@G*#=9YdV#$ zk|KYn$Z@n-SD9TS=MH+RHqpgrI}U)=ce@R2>m+p0}Y&jn7W$&q> z;AioR)Lg66)6~VS2SB zhhtMa#a%Tvmtp#9C8K5e0Zx85M4UcKo98m#k_ia=k`x<1>TGQ7rCR8WT`}hcyJ9TO zEC$REas9P(>p$CG^ZS4+eT$_$xHyv={!9Z4 zSjIOw3~Z9#2VAf;i(%U%K`wA{U2^=|6aBxi>kcU76@}&Uy@2sVk21e{Z6r0!{i|95 zICIBCWA?%3mqZk@`)X7frKp+bfKsJ5+L-pqp(s-A%#TJKWNvBT%}#jH-d@;f+2lCK z@5+Xl=1X4FlUN<04Ub}zMJ~V1&Yyx7t%j0gJSC71i>iy+Bh8KQK#A{xFZ#YpxJ1l* zzWqL}usE}LScc6M+SQ=FRQufTtsGxT&YhNn$`O}n!M3tyK7P$~9xCbWUW3M4tw@j4PyNy7KMu}c&A-cKHsJ9%qkBbcFezR zM34Fz9hxdYO%aPr0r>~UA2_~ARoioX+ZQa?SSfDHxXPv9;lY^d(^SpTEfvBnF)+jM zYFnN(kbjIwXm`0UN4k-!f3s>IN{98j?q@Wtzw(N>V@#=kz?FiGifR{|q~1QS9}yJY z+Lzt%;!&tyvH9qmRbX{cubuvIl4Rn<_}WjorZi;1W~{R-uL3wZZilAvi_(*~H;Oyf zpj4ppqi_>mfDz1dQ$w8j3yT-QpE~7vR$RiiG+WOe(0s4O$KJwySQSR*7W3z`h2h?` zSNuhIVg|vW1w_rpaH&J}yB&((UdyBR+5+dLr*MSG?K3X`(L;BJ+|gUoH4LPe^l1J- z^N=`NvgIOn1^B&>%qK|u<0}BX)9FDVRVV22$8F-!v_#`)^(Wx{(^)n->V{VtnVE!u zn&X)7L8-}Mt+P+LVL3BWVXe9O`Coo@HT;Vbf>BpFbrdzT#D1#b#m}9D1=Jn-a$8{w zo|$@7G4`@}|K{7)i~V1={7vUV}wK`FWBuqFOTRwQeoxhWW+O{0D0 zI%xLU1`lVhx3jvzNds_<0}!vW10Lm;hNQDV7i5o#@h#JP(w%@8x(tLw;9EDoTu~dy zy0kcauE30djipFpZe?6zlyUfn5dV_$0lGrO2od7h5Gf#9+5FPpdD0|U?gtP6eL{=T zp3Wl?2w$`UvR?eR2fr0DUpS6^8BNOwm6BNgVCGi*yvcApD6s{Ysf;VZSr@WE?5SXN2 zTb=Uqrs!ngG0oDXn>zN6cTA*NbD<|^Mcnq7iuCGI6SVtIJ%I0px5&#JtwQ>PQoGs8 z8wEA!@7eJffc>gpFbHXS`U*G9FAZ27CkeI|`{VhWf3q~SjmHoS>M8e+4$$ZdJg4yd zstIa5uPR`((_2x3rc?hs~Nu}UgW1F5V zKHWm~r8v9mj$S5eMn}l%!G_(Y!J>YAf+tVs+SvDs^=lWx50Y=RWh1y;XDfuZJvpPuKyjG>4>w+r%%7}fz?WJAuh(I` z{`-}%>u9ScVl30>{gXUlJ8kp&-6g*8i*za9UY5rL#AR0suWUEK@6Am-g2gW_*%ccJ zJvw)3iQly+pv}rnA$q~1yR3FRrxc*|tfAA*d&}Gnu!R@tf&pLdassXZKyWJco@gF! z{nGWU%#q0Z;fHgOqrTCCp zg9j7Xp&~6cOUsupir$|tO_mUG`#FJKhLk&x5ZfNotUv-NJ{N{lvYh?(6qD1mHl2gq zxUk{zd!0r_LnApVO4ij8GZUEbq{g;-$!!rn-Js!We6~T7Po(dX!A^~|g%Lx)$jMnO z_rvs}n2VjxnFN`a0A`U@gcb-J_GU^VxAl}%u?{2o8kwUud}EQ77Hzq-+f+<4JSMd+ z$;QuT>EGkbezWD=7BNaE1G)lwk0-r zqbpbZ5uJ$~XxqcTb`RKH78P+jHYz+keBx&ZO`CGpI*0N@#h+xHk6woz1nxQNyncG2 z*Z{*NNmV+K!5&qtd@32>a#yYh=tK*OSkv`?^ya3ZRS!2%+ zkY$z3nCdaJdx`telX!&)N|Cmt$km|~fN@9#m@Yr-$!-tq2v%xwiE=u3Kqy0oT3M)Ns^?p}u$#x}wULFRiA;FXktcyzI;v#392 zg=P!x1#lFKuu9|BwzgjFx!kP=!L`_zyt(d);4up=3IqDeN|WvBC%CJ^RV8Pp2rOYM zHIRalOx4hSr^h*vr*cZaec~jEVa)I(zl=RiQ+iw`^Rydu*V0(Har>qP_V$7Etyvr!VgQD=fdT zP@?k%0bm5Ton>KRxh)}K{LeLBuAe`D#*~$@K1+*u|Li=KYTo^D9y5R?rFfEtWBNDm z*c7bhQ)l}6NKI3Q8DKzD)6%ZDM+gAPk2lJ(#_u~i9u6p$gz)gZxSoQ~Wq_Vc4oEHu z%JcB@_CAf$15&p%y;rTflH4)g!>-Eb1eAu>6oEu7^#f|iFp?tquckj$kkEhGR*t-l zt<{8hEdS~N71{yRZJuaPG3?&(#lQA?{-WLDOPdP}kB6kcLiL5pV1>IIreuIDYHrI_E+kg=L?Mi9;m8 z56l?_gHmkolb>1;$uUv7@XhEHo8$mAw;y{x5n+u%cY!4C6PGLk$xHTM6LEt~6xLw$ zE#?MCG#!8E`^8qX5q?Xb)?Z2fVxL1L{um}{%O9>@dvw0rpaWpNQim2AxXK$hRZ)n7 zM0}sBdAA8bo8FL^6F~VZ8z{s0lXvl}(+vg-{pLTKI)h?3=~$cAnz@H|^ANoRLpI6OH} zi4Htx?~D&B26$lqQEXdd-BvI46orQoRuMIb^B%xGS(^_Dq3Y^4394yFctF$!a((EU zxS4`J_5?ACIEAeO30VBWlxs_!R^o+O^El|*q0m8{=*&!YX6ar)G8kOvQGgiPaw#_1 z=i1*wK>F2;jWecGGcp{yr>Y%Ow=tsHCp7D1AjGCWc_mY%cIv|cpsR-H-IdyXddV70 zTsvc+DZJD~%YVi%6-cJCgT*sNoD%?=LuI6Eq~OuBZ#8BP>z~g@e+5VE-`e$eu@0)m zNum(N(R$@6cSMn%C2zxb6NV03q_#?zv^S9ExqMjoJN}` zi0=mv`kQb=Cd**gzvR_ii`?6t7vYN3+>hTSeQ*fOlsf#KxVdR=9&gniW4(7VT_CVf zYJc_44dLH3MwQ!VfP7lb2j{7o2yW@$Gf+(Y$KPUgaC_Pt0JVuPHm$2nchnyXYOYfD zIi_K(0mse$H1H?q5gLX!(JwbcUr?nVZ8pS)-yT)Jf=N8O? zial9*6`}z{SZKwLINFJoo^ZV$J5I*+%wzfavx8O2{KY1tI>dtwNXj`n($uXt*z@Z6#|IVP7jJ3Qo~hnCiVVwN4cZ(t2OAUnud&f z&TE3qo!EX@vvqB{nP@7?t0K2*uYbB}%}XOgcw%kP|7*Lx8-@SVs738*8~;^PwbX#6 z37ghjX_xL4-W=yOD#tN+)&7TDm|OtSPbeV9evg^BHfXsA)@%wH+&5Jk!?YZ^)Rq}z z!?~H86IKAIpJSy?mEia}G#u4+m+F4LNq=#VGUJU^cMrOEGqfC0M59>yta8j?JF9i7Rj=X>s`}BSN9E0Xs_@u;pQ(QWa$QbTt zB-7LG6!U!TylsZ~z2IQzM1@sk;HM{T5flsKylcHWrM~V{nR-qBUi~5%DuC_hn!Z)> z_U#?aw9ek^!5jcimQ2h@pp&`4^&j*eKBP|cS6ZAzt-~p$Gi0eb!OO5kU(KDpINkJ{ zqE5onQK=mOsk`hI(b0$Wp2Q+{R^%sTntL|7iy1F0%rs-^Lp1?c43s@33~+$ijQ$*= zZu!A|G#9J=EK#%}tP}W>q{BApCvq^HFHYGeN>Jq*-|t9@>&B`{xbx%C0W2+h!0#$y zNAIRv<1o1(+&rC8wL`M0517{8GDtWHwK-y74kgL$1FsA;75Tk$Px$b$BD^PEa!MxI zUMHX?b@*<++Q4fiHul1-Mcd)Gw)y&H85220pIi4irq1-n+_ykwHdWrZh6YL?5YYZW z!TnzG!CEcZ=dsa=H(ed#bp=p6);zixg)>FF(w>;0NY9m--kj8_L(lO2ii8Trz516x zT}5}?=h&{Bu009zv6pJvhG=M*w~n6u&TGp9+_Bs`d6*^H&?wn+*h}H@B}eXKWQn`T zZT`2+2B^z<-SjZLwM_|{F6{Y{4qR>|wD0yto@Mr;Vs|P(e>GpZHG4yO@=-w3WY4{f zC(z_CPr0-EpGJ^=l`dZfawL^o?alj#Cb>vkeW0SiWGt$cW^lSkt-IWMh2La8M$#o! zA(AS+4&t2e+#qsHc?R?6rlsB4i>X>&W3I&$n~SwQkECL%KC)V} za|OE=82dt0OUz}erkAoCMeEny18qBZX*CsX{fqXOHGc1CGVeY{ZuB6+X24N#=gv%;?#t@&f@{abnGuN>T!O*w1dbMBU{+!V6yOkh(( z-_6@$48&t$9#UH7-tTA;O~BP>$D(vKj+-Jb2@e)HhnN-4sTK7xY+Y&nuoQA;znfjR zkWwR~&UVLP?{+aIbgvT0=t+6_hD!5ou}sg#Ix7`TYhMVb(lMgJaZ-0Nt1~FPRxX9c zx>&NCN2h<{P&h|X4Pz20R9>A=EmCdrH<<9smMz@MfxG%YV|dMT*+{WaGjJd*_JKD{ z|EO*;r@?w-Kf1sryCh$AglqHpjkVzdzpVvtN@EzU2qL=Amj0lF+HZA3c{;NvG2JWQ zs)*9Vq+4I7)KCD*3qC?0EvooY_N>dVyn}S_?cRK%kUiP}oMt&WHJ2i%M!cOTi>7Y5 zM9g@vO~$*JcykK~2zZ-iHe22Yv$V3#4R)nYe&5XUlQjZG??^Q5)fzmViz>3-oTJlt z&&`sokv?SG$Olv}Rq#p{;X_P?N+8D7E^Jmk2Kqn_sD@(BA7)_c9*%HnmXjl6ptC@s}JTS*QwVobAmBXeO{x`?-J4N~(? z;nh`c{iKf{4YkrY7P1{2iksa1jD#-%-kx)c#bYWL{aj|vaJ#Qz^EYj*O1hx+YHUs+ zm1*PlVE1L4!}h-clbk$xm?<^)!=5KiJ7u*99-+eiIAuo0+Z6P|?~jnr{P;75g|+OL zqYa<=**lw22rf@7&Ox`9LXh(I=hsG@^xk$LtpZMp#3FvwR`vuE9ylBVt zU)sd&GdZaO^~L972Bz;}76`GE>I~9qAl!VL8QVoDd%1fNh)3(NZzWG(2)25b7PC@$ z60j1H_|dre=Kzcwq$O$u2sC|5vUbTGsHok)>Z9r9Hg^%MmdwSr_gD#t?P`7ZyrCRLMnxig*!zD%<{$U3 ze8)JBf(p&ui;&cBkj1ORUjeyNQi!0Ym>~YSfj7#%yG(@=BeAEf@|lwmb28%Yzs&Hq zTFn{!Yv-a+U4BCJbX*B5lIYC11nzd_x9Gw*uyH1 zgL9KqC?TF#2DEi+T1t=dM8tg{hP&2P*4;#)xZeOFTZ{`M7a_{a;{gch`O*0qLYz84 zLMosvN|k&fF+>~aGTdXu!}TQU`(X!A^lvgFyG|s^-2uA1U*}aPdNL2U4@B}k1HB6K zClWzPK$m%ldc@6>L5l&UP76y5c^)Scsk;D*TiXS^b`p=0-U1Q`5YH`b@e_&vt%kpO zo&O7K_|5R8wY3$fn;97pRU)hiQOLpN@22^kJ_lcM! z