diff options
Diffstat (limited to 'config')
302 files changed, 8818 insertions, 454 deletions
diff --git a/config/application.rb b/config/application.rb index d28967f2966..03c8eadc4b0 100644 --- a/config/application.rb +++ b/config/application.rb @@ -264,6 +264,7 @@ module Gitlab config.assets.precompile << "page_bundles/cycle_analytics.css" config.assets.precompile << "page_bundles/dashboard_projects.css" config.assets.precompile << "page_bundles/dev_ops_reports.css" + config.assets.precompile << "page_bundles/editor.css" config.assets.precompile << "page_bundles/environments.css" config.assets.precompile << "page_bundles/epics.css" config.assets.precompile << "page_bundles/error_tracking_details.css" @@ -292,10 +293,12 @@ module Gitlab config.assets.precompile << "page_bundles/productivity_analytics.css" config.assets.precompile << "page_bundles/profile.css" config.assets.precompile << "page_bundles/profile_two_factor_auth.css" + config.assets.precompile << "page_bundles/profiles/preferences.css" config.assets.precompile << "page_bundles/project.css" config.assets.precompile << "page_bundles/projects_edit.css" config.assets.precompile << "page_bundles/reports.css" config.assets.precompile << "page_bundles/roadmap.css" + config.assets.precompile << "page_bundles/requirements.css" config.assets.precompile << "page_bundles/runner_details.css" config.assets.precompile << "page_bundles/security_dashboard.css" config.assets.precompile << "page_bundles/security_discover.css" diff --git a/config/audit_events/types/type_schema.json b/config/audit_events/types/type_schema.json new file mode 100644 index 00000000000..0d5d79bc4c4 --- /dev/null +++ b/config/audit_events/types/type_schema.json @@ -0,0 +1,74 @@ +{ + "$schema": "http://json-schema.org/draft-06/schema#", + "$id": "https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/audit_events/types/type_schema.json", + "type": "object", + "additionalProperties": false, + "properties": { + "name": { + "type": "string", + "description": "Unique identifying name for the type of audit event" + }, + "description": { + "type": "string", + "description": "A human-readable description of how this event is triggered" + }, + "introduced_by_issue": { + "type": "string", + "format": "uri", + "description": "URL to GitLab issue that added this type of audit event", + "qt-uri-protocols": [ + "https" + ] + }, + "introduced_by_mr": { + "type": "string", + "format": "uri", + "description": "URL to GitLab merge request that added this type of audit event", + "qt-uri-protocols": [ + "https" + ] + }, + "group": { + "type": "string", + "description": "Name of the group that introduced this audit event. For example, manage::compliance" + }, + "milestone": { + "type": "string", + "description": "Milestone that introduced this audit event type. For example, 15.8", + "pattern": "^[0-9]+\\.[0-9]+$" + }, + "saved_to_database": { + "type": "boolean", + "description": "Indicate whether to persist events to database and JSON logs" + }, + "streamed": { + "type": "boolean", + "description": "Indicate that events should be streamed to external services (if configured)" + } + }, + "required": [ + "description", + "group", + "introduced_by_issue", + "introduced_by_mr", + "milestone", + "name", + "saved_to_database", + "streamed" + ], + "not": { + "properties": { + "saved_to_database": { + "enum": [ + false + ] + }, + "streamed": { + "enum": [ + false + ] + } + } + }, + "title": "GitLabAuditEventType" +} diff --git a/config/dependency_decisions.yml b/config/dependency_decisions.yml index 22dd75fc64d..b8689c1c461 100644 --- a/config/dependency_decisions.yml +++ b/config/dependency_decisions.yml @@ -145,12 +145,6 @@ :versions: [] :when: 2017-04-05 10:38:46.275721000 Z - - :approve - - jszip-utils - - :who: Phil Hughes - :why: https://github.com/Stuk/jszip-utils/blob/master/LICENSE.markdown - :versions: [] - :when: 2017-04-05 10:39:32.676232000 Z -- - :approve - pako - :who: Phil Hughes :why: https://github.com/nodeca/pako/blob/master/LICENSE diff --git a/config/environments/development.rb b/config/environments/development.rb index d475a2a6642..5e67ed71954 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -50,6 +50,8 @@ Rails.application.configure do # Push preview path now to prevent FrozenError during view_component's initialzer config.autoload_paths.push("#{config.root}/spec/components/previews") + config.lookbook.page_paths = ["#{config.root}/spec/components/docs"] + # Adds additional error checking when serving assets at runtime. # Checks for improperly declared sprockets dependencies. # Raises helpful error messages. @@ -61,7 +63,7 @@ Rails.application.configure do config.action_mailer.raise_delivery_errors = true # Don't make a mess when bootstrapping a development environment config.action_mailer.perform_deliveries = (ENV['BOOTSTRAP'] != '1') - config.action_mailer.preview_path = "#{Rails.root}{/ee,}/app/mailers/previews" + config.action_mailer.preview_path = GitlabEdition.path_glob('app/mailers/previews') config.eager_load = false diff --git a/config/environments/test.rb b/config/environments/test.rb index f4d3d2ddfda..41413c55ba4 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -48,6 +48,8 @@ Rails.application.configure do # ActionMailer::Base.deliveries array. config.action_mailer.delivery_method = :test + config.action_mailer.preview_path = GitlabEdition.path_glob('app/mailers/previews') + # Print deprecation notices to the stderr config.active_support.deprecation = :stderr diff --git a/config/events/1662373051_Projects__GoogleCloud__ConfigurationController_error_invalid_user.yml b/config/events/1662373051_Projects__GoogleCloud__ConfigurationController_error_invalid_user.yml new file mode 100644 index 00000000000..5a71e2df485 --- /dev/null +++ b/config/events/1662373051_Projects__GoogleCloud__ConfigurationController_error_invalid_user.yml @@ -0,0 +1,26 @@ +--- +description: Invalid or unauthorized user +category: Projects::GoogleCloud::ConfigurationController +action: error_invalid_user +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373057_Projects__GoogleCloud__ConfigurationController_error_google_oauth2_not_enabled.yml b/config/events/1662373057_Projects__GoogleCloud__ConfigurationController_error_google_oauth2_not_enabled.yml new file mode 100644 index 00000000000..483225e0def --- /dev/null +++ b/config/events/1662373057_Projects__GoogleCloud__ConfigurationController_error_google_oauth2_not_enabled.yml @@ -0,0 +1,26 @@ +--- +description: Google OAuth2 not enabled on GitLab instance +category: Projects::GoogleCloud::ConfigurationController +action: error_google_oauth2_not_enabled +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373062_Projects__GoogleCloud__ConfigurationController_error_feature_flag_not_enabled.yml b/config/events/1662373062_Projects__GoogleCloud__ConfigurationController_error_feature_flag_not_enabled.yml new file mode 100644 index 00000000000..b24a326ab30 --- /dev/null +++ b/config/events/1662373062_Projects__GoogleCloud__ConfigurationController_error_feature_flag_not_enabled.yml @@ -0,0 +1,26 @@ +--- +description: Feature flag not enabled on the GitLab instance +category: Projects::GoogleCloud::ConfigurationController +action: error_feature_flag_not_enabled +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373069_Projects__GoogleCloud__ConfigurationController_render_page.yml b/config/events/1662373069_Projects__GoogleCloud__ConfigurationController_render_page.yml new file mode 100644 index 00000000000..21083a7596b --- /dev/null +++ b/config/events/1662373069_Projects__GoogleCloud__ConfigurationController_render_page.yml @@ -0,0 +1,26 @@ +--- +description: Configuration page rendered +category: Projects::GoogleCloud::ConfigurationController +action: render_page +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373075_Projects__GoogleCloud__ServiceAccountsController_error_invalid_user.yml b/config/events/1662373075_Projects__GoogleCloud__ServiceAccountsController_error_invalid_user.yml new file mode 100644 index 00000000000..850b8e81c0b --- /dev/null +++ b/config/events/1662373075_Projects__GoogleCloud__ServiceAccountsController_error_invalid_user.yml @@ -0,0 +1,26 @@ +--- +description: Invalid or unauthorized user +category: Projects::GoogleCloud::ServiceAccountsController +action: error_invalid_user +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373081_Projects__GoogleCloud__ServiceAccountsController_error_google_oauth2_not_enabled.yml b/config/events/1662373081_Projects__GoogleCloud__ServiceAccountsController_error_google_oauth2_not_enabled.yml new file mode 100644 index 00000000000..726ba6af7aa --- /dev/null +++ b/config/events/1662373081_Projects__GoogleCloud__ServiceAccountsController_error_google_oauth2_not_enabled.yml @@ -0,0 +1,26 @@ +--- +description: Google OAuth2 not enabled on GitLab instance +category: Projects::GoogleCloud::ServiceAccountsController +action: error_google_oauth2_not_enabled +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373087_Projects__GoogleCloud__ServiceAccountsController_error_feature_flag_not_enabled.yml b/config/events/1662373087_Projects__GoogleCloud__ServiceAccountsController_error_feature_flag_not_enabled.yml new file mode 100644 index 00000000000..713e1a35584 --- /dev/null +++ b/config/events/1662373087_Projects__GoogleCloud__ServiceAccountsController_error_feature_flag_not_enabled.yml @@ -0,0 +1,26 @@ +--- +description: Feature flag not enabled on the GitLab instance +category: Projects::GoogleCloud::ServiceAccountsController +action: error_feature_flag_not_enabled +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373092_Projects__GoogleCloud__ServiceAccountsController_render_form.yml b/config/events/1662373092_Projects__GoogleCloud__ServiceAccountsController_render_form.yml new file mode 100644 index 00000000000..55e0c87dd6c --- /dev/null +++ b/config/events/1662373092_Projects__GoogleCloud__ServiceAccountsController_render_form.yml @@ -0,0 +1,26 @@ +--- +description: Service account form rendered +category: Projects::GoogleCloud::ServiceAccountsController +action: render_form +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373098_Projects__GoogleCloud__ServiceAccountsController_error_no_gcp_projects.yml b/config/events/1662373098_Projects__GoogleCloud__ServiceAccountsController_error_no_gcp_projects.yml new file mode 100644 index 00000000000..a57df38aa6e --- /dev/null +++ b/config/events/1662373098_Projects__GoogleCloud__ServiceAccountsController_error_no_gcp_projects.yml @@ -0,0 +1,26 @@ +--- +description: No GCP projects found for user +category: Projects::GoogleCloud::ServiceAccountsController +action: error_no_gcp_projects +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373103_Projects__GoogleCloud__ServiceAccountsController_create_service_account.yml b/config/events/1662373103_Projects__GoogleCloud__ServiceAccountsController_create_service_account.yml new file mode 100644 index 00000000000..e147eaea44c --- /dev/null +++ b/config/events/1662373103_Projects__GoogleCloud__ServiceAccountsController_create_service_account.yml @@ -0,0 +1,26 @@ +--- +description: Service account created +category: Projects::GoogleCloud::ServiceAccountsController +action: create_service_account +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373109_Projects__GoogleCloud__ServiceAccountsController_error_google_api.yml b/config/events/1662373109_Projects__GoogleCloud__ServiceAccountsController_error_google_api.yml new file mode 100644 index 00000000000..f5404c0b318 --- /dev/null +++ b/config/events/1662373109_Projects__GoogleCloud__ServiceAccountsController_error_google_api.yml @@ -0,0 +1,26 @@ +--- +description: Google API error +category: Projects::GoogleCloud::ServiceAccountsController +action: error_google_api +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373114_Projects__GoogleCloud__GcpRegionsController_error_invalid_user.yml b/config/events/1662373114_Projects__GoogleCloud__GcpRegionsController_error_invalid_user.yml new file mode 100644 index 00000000000..e190dc68e05 --- /dev/null +++ b/config/events/1662373114_Projects__GoogleCloud__GcpRegionsController_error_invalid_user.yml @@ -0,0 +1,26 @@ +--- +description: Invalid or unauthorized user +category: Projects::GoogleCloud::GcpRegionsController +action: error_invalid_user +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373120_Projects__GoogleCloud__GcpRegionsController_error_google_oauth2_not_enabled.yml b/config/events/1662373120_Projects__GoogleCloud__GcpRegionsController_error_google_oauth2_not_enabled.yml new file mode 100644 index 00000000000..4ceb9567a31 --- /dev/null +++ b/config/events/1662373120_Projects__GoogleCloud__GcpRegionsController_error_google_oauth2_not_enabled.yml @@ -0,0 +1,26 @@ +--- +description: Google OAuth2 not enabled on GitLab instance +category: Projects::GoogleCloud::GcpRegionsController +action: error_google_oauth2_not_enabled +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373125_Projects__GoogleCloud__GcpRegionsController_error_feature_flag_not_enabled.yml b/config/events/1662373125_Projects__GoogleCloud__GcpRegionsController_error_feature_flag_not_enabled.yml new file mode 100644 index 00000000000..c7b9c4ac2f6 --- /dev/null +++ b/config/events/1662373125_Projects__GoogleCloud__GcpRegionsController_error_feature_flag_not_enabled.yml @@ -0,0 +1,26 @@ +--- +description: Feature flag not enabled on the GitLab instance +category: Projects::GoogleCloud::GcpRegionsController +action: error_feature_flag_not_enabled +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373131_Projects__GoogleCloud__GcpRegionsController_render_form.yml b/config/events/1662373131_Projects__GoogleCloud__GcpRegionsController_render_form.yml new file mode 100644 index 00000000000..227e0117e84 --- /dev/null +++ b/config/events/1662373131_Projects__GoogleCloud__GcpRegionsController_render_form.yml @@ -0,0 +1,26 @@ +--- +description: GCP regions configuration form rendered +category: Projects::GoogleCloud::GcpRegionsController +action: render_form +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373136_Projects__GoogleCloud__GcpRegionsController_configure_region.yml b/config/events/1662373136_Projects__GoogleCloud__GcpRegionsController_configure_region.yml new file mode 100644 index 00000000000..f301c068188 --- /dev/null +++ b/config/events/1662373136_Projects__GoogleCloud__GcpRegionsController_configure_region.yml @@ -0,0 +1,26 @@ +--- +description: GCP region configured +category: Projects::GoogleCloud::GcpRegionsController +action: configure_region +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373142_Projects__GoogleCloud__GcpRegionsController_error_create.yml b/config/events/1662373142_Projects__GoogleCloud__GcpRegionsController_error_create.yml new file mode 100644 index 00000000000..67bbc1a7465 --- /dev/null +++ b/config/events/1662373142_Projects__GoogleCloud__GcpRegionsController_error_create.yml @@ -0,0 +1,26 @@ +--- +description: Failed to configure GCP region +category: Projects::GoogleCloud::GcpRegionsController +action: error_create +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373147_Projects__GoogleCloud__RevokeOauthController_error_invalid_user.yml b/config/events/1662373147_Projects__GoogleCloud__RevokeOauthController_error_invalid_user.yml new file mode 100644 index 00000000000..a316efda189 --- /dev/null +++ b/config/events/1662373147_Projects__GoogleCloud__RevokeOauthController_error_invalid_user.yml @@ -0,0 +1,26 @@ +--- +description: Invalid or unauthorized user +category: Projects::GoogleCloud::RevokeOauthController +action: error_invalid_user +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373153_Projects__GoogleCloud__RevokeOauthController_error_google_oauth2_not_enabled.yml b/config/events/1662373153_Projects__GoogleCloud__RevokeOauthController_error_google_oauth2_not_enabled.yml new file mode 100644 index 00000000000..fc2bf9a5bcd --- /dev/null +++ b/config/events/1662373153_Projects__GoogleCloud__RevokeOauthController_error_google_oauth2_not_enabled.yml @@ -0,0 +1,26 @@ +--- +description: Google OAuth2 not enabled on GitLab instance +category: Projects::GoogleCloud::RevokeOauthController +action: error_google_oauth2_not_enabled +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373158_Projects__GoogleCloud__RevokeOauthController_error_feature_flag_not_enabled.yml b/config/events/1662373158_Projects__GoogleCloud__RevokeOauthController_error_feature_flag_not_enabled.yml new file mode 100644 index 00000000000..33fdb94c3d8 --- /dev/null +++ b/config/events/1662373158_Projects__GoogleCloud__RevokeOauthController_error_feature_flag_not_enabled.yml @@ -0,0 +1,26 @@ +--- +description: Feature flag not enabled on the GitLab instance +category: Projects::GoogleCloud::RevokeOauthController +action: error_feature_flag_not_enabled +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373164_Projects__GoogleCloud__RevokeOauthController_revoke_oauth.yml b/config/events/1662373164_Projects__GoogleCloud__RevokeOauthController_revoke_oauth.yml new file mode 100644 index 00000000000..a621d57271a --- /dev/null +++ b/config/events/1662373164_Projects__GoogleCloud__RevokeOauthController_revoke_oauth.yml @@ -0,0 +1,26 @@ +--- +description: OAuth token revoked +category: Projects::GoogleCloud::RevokeOauthController +action: revoke_oauth +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373170_Projects__GoogleCloud__DeploymentsController_error_invalid_user.yml b/config/events/1662373170_Projects__GoogleCloud__DeploymentsController_error_invalid_user.yml new file mode 100644 index 00000000000..4543251dd08 --- /dev/null +++ b/config/events/1662373170_Projects__GoogleCloud__DeploymentsController_error_invalid_user.yml @@ -0,0 +1,26 @@ +--- +description: Invalid or unauthorized user +category: Projects::GoogleCloud::DeploymentsController +action: error_invalid_user +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373175_Projects__GoogleCloud__DeploymentsController_error_google_oauth2_not_enabled.yml b/config/events/1662373175_Projects__GoogleCloud__DeploymentsController_error_google_oauth2_not_enabled.yml new file mode 100644 index 00000000000..119db94c828 --- /dev/null +++ b/config/events/1662373175_Projects__GoogleCloud__DeploymentsController_error_google_oauth2_not_enabled.yml @@ -0,0 +1,26 @@ +--- +description: Google OAuth2 not enabled on GitLab instance +category: Projects::GoogleCloud::DeploymentsController +action: error_google_oauth2_not_enabled +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373181_Projects__GoogleCloud__DeploymentsController_error_feature_flag_not_enabled.yml b/config/events/1662373181_Projects__GoogleCloud__DeploymentsController_error_feature_flag_not_enabled.yml new file mode 100644 index 00000000000..1d4ba496e82 --- /dev/null +++ b/config/events/1662373181_Projects__GoogleCloud__DeploymentsController_error_feature_flag_not_enabled.yml @@ -0,0 +1,26 @@ +--- +description: Feature flag not enabled on the GitLab instance +category: Projects::GoogleCloud::DeploymentsController +action: error_feature_flag_not_enabled +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373187_Projects__GoogleCloud__DeploymentsController_render_page.yml b/config/events/1662373187_Projects__GoogleCloud__DeploymentsController_render_page.yml new file mode 100644 index 00000000000..0335988d5c5 --- /dev/null +++ b/config/events/1662373187_Projects__GoogleCloud__DeploymentsController_render_page.yml @@ -0,0 +1,26 @@ +--- +description: Deployments page rendered +category: Projects::GoogleCloud::DeploymentsController +action: render_page +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373192_Projects__GoogleCloud__DeploymentsController_generate_cloudrun_pipeline.yml b/config/events/1662373192_Projects__GoogleCloud__DeploymentsController_generate_cloudrun_pipeline.yml new file mode 100644 index 00000000000..8e3920015a2 --- /dev/null +++ b/config/events/1662373192_Projects__GoogleCloud__DeploymentsController_generate_cloudrun_pipeline.yml @@ -0,0 +1,26 @@ +--- +description: Cloud Run pipeline generated +category: Projects::GoogleCloud::DeploymentsController +action: generate_cloudrun_pipeline +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373198_Projects__GoogleCloud__DeploymentsController_error_enable_cloudrun_services.yml b/config/events/1662373198_Projects__GoogleCloud__DeploymentsController_error_enable_cloudrun_services.yml new file mode 100644 index 00000000000..4a3fdd48a0d --- /dev/null +++ b/config/events/1662373198_Projects__GoogleCloud__DeploymentsController_error_enable_cloudrun_services.yml @@ -0,0 +1,26 @@ +--- +description: Failed to enable Cloud Run services +category: Projects::GoogleCloud::DeploymentsController +action: error_enable_cloudrun_services +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373204_Projects__GoogleCloud__DeploymentsController_error_generate_cloudrun_pipeline.yml b/config/events/1662373204_Projects__GoogleCloud__DeploymentsController_error_generate_cloudrun_pipeline.yml new file mode 100644 index 00000000000..ecf2ef4ae37 --- /dev/null +++ b/config/events/1662373204_Projects__GoogleCloud__DeploymentsController_error_generate_cloudrun_pipeline.yml @@ -0,0 +1,26 @@ +--- +description: Failed to enable Cloud Run services +category: Projects::GoogleCloud::DeploymentsController +action: error_generate_cloudrun_pipeline +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373209_Projects__GoogleCloud__DeploymentsController_error_google_api.yml b/config/events/1662373209_Projects__GoogleCloud__DeploymentsController_error_google_api.yml new file mode 100644 index 00000000000..81e7a881b5a --- /dev/null +++ b/config/events/1662373209_Projects__GoogleCloud__DeploymentsController_error_google_api.yml @@ -0,0 +1,26 @@ +--- +description: Google API error +category: Projects::GoogleCloud::DeploymentsController +action: error_google_api +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373215_Projects__GoogleCloud__DatabasesController_error_invalid_user.yml b/config/events/1662373215_Projects__GoogleCloud__DatabasesController_error_invalid_user.yml new file mode 100644 index 00000000000..21734eb875f --- /dev/null +++ b/config/events/1662373215_Projects__GoogleCloud__DatabasesController_error_invalid_user.yml @@ -0,0 +1,26 @@ +--- +description: Invalid or unauthorized user +category: Projects::GoogleCloud::DatabasesController +action: error_invalid_user +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373220_Projects__GoogleCloud__DatabasesController_error_google_oauth2_not_enabled.yml b/config/events/1662373220_Projects__GoogleCloud__DatabasesController_error_google_oauth2_not_enabled.yml new file mode 100644 index 00000000000..b9a4e3f2c7d --- /dev/null +++ b/config/events/1662373220_Projects__GoogleCloud__DatabasesController_error_google_oauth2_not_enabled.yml @@ -0,0 +1,26 @@ +--- +description: Google OAuth2 not enabled on GitLab instance +category: Projects::GoogleCloud::DatabasesController +action: error_google_oauth2_not_enabled +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373226_Projects__GoogleCloud__DatabasesController_error_feature_flag_not_enabled.yml b/config/events/1662373226_Projects__GoogleCloud__DatabasesController_error_feature_flag_not_enabled.yml new file mode 100644 index 00000000000..04c03b87dd3 --- /dev/null +++ b/config/events/1662373226_Projects__GoogleCloud__DatabasesController_error_feature_flag_not_enabled.yml @@ -0,0 +1,26 @@ +--- +description: Feature flag not enabled on the GitLab instance +category: Projects::GoogleCloud::DatabasesController +action: error_feature_flag_not_enabled +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373232_Projects__GoogleCloud__DatabasesController_render_page.yml b/config/events/1662373232_Projects__GoogleCloud__DatabasesController_render_page.yml new file mode 100644 index 00000000000..b5bf9853e44 --- /dev/null +++ b/config/events/1662373232_Projects__GoogleCloud__DatabasesController_render_page.yml @@ -0,0 +1,26 @@ +--- +description: Databases page rendered +category: Projects::GoogleCloud::DatabasesController +action: render_page +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373237_Projects__GoogleCloud__DatabasesController_render_cloudsql_form.yml b/config/events/1662373237_Projects__GoogleCloud__DatabasesController_render_cloudsql_form.yml new file mode 100644 index 00000000000..5fab18d965d --- /dev/null +++ b/config/events/1662373237_Projects__GoogleCloud__DatabasesController_render_cloudsql_form.yml @@ -0,0 +1,26 @@ +--- +description: Cloud SQL form rendered +category: Projects::GoogleCloud::DatabasesController +action: render_cloudsql_form +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373243_Projects__GoogleCloud__DatabasesController_create_cloudsql_instance.yml b/config/events/1662373243_Projects__GoogleCloud__DatabasesController_create_cloudsql_instance.yml new file mode 100644 index 00000000000..3f5a2b5d8ba --- /dev/null +++ b/config/events/1662373243_Projects__GoogleCloud__DatabasesController_create_cloudsql_instance.yml @@ -0,0 +1,26 @@ +--- +description: Cloud SQL instance created +category: Projects::GoogleCloud::DatabasesController +action: create_cloudsql_instance +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373249_Projects__GoogleCloud__DatabasesController_error_enable_cloudsql_services.yml b/config/events/1662373249_Projects__GoogleCloud__DatabasesController_error_enable_cloudsql_services.yml new file mode 100644 index 00000000000..a6fb46df4b8 --- /dev/null +++ b/config/events/1662373249_Projects__GoogleCloud__DatabasesController_error_enable_cloudsql_services.yml @@ -0,0 +1,26 @@ +--- +description: Error enabling Cloud SQL services +category: Projects::GoogleCloud::DatabasesController +action: error_enable_cloudsql_services +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/events/1662373254_Projects__GoogleCloud__DatabasesController_error_create_cloudsql_instance.yml b/config/events/1662373254_Projects__GoogleCloud__DatabasesController_error_create_cloudsql_instance.yml new file mode 100644 index 00000000000..df9e28fabf5 --- /dev/null +++ b/config/events/1662373254_Projects__GoogleCloud__DatabasesController_error_create_cloudsql_instance.yml @@ -0,0 +1,26 @@ +--- +description: Error creating Cloud SQL instance +category: Projects::GoogleCloud::DatabasesController +action: error_create_cloudsql_instance +label_description: +property_description: +value_description: +extra_properties: +identifiers: +- project +- user +- namespace +product_section: google_cloud +product_stage: configure +product_group: group::incubation +product_category: cloud_seed +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683" +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate + diff --git a/config/feature_categories.yml b/config/feature_categories.yml index 9b5f3de3f75..ca27ece9196 100644 --- a/config/feature_categories.yml +++ b/config/feature_categories.yml @@ -13,7 +13,6 @@ - application_performance - attack_emulation - audit_events -- audit_reports - authentication_and_authorization - auto_devops - backup_restore @@ -116,7 +115,7 @@ - secret_detection - secrets_management - security_benchmarking -- security_orchestration +- security_policy_management - service_desk - service_ping - snippets diff --git a/config/feature_flags/development/add_timing_to_certain_cache_actions.yml b/config/feature_flags/development/add_timing_to_certain_cache_actions.yml new file mode 100644 index 00000000000..c03e49dae8d --- /dev/null +++ b/config/feature_flags/development/add_timing_to_certain_cache_actions.yml @@ -0,0 +1,8 @@ +--- +name: add_timing_to_certain_cache_actions +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/94966 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371657 +milestone: '15.4' +type: development +group: group::code review +default_enabled: false diff --git a/config/feature_flags/development/always_async_project_authorizations_refresh.yml b/config/feature_flags/development/always_async_project_authorizations_refresh.yml index 233be4d930e..f5ec2473af8 100644 --- a/config/feature_flags/development/always_async_project_authorizations_refresh.yml +++ b/config/feature_flags/development/always_async_project_authorizations_refresh.yml @@ -5,4 +5,4 @@ rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/367683 milestone: '15.3' type: development group: group::workspace -default_enabled: false +default_enabled: true diff --git a/config/feature_flags/development/auto_ban_user_on_excessive_projects_download.yml b/config/feature_flags/development/arkose_labs_signup_challenge.yml index d3883086088..8b40ce5d029 100644 --- a/config/feature_flags/development/auto_ban_user_on_excessive_projects_download.yml +++ b/config/feature_flags/development/arkose_labs_signup_challenge.yml @@ -1,8 +1,8 @@ --- -name: auto_ban_user_on_excessive_projects_download -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/87872 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/364782 -milestone: '15.2' +name: arkose_labs_signup_challenge +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95560 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/370932 +milestone: '15.4' type: development group: group::anti-abuse default_enabled: false diff --git a/config/feature_flags/development/block_emails_with_failures.yml b/config/feature_flags/development/block_emails_with_failures.yml new file mode 100644 index 00000000000..c06d49346b3 --- /dev/null +++ b/config/feature_flags/development/block_emails_with_failures.yml @@ -0,0 +1,8 @@ +--- +name: block_emails_with_failures +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96902 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/373159 +milestone: '15.4' +type: development +group: group::project management +default_enabled: false diff --git a/config/feature_flags/development/block_weak_passwords.yml b/config/feature_flags/development/block_weak_passwords.yml new file mode 100644 index 00000000000..aaa8c2cac38 --- /dev/null +++ b/config/feature_flags/development/block_weak_passwords.yml @@ -0,0 +1,8 @@ +--- +name: block_weak_passwords +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86310 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/363445 +milestone: '15.4' +type: development +group: group::authentication and authorization +default_enabled: false diff --git a/config/feature_flags/development/bypass_batch_pop_queueing_for_merge_trains.yml b/config/feature_flags/development/bypass_batch_pop_queueing_for_merge_trains.yml new file mode 100644 index 00000000000..4517bd5360e --- /dev/null +++ b/config/feature_flags/development/bypass_batch_pop_queueing_for_merge_trains.yml @@ -0,0 +1,8 @@ +--- +name: bypass_batch_pop_queueing_for_merge_trains +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96793 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372366 +milestone: '15.4' +type: development +group: group::scalability +default_enabled: false diff --git a/config/feature_flags/development/seat_count_alerts.yml b/config/feature_flags/development/cache_issue_sums.yml index 9b2f3a2ef55..7b8bfc44ce2 100644 --- a/config/feature_flags/development/seat_count_alerts.yml +++ b/config/feature_flags/development/cache_issue_sums.yml @@ -1,8 +1,8 @@ --- -name: seat_count_alerts -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/89204 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/362041 -milestone: '15.1' +name: cache_issue_sums +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95048 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/365940 +milestone: '15.4' type: development -group: group::purchase +group: group::product planning default_enabled: false diff --git a/config/feature_flags/development/ci_new_public_oss_cost_factor.yml b/config/feature_flags/development/ci_limit_active_jobs_early.yml index 20ab9bd4509..b7dba0f81e9 100644 --- a/config/feature_flags/development/ci_new_public_oss_cost_factor.yml +++ b/config/feature_flags/development/ci_limit_active_jobs_early.yml @@ -1,8 +1,8 @@ --- -name: ci_new_public_oss_cost_factor -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/93046 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/369113 -milestone: '15.3' +name: ci_limit_active_jobs_early +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97700 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/373284 +milestone: '15.4' type: development group: group::pipeline execution default_enabled: false diff --git a/config/feature_flags/development/ci_limit_complete_hierarchy_size.yml b/config/feature_flags/development/ci_limit_complete_hierarchy_size.yml new file mode 100644 index 00000000000..ad0dd85a25a --- /dev/null +++ b/config/feature_flags/development/ci_limit_complete_hierarchy_size.yml @@ -0,0 +1,8 @@ +--- +name: ci_limit_complete_hierarchy_size +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95857 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/373719 +milestone: '15.4' +type: development +group: group::pipeline execution +default_enabled: false diff --git a/config/feature_flags/development/ci_variable_for_group_gitlab_deploy_token.yml b/config/feature_flags/development/ci_project_pipeline_config_refactoring.yml index 155a6c385fc..0338b81caf7 100644 --- a/config/feature_flags/development/ci_variable_for_group_gitlab_deploy_token.yml +++ b/config/feature_flags/development/ci_project_pipeline_config_refactoring.yml @@ -1,8 +1,8 @@ --- -name: ci_variable_for_group_gitlab_deploy_token -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/88696 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/363621 -milestone: '15.1' +name: ci_project_pipeline_config_refactoring +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97240 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372867 +milestone: '15.4' type: development group: group::pipeline authoring -default_enabled: true +default_enabled: false diff --git a/config/feature_flags/development/ci_requeue_with_dag_object_hierarchy.yml b/config/feature_flags/development/ci_requeue_with_dag_object_hierarchy.yml new file mode 100644 index 00000000000..5e27510629c --- /dev/null +++ b/config/feature_flags/development/ci_requeue_with_dag_object_hierarchy.yml @@ -0,0 +1,8 @@ +--- +name: ci_requeue_with_dag_object_hierarchy +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97156 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/373148 +milestone: '15.4' +type: development +group: group::pipeline authoring +default_enabled: false diff --git a/config/feature_flags/development/ci_stop_expanding_file_vars_for_runners.yml b/config/feature_flags/development/ci_stop_expanding_file_vars_for_runners.yml index e9f378288d9..a78290b65d6 100644 --- a/config/feature_flags/development/ci_stop_expanding_file_vars_for_runners.yml +++ b/config/feature_flags/development/ci_stop_expanding_file_vars_for_runners.yml @@ -5,4 +5,4 @@ rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/369907 milestone: '15.3' type: development group: group::pipeline authoring -default_enabled: false +default_enabled: true diff --git a/config/feature_flags/development/ci_update_unlocked_pipeline_artifacts.yml b/config/feature_flags/development/ci_update_unlocked_pipeline_artifacts.yml new file mode 100644 index 00000000000..ffcd5352751 --- /dev/null +++ b/config/feature_flags/development/ci_update_unlocked_pipeline_artifacts.yml @@ -0,0 +1,8 @@ +--- +name: ci_update_unlocked_pipeline_artifacts +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97228 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372835 +milestone: '15.4' +type: development +group: group::pipeline insights +default_enabled: false diff --git a/config/feature_flags/development/ci_variables_refactoring_to_variable.yml b/config/feature_flags/development/ci_variables_refactoring_to_variable.yml new file mode 100644 index 00000000000..131df28d104 --- /dev/null +++ b/config/feature_flags/development/ci_variables_refactoring_to_variable.yml @@ -0,0 +1,8 @@ +--- +name: ci_variables_refactoring_to_variable +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95390 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371559 +milestone: '15.4' +type: development +group: group::pipeline authoring +default_enabled: false diff --git a/config/feature_flags/development/container_registry_legacy_authentication_for_deploy_tokens.yml b/config/feature_flags/development/container_registry_legacy_authentication_for_deploy_tokens.yml deleted file mode 100644 index fefc84ed0a0..00000000000 --- a/config/feature_flags/development/container_registry_legacy_authentication_for_deploy_tokens.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: container_registry_legacy_authentication_for_deploy_tokens -introduced_by_url: https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/2470 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/365968 -milestone: '15.1' -type: development -group: group::package -default_enabled: false diff --git a/config/feature_flags/development/contribution_analytics_optimized_base_query.yml b/config/feature_flags/development/contribution_analytics_optimized_base_query.yml index 0e8697fb206..05ee44a7ee2 100644 --- a/config/feature_flags/development/contribution_analytics_optimized_base_query.yml +++ b/config/feature_flags/development/contribution_analytics_optimized_base_query.yml @@ -5,4 +5,4 @@ rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/367090 milestone: '15.2' type: development group: group::optimize -default_enabled: false +default_enabled: true diff --git a/config/feature_flags/development/convert_diff_to_utf8_with_replacement_symbol.yml b/config/feature_flags/development/convert_diff_to_utf8_with_replacement_symbol.yml deleted file mode 100644 index 1d0f64d9ac2..00000000000 --- a/config/feature_flags/development/convert_diff_to_utf8_with_replacement_symbol.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: convert_diff_to_utf8_with_replacement_symbol -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/79996 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/354526 -milestone: '14.9' -type: development -group: group::code review -default_enabled: false diff --git a/config/feature_flags/development/track_agent_users_using_ci_tunnel.yml b/config/feature_flags/development/cube_api_proxy.yml index 0a00babc2db..06dcefb1303 100644 --- a/config/feature_flags/development/track_agent_users_using_ci_tunnel.yml +++ b/config/feature_flags/development/cube_api_proxy.yml @@ -1,8 +1,8 @@ --- -name: track_agent_users_using_ci_tunnel -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92300 +name: cube_api_proxy +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96250 rollout_issue_url: -milestone: '15.3' +milestone: '15.4' type: development -group: group::configure +group: group::product_analytics default_enabled: false diff --git a/config/feature_flags/development/dora_configuration.yml b/config/feature_flags/development/dora_configuration.yml new file mode 100644 index 00000000000..38a050571d8 --- /dev/null +++ b/config/feature_flags/development/dora_configuration.yml @@ -0,0 +1,8 @@ +--- +name: dora_configuration +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96561" +rollout_issue_url: "https://gitlab.com/gitlab-org/gitlab/-/issues/372545" +milestone: '15.4' +type: development +group: group::optimize +default_enabled: false diff --git a/config/feature_flags/development/improved_mergeability_checks.yml b/config/feature_flags/development/draft_quick_action_non_toggle.yml index 83450ffa16f..4d28b61f3bf 100644 --- a/config/feature_flags/development/improved_mergeability_checks.yml +++ b/config/feature_flags/development/draft_quick_action_non_toggle.yml @@ -1,8 +1,8 @@ --- -name: improved_mergeability_checks -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68312 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/342386 -milestone: '14.4' +name: draft_quick_action_non_toggle +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92654 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/368610 +milestone: '15.4' type: development group: group::code review default_enabled: false diff --git a/config/feature_flags/development/epic_widget_edit_confirmation.yml b/config/feature_flags/development/epic_widget_edit_confirmation.yml new file mode 100644 index 00000000000..6c92ef44e2f --- /dev/null +++ b/config/feature_flags/development/epic_widget_edit_confirmation.yml @@ -0,0 +1,8 @@ +--- +name: epic_widget_edit_confirmation +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96872 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372429 +milestone: '15.4' +type: development +group: group::product planning +default_enabled: false diff --git a/config/feature_flags/development/error_tracking_sentry_limit.yml b/config/feature_flags/development/error_tracking_sentry_limit.yml new file mode 100644 index 00000000000..75a32fa2114 --- /dev/null +++ b/config/feature_flags/development/error_tracking_sentry_limit.yml @@ -0,0 +1,8 @@ +--- +name: error_tracking_sentry_limit +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/84209 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372427 +milestone: '15.4' +type: development +group: group::observability +default_enabled: false diff --git a/config/feature_flags/development/tag_list_keyset_pagination.yml b/config/feature_flags/development/escape_gitaly_refs.yml index 52c21e22d9f..b42cc4c07e5 100644 --- a/config/feature_flags/development/tag_list_keyset_pagination.yml +++ b/config/feature_flags/development/escape_gitaly_refs.yml @@ -1,8 +1,8 @@ --- -name: tag_list_keyset_pagination -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74239 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/345595 -milestone: '14.5' +name: escape_gitaly_refs +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91058 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/366437 +milestone: '15.2' type: development group: group::source code default_enabled: true diff --git a/config/feature_flags/development/group_ip_restrictions_allow_global.yml b/config/feature_flags/development/extract_mr_diff_deletions.yml index 87cfa5e8b1b..24067f95074 100644 --- a/config/feature_flags/development/group_ip_restrictions_allow_global.yml +++ b/config/feature_flags/development/extract_mr_diff_deletions.yml @@ -1,8 +1,8 @@ --- -name: group_ip_restrictions_allow_global -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/87579 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/362603 -milestone: '15.1' +name: extract_mr_diff_deletions +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96455 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372060 +milestone: '15.4' type: development group: group::source code default_enabled: false diff --git a/config/feature_flags/development/api_caching_branches.yml b/config/feature_flags/development/gitlab_shell_jwt_token.yml index 310d643529e..7cb6da2b49f 100644 --- a/config/feature_flags/development/api_caching_branches.yml +++ b/config/feature_flags/development/gitlab_shell_jwt_token.yml @@ -1,8 +1,8 @@ --- -name: api_caching_branches -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/61157 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/330371 -milestone: '13.12' +name: gitlab_shell_jwt_token +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86148 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/360808 +milestone: '15.3' type: development group: group::source code default_enabled: false diff --git a/config/feature_flags/development/global_search_custom_slis.yml b/config/feature_flags/development/global_search_custom_slis.yml new file mode 100644 index 00000000000..6dd7cfb12f0 --- /dev/null +++ b/config/feature_flags/development/global_search_custom_slis.yml @@ -0,0 +1,8 @@ +--- +name: global_search_custom_slis +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95182 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372107 +milestone: '15.4' +type: development +group: group::application performance +default_enabled: false diff --git a/config/feature_flags/development/global_search_error_rate_sli.yml b/config/feature_flags/development/global_search_error_rate_sli.yml new file mode 100644 index 00000000000..d1637ad692c --- /dev/null +++ b/config/feature_flags/development/global_search_error_rate_sli.yml @@ -0,0 +1,8 @@ +--- +name: global_search_error_rate_sli +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96667 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/373800 +milestone: '15.4' +type: development +group: group::application performance +default_enabled: false diff --git a/config/feature_flags/development/ci_docker_image_pull_policy.yml b/config/feature_flags/development/graphql_job_app.yml index 5bdcdf03d27..a0f0cb71e17 100644 --- a/config/feature_flags/development/ci_docker_image_pull_policy.yml +++ b/config/feature_flags/development/graphql_job_app.yml @@ -1,8 +1,8 @@ --- -name: ci_docker_image_pull_policy -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85588 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/363186 -milestone: '15.1' +name: graphql_job_app +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96703 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372276 +milestone: '15.4' type: development group: group::pipeline authoring -default_enabled: true +default_enabled: false diff --git a/config/feature_flags/development/graphql_keyset_pagination_without_next_page_query.yml b/config/feature_flags/development/graphql_keyset_pagination_without_next_page_query.yml new file mode 100644 index 00000000000..e289ad9af50 --- /dev/null +++ b/config/feature_flags/development/graphql_keyset_pagination_without_next_page_query.yml @@ -0,0 +1,8 @@ +--- +name: graphql_keyset_pagination_without_next_page_query +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97509 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/373792 +milestone: '15.4' +type: development +group: group::optimize +default_enabled: false diff --git a/config/feature_flags/development/group_level_protected_environment_settings_permission.yml b/config/feature_flags/development/group_level_protected_environment_settings_permission.yml deleted file mode 100644 index bbcfe24ba72..00000000000 --- a/config/feature_flags/development/group_level_protected_environment_settings_permission.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: group_level_protected_environment_settings_permission -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92801 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/369873 -milestone: '15.3' -type: development -group: group::release -default_enabled: true diff --git a/config/feature_flags/development/group_overview_tabs_vue.yml b/config/feature_flags/development/group_overview_tabs_vue.yml new file mode 100644 index 00000000000..4c54ab31b53 --- /dev/null +++ b/config/feature_flags/development/group_overview_tabs_vue.yml @@ -0,0 +1,8 @@ +--- +name: group_overview_tabs_vue +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95850 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/370872 +milestone: '15.4' +type: development +group: group::workspace +default_enabled: false diff --git a/config/feature_flags/development/hash_oauth_secrets.yml b/config/feature_flags/development/hash_oauth_secrets.yml new file mode 100644 index 00000000000..7730d319bab --- /dev/null +++ b/config/feature_flags/development/hash_oauth_secrets.yml @@ -0,0 +1,8 @@ +--- +name: hash_oauth_secrets +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96252 +rollout_issue_url: +milestone: '15.4' +type: development +group: group::authentication and authorization +default_enabled: false diff --git a/config/feature_flags/development/highlight_diffs_renewable_expiration.yml b/config/feature_flags/development/highlight_diffs_renewable_expiration.yml new file mode 100644 index 00000000000..80635b96240 --- /dev/null +++ b/config/feature_flags/development/highlight_diffs_renewable_expiration.yml @@ -0,0 +1,8 @@ +--- +name: highlight_diffs_renewable_expiration +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95356 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/370728 +milestone: '15.3' +type: development +group: group::source code +default_enabled: false diff --git a/config/feature_flags/development/highlight_diffs_short_renewable_expiration.yml b/config/feature_flags/development/highlight_diffs_short_renewable_expiration.yml new file mode 100644 index 00000000000..1f20678b4a6 --- /dev/null +++ b/config/feature_flags/development/highlight_diffs_short_renewable_expiration.yml @@ -0,0 +1,8 @@ +--- +name: highlight_diffs_short_renewable_expiration +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95356 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/370728 +milestone: '15.3' +type: development +group: group::source code +default_enabled: false diff --git a/config/feature_flags/development/include_groups_from_group_shares_in_project_transfer_locations.yml b/config/feature_flags/development/include_groups_from_group_shares_in_group_transfer_locations.yml index 3db60cfd2d7..f92a6b2b1b0 100644 --- a/config/feature_flags/development/include_groups_from_group_shares_in_project_transfer_locations.yml +++ b/config/feature_flags/development/include_groups_from_group_shares_in_group_transfer_locations.yml @@ -1,8 +1,8 @@ --- -name: include_groups_from_group_shares_in_project_transfer_locations -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/90127 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/366305 -milestone: '15.2' +name: include_groups_from_group_shares_in_group_transfer_locations +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96347 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371961 +milestone: '15.4' type: development group: group::workspace default_enabled: false diff --git a/config/feature_flags/development/incubation_5mp_google_cloud.yml b/config/feature_flags/development/incubation_5mp_google_cloud.yml index b687a656b40..1b3ba503f5d 100644 --- a/config/feature_flags/development/incubation_5mp_google_cloud.yml +++ b/config/feature_flags/development/incubation_5mp_google_cloud.yml @@ -1,7 +1,7 @@ --- name: incubation_5mp_google_cloud introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/70715 -rollout_issue_url: +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371332 milestone: '14.3' type: development group: group::incubation diff --git a/config/feature_flags/development/invitation_flow_enforcement_setting.yml b/config/feature_flags/development/invitation_flow_enforcement_setting.yml new file mode 100644 index 00000000000..39da6c40bed --- /dev/null +++ b/config/feature_flags/development/invitation_flow_enforcement_setting.yml @@ -0,0 +1,8 @@ +--- +name: invitation_flow_enforcement_setting +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92218 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/367666 +milestone: '15.4' +type: development +group: group::workspace +default_enabled: false diff --git a/config/feature_flags/development/rebalance_issues.yml b/config/feature_flags/development/markdown_dollar_math.yml index 5651b02b073..842837ea688 100644 --- a/config/feature_flags/development/rebalance_issues.yml +++ b/config/feature_flags/development/markdown_dollar_math.yml @@ -1,8 +1,8 @@ --- -name: rebalance_issues -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/40124 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/239344 -milestone: '13.4' +name: markdown_dollar_math +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/94111 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371180 +milestone: '15.4' type: development group: group::project management -default_enabled: true +default_enabled: false diff --git a/config/feature_flags/development/maven_central_request_forwarding.yml b/config/feature_flags/development/maven_central_request_forwarding.yml new file mode 100644 index 00000000000..756a931b3a1 --- /dev/null +++ b/config/feature_flags/development/maven_central_request_forwarding.yml @@ -0,0 +1,8 @@ +--- +name: maven_central_request_forwarding +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85299 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/359553 +milestone: '15.4' +type: development +group: group::package +default_enabled: false diff --git a/config/feature_flags/development/async_after_approval.yml b/config/feature_flags/development/mergeability_checks_logger.yml index db53454b88f..3476d6f2133 100644 --- a/config/feature_flags/development/async_after_approval.yml +++ b/config/feature_flags/development/mergeability_checks_logger.yml @@ -1,8 +1,8 @@ --- -name: async_after_approval -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92520 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/368098 -milestone: '15.3' +name: mergeability_checks_logger +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96128 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371717 +milestone: '15.4' type: development group: group::code review default_enabled: false diff --git a/config/feature_flags/development/ml_experiment_tracking.yml b/config/feature_flags/development/ml_experiment_tracking.yml new file mode 100644 index 00000000000..2749cbc3fc1 --- /dev/null +++ b/config/feature_flags/development/ml_experiment_tracking.yml @@ -0,0 +1,8 @@ +--- +name: ml_experiment_tracking +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95689 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371669 +milestone: '15.4' +type: development +group: group::incubation +default_enabled: false diff --git a/config/feature_flags/development/s3_omit_multipart_urls.yml b/config/feature_flags/development/new_navbar_layout.yml index 92d30601739..2d212922fcc 100644 --- a/config/feature_flags/development/s3_omit_multipart_urls.yml +++ b/config/feature_flags/development/new_navbar_layout.yml @@ -1,8 +1,8 @@ --- -name: s3_omit_multipart_urls -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85306 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/359718 -milestone: '14.10' +name: new_navbar_layout +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96853 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/373078 +milestone: '15.4' type: development -group: group::package +group: group::foundations default_enabled: true diff --git a/config/feature_flags/development/observability_group_tab.yml b/config/feature_flags/development/observability_group_tab.yml new file mode 100644 index 00000000000..b588a74e7d0 --- /dev/null +++ b/config/feature_flags/development/observability_group_tab.yml @@ -0,0 +1,8 @@ +--- +name: observability_group_tab +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96374 +rollout_issue_url: +milestone: '15.3' +type: development +group: group::observability +default_enabled: false diff --git a/config/feature_flags/development/order_builds_for_group_runner.yml b/config/feature_flags/development/order_builds_for_group_runner.yml new file mode 100644 index 00000000000..50f9a301ad6 --- /dev/null +++ b/config/feature_flags/development/order_builds_for_group_runner.yml @@ -0,0 +1,8 @@ +--- +name: order_builds_for_group_runner +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/94815 +rollout_issue_url: +milestone: '15.4' +type: development +group: group::pipeline execution +default_enabled: true diff --git a/config/feature_flags/development/prevent_outdated_deployment_jobs.yml b/config/feature_flags/development/prevent_outdated_deployment_jobs.yml new file mode 100644 index 00000000000..5b92874dfd7 --- /dev/null +++ b/config/feature_flags/development/prevent_outdated_deployment_jobs.yml @@ -0,0 +1,8 @@ +--- +name: prevent_outdated_deployment_jobs +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97171 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/370628 +milestone: '15.4' +type: development +group: group::release +default_enabled: false diff --git a/config/feature_flags/development/process_issue_closure_in_background.yml b/config/feature_flags/development/process_issue_closure_in_background.yml new file mode 100644 index 00000000000..6a97cbf888e --- /dev/null +++ b/config/feature_flags/development/process_issue_closure_in_background.yml @@ -0,0 +1,8 @@ +--- +name: process_issue_closure_in_background +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/94981 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371024 +milestone: '15.4' +type: development +group: group::source code +default_enabled: false diff --git a/config/feature_flags/development/product_intelligence_database_event_tracking.yml b/config/feature_flags/development/product_intelligence_database_event_tracking.yml index 83a65398e87..545cdc47f2b 100644 --- a/config/feature_flags/development/product_intelligence_database_event_tracking.yml +++ b/config/feature_flags/development/product_intelligence_database_event_tracking.yml @@ -2,7 +2,6 @@ name: product_intelligence_database_event_tracking introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92079 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/368976 -rollout_issue_url: milestone: '15.3' type: development group: group::product intelligence diff --git a/config/feature_flags/development/shimo_integration.yml b/config/feature_flags/development/read_package_policy_rule.yml index 28c0a7859bc..151c5a8c0b5 100644 --- a/config/feature_flags/development/shimo_integration.yml +++ b/config/feature_flags/development/read_package_policy_rule.yml @@ -1,8 +1,8 @@ --- -name: shimo_integration -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/73129 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/345356 -milestone: '14.5' +name: read_package_policy_rule +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/90963 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/366711 +milestone: '15.4' type: development -group: group::integrations +group: group::package default_enabled: false diff --git a/config/feature_flags/development/rely_on_protected_branches_cache.yml b/config/feature_flags/development/rely_on_protected_branches_cache.yml new file mode 100644 index 00000000000..5154d4cee08 --- /dev/null +++ b/config/feature_flags/development/rely_on_protected_branches_cache.yml @@ -0,0 +1,8 @@ +--- +name: rely_on_protected_branches_cache +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92937 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/370608 +milestone: '15.4' +type: development +group: group::source code +default_enabled: false diff --git a/config/feature_flags/development/datadog_integration_logs_collection.yml b/config/feature_flags/development/remove_extra_primary_submenu_options.yml index 3e65b70d0e6..dda22c5d57e 100644 --- a/config/feature_flags/development/datadog_integration_logs_collection.yml +++ b/config/feature_flags/development/remove_extra_primary_submenu_options.yml @@ -1,8 +1,8 @@ --- -name: datadog_integration_logs_collection -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74725 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/346339 -milestone: '14.8' +name: remove_extra_primary_submenu_options +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96931 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/373078 +milestone: '15.4' type: development -group: group::integrations +group: group::foundations default_enabled: true diff --git a/config/feature_flags/development/mr_attention_requests.yml b/config/feature_flags/development/remove_user_attributes_groups.yml index b80300d1acf..069d83455f9 100644 --- a/config/feature_flags/development/mr_attention_requests.yml +++ b/config/feature_flags/development/remove_user_attributes_groups.yml @@ -1,8 +1,8 @@ --- -name: mr_attention_requests -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/72773 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/343528 -milestone: '14.4' +name: remove_user_attributes_groups +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97520 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372047 +milestone: '15.4' type: development group: group::code review default_enabled: false diff --git a/config/feature_flags/development/etag_merge_request_diff_batches.yml b/config/feature_flags/development/remove_user_attributes_projects.yml index 8cd3ba8637a..fc1beb42a73 100644 --- a/config/feature_flags/development/etag_merge_request_diff_batches.yml +++ b/config/feature_flags/development/remove_user_attributes_projects.yml @@ -1,8 +1,8 @@ --- -name: etag_merge_request_diff_batches -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/93953 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/369488 -milestone: '15.3' +name: remove_user_attributes_projects +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97520 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372047 +milestone: '15.4' type: development group: group::code review default_enabled: false diff --git a/config/feature_flags/development/report_artifact_build_completed_metrics_on_build_completion.yml b/config/feature_flags/development/report_artifact_build_completed_metrics_on_build_completion.yml deleted file mode 100644 index 76b6c8c6b2f..00000000000 --- a/config/feature_flags/development/report_artifact_build_completed_metrics_on_build_completion.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: report_artifact_build_completed_metrics_on_build_completion -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/80334 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/369500 -milestone: '15.3' -type: development -group: group::static analysis -default_enabled: false diff --git a/config/feature_flags/development/restyle_login_page.yml b/config/feature_flags/development/restyle_login_page.yml index ed3ae3ef6ea..bfe99590e6e 100644 --- a/config/feature_flags/development/restyle_login_page.yml +++ b/config/feature_flags/development/restyle_login_page.yml @@ -5,4 +5,4 @@ rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/368387 milestone: '15.2' type: development group: group::authentication and authorization -default_enabled: false +default_enabled: true diff --git a/config/feature_flags/development/rpm_packages.yml b/config/feature_flags/development/rpm_packages.yml new file mode 100644 index 00000000000..a342f1203f7 --- /dev/null +++ b/config/feature_flags/development/rpm_packages.yml @@ -0,0 +1,8 @@ +--- +name: rpm_packages +introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96019' +rollout_issue_url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/371863' +milestone: '15.4' +type: development +group: group::package +default_enabled: false diff --git a/config/feature_flags/development/execute_build_hooks_inline.yml b/config/feature_flags/development/run_pipeline_graphql.yml index 0389fca3bb1..78d8afbbee5 100644 --- a/config/feature_flags/development/execute_build_hooks_inline.yml +++ b/config/feature_flags/development/run_pipeline_graphql.yml @@ -1,8 +1,8 @@ --- -name: execute_build_hooks_inline -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/93665 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/370387 -milestone: '15.3' +name: run_pipeline_graphql +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96633 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372310 +milestone: '15.4' type: development -group: group::integrations +group: group::pipeline authoring default_enabled: false diff --git a/config/feature_flags/development/skip_checking_namespace_in_query.yml b/config/feature_flags/development/skip_checking_namespace_in_query.yml new file mode 100644 index 00000000000..2b9e3cbfe0b --- /dev/null +++ b/config/feature_flags/development/skip_checking_namespace_in_query.yml @@ -0,0 +1,8 @@ +--- +name: skip_checking_namespace_in_query +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96559 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/370742 +milestone: '15.4' +type: development +group: group::source code +default_enabled: false diff --git a/config/feature_flags/development/track_work_items_activity.yml b/config/feature_flags/development/track_work_items_activity.yml index e4614f2d5e2..3727bca1078 100644 --- a/config/feature_flags/development/track_work_items_activity.yml +++ b/config/feature_flags/development/track_work_items_activity.yml @@ -5,4 +5,4 @@ rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/352903 milestone: '14.9' type: development group: group::project management -default_enabled: false +default_enabled: true diff --git a/config/feature_flags/development/ultimate_feature_removal_banner.yml b/config/feature_flags/development/ultimate_feature_removal_banner.yml new file mode 100644 index 00000000000..14d7b4921c1 --- /dev/null +++ b/config/feature_flags/development/ultimate_feature_removal_banner.yml @@ -0,0 +1,8 @@ +--- +name: ultimate_feature_removal_banner +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/94271 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371690 +milestone: '15.4' +type: development +group: group::workspace +default_enabled: false diff --git a/config/feature_flags/development/usage_data_ci_i_testing_test_report_uploaded.yml b/config/feature_flags/development/usage_data_ci_i_testing_test_report_uploaded.yml new file mode 100644 index 00000000000..1635427485b --- /dev/null +++ b/config/feature_flags/development/usage_data_ci_i_testing_test_report_uploaded.yml @@ -0,0 +1,8 @@ +--- +name: usage_data_ci_i_testing_test_report_uploaded +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95112 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/339720 +milestone: '15.4' +type: development +group: group::pipeline insights +default_enabled: false diff --git a/config/feature_flags/development/usage_data_i_code_review_user_gitlab_cli_api_request.yml b/config/feature_flags/development/usage_data_i_code_review_user_gitlab_cli_api_request.yml deleted file mode 100644 index 898c19a34a9..00000000000 --- a/config/feature_flags/development/usage_data_i_code_review_user_gitlab_cli_api_request.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: usage_data_i_code_review_user_gitlab_cli_api_request -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/83464 -rollout_issue_url: -milestone: '14.10' -type: development -group: group::code review -default_enabled: true diff --git a/config/feature_flags/development/usage_data_i_code_review_user_jetbrains_api_request.yml b/config/feature_flags/development/usage_data_i_code_review_user_jetbrains_api_request.yml deleted file mode 100644 index 3ab01c78a28..00000000000 --- a/config/feature_flags/development/usage_data_i_code_review_user_jetbrains_api_request.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: usage_data_i_code_review_user_jetbrains_api_request -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/78713 -rollout_issue_url: -milestone: '14.8' -type: development -group: group::code review -default_enabled: true diff --git a/config/feature_flags/development/usage_quotas_for_all_editions.yml b/config/feature_flags/development/usage_quotas_for_all_editions.yml new file mode 100644 index 00000000000..d4e4116542a --- /dev/null +++ b/config/feature_flags/development/usage_quotas_for_all_editions.yml @@ -0,0 +1,8 @@ +--- +name: usage_quotas_for_all_editions +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96063 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371639 +milestone: '15.4' +type: development +group: group::utilization +default_enabled: false diff --git a/config/feature_flags/development/use_gitaly_pagination_for_refs.yml b/config/feature_flags/development/use_gitaly_pagination_for_refs.yml new file mode 100644 index 00000000000..f44233e8d0b --- /dev/null +++ b/config/feature_flags/development/use_gitaly_pagination_for_refs.yml @@ -0,0 +1,8 @@ +--- +name: use_gitaly_pagination_for_refs +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96448 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372049 +milestone: '15.4' +type: development +group: group::source code +default_enabled: true diff --git a/config/feature_flags/development/use_pipeline_wizard_for_pages.yml b/config/feature_flags/development/use_pipeline_wizard_for_pages.yml index 10d4478934e..2de1b952f95 100644 --- a/config/feature_flags/development/use_pipeline_wizard_for_pages.yml +++ b/config/feature_flags/development/use_pipeline_wizard_for_pages.yml @@ -2,7 +2,7 @@ name: use_pipeline_wizard_for_pages introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/78276 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/349095 -milestone: '15.3' +milestone: '15.4' type: development group: group::incubation -default_enabled: false +default_enabled: true diff --git a/config/feature_flags/development/use_vsa_aggregated_tables.yml b/config/feature_flags/development/use_vsa_aggregated_tables.yml deleted file mode 100644 index 89c24181eb1..00000000000 --- a/config/feature_flags/development/use_vsa_aggregated_tables.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: use_vsa_aggregated_tables -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/72978 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/343429 -milestone: '14.5' -type: development -group: group::optimize -default_enabled: true diff --git a/config/feature_flags/development/auto_ban_user_on_namespace_excessive_projects_download.yml b/config/feature_flags/development/user_destroy_with_limited_execution_time_worker.yml index 6e14a8dd62c..9eacfc019ac 100644 --- a/config/feature_flags/development/auto_ban_user_on_namespace_excessive_projects_download.yml +++ b/config/feature_flags/development/user_destroy_with_limited_execution_time_worker.yml @@ -1,8 +1,8 @@ --- -name: auto_ban_user_on_namespace_excessive_projects_download -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91343 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/367611 -milestone: '15.3' +name: user_destroy_with_limited_execution_time_worker +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97141 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/373138 +milestone: '15.4' type: development -group: group::anti-abuse +group: group::authentication and authorization default_enabled: false diff --git a/config/feature_flags/development/traversal_ids_btree.yml b/config/feature_flags/development/vscode_web_ide.yml index aaecafe04ae..3d29ae40e7c 100644 --- a/config/feature_flags/development/traversal_ids_btree.yml +++ b/config/feature_flags/development/vscode_web_ide.yml @@ -1,8 +1,8 @@ --- -name: traversal_ids_btree -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/69535 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/342871 -milestone: '14.5' +name: vscode_web_ide +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95169 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371084 +milestone: '15.4' type: development -group: group::access +group: group::editor default_enabled: false diff --git a/config/feature_flags/development/inactive_projects_deletion.yml b/config/feature_flags/development/webui_members_inherited_users.yml index e9bb91f62cc..14704fd8341 100644 --- a/config/feature_flags/development/inactive_projects_deletion.yml +++ b/config/feature_flags/development/webui_members_inherited_users.yml @@ -1,8 +1,8 @@ --- -name: inactive_projects_deletion -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85689 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/357968 -milestone: '15.0' +name: webui_members_inherited_users +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/83214 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/364078 +milestone: '15.4' type: development -group: group::compliance +group: group::workspace default_enabled: false diff --git a/config/feature_flags/development/wiki_find_page_with_normal_repository_rpcs.yml b/config/feature_flags/development/wiki_find_page_with_normal_repository_rpcs.yml new file mode 100644 index 00000000000..bad0578d50a --- /dev/null +++ b/config/feature_flags/development/wiki_find_page_with_normal_repository_rpcs.yml @@ -0,0 +1,8 @@ +--- +name: wiki_find_page_with_normal_repository_rpcs +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95897 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371487 +milestone: '15.4' +type: development +group: group::gitaly +default_enabled: false diff --git a/config/feature_flags/experiment/combined_registration.yml b/config/feature_flags/experiment/combined_registration.yml deleted file mode 100644 index 0b867353946..00000000000 --- a/config/feature_flags/experiment/combined_registration.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: combined_registration -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/67614 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/285533 -milestone: '14.3' -type: experiment -group: group::acquisition -default_enabled: false diff --git a/config/feature_flags/ops/database_async_index_destruction.yml b/config/feature_flags/ops/ci_partitioning_analyze_queries.yml index a100b3a40f2..59ca52278e9 100644 --- a/config/feature_flags/ops/database_async_index_destruction.yml +++ b/config/feature_flags/ops/ci_partitioning_analyze_queries.yml @@ -1,8 +1,8 @@ --- -name: database_async_index_destruction -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92328 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/367964 -milestone: '15.3' +name: ci_partitioning_analyze_queries +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97113 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372840 +milestone: '15.4' type: ops -group: group::database +group: group::pipeline execution default_enabled: false diff --git a/config/feature_flags/development/detect_cross_database_modification.yml b/config/feature_flags/ops/detect_cross_database_modification.yml index 7f74e136291..5f496118c4b 100644 --- a/config/feature_flags/development/detect_cross_database_modification.yml +++ b/config/feature_flags/ops/detect_cross_database_modification.yml @@ -1,8 +1,7 @@ --- name: detect_cross_database_modification introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/73316 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/344620 milestone: '14.5' -type: development +type: ops group: group::sharding default_enabled: false diff --git a/config/feature_flags/ops/github_importer_attachments_import.yml b/config/feature_flags/ops/github_importer_attachments_import.yml new file mode 100644 index 00000000000..ec4fe144933 --- /dev/null +++ b/config/feature_flags/ops/github_importer_attachments_import.yml @@ -0,0 +1,8 @@ +--- +name: github_importer_attachments_import +introduced_by_url: +rollout_issue_url: +milestone: '15.4' +type: ops +group: group::import +default_enabled: false diff --git a/config/feature_flags/ops/increase_branch_cache_expiry.yml b/config/feature_flags/ops/increase_branch_cache_expiry.yml new file mode 100644 index 00000000000..61b9d5b9c42 --- /dev/null +++ b/config/feature_flags/ops/increase_branch_cache_expiry.yml @@ -0,0 +1,8 @@ +--- +name: increase_branch_cache_expiry +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96739 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372331 +milestone: '15.4' +type: ops +group: group::code review +default_enabled: false diff --git a/config/feature_flags/development/query_analyzer_gitlab_schema_metrics.yml b/config/feature_flags/ops/query_analyzer_gitlab_schema_metrics.yml index b784105368c..9793eebb014 100644 --- a/config/feature_flags/development/query_analyzer_gitlab_schema_metrics.yml +++ b/config/feature_flags/ops/query_analyzer_gitlab_schema_metrics.yml @@ -1,8 +1,7 @@ --- name: query_analyzer_gitlab_schema_metrics introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/73839 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/345034 milestone: '14.5' -type: development +type: ops group: group::sharding default_enabled: false diff --git a/config/feature_flags/undefined/gitaly_simplify_find_local_branches_response.yml b/config/feature_flags/undefined/gitaly_simplify_find_local_branches_response.yml new file mode 100644 index 00000000000..c82f8ee26b7 --- /dev/null +++ b/config/feature_flags/undefined/gitaly_simplify_find_local_branches_response.yml @@ -0,0 +1,8 @@ +--- +name: gitaly_simplify_find_local_branches_response +introduced_by_url: https://gitlab.com/gitlab-org/gitaly/-/merge_requests/4850 +rollout_issue_url: https://gitlab.com/gitlab-org/gitaly/-/issues/4452 +milestone: '15.4' +type: undefined +group: group::gitaly +default_enabled: false diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example index 6861864999f..da950c54fbf 100644 --- a/config/gitlab.yml.example +++ b/config/gitlab.yml.example @@ -183,6 +183,22 @@ production: &base # plaintext. This can be a security risk. # display_initial_root_password: false + # Allows delivery of emails using Microsoft Graph API with OAuth 2.0 client credentials flow. + microsoft_graph_mailer: + enabled: false + # The unique identifier for the user. To use Microsoft Graph on behalf of the user. + # user_id: "YOUR-USER-ID" + # The directory tenant the application plans to operate against, in GUID or domain-name format. + # tenant: "YOUR-TENANT-ID" + # The application ID that's assigned to your app. You can find this information in the portal where you registered your app. + # client_id: "YOUR-CLIENT-ID" + # The client secret that you generated for your app in the app registration portal. + # client_secret: "YOUR-CLIENT-SECRET-ID" + # Defaults to "https://login.microsoftonline.com". + # azure_ad_endpoint: + # Defaults to "https://graph.microsoft.com". + # graph_endpoint: + ## Reply by email # Allow users to comment on issues and merge requests by replying to notification emails. # For documentation on how to set this up, see https://docs.gitlab.com/ee/administration/reply_by_email.html diff --git a/config/helpers/evaluate_module_from_source.js b/config/helpers/evaluate_module_from_source.js new file mode 100644 index 00000000000..b55bbb82b63 --- /dev/null +++ b/config/helpers/evaluate_module_from_source.js @@ -0,0 +1,37 @@ +const vm = require('vm'); + +/** + * This function uses Node's `vm` modules to evaluate the `module.exports` of a given source string + * + * Example: + * + * ```javascript + * const { exports: moduleExports } = evaluateModuleFromSource("const foo = 7;\n module.exports.bar = 10 + foo;"); + * + * assert(moduleExports.bar === 17); + * ``` + * + * @param {String} source to be evaluated using Node's `vm` modules + * @param {{ require: Function }} options used in the context during evaluation of the Node module + * @returns {{ exports: any }} exports added to the script's `module.exports` context + */ +const evaluateModuleFromSource = (source, { require } = {}) => { + const context = { + module: { + exports: {}, + }, + require, + }; + + try { + const script = new vm.Script(source); + script.runInNewContext(context); + } catch (e) { + console.error(e); + throw e; + } + + return context.module; +}; + +module.exports = { evaluateModuleFromSource }; diff --git a/config/initializers/01_secret_token.rb b/config/initializers/01_secret_token.rb index c1f03dfdb07..bb13869c963 100644 --- a/config/initializers/01_secret_token.rb +++ b/config/initializers/01_secret_token.rb @@ -65,11 +65,10 @@ end def set_missing_keys(defaults) defaults.stringify_keys.each_with_object({}) do |(key, default), missing| - if Rails.application.secrets[key].blank? - warn_missing_secret(key) + next if Rails.application.secrets[key].present? - missing[key] = Rails.application.secrets[key] = default - end + warn_missing_secret(key) + missing[key] = Rails.application.secrets[key] = default end end diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb index b271cefadd9..3fc4b56f458 100644 --- a/config/initializers/1_settings.rb +++ b/config/initializers/1_settings.rb @@ -117,6 +117,27 @@ Settings.omniauth.cas3['session_duration'] ||= 8.hours Settings.omniauth['session_tickets'] ||= Settingslogic.new({}) Settings.omniauth.session_tickets['cas3'] = 'ticket' +# Handle backward compatibility with the renamed kerberos_spnego provider +# https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96335#note_1094265436 +Gitlab.ee do + kerberos_spnego = Settings.omniauth.providers.find { |p| p.name == 'kerberos_spnego' } + if kerberos_spnego + Settings.omniauth.providers.delete_if { |p| p.name == 'kerberos' } + kerberos_spnego['name'] = 'kerberos' + + omniauth_keys = %w(allow_single_sign_on auto_link_user external_providers sync_profile_from_provider allow_bypass_two_factor) + omniauth_keys.each do |key| + next unless Settings.omniauth[key].is_a?(Array) + + Settings.omniauth[key].map! { |p| p == 'kerberos_spnego' ? 'kerberos' : p } + end + + if Settings.omniauth['auto_sign_in_with_provider'] == 'kerberos_spnego' + Settings.omniauth['auto_sign_in_with_provider'] = 'kerberos' + end + end +end + # Fill out omniauth-gitlab settings. It is needed for easy set up GHE or GH by just specifying url. github_default_url = "https://github.com" @@ -214,11 +235,11 @@ Settings.gitlab['import_sources'] ||= Gitlab::ImportSources.values Settings.gitlab['trusted_proxies'] ||= [] Settings.gitlab['content_security_policy'] ||= {} Settings.gitlab['allowed_hosts'] ||= [] -Settings.gitlab['no_todos_messages'] ||= YAML.load_file(Rails.root.join('config', 'no_todos_messages.yml')) Settings.gitlab['impersonation_enabled'] ||= true if Settings.gitlab['impersonation_enabled'].nil? Settings.gitlab['usage_ping_enabled'] = true if Settings.gitlab['usage_ping_enabled'].nil? Settings.gitlab['max_request_duration_seconds'] ||= 57 Settings.gitlab['display_initial_root_password'] = false if Settings.gitlab['display_initial_root_password'].nil? +Settings.gitlab['weak_passwords_digest_set'] ||= YAML.safe_load(File.open(Rails.root.join('config', 'weak_password_digests.yml')), permitted_classes: [String]).to_set.freeze Gitlab.ee do Settings.gitlab['mirror_max_delay'] ||= 300 @@ -547,7 +568,7 @@ Settings.cron_jobs['container_registry_migration_observer_worker'] ||= Settingsl Settings.cron_jobs['container_registry_migration_observer_worker']['cron'] ||= '*/30 * * * *' Settings.cron_jobs['container_registry_migration_observer_worker']['job_class'] = 'ContainerRegistry::Migration::ObserverWorker' Settings.cron_jobs['container_registry_migration_enqueuer_worker'] ||= Settingslogic.new({}) -Settings.cron_jobs['container_registry_migration_enqueuer_worker']['cron'] ||= '45 */1 * * *' +Settings.cron_jobs['container_registry_migration_enqueuer_worker']['cron'] ||= '15,45 */1 * * *' Settings.cron_jobs['container_registry_migration_enqueuer_worker']['job_class'] = 'ContainerRegistry::Migration::EnqueuerWorker' Settings.cron_jobs['image_ttl_group_policy_worker'] ||= Settingslogic.new({}) Settings.cron_jobs['image_ttl_group_policy_worker']['cron'] ||= '40 0 * * *' @@ -633,6 +654,9 @@ Settings.cron_jobs['loose_foreign_keys_cleanup_worker']['job_class'] = 'LooseFor Settings.cron_jobs['ci_runner_versions_reconciliation_worker'] ||= Settingslogic.new({}) Settings.cron_jobs['ci_runner_versions_reconciliation_worker']['cron'] ||= '@daily' Settings.cron_jobs['ci_runner_versions_reconciliation_worker']['job_class'] = 'Ci::Runners::ReconcileExistingRunnerVersionsCronWorker' +Settings.cron_jobs['users_migrate_records_to_ghost_user_in_batches_worker'] ||= Settingslogic.new({}) +Settings.cron_jobs['users_migrate_records_to_ghost_user_in_batches_worker']['cron'] ||= '*/1 * * * *' +Settings.cron_jobs['users_migrate_records_to_ghost_user_in_batches_worker']['job_class'] = 'Users::MigrateRecordsToGhostUserInBatchesWorker' Gitlab.ee do Settings.cron_jobs['analytics_devops_adoption_create_all_snapshots_worker'] ||= Settingslogic.new({}) @@ -713,9 +737,6 @@ Gitlab.ee do Settings.cron_jobs['ldap_sync_worker'] ||= Settingslogic.new({}) Settings.cron_jobs['ldap_sync_worker']['cron'] ||= '30 1 * * *' Settings.cron_jobs['ldap_sync_worker']['job_class'] = 'LdapSyncWorker' - Settings.cron_jobs['free_user_cap_data_remediation'] ||= Settingslogic.new({}) - Settings.cron_jobs['free_user_cap_data_remediation']['cron'] ||= '17 6,10,14,18 * * *' - Settings.cron_jobs['free_user_cap_data_remediation']['job_class'] = 'Namespaces::FreeUserCap::RemediationWorker' Settings.cron_jobs['update_max_seats_used_for_gitlab_com_subscriptions_worker'] ||= Settingslogic.new({}) Settings.cron_jobs['update_max_seats_used_for_gitlab_com_subscriptions_worker']['cron'] ||= '0 12 * * *' Settings.cron_jobs['update_max_seats_used_for_gitlab_com_subscriptions_worker']['job_class'] = 'UpdateMaxSeatsUsedForGitlabComSubscriptionsWorker' @@ -791,7 +812,7 @@ end # Settings['sidekiq'] ||= Settingslogic.new({}) Settings['sidekiq']['log_format'] ||= 'default' -Settings['sidekiq']['routing_rules'] ||= [] +Settings['sidekiq']['routing_rules'] = Settings.__send__(:build_sidekiq_routing_rules, Settings['sidekiq']['routing_rules']) # # GitLab Shell @@ -885,6 +906,18 @@ Settings['satellites'] ||= Settingslogic.new({}) Settings.satellites['path'] = Settings.absolute(Settings.satellites['path'] || "tmp/repo_satellites/") # +# Microsoft Graph Mailer +# +Settings['microsoft_graph_mailer'] ||= Settingslogic.new({}) +Settings.microsoft_graph_mailer['enabled'] = false if Settings.microsoft_graph_mailer['enabled'].nil? +Settings.microsoft_graph_mailer['user_id'] ||= nil +Settings.microsoft_graph_mailer['tenant'] ||= nil +Settings.microsoft_graph_mailer['client_id'] ||= nil +Settings.microsoft_graph_mailer['client_secret'] ||= nil +Settings.microsoft_graph_mailer['azure_ad_endpoint'] ||= 'https://login.microsoftonline.com' +Settings.microsoft_graph_mailer['graph_endpoint'] ||= 'https://graph.microsoft.com' + +# # Kerberos # Gitlab.ee do @@ -897,8 +930,8 @@ Gitlab.ee do Settings.kerberos['https'] = Settings.gitlab.https if Settings.kerberos['https'].nil? Settings.kerberos['port'] ||= Settings.kerberos.https ? 8443 : 8088 - if Settings.kerberos['enabled'] && !Settings.omniauth.providers.map(&:name).include?('kerberos_spnego') - Settings.omniauth.providers << Settingslogic.new({ 'name' => 'kerberos_spnego' }) + if Settings.kerberos['enabled'] && !Settings.omniauth.providers.map(&:name).include?('kerberos') + Settings.omniauth.providers << Settingslogic.new({ 'name' => 'kerberos' }) end end diff --git a/config/initializers/7_redis.rb b/config/initializers/7_redis.rb index 415574e1ce1..1e2786db413 100644 --- a/config/initializers/7_redis.rb +++ b/config/initializers/7_redis.rb @@ -1,5 +1,9 @@ # frozen_string_literal: true +require 'gitlab/redis' + +Redis.raise_deprecations = true unless Rails.env.production? + # We set the instance variable directly to suppress warnings. # We cannot switch to the new behavior until we change all existing `redis.exists` calls to `redis.exists?`. # Some gems also need to be updated @@ -13,11 +17,6 @@ Redis::Client.prepend(Gitlab::Instrumentation::RedisInterceptor) # 1. Sidekiq # 2. Rails.cache # 3. HTTP clients -Gitlab::Redis::Cache.with { nil } -Gitlab::Redis::Queues.with { nil } -Gitlab::Redis::SharedState.with { nil } -Gitlab::Redis::TraceChunks.with { nil } -Gitlab::Redis::RateLimiting.with { nil } -Gitlab::Redis::Sessions.with { nil } -Gitlab::Redis::DuplicateJobs.with { nil } -Gitlab::Redis::SidekiqStatus.with { nil } +Gitlab::Redis::ALL_CLASSES.each do |redis_instance| + redis_instance.with { nil } +end diff --git a/config/initializers/active_record_keyset_pagination.rb b/config/initializers/active_record_keyset_pagination.rb index f5692c95276..7f830cafd31 100644 --- a/config/initializers/active_record_keyset_pagination.rb +++ b/config/initializers/active_record_keyset_pagination.rb @@ -1,10 +1,36 @@ # frozen_string_literal: true module PaginatorExtension + KEYSET_ORDER_PLACEHOLDER = Object.new + # This method loads the records for the requested page and returns a keyset paginator object. def keyset_paginate(cursor: nil, per_page: 20, keyset_order_options: {}) Gitlab::Pagination::Keyset::Paginator.new(scope: self.dup, cursor: cursor, per_page: per_page, keyset_order_options: keyset_order_options) end + + # This modifies `reverse_sql_order` so that it is aware of Gitlab::Pagination::Keyset::Order which + # can reverse order clauses with NULLS LAST because we provide it a `reversed_order_expression`. + # This allows us to use `#last` on these relations. + # + # Overrides https://github.com/rails/rails/blob/v6.1.6.1/activerecord/lib/active_record/relation/query_methods.rb#L1331-L1358 + def reverse_sql_order(order_query) + return super if order_query.empty? + + keyset_order_values = [] + + order_query_without_keyset = order_query.flat_map do |o| + next o unless o.is_a?(Gitlab::Pagination::Keyset::Order) + + keyset_order_values << o + KEYSET_ORDER_PLACEHOLDER + end + + super(order_query_without_keyset).map do |o| + next o unless o == KEYSET_ORDER_PLACEHOLDER + + keyset_order_values.shift.reversed_order + end + end end ActiveSupport.on_load(:active_record) do diff --git a/config/initializers/doorkeeper.rb b/config/initializers/doorkeeper.rb index 867f3fd47cc..918b2767c4d 100644 --- a/config/initializers/doorkeeper.rb +++ b/config/initializers/doorkeeper.rb @@ -90,7 +90,9 @@ Doorkeeper.configure do # Check out the wiki for more information on customization access_token_methods :from_access_token_param, :from_bearer_authorization, :from_bearer_param - hash_token_secrets using: '::Gitlab::DoorkeeperSecretStoring::Pbkdf2Sha512', fallback: :plain + hash_token_secrets using: '::Gitlab::DoorkeeperSecretStoring::Token::Pbkdf2Sha512', fallback: :plain + + hash_application_secrets using: '::Gitlab::DoorkeeperSecretStoring::Secret::Pbkdf2Sha512', fallback: :plain # Specify what grant flows are enabled in array of Strings. The valid # strings and the flows they enable are: diff --git a/config/initializers/excon.rb b/config/initializers/excon.rb new file mode 100644 index 00000000000..132cb2ff15b --- /dev/null +++ b/config/initializers/excon.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +require 'openssl' + +# Excon ships its own bundled certs by default. Avoid confusion +# by using the same set that GitLab uses. +Excon.defaults[:ssl_ca_file] = OpenSSL::X509::DEFAULT_CERT_FILE +Excon.defaults[:ssl_verify_peer] = true diff --git a/config/initializers/gitlab_experiment.rb b/config/initializers/gitlab_experiment.rb index a201a075f62..6d2795caf51 100644 --- a/config/initializers/gitlab_experiment.rb +++ b/config/initializers/gitlab_experiment.rb @@ -65,7 +65,7 @@ Gitlab::Experiment.configure do |config| # permitted, and will be sent along using Gitlab::Tracking::StandardContext. # config.tracking_behavior = lambda do |action, event_args| - Gitlab::Tracking.event(name, action.to_s, **event_args.merge( + Gitlab::Tracking.event(name, action, **event_args.merge( context: (event_args[:context] || []) << SnowplowTracker::SelfDescribingJson.new( 'iglu:com.gitlab/gitlab_experiment/jsonschema/1-0-0', signature ) diff --git a/config/initializers/load_balancing.rb b/config/initializers/load_balancing.rb index 290481f7296..bcc62a6be5d 100644 --- a/config/initializers/load_balancing.rb +++ b/config/initializers/load_balancing.rb @@ -2,15 +2,6 @@ Gitlab::Application.configure do |config| config.middleware.use(Gitlab::Database::LoadBalancing::RackMiddleware) - - # We need re-rerun the setup when code reloads in development - config.reloader.to_prepare do - if Rails.env.development? || Rails.env.test? - Gitlab::Database::LoadBalancing.base_models.each do |model| - Gitlab::Database::LoadBalancing::Setup.new(model).setup - end - end - end end Gitlab::Database::LoadBalancing.base_models.each do |model| @@ -23,8 +14,9 @@ Gitlab::Database::LoadBalancing.base_models.each do |model| # information. Gitlab::Database::LoadBalancing::Setup.new(model).setup + # We need re-rerun the setup when code reloads in development Rails.application.reloader.to_prepare do - if Rails.env.development? + if Rails.env.development? || Rails.env.test? Gitlab::Database::LoadBalancing::Setup.new(model).setup end end diff --git a/config/initializers/lookbook.rb b/config/initializers/lookbook.rb deleted file mode 100644 index 4cb1b827286..00000000000 --- a/config/initializers/lookbook.rb +++ /dev/null @@ -1,14 +0,0 @@ -# frozen_string_literal: true - -if Rails.env.development? - # :nocov: Lookbook is only available in development - Lookbook::ApplicationController.class_eval do - content_security_policy false - end - - Rails.application.configure do - config.lookbook.experimental_features = [:pages] - config.lookbook.page_paths = ["#{config.root}/spec/components/docs"] - end - # :nocov: -end diff --git a/config/initializers/microsoft_graph_mailer.rb b/config/initializers/microsoft_graph_mailer.rb new file mode 100644 index 00000000000..45fdef1c57d --- /dev/null +++ b/config/initializers/microsoft_graph_mailer.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +if Gitlab.config.microsoft_graph_mailer.enabled + ActionMailer::Base.delivery_method = :microsoft_graph + + ActionMailer::Base.microsoft_graph_settings = { + user_id: Gitlab.config.microsoft_graph_mailer.user_id, + tenant: Gitlab.config.microsoft_graph_mailer.tenant, + client_id: Gitlab.config.microsoft_graph_mailer.client_id, + client_secret: Gitlab.config.microsoft_graph_mailer.client_secret, + azure_ad_endpoint: Gitlab.config.microsoft_graph_mailer.azure_ad_endpoint, + graph_endpoint: Gitlab.config.microsoft_graph_mailer.graph_endpoint + } +end diff --git a/config/initializers/omniauth.rb b/config/initializers/omniauth.rb index 38bd1034b36..2454b5ea818 100644 --- a/config/initializers/omniauth.rb +++ b/config/initializers/omniauth.rb @@ -11,6 +11,17 @@ if Gitlab::Auth::Ldap::Config.enabled? end end +module OmniAuth + module Strategies + class AzureActivedirectoryV2 + # override until https://github.com/RIPAGlobal/omniauth-azure-activedirectory-v2/pull/6 is merged + def callback_url + full_host + callback_path + end + end + end +end + OmniAuth.config.full_host = Gitlab::OmniauthInitializer.full_host OmniAuth.config.allowed_request_methods = [:post] diff --git a/config/initializers/postgres_partitioning.rb b/config/initializers/postgres_partitioning.rb index 4de6e706f16..e7f29ee1a84 100644 --- a/config/initializers/postgres_partitioning.rb +++ b/config/initializers/postgres_partitioning.rb @@ -1,43 +1,48 @@ # frozen_string_literal: true -Gitlab::Database::Partitioning.register_models([ - AuditEvent, - WebHookLog, - LooseForeignKeys::DeletedRecord, - Gitlab::Database::BackgroundMigration::BatchedJobTransitionLog -]) +Gitlab::Database::Partitioning.register_models( + [ + AuditEvent, + WebHookLog, + LooseForeignKeys::DeletedRecord, + Gitlab::Database::BackgroundMigration::BatchedJobTransitionLog + ]) if Gitlab.ee? - Gitlab::Database::Partitioning.register_models([ - IncidentManagement::PendingEscalations::Alert, - IncidentManagement::PendingEscalations::Issue - ]) + Gitlab::Database::Partitioning.register_models( + [ + IncidentManagement::PendingEscalations::Alert, + IncidentManagement::PendingEscalations::Issue, + Security::Finding + ]) else - Gitlab::Database::Partitioning.register_tables([ - { - limit_connection_names: %i[main], - table_name: 'incident_management_pending_alert_escalations', - partitioned_column: :process_at, strategy: :monthly - }, - { - limit_connection_names: %i[main], - table_name: 'incident_management_pending_issue_escalations', - partitioned_column: :process_at, strategy: :monthly - } - ]) + Gitlab::Database::Partitioning.register_tables( + [ + { + limit_connection_names: %i[main], + table_name: 'incident_management_pending_alert_escalations', + partitioned_column: :process_at, strategy: :monthly + }, + { + limit_connection_names: %i[main], + table_name: 'incident_management_pending_issue_escalations', + partitioned_column: :process_at, strategy: :monthly + } + ]) end # The following tables are already defined as models unless Gitlab.jh? - Gitlab::Database::Partitioning.register_tables([ - # This should be synchronized with the following model: - # https://jihulab.com/gitlab-cn/gitlab/-/blob/main-jh/jh/app/models/phone/verification_code.rb - { - limit_connection_names: %i[main], - table_name: 'verification_codes', - partitioned_column: :created_at, strategy: :monthly - } - ]) + Gitlab::Database::Partitioning.register_tables( + [ + # This should be synchronized with the following model: + # https://jihulab.com/gitlab-cn/gitlab/-/blob/main-jh/jh/app/models/phone/verification_code.rb + { + limit_connection_names: %i[main], + table_name: 'verification_codes', + partitioned_column: :created_at, strategy: :monthly + } + ]) end Gitlab::Database::Partitioning.sync_partitions_ignore_db_error diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb index 29df6da6ef1..262ef1dea21 100644 --- a/config/initializers/sidekiq.rb +++ b/config/initializers/sidekiq.rb @@ -127,3 +127,4 @@ end Sidekiq::Scheduled::Poller.prepend Gitlab::Patch::SidekiqPoller Sidekiq::Cron::Poller.prepend Gitlab::Patch::SidekiqPoller +Sidekiq::Cron::Poller.prepend Gitlab::Patch::SidekiqCronPoller diff --git a/config/initializers/sidekiq_cluster.rb b/config/initializers/sidekiq_cluster.rb index 2f9c1de47eb..6fd598b3e25 100644 --- a/config/initializers/sidekiq_cluster.rb +++ b/config/initializers/sidekiq_cluster.rb @@ -9,22 +9,23 @@ if ENV['ENABLE_SIDEKIQ_CLUSTER'] loop do sleep(5) + next if Process.ppid == parent + # In cluster mode it's possible that the master process is SIGKILL'd. In # this case the parent PID changes and we need to terminate ourselves. - if Process.ppid != parent - Process.kill(:TERM, Process.pid) - - # Allow sidekiq to cleanly terminate and push any running jobs back - # into the queue. We use the configured timeout and add a small - # grace period - sleep(Sidekiq.options[:timeout] + 5) - - # Signaling the Sidekiq Pgroup as KILL is not forwarded to - # a possible child process. In Sidekiq Cluster, all child Sidekiq - # processes are PGROUP leaders (each process has its own pgroup). - Process.kill(:KILL, 0) - break - end + + Process.kill(:TERM, Process.pid) + + # Allow sidekiq to cleanly terminate and push any running jobs back + # into the queue. We use the configured timeout and add a small + # grace period + sleep(Sidekiq.options[:timeout] + 5) + + # Signaling the Sidekiq Pgroup as KILL is not forwarded to + # a possible child process. In Sidekiq Cluster, all child Sidekiq + # processes are PGROUP leaders (each process has its own pgroup). + Process.kill(:KILL, 0) + break end end end diff --git a/config/initializers/wikicloth_redos_patch.rb b/config/initializers/wikicloth_redos_patch.rb index 4ff545dd6f7..95901378891 100644 --- a/config/initializers/wikicloth_redos_patch.rb +++ b/config/initializers/wikicloth_redos_patch.rb @@ -1,3 +1,27 @@ +# This file contains code based on the wikicloth project: +# https://github.com/nricciar/wikicloth +# +# Copyright (c) 2009 The wikicloth authors. +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# # frozen_string_literal: true require 'wikicloth' @@ -20,7 +44,10 @@ require 'digest/sha2' # - https://gitlab.com/gitlab-org/gitlab/-/issues/361266 # Guard to ensure we remember to delete this patch if they ever release a new version of wikicloth -raise 'New version of WikiCloth detected, please remove this patch' unless Gem::Version.new(WikiCloth::VERSION) == Gem::Version.new('0.8.1') +unless Gem::Version.new(WikiCloth::VERSION) == Gem::Version.new('0.8.1') + raise 'New version of WikiCloth detected, please either update the version for this check, ' \ + 'or remove this patch if no longer needed' +end # rubocop:disable Style/ClassAndModuleChildren # rubocop:disable Layout/SpaceAroundEqualsInParameterDefault @@ -43,6 +70,12 @@ raise 'New version of WikiCloth detected, please remove this patch' unless Gem:: # rubocop:disable Style/RegexpLiteralMixedPreserve # rubocop:disable Style/RedundantRegexpCharacterClass # rubocop:disable Performance/StringInclude +# rubocop:disable Layout/LineLength +# rubocop:disable Style/RedundantSelf +# rubocop:disable Style/SymbolProc +# rubocop:disable Layout/SpaceInsideParens +# rubocop:disable Style/GuardClause +# rubocop:disable Style/RedundantRegexpEscape module WikiCloth class WikiCloth def render(opt={}) @@ -218,3 +251,9 @@ end # rubocop:enable Style/RegexpLiteralMixedPreserve # rubocop:enable Style/RedundantRegexpCharacterClass # rubocop:enable Performance/StringInclude +# rubocop:enable Layout/LineLength +# rubocop:enable Style/RedundantSelf +# rubocop:enable Style/SymbolProc +# rubocop:enable Layout/SpaceInsideParens +# rubocop:enable Style/GuardClause +# rubocop:enable Style/RedundantRegexpEscape diff --git a/config/initializers/wikicloth_ruby_3_patch.rb b/config/initializers/wikicloth_ruby_3_patch.rb new file mode 100644 index 00000000000..d80383a125d --- /dev/null +++ b/config/initializers/wikicloth_ruby_3_patch.rb @@ -0,0 +1,272 @@ +# This file contains code based on the wikicloth project: +# https://github.com/nricciar/wikicloth +# +# Copyright (c) 2009 The wikicloth authors. +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# frozen_string_literal: true + +require 'wikicloth' +require 'wikicloth/wiki_buffer/var' + +# Adds patch for changes in this PRs: +# +# https://github.com/nricciar/wikicloth/pull/110 +# +# The maintainers are not releasing new versions, so we +# need to patch it here. +# +# If they ever do release a version, then we can remove this file. +# +# See: +# - https://gitlab.com/gitlab-org/gitlab/-/issues/372400 + +# Guard to ensure we remember to delete this patch if they ever release a new version of wikicloth +unless Gem::Version.new(WikiCloth::VERSION) == Gem::Version.new('0.8.1') + raise 'New version of WikiCloth detected, please either update the version for this check, ' \ + 'or remove this patch if no longer needed' +end + +# rubocop:disable Style/ClassAndModuleChildren +# rubocop:disable Style/HashSyntax +# rubocop:disable Layout/SpaceAfterComma +# rubocop:disable Style/RescueStandardError +# rubocop:disable Metrics/AbcSize +# rubocop:disable Metrics/CyclomaticComplexity +# rubocop:disable Metrics/PerceivedComplexity +# rubocop:disable Cop/LineBreakAroundConditionalBlock +# rubocop:disable Layout/EmptyLineAfterGuardClause +# rubocop:disable Performance/ReverseEach +# rubocop:disable Style/PerlBackrefs +# rubocop:disable Style/RedundantRegexpCharacterClass +# rubocop:disable Performance/StringInclude +# rubocop:disable Style/IfUnlessModifier +# rubocop:disable Layout/LineLength +# rubocop:disable Lint/DeprecatedClassMethods +# rubocop:disable Lint/UselessAssignment +# rubocop:disable Lint/RedundantStringCoercion +# rubocop:disable Style/StringLiteralsInInterpolation +# rubocop:disable Lint/UriEscapeUnescape +# rubocop:disable Style/For +# rubocop:disable Style/SlicingWithRange +# rubocop:disable Style/GuardClause +# rubocop:disable Style/ZeroLengthPredicate +# rubocop:disable Cop/LineBreakAfterGuardClauses +# rubocop:disable Layout/MultilineHashBraceLayout +module WikiCloth + class WikiCloth + class MathExtension < Extension + # <math>latex markup</math> + # + element 'math', :skip_html => true, :run_globals => false do |buffer| + blahtex_path = @options[:blahtex_path] || '/usr/bin/blahtex' + blahtex_png_path = @options[:blahtex_png_path] || '/tmp' + blahtex_options = @options[:blahtex_options] || '--texvc-compatible-commands --mathml-version-1-fonts --disallow-plane-1 --spacing strict' + + if File.exists?(blahtex_path) && @options[:math_formatter] != :google + begin + # pass tex markup to blahtex + response = IO.popen("#{blahtex_path} #{blahtex_options} --png --mathml --png-directory #{blahtex_png_path}","w+") do |pipe| + pipe.write(buffer.element_content) + pipe.close_write + pipe.gets + end + + xml_response = REXML::Document.new(response).root + + if @options[:blahtex_html_prefix] + # render as embedded image + file_md5 = xml_response.elements["png/md5"].text + "<img src=\"#{File.join(@options[:blahtex_html_prefix],"#{file_md5}.png")}\" />" + else + # render as mathml + html = xml_response.elements["mathml/markup"].text + "<math xmlns=\"http://www.w3.org/1998/Math/MathML\">#{xml_response.elements["mathml/markup"].children.to_s}</math>" + end + rescue => err + # blahtex error + "<span class=\"error\">#{I18n.t("unable to parse mathml", :error => err)}</span>" + end + else + # if blahtex does not exist fallback to google charts api + # This is the patched line from: + # https://github.com/nricciar/wikicloth/pull/110/files#diff-f0cb4c400957bbdcc4c97d69d2aa7f48d8ba56c5943e484863f620605d7d17d4R37 + encoded_string = URI.encode_www_form_component(buffer.element_content) + "<img src=\"https://chart.googleapis.com/chart?cht=tx&chl=#{encoded_string}\" />" + end + end + end + + class WikiBuffer::Var < WikiBuffer + def default_functions(name,params) + case name + when "#if" + params.first.blank? ? params[2] : params[1] + when "#switch" + match = params.first + default = nil + for p in params[1..-1] + temp = p.split("=") + if p !~ /=/ && temp.length == 1 && p == params.last + return p + elsif temp.instance_of?(Array) && temp.length > 0 + test = temp.first.strip + default = temp[1..-1].join("=").strip if test == "#default" + return temp[1..-1].join("=").strip if test == match || (test == "none" && match.blank?) + end + end + default.nil? ? "" : default + when "#expr" + begin + ExpressionParser::Parser.new.parse(params.first) + rescue RuntimeError + I18n.t('expression error', :error => $!) + end + when "#ifexpr" + val = false + begin + val = ExpressionParser::Parser.new.parse(params.first) + rescue RuntimeError + end + if val + params[1] + else + params[2] + end + when "#ifeq" + if params[0] =~ /^[0-9A-Fa-f]+$/ && params[1] =~ /^[0-9A-Fa-f]+$/ + params[0].to_i == params[1].to_i ? params[2] : params[3] + else + params[0] == params[1] ? params[2] : params[3] + end + when "#len" + params.first.length + when "#sub" + params.first[params[1].to_i,params[2].to_i] + when "#pad" + case params[3] + when "right" + params[0].ljust(params[1].to_i,params[2]) + when "center" + params[0].center(params[1].to_i,params[2]) + else + params[0].rjust(params[1].to_i,params[2]) + end + when "#iferror" + params.first =~ /error/ ? params[1] : params[2] + when "#capture" + @options[:params][params.first] = params[1] + "" + when "urlencode" + # This is the patched line from: + # https://github.com/nricciar/wikicloth/pull/110/files#diff-f262faf4fadb222cca87185be0fb65b3f49659abc840794cc83a736d41310fb1R170 + URI.encode_www_form_component(params.first) + when "lc" + params.first.downcase + when "uc" + params.first.upcase + when "ucfirst" + params.first.capitalize + when "lcfirst" + params.first[0,1].downcase + params.first[1..-1] + when "anchorencode" + params.first.gsub(/\s+/,'_') + when "plural" + begin + expr_value = ExpressionParser::Parser.new.parse(params.first) + expr_value.to_i == 1 ? params[1] : params[2] + rescue RuntimeError + I18n.t('expression error', :error => $!) + end + when "ns" + values = { + "" => "", "0" => "", + "1" => localise_ns("Talk"), "talk" => localise_ns("Talk"), + "6" => localise_ns("File"), "file" => localise_ns("File"), "image" => localise_ns("File"), + "10" => localise_ns("Template"), "template" => localise_ns("Template"), + "14" => localise_ns("Category"), "category" => localise_ns("Category"), + "-1" => localise_ns("Special"), "special" => localise_ns("Special"), + "12" => localise_ns("Help"), "help" => localise_ns("Help"), + "-2" => localise_ns("Media"), "media" => localise_ns("Media") } + + values[localise_ns(params.first,:en).gsub(/\s+/,'_').downcase] + when "#language" + WikiNamespaces.language_name(params.first) + when "#tag" + return "" if params.empty? + elem = Builder::XmlMarkup.new + return elem.tag!(params.first) if params.length == 1 + return elem.tag!(params.first) { |e| e << params.last } if params.length == 2 + tag_attrs = {} + params[1..-2].each do |attr| + tag_attrs[$1] = $2 if attr =~ /^\s*([\w]+)\s*=\s*"(.*)"\s*$/ + end + elem.tag!(params.first,tag_attrs) { |e| e << params.last } + when "debug" + ret = nil + case params.first + when "param" + @options[:buffer].buffers.reverse.each do |b| + if b.instance_of?(WikiBuffer::HTMLElement) && b.element_name == "template" + ret = b.get_param(params[1]) + end + end + ret + when "buffer" + ret = "<pre>" + buffer = @options[:buffer].buffers + buffer.each do |b| + ret += " --- #{b.class}" + ret += b.instance_of?(WikiBuffer::HTMLElement) ? " -- #{b.element_name}\n" : " -- #{b.data}\n" + end + "#{ret}</pre>" + end + end + end + end + end +end +# rubocop:enable Style/ClassAndModuleChildren +# rubocop:enable Style/HashSyntax +# rubocop:enable Layout/SpaceAfterComma +# rubocop:enable Style/RescueStandardError +# rubocop:enable Metrics/AbcSize +# rubocop:enable Metrics/CyclomaticComplexity +# rubocop:enable Metrics/PerceivedComplexity +# rubocop:enable Cop/LineBreakAroundConditionalBlock +# rubocop:enable Layout/EmptyLineAfterGuardClause +# rubocop:enable Performance/ReverseEach +# rubocop:enable Style/PerlBackrefs +# rubocop:enable Style/RedundantRegexpCharacterClass +# rubocop:enable Performance/StringInclude +# rubocop:enable Style/IfUnlessModifier +# rubocop:enable Layout/LineLength +# rubocop:enable Lint/DeprecatedClassMethods +# rubocop:enable Lint/UselessAssignment +# rubocop:enable Lint/RedundantStringCoercion +# rubocop:enable Style/StringLiteralsInInterpolation +# rubocop:enable Lint/UriEscapeUnescape +# rubocop:enable Style/For +# rubocop:enable Style/SlicingWithRange +# rubocop:enable Style/GuardClause +# rubocop:enable Style/ZeroLengthPredicate +# rubocop:enable Cop/LineBreakAfterGuardClauses +# rubocop:enable Layout/MultilineHashBraceLayout diff --git a/config/initializers/zz_metrics.rb b/config/initializers/zz_metrics.rb index 5e6c1abdda6..940d8eed61f 100644 --- a/config/initializers/zz_metrics.rb +++ b/config/initializers/zz_metrics.rb @@ -17,7 +17,6 @@ if Gitlab::Metrics.enabled? && !Rails.env.test? && !(Rails.env.development? && defined?(Rails::Generators)) require 'pathname' require 'connection_pool' - require 'method_source' # These are manually require'd so the classes are registered properly with # ActiveSupport. @@ -40,6 +39,9 @@ if Gitlab::Metrics.enabled? && !Rails.env.test? && !(Rails.env.development? && d if Gitlab::Runtime.puma? Gitlab::Metrics::RequestsRackMiddleware.initialize_metrics + Gitlab::Metrics::GlobalSearchSlis.initialize_slis! + elsif Gitlab.ee? && Gitlab::Runtime.sidekiq? + Gitlab::Metrics::GlobalSearchIndexingSlis.initialize_slis! end GC::Profiler.enable diff --git a/config/initializers_before_autoloader/000_inflections.rb b/config/initializers_before_autoloader/000_inflections.rb index 70c9ec0a0ba..dfd33938611 100644 --- a/config/initializers_before_autoloader/000_inflections.rb +++ b/config/initializers_before_autoloader/000_inflections.rb @@ -37,6 +37,7 @@ ActiveSupport::Inflector.inflections do |inflect| vulnerabilities_feedback vulnerability_feedback ) + inflect.acronym 'CDN' inflect.acronym 'EE' inflect.acronym 'JH' inflect.acronym 'CSP' diff --git a/config/initializers_before_autoloader/002_sidekiq.rb b/config/initializers_before_autoloader/002_sidekiq.rb index 9ffcf39d6fb..929bdeda996 100644 --- a/config/initializers_before_autoloader/002_sidekiq.rb +++ b/config/initializers_before_autoloader/002_sidekiq.rb @@ -9,5 +9,5 @@ require 'sidekiq/web' if Rails.env.development? - Sidekiq.default_worker_options[:backtrace] = true + Sidekiq.default_job_options[:backtrace] = true end diff --git a/config/metrics/aggregates/code_review.yml b/config/metrics/aggregates/code_review.yml index 2e1eab78fa3..e58707b20a5 100644 --- a/config/metrics/aggregates/code_review.yml +++ b/config/metrics/aggregates/code_review.yml @@ -116,6 +116,14 @@ - 'i_code_review_merge_request_widget_status_checks_expand_success' - 'i_code_review_merge_request_widget_status_checks_expand_warning' - 'i_code_review_merge_request_widget_status_checks_expand_failed' + - 'i_code_review_submit_review_approve' + - 'i_code_review_submit_review_comment' + - 'i_code_review_merge_request_widget_license_compliance_view' + - 'i_code_review_merge_request_widget_license_compliance_full_report_clicked' + - 'i_code_review_merge_request_widget_license_compliance_expand' + - 'i_code_review_merge_request_widget_license_compliance_expand_success' + - 'i_code_review_merge_request_widget_license_compliance_expand_warning' + - 'i_code_review_merge_request_widget_license_compliance_expand_failed' - name: code_review_category_monthly_active_users operator: OR source: redis @@ -220,6 +228,14 @@ - 'i_code_review_merge_request_widget_status_checks_expand_success' - 'i_code_review_merge_request_widget_status_checks_expand_warning' - 'i_code_review_merge_request_widget_status_checks_expand_failed' + - 'i_code_review_submit_review_approve' + - 'i_code_review_submit_review_comment' + - 'i_code_review_merge_request_widget_license_compliance_view' + - 'i_code_review_merge_request_widget_license_compliance_full_report_clicked' + - 'i_code_review_merge_request_widget_license_compliance_expand' + - 'i_code_review_merge_request_widget_license_compliance_expand_success' + - 'i_code_review_merge_request_widget_license_compliance_expand_warning' + - 'i_code_review_merge_request_widget_license_compliance_expand_failed' - name: code_review_extension_category_monthly_active_users operator: OR source: redis diff --git a/config/metrics/counts_28d/20210216174910_analytics_unique_visits_for_any_target_monthly.yml b/config/metrics/counts_28d/20210216174910_analytics_unique_visits_for_any_target_monthly.yml index e766c555d3a..fbf4be136cb 100644 --- a/config/metrics/counts_28d/20210216174910_analytics_unique_visits_for_any_target_monthly.yml +++ b/config/metrics/counts_28d/20210216174910_analytics_unique_visits_for_any_target_monthly.yml @@ -48,7 +48,6 @@ tier: - premium - ultimate performance_indicator_type: -- smau - gmau - paid_gmau milestone: "<13.9" diff --git a/config/metrics/counts_28d/20210216184454_code_review_total_unique_counts_monthly.yml b/config/metrics/counts_28d/20210216184454_code_review_total_unique_counts_monthly.yml index f2e72cb8fff..4d8e4409e73 100644 --- a/config/metrics/counts_28d/20210216184454_code_review_total_unique_counts_monthly.yml +++ b/config/metrics/counts_28d/20210216184454_code_review_total_unique_counts_monthly.yml @@ -13,62 +13,122 @@ data_source: redis_hll instrumentation_class: RedisHLLMetric options: events: + - i_code_review_click_diff_view_setting + - i_code_review_click_file_browser_setting + - i_code_review_click_single_file_mode_setting + - i_code_review_click_whitespace_setting + - i_code_review_create_note_in_ipynb_diff + - i_code_review_create_note_in_ipynb_diff_commit + - i_code_review_create_note_in_ipynb_diff_mr + - i_code_review_diff_hide_whitespace + - i_code_review_diff_multiple_files + - i_code_review_diff_show_whitespace + - i_code_review_diff_single_file + - i_code_review_diff_view_inline + - i_code_review_diff_view_parallel + - i_code_review_edit_mr_desc + - i_code_review_edit_mr_title + - i_code_review_file_browser_list_view + - i_code_review_file_browser_tree_view + - i_code_review_merge_request_widget_accessibility_expand + - i_code_review_merge_request_widget_accessibility_expand_failed + - i_code_review_merge_request_widget_accessibility_expand_success + - i_code_review_merge_request_widget_accessibility_expand_warning + - i_code_review_merge_request_widget_accessibility_full_report_clicked + - i_code_review_merge_request_widget_accessibility_view + - i_code_review_merge_request_widget_code_quality_expand + - i_code_review_merge_request_widget_code_quality_expand_failed + - i_code_review_merge_request_widget_code_quality_expand_success + - i_code_review_merge_request_widget_code_quality_expand_warning + - i_code_review_merge_request_widget_code_quality_full_report_clicked + - i_code_review_merge_request_widget_code_quality_view + - i_code_review_merge_request_widget_metrics_expand + - i_code_review_merge_request_widget_metrics_expand_failed + - i_code_review_merge_request_widget_metrics_expand_success + - i_code_review_merge_request_widget_metrics_expand_warning + - i_code_review_merge_request_widget_metrics_full_report_clicked + - i_code_review_merge_request_widget_metrics_view + - i_code_review_merge_request_widget_status_checks_expand + - i_code_review_merge_request_widget_status_checks_expand_failed + - i_code_review_merge_request_widget_status_checks_expand_success + - i_code_review_merge_request_widget_status_checks_expand_warning + - i_code_review_merge_request_widget_status_checks_full_report_clicked + - i_code_review_merge_request_widget_status_checks_view + - i_code_review_merge_request_widget_terraform_expand + - i_code_review_merge_request_widget_terraform_expand_failed + - i_code_review_merge_request_widget_terraform_expand_success + - i_code_review_merge_request_widget_terraform_expand_warning + - i_code_review_merge_request_widget_terraform_full_report_clicked + - i_code_review_merge_request_widget_terraform_view + - i_code_review_merge_request_widget_test_summary_expand + - i_code_review_merge_request_widget_test_summary_expand_failed + - i_code_review_merge_request_widget_test_summary_expand_success + - i_code_review_merge_request_widget_test_summary_expand_warning + - i_code_review_merge_request_widget_test_summary_full_report_clicked + - i_code_review_merge_request_widget_test_summary_view + - i_code_review_merge_request_widget_license_compliance_expand + - i_code_review_merge_request_widget_license_compliance_expand_failed + - i_code_review_merge_request_widget_license_compliance_expand_success + - i_code_review_merge_request_widget_license_compliance_warning + - i_code_review_merge_request_widget_license_compliance_full_report_clicked + - i_code_review_merge_request_widget_license_compliance_view - i_code_review_mr_diffs - - i_code_review_user_single_file_diffs - i_code_review_mr_single_file_diffs - - i_code_review_user_toggled_task_item_status - - i_code_review_user_create_mr - - i_code_review_user_close_mr - - i_code_review_user_reopen_mr - - i_code_review_user_approve_mr - - i_code_review_user_unapprove_mr - - i_code_review_user_resolve_thread - - i_code_review_user_unresolve_thread - - i_code_review_edit_mr_title - - i_code_review_edit_mr_desc - - i_code_review_user_merge_mr - - i_code_review_user_create_mr_comment - - i_code_review_user_edit_mr_comment - - i_code_review_user_remove_mr_comment - - i_code_review_user_create_review_note - - i_code_review_user_publish_review - - i_code_review_user_create_multiline_mr_comment - - i_code_review_user_edit_multiline_mr_comment - - i_code_review_user_remove_multiline_mr_comment + - i_code_review_mr_with_invalid_approvers + - i_code_review_post_merge_click_cherry_pick + - i_code_review_post_merge_click_revert + - i_code_review_post_merge_delete_branch + - i_code_review_post_merge_submit_cherry_pick_modal + - i_code_review_post_merge_submit_revert_modal + - i_code_review_total_suggestions_added + - i_code_review_total_suggestions_applied - i_code_review_user_add_suggestion - i_code_review_user_apply_suggestion - - i_code_review_user_assigned - - i_code_review_user_marked_as_draft - - i_code_review_user_unmarked_as_draft - - i_code_review_user_review_requested - i_code_review_user_approval_rule_added - i_code_review_user_approval_rule_deleted - i_code_review_user_approval_rule_edited - - i_code_review_user_vs_code_api_request - - i_code_review_user_create_mr_from_issue - - i_code_review_user_mr_discussion_locked - - i_code_review_user_mr_discussion_unlocked - - i_code_review_user_time_estimate_changed - - i_code_review_user_time_spent_changed + - i_code_review_user_approve_mr + - i_code_review_user_assigned - i_code_review_user_assignees_changed - - i_code_review_user_reviewers_changed - - i_code_review_user_milestone_changed + - i_code_review_user_close_mr + - i_code_review_user_create_mr + - i_code_review_user_create_mr_comment + - i_code_review_user_create_mr_from_issue + - i_code_review_user_create_multiline_mr_comment + - i_code_review_user_create_note_in_ipynb_diff + - i_code_review_user_create_note_in_ipynb_diff_commit + - i_code_review_user_create_note_in_ipynb_diff_mr + - i_code_review_user_create_review_note + - i_code_review_user_edit_mr_comment + - i_code_review_user_edit_multiline_mr_comment + - i_code_review_user_gitlab_cli_api_request + - i_code_review_user_jetbrains_api_request - i_code_review_user_labels_changed - - i_code_review_click_diff_view_setting - - i_code_review_click_single_file_mode_setting - - i_code_review_click_file_browser_setting - - i_code_review_click_whitespace_setting - - i_code_review_diff_view_inline - - i_code_review_diff_view_parallel - - i_code_review_file_browser_tree_view - - i_code_review_file_browser_list_view - - i_code_review_diff_show_whitespace - - i_code_review_diff_hide_whitespace - - i_code_review_diff_single_file - - i_code_review_diff_multiple_files - i_code_review_user_load_conflict_ui + - i_code_review_user_marked_as_draft + - i_code_review_user_merge_mr + - i_code_review_user_milestone_changed + - i_code_review_user_mr_discussion_locked + - i_code_review_user_mr_discussion_unlocked + - i_code_review_user_publish_review + - i_code_review_user_remove_mr_comment + - i_code_review_user_remove_multiline_mr_comment + - i_code_review_user_reopen_mr - i_code_review_user_resolve_conflict + - i_code_review_user_resolve_thread + - i_code_review_user_resolve_thread_in_issue + - i_code_review_user_review_requested + - i_code_review_user_reviewers_changed - i_code_review_user_searches_diff + - i_code_review_user_single_file_diffs + - i_code_review_user_time_estimate_changed + - i_code_review_user_time_spent_changed + - i_code_review_user_toggled_task_item_status + - i_code_review_user_unapprove_mr + - i_code_review_user_unmarked_as_draft + - i_code_review_user_unresolve_thread + - i_code_review_user_vs_code_api_request + - i_code_review_widget_nothing_merge_click_new_file distribution: - ce - ee diff --git a/config/metrics/counts_28d/20210216184559_ci_templates_total_unique_counts_monthly.yml b/config/metrics/counts_28d/20210216184559_ci_templates_total_unique_counts_monthly.yml index a2a97eb7477..2c6b21b0f6f 100755 --- a/config/metrics/counts_28d/20210216184559_ci_templates_total_unique_counts_monthly.yml +++ b/config/metrics/counts_28d/20210216184559_ci_templates_total_unique_counts_monthly.yml @@ -51,6 +51,7 @@ options: - p_ci_templates_security_dast_api - p_ci_templates_security_dast_api_latest - p_ci_templates_security_container_scanning + - p_ci_templates_security_container_scanning_latest - p_ci_templates_security_dast_latest - p_ci_templates_security_dependency_scanning - p_ci_templates_security_api_fuzzing @@ -94,7 +95,9 @@ options: - p_ci_templates_jobs_code_intelligence - p_ci_templates_jobs_code_quality - p_ci_templates_jobs_dependency_scanning + - p_ci_templates_jobs_dependency_scanning_latest - p_ci_templates_jobs_license_scanning + - p_ci_templates_jobs_license_scanning_latest - p_ci_templates_jobs_deploy_ecs - p_ci_templates_jobs_deploy_ec2 - p_ci_templates_jobs_deploy @@ -140,7 +143,9 @@ options: - p_ci_templates_implicit_jobs_code_intelligence - p_ci_templates_implicit_jobs_code_quality - p_ci_templates_implicit_jobs_dependency_scanning + - p_ci_templates_implicit_jobs_dependency_scanning_latest - p_ci_templates_implicit_jobs_license_scanning + - p_ci_templates_implicit_jobs_license_scanning_latest - p_ci_templates_implicit_jobs_deploy_ecs - p_ci_templates_implicit_jobs_deploy_ec2 - p_ci_templates_implicit_auto_devops_deploy @@ -151,6 +156,7 @@ options: - p_ci_templates_implicit_jobs_browser_performance_testing_latest - p_ci_templates_implicit_jobs_cf_provision - p_ci_templates_implicit_jobs_build_latest + - p_ci_templates_implicit_jobs_sast_iac - p_ci_templates_implicit_security_sast - p_ci_templates_implicit_security_dast_runner_validation - p_ci_templates_implicit_security_dast_on_demand_scan @@ -162,16 +168,19 @@ options: - p_ci_templates_implicit_security_dast_api - p_ci_templates_implicit_security_dast_api_latest - p_ci_templates_implicit_security_container_scanning + - p_ci_templates_implicit_security_container_scanning_latest - p_ci_templates_implicit_security_dast_latest - p_ci_templates_implicit_security_dependency_scanning - p_ci_templates_implicit_security_api_fuzzing - p_ci_templates_implicit_security_dast - p_ci_templates_implicit_security_cluster_image_scanning + - p_ci_templates_implicit_security_sast_iac - p_ci_templates_kaniko - p_ci_templates_qualys_iac_security - p_ci_templates_liquibase - p_ci_templates_matlab - p_ci_templates_themekit + - p_ci_templates_katalon distribution: - ce - ee diff --git a/config/metrics/counts_28d/20210216184850_deploy_token_packages_total_unique_counts_monthly.yml b/config/metrics/counts_28d/20210216184850_deploy_token_packages_total_unique_counts_monthly.yml index 720165425fa..6b6c40495a6 100644 --- a/config/metrics/counts_28d/20210216184850_deploy_token_packages_total_unique_counts_monthly.yml +++ b/config/metrics/counts_28d/20210216184850_deploy_token_packages_total_unique_counts_monthly.yml @@ -16,17 +16,13 @@ options: events: - i_package_composer_deploy_token - i_package_conan_deploy_token - - i_package_container_deploy_token - - i_package_debian_deploy_token - i_package_generic_deploy_token - - i_package_golang_deploy_token - i_package_helm_deploy_token - i_package_maven_deploy_token - i_package_npm_deploy_token - i_package_nuget_deploy_token - i_package_pypi_deploy_token - i_package_rubygems_deploy_token - - i_package_tag_deploy_token - i_package_terraform_module_deploy_token distribution: - ee diff --git a/config/metrics/counts_28d/20210216184937_user_packages_total_unique_counts_monthly.yml b/config/metrics/counts_28d/20210216184937_user_packages_total_unique_counts_monthly.yml index 52e2eec71c5..e758f06bea9 100644 --- a/config/metrics/counts_28d/20210216184937_user_packages_total_unique_counts_monthly.yml +++ b/config/metrics/counts_28d/20210216184937_user_packages_total_unique_counts_monthly.yml @@ -15,17 +15,13 @@ options: events: - i_package_composer_user - i_package_conan_user - - i_package_container_user - - i_package_debian_user - i_package_generic_user - - i_package_golang_user - i_package_helm_user - i_package_maven_user - i_package_npm_user - i_package_nuget_user - i_package_pypi_user - i_package_rubygems_user - - i_package_tag_user - i_package_terraform_module_user distribution: - ee diff --git a/config/metrics/counts_28d/20220131143209_i_quickactions_attention_monthly.yml b/config/metrics/counts_28d/20220131143209_i_quickactions_attention_monthly.yml index f3fa80b4f25..7be45e79f51 100644 --- a/config/metrics/counts_28d/20220131143209_i_quickactions_attention_monthly.yml +++ b/config/metrics/counts_28d/20220131143209_i_quickactions_attention_monthly.yml @@ -6,7 +6,9 @@ product_stage: create product_group: code_review product_category: code_review value_type: number -status: active +status: removed +removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95241/ +milestone_removed: '15.4' milestone: '14.8' introduced_by_url: time_frame: 28d diff --git a/config/metrics/counts_28d/20220131153230_i_quickactions_remove_attention_monthly.yml b/config/metrics/counts_28d/20220131153230_i_quickactions_remove_attention_monthly.yml index 773fc5564bb..2b002bc3790 100644 --- a/config/metrics/counts_28d/20220131153230_i_quickactions_remove_attention_monthly.yml +++ b/config/metrics/counts_28d/20220131153230_i_quickactions_remove_attention_monthly.yml @@ -6,7 +6,9 @@ product_stage: create product_group: code_review product_category: code_review value_type: number -status: active +status: removed +removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95241/ +milestone_removed: '15.4' milestone: '14.8' introduced_by_url: time_frame: 28d diff --git a/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_commit_monthly.yml b/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_commit_monthly.yml new file mode 100644 index 00000000000..87ee4ff392b --- /dev/null +++ b/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_commit_monthly.yml @@ -0,0 +1,27 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_count_notes_in_ipynb_diff_commit_monthly +name: "count_notes_in_ipynb_diff_commit_monthly" +description: Monthly notes on ipynb commit diffs +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.0" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85398 +time_frame: 28d +data_source: redis_hll +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_create_note_in_ipynb_diff_commit +data_category: Optional +performance_indicator_type: [] +distribution: + - ce + - ee +tier: + - free + - premium + - ultimate diff --git a/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_monthly.yml b/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_monthly.yml new file mode 100644 index 00000000000..8a5a50572d8 --- /dev/null +++ b/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_monthly.yml @@ -0,0 +1,27 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_count_notes_in_ipynb_diff_monthly +name: "count_notes_in_ipynb_diff_monthly" +description: Monthly notes on ipynb diffs +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.0" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85398 +time_frame: 28d +data_source: redis_hll +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_create_note_in_ipynb_diff +data_category: Optional +performance_indicator_type: [] +distribution: + - ce + - ee +tier: + - free + - premium + - ultimate diff --git a/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_mr_monthly.yml b/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_mr_monthly.yml new file mode 100644 index 00000000000..907c1459293 --- /dev/null +++ b/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_mr_monthly.yml @@ -0,0 +1,27 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_count_notes_in_ipynb_diff_mr_monthly +name: "count_notes_in_ipynb_diff_mr_monthly" +description: Monthly notes on ipynb MR diffs +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.0" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85398 +time_frame: 28d +data_source: redis_hll +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_create_note_in_ipynb_diff_mr +data_category: Optional +performance_indicator_type: [] +distribution: + - ce + - ee +tier: + - free + - premium + - ultimate diff --git a/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_commit_monthly.yml b/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_commit_monthly.yml new file mode 100644 index 00000000000..e33149db20f --- /dev/null +++ b/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_commit_monthly.yml @@ -0,0 +1,27 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_count_users_with_notes_in_ipynb_diff_commit_monthly +name: "count_users_with_notes_in_ipynb_diff_commit_monthly" +description: Monthly unique users with notes on ipynb commit diffs +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.0" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85398 +time_frame: 28d +data_source: redis_hll +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_user_create_note_in_ipynb_diff_commit +data_category: Optional +performance_indicator_type: [] +distribution: + - ce + - ee +tier: + - free + - premium + - ultimate diff --git a/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_monthly.yml b/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_monthly.yml new file mode 100644 index 00000000000..b6f8e09039e --- /dev/null +++ b/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_monthly.yml @@ -0,0 +1,27 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_count_users_with_notes_in_ipynb_diff_monthly +name: "count_users_with_notes_in_ipynb_diff_monthly" +description: Monthly unique users with notes on ipynb diffs +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.0" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85398 +time_frame: 28d +data_source: redis_hll +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_user_create_note_in_ipynb_diff +data_category: Optional +performance_indicator_type: [] +distribution: + - ce + - ee +tier: + - free + - premium + - ultimate diff --git a/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_mr_monthly.yml b/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_mr_monthly.yml new file mode 100644 index 00000000000..732124e34f0 --- /dev/null +++ b/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_mr_monthly.yml @@ -0,0 +1,27 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_count_users_with_notes_in_ipynb_diff_mr_monthly +name: "count_users_with_notes_in_ipynb_diff_mr_monthly" +description: Monthly unique users with notes on ipynb MR diffs +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.0" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85398 +time_frame: 28d +data_source: redis_hll +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_user_create_note_in_ipynb_diff_mr +data_category: Optional +performance_indicator_type: [] +distribution: + - ce + - ee +tier: + - free + - premium + - ultimate diff --git a/config/metrics/counts_28d/20220531145023_p_ci_templates_katalon_monthly.yml b/config/metrics/counts_28d/20220531145023_p_ci_templates_katalon_monthly.yml new file mode 100644 index 00000000000..abbc30a5d10 --- /dev/null +++ b/config/metrics/counts_28d/20220531145023_p_ci_templates_katalon_monthly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.ci_templates.p_ci_templates_katalon_monthly +description: 'Monthly counts of times users have executed katalon_tests jobs' +product_section: 'ops' +product_stage: 'analytics' +product_group: 'pipeline_authoring' +product_category: 'pipeline_authoring' +value_type: number +status: active +milestone: "15.4" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86484 +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +options: + events: + - p_ci_templates_katalon +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_28d/20220627133135_i_code_review_submit_review_approve_monthly.yml b/config/metrics/counts_28d/20220627133135_i_code_review_submit_review_approve_monthly.yml new file mode 100644 index 00000000000..389b9d3ace5 --- /dev/null +++ b/config/metrics/counts_28d/20220627133135_i_code_review_submit_review_approve_monthly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_submit_review_approve_monthly +description: Count of unique users per month who submit a review and approve +product_stage: create +product_group: code_review +product_category: code_review +product_section: dev +value_type: number +status: active +milestone: '15.4' +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91073 +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_submit_review_approve +distribution: + - ce + - ee +tier: + - free + - premium + - ultimate diff --git a/config/metrics/counts_28d/20220627134108_i_code_review_submit_review_comment_monthly.yml b/config/metrics/counts_28d/20220627134108_i_code_review_submit_review_comment_monthly.yml new file mode 100644 index 00000000000..1891191bdcd --- /dev/null +++ b/config/metrics/counts_28d/20220627134108_i_code_review_submit_review_comment_monthly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_submit_review_comment_monthly +description: Count of unique users per month who submit a review with a comment +product_stage: create +product_group: code_review +product_category: code_review +product_section: dev +value_type: number +status: active +milestone: '15.4' +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91073 +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_submit_review_comment +distribution: + - ce + - ee +tier: + - free + - premium + - ultimate diff --git a/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_failed.yml b/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_failed.yml new file mode 100644 index 00000000000..3b19ef26a6a --- /dev/null +++ b/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_failed.yml @@ -0,0 +1,26 @@ +--- +data_category: optional +key_path: usage_activity_by_stage_monthly.manage.group_imports.gitlab_migration_failed +description: Count of group entities with failed status in GitLab Migration +product_section: dev +product_stage: manage +product_group: import +product_category: importers +value_type: number +status: active +time_frame: 28d +data_source: database +instrumentation_class: CountBulkImportsEntitiesMetric +options: + source_type: group_entity + status: -1 +performance_indicator_type: [] +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96062" diff --git a/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_finished.yml b/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_finished.yml new file mode 100644 index 00000000000..72af0e3e18b --- /dev/null +++ b/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_finished.yml @@ -0,0 +1,26 @@ +--- +data_category: optional +key_path: usage_activity_by_stage_monthly.manage.group_imports.gitlab_migration_finished +description: Count of group entities with finished status in GitLab Migration +product_section: dev +product_stage: manage +product_group: import +product_category: importers +value_type: number +status: active +time_frame: 28d +data_source: database +instrumentation_class: CountBulkImportsEntitiesMetric +options: + source_type: group_entity + status: 2 +performance_indicator_type: [] +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96062" diff --git a/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_timeout.yml b/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_timeout.yml new file mode 100644 index 00000000000..079fc328d73 --- /dev/null +++ b/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_timeout.yml @@ -0,0 +1,26 @@ +--- +data_category: optional +key_path: usage_activity_by_stage_monthly.manage.group_imports.gitlab_migration_timeout +description: Count of group entities with timeout status in GitLab Migration +product_section: dev +product_stage: manage +product_group: import +product_category: importers +value_type: number +status: active +time_frame: 28d +data_source: database +instrumentation_class: CountBulkImportsEntitiesMetric +options: + source_type: group_entity + status: 3 +performance_indicator_type: [] +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96062" diff --git a/config/metrics/counts_28d/20220823125645_bulk_import_entities_project_timeout.yml b/config/metrics/counts_28d/20220823125645_bulk_import_entities_project_timeout.yml new file mode 100644 index 00000000000..a9ead88577d --- /dev/null +++ b/config/metrics/counts_28d/20220823125645_bulk_import_entities_project_timeout.yml @@ -0,0 +1,26 @@ +--- +data_category: optional +key_path: usage_activity_by_stage_monthly.manage.project_imports.gitlab_migration_timeout +description: Count of project entities with timeout status in GitLab Migration +product_section: dev +product_stage: manage +product_group: import +product_category: importers +value_type: number +status: active +time_frame: 28d +data_source: database +instrumentation_class: CountBulkImportsEntitiesMetric +options: + source_type: project_entity + status: 3 +performance_indicator_type: [] +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96062" diff --git a/config/metrics/counts_28d/20220823125924_bulk_import_entities_project_failed.yml b/config/metrics/counts_28d/20220823125924_bulk_import_entities_project_failed.yml new file mode 100644 index 00000000000..74c45c05641 --- /dev/null +++ b/config/metrics/counts_28d/20220823125924_bulk_import_entities_project_failed.yml @@ -0,0 +1,26 @@ +--- +data_category: optional +key_path: usage_activity_by_stage_monthly.manage.project_imports.gitlab_migration_failed +description: Count of project entities with failed status in GitLab Migration +product_section: dev +product_stage: manage +product_group: import +product_category: importers +value_type: number +status: active +time_frame: 28d +data_source: database +instrumentation_class: CountBulkImportsEntitiesMetric +options: + source_type: project_entity + status: -1 +performance_indicator_type: [] +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96062" diff --git a/config/metrics/counts_28d/20220823130209_bulk_import_entities_project_finished.yml b/config/metrics/counts_28d/20220823130209_bulk_import_entities_project_finished.yml new file mode 100644 index 00000000000..228d6851020 --- /dev/null +++ b/config/metrics/counts_28d/20220823130209_bulk_import_entities_project_finished.yml @@ -0,0 +1,26 @@ +--- +data_category: optional +key_path: usage_activity_by_stage_monthly.manage.project_imports.gitlab_migration_finished +description: Count of project entities with finished status in GitLab Migration +product_section: dev +product_stage: manage +product_group: import +product_category: importers +value_type: number +status: active +time_frame: 28d +data_source: database +instrumentation_class: CountBulkImportsEntitiesMetric +options: + source_type: project_entity + status: 2 +performance_indicator_type: [] +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96062" diff --git a/config/metrics/counts_28d/20220825142533_i_testing_test_report_uploaded_monthly.yml b/config/metrics/counts_28d/20220825142533_i_testing_test_report_uploaded_monthly.yml new file mode 100644 index 00000000000..341d3810318 --- /dev/null +++ b/config/metrics/counts_28d/20220825142533_i_testing_test_report_uploaded_monthly.yml @@ -0,0 +1,26 @@ +--- +key_path: redis_hll_counters.testing.i_testing_test_report_uploaded_monthly +description: "MAU of junit test reports uploaded by customers per pipeline" +product_section: ops +product_stage: verify +product_group: pipeline_insights +product_category: testing +value_type: number +status: active +milestone: "15.4" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95112 +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +options: + events: + - i_testing_test_report_uploaded +performance_indicator_type: [] +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_28d/20220825232557_count_user_auth.yml b/config/metrics/counts_28d/20220825232557_count_user_auth.yml new file mode 100644 index 00000000000..dbcd665d616 --- /dev/null +++ b/config/metrics/counts_28d/20220825232557_count_user_auth.yml @@ -0,0 +1,24 @@ +--- +key_path: usage_activity_by_stage_monthly.manage.count_user_auth +description: Number of unique user logins +product_section: dev +product_stage: manage +product_group: authentication_and_authorization +product_category: system_access +value_type: number +status: active +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96321" +time_frame: 28d +data_source: database +instrumentation_class: CountUserAuthMetric +data_category: optional +performance_indicator_type: +- smau +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_28d/20220830104453_i_code_review_merge_request_widget_license_compliance_view_monthly.yml b/config/metrics/counts_28d/20220830104453_i_code_review_merge_request_widget_license_compliance_view_monthly.yml new file mode 100644 index 00000000000..60567037303 --- /dev/null +++ b/config/metrics/counts_28d/20220830104453_i_code_review_merge_request_widget_license_compliance_view_monthly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_merge_request_widget_license_compliance_view_monthly +description: The count of unique users (monthly) who were able to see the License Compliance widget extension +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538" +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_merge_request_widget_license_compliance_view +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_28d/20220830104500_i_code_review_merge_request_widget_license_compliance_full_report_clicked_monthly.yml b/config/metrics/counts_28d/20220830104500_i_code_review_merge_request_widget_license_compliance_full_report_clicked_monthly.yml new file mode 100644 index 00000000000..3b4c0012495 --- /dev/null +++ b/config/metrics/counts_28d/20220830104500_i_code_review_merge_request_widget_license_compliance_full_report_clicked_monthly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_merge_request_widget_license_compliance_full_report_clicked_monthly +description: The count of unique users (monthly) who clicked the Full Report button on the License Compliance widget extension +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538" +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_merge_request_widget_license_compliance_full_report_clicked +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_28d/20220830104507_i_code_review_merge_request_widget_license_compliance_expand_monthly.yml b/config/metrics/counts_28d/20220830104507_i_code_review_merge_request_widget_license_compliance_expand_monthly.yml new file mode 100644 index 00000000000..7b0ec9d0518 --- /dev/null +++ b/config/metrics/counts_28d/20220830104507_i_code_review_merge_request_widget_license_compliance_expand_monthly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_merge_request_widget_license_compliance_expand_monthly +description: The count of unique users (monthly) who expanded the License Compliance widget extension +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538" +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_merge_request_widget_license_compliance_expand +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_28d/20220830104514_i_code_review_merge_request_widget_license_compliance_expand_success_monthly.yml b/config/metrics/counts_28d/20220830104514_i_code_review_merge_request_widget_license_compliance_expand_success_monthly.yml new file mode 100644 index 00000000000..c6b7689c844 --- /dev/null +++ b/config/metrics/counts_28d/20220830104514_i_code_review_merge_request_widget_license_compliance_expand_success_monthly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_merge_request_widget_license_compliance_expand_success_monthly +description: The count of unique users (monthly) who expanded the License Compliance widget extension while it is in its Success state +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538" +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_merge_request_widget_license_compliance_expand_success +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_28d/20220830104521_i_code_review_merge_request_widget_license_compliance_expand_warning_monthly.yml b/config/metrics/counts_28d/20220830104521_i_code_review_merge_request_widget_license_compliance_expand_warning_monthly.yml new file mode 100644 index 00000000000..5e164b5c3bf --- /dev/null +++ b/config/metrics/counts_28d/20220830104521_i_code_review_merge_request_widget_license_compliance_expand_warning_monthly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_merge_request_widget_license_compliance_expand_warning_monthly +description: The count of unique users (monthly) who expanded the License Compliance widget extension while it is in its Warning state +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538" +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_merge_request_widget_license_compliance_expand_warning +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_28d/20220830104528_i_code_review_merge_request_widget_license_compliance_expand_failed_monthly.yml b/config/metrics/counts_28d/20220830104528_i_code_review_merge_request_widget_license_compliance_expand_failed_monthly.yml new file mode 100644 index 00000000000..69af6c70299 --- /dev/null +++ b/config/metrics/counts_28d/20220830104528_i_code_review_merge_request_widget_license_compliance_expand_failed_monthly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_merge_request_widget_license_compliance_expand_failed_monthly +description: The count of unique users (monthly) who expanded the License Compliance widget extension while it is in its Failed state +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538" +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_merge_request_widget_license_compliance_expand_failed +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_28d/20220905210112_users_visiting_environments_pages_monthly.yml b/config/metrics/counts_28d/20220905210112_users_visiting_environments_pages_monthly.yml new file mode 100644 index 00000000000..3eac5ca1c01 --- /dev/null +++ b/config/metrics/counts_28d/20220905210112_users_visiting_environments_pages_monthly.yml @@ -0,0 +1,26 @@ +--- +key_path: redis_hll_counters.environments.users_visiting_environments_pages_monthly +description: Monthly count of unique users visiting environments pages +product_section: ops +product_stage: release +product_group: release +product_category: environment_management +value_type: number +status: active +milestone: "15.4" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97063 +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +performance_indicator_type: [] +options: + events: + - users_visiting_environments_pages +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_28d/20220907080630_i_quickactions_timeline_monthly.yml b/config/metrics/counts_28d/20220907080630_i_quickactions_timeline_monthly.yml new file mode 100644 index 00000000000..f3f9499e9d9 --- /dev/null +++ b/config/metrics/counts_28d/20220907080630_i_quickactions_timeline_monthly.yml @@ -0,0 +1,27 @@ +--- +key_path: redis_hll_counters.quickactions.i_quickactions_timeline_monthly +name: quickactions_timeline_monthly +description: Count of MAU using the `/timeline` quick action +product_section: ops +product_stage: monitor +product_group: respond +product_category: incident_management +value_type: number +status: active +milestone: "15.4" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97020 +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +options: + events: + - i_quickactions_timeline +performance_indicator_type: [] +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_28d/20220907084347_p_ci_templates_implicit_security_sast_iac_monthly.yml b/config/metrics/counts_28d/20220907084347_p_ci_templates_implicit_security_sast_iac_monthly.yml new file mode 100644 index 00000000000..2f32d5a3569 --- /dev/null +++ b/config/metrics/counts_28d/20220907084347_p_ci_templates_implicit_security_sast_iac_monthly.yml @@ -0,0 +1,26 @@ +--- +key_path: redis_hll_counters.ci_templates.p_ci_templates_implicit_security_sast_iac_monthly +description: Count of pipelines with implicit SAST runs using the stable SAST IaC template +product_section: sec +product_stage: secure +product_group: "static_analysis" +product_category: SAST +value_type: number +status: active +milestone: "15.4" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86275 +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +performance_indicator_type: [] +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - p_ci_templates_implicit_jobs_sast_iac diff --git a/config/metrics/counts_28d/20220907102714_p_ci_templates_implicit_jobs_sast_iac_monthly.yml b/config/metrics/counts_28d/20220907102714_p_ci_templates_implicit_jobs_sast_iac_monthly.yml new file mode 100644 index 00000000000..368c15653e9 --- /dev/null +++ b/config/metrics/counts_28d/20220907102714_p_ci_templates_implicit_jobs_sast_iac_monthly.yml @@ -0,0 +1,26 @@ +--- +key_path: redis_hll_counters.ci_templates.p_ci_templates_implicit_jobs_sast_iac_monthly +description: Count of pipelines with implicit SAST jobs using the stable SAST IaC template +product_section: sec +product_stage: secure +product_group: "static_analysis" +product_category: SAST +value_type: number +status: active +milestone: "15.4" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86275 +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +performance_indicator_type: [] +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - p_ci_templates_implicit_jobs_sast_iac diff --git a/config/metrics/counts_28d/20220907202807_p_ci_templates_jobs_dependency_scanning_latest_monthly.yml b/config/metrics/counts_28d/20220907202807_p_ci_templates_jobs_dependency_scanning_latest_monthly.yml new file mode 100644 index 00000000000..9cbfee008c3 --- /dev/null +++ b/config/metrics/counts_28d/20220907202807_p_ci_templates_jobs_dependency_scanning_latest_monthly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.ci_templates.p_ci_templates_jobs_dependency_scanning_latest_monthly +description: Monthly counts for Dependency Scanning CI Latest template (Jobs folder) +product_section: sec +product_stage: secure +product_group: composition_analysis +product_category: dependency_scanning +value_type: number +status: active +milestone: "15.4" +introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97323' +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - p_ci_templates_jobs_dependency_scanning_latest diff --git a/config/metrics/counts_28d/20220907212005_p_ci_templates_security_container_scanning_latest_monthly.yml b/config/metrics/counts_28d/20220907212005_p_ci_templates_security_container_scanning_latest_monthly.yml new file mode 100644 index 00000000000..fbf263cd6bc --- /dev/null +++ b/config/metrics/counts_28d/20220907212005_p_ci_templates_security_container_scanning_latest_monthly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.ci_templates.p_ci_templates_security_container_scanning_latest_monthly +description: Monthly counts for Container Scanning CI Latest template (Security folder) +product_section: sec +product_stage: secure +product_group: composition_analysis +product_category: container_scanning +value_type: number +status: active +milestone: "15.4" +introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97323' +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - p_ci_templates_security_container_scanning_latest diff --git a/config/metrics/counts_28d/20220907215635_p_ci_templates_jobs_license_scanning_latest_monthly.yml b/config/metrics/counts_28d/20220907215635_p_ci_templates_jobs_license_scanning_latest_monthly.yml new file mode 100644 index 00000000000..b78e5bc65fa --- /dev/null +++ b/config/metrics/counts_28d/20220907215635_p_ci_templates_jobs_license_scanning_latest_monthly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.ci_templates.p_ci_templates_jobs_license_scanning_latest_monthly +description: Monthly counts for License Scanning CI Latest template (Jobs folder) +product_section: sec +product_stage: secure +product_group: composition_analysis +product_category: license_scanning +value_type: number +status: active +milestone: "15.4" +introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97323' +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - p_ci_templates_jobs_license_scanning_latest diff --git a/config/metrics/counts_28d/20220912161240_p_ci_templates_implicit_jobs_dependency_scanning_latest_monthly.yml b/config/metrics/counts_28d/20220912161240_p_ci_templates_implicit_jobs_dependency_scanning_latest_monthly.yml new file mode 100644 index 00000000000..a3a435fca09 --- /dev/null +++ b/config/metrics/counts_28d/20220912161240_p_ci_templates_implicit_jobs_dependency_scanning_latest_monthly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.ci_templates.p_ci_templates_implicit_jobs_dependency_scanning_latest_monthly +description: Monthly counts for implicit Dependency Scanning CI Latest template (Jobs folder) +product_section: sec +product_stage: secure +product_group: composition_analysis +product_category: dependency_scanning +value_type: number +status: active +milestone: "15.4" +introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97323' +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - p_ci_templates_implicit_jobs_dependency_scanning_latest diff --git a/config/metrics/counts_28d/20220912162308_p_ci_templates_implicit_jobs_license_scanning_latest_monthly.yml b/config/metrics/counts_28d/20220912162308_p_ci_templates_implicit_jobs_license_scanning_latest_monthly.yml new file mode 100644 index 00000000000..acc48ff2a44 --- /dev/null +++ b/config/metrics/counts_28d/20220912162308_p_ci_templates_implicit_jobs_license_scanning_latest_monthly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.ci_templates.p_ci_templates_implicit_jobs_license_scanning_latest_monthly +description: Monthly counts for implicit License Scanning CI Latest template (Jobs folder) +product_section: sec +product_stage: secure +product_group: composition_analysis +product_category: license_scanning +value_type: number +status: active +milestone: "15.4" +introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97323' +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - p_ci_templates_implicit_jobs_license_scanning_latest diff --git a/config/metrics/counts_28d/20220912162752_p_ci_templates_implicit_security_container_scanning_latest_monthly.yml b/config/metrics/counts_28d/20220912162752_p_ci_templates_implicit_security_container_scanning_latest_monthly.yml new file mode 100644 index 00000000000..2aebbc3a9eb --- /dev/null +++ b/config/metrics/counts_28d/20220912162752_p_ci_templates_implicit_security_container_scanning_latest_monthly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.ci_templates.p_ci_templates_implicit_security_container_scanning_latest_monthly +description: Monthly counts for implicit Container Scanning CI Latest template (Security folder) +product_section: sec +product_stage: secure +product_group: composition_analysis +product_category: container_scanning +value_type: number +status: active +milestone: "15.4" +introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97323' +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - p_ci_templates_implicit_security_container_scanning_latest diff --git a/config/metrics/counts_7d/20210216184452_code_review_total_unique_counts_weekly.yml b/config/metrics/counts_7d/20210216184452_code_review_total_unique_counts_weekly.yml index ab39318eb0d..60619deb786 100644 --- a/config/metrics/counts_7d/20210216184452_code_review_total_unique_counts_weekly.yml +++ b/config/metrics/counts_7d/20210216184452_code_review_total_unique_counts_weekly.yml @@ -13,62 +13,122 @@ data_source: redis_hll instrumentation_class: RedisHLLMetric options: events: - - i_code_review_mr_diffs - - i_code_review_user_single_file_diffs - - i_code_review_mr_single_file_diffs - - i_code_review_user_toggled_task_item_status - - i_code_review_user_create_mr - - i_code_review_user_close_mr - - i_code_review_user_reopen_mr - - i_code_review_user_approve_mr - - i_code_review_user_unapprove_mr - - i_code_review_user_resolve_thread - - i_code_review_user_unresolve_thread - - i_code_review_edit_mr_title - - i_code_review_edit_mr_desc - - i_code_review_user_merge_mr - - i_code_review_user_create_mr_comment - - i_code_review_user_edit_mr_comment - - i_code_review_user_remove_mr_comment - - i_code_review_user_create_review_note - - i_code_review_user_publish_review - - i_code_review_user_create_multiline_mr_comment - - i_code_review_user_edit_multiline_mr_comment - - i_code_review_user_remove_multiline_mr_comment - - i_code_review_user_add_suggestion - - i_code_review_user_apply_suggestion - - i_code_review_user_assigned - - i_code_review_user_marked_as_draft - - i_code_review_user_unmarked_as_draft - - i_code_review_user_review_requested - - i_code_review_user_approval_rule_added - - i_code_review_user_approval_rule_deleted - - i_code_review_user_approval_rule_edited - - i_code_review_user_vs_code_api_request - - i_code_review_user_create_mr_from_issue - - i_code_review_user_mr_discussion_locked - - i_code_review_user_mr_discussion_unlocked - - i_code_review_user_time_estimate_changed - - i_code_review_user_time_spent_changed - - i_code_review_user_assignees_changed - - i_code_review_user_reviewers_changed - - i_code_review_user_milestone_changed - - i_code_review_user_labels_changed - - i_code_review_click_diff_view_setting - - i_code_review_click_single_file_mode_setting - - i_code_review_click_file_browser_setting - - i_code_review_click_whitespace_setting - - i_code_review_diff_view_inline - - i_code_review_diff_view_parallel - - i_code_review_file_browser_tree_view - - i_code_review_file_browser_list_view - - i_code_review_diff_show_whitespace - - i_code_review_diff_hide_whitespace - - i_code_review_diff_single_file - - i_code_review_diff_multiple_files - - i_code_review_user_load_conflict_ui - - i_code_review_user_resolve_conflict - - i_code_review_user_searches_diff + - i_code_review_click_diff_view_setting + - i_code_review_click_file_browser_setting + - i_code_review_click_single_file_mode_setting + - i_code_review_click_whitespace_setting + - i_code_review_create_note_in_ipynb_diff + - i_code_review_create_note_in_ipynb_diff_commit + - i_code_review_create_note_in_ipynb_diff_mr + - i_code_review_diff_hide_whitespace + - i_code_review_diff_multiple_files + - i_code_review_diff_show_whitespace + - i_code_review_diff_single_file + - i_code_review_diff_view_inline + - i_code_review_diff_view_parallel + - i_code_review_edit_mr_desc + - i_code_review_edit_mr_title + - i_code_review_file_browser_list_view + - i_code_review_file_browser_tree_view + - i_code_review_merge_request_widget_accessibility_expand + - i_code_review_merge_request_widget_accessibility_expand_failed + - i_code_review_merge_request_widget_accessibility_expand_success + - i_code_review_merge_request_widget_accessibility_expand_warning + - i_code_review_merge_request_widget_accessibility_full_report_clicked + - i_code_review_merge_request_widget_accessibility_view + - i_code_review_merge_request_widget_code_quality_expand + - i_code_review_merge_request_widget_code_quality_expand_failed + - i_code_review_merge_request_widget_code_quality_expand_success + - i_code_review_merge_request_widget_code_quality_expand_warning + - i_code_review_merge_request_widget_code_quality_full_report_clicked + - i_code_review_merge_request_widget_code_quality_view + - i_code_review_merge_request_widget_metrics_expand + - i_code_review_merge_request_widget_metrics_expand_failed + - i_code_review_merge_request_widget_metrics_expand_success + - i_code_review_merge_request_widget_metrics_expand_warning + - i_code_review_merge_request_widget_metrics_full_report_clicked + - i_code_review_merge_request_widget_metrics_view + - i_code_review_merge_request_widget_status_checks_expand + - i_code_review_merge_request_widget_status_checks_expand_failed + - i_code_review_merge_request_widget_status_checks_expand_success + - i_code_review_merge_request_widget_status_checks_expand_warning + - i_code_review_merge_request_widget_status_checks_full_report_clicked + - i_code_review_merge_request_widget_status_checks_view + - i_code_review_merge_request_widget_terraform_expand + - i_code_review_merge_request_widget_terraform_expand_failed + - i_code_review_merge_request_widget_terraform_expand_success + - i_code_review_merge_request_widget_terraform_expand_warning + - i_code_review_merge_request_widget_terraform_full_report_clicked + - i_code_review_merge_request_widget_terraform_view + - i_code_review_merge_request_widget_test_summary_expand + - i_code_review_merge_request_widget_test_summary_expand_failed + - i_code_review_merge_request_widget_test_summary_expand_success + - i_code_review_merge_request_widget_test_summary_expand_warning + - i_code_review_merge_request_widget_test_summary_full_report_clicked + - i_code_review_merge_request_widget_test_summary_view + - i_code_review_merge_request_widget_license_compliance_expand + - i_code_review_merge_request_widget_license_compliance_expand_failed + - i_code_review_merge_request_widget_license_compliance_expand_success + - i_code_review_merge_request_widget_license_compliance_warning + - i_code_review_merge_request_widget_license_compliance_full_report_clicked + - i_code_review_merge_request_widget_license_compliance_view + - i_code_review_mr_diffs + - i_code_review_mr_single_file_diffs + - i_code_review_mr_with_invalid_approvers + - i_code_review_post_merge_click_cherry_pick + - i_code_review_post_merge_click_revert + - i_code_review_post_merge_delete_branch + - i_code_review_post_merge_submit_cherry_pick_modal + - i_code_review_post_merge_submit_revert_modal + - i_code_review_total_suggestions_added + - i_code_review_total_suggestions_applied + - i_code_review_user_add_suggestion + - i_code_review_user_apply_suggestion + - i_code_review_user_approval_rule_added + - i_code_review_user_approval_rule_deleted + - i_code_review_user_approval_rule_edited + - i_code_review_user_approve_mr + - i_code_review_user_assigned + - i_code_review_user_assignees_changed + - i_code_review_user_close_mr + - i_code_review_user_create_mr + - i_code_review_user_create_mr_comment + - i_code_review_user_create_mr_from_issue + - i_code_review_user_create_multiline_mr_comment + - i_code_review_user_create_note_in_ipynb_diff + - i_code_review_user_create_note_in_ipynb_diff_commit + - i_code_review_user_create_note_in_ipynb_diff_mr + - i_code_review_user_create_review_note + - i_code_review_user_edit_mr_comment + - i_code_review_user_edit_multiline_mr_comment + - i_code_review_user_gitlab_cli_api_request + - i_code_review_user_jetbrains_api_request + - i_code_review_user_labels_changed + - i_code_review_user_load_conflict_ui + - i_code_review_user_marked_as_draft + - i_code_review_user_merge_mr + - i_code_review_user_milestone_changed + - i_code_review_user_mr_discussion_locked + - i_code_review_user_mr_discussion_unlocked + - i_code_review_user_publish_review + - i_code_review_user_remove_mr_comment + - i_code_review_user_remove_multiline_mr_comment + - i_code_review_user_reopen_mr + - i_code_review_user_resolve_conflict + - i_code_review_user_resolve_thread + - i_code_review_user_resolve_thread_in_issue + - i_code_review_user_review_requested + - i_code_review_user_reviewers_changed + - i_code_review_user_searches_diff + - i_code_review_user_single_file_diffs + - i_code_review_user_time_estimate_changed + - i_code_review_user_time_spent_changed + - i_code_review_user_toggled_task_item_status + - i_code_review_user_unapprove_mr + - i_code_review_user_unmarked_as_draft + - i_code_review_user_unresolve_thread + - i_code_review_user_vs_code_api_request + - i_code_review_widget_nothing_merge_click_new_file distribution: - ce - ee diff --git a/config/metrics/counts_7d/20210216184557_ci_templates_total_unique_counts_weekly.yml b/config/metrics/counts_7d/20210216184557_ci_templates_total_unique_counts_weekly.yml index aa25ab379b9..16186a412b8 100755 --- a/config/metrics/counts_7d/20210216184557_ci_templates_total_unique_counts_weekly.yml +++ b/config/metrics/counts_7d/20210216184557_ci_templates_total_unique_counts_weekly.yml @@ -51,6 +51,7 @@ options: - p_ci_templates_security_dast_api - p_ci_templates_security_dast_api_latest - p_ci_templates_security_container_scanning + - p_ci_templates_security_container_scanning_latest - p_ci_templates_security_dast_latest - p_ci_templates_security_dependency_scanning - p_ci_templates_security_api_fuzzing @@ -94,7 +95,9 @@ options: - p_ci_templates_jobs_code_intelligence - p_ci_templates_jobs_code_quality - p_ci_templates_jobs_dependency_scanning + - p_ci_templates_jobs_dependency_scanning_latest - p_ci_templates_jobs_license_scanning + - p_ci_templates_jobs_license_scanning_latest - p_ci_templates_jobs_deploy_ecs - p_ci_templates_jobs_deploy_ec2 - p_ci_templates_jobs_deploy @@ -172,6 +175,7 @@ options: - p_ci_templates_liquibase - p_ci_templates_matlab - p_ci_templates_themekit + - p_ci_templates_katalon distribution: - ce - ee diff --git a/config/metrics/counts_7d/20210216184848_deploy_token_packages_total_unique_counts_weekly.yml b/config/metrics/counts_7d/20210216184848_deploy_token_packages_total_unique_counts_weekly.yml index 671b8a1785a..28adf6d6d01 100644 --- a/config/metrics/counts_7d/20210216184848_deploy_token_packages_total_unique_counts_weekly.yml +++ b/config/metrics/counts_7d/20210216184848_deploy_token_packages_total_unique_counts_weekly.yml @@ -15,17 +15,13 @@ options: events: - i_package_composer_deploy_token - i_package_conan_deploy_token - - i_package_container_deploy_token - - i_package_debian_deploy_token - i_package_generic_deploy_token - - i_package_golang_deploy_token - i_package_helm_deploy_token - i_package_maven_deploy_token - i_package_npm_deploy_token - i_package_nuget_deploy_token - i_package_pypi_deploy_token - i_package_rubygems_deploy_token - - i_package_tag_deploy_token - i_package_terraform_module_deploy_token distribution: - ee diff --git a/config/metrics/counts_7d/20210216184935_user_packages_total_unique_counts_weekly.yml b/config/metrics/counts_7d/20210216184935_user_packages_total_unique_counts_weekly.yml index 81181baa4ee..e7465b79667 100644 --- a/config/metrics/counts_7d/20210216184935_user_packages_total_unique_counts_weekly.yml +++ b/config/metrics/counts_7d/20210216184935_user_packages_total_unique_counts_weekly.yml @@ -15,17 +15,13 @@ options: events: - i_package_composer_user - i_package_conan_user - - i_package_container_user - - i_package_debian_user - i_package_generic_user - - i_package_golang_user - i_package_helm_user - i_package_maven_user - i_package_npm_user - i_package_nuget_user - i_package_pypi_user - i_package_rubygems_user - - i_package_tag_user - i_package_terraform_module_user distribution: - ee diff --git a/config/metrics/counts_7d/20220131143201_i_quickactions_attention_weekly.yml b/config/metrics/counts_7d/20220131143201_i_quickactions_attention_weekly.yml index 3e47fca1265..ec725e331e9 100644 --- a/config/metrics/counts_7d/20220131143201_i_quickactions_attention_weekly.yml +++ b/config/metrics/counts_7d/20220131143201_i_quickactions_attention_weekly.yml @@ -6,7 +6,9 @@ product_stage: create product_group: code_review product_category: code_review value_type: number -status: active +status: removed +removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95241/ +milestone_removed: '15.4' milestone: '14.8' introduced_by_url: time_frame: 7d diff --git a/config/metrics/counts_7d/20220131153223_i_quickactions_remove_attention_weekly.yml b/config/metrics/counts_7d/20220131153223_i_quickactions_remove_attention_weekly.yml index 315cac183d1..275776eb793 100644 --- a/config/metrics/counts_7d/20220131153223_i_quickactions_remove_attention_weekly.yml +++ b/config/metrics/counts_7d/20220131153223_i_quickactions_remove_attention_weekly.yml @@ -6,7 +6,9 @@ product_stage: create product_group: code_review product_category: code_review value_type: number -status: active +status: removed +removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95241/ +milestone_removed: '15.4' milestone: '14.8' introduced_by_url: time_frame: 7d diff --git a/config/metrics/counts_7d/20220504150641_count_notes_in_ipynb_diff_commit_weekly.yml b/config/metrics/counts_7d/20220504150641_count_notes_in_ipynb_diff_commit_weekly.yml new file mode 100644 index 00000000000..b59129cea27 --- /dev/null +++ b/config/metrics/counts_7d/20220504150641_count_notes_in_ipynb_diff_commit_weekly.yml @@ -0,0 +1,27 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_count_notes_in_ipynb_diff_commit_weekly +name: "count_notes_in_ipynb_diff_commit_weekly" +description: Weekly notes on ipynb commit diffs +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.0" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85398 +time_frame: 7d +data_source: redis_hll +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_create_note_in_ipynb_diff_commit +data_category: Optional +performance_indicator_type: [] +distribution: + - ce + - ee +tier: + - free + - premium + - ultimate diff --git a/config/metrics/counts_7d/20220504150641_count_notes_in_ipynb_diff_mr_weekly.yml b/config/metrics/counts_7d/20220504150641_count_notes_in_ipynb_diff_mr_weekly.yml new file mode 100644 index 00000000000..30947b412fe --- /dev/null +++ b/config/metrics/counts_7d/20220504150641_count_notes_in_ipynb_diff_mr_weekly.yml @@ -0,0 +1,27 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_count_notes_in_ipynb_diff_mr_weekly +name: "count_notes_in_ipynb_diff_mr_weekly" +description: Weekly notes on ipynb MR diffs +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.0" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85398 +time_frame: 7d +data_source: redis_hll +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_create_note_in_ipynb_diff_mr +data_category: Optional +performance_indicator_type: [] +distribution: + - ce + - ee +tier: + - free + - premium + - ultimate diff --git a/config/metrics/counts_7d/20220504150641_count_notes_in_ipynb_diff_weekly.yml b/config/metrics/counts_7d/20220504150641_count_notes_in_ipynb_diff_weekly.yml new file mode 100644 index 00000000000..d1f331ac1e1 --- /dev/null +++ b/config/metrics/counts_7d/20220504150641_count_notes_in_ipynb_diff_weekly.yml @@ -0,0 +1,27 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_count_notes_in_ipynb_diff_weekly +name: "count_notes_in_ipynb_diff_weekly" +description: Weekly notes on ipynb diffs +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.0" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85398 +time_frame: 7d +data_source: redis_hll +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_create_note_in_ipynb_diff +data_category: Optional +performance_indicator_type: [] +distribution: + - ce + - ee +tier: + - free + - premium + - ultimate diff --git a/config/metrics/counts_7d/20220504150641_count_users_with_notes_in_ipynb_diff_commit_weekly.yml b/config/metrics/counts_7d/20220504150641_count_users_with_notes_in_ipynb_diff_commit_weekly.yml new file mode 100644 index 00000000000..d57c100ec1e --- /dev/null +++ b/config/metrics/counts_7d/20220504150641_count_users_with_notes_in_ipynb_diff_commit_weekly.yml @@ -0,0 +1,27 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_count_users_with_notes_in_ipynb_diff_commit_weekly +name: "count_users_with_notes_in_ipynb_diff_commit_weekly" +description: Weekly unique users with notes on ipynb commit diffs +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.0" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85398 +time_frame: 7d +data_source: redis_hll +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_user_create_note_in_ipynb_diff_commit +data_category: Optional +performance_indicator_type: [] +distribution: + - ce + - ee +tier: + - free + - premium + - ultimate diff --git a/config/metrics/counts_7d/20220504150641_count_users_with_notes_in_ipynb_diff_mr_weekly.yml b/config/metrics/counts_7d/20220504150641_count_users_with_notes_in_ipynb_diff_mr_weekly.yml new file mode 100644 index 00000000000..64d856782c2 --- /dev/null +++ b/config/metrics/counts_7d/20220504150641_count_users_with_notes_in_ipynb_diff_mr_weekly.yml @@ -0,0 +1,27 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_count_users_with_notes_in_ipynb_diff_mr_weekly +name: "count_users_with_notes_in_ipynb_diff_mr_weekly" +description: Weekly unique users with notes on ipynb MR diffs +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.0" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85398 +time_frame: 7d +data_source: redis_hll +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_user_create_note_in_ipynb_diff_mr +data_category: Optional +performance_indicator_type: [] +distribution: + - ce + - ee +tier: + - free + - premium + - ultimate diff --git a/config/metrics/counts_7d/20220504150641_count_users_with_notes_in_ipynb_diff_weekly.yml b/config/metrics/counts_7d/20220504150641_count_users_with_notes_in_ipynb_diff_weekly.yml new file mode 100644 index 00000000000..3d01988de75 --- /dev/null +++ b/config/metrics/counts_7d/20220504150641_count_users_with_notes_in_ipynb_diff_weekly.yml @@ -0,0 +1,27 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_count_users_with_notes_in_ipynb_diff_weekly +name: "count_users_with_notes_in_ipynb_diff_weekly" +description: Weekly unique users with notes on ipynb diffs +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.0" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85398 +time_frame: 7d +data_source: redis_hll +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_user_create_note_in_ipynb_diff +data_category: Optional +performance_indicator_type: [] +distribution: + - ce + - ee +tier: + - free + - premium + - ultimate diff --git a/config/metrics/counts_7d/20220531145014_p_ci_templates_katalon_weekly.yml b/config/metrics/counts_7d/20220531145014_p_ci_templates_katalon_weekly.yml new file mode 100644 index 00000000000..f668646eacb --- /dev/null +++ b/config/metrics/counts_7d/20220531145014_p_ci_templates_katalon_weekly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.ci_templates.p_ci_templates_katalon_weekly +description: 'Weekly counts of times users have executed katalon_tests jobs' +product_section: 'ops' +product_stage: 'analytics' +product_group: 'pipeline_authoring' +product_category: 'pipeline_authoring' +value_type: number +status: active +milestone: "15.4" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86484 +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +options: + events: + - p_ci_templates_katalon +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_7d/20220627133128_i_code_review_submit_review_approve_weekly.yml b/config/metrics/counts_7d/20220627133128_i_code_review_submit_review_approve_weekly.yml new file mode 100644 index 00000000000..2275bf185d8 --- /dev/null +++ b/config/metrics/counts_7d/20220627133128_i_code_review_submit_review_approve_weekly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_submit_review_approve_weekly +description: Count of unique users per week who submit a review and approve +product_stage: create +product_group: code_review +product_category: code_review +product_section: dev +value_type: number +status: active +milestone: '15.4' +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91073 +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_submit_review_approve +distribution: + - ce + - ee +tier: + - free + - premium + - ultimate diff --git a/config/metrics/counts_7d/20220627134100_i_code_review_submit_review_comment_weekly.yml b/config/metrics/counts_7d/20220627134100_i_code_review_submit_review_comment_weekly.yml new file mode 100644 index 00000000000..16029f05626 --- /dev/null +++ b/config/metrics/counts_7d/20220627134100_i_code_review_submit_review_comment_weekly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_submit_review_comment_weekly +description: Count of unique users per week who submit a review with a comment +product_stage: create +product_group: code_review +product_category: code_review +product_section: dev +value_type: number +status: active +milestone: '15.4' +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91073 +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_submit_review_comment +distribution: + - ce + - ee +tier: + - free + - premium + - ultimate diff --git a/config/metrics/counts_7d/20220825142528_i_testing_test_report_uploaded_weekly.yml b/config/metrics/counts_7d/20220825142528_i_testing_test_report_uploaded_weekly.yml new file mode 100644 index 00000000000..814a50554c1 --- /dev/null +++ b/config/metrics/counts_7d/20220825142528_i_testing_test_report_uploaded_weekly.yml @@ -0,0 +1,26 @@ +--- +key_path: redis_hll_counters.testing.i_testing_test_report_uploaded_weekly +description: "MAU of junit test reports uploaded by customers per pipeline" +product_section: ops +product_stage: verify +product_group: pipeline_insights +product_category: testing +value_type: number +status: active +milestone: "15.4" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95112 +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +options: + events: + - i_testing_test_report_uploaded +performance_indicator_type: [] +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_7d/20220830104410_i_code_review_merge_request_widget_license_compliance_view_weekly.yml b/config/metrics/counts_7d/20220830104410_i_code_review_merge_request_widget_license_compliance_view_weekly.yml new file mode 100644 index 00000000000..6e9415bdc42 --- /dev/null +++ b/config/metrics/counts_7d/20220830104410_i_code_review_merge_request_widget_license_compliance_view_weekly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_merge_request_widget_license_compliance_view_weekly +description: The count of unique users (weekly) who were able to see the License Compliance widget extension +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538" +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_merge_request_widget_license_compliance_view +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_7d/20220830104418_i_code_review_merge_request_widget_license_compliance_full_report_clicked_weekly.yml b/config/metrics/counts_7d/20220830104418_i_code_review_merge_request_widget_license_compliance_full_report_clicked_weekly.yml new file mode 100644 index 00000000000..c3a8d7bfdfb --- /dev/null +++ b/config/metrics/counts_7d/20220830104418_i_code_review_merge_request_widget_license_compliance_full_report_clicked_weekly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_merge_request_widget_license_compliance_full_report_clicked_weekly +description: The count of unique users (weekly) who clicked the Full Report button on the License Compliance widget extension +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538" +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_merge_request_widget_license_compliance_full_report_clicked +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_7d/20220830104424_i_code_review_merge_request_widget_license_compliance_expand_weekly.yml b/config/metrics/counts_7d/20220830104424_i_code_review_merge_request_widget_license_compliance_expand_weekly.yml new file mode 100644 index 00000000000..69083c5ca2c --- /dev/null +++ b/config/metrics/counts_7d/20220830104424_i_code_review_merge_request_widget_license_compliance_expand_weekly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_merge_request_widget_license_compliance_expand_weekly +description: The count of unique users (weekly) who expanded the License Compliance widget extension +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538" +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_merge_request_widget_license_compliance_expand +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_7d/20220830104431_i_code_review_merge_request_widget_license_compliance_expand_success_weekly.yml b/config/metrics/counts_7d/20220830104431_i_code_review_merge_request_widget_license_compliance_expand_success_weekly.yml new file mode 100644 index 00000000000..d145ae31f38 --- /dev/null +++ b/config/metrics/counts_7d/20220830104431_i_code_review_merge_request_widget_license_compliance_expand_success_weekly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_merge_request_widget_license_compliance_expand_success_weekly +description: The count of unique users (weekly) who expanded the License Compliance widget extension while it is in its Success state +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538" +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_merge_request_widget_license_compliance_expand_success +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_7d/20220830104438_i_code_review_merge_request_widget_license_compliance_expand_warning_weekly.yml b/config/metrics/counts_7d/20220830104438_i_code_review_merge_request_widget_license_compliance_expand_warning_weekly.yml new file mode 100644 index 00000000000..58c3d89497f --- /dev/null +++ b/config/metrics/counts_7d/20220830104438_i_code_review_merge_request_widget_license_compliance_expand_warning_weekly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_merge_request_widget_license_compliance_expand_warning_weekly +description: The count of unique users (weekly) who expanded the License Compliance widget extension while it is in its Warning state +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538" +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_merge_request_widget_license_compliance_expand_warning +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_7d/20220830104446_i_code_review_merge_request_widget_license_compliance_expand_failed_weekly.yml b/config/metrics/counts_7d/20220830104446_i_code_review_merge_request_widget_license_compliance_expand_failed_weekly.yml new file mode 100644 index 00000000000..d8d9637f920 --- /dev/null +++ b/config/metrics/counts_7d/20220830104446_i_code_review_merge_request_widget_license_compliance_expand_failed_weekly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_merge_request_widget_license_compliance_expand_failed_weekly +description: The count of unique users (weekly) who expanded the License Compliance widget extension while it is in its Failed state +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538" +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +options: + events: + - i_code_review_merge_request_widget_license_compliance_expand_failed +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_7d/20220907080626_i_quickactions_timeline_weekly.yml b/config/metrics/counts_7d/20220907080626_i_quickactions_timeline_weekly.yml new file mode 100644 index 00000000000..5b10a9a93d4 --- /dev/null +++ b/config/metrics/counts_7d/20220907080626_i_quickactions_timeline_weekly.yml @@ -0,0 +1,27 @@ +--- +key_path: redis_hll_counters.quickactions.i_quickactions_timeline_weekly +name: quickactions_timeline_weekly +description: Count of WAU using the `/timeline` quick action +product_section: ops +product_stage: monitor +product_group: respond +product_category: incident_management +value_type: number +status: active +milestone: "15.4" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97020 +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +options: + events: + - i_quickactions_timeline +performance_indicator_type: [] +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_7d/20220907084343_p_ci_templates_implicit_security_sast_iac_weekly.yml b/config/metrics/counts_7d/20220907084343_p_ci_templates_implicit_security_sast_iac_weekly.yml new file mode 100644 index 00000000000..c8e4c285492 --- /dev/null +++ b/config/metrics/counts_7d/20220907084343_p_ci_templates_implicit_security_sast_iac_weekly.yml @@ -0,0 +1,26 @@ +--- +key_path: redis_hll_counters.ci_templates.p_ci_templates_implicit_security_sast_iac_weekly +description: Count of pipelines with implicit SAST runs using the stable SAST IaC template +product_section: sec +product_stage: secure +product_group: "static_analysis" +product_category: SAST +value_type: number +status: active +milestone: "15.4" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86275 +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +performance_indicator_type: [] +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - p_ci_templates_implicit_jobs_sast_iac diff --git a/config/metrics/counts_7d/20220907102710_p_ci_templates_implicit_jobs_sast_iac_weekly.yml b/config/metrics/counts_7d/20220907102710_p_ci_templates_implicit_jobs_sast_iac_weekly.yml new file mode 100644 index 00000000000..faf4df4b772 --- /dev/null +++ b/config/metrics/counts_7d/20220907102710_p_ci_templates_implicit_jobs_sast_iac_weekly.yml @@ -0,0 +1,26 @@ +--- +key_path: redis_hll_counters.ci_templates.p_ci_templates_implicit_jobs_sast_iac_weekly +description: Count of pipelines with implicit SAST jobs using the stable SAST IaC template +product_section: sec +product_stage: secure +product_group: "static_analysis" +product_category: SAST +value_type: number +status: active +milestone: "15.4" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86275 +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +performance_indicator_type: [] +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - p_ci_templates_implicit_jobs_sast_iac diff --git a/config/metrics/counts_7d/20220907202801_p_ci_templates_jobs_dependency_scanning_latest_weekly.yml b/config/metrics/counts_7d/20220907202801_p_ci_templates_jobs_dependency_scanning_latest_weekly.yml new file mode 100644 index 00000000000..c2a9f72ec8b --- /dev/null +++ b/config/metrics/counts_7d/20220907202801_p_ci_templates_jobs_dependency_scanning_latest_weekly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.ci_templates.p_ci_templates_jobs_dependency_scanning_latest_weekly +description: Weekly counts for Dependency Scanning CI Latest template (Jobs folder) +product_section: sec +product_stage: secure +product_group: composition_analysis +product_category: dependency_scanning +value_type: number +status: active +milestone: "15.4" +introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97323' +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - p_ci_templates_jobs_dependency_scanning_latest diff --git a/config/metrics/counts_7d/20220907211959_p_ci_templates_security_container_scanning_latest_weekly.yml b/config/metrics/counts_7d/20220907211959_p_ci_templates_security_container_scanning_latest_weekly.yml new file mode 100644 index 00000000000..8e7c6e8cbaf --- /dev/null +++ b/config/metrics/counts_7d/20220907211959_p_ci_templates_security_container_scanning_latest_weekly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.ci_templates.p_ci_templates_security_container_scanning_latest_weekly +description: Weekly counts for Container Scanning CI Latest template (Security folder) +product_section: sec +product_stage: secure +product_group: composition_analysis +product_category: container_scanning +value_type: number +status: active +milestone: "15.4" +introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97323' +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - p_ci_templates_security_container_scanning_latest diff --git a/config/metrics/counts_7d/20220907215629_p_ci_templates_jobs_license_scanning_latest_weekly.yml b/config/metrics/counts_7d/20220907215629_p_ci_templates_jobs_license_scanning_latest_weekly.yml new file mode 100644 index 00000000000..f3cb628da5a --- /dev/null +++ b/config/metrics/counts_7d/20220907215629_p_ci_templates_jobs_license_scanning_latest_weekly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.ci_templates.p_ci_templates_jobs_license_scanning_latest_weekly +description: Weekly counts for License Scanning CI Latest template (Jobs folder) +product_section: sec +product_stage: secure +product_group: composition_analysis +product_category: license_scanning +value_type: number +status: active +milestone: "15.4" +introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97323' +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - p_ci_templates_jobs_license_scanning_latest diff --git a/config/metrics/counts_7d/20220912161233_p_ci_templates_implicit_jobs_dependency_scanning_latest_weekly.yml b/config/metrics/counts_7d/20220912161233_p_ci_templates_implicit_jobs_dependency_scanning_latest_weekly.yml new file mode 100644 index 00000000000..243d24bcf50 --- /dev/null +++ b/config/metrics/counts_7d/20220912161233_p_ci_templates_implicit_jobs_dependency_scanning_latest_weekly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.ci_templates.p_ci_templates_implicit_jobs_dependency_scanning_latest_weekly +description: Weekly counts for implicit Dependency Scanning CI Latest template (Jobs folder) +product_section: sec +product_stage: secure +product_group: composition_analysis +product_category: dependency_scanning +value_type: number +status: active +milestone: "15.4" +introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97323' +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - p_ci_templates_implicit_jobs_dependency_scanning_latest diff --git a/config/metrics/counts_7d/20220912162301_p_ci_templates_implicit_jobs_license_scanning_latest_weekly.yml b/config/metrics/counts_7d/20220912162301_p_ci_templates_implicit_jobs_license_scanning_latest_weekly.yml new file mode 100644 index 00000000000..8fdd6c15c1d --- /dev/null +++ b/config/metrics/counts_7d/20220912162301_p_ci_templates_implicit_jobs_license_scanning_latest_weekly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.ci_templates.p_ci_templates_implicit_jobs_license_scanning_latest_weekly +description: Weekly counts for implicit License Scanning CI Latest template (Jobs folder) +product_section: sec +product_stage: secure +product_group: composition_analysis +product_category: license_scanning +value_type: number +status: active +milestone: "15.4" +introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97323' +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - p_ci_templates_implicit_jobs_license_scanning_latest diff --git a/config/metrics/counts_7d/20220912162745_p_ci_templates_implicit_security_container_scanning_latest_weekly.yml b/config/metrics/counts_7d/20220912162745_p_ci_templates_implicit_security_container_scanning_latest_weekly.yml new file mode 100644 index 00000000000..c3818fb819c --- /dev/null +++ b/config/metrics/counts_7d/20220912162745_p_ci_templates_implicit_security_container_scanning_latest_weekly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.ci_templates.p_ci_templates_implicit_security_container_scanning_latest_weekly +description: Weekly counts for implicit Container Scanning CI Latest template (Security folder) +product_section: sec +product_stage: secure +product_group: composition_analysis +product_category: container_scanning +value_type: number +status: active +milestone: "15.4" +introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97323' +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - p_ci_templates_implicit_security_container_scanning_latest diff --git a/config/metrics/counts_all/20210216175043_merge_request_create.yml b/config/metrics/counts_all/20210216175043_merge_request_create.yml index 3c2eb359f93..c71cfdcc3c0 100644 --- a/config/metrics/counts_all/20210216175043_merge_request_create.yml +++ b/config/metrics/counts_all/20210216175043_merge_request_create.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: merge_request + event: create distribution: - ce - ee diff --git a/config/metrics/counts_all/20210216180242_web_ide_commits.yml b/config/metrics/counts_all/20210216180242_web_ide_commits.yml index 3d1d416a7c2..f86b5bd5f84 100644 --- a/config/metrics/counts_all/20210216180242_web_ide_commits.yml +++ b/config/metrics/counts_all/20210216180242_web_ide_commits.yml @@ -10,6 +10,11 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: web_ide + event: commits_count + include_usage_prefix: false distribution: - ce - ee diff --git a/config/metrics/counts_all/20210216180244_web_ide_views.yml b/config/metrics/counts_all/20210216180244_web_ide_views.yml index 7bc32b3dbc9..63149b86e0f 100644 --- a/config/metrics/counts_all/20210216180244_web_ide_views.yml +++ b/config/metrics/counts_all/20210216180244_web_ide_views.yml @@ -10,6 +10,11 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: web_ide + event: views_count + include_usage_prefix: false distribution: - ce - ee diff --git a/config/metrics/counts_all/20210216180246_web_ide_merge_requests.yml b/config/metrics/counts_all/20210216180246_web_ide_merge_requests.yml index eb02d98dc85..f620447e615 100644 --- a/config/metrics/counts_all/20210216180246_web_ide_merge_requests.yml +++ b/config/metrics/counts_all/20210216180246_web_ide_merge_requests.yml @@ -10,6 +10,11 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: web_ide + event: merge_requests_count + include_usage_prefix: false distribution: - ce - ee diff --git a/config/metrics/counts_all/20210216180248_web_ide_previews.yml b/config/metrics/counts_all/20210216180248_web_ide_previews.yml index 4d581fc7f7e..c785e95e105 100644 --- a/config/metrics/counts_all/20210216180248_web_ide_previews.yml +++ b/config/metrics/counts_all/20210216180248_web_ide_previews.yml @@ -10,6 +10,11 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: web_ide + event: previews_count + include_usage_prefix: false distribution: - ce - ee diff --git a/config/metrics/counts_all/20210216180250_web_ide_terminals.yml b/config/metrics/counts_all/20210216180250_web_ide_terminals.yml index e8c1f425639..cd64a877341 100644 --- a/config/metrics/counts_all/20210216180250_web_ide_terminals.yml +++ b/config/metrics/counts_all/20210216180250_web_ide_terminals.yml @@ -10,6 +10,11 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: web_ide + event: terminals_count + include_usage_prefix: false distribution: - ce - ee diff --git a/config/metrics/counts_all/20210216180252_web_ide_pipelines.yml b/config/metrics/counts_all/20210216180252_web_ide_pipelines.yml index ae891775bf9..bfd0b69401e 100644 --- a/config/metrics/counts_all/20210216180252_web_ide_pipelines.yml +++ b/config/metrics/counts_all/20210216180252_web_ide_pipelines.yml @@ -10,6 +10,11 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: web_ide + event: pipelines_count + include_usage_prefix: false distribution: - ce - ee diff --git a/config/metrics/counts_all/20210216180740_design_management_designs_create.yml b/config/metrics/counts_all/20210216180740_design_management_designs_create.yml index 42f06ef563f..a6f04c56d56 100644 --- a/config/metrics/counts_all/20210216180740_design_management_designs_create.yml +++ b/config/metrics/counts_all/20210216180740_design_management_designs_create.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: design_management_designs + event: create distribution: - ce - ee diff --git a/config/metrics/counts_all/20210216180741_design_management_designs_update.yml b/config/metrics/counts_all/20210216180741_design_management_designs_update.yml index a4e526214aa..aedfed669a6 100644 --- a/config/metrics/counts_all/20210216180741_design_management_designs_update.yml +++ b/config/metrics/counts_all/20210216180741_design_management_designs_update.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: design_management_designs + event: update distribution: - ce - ee diff --git a/config/metrics/counts_all/20210216180743_design_management_designs_delete.yml b/config/metrics/counts_all/20210216180743_design_management_designs_delete.yml index 4eff2b1b0ff..0fee24ec9e2 100644 --- a/config/metrics/counts_all/20210216180743_design_management_designs_delete.yml +++ b/config/metrics/counts_all/20210216180743_design_management_designs_delete.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: design_management_designs + event: delete distribution: - ce - ee diff --git a/config/metrics/counts_all/20210216182006_source_code_pushes.yml b/config/metrics/counts_all/20210216182006_source_code_pushes.yml index 5c3c70f2496..3e4ef3ec76c 100644 --- a/config/metrics/counts_all/20210216182006_source_code_pushes.yml +++ b/config/metrics/counts_all/20210216182006_source_code_pushes.yml @@ -12,7 +12,7 @@ time_frame: all data_source: redis instrumentation_class: RedisMetric options: - counter_class: SourceCodeCounter + prefix: source_code event: pushes distribution: - ce diff --git a/config/metrics/counts_all/20210216182855_package_events_i_package_composer_delete_package.yml b/config/metrics/counts_all/20210216182855_package_events_i_package_composer_delete_package.yml index 4db8a831afc..2db1ff225d8 100644 --- a/config/metrics/counts_all/20210216182855_package_events_i_package_composer_delete_package.yml +++ b/config/metrics/counts_all/20210216182855_package_events_i_package_composer_delete_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_composer_delete_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182857_package_events_i_package_composer_pull_package.yml b/config/metrics/counts_all/20210216182857_package_events_i_package_composer_pull_package.yml index cb1e984786c..81b381e7337 100644 --- a/config/metrics/counts_all/20210216182857_package_events_i_package_composer_pull_package.yml +++ b/config/metrics/counts_all/20210216182857_package_events_i_package_composer_pull_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_composer_pull_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182859_package_events_i_package_composer_push_package.yml b/config/metrics/counts_all/20210216182859_package_events_i_package_composer_push_package.yml index 0296f58dfb0..27e2b6ce535 100644 --- a/config/metrics/counts_all/20210216182859_package_events_i_package_composer_push_package.yml +++ b/config/metrics/counts_all/20210216182859_package_events_i_package_composer_push_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_composer_push_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182901_package_events_i_package_conan_delete_package.yml b/config/metrics/counts_all/20210216182901_package_events_i_package_conan_delete_package.yml index 7617489c5f4..90f0a59f58b 100644 --- a/config/metrics/counts_all/20210216182901_package_events_i_package_conan_delete_package.yml +++ b/config/metrics/counts_all/20210216182901_package_events_i_package_conan_delete_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_conan_delete_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182903_package_events_i_package_conan_pull_package.yml b/config/metrics/counts_all/20210216182903_package_events_i_package_conan_pull_package.yml index 125ef341824..be07d3a67c8 100644 --- a/config/metrics/counts_all/20210216182903_package_events_i_package_conan_pull_package.yml +++ b/config/metrics/counts_all/20210216182903_package_events_i_package_conan_pull_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_conan_pull_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182905_package_events_i_package_conan_push_package.yml b/config/metrics/counts_all/20210216182905_package_events_i_package_conan_push_package.yml index 3225658d982..deb3e1b4d0f 100644 --- a/config/metrics/counts_all/20210216182905_package_events_i_package_conan_push_package.yml +++ b/config/metrics/counts_all/20210216182905_package_events_i_package_conan_push_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_conan_push_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182913_package_events_i_package_debian_delete_package.yml b/config/metrics/counts_all/20210216182913_package_events_i_package_debian_delete_package.yml index 453f55a5e6a..e95a140aec9 100644 --- a/config/metrics/counts_all/20210216182913_package_events_i_package_debian_delete_package.yml +++ b/config/metrics/counts_all/20210216182913_package_events_i_package_debian_delete_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_debian_delete_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182915_package_events_i_package_debian_pull_package.yml b/config/metrics/counts_all/20210216182915_package_events_i_package_debian_pull_package.yml index 2949e819dff..f416d00ab4b 100644 --- a/config/metrics/counts_all/20210216182915_package_events_i_package_debian_pull_package.yml +++ b/config/metrics/counts_all/20210216182915_package_events_i_package_debian_pull_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_debian_pull_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182919_package_events_i_package_delete_package.yml b/config/metrics/counts_all/20210216182919_package_events_i_package_delete_package.yml index eeb5198e028..c5e999ae8f6 100644 --- a/config/metrics/counts_all/20210216182919_package_events_i_package_delete_package.yml +++ b/config/metrics/counts_all/20210216182919_package_events_i_package_delete_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_delete_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182921_package_events_i_package_delete_package_by_deploy_token.yml b/config/metrics/counts_all/20210216182921_package_events_i_package_delete_package_by_deploy_token.yml index 4d688af3908..7c160f02fee 100644 --- a/config/metrics/counts_all/20210216182921_package_events_i_package_delete_package_by_deploy_token.yml +++ b/config/metrics/counts_all/20210216182921_package_events_i_package_delete_package_by_deploy_token.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_delete_package_by_deploy_token distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182923_package_events_i_package_delete_package_by_guest.yml b/config/metrics/counts_all/20210216182923_package_events_i_package_delete_package_by_guest.yml index 9978595cb0a..b631d667ff0 100644 --- a/config/metrics/counts_all/20210216182923_package_events_i_package_delete_package_by_guest.yml +++ b/config/metrics/counts_all/20210216182923_package_events_i_package_delete_package_by_guest.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_delete_package_by_guest distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182925_package_events_i_package_delete_package_by_user.yml b/config/metrics/counts_all/20210216182925_package_events_i_package_delete_package_by_user.yml index 1e348c18943..3f62b79e9f1 100644 --- a/config/metrics/counts_all/20210216182925_package_events_i_package_delete_package_by_user.yml +++ b/config/metrics/counts_all/20210216182925_package_events_i_package_delete_package_by_user.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_delete_package_by_user distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182927_package_events_i_package_generic_delete_package.yml b/config/metrics/counts_all/20210216182927_package_events_i_package_generic_delete_package.yml index b88a0fe1622..82584ecd920 100644 --- a/config/metrics/counts_all/20210216182927_package_events_i_package_generic_delete_package.yml +++ b/config/metrics/counts_all/20210216182927_package_events_i_package_generic_delete_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_generic_delete_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182929_package_events_i_package_generic_pull_package.yml b/config/metrics/counts_all/20210216182929_package_events_i_package_generic_pull_package.yml index b2bcf1baffe..0eca0f41708 100644 --- a/config/metrics/counts_all/20210216182929_package_events_i_package_generic_pull_package.yml +++ b/config/metrics/counts_all/20210216182929_package_events_i_package_generic_pull_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_generic_pull_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182931_package_events_i_package_generic_push_package.yml b/config/metrics/counts_all/20210216182931_package_events_i_package_generic_push_package.yml index 54063d11b9f..1e3577820a4 100644 --- a/config/metrics/counts_all/20210216182931_package_events_i_package_generic_push_package.yml +++ b/config/metrics/counts_all/20210216182931_package_events_i_package_generic_push_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_generic_push_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182933_package_events_i_package_golang_delete_package.yml b/config/metrics/counts_all/20210216182933_package_events_i_package_golang_delete_package.yml index 0ea0007c525..8c0cfd62490 100644 --- a/config/metrics/counts_all/20210216182933_package_events_i_package_golang_delete_package.yml +++ b/config/metrics/counts_all/20210216182933_package_events_i_package_golang_delete_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_golang_delete_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182934_package_events_i_package_golang_pull_package.yml b/config/metrics/counts_all/20210216182934_package_events_i_package_golang_pull_package.yml index 1b68386e3fe..bd8b5ec54b7 100644 --- a/config/metrics/counts_all/20210216182934_package_events_i_package_golang_pull_package.yml +++ b/config/metrics/counts_all/20210216182934_package_events_i_package_golang_pull_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_golang_pull_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182936_package_events_i_package_golang_push_package.yml b/config/metrics/counts_all/20210216182936_package_events_i_package_golang_push_package.yml index be3f7974a44..0610ac36fab 100644 --- a/config/metrics/counts_all/20210216182936_package_events_i_package_golang_push_package.yml +++ b/config/metrics/counts_all/20210216182936_package_events_i_package_golang_push_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_golang_push_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182938_package_events_i_package_maven_delete_package.yml b/config/metrics/counts_all/20210216182938_package_events_i_package_maven_delete_package.yml index 676748442a5..1dfbdebfdc8 100644 --- a/config/metrics/counts_all/20210216182938_package_events_i_package_maven_delete_package.yml +++ b/config/metrics/counts_all/20210216182938_package_events_i_package_maven_delete_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_maven_delete_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182940_package_events_i_package_maven_pull_package.yml b/config/metrics/counts_all/20210216182940_package_events_i_package_maven_pull_package.yml index f035edcc74c..7e8891faa7a 100644 --- a/config/metrics/counts_all/20210216182940_package_events_i_package_maven_pull_package.yml +++ b/config/metrics/counts_all/20210216182940_package_events_i_package_maven_pull_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_maven_pull_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182942_package_events_i_package_maven_push_package.yml b/config/metrics/counts_all/20210216182942_package_events_i_package_maven_push_package.yml index 92521cc1fda..7685a116b9f 100644 --- a/config/metrics/counts_all/20210216182942_package_events_i_package_maven_push_package.yml +++ b/config/metrics/counts_all/20210216182942_package_events_i_package_maven_push_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_maven_push_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182944_package_events_i_package_npm_delete_package.yml b/config/metrics/counts_all/20210216182944_package_events_i_package_npm_delete_package.yml index 24188860b45..104576a8f32 100644 --- a/config/metrics/counts_all/20210216182944_package_events_i_package_npm_delete_package.yml +++ b/config/metrics/counts_all/20210216182944_package_events_i_package_npm_delete_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_npm_delete_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182946_package_events_i_package_npm_pull_package.yml b/config/metrics/counts_all/20210216182946_package_events_i_package_npm_pull_package.yml index 5dc94ab61fb..fe04fafc3c8 100644 --- a/config/metrics/counts_all/20210216182946_package_events_i_package_npm_pull_package.yml +++ b/config/metrics/counts_all/20210216182946_package_events_i_package_npm_pull_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_npm_pull_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182948_package_events_i_package_npm_push_package.yml b/config/metrics/counts_all/20210216182948_package_events_i_package_npm_push_package.yml index 0878ec9ade8..5f8ccc277f8 100644 --- a/config/metrics/counts_all/20210216182948_package_events_i_package_npm_push_package.yml +++ b/config/metrics/counts_all/20210216182948_package_events_i_package_npm_push_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_npm_push_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182950_package_events_i_package_nuget_delete_package.yml b/config/metrics/counts_all/20210216182950_package_events_i_package_nuget_delete_package.yml index bd45f8fd652..3570e509ce9 100644 --- a/config/metrics/counts_all/20210216182950_package_events_i_package_nuget_delete_package.yml +++ b/config/metrics/counts_all/20210216182950_package_events_i_package_nuget_delete_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_nuget_delete_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182952_package_events_i_package_nuget_pull_package.yml b/config/metrics/counts_all/20210216182952_package_events_i_package_nuget_pull_package.yml index e175f9ea64c..2eddb4af420 100644 --- a/config/metrics/counts_all/20210216182952_package_events_i_package_nuget_pull_package.yml +++ b/config/metrics/counts_all/20210216182952_package_events_i_package_nuget_pull_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_nuget_pull_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182954_package_events_i_package_nuget_push_package.yml b/config/metrics/counts_all/20210216182954_package_events_i_package_nuget_push_package.yml index 5e3c4d13177..02f45dad580 100644 --- a/config/metrics/counts_all/20210216182954_package_events_i_package_nuget_push_package.yml +++ b/config/metrics/counts_all/20210216182954_package_events_i_package_nuget_push_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_nuget_push_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182956_package_events_i_package_pull_package.yml b/config/metrics/counts_all/20210216182956_package_events_i_package_pull_package.yml index b059c11bf40..aa459c6db2c 100644 --- a/config/metrics/counts_all/20210216182956_package_events_i_package_pull_package.yml +++ b/config/metrics/counts_all/20210216182956_package_events_i_package_pull_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_pull_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216182958_package_events_i_package_pull_package_by_deploy_token.yml b/config/metrics/counts_all/20210216182958_package_events_i_package_pull_package_by_deploy_token.yml index 532546fd7f3..a527379fe00 100644 --- a/config/metrics/counts_all/20210216182958_package_events_i_package_pull_package_by_deploy_token.yml +++ b/config/metrics/counts_all/20210216182958_package_events_i_package_pull_package_by_deploy_token.yml @@ -11,6 +11,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_pull_package_by_deploy_token distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216183000_package_events_i_package_pull_package_by_guest.yml b/config/metrics/counts_all/20210216183000_package_events_i_package_pull_package_by_guest.yml index d402d29612f..45dcd531484 100644 --- a/config/metrics/counts_all/20210216183000_package_events_i_package_pull_package_by_guest.yml +++ b/config/metrics/counts_all/20210216183000_package_events_i_package_pull_package_by_guest.yml @@ -11,6 +11,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_pull_package_by_guest distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216183002_package_events_i_package_pull_package_by_user.yml b/config/metrics/counts_all/20210216183002_package_events_i_package_pull_package_by_user.yml index 21076556ce4..69983e77d5f 100644 --- a/config/metrics/counts_all/20210216183002_package_events_i_package_pull_package_by_user.yml +++ b/config/metrics/counts_all/20210216183002_package_events_i_package_pull_package_by_user.yml @@ -11,6 +11,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_pull_package_by_user distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216183004_package_events_i_package_push_package.yml b/config/metrics/counts_all/20210216183004_package_events_i_package_push_package.yml index c9f52de010b..22c4969ad7d 100644 --- a/config/metrics/counts_all/20210216183004_package_events_i_package_push_package.yml +++ b/config/metrics/counts_all/20210216183004_package_events_i_package_push_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_push_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216183005_package_events_i_package_push_package_by_deploy_token.yml b/config/metrics/counts_all/20210216183005_package_events_i_package_push_package_by_deploy_token.yml index cf0c42dce28..252474155c1 100644 --- a/config/metrics/counts_all/20210216183005_package_events_i_package_push_package_by_deploy_token.yml +++ b/config/metrics/counts_all/20210216183005_package_events_i_package_push_package_by_deploy_token.yml @@ -11,6 +11,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_push_package_by_deploy_token distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216183007_package_events_i_package_push_package_by_guest.yml b/config/metrics/counts_all/20210216183007_package_events_i_package_push_package_by_guest.yml index 92d31d03faa..8fa5f2b877c 100644 --- a/config/metrics/counts_all/20210216183007_package_events_i_package_push_package_by_guest.yml +++ b/config/metrics/counts_all/20210216183007_package_events_i_package_push_package_by_guest.yml @@ -11,6 +11,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_push_package_by_guest distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216183009_package_events_i_package_push_package_by_user.yml b/config/metrics/counts_all/20210216183009_package_events_i_package_push_package_by_user.yml index 1a3b14e8a0b..42b0b0130ad 100644 --- a/config/metrics/counts_all/20210216183009_package_events_i_package_push_package_by_user.yml +++ b/config/metrics/counts_all/20210216183009_package_events_i_package_push_package_by_user.yml @@ -11,6 +11,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_push_package_by_user distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216183011_package_events_i_package_pypi_delete_package.yml b/config/metrics/counts_all/20210216183011_package_events_i_package_pypi_delete_package.yml index 6c0e86090ae..d1c7f71e593 100644 --- a/config/metrics/counts_all/20210216183011_package_events_i_package_pypi_delete_package.yml +++ b/config/metrics/counts_all/20210216183011_package_events_i_package_pypi_delete_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_pypi_delete_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216183013_package_events_i_package_pypi_pull_package.yml b/config/metrics/counts_all/20210216183013_package_events_i_package_pypi_pull_package.yml index 2512818a4e1..e47231a30bd 100644 --- a/config/metrics/counts_all/20210216183013_package_events_i_package_pypi_pull_package.yml +++ b/config/metrics/counts_all/20210216183013_package_events_i_package_pypi_pull_package.yml @@ -11,6 +11,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_pypi_pull_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210216183015_package_events_i_package_pypi_push_package.yml b/config/metrics/counts_all/20210216183015_package_events_i_package_pypi_push_package.yml index 4234dd52964..4edd359cc1e 100644 --- a/config/metrics/counts_all/20210216183015_package_events_i_package_pypi_push_package.yml +++ b/config/metrics/counts_all/20210216183015_package_events_i_package_pypi_push_package.yml @@ -10,6 +10,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_pypi_push_package distribution: - ee - ce diff --git a/config/metrics/counts_all/20210303153000_package_events_i_package_rubygems_delete_package.yml b/config/metrics/counts_all/20210303153000_package_events_i_package_rubygems_delete_package.yml index 15f3003f5d6..2265eff7393 100644 --- a/config/metrics/counts_all/20210303153000_package_events_i_package_rubygems_delete_package.yml +++ b/config/metrics/counts_all/20210303153000_package_events_i_package_rubygems_delete_package.yml @@ -12,6 +12,10 @@ milestone: '13.10' introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/53480 time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_rubygems_delete_package distribution: - ce - ee diff --git a/config/metrics/counts_all/20210303153002_package_events_i_package_rubygems_pull_package.yml b/config/metrics/counts_all/20210303153002_package_events_i_package_rubygems_pull_package.yml index 5c825c76296..20af7e2a564 100644 --- a/config/metrics/counts_all/20210303153002_package_events_i_package_rubygems_pull_package.yml +++ b/config/metrics/counts_all/20210303153002_package_events_i_package_rubygems_pull_package.yml @@ -12,6 +12,10 @@ milestone: '13.10' introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/53480 time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_rubygems_pull_package distribution: - ce - ee diff --git a/config/metrics/counts_all/20210303153004_package_events_i_package_rubygems_push_package.yml b/config/metrics/counts_all/20210303153004_package_events_i_package_rubygems_push_package.yml index f8a8fcf8abd..6c7150b3f44 100644 --- a/config/metrics/counts_all/20210303153004_package_events_i_package_rubygems_push_package.yml +++ b/config/metrics/counts_all/20210303153004_package_events_i_package_rubygems_push_package.yml @@ -12,6 +12,10 @@ time_frame: all milestone: '13.10' introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/53480 data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_rubygems_push_package distribution: - ce - ee diff --git a/config/metrics/counts_all/20210410012200_package_events_i_package_terraform_module_delete_package.yml b/config/metrics/counts_all/20210410012200_package_events_i_package_terraform_module_delete_package.yml index b914a60050d..2dd4576a0fc 100644 --- a/config/metrics/counts_all/20210410012200_package_events_i_package_terraform_module_delete_package.yml +++ b/config/metrics/counts_all/20210410012200_package_events_i_package_terraform_module_delete_package.yml @@ -12,6 +12,10 @@ milestone: '13.11' introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/55018 time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_terraform_module_delete_package distribution: - ce - ee diff --git a/config/metrics/counts_all/20210410012202_package_events_i_package_terraform_module_pull_package.yml b/config/metrics/counts_all/20210410012202_package_events_i_package_terraform_module_pull_package.yml index 85258f27878..21b36947f1a 100644 --- a/config/metrics/counts_all/20210410012202_package_events_i_package_terraform_module_pull_package.yml +++ b/config/metrics/counts_all/20210410012202_package_events_i_package_terraform_module_pull_package.yml @@ -12,6 +12,10 @@ milestone: '13.11' introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/55018 time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_terraform_module_pull_package distribution: - ce - ee diff --git a/config/metrics/counts_all/20210410012204_package_events_i_package_terraform_module_push_package.yml b/config/metrics/counts_all/20210410012204_package_events_i_package_terraform_module_push_package.yml index f8d0643ab3a..bd7a26f022b 100644 --- a/config/metrics/counts_all/20210410012204_package_events_i_package_terraform_module_push_package.yml +++ b/config/metrics/counts_all/20210410012204_package_events_i_package_terraform_module_push_package.yml @@ -12,6 +12,10 @@ milestone: '13.11' introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/55018 time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_terraform_module_push_package distribution: - ce - ee diff --git a/config/metrics/counts_all/20210517073546_package_events_i_package_helm_pull_package.yml b/config/metrics/counts_all/20210517073546_package_events_i_package_helm_pull_package.yml index 04cc4a17b45..f2bbac01b47 100644 --- a/config/metrics/counts_all/20210517073546_package_events_i_package_helm_pull_package.yml +++ b/config/metrics/counts_all/20210517073546_package_events_i_package_helm_pull_package.yml @@ -12,6 +12,10 @@ milestone: "14.0" introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/61014 time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_helm_pull_package distribution: - ce - ee diff --git a/config/metrics/counts_all/20210625095025_package_events_i_package_helm_push_package.yml b/config/metrics/counts_all/20210625095025_package_events_i_package_helm_push_package.yml index c529f1ecb8a..5be5a703ad4 100644 --- a/config/metrics/counts_all/20210625095025_package_events_i_package_helm_push_package.yml +++ b/config/metrics/counts_all/20210625095025_package_events_i_package_helm_push_package.yml @@ -11,6 +11,10 @@ milestone: "14.1" introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64814 time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_helm_push_package data_category: optional distribution: - ce diff --git a/config/metrics/counts_all/20210709191135_package_events_i_package_nuget_pull_symbol_package.yml b/config/metrics/counts_all/20210709191135_package_events_i_package_nuget_pull_symbol_package.yml index 164cdd477cb..9924df439b0 100644 --- a/config/metrics/counts_all/20210709191135_package_events_i_package_nuget_pull_symbol_package.yml +++ b/config/metrics/counts_all/20210709191135_package_events_i_package_nuget_pull_symbol_package.yml @@ -12,6 +12,10 @@ milestone: "14.1" introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64554 time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_nuget_pull_symbol_package data_category: optional distribution: - ce diff --git a/config/metrics/counts_all/20210709191829_package_events_i_package_nuget_push_symbol_package.yml b/config/metrics/counts_all/20210709191829_package_events_i_package_nuget_push_symbol_package.yml index eb9576c864c..ecff5ad53e0 100644 --- a/config/metrics/counts_all/20210709191829_package_events_i_package_nuget_push_symbol_package.yml +++ b/config/metrics/counts_all/20210709191829_package_events_i_package_nuget_push_symbol_package.yml @@ -12,6 +12,10 @@ milestone: "14.1" introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64554 time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_nuget_push_symbol_package data_category: optional distribution: - ce diff --git a/config/metrics/counts_all/20210709210941_package_events_i_package_pull_symbol_package.yml b/config/metrics/counts_all/20210709210941_package_events_i_package_pull_symbol_package.yml index 712eeb644cc..e7f3491aa09 100644 --- a/config/metrics/counts_all/20210709210941_package_events_i_package_pull_symbol_package.yml +++ b/config/metrics/counts_all/20210709210941_package_events_i_package_pull_symbol_package.yml @@ -12,6 +12,10 @@ milestone: "14.1" introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64554 time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_pull_symbol_package data_category: optional distribution: - ce diff --git a/config/metrics/counts_all/20210709211058_package_events_i_package_pull_symbol_package_by_deploy_token.yml b/config/metrics/counts_all/20210709211058_package_events_i_package_pull_symbol_package_by_deploy_token.yml index d4ebb18d006..6aaf9bc2978 100644 --- a/config/metrics/counts_all/20210709211058_package_events_i_package_pull_symbol_package_by_deploy_token.yml +++ b/config/metrics/counts_all/20210709211058_package_events_i_package_pull_symbol_package_by_deploy_token.yml @@ -12,6 +12,10 @@ milestone: "14.1" introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64554 time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_pull_symbol_package_by_deploy_token data_category: optional distribution: - ce diff --git a/config/metrics/counts_all/20210709211248_package_events_i_package_pull_symbol_package_by_guest.yml b/config/metrics/counts_all/20210709211248_package_events_i_package_pull_symbol_package_by_guest.yml index d84a218e88e..936e245c240 100644 --- a/config/metrics/counts_all/20210709211248_package_events_i_package_pull_symbol_package_by_guest.yml +++ b/config/metrics/counts_all/20210709211248_package_events_i_package_pull_symbol_package_by_guest.yml @@ -12,6 +12,10 @@ milestone: "14.1" introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64554 time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_pull_symbol_package_by_guest data_category: optional distribution: - ce diff --git a/config/metrics/counts_all/20210709211341_package_events_i_package_pull_symbol_package_by_user.yml b/config/metrics/counts_all/20210709211341_package_events_i_package_pull_symbol_package_by_user.yml index b91dfa334a5..373c23a4016 100644 --- a/config/metrics/counts_all/20210709211341_package_events_i_package_pull_symbol_package_by_user.yml +++ b/config/metrics/counts_all/20210709211341_package_events_i_package_pull_symbol_package_by_user.yml @@ -12,6 +12,10 @@ milestone: "14.1" introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64554 time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_pull_symbol_package_by_user data_category: optional distribution: - ce diff --git a/config/metrics/counts_all/20210709211439_package_events_i_package_push_symbol_package.yml b/config/metrics/counts_all/20210709211439_package_events_i_package_push_symbol_package.yml index a6335011ddd..e1c08134dec 100644 --- a/config/metrics/counts_all/20210709211439_package_events_i_package_push_symbol_package.yml +++ b/config/metrics/counts_all/20210709211439_package_events_i_package_push_symbol_package.yml @@ -12,6 +12,10 @@ milestone: "14.1" introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64554 time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_push_symbol_package data_category: optional distribution: - ce diff --git a/config/metrics/counts_all/20210709211636_package_events_i_package_push_symbol_package_by_deploy_token.yml b/config/metrics/counts_all/20210709211636_package_events_i_package_push_symbol_package_by_deploy_token.yml index acc00f50744..2cdfc6f86d0 100644 --- a/config/metrics/counts_all/20210709211636_package_events_i_package_push_symbol_package_by_deploy_token.yml +++ b/config/metrics/counts_all/20210709211636_package_events_i_package_push_symbol_package_by_deploy_token.yml @@ -12,6 +12,10 @@ milestone: "14.1" introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64554 time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_push_symbol_package_by_deploy_token data_category: optional distribution: - ce diff --git a/config/metrics/counts_all/20210709211731_package_events_i_package_push_symbol_package_by_guest.yml b/config/metrics/counts_all/20210709211731_package_events_i_package_push_symbol_package_by_guest.yml index 16635a5f6a9..69db39047c7 100644 --- a/config/metrics/counts_all/20210709211731_package_events_i_package_push_symbol_package_by_guest.yml +++ b/config/metrics/counts_all/20210709211731_package_events_i_package_push_symbol_package_by_guest.yml @@ -12,6 +12,10 @@ milestone: "14.1" introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64554 time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_push_symbol_package_by_guest data_category: optional distribution: - ce diff --git a/config/metrics/counts_all/20210709211831_package_events_i_package_push_symbol_package_by_user.yml b/config/metrics/counts_all/20210709211831_package_events_i_package_push_symbol_package_by_user.yml index 653814c4bf0..d7fd850a24f 100644 --- a/config/metrics/counts_all/20210709211831_package_events_i_package_push_symbol_package_by_user.yml +++ b/config/metrics/counts_all/20210709211831_package_events_i_package_push_symbol_package_by_user.yml @@ -12,6 +12,10 @@ milestone: "14.1" introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64554 time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: package_events + event: i_package_push_symbol_package_by_user data_category: optional distribution: - ce diff --git a/config/metrics/counts_all/20210723075525_diff_searches.yml b/config/metrics/counts_all/20210723075525_diff_searches.yml index 0cce12a8659..54deaba0406 100644 --- a/config/metrics/counts_all/20210723075525_diff_searches.yml +++ b/config/metrics/counts_all/20210723075525_diff_searches.yml @@ -1,4 +1,5 @@ --- +data_category: optional key_path: counts.diff_searches description: Total count of merge request diff searches product_section: dev @@ -11,7 +12,10 @@ milestone: '14.2' introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66522 time_frame: all data_source: redis -data_category: optional +instrumentation_class: RedisMetric +options: + prefix: diff + event: searches distribution: - ce - ee diff --git a/config/metrics/counts_all/20220122022215_web_ide_previews_success.yml b/config/metrics/counts_all/20220122022215_web_ide_previews_success.yml index 203201e9174..e2d617dba16 100644 --- a/config/metrics/counts_all/20220122022215_web_ide_previews_success.yml +++ b/config/metrics/counts_all/20220122022215_web_ide_previews_success.yml @@ -10,6 +10,11 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: web_ide + event: previews_success_count + include_usage_prefix: false distribution: - ce - ee diff --git a/config/metrics/counts_all/20220314362302_service_usage_data_download_payload.yml b/config/metrics/counts_all/20220314362302_service_usage_data_download_payload.yml index 1b26202c5ef..5a330eea78b 100644 --- a/config/metrics/counts_all/20220314362302_service_usage_data_download_payload.yml +++ b/config/metrics/counts_all/20220314362302_service_usage_data_download_payload.yml @@ -11,6 +11,10 @@ value_type: number status: active time_frame: all data_source: redis +instrumentation_class: RedisMetric +options: + prefix: service_usage_data + event: download_payload_click distribution: - ce - ee diff --git a/config/metrics/counts_all/20220825115210_i_merge_request_widget_license_compliance_count_view.yml b/config/metrics/counts_all/20220825115210_i_merge_request_widget_license_compliance_count_view.yml new file mode 100644 index 00000000000..3542f4fd8ac --- /dev/null +++ b/config/metrics/counts_all/20220825115210_i_merge_request_widget_license_compliance_count_view.yml @@ -0,0 +1,24 @@ +--- +key_path: counts.i_code_review_merge_request_widget_license_compliance_count_view +description: Total number of times the License Compliance widget extension was viewed (rendered to the screen) +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538" +time_frame: all +data_source: redis +data_category: optional +options: + events: + - i_code_review_merge_request_widget_license_compliance_count_view +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_all/20220825115217_i_merge_request_widget_license_compliance_count_full_report_clicked.yml b/config/metrics/counts_all/20220825115217_i_merge_request_widget_license_compliance_count_full_report_clicked.yml new file mode 100644 index 00000000000..580d0d4dff3 --- /dev/null +++ b/config/metrics/counts_all/20220825115217_i_merge_request_widget_license_compliance_count_full_report_clicked.yml @@ -0,0 +1,24 @@ +--- +key_path: counts.i_code_review_merge_request_widget_license_compliance_count_full_report_clicked +description: Total number of times the License Compliance widget extension Full Report button was clicked +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538" +time_frame: all +data_source: redis +data_category: optional +options: + events: + - i_code_review_merge_request_widget_license_compliance_count_full_report_clicked +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_all/20220825115224_i_merge_request_widget_license_compliance_count_expand.yml b/config/metrics/counts_all/20220825115224_i_merge_request_widget_license_compliance_count_expand.yml new file mode 100644 index 00000000000..1829e1c87c0 --- /dev/null +++ b/config/metrics/counts_all/20220825115224_i_merge_request_widget_license_compliance_count_expand.yml @@ -0,0 +1,24 @@ +--- +key_path: counts.i_code_review_merge_request_widget_license_compliance_count_expand +description: Total number of times the License Compliance widget extension was expanded (in any state) +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538" +time_frame: all +data_source: redis +data_category: optional +options: + events: + - i_code_review_merge_request_widget_license_compliance_count_expand +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_all/20220825115230_i_merge_request_widget_license_compliance_count_expand_success.yml b/config/metrics/counts_all/20220825115230_i_merge_request_widget_license_compliance_count_expand_success.yml new file mode 100644 index 00000000000..4a8f35a7c5b --- /dev/null +++ b/config/metrics/counts_all/20220825115230_i_merge_request_widget_license_compliance_count_expand_success.yml @@ -0,0 +1,24 @@ +--- +key_path: counts.i_code_review_merge_request_widget_license_compliance_count_expand_success +description: Total number of times the License Compliance widget extension was expanded (while in its Success state) +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538" +time_frame: all +data_source: redis +data_category: optional +options: + events: + - i_code_review_merge_request_widget_license_compliance_count_expand_success +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_all/20220825115236_i_merge_request_widget_license_compliance_count_expand_warning.yml b/config/metrics/counts_all/20220825115236_i_merge_request_widget_license_compliance_count_expand_warning.yml new file mode 100644 index 00000000000..1ebc20fca26 --- /dev/null +++ b/config/metrics/counts_all/20220825115236_i_merge_request_widget_license_compliance_count_expand_warning.yml @@ -0,0 +1,24 @@ +--- +key_path: counts.i_code_review_merge_request_widget_license_compliance_count_expand_warning +description: Total number of times the License Compliance widget extension was expanded (while in its Warning state) +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538" +time_frame: all +data_source: redis +data_category: optional +options: + events: + - i_code_review_merge_request_widget_license_compliance_count_expand_warning +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_all/20220825115242_i_merge_request_widget_license_compliance_count_expand_failed.yml b/config/metrics/counts_all/20220825115242_i_merge_request_widget_license_compliance_count_expand_failed.yml new file mode 100644 index 00000000000..7fe8263a53e --- /dev/null +++ b/config/metrics/counts_all/20220825115242_i_merge_request_widget_license_compliance_count_expand_failed.yml @@ -0,0 +1,24 @@ +--- +key_path: counts.i_code_review_merge_request_widget_license_compliance_count_expand_failed +description: Total number of times the License Compliance widget extension was expanded (while in its Failed state) +product_section: dev +product_stage: create +product_group: code_review +product_category: code_review +value_type: number +status: active +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538" +time_frame: all +data_source: redis +data_category: optional +options: + events: + - i_code_review_merge_request_widget_license_compliance_count_expand_failed +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_all/20220825232556_count_user_auth.yml b/config/metrics/counts_all/20220825232556_count_user_auth.yml new file mode 100644 index 00000000000..623e0dbb7a4 --- /dev/null +++ b/config/metrics/counts_all/20220825232556_count_user_auth.yml @@ -0,0 +1,23 @@ +--- +key_path: usage_activity_by_stage.manage.count_user_auth +description: Number of unique user logins +product_section: dev +product_stage: manage +product_group: authentication_and_authorization +product_category: system_access +value_type: number +status: active +milestone: "15.4" +introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96321" +time_frame: all +data_source: database +instrumentation_class: CountUserAuthMetric +data_category: optional +performance_indicator_type: [] +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/no_todos_messages.yml b/config/no_todos_messages.yml deleted file mode 100644 index d2076f235fd..00000000000 --- a/config/no_todos_messages.yml +++ /dev/null @@ -1,11 +0,0 @@ -# When the todo list on the user's dashboard becomes empty, a random message -# from the list below will be shown. -# -# If you come up with a fun one, please feel free to contribute it to GitLab! -# https://about.gitlab.com/contributing/ ---- -- Good job! Looks like you don't have anything left on your To-Do List -- Isn't an empty To-Do List beautiful? -- Give yourself a pat on the back! -- Nothing left to do. High five! -- Henceforth, you shall be known as "To-Do Destroyer" diff --git a/config/object_store_settings.rb b/config/object_store_settings.rb index 3280bc284ad..e55032d3987 100644 --- a/config/object_store_settings.rb +++ b/config/object_store_settings.rb @@ -16,10 +16,6 @@ class ObjectStoreSettings # we don't need to raise an error in that case ALLOWED_INCOMPLETE_TYPES = %w(pages).freeze - # A fallback switch in case anyone gets a trouble with background upload removal - # Epic: https://gitlab.com/groups/gitlab-com/gl-infra/-/epics/734 - LEGACY_BACKGROUND_UPLOADS_ENV = "GITLAB_LEGACY_BACKGROUND_UPLOADS" - attr_accessor :settings # Legacy parser @@ -30,13 +26,8 @@ class ObjectStoreSettings object_store['remote_directory'] ) - if support_legacy_background_upload?(object_store_type) - object_store['direct_upload'] = false - object_store['background_upload'] = true - else - object_store['direct_upload'] = true - object_store['background_upload'] = false - end + object_store['direct_upload'] = true + object_store['background_upload'] = false object_store['proxy_download'] = false if object_store['proxy_download'].nil? object_store['storage_options'] ||= {} @@ -46,10 +37,6 @@ class ObjectStoreSettings object_store end - def self.support_legacy_background_upload?(object_store_type) - ENV[LEGACY_BACKGROUND_UPLOADS_ENV].to_s.split(',').map(&:strip).include?(object_store_type) - end - def self.split_bucket_prefix(bucket) return [nil, nil] unless bucket.present? diff --git a/config/plugins/graphql_known_operations_plugin.js b/config/plugins/graphql_known_operations_plugin.js index 164b34c1dd1..c340849e084 100644 --- a/config/plugins/graphql_known_operations_plugin.js +++ b/config/plugins/graphql_known_operations_plugin.js @@ -1,9 +1,10 @@ /* eslint-disable no-underscore-dangle */ const yaml = require('js-yaml'); +const { evaluateModuleFromSource } = require('../helpers/evaluate_module_from_source'); + const PLUGIN_NAME = 'GraphqlKnownOperationsPlugin'; const GRAPHQL_PATH_REGEX = /(query|mutation)\.graphql$/; -const OPERATION_NAME_SOURCE_REGEX = /^\s*module\.exports.*oneQuery.*"(\w+)"/gm; /** * Returns whether a given webpack module is a "graphql" module @@ -26,9 +27,19 @@ const getOperationNames = (module) => { return []; } - const matches = originalSource.source().toString().matchAll(OPERATION_NAME_SOURCE_REGEX); + const { exports: moduleExports } = evaluateModuleFromSource(originalSource.source().toString(), { + // what: stub require(...) when evaluating the graphql module + // why: require(...) is used to fetch fragments. We only need operation metadata, so it's fine to stub these out. + require: () => ({ definitions: [] }), + }); + + const names = moduleExports.definitions + .filter((x) => ['query', 'mutation'].includes(x.operation)) + .map((x) => x.name?.value) + // why: It's possible for operations to not have a name. That violates our eslint rule, but either way, let's ignore those here. + .filter(Boolean); - return Array.from(matches).map((match) => match[1]); + return names; }; const createFileContents = (knownOperations) => { @@ -60,7 +71,7 @@ const onSucceedModule = ({ module, knownOperations }) => { return; } - getOperationNames(module).forEach((x) => knownOperations.add(x)); + getOperationNames(module).forEach((name) => knownOperations.add(name)); }; const onCompilerEmit = ({ compilation, knownOperations, filename }) => { diff --git a/config/routes.rb b/config/routes.rb index ddc7b77460c..704405bbcbd 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -70,8 +70,11 @@ InitializerConnections.with_disabled_database_connections do Gitlab.ee do resource :company, only: [:new, :create], controller: 'company' - resources :groups, only: [:new, :create] - resources :projects, only: [:new, :create] + + # legacy - to be removed with https://gitlab.com/gitlab-org/gitlab/-/issues/371996 + get 'groups/new', to: redirect('users/sign_up/groups_projects/new') + get 'projects/new', to: redirect('users/sign_up/groups_projects/new') + resources :groups_projects, only: [:new, :create] do collection do post :import diff --git a/config/routes/group.rb b/config/routes/group.rb index 2a5931207b0..4a47b349665 100644 --- a/config/routes/group.rb +++ b/config/routes/group.rb @@ -121,8 +121,10 @@ constraints(::Constraints::GroupUrlConstrainer.new) do resource :dependency_proxy, only: [:show, :update] resources :email_campaigns, only: :index + resources :observability, only: :index + namespace :harbor do - resources :repositories, only: [:index] do + resources :repositories, only: [:index, :show], constraints: { id: %r{[a-zA-Z./:0-9_\-]+} } do resources :artifacts, only: [:index] do resources :tags, only: [:index] end diff --git a/config/routes/help.rb b/config/routes/help.rb index 2a0aba8b632..54ad3d43081 100644 --- a/config/routes/help.rb +++ b/config/routes/help.rb @@ -3,4 +3,5 @@ get 'help' => 'help#index' get 'help/shortcuts' => 'help#shortcuts' get 'help/instance_configuration' => 'help#instance_configuration' +get 'help/drawers/*markdown_file' => 'help#drawers' get 'help/*path' => 'help#show', as: :help_page diff --git a/config/routes/project.rb b/config/routes/project.rb index 53d9be13611..79ca13e3d8c 100644 --- a/config/routes/project.rb +++ b/config/routes/project.rb @@ -159,6 +159,7 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do resource :packages_and_registries, only: [:show] do get '/cleanup_image_tags', to: 'packages_and_registries#cleanup_tags' end + resource :merge_requests, only: [:show, :update] end resources :usage_quotas, only: [:index] @@ -312,7 +313,7 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do get '/deployments/cloud_run', to: 'deployments#cloud_run' get '/deployments/cloud_storage', to: 'deployments#cloud_storage' - get '/databases', to: 'databases#index' + resources :databases, only: [:index, :create, :new], path_names: { new: 'new/:product' } end resources :environments, except: [:destroy] do @@ -466,7 +467,7 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do end namespace :harbor do - resources :repositories, only: [:index, :show] do + resources :repositories, only: [:index, :show], constraints: { id: %r{[a-zA-Z./:0-9_\-]+} } do resources :artifacts, only: [:index] do resources :tags, only: [:index] end diff --git a/config/routes/uploads.rb b/config/routes/uploads.rb index ba2e8493ef9..7b598e84975 100644 --- a/config/routes/uploads.rb +++ b/config/routes/uploads.rb @@ -22,13 +22,6 @@ scope path: :uploads do constraints: { model: /appearance/, mounted_as: /logo|header_logo|favicon/, filename: /.+/ }, as: 'appearance_upload' - # Project markdown uploads - # DEPRECATED: Remove this in GitLab 13.0 because this is redundant to show_namespace_project_uploads - # https://gitlab.com/gitlab-org/gitlab/issues/196396 - get ":namespace_id/:project_id/:secret/:filename", - to: redirect("%{namespace_id}/%{project_id}/uploads/%{secret}/%{filename}"), - constraints: { namespace_id: /[a-zA-Z.0-9_\-]+/, project_id: /[a-zA-Z.0-9_\-]+/, filename: %r{[^/]+} }, format: false, defaults: { format: nil } - # create uploads for models, snippets (notes) available for now post ':model', to: 'uploads#create', diff --git a/config/settings.rb b/config/settings.rb index 51d54817646..b242e970cc6 100644 --- a/config/settings.rb +++ b/config/settings.rb @@ -204,5 +204,11 @@ class Settings < Settingslogic "#{minute} #{hour} * * #{day_of_week}" end + + # Route all jobs to 'default' queue. This setting is meant for self-managed instances use to keep things simple. + # See https://gitlab.com/gitlab-com/gl-infra/scalability/-/issues/1491 + def build_sidekiq_routing_rules(rules) + rules.nil? || rules&.empty? ? [['*', 'default']] : rules + end end end diff --git a/config/sidekiq_queues.yml b/config/sidekiq_queues.yml index 61e27f9aeb8..4527efe5a1c 100644 --- a/config/sidekiq_queues.yml +++ b/config/sidekiq_queues.yml @@ -199,8 +199,12 @@ - 2 - - gitlab_subscriptions_notify_seats_exceeded - 1 +- - gitlab_subscriptions_trials_apply_trial + - 1 - - google_cloud_create_cloudsql_instance - 1 +- - google_cloud_fetch_google_ip_list + - 1 - - group_destroy - 1 - - group_export @@ -221,6 +225,8 @@ - 1 - - groups_update_statistics - 1 +- - groups_update_two_factor_requirement_for_members + - 1 - - hashed_storage - 1 - - import_issues_csv @@ -247,6 +253,8 @@ - 1 - - integrations_irker - 1 +- - integrations_slack_event + - 1 - - invalid_gpg_signature_update - 2 - - issuable_export_csv @@ -255,6 +263,8 @@ - 1 - - issuables_clear_groups_issue_counter - 1 +- - issues_close + - 2 - - issues_placement - 2 - - issues_rebalancing @@ -289,6 +299,8 @@ - 1 - - merge_requests_execute_approval_hooks - 1 +- - merge_requests_fetch_suggested_reviewers + - 1 - - merge_requests_handle_assignees_change - 1 - - merge_requests_resolve_todos @@ -333,6 +345,8 @@ - 1 - - object_storage - 1 +- - onboarding_create_learn_gitlab + - 1 - - package_cleanup - 1 - - package_repositories diff --git a/config/weak_password_digests.yml b/config/weak_password_digests.yml new file mode 100644 index 00000000000..0ae8e4d8f1b --- /dev/null +++ b/config/weak_password_digests.yml @@ -0,0 +1,4550 @@ +# This list defines a set of weak passwords which users cannot choose +# when they set or change their password. +# +# Weak password sets are derived from dictionary words and previous +# data breaches. These sets can contain words and phrases that +# some may find offensive. For this reason the plaintext password is +# obfuscated and stored as a SHA256 base64 digest. +# +# Administrators can configure a minimum password length of 8 or longer. +# This list includes the weakest 500 passwords per password length from +# 8-15 with a final bucket of 500 weak passwords 16 characters or longer +# for a total of 4500 weak passwords. +# +# To refresh this list: +# ```ruby +# pwds = Array.new(9) { Array.new } +# HTTParty.get("https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/Common-Credentials/10-million-password-list-top-1000000.txt").split("\n").each do |weak_password| +# next unless weak_password.length >= ApplicationSetting::DEFAULT_MINIMUM_PASSWORD_LENGTH +# len = [weak_password.length-8, 8].min +# next if pwds[len].include?(weak_password.downcase) +# if pwds[len].length < 500 +# pwds[len] << weak_password.downcase +# end +# end +# digests = pwds.flatten.collect { |pwd| Digest::SHA256.base64digest(pwd) } +# File.write(path, digests.to_yaml) +# ``` +# +# MIT License +# +# Copyright (c) 2018 Daniel Miessler +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +--- +- XohImNooBHFR0OVvjcYpJ3NgPQ1qq73WKhHvch0VQtg= +- 73l8gRjwLftklgfdXT+MdiMEjJwGPVMsyVxe16iYpk8= +- oB7a2RwAq+e+W3K142v0zjxvJui84zQOujZWQoE6uLY= +- Y4Lerx9dxueSt220pKe/K6RoiE4ACyXnko5iHif7I8s= +- c80bFsT7gwYa0YoLKblkOmjUZAB1pGbcnlFoL4SoR/U= +- BZoAGSWS1URLwMqtcgP5i1BjMuLPers11oTqm/fBjwg= +- IDtwta6IOTIWG70L3tk1fnY+Y6/OmLFiML4z8LlMLMU= +- nOjbkiqPSnq9hZre5wvYt6YzISZUh9pUz0vtamnrPhs= +- qUGkxP0MAc3e9huL6WO/TB4rCBHAN84/GDX93272wiM= +- 5K2TygesuNkIo6pB6SDqT0708m5/hs+CkcXbKJeApa4= +- dPygMltf2zo0uttAolgc+9U0QYfo00MpUqWrwJKcEkY= +- qpcwIVD86BFCXNhFNwKKWvvjfj8TYq1FpR1Gfhev3Jw= +- AWIRSDBvyPt8K5XutcN+N1+Q21PPgxPqh8nDTAW34OU= +- 7nmXbJOA1eM3/BwJXs6MjyL5HzBs7rFh+lH+zt4sS6E= +- BOd7+Plcs+GjalnR6ThXxBGTDbZGtGwhigNS5DICPPI= +- CcWH+ygsNCPwhn6xDDem/U46FXhl7797zP1RYh6ZQME= +- 71EwYhTZpjYe4dW0UubSu3DcfruFv54Cw9R0f7V9a+w= +- YV7X+xUEsMckopbXpp5sey+eosV8HYIGxa/fOS69/SU= +- Ow/g00Lp+halxo27oz8uY8Ak9yqdTBzhAoVwEB1SKf8= +- xUIsBSv717vZdk4EZ2iLYhk/7E+jKhsTryjRcI1YcOw= +- hXOPj5p/GwS1MpxZDry55CWSXG0JhAicQ6Ai3k8ZwoE= +- 0vEp3TBtHXpD/P4EfvDbsoJ19e1l9GNqKOLK43uB0JU= +- quCgn/XJuSRiH4T+z/WYmEavkrImJLv8pQ6tuU1+Wus= +- kX67M5ay/y4nt14/5CGx7cB7mY90NQRy86vFxmIKaNs= +- TU8mNpFxmU86Rndu4tiElPuZVYAKW7YmHAFsS7nzC1Y= +- CHdRg7Ds+di355EVIWeemvsLKHUIotEW8sx8d/vEUIg= +- E6XCAuMg0L+bssbix884Cm995dOSUJ/uJguAnIk/8vk= +- Na8l9aX9rGQB3UuvlJeUtZ24AWjWnIDn8s/YOZni/v8= +- 8LE5JCtJfIpawzvxdq2J1XF2oERwjt5CYTmDzLl3mMM= +- qxy3EvLcp1YQUWCAVQH01thlfZPUCxbu5Oy1/QSNJus= +- cquZT6LrQmwFHvWcrWF3UL/gbXz2MRKF/3nBnDKv0jY= +- xG2H8ftKXfbfhBAw/+MA6Cca90ti8lRcbBdZ0YkyZ10= +- s9TNZBy7gSO34mmFTp/M3jo3IuiRodHpClF2izAA6v4= +- JBP7NwmwWTnwTPLpL30Il/wllvmtC4qeqFXHv+uq6JI= +- 4k35IAeMPdTn6NJELwDlyasqIxuzkY1lzFCQbknsrvQ= +- "+THDCPxbYLQhwJlpkSg53/J3aVfZi40vkcVU7Y/ID3g=" +- OhINwVibsvDLAjso7HUyi+P8UzPvBwcoWzH0etJo39M= +- YoYSuAPGR6fecPAwbGu8SJ2Ldeb/7xULcKFVOlp6u+s= +- opRF/Zw8SDDcDJBSMOgNl2A7zwwSDOrov53QanFynYU= +- 5dUD1FgiKcTJq+JQ5JZUdlyIXrSbtJ338YYbt5/HNG4= +- 6c7nGrky/ehjM40Ivk3p3+OeoEm9r7NCzmWexUULaa4= +- Yx/6ULWaAFF0Te4AoLkZTUSzV8yR/HWVYoqGfBM/IQI= +- B6CjvReD3mMBb1UNocDkfIIl/qSw+gQP4FivYMLYWMc= +- LUeVtaSwDrONGh25qQ/9jIui5Ae05R9CccHkghBksEs= +- FxjCSxCuuAmeP8RJYKtpSat2omc1JFnyA+oQNr7DgsI= +- cBAzriZBGQjzERTSkZD2DN2b8+cg4wP3k4gq9XY7aI8= +- t/xuquG8fQcq8j/Q3bkbzbIcklIjGn0KapOASIPXGYs= +- oXREVQ4sEnsC6hwZe8/6QiwhcTBA9T1cLKeSVBm8z38= +- zhSE9QRB+ZOyEd43Kmlo48QkYEyYWCn5bzBQMjQ335k= +- prcKilB0/BLtcNYdBf/6MKW+wSDtFAzwCbimMCMoNgs= +- zQjExDFt8g2cMEUP53bc3kgQAp5kHN5SbFu//sH3cKM= +- O4DTj3aGqLX45hrVYuwGmsFycy+02rlGQB8hpDhmmks= +- TPDBASJ29GrzHkTS+7A6569W8DyZluuUUrmbPmJzaY4= +- pwpZs5ga84W+ErKTIi8nhI+7sDh9BVBLAsfyAS0C5n8= +- vNFkK8oWPaPJ0pA6vzZjp5/jKV3TGo5bEnBca9YmEds= +- jumTjkuWClBUDxypKZ+sxaXzQtCEi0AsMi/RRZLkvDI= +- go/rt2Ca/V5yjshD3y0R8LjNIWfUryrwLrNU+FA4UMI= +- IUSlb3cobQy1ZIUBontauhv2YrlVQ1y9dWd5tci4PY8= +- W+CIi74gh/li/uV0jZz1LjfkxqJK95Z1/34coKGxJzk= +- jw4vduIrQ+KFUYmHfn3B4efZjCJsldskfNHVR5KDNKk= +- MKmJr8gsCiETlXNZHeTl/zeZT30VBqms8rWZcAXCZJ8= +- tzhG3VNZJ6yzn/yoXEX0EZfQOAsUd+NEigQbm5SiIrE= +- UJTcrWGsqEra52CjpO9mvQAoShejkoYTLDtkHduth98= +- EtRxON4MBh5w3QnMKSL2QrHgnnD5VuuNcjNA9Ha+CB8= +- JpLUG6nymsncEklcPK/6R7cdXS+MX9iZyISm3meSLiw= +- h0X4ZkCtLta4ov1CiEXfPaoc/Nup73TAz6pXys7DT1s= +- T58QswTP6bKxH8sTh/aU4Y8I6jWMfp9WdDTTrWy9f8Q= +- 6WBadACWcqM8XjOlomgIy30g+VGe/KJVUdt/q+V0AC4= +- AYzD6LTDvlzJHwXrt0GuzHh+A660WkH8n3yBFN/19UI= +- R+G6ZpowkVzat5J/tTnSG3UukTHOp0KCQrVy4gGMPUY= +- rBOotTTfSijQ+7u2TP+Qm1sej63bTl6le7imQs6Zj2Y= +- Q/95LXn3WJDTxRgXOXg4ib+e9Kk5fMjS/A6lQ85aMPc= +- FCcr02HJmQYoyrTs8X8oEgsqQGVVYJkrGMekpcM3JBc= +- N3l5EPR3/rmUMxIaq6rAa/dx6vnrpexTefqOaTs9MRc= +- ejRbpeGJVYMfsfVDRDt4usWoI+641XR+j8ssVZGzExM= +- cwVR9brUrwYE9mHn+Lguamw2TKGc4UAWYzPYbNyBTKY= +- rR0KM9FHXinFd74j4p/fGeHfNmO3x+13JyvPMonxWV4= +- UDDFvQAt6HE/712uvVl2IPXovOoxxgPczfzfUCpXzGA= +- 0XEIdH6SJhP+Zr9bDsRQgB9RO5LpHXg48Lc5359oupg= +- wKSUIUPocs0a4p/HWeBFJt4ukJrBcyc004VQopwuJRY= +- iHmt3rGMaynouJlg8zECJHkvvgjpVaq8OVa9TynxvHI= +- togj7e0LycfzMX1gGsJPasVjiVzujlor0spHWQb+JhU= +- MSQzwoNJ9jxPOHlT/zNwRueUvqD5uev8sI6QBG3tnHY= +- "+xK7blgCJXhzowHM3+1xQRVDpiiM1FPVpVJIIelwJy8=" +- "+V/J0lUxTe6+s+O+jHqSbKpOJBXGNyvvqo/W8Gm3xKM=" +- BqHYv3/CEN4j2VQKs1dErp2zEK+gr7q+lSkzPhdahQ8= +- BU47MIcINw6gKdwuvRZGxJjVnXIDyeGkTPBITfmOWBo= +- HEZzOclgoQernuX/Y7OACXl0Fslk+YiyJHEHc8w4eWo= +- YnCAV/qMtFIC23ryM2IVaTTLwII3BX/PrI1MrWEPXI4= +- 4KMuXPcJo2dUjKY67Cerh0o6a4yhXaMexJV6ErsGZlU= +- i1kcwxPAdiF4DbqJ1OaYVmz/gsysJmdIOsL8zXNE4zA= +- ZItKH9swBUbjWUUZW1FmZb+eRbaeM0cS418+oM+M150= +- 3g3oKsajOAMATNxtdKipnNN5peBc2eiqFkxFbRsbYVg= +- LmLI1gLOUcN91w891kpc7+l1ioiKfcHO6yf4KR22fnQ= +- oIEaR7HimcgVKyRVy7U7aXYUiFPuNe9/b0Jyd5Jblrw= +- "/S72r0GqVZ27SLaLixRwiFDvqhoaLwYa1tpndgFiiJc=" +- 44gHXaT6TpXam1YWYUX5aF0eSwjvx71eST2qL2cbScw= +- WPh+Jl2X3hQQdtLncEWfUfILMhEhOaD33Ce314A0Zds= +- gNcRQPdROUxHEr9G1rZav6AYSjVVPcLLG0FUb74q+ho= +- Tcqw2CzLUD/qD296TWNECYHPJ1XZ+6VXM0iejICR/fU= +- BcX27yG7Ar49ttBmxOgi4H73Wy+FJBMzp8ul3sdOLTM= +- eeqTWBgYhGNxY/vWHAayIVD0KWNr3e2HvccAZ9sjlqQ= +- tzlVMOTtVctqU3buhIH2A9GGec5MU7h7EUap7cEfzh4= +- 8I9Eil56ncNhm7fBKfan1fxq8ALOoXrXHf3Bxo9NTg4= +- 2TwJCiztHgBJMxPa9cF1Fx+wm2/1S22ahKapCXCcJic= +- 0UpzEL31W4/+t7hGLR8eO8bHmn2AqQ5w6uTvNvIjhH8= +- 75TUkrtI/TGT07r2uG9ZUPgEAlTy3acIj/QlcFhLAsM= +- nacBdjdNmQSIXZrA8ml3Cmh0js/f9W27rnr3aNYU27Q= +- 2S4GsyXSRCPdGHoBAZJBB6zos2c3mxLCuGCN34Q89DU= +- 2G3G5gsGMuMPKnir6SLCOOkT3Vx092323JNfHsc6XfY= +- HzzkBBWiCB+j7udfw5//jlbCInDRqXinJJtZLc69ILQ= +- wdNcw0cf5QkgPWWz56U/yCM3rJrix5e4NmIfcG/jffg= +- XS0863q+VSNEJ21H02qBdbeuslCpvwvwDoUM0j7PLkM= +- 1N8uwlPclbNFW3exWGMCArFeXlCca9NBWSswGcYvv5A= +- 4RGh732qhZckDtoK1IK6ma0JtPhMCTvegAY6I//yz94= +- "/abPL5IPTh6SVvcBmq1t6+Ie8TNzFPqPDWo+uPSu9JQ=" +- lAnWiCb9uBlFt//EyIIeINphRkvitzi5EMg0vQbro5s= +- gtMEK5QTeLyZS4wllvpp5DcL0stUAMTAQ8mW3Bl/2nw= +- 5SY65+mMC24qCJAX7w0xTUxhP5N3pgJb1zyFLIwlv+A= +- zqbghgVJb8+HGUb37o1fJr/jLu7I/f1hTRUtG9PmORw= +- mNnVmpB1GcgPwI6boORQXxUsG7jb6UU44RrRn1zNv+A= +- nG1AW7otskv70i/H/3Szm9nF6cbOZimcZRm+UX5u18Y= +- TiBhPsOmNzL5hjC5Qp4WANR6CPBZSW05/9NT8MMDjzk= +- 7yJmqlcwxxrEljbPq8h8twWiNx3Z06qoKVI1JE1VdN8= +- y8RxymAJK75sYx8CvFc5my2j0a5JGlWhqpYKSy4Kx+g= +- eQR5H5u0lqM1S/dWQeRf6zHogaAM68slCORb2UKm5DA= +- AcAndtcpDpmcYK+EE5J98dOJaQqrjKwSUDBmz2LomfY= +- 4+k7YL1yLO0loEH2Wv1OOW4rr+V+DD3gyLawqosFRQY= +- 15mHBRolUqwYleBrl9EtjP5ZJIcvYdulnBVVK8yDL54= +- 5pfFETzli3CLfB8x8EI8wCHQvzqs09Y4ZcU6X4F84ng= +- uHDT44JwiNl4+8JgY5VUjfgKsAJ/v7+AajALe0+bvgE= +- gU4q4DmDSNmof/kcA3Lct2GGui0lBLEjXI1TUL9S7do= +- z9r7BFLVawPrYUbrkVKJVDFwnJY2O63dTiikc0J1DAo= +- xzw6B7ZEsCYlGqZVMx7uA5S+pOe7HV8Bm/vL7rE+D4M= +- 3VoTeIyAzxAD4jP4/91UFwUSF0LpIq7i0iFLqHe8NVE= +- GWxWLLXnjoyxDGZGaGjKi0CtewKdjs74ULcXzr4FXrU= +- fgcf2bAj7Y8YRYpzYToINPYiC9XMUDV7o0k8YECp6ow= +- Lr2jl1ZykeZL6gV11UcV6kuozsJga/iy2pXfWN9nyo4= +- 5JA0z0vJ6YXHCt9DRhdnkITjNUH3JsFWGCXtundV+4c= +- RirsLKiIMkJINBaycyayJYua5NEWrvDFXDixgg0HNV4= +- hUm5TNap0uW8eag5R3UzTQzwAw8amfYQ3Atvx0XaCTE= +- uC5yO0YTIzdMHuwhHgZtx6HCEw/jbJBuS+xcxFEJwkg= +- KPYVUVBRdnav3vXhJXQLBUym6ONlX8/E0pTs0kBlQ5I= +- DES+n3lIlX2wc6HyTCZrB1CLEn7AMLMoJprQUtchOqc= +- HbAEa4sZXuf0DjeWNIa69u13T4A+MgSdppVu6jq/Uyw= +- ERSNj2rU1PJLGj6RsR9p2SWivQNAm7Tw9IbxPTEa6og= +- sYa6H1M2bsJnRgsVQ5lrGwW5EtlRw2v2+2yg8UWSNVU= +- 84pQdueThhLEpbe2Ada4rBeKMl0fC9A8fTYFdW4mzE0= +- J8xplPwcAc5mWca93Km2nExqlBgGXmEsadEQs/exH4o= +- qGGJNxM84aPD3Cj5zX4ef7Pe5NV8zHCMchoZUkZfXX8= +- UUat4vPPenUXwWHf5HquBb70TKPLY7oxpwEmj0kokBg= +- 5138ReaWV2ur3rztUzOBQstBOZTxgCR1KrHf4kZ2dRs= +- sPYKBGni6iT9/EvbykaOVIGLxTh2R/l7Ks8Kbkssys8= +- CkmS6kQrU+PcqGHerAmo1JhwBKhIMHmxKGEIDqSqG1I= +- v7MBsmylWQxM10G+o3w21bTl+5LcSIDoyJRIv4KyuUw= +- lJnmrv+y9ZmMzUj9VQoqdCVFdRh9cuX6DocH7aoRXeI= +- hSmraJkBUmNXPfaD5Xqd4mnWDTj5pUkxUuH1PoxcJzA= +- 9yN5Kc3ileoIEEuhZNuGwxTCbq77s/UBi5gyXf0U5zo= +- BXugPWxEEEhj3HNh/kV4ll0YhzYPkKCJWILlimJI/IY= +- "+huuuOb1wo8mmX9jzAi/CP8mMqWKV4uLlx3STVx9eGM=" +- Dh1ZMhp+sOO7lYQkV0fMc6nQPNnqLCTDmgcZEt+tszo= +- vxXWzh1ef5zO38erJGjfTkwY21c0Rkk7GyTz0yU0uzQ= +- Kgl4OxxHQpTRIrgrk7AcNwG8nk1ls65g2iEaQSEVKkM= +- 0kJZvhNAfg0TIze9g5jumq/0OiScONC/IiQp8xHJyTk= +- 5t6xCmVYZQrr9MTZX8R8cW37Lac1AYPBFAQcGa6b/NM= +- EndTSM74Cesbe8tk8E8GhnIR7z6mtIpG46ap46nRtc0= +- RLPFAD2TxfFiO/U+Jtq+QlPoq0pCMR43wzfon4+JEnQ= +- J1G2b9Xeok2k7z8DptnT2xu1TAX5FlDdoFDGpRzukBk= +- khF84R6YKUoiJwS9uqtoBU5H3lZ0CvBYvavX0hNax48= +- yA9jAUxRcQbUac+7AgPxB3/qfYcrMEr/DQ3odYAsszo= +- i9EGmCKdJmJ+sDmsIPRTe2LGaHzLKJJZC8ejaRZZ6JI= +- PwjY+ttLZ/sFZiNWXtu8LHiAkdeP0ky8Rz/OMEPONHM= +- D0iGg0JhSouA12Drke5Rrox3f4FAuvQKjEBgwq0s79Y= +- M6fT2kdqMqwjez9gOhvmL60AKZ4NS1qNuNkTEE7exik= +- RnQwkJH6TOBzohvuDE2ZRQXgoX4TYAugQ1pUAgijemw= +- D/n5SPgMMSfDR3zsQobNuY6f/2opycPRKTRZh2q0V2c= +- liMUt+8vcABzgMW2cA2u3GNDrGk46CQaRHE+chmTwKw= +- AtMvKKiBtpZuf8/Vi2smGgzF9Q/aDkP2N8tvCHvfPtg= +- "+L/3FWt51OprjXuFwxXHSp1/1uneuCnIKFhpNADLf0g=" +- jRZJhFOwPUQg2QNi1x5sNrsVZK7qU/NvIGdG58taUXU= +- EdQEF5WWMdPSQg6M2HCYk8Ec16Tbc3r2Po1Wz6eGb4U= +- ijiamrRHJgSCCrAW738K++trQk/B7ReUeaRWSHOaufM= +- 9AX5XC9BAvmcK0GIY4lDyYuqNYy9/d+NuO6h482dqj8= +- xsIwesAlq/7WgMtka8OMo8PW4CZioPL6oUPc/yImikk= +- 39De4z8IL/a2DXbOBsRUSHFs/IwWNb8bC/2TkZDo3FE= +- Xsdy86K1oYo8sRDc3d/NA+IDmYam6jX0DhiGDZa/wFA= +- V/rIVy7qtfxZnHYMZZ9Yfnavml+jW1YHI3ct9fMwBL8= +- eT2heuwm1T8I493P84wY4IAypjckaKSmcEo7qGpPwVU= +- fc9Af6hKDgUZx5kRVMQUjeAkTXWJAgwNmELbnvrYIJQ= +- QBywo8lXemrt4Tbm1dTJuHuVXvPJgBD/kTkKzQbUsqo= +- 1QztQ1NZwfK6rfPJFJyin83WEOY5zWCCxSwtM7tKt0g= +- MNDgNeSsoRSAhe0WN2nTiWmigfTQuU2nwx8vVkFrE7w= +- NTednACeKQ1wK3Kr8/X5vbqn4Apj/De1F0/DglyAleM= +- f1vP+g3oLpXKbbefuGnMZn498mmdbU7/gEAXt/VMN2w= +- eqsGzZC276v7xYGSKkrS3fuiogoL5BIOtdDl5ypZ32Y= +- yMeByWymKNFXkXHJTf3zpOFXWRyHvSPayGMwsgbYIwQ= +- eCa5WLeccGJoAbiAQF61ERVX2tzrL+4rHtaaGO7Qxtw= +- BX98sb4E5hShTf1YzgAB9G0qOh061oJ5kegGtZxkP0w= +- "+nZvuEJ9H4/rywfz9fDq/36v5yxJmx98mJxZpxd66ZQ=" +- XpD31T+djMZiWtjxarwDHP8J13bHT/aNxpB61oD6/Uk= +- SgekMQA0ECZoqGLy7H07p0FpN7L4XJCzglfPWxMJOww= +- 4bYVryasnuk83dzqo8B9VBIw3Imkmu13KWewkA0HdGE= +- 2BvFmn9I75jGSMaOYwnbNPD1F5eL9tln5qN7oxxT/80= +- D0fdh83o+I4m3BkzJm0378MDqE3ARF3y//PK/nsToJE= +- ckbSsrnOucu/Wwx2EvMli5eFb2vbV6edk1MI/L8IJw0= +- HSVrXSC92L5X7R84gdfwa8ktoAk/A+704uYrQpXL5P4= +- nFbMUbN0w7oYkhDVttS/V3kNNRyWxHwCGQ7PHkMGNas= +- lUx6H4QJaZjm3xclRJdrD4NX2dVFwPX/oNfKg57oo4M= +- BS2Z6o8xo3QbZyz3Bj1A7UwZNYGBrliq0LKarX88Syo= +- HEQ8q7nboaSX0UzxEgM8VVxXWvd1q7hzhC5dvDFDS10= +- tghuYTeo07XfQ5qEKihAhQcTYy/vGZ0K7bzDo26eDMw= +- FX/FUSGrLFmFLDXXisqY2EAEfl2WaMQj5NOxRuFXeQE= +- sNNRixq/tZGHgA3rVp3s3a5DT+heODoqCAIyWwSZTO0= +- HPGKJDwlpWqZPIIH0RYanC3l80uVLTgnBLlNxeiIsQg= +- KIejLgJlDUhYVHnQfYNxfZ3dulc3ELKtyPVG8+Vl8iw= +- 0pmSf96i1afplKXI1P877oXFx3C+Gk9/o7m4G8IWvZA= +- xYfe+b2vsyCeKNqdkPHwWwRWx6I7F9oWCHaWrQWe80E= +- wOIaj/hRU96sgv5/CcDaGzvZCsCuIE541xSHU7Q2PAM= +- McyWUPPdG8p/3NH0CkzRp396gvDTM74TL+w1AuydFRU= +- LoRK1lHGuaacvo+Ie2p03TufxImq53dwHm4tDVI6DPs= +- xcLlTenSgzqJYwbb4rq/DCoNcJHCXvuqCzE4rOykoFg= +- NyaDNd1pMQRb3N+SYj/4GaZCRLU9DnRtQ4eXNJ1NpXg= +- iatTCsREAAEWIaODBsYeUMb30GeTLzQbnk0A4PgnvWM= +- vdZdzZ8jFJj6idrXmw5yY1NrkBJb1/KkkAxffiNVKhA= +- kQN6GOw/hMfAceM49K1Qnh3S48K6mrobOS6BjpGrEy0= +- AJ26flQEi1aivTclzfhSSCQsrBBF/9UBH8mbA+Gumjw= +- lKLQCZYjPjk+VHo61J+oLv7qwSEKj98R3eNaI7czOsA= +- cQw5BsqLVPhsngINmJeS0DuaDYkE17V7P1fnSrF0ZiU= +- d2SId1UAc3ueEHLxs45QoclWHCpsz10+PKTsV1qGQZI= +- QoVC5g2wkdj8UisDakKvjF5MvW3zpkO8HejxSMZfHhY= +- K0pZ/sPnvMeOQIuQ+PZsbtQzc7V05CE825mYgXq8q2g= +- HAnl15A1buyB0ZKGUpjhDP0TzJ8hkuA0BkJNEzJaLcE= +- 1eNIGYQcTBHJ6DgUaw8Zs++KScTu/4ZDlrwtLwBLc6Y= +- QLG7tURfwCGjEjFTefRjMoSFHhTR24P7BzD1iHLWAzs= +- BCLULGibfoBG26LXBC6FX20h4ERkurFo/SY/WxD4k+0= +- Ihs3/NtS0PfDm70L4hHbDhwAyl++zVeIeARjAmxrlks= +- m/UBxXIW24AGmg3gC9iKgVgNSKZdttXHXlMQG0SdDR8= +- 9MFKEEBbH9L3esd1GCf7xxIhH2Q6TlV/oUnzzbZLLD8= +- 1Y2kHg9VFVdMMEXVogR/iLEny53hzLveK/V/I/mH1pw= +- fyd0si8s4dAQD9VSYY3O3WWIrU6gFmWdnF4R2LcXKNs= +- O0ddcmSkCz7BOYuovXmvvU9yrHA0TlDWDOzG5Irydlc= +- hsErpnN9CHPDg0RfAdtMbGkVee/AEQ3UU3vDS39ePm0= +- bC2QjUcm5wdFemj4YyuzXOqmC8wMCfTahnFcjg9+Glk= +- GMy6GG2HV8IMvwXXqYssZPnxbrZOpKZGWbvFybezp/4= +- YJYOZcd6oR2u1dYsYuNLUyaXX00p8Qk0hMxaPM8byuw= +- Faz9x1/biIUUhyOM2EQsXsyODDGGjOn1Kk4jYbqJny8= +- z5wcuJWEv4xBdqN8LJVKjcVgd9O6Ze5EAR5iq3xjzi0= +- w0n4z7uIS0c10FTuFK1tWrI7DS+vpwgtDxz5v9q2c0I= +- dFJvFsmE35sFeUmxm888fNEFBFPV0Qaac251P91N9Ec= +- gJk/BUvy/dNwjaxYAFAS1RHPM19WB6PFC3F9+TyxdPY= +- rJ/OSaxiY606tkkbzHeo9khbDhrIKJwN26LORQ5A10g= +- pXYsvisJwBcAomukpjNcAwiOhxXWzTVPu5M8p/DYRpg= +- Rkl+uhMMLxtiaULV5FJXvbBC2IcbtHha6TtRVenAoTc= +- o1d7gDohajnBfZRUHWBUu+cv0R2ogy57KNkSd6JYgEg= +- Gi0+PiJrjHLcy5IMWy9O9/zXxKWKnibETX0MqPZc3TI= +- uGpwjrl4n9vU27qzhI2GWR9dpw9CDvYOObQFx327OT8= +- 2b4ngOdoqNyGI4YiK3OaueS2iL49bbqnHGGJ6yfkJrc= +- BvodNGAFWp1J65DAHkjWFtbJ8bGsgBElPw1Lp+HDDTM= +- OgIlBjvqETJxtYV1hPduondZ3BTNObRHIFZAS80KJo4= +- dPHD4qNm0qoIqU9+XW7b8yT1G3H+Cv9l7CwGzpdWioA= +- m9ZCzfTNR1fwJ3CdZt8HeeNf4P5bqjnzACFAPKENSp8= +- 01okfgdJGSDdfAz5o9Vxn2tTiRYCldmhY9/XsXHBzoY= +- WbJhgjI1B6Xh4Gu8TkN3JbytADueTgWTzisQecVRmqM= +- waHkqhA3uuFYbY0f0BtHLh0jaITp4ioEp5Mupqvq8I4= +- zxqoId2rr6ahYhLro4BfvP+SxvyYHUOWfh/Khlf4Vxw= +- 7uXLZgGADP/9G9f/YaBqLlImcQLD0YeJKguG7NQ0fr4= +- r7afaFgtEeYFjlpP0V1uvIpnbtDOezLZjw1Q+FVAPa4= +- twWaeskHzVll6/JU7CFtHRy1jrAgUWLUx+vQYsyJOls= +- utYidNNFg6PGhl7tjo+9NH64mOmReD0suGIeDmXJMNw= +- lWuvAkCSj1rHV2SBv7JJJuh4Sy6FujN+FWmmI4yRXhY= +- a/vXCdX9wGGKtepxkT1VJGSx+tQ7L8NM8l6W89KpBNw= +- "/MOiP8cjLMicfLDyPYd0/vtz19wqsi5qG2uLICtNzJE=" +- xtTE4yS8jptTLr9Mrq5aGza0OJoETNtZrKPo7KZIPz0= +- saJNJyvWcIeaxHxujXOj9ZWUIs20iDZfSbRVp7V4ugE= +- 1MNjAl+5W4hWO3Ksn5kUul4Etm1uazlZG5D//dl6X3U= +- Xy/SsefvsA/D++MVrSi2laZ9KPPRzsAYLCgCS5U5Jzs= +- S/vffr7iV/8GWLBNto/so3x7aO8/QZtDfv70PT9dhLY= +- bSBYBuGdulMGoJ325bcgVzfzAb+vFQhuICAPNW65zO8= +- invidvj6YgOQpuXpSYI/zwFWul3AQnd+a22Va60cdQg= +- DD0S/ZOeepI4UxAPaLyfGEStr4RciAkcqhVzNsx82HQ= +- 7LBwXINDuo3KV8IxfcI7quXwpvym6ja5aqaY7W241RU= +- "+ojeAkNk2/zCeM4y/nlWrHwtBYU19+yejgF7jjt3+AU=" +- 5kf/5hM2FvCOniTLyu31DbqeFcFoUP0sDLeb1IcKpso= +- 8hrf0ZmDcI04VZI5qP2ID7n5G4ZNB/56gLRHBopdCWA= +- Wl7fM2pjXK/vqR98KB5Kg1coMTCMnkLy3+DVzmj7lZ4= +- 1qOJFnjgW/hv7v+utIfwDqOUxlnK6fsVYRxMpQodOMU= +- oOl/aF4qTm36Iy3xzU/fwvRgn0L1GXmK7DGFdAm18Ps= +- Wcmuh8drSFEVnAlCVNuuvzLoB2krKdYl4Lk1H9Rr43s= +- "/ymOTE+XXKolEU1SQWcCfdRydfS/fkFPzoe5k60S0Fg=" +- bMHv3wndNQF65j9ThYPC1L6O0VaamdLAvOiuavP9Wzk= +- ZjazGBHuC79ZPRFSbOtlUmf+ltjapKFkkpZkQmlSw0g= +- pOzvqfYFcbR+adVuIrKm+qvNKbdG42T062VanH+SeiQ= +- 8aWDs/W+tNKbl41RwVPOfUeKvU9gQFNleVuAPP0/V1w= +- KCdLOzNaIAFMDPvrk9YNdsee/gV6iRY4zq5yCbELBZg= +- 2i2o5xyCsYquwOnc+BerCUgai1UGEGbwEbPjgYh4j2U= +- WVSZ+IuwM9Dg2j4gtul1a3RYq2wixA+8OURk7PlhDyY= +- "+c3gvqyCaOQw6xiXQiXYjbZJXEuzHB0/bddAe99clEM=" +- kHZUibS4KJNhJ4zwo07mP7gLidlQCSfuHCtD73i8JC0= +- oLgUPFZQsVzKHN21bfRPetsi9/oxdBNOWqXvG25zZtM= +- ThgSPg8GY1s8q3piDs9Lvv84Wi80zs2AjdIy+0ew5lU= +- s0Fh3+ne1c4KtoCvV4FSRgflxI/teoumdjFBM13A2C4= +- UiznBX/QUjrc1mctsku2cdCdH/ovHnyXwT5saK5vyxM= +- IY03PCh1+siFrtNc1g0A/r/wu/YdKKeZw56BViOmGPw= +- iwDvO6kjVKJ8TzVUSdFQUZGkDdgVU6w+B3+rH1tJAeQ= +- ez91hIAIDVai0JIDiXukfLt7/c9MVWz/mcPDU3nQv6Y= +- knTUnCe3WDpgoGQguCAHfjjGrXhfbfVLZn1CqppbMlw= +- SgozmwxtBVOJd1KoQRWtyBx1gS4XQ+slGSWOUAD3Des= +- eTfIkV+mtTBAe8ePPqfi3opvBrysAgUTvxQfPupmG0Q= +- TkxW5KFfifBcL0xyYT2ioYyWZdTw1qzOFkFesG+b53Y= +- 7gh0Fwt/bzK4wqyVc8Qo01tXUnCma3V8LAGF0r0JcY0= +- GQaxsUwZa9aTUPlfSZJ46RoG9XmU5QFcv4YGeZ2gK18= +- MTweyio5QcI9vNXzgE3e0Ax+kJdG1W4GWtdtCCACy1M= +- GMMT43q8Dz5jMCq0BRMDA+Y3mpYcKw2uD/alcNSDPZM= +- S2PDRecG0q37CtPldLO9sjB9Xp55sSIFO2CMnchkYvo= +- BzB3hANf3Fyy4APLPZBaR4LQNIWLakaZvybJgEo3jK4= +- B2qJwjF5zt/GEXH+QA7PAft2uaSKaPuC3QzWiNaE2QA= +- GMxPCmYkESLIaBniiTWiddnL7Vxyq7i8jl22tlvONvk= +- PJ/az2IFR6Djqq/G0ZM4xNQWsVa6MEl0ftJFFb8cHbs= +- AASLpdc3s8cRfUzEZXtMd5WSTgLKSsdJrVtpmmJKalA= +- i8QDQ7GHGupprm4rDB9BRePZo0ime880czP7Wmx7Am8= +- GSwzyqw9ie1kf23FRBkWHCu/S1fRK7jFRuQdZEhZdXE= +- RatblZGl9JPMviiZg9zVE9PxrQHfOubGbVcb6eCql/A= +- 5Wa+Iolr4VH2ZKehWU0utH94XKLagmI+sh3GEYJDElQ= +- 4rxRIkDkua6zxpXz2fKThfuHt1n6MUFCHV0pjD/R0bc= +- WMlyL9P5PDAJeWOgFXwdcIi9S6Pn8vHeiNXqr+t9NVI= +- libHREcXqreju91Qm8r6NadJHpR41CGzjlOaYh9pXt0= +- wSnbi+iQS0CsIcnPXZ9cDiTvRV0denu/1wSfxtydJCk= +- aCa1+y4/ZFNHwuUqN5+Tc3pgF4ku7feCWkyRcY5o25g= +- "+QLe9IVcpl7dSZgxZxhqfZ6eozhgeO9ZzpKXDSkbK44=" +- 94mSyv02GheSmsFO64Elvm2yVNTEy0+5wun4SQNvaF8= +- U1nuwTdj8dXEnuOWc5lE5bxMoRitaBoHYvfaeegl7dY= +- "+dLBBq8o775fgyKCLe+qZQ6ArH4zWI81pfgLzJc4/5U=" +- PApXm70a10TVvHktEgoqpJ3YiEs/19QjoDx3SMeFQ4g= +- VW+ctJiTImTdpKGuGz3jcuATQxZsVQHvYZrE8GjlZ9M= +- s8S0B1CpchLomB5KxJTR7HcFPx6vTgk0wna3T8T4fEg= +- D/NSr9256h5dnhB1aUxPWRQGuj7IdjTUqn81WX4cEGk= +- 6uXX1Bj6QY1Cpm5F64sLeFgOQ6Ub9ZPrWlVezS/79FA= +- g93OQoeXobkoD+u/q8I5lxw2rr588xevnXhfcE0nwYg= +- zYQepcKHbj8ttru6dgtI1o8YBDA5Vr52tNcwFVv9FmU= +- "+Vm+D+Yo6siKR+vcGEX9F0eOBiJUR+56xjatuokIsMg=" +- Mw/FEo30rgakhTJopxx4gPKKrOKCgGvjt9vTsko5ayo= +- HhA/3rFszD5BMmmlk4IKE1PC9c4ergQoSq/QwTOpMu8= +- yD4lvWqgtPXJ4xBcnBax0L6DfzGgaSRrSBHD6OBZohM= +- DAjA0iOvf0PL81Q7SjVZzQzAs3iTw4ovyDGeIE6AwsI= +- 6ubXfibVP4tQquIsDDFQgpPkq+UFbm20bRPWgemID0I= +- OpvowwiqAz28xFRJ8VvyisJSPrDEmlrOpOUE2L6Ebhw= +- zjnMeTczFFh2vF7mrySIHVuo3BTKvEiVyp/0xM1vNFQ= +- DJV+nwmiREqIaHN79CsW9A1ONTO1fcMaYRJMLNG64xs= +- "/m00aM9cdNjsKpW0Dy4FM4w3pCAvj61pLStkqc+bRoo=" +- lgo4rOdaL+lCaqXUi1NsxtsYogI7m91pjlYvwwI1haY= +- bhADZIA73vFRUIZybsLMcfUrZVZIcY+vKECUmkrMXxs= +- UnopsfaI+MAfVzAYkDxzCIuMp6yD4kNlfQuw2upMjNo= +- wmZeo+ElaMN7dA/6IXUbGXqr8KFkp8pWKQa9fAlN3jQ= +- QLuznm5obfL6RJpzQo2ecEwi1ujlv1aMxtXy85LzgSY= +- KGfzBmYfKH6201zkAyL80Tma4zdBoLUWg3pDpJ+ySJU= +- uRE2KGtQxb5JvT/b0AZIqYre1iOJTr2d69qpGthEylw= +- Dtvf+sG3Fpw9nScC3CgKoweWlB0sVtnPj0ns2i+P9iM= +- r/YwG8MzXGyVLZ3LhypfMbAg4B2huQS4VYRjYuAMQ8c= +- HjCxSoABxzk7zSax1uCTpVtSfFftvEZ2zo8wd6d3328= +- rZWNCjG4XO40RcKDEFYZynWhI84MyAnoyHF8cNawpGs= +- nkVvJoB8k+xaSV79gsGTit2qEVqzf2JNavXnzSEuzjo= +- rIKQkHrf/jZbE+aY8FlA7/6OrOuIiRHuX/KHmTJeciw= +- hHWJ4T0jdiY9ZXEOTyMCl89XX2Muci7I4cVOhukUc4E= +- T7XKO5gPe8PsenE0XE4CWqVcYE6PrKQHYUymSOijUzE= +- jdWeQSlOU+4NcV6pt8Hte2qO77COZ02xqElvtf0PCm0= +- R+8gIHSJt3X6TNysPDlLUXqyLXRgI3rj3xrA6JY2mdY= +- geWx5sMODpIRio64oAXUqAARYtshfZpQU5NDTNF4sCQ= +- XvLDlNW2PkF1zTMcdMhFPD42649H9tZIOX/2wTFP1wU= +- dZNp++jj4sWN+L8MIQnFIQqdJ9pMKf0oktxtrHIjxTg= +- vt6msdoP2BzyPKcfHFpaly9nlndrFYEwOd/tAlJoFbE= +- V+6JLp8MaEDHbZ2WvQDEL3Qa9/O6/8RWnU6zlrp+bSs= +- sCYg2SXIupAQm0OWvsn+LhCKD9tmLHFI3Y45cku+Ce4= +- r7R+AFMRU+k4CFieQ9AsEfY5jFvId/eSTOvKghHI3Rg= +- Rejz2UfPdM6poE5xcsdoqZs8Q4YrSLwvTa00jGOjpAk= +- J6luOLDRPJGlgwXzaXke3DzK24i5eb/9sBcT6I41d1c= +- moacH/Q5elsdkaIPO3Dv0y1qUs5667u4vbY6Nu/x89Q= +- l6IvoEi6A5x7C6V0thyvRUbu4isASbLfDwsms85+cO4= +- NEl/4A64ZbEbysf4dlFDyRTTw+tq4ZzSoWunoQB5xaA= +- QC7tEU8KWD+3K852GWU5yaJWiMyIQMf6RNVPgRrF6jI= +- rHqJwoIZSqb9Ge4JFjJeLlp8ywY1BWoty8sIS8H3H9g= +- CgXXsnzHorHKcErcvR1uOrLBns4ABYbwO87qvyRUfkM= +- CvZTGRCapFLdM1kKRwEFznsZRPP9zSCcef1ClCs798E= +- AlCvgpTSisiDOKYfQFEFOMkdEmzO7fdJWWAm8n7aQ4o= +- ispPNndPgqZ8UHy5yWZ5SC4sx2fy04UCJpVXpWawkvs= +- ZSf/0Fd9RZt/TrGiNIF65W7Z3LAUtCCRx4kiAAsqtNY= +- wgx2nbnh0RGIQcn0U4ANA9rS2YVOK6WJtOD7bA9C+IY= +- fvRS9TjNI6aRqN1rJKyGvqGJZb9rLKcHPDiq68hNRWE= +- SjSEs78vyw/19xfxiQSr0p0ii8EwmBFN9osu2aRiZQM= +- HjsAkS5mh1u9AnJmVXlDYJq/lXWHyO4gJXi5UH733tA= +- mPwHNntt8+fNBD7jyzfD5LaclEFuW0VJTp06TxweO7s= +- tsSsQSrIgiNVI53XF8EcpbBzc+TbVQ0EI8G2rs7vhJM= +- KT3g5qxP/BQcxHNhnzW1UUcWqu51nv0Cft/SQSwH/FE= +- h/6l4YwyY7T+yPpsKeBn9gY8c3Jo+u1GR6Od/sX76Ak= +- c1cB8oXLklP8/5ZJoPegnyfltZZwMN7YurpMVzFoNjY= +- k9sXCHMvh7xFobfUqNV1LJnzVC+mafqKZ7l8LTUqCCA= +- XFFqjKkJxyjpjGqSFTYzTgQhpgtD+H8lmoPFbH+NRlw= +- nwY4/WD+7bwaXc7YI0BA1wfAhL113dLvuRVNvCIIlLs= +- "/nyk6gqHFSIr9fTWxtG7li3cEYnwcsbH4tIGiLEIPoE=" +- YeJL5uqEDTcGQ8S7g5+9dz/LeS27139+fCaBK0MfYm4= +- 3ebol0tGoe3c1+o7u4mTQvSMrYlrRydab4BgYuxcoUw= +- FKQFNM5FvPSgclVNQtF1j7Qs+VThUWk90jgXAdk04SY= +- W5AHGuomGluDgDXq2qUGasNHps/xtSgFPFf4WMZQiic= +- 6I6WFQwc7ZEs+aUU6uOB/fFzJwxDk071xTyeKmkXXpI= +- zTb1jB6e519ydxP6keCAm4Y9/G3yBI48Ogkxc79Ct2U= +- HyVPqgTP+g0KjHX4UU8Ah0KcN8w1FvertpxmYNsuZAc= +- ISP2zam46LfY/dQvq6peI8gszgJwIB+nSsQI3VKH3mo= +- 7AIgBD4I7h+8oYr4K9NXqhYeNH/dfY6cAzSWyImb2gw= +- NQQ0utBop6S+hVvDYtekrW5jHn9fDZFqKgRSBwBm0xc= +- l+/tvBZquz36+xxAqYcwQ3pZVVtwYi1q7kQlaJAi4Ec= +- 3qfNJ5MZpD33WbewdDPnWwU/i9wvdZ4yioMx0Hys1Ao= +- Sfqq3kk76La2Fk7mf35NEBgSpd2pcNbKaT3ai4z4Lks= +- jZsuZERQGgIkydgujRGydXeIDBetdQ081yxeOgc9etM= +- GyTgwX6VLkx8rsW/qz2dgsQZQ9uzDCP9MjS0d8JFFgI= +- 8c0pmlPFFnC5Jv+3gO4TgLlFEFspIHFzIXlpXi6192s= +- rDFgsKkzrAPX+yabr4RD5lk2qkMiiB4wxgRD192hUtU= +- kfBgqa1LOesijZU3KS+rGdJS+u0GwWnQ/ctKkFYPVnY= +- dLaMgTgReytYNkyOsSWlVQffPABu+KIsInNChByNsoo= +- BVSl3wLuEvGuNqUcqu80ox3rlFiki2KdpVSisyJGb0o= +- DkgeJmfDri8XosgQfGeyKywpayxVAHDIQFDcZEqSyuU= +- "//xWOwACEwqVAvnons6uhVgpHkEA3ZXN9ehsN9IhSuI=" +- zuxnSnbGOeM0yEk+kdQkQ8BpaQvsnPzdSct9bw93JQA= +- XyiUS2MqJtbEqwzXsIXAkVxR5ZJbAJ0Lb1WLlqWKMaE= +- nubA+svo0G452of/Q786TOUQr/IBVRjoQZT832uuF88= +- KIawt0i37dt+X48eB/GZlwYRVs0DMgzIsmV2lX40bxk= +- KDElNr8GvJhQy9yMGAPH65McxPp4jLfL97rYKAHT72c= +- 5fqURTqSUBflFLLZGsi4ATCZBZwyJOBygXJxBKk5CNs= +- rhpeQdfge+fvySdaPMAlol4cqlyH4r5DTcFnKcFaEiQ= +- cQSC6qKA5rfp7ZiVgZdobqUncjcdI3QInmd/936uGOs= +- gB0LPu9eyAiEf7I16sr+dJyYvmKt4WbevMxHEkrwpKs= +- 3AuDAmI0o/WgdFYoWv8HCBrYMtWm6mCI+8H/oIQySt8= +- DIjMhqc6p8QFj/fA4x1vEFwMo1ddWmjgYOldnISmB6k= +- PnlDSO01EsRXrMAD6bUcIOZOqsvecOhrrrI3HzUn5yw= +- q5XJ/TZ27CdByXExcrhyLoypXNW5lADD4TnswS7+2J0= +- OluJkOYP+nThVGHXVH4PYqqU0Z3k495oe9MRdvi20Xs= +- mh4FwP4NC3IceXOyl5zRBS+l4GddfGvgumeXkD7ZcmA= +- n8Jszm4osxE+55AC5jaH9iV47ICF+A0tTW8uTtxh0Uo= +- HBNSYC6ZXkQOG9IA1x88R9kP68wY/jIH+1fMOSDGR+w= +- ZvYtGAfTgho4ZfJXO2nHS+Az8TQSQKyGH+/G1DC/9eA= +- QARk6embsD8M2XMoktJUesZQc8XTJmfB1eZjmJW2vWo= +- yRvZwojAp8XKG7gHy9XYnFqzN2SGLrRoCEF3M9oq+HM= +- qhBZbDxtYPGEd+CAls8Evf0c5fx0p+eIws4Koad9dV0= +- zLZA3colwfQ9P1YeUuZwfGo5B3yuEYVzZ7KIhzvlfQY= +- PhKXrLifdZsfc2XHdJwezLMmTuw0QrTUwX9eJIgDp+8= +- i9OuLfq0s9nRz8m2DK7720zYMowqnqAmMLXRv+XJb4k= +- 7310iYwipL8L5DfTCYe8lFMQ3N8d20imvOCF83azAq4= +- 6oQfu7CfhmmtvvhR58CCV803rjDEtdpI+6sRjPTQeIw= +- ALj54imo7j5D6Zn1gBE+pUWNlVA1LrO5NmeCFxttXqU= +- sN0mgygAIGLSp29XRsquBZBlIEgryp2fALPnQKD4O0c= +- vvm8X7dyw5+zNXaOhbsYhHATCmX+HukkY4JxJ7TQZw8= +- bug9C4qX539KYXHRkmgiECdD6jBdiWVST2JoR1CDNJ0= +- hlK2uOGx+RKAyU/AI7zztQ6MKxflFVmc4gI337EeMl8= +- TRGBiuzmaBdSZK9mjJVmQI4TBiYGQsfho2USxGxlMQ8= +- XleeAVgRUkjnGQ6MPwG0adKP+DkdVC0Xn0w+q8LKQgA= +- KBZRRTZNjcW6O+MKNM/7o2bKpZbSXraAq+mqwQkDZjE= +- EYBBKvQ9eGBKc/FNWn74PT06dCUc6Pt7IyBDpRH78WE= +- 51Om08Dp0itGKyRmX8m17je1RFTiGZQ8c0F76RvAdGU= +- 2wRPGbwBNxhShjRczx8GfS2c4cjvs4NJskeWloUNtp8= +- d4zHAmP0cn3opLGgtE8QrM165FaQmUeeLLJwKhhuK9M= +- agraJ2Bsd0lb2PINuFxzuLEynw8Oq/xzOSQkDOjgdOc= +- V4HsqA7hZqD/jB/BEvYbKB3l0uxiT/da9S/zAKbjfQg= +- wfNf/Z5SaN7FNBPj0tiLMGeI9blbdHgS8qR5JB90K/k= +- NTkPVFPoELYkgCjGPlhgzksuxkAdOEmn9PhxwNGDwis= +- jGc6AQhXghPrQ2jtj503mbOlyQBTxTsuU8W6S2AXTPY= +- 9tidPftDRWmvGp4U82TJX2BAMdRYq3lb7IzPj7KQbA8= +- e4rV0kILHH1BtngxOnRg99PsBokPvqTe1wjCzwng7zw= +- gd2jQ8TOiU6cwDjtN94qeKq6vo9OYH4uDjOFHoAwjWs= +- AQvfeaoK/+0axaciGuwo1CXOUnMmVTRUsbf4nBqwdZY= +- bWQlSBEND03RSwRrboqnQSp0m3xhpn8h+W2apYq7cws= +- p0TZPyxuiDCnC0NBE+zeva9Wi6jAVXxjvQkUUodgrlM= +- OVIG8LTbUVE4wWvVaGWcuRhQoEdK32HtCNdIpn8lIus= +- ULzNsSnwFMZd/JexnlWL1buHBXZIgsrcq+ZPzsGbBvM= +- 80KpNZMLkQKxiRW4LpZKnn7gUnP89s2BxecZADIQmME= +- H9YgLJuzNcZQQFdfiStLkmllFymt8IA2vxG8RpTZQh0= +- Kg5YR2/SaFm4d8pvkl2nz0KVnH+z4FgEWVCb7bfZUqs= +- w5AG2uPSzDSxTHua53gS9v+peJKwxTkyrqnNvrsBTHU= +- I3Mg1QlxfcPw1r3NXo3I+I+P2UsGxyjBqvlBGO00rzg= +- TdP2ZuTQefkX7rADQEEWHunqMi0grv24308oUfrYNdo= +- HKxNEB7mlv16cImnqXwekUlAlTbhcPk+y6CNEQ0S3P4= +- Yd0p8v0piifzhcQ+rXTL5WVTIjhbWEOPt4B47crxhD0= +- "+taN4DZs3Lu6BAiR/WlFKczgoVT05VvcjTNMTfK1c1w=" +- JlznZzBQOkSDMTU9ZWLD0gkmNqnaRIwkbWNmq9Gb3bc= +- dz8phztuMdCnNk8HT8SLegBOr7HM+EaIPpnea+74raA= +- MEb3Uc3G8uu52sR96pENjsa7uAYLOxc5mq2ayW6sjdE= +- N1W0F7D5NwJqwbhno5fW3sgN/UY8IywtqvHel0uT2oI= +- yztWOaBD9Vt4Pj+PxYovYlLbibOQonxnuhmbaol9DjA= +- sPvdtBI8uyNE+jzW14WI/20kkUBZuyF1qsqgxArjbGg= +- 4nPbIdGe6Vf5DDYVx6xnP9zyd1XxoKPqFNEyTqpvEWA= +- wfrSp1grp20J7U4GGI0rKJMZMW8S9CM5Az4lK6vTxaI= +- JAJDCMeWLB+7GwuPSB4WfsMCFdnFTRnejK10ouh7xww= +- srXfJfgnVSqhsC/mwHLeHLAdWuZuGkusn3rIu5CBzRk= +- cr7EvY9tkaiBjrLsZTnB19m0yVF4ZjxrNG0nyEJRJKM= +- UQBbS/P2sjjxs9RXxsqyfCE7leGxIlcGNytuHQuhzfU= +- 2QcMGsKR0/nWvdgpLn8NFIJ8b8af4fQaOCznPUQDvz8= +- v5tZUcVQ9RnAikUVKC9dxp4KnlUVLV0xZXBDa5+hAdw= +- 1RgB5IhRt2WXteV+uJwUTTeMvRz4J5KUGILaVkAmrYs= +- CVUp3MiQIA9XCjVZpDJildkd6MR0T7EHARQu5SLYLqg= +- 9bH2RPfBKLZSLy9JswBVdlXF8tto7xEHKcneiLfFwKk= +- KKtPia19SlDPMLvvfVEh+BqVosIkkXlYDVEpToZF/vw= +- bLl9mdSWkpdX6A1bdY5PfERvcJcBVPVHNoebWjF67QA= +- 804lMAAR6OPgzmG0Lt8f2kF9PX8Ylsyp7HJEJ6Vq1E0= +- FeKw08M4keuw8e9gnsQZQgwg4yDOlMZfvIwzEkSOsiU= +- ipvPHlHoEtCvhGWo28yfdBBkvwrzs9COawJGQ3wZ9/s= +- ky88G1YlfOhTmsJp16q0JVDaz4gY0HXwvfGZBWKq4+8= +- gNQcVKjObSauC91QnbaxhxQMrjm0t3Emmg0AawYg4tI= +- CxTVAaWURCoBxoWVQbyz6BZNGD0yk3uFGDVEL2nVyU4= +- 2qrW5WBOjhe9nxCNkeJq/mKB2sj9oAkQQKem172bQ7U= +- XIBWXbbynaCwGqElIsN7MvEhy+R6hh738AbLIpIt/6E= +- noYZQa2L9by2SeX96S1xJSggCiFgGMJDc3FJjmq3aD0= +- rUlBOGwJCsVBQtOLOQ0xMHXe/02HOhyC46JVQM9hESc= +- mXBiZmZWCjJGXUzhDSjzIzNlr4M+Fe7VmITZR3hiw3k= +- VgBxX0K/UcQNwzDXUM2Zb1j+rU3epWRmznSY0XgBs6U= +- M2ZlsFHbrC5ZsykRwg9Rmh1Pp11lQHIH0uSk0J52InU= +- EwVIWnEmCP3E0v0XgMcpGfL1TPKIUlgUv/cSBzf23a0= +- nyoI/eQWzvIViUMkH+4d2PPMoJKv3e8dU66CMY4F9j4= +- nkYz2HRrWaauwcgvL3xJ/D5JrHC2s4A/lnUt/4xIGvI= +- pbgQoxkKOQM95NggUv329Ml2VRbWt+6wxJat+KPT78k= +- 214Y+umoJGDWDTHrMAEdORw9B6HB8SuuDySVtrfk9O0= +- hAgV85wV18y+O1oqM5LrkilPYpza0ATYNUpefrZY81Y= +- yTRMXxB5986bAH5gSCn36ORRbpEy4Jjr1Y4sx/Kl/Uw= +- 8WX8stKhPhV+dz2YtSVTMRTEDEMeoO1C5IhRSwfkcsA= +- hf18iJ9xzxBTdVlc3cBrnTj8Viy2nFT4wWWqdR2Bs9k= +- ufGVxcx+9q+tv7xCiSrUfTskxryUu1EMRWSpChTot5k= +- u0Ifo124hc5Qew71w/I8sJxi6zePrjZBwWW99MAnKUk= +- n78mG2LB18ANtzr7gd2X/fILNELjbjOMuTWbhWoDvcg= +- ui0IMOZerbNxcIrzWScD1oNTtVZgkwAhEd98NPicn/A= +- "/P0HXL42fBWNXPqjH6BmVqPmj2JjiNlu6Bs13aQxC1g=" +- 0rgMsWn6508zS79c0p/6A3QCefA7/40G5OSc35sHpOQ= +- sH4UVS0IQVmdVJOWVn84s2sT1+/+aJ5S5Dcn06rFSQw= +- pyus1RR9BCOwxVhGvWctQJtMTTvL9Q/d4dIAUls2MD8= +- tU8IYjrkA59VvOy6SWEDf7RRPSupyysGZ8XblwrJSRE= +- 5kdwilIGB0PrHcljcyz+3B6h2zoXhdo/ucUN05VP1wg= +- H4wXl4nZQlky7/rjfrJmNQRbhWnKOT9S2qjQrXQ9MCE= +- AzBjiDdtr/LnPSife0en9399Gdt0ifyNHThV+4rP+aU= +- 0gWvsub33EowPjXdmOGzOdi11QCBYWP34mcobveuObw= +- 31nCV3hdcHBqQR5w4SOv8oRNbVfrGfOgca/I4Bn18tg= +- 2lUR0rqoPC51OFLx8vuhEAPtDEbJaCDHWJskOo3beHo= +- sA7yYq+uVmtR90ASSmsS2YKiz/G78qtWMstUjpjab+s= +- "+xEaNR39dirjam7uNFmRY/YRAqQPscrOhNmTLRoP5jY=" +- JFvJfsjZ1wwKjCxgSOav6lOWXwgKhum/G0Ewvzt69DI= +- VW5gCdo+L8d6rOIo/jX0emgMj/nC7O3RJJDliDiFKfU= +- KKh1mrapE9FvRcQrAJE7F1gw89sGeW1oexyqP+Syed4= +- mZkRbsbhBS665CmvxuI8UHmLA2EF8h7KWxVNHPs5W0E= +- 95RhML3zTfgXfZTro08U6iz/3K4T9cecNdo+uk9NyzY= +- RsdZ6HGTX4zWPKyaJprSsEXtUYrADxn3lHHIveVSPZE= +- XmCNe+ynUTyrGOajluqJTyxUZjedzB44iMwj1oWupgA= +- xqFCfXEZzTwEnU/gjMAvEFjRUpH7poqZSBbqIJr3Pw4= +- c0I8dwfELuYrQwROPkF9FPCd3JL9q2M1YqEe1Q/36h4= +- TdaOKrOjCXMxjqkD4Iiz00gGVe9CNhCf5HJywcFYKIA= +- l0SNh65h22FB6uOytdVg6n/D8RQ+yBPNaPlAq+RGFgI= +- 8b5jVLQYKKC4qhIBCUoVzACt0qUtW95bWCoVdv39+9Q= +- yAGUzvulO0o40G4y9VXhx0UDhVCZJ0Sodv++SV9Pk+E= +- od9t/7Xkhp4vdQxBISGWmbn210jRa3EYSU0ffc8VheU= +- JsmOw7RrCk971eRkJo33SgynryTy8exs/cJ7USKlmPo= +- gpRUfp/pNn8pGiJZhRPYl5KNGg7rcTyitB8xl3GSxdE= +- Lje/S9kUSyq8AwQvboeJ0IS+B47ajnTCTz9UG1EdjC0= +- GlN2rXJ9ZSE6efMQhUHPlQEpaaDTBk8Qi13W5/jBm4k= +- SiteGCLKEViFhuuRIyCBfzzwwRzV7Ik354qCCVBfToQ= +- 3mieBVJlEQDBhSQcaHdl+PoWZQ64FDZG7i1soSt1khs= +- JJ0fnLhGQQxAfGVpqii6esn4zW2VaFumMhpif6CZfbU= +- 1ttndtLGn3hV5nETOyKhZwothwzsYN3VgjHAi6lID2Q= +- xYXx3suYb3/xm40D3ro0arigSUzB5Naa2bissN++q28= +- Ol2Xl8a5MTtOee7YyNNp6U6r43AM+GTGJeUQ67oC9bc= +- QDpsVWuX1WNchPs+XW4LoSvB4icS7RmLBxSxHFFCw5Q= +- dJms7UOGmyf1BXAeTtxzfwzDRq3RJA1LqG+/olHg/DU= +- "//VJRe+gtANO8Pwu3v3Gyg0gwhjFAeGrw5/13U217vY=" +- kQKI2Onp3fWk+exCZOUHCmy+v79niLeiQ1wOcJGoZfQ= +- rY+chJDASwEztzZbR6ttm9gah1+G6N+yyQlzNZX/9qI= +- Zr7+7fLXQqKP9EYG8FxYMnHrt0PRj900wO/YMff4uew= +- xjDLGV9SyIOjd7PB1eQD31dDvTMIjjgSqlB9EpCdvRA= +- Cg7Lt6bqhRGBhhnc0qGAo++7VtoGhNAVoavr6plv+dM= +- WZRdol0lIQRbS8hNt9X9RLLFUR/nzCR6jOWnm810ocI= +- LoHw/5gnHQndwkai0jjZltW/OunSSpXdxoXFjj7t07E= +- p58ujmDUG25tM3kUhLcC/VcYxhx5k+7BCS31xsRs2os= +- 7W5EpCzJOCqVEptvAMWtHkvKwqM6sxh+88BOL2REtnw= +- MEmh+DJ+AhXqkkueTgTNSw/xgAx0pTbZuB09jO2ZlNM= +- B/8cpXXgKAlcKUuPJ76RU/KEVj22NsaT+8ULoog5VTQ= +- TALDaODlDnnPQh4iSa6h6MYsokyAXWG/WN9f+TSJwNA= +- 2KkosgQ9t340C1I1R78Wy0qkg/BkX+CikO0fIKq3Ylc= +- nYJSmQXMzDeMW5PK2qDleGnU2geRbIKCpOmKIsj2o5w= +- 2l2ISIQPhwXW4UzfHiUYJF/nxkXsl2GOEWsO7D07jx4= +- zUwzt9czmPnFFzigaNYoJZS9PoRg5jZ8rdH9CWzIdI4= +- i112SdRDM046mx3YBwTUg422V4rOHT1yzQVB3Sie4Gk= +- NfgsBNbU5Obe7wByCnsbeolsjHZ8iqbZMeKw3yPH9Is= +- 8Lg0nbjfp2WzoB1AXHzsILwzx6NZrc1GJRfzPqzsErs= +- BKXLJghYGrlKkRlYXHiovUenLtj3o4WJNQaDrrO78NM= +- k8awng/CkqmaLWDYYvSEtmyHCfeP06MM6uxkIqIZeCQ= +- dzYUVvR5gvIQVY/OPpsqO6rlNfmJ80fKtugEg7pfnLA= +- pVsBU/2/wPtWBeS6bLFGQunxfwCP64aFP7wnrSuf3wk= +- OnkpMq8ocS56RISIbPmSmesjbrWCDQSB17Y2NR/y85c= +- 3mZwvZbMt/lM7Av4pv6tXUaXlZ9m5xF1A8Qd2iJSyzw= +- 4nFe4A+KtpXT4qlCExgPbzIUSho4Vf3Q+qEOlnsDOfQ= +- RabDyG86Gm7Keh4ltN43qk1T5iz1V1K3v7lBvRG6JAA= +- 2MSG81MAQurUww1M9grHf99oP9FXlglkCLGDlBwzV0Y= +- B2EZsv3ZbXawSjQw4JyL+dPP4d/JkXwA5meZTC9apMs= +- rc6YkYo3xqFYvr441hU4yNwsY2YiOQ6CdON0xRNRltg= +- enX4tX/WbZe6/PUoqu+66NmRBVsxynZuUzLUrHbLEbU= +- C9iy4Zkx/gZatbxQpeCID4n0zIErtrMaaMTnI892M/c= +- KWj2C0xo/RvgAnB5sjBtJKB+yYVhKYR4AiD18puD6yA= +- 8OLnUHkRcbA5G2guw1g1vWpcP3yNHQGRRR7He0118kA= +- er4M2RnVcnyDpRHKkLEP76zm10eVPdXncuHsbU5vQTo= +- P8m2iUWdc4+MiKOkiqnjNUIBa3pAUuABqqU2/KdIE8s= +- yFVUNLnEMxH/mfn/fbsNVbfFOdri04+ow9i8rXOpK0g= +- oiklucOTrWz7Pew5lwAOBuOKDt4LrTUWA9qmkicT36U= +- YPgOrgm1PRJXUQMFGhGLm8J1BLvjrd83nlI4YNRiLd0= +- SS8/ONa108qFlRTiUOJbplk1vN2fT0DBJLdz/lNv7n0= +- Adtxq4BI90pLksJrp3KFreBoesGSdY6Bha1ScB9knvI= +- 5xiy3T4Kwfkgjv3/6YAk50BuKcUcMbz6mmsp0ZUbGfQ= +- CbbSGXsu6Ejn4Rrl1hopSExA4LePo/SS8frcFqjK6wQ= +- "+WkkjWIbze1KNYKhw7F6ce7f76kSDDbuO9GVdDjNVbk=" +- KnAY3nkjE+ceyjw26kzv0lN+8rYfu96eLz4NUbTy9gA= +- 0tr6Lm69xrOfy3oqhyd9Shwh3zyq7rYHI6aJAuyIs/E= +- DR6kwlbNUKKnzL/SKz2ZWfb9ML2EC5/zx8Ze5OId8G0= +- CDNU9kwZqvBk+QJwQmUXispwVINnsT8am3Xd4CIFJXE= +- 5q4zVgibgBVeJCSq40zlpdwx7bq8G+DbC70jqnKue/Y= +- adoG44w8v4AWgtuBImoYR/U2xjLC+7LiuiHsJWIG99w= +- "/0efnYkQBcU17EMT03R6CV/03uMZmciBIn1fdOCdhdA=" +- ebuNKbrZyVNLWw0VT+vwzsXvvbnRWCG7ZnWvJjagYdI= +- bPYV1byqx3g1Ko8fM2DSPwLzTsGC4lmJf9bOSF14cNQ= +- "/h8iU39Q2BtjcaDHuRl7c/lZU3PSjRpUxVqQI/3g9Ag=" +- OnOVQkZGDd7uXM9ZRnbP1AyYbcSHgQSxgbIP8Lj/WKE= +- 9b5LYuHEX2FRskfcrlE9qKkZBpQlNfDiwjK/fv5HUL0= +- nki61uMcEoJYJXvZl+rMpmbw2uIEkCe1RepIoM9D7XE= +- SEx4cgMaAbrI+TR+xjuagt8c49GRoQfudzdWwYWvjWA= +- Nk9fBUVhruWyiSpDhjHa8wJhYgtyNKEmAJFDU7HdiHI= +- qQEP0hqTxoezxMUGMTmTtaKt6HtxnQl5KxIKJ7hS90k= +- qf0HhWJCCidraQLKPYv1g8A2bjivcuI76ZsWA1p2s5o= +- jzmIhsMmtfjweyCsJQyH3mcj4GJHRGUnP+FSTyuQkvo= +- unhSJX1Z6F/7f9SUQ5t3kZ2tctcwBqAr7V/CbpSA59Y= +- YLQLeEanr+lzzgifGQaM/8U+QP4ozQdvk3xkT2EnqtY= +- mve8lwlgkMXPPUw6j5Q5XxUVSDy7UKjO5Y+KyGHvdno= +- bfpe2ZdhEzcUSgx591lc6uceM0+XSHfAMUVR66KBKo0= +- W8uA0Ggda15CZ0sbIkMYgpJm3wbFigRH1RrGMR+vrnA= +- i75AKd8P3qdj2WrIOuZ1R4kt9WPh0T+Ek7qsRJ14AEA= +- hmfD7Go+m8JbK4RhyJYsj3iEWMyyRnZEmohKf5t6lYA= +- Rs/SqrKdJLkDNQHtorV6fu6crDXebYhVhLXxMN8uqnc= +- QvOMEld7oyjyOsS0ZXKg/5HiSwAGn22mDOgAWOUaARc= +- 9AYWv69MHgYx0gYzDq0ZuGFUbQQAs/m+BYnbrcmFrY4= +- jGJ1n1vgNi2zS+CJpBGDGuKhJX94bDlput9K9zJ7p00= +- sP72IXJ/+Cp9M02fHwR9xmLtDifgWqj9Gu/Rmw//MSw= +- yb5QNg8HgjbyiA7EG1WCnjS+UNvb0Ara+ZI4NEXd3xw= +- PzNxx1nNTTm12axXH93hAHVoOR1iGw95n95w8PJFpuE= +- lw6vDU3JvsPXQTT6PWnm+AJcA++CqD/Vx3guP+cAdec= +- n878AIDYlOg8p9NgzlzNnq0sXYqAoQ+fqWmFEKq6hlo= +- OadZXFnlqPVUw44G4Thf2a6BWq9WchLg3beU4aUpLkA= +- MRPJ5F/wuOGfBuRD3qo2HO2wjUILDmNgYhnNWIH1+ic= +- G60B5uPEHqcuG6jyY6FhWGL8bZFMpZWkSn7+FNC4AxA= +- osqx3spYyDUxaDEPUgw7t+RUZuZyLXcb7RkSYHe1hwM= +- NDYlG9/T9i3FNRqvGjTMY2hpZwtcNGnNsaBjSsSxKrE= +- AgDwMxXWvxnwBlUHzrYWc6DJ86+vt+g5QRHvqD0GExs= +- QrkQtK8w+QHYaShqmKkGMWtbsIke3dT152MK2o85INw= +- iExhU3KrUuSXiJ8o8yRRhfRUrluhJ9KJvcDSs4Wgy6M= +- r6LRJNdWEvgxNbYdaVuDm4GbrAt04yS9f19mPiuhmPg= +- qj0VrROSZ+VqjJTNWwrzs7eK2StlONVk16iRNs/Frrs= +- ekfUbjCl7+dJGb+1V8Y0cXYyjoMsQA9grc28GPaOhqg= +- 5vRYB0ZorV2PVdQUu+K5CPu0aQnqNrGchUgEW77rFk4= +- Raj2r0EjDH0yOeY5RxeytjArUZPYpE+RtU1HtEKyigk= +- TPjFdtSRSioqWM8jDGPQqEuRwby23sDJU3dVC3aWWEQ= +- vdYMT+g62dfIEWs40lzsl4TnPLd8hRzJyBDYCThQnV8= +- HIi1JGAZyco4WsqcZ/ZjFEhiiFnhVj0lXA8cUTcG2lA= +- H3OgGOmm4guttneOxXKoRqyB7Cu85CF7P4gGDqYO2ws= +- St/5TrPRC7NGkRADEJ/1Ga+soZfvtIG5q3UFvneQKbI= +- P7MS+MT47KwKBYaptEPtFAaXr5JW8yCGJaNwx31HyS0= +- oTj0NXs6J2f941a96q8Rakf/rPO03ZgN4D/CL5El9TQ= +- cx5upvAEIBNagCG/dQQ+6ZjcpATIbUiY7GqjUgAxkWA= +- 6opxvJZu6+C8TIObtmX2qCMDnBJaeIx19Yh45zcpxUw= +- afW0P6Sn7GfMHgqsJMxznxJz2+FXnW9kOe14QFoVMm0= +- EXYEEGxR8TfdDEN97Geg7ISsszb9NwrgbwCweFtsZW4= +- vDNvIMTpeEPB7jY8vIPufNBcybHlmu74uaIjbBVaRzQ= +- qsZ2sCyZvwC27EOw/caSs6liNWjZ5XUflYpCwBe4Kjg= +- N5gZ0XMqozFp98q4sRJdCSb1CRUGF6P3B9TpLST+LFQ= +- I9Z6xG5qoNg/dGMD95zprlFFDtPM71bYrQy4tKSVjSA= +- ozUXgMTgcv9b0wpotKR/dsX3KBzCo0djJO5L/TBWl3A= +- czlyUVmJPFfD+T/PdspxXK43US3wIygZtjo14Iy4KqE= +- eBVN9fXkJBsDtd01KmIoau2zl74Q8cZpYe0TyzNuQik= +- od05XBnzoff/Dmv+PuYCjkNztBCFptp3arAqi68Smrs= +- hKtYAwlnrqxRlvc62BjrJWp8dCp2r3eigy5sZ6oJzcI= +- "/N2zupGri0/zighCTzQ/f0Zek6weYZJuLPKDudSTzgk=" +- c7Xq6QGFOsZ6A8o6lt51he2gHEP8i53lPUyqO0R1nyE= +- 5EINk8D4jL76OwfFkiWmcMmLWf75rhfovGSruO+XQuM= +- IFBM392q0LWQylPEhh7dT19c+cNIw4KVvS2/DpG8pMM= +- 6/SdzYNvgQCEwU4PLatNwXaLvcWYBIG/IB/Pdncd/3o= +- t67Uj1sygouVvIzSFHtuBtZgHAKRgeiMdw9DjTlxMkQ= +- L3LuiYXOtPbJ7Czx8a584Ju/yjvqsCeKOHI17QFORbk= +- vmYTxgtfN2mU1MscjBevvoXc+7Ga50wxwe/5ZeKJI/8= +- yQK+6b6/adRpgcKQEMI25HFMH+tLrryeZ9Ga3GDh7BM= +- R9IGWkVQWZPodU1F1P5gx+s/smtEoaGOlGZaZagFPWs= +- QEk2QudohJhTDEmSmGLsqc6yDUaoT/LHa9OfRhOI7Hg= +- MlC0pv12MeTenT9vTvJygRNAH0ja/xoIojcW/oLi2Xw= +- RI1nMe6Y6o1cl81lG7S8PzkM2FsIxCtzFreyfZlUbV8= +- eg0a+LsvOVcniyOxToaL9vQMwgPJXSGcQM7a01UoZ20= +- FTurqh6fqjh+dpm6GrhoIK7Ns66H85+AKg6e+hRuZ9s= +- 6RjfP1M5IjTe7M7cvxG+bMfvDbJ4Aa+/T0EMIqGmtuE= +- JY8mTiyj8jdupUKqSRugcbJLwEQn9FYQ17Vtg+nzR+Q= +- 7gQijFxtiwg/bOk/t9fb5IfgSpaynRP2J7AfmtU906Q= +- gZIQq55wjV3dqIH4RJnQmFRv+J5YxV0aeV4aTJ3QsrA= +- KyIZcFFBmi0CkkGJneMlZRu2/KhflBTXZZH8gVoiD0w= +- J+IHZT+8CaDE76dnHj5u0C7HTd4JkEhcIh3U8fK70Mo= +- wRIzYHCaUOWBBvdvnb5NY9bpqJKA+e0YUf0OGTgPmRA= +- WUsRWdat897ihms0QV+tTkHWIBnw+S0fa1kPEiEPLGo= +- cV4AAWjfU5ZshM9R9rvXzDlL8ce3XlbTexffOxpuPdM= +- z8LUc3TEvlzFPI1OGlcRS140EZMHj26YXItJHJMPBYY= +- SrbP+sO3kk3FIoazvPBMh/Az+c2sZvuXgy7P2Gux+T0= +- xHDE9khTateH9Uy7BimIuwSVzo9Ns8hkMViL6IrEpsQ= +- swStwzcZ1s3bltbE8apGYo2SdUe0m3DJgcf+qVPgYAo= +- HdkwjfcuIaRuhEO1XK0Wa6Isa4jqMIsTyO/PuGz9GNk= +- WV6F70BexBYaQbSAtxJClfdQyOzFWCK7UB+BWCI7oOg= +- 5JhCPWiReLfueb+en2Ewi5vEfOeKFvj8UX5Xk6500RY= +- AQRTUI11OzS8olUjAsIZf0HJOA5E57owIH6COM58JKg= +- kyPdZ4bry/OshzV8x4uhq/2mz15VzQEJe5DUoobKyQ4= +- 3kA32D9T5xVQCpzGubHD2owONjz6r2fjdWaJzcQoS28= +- o5GGKKjyghroq+e74dgXJB3yy5PczUz66DstjGQQfEM= +- 8cYSexb/Qiv6CbmDNKvkTF+IMn4qIYWi/gDOJs3PAHU= +- fBZ7IrrS95MPgPQuU1XGWS0VtF2Ci0E5SCzNrALt5VI= +- Tc8yskn4e4km8OJ5gUmyeXIIrmn0gua/X3o6yn7Y8gU= +- oduZaAgKYU1pTm4/vrwyp9yCYx4ZtFhwsvuTC3+kX9s= +- 2eIYrIcNeIwrdhcBwVrSvvnEhJkmljq+uiABHSU4kw4= +- mfeMskLcLIUqdfYQDxj7i6tL/yRmHJWgA+j8XwZVuwc= +- wrhIyacCXWHov0ysWDlsmVH1xgd/0TFAhg0G/8qnY6Y= +- ZeO1hKvR2iu4v+8OjqyrI/hSOZ7F3MNKukGULgPGlVY= +- YxFKHiwEBY70e/TKxXfQJlejNij3Ni/dUlWnXyOL6uA= +- FdfBqg0bBNwR6SGJrIk96hZ5et/+QX5PEW/NeOLQbko= +- Qg4I+sDPLHzdwotetMIPxSR2zBtyDwWetvVHVWs+dEg= +- I8uwbQoJgHbA6f9dYzj+xmTaIF8CDEGQV9PuAJhcDl4= +- KE//O9JUtIzKBai/xPrWngXK0NCGUToDSmahGIKeb6Q= +- XLhJXZDcZeoND1yofNVsl+aYrNND5FD1d1/PioV1wsk= +- fqqWhBfF2955MhqQnXhpI2fDwhYIMntJERbjnLro7zs= +- IFVW8UIiA4rYrHqjV6t/cJZ2NFpBqiU97gh6C309S7o= +- HgS9QpVk7i7kGIOj3TDhWUuYSQu9MpbA+uW5grSGF4E= +- Lxg6TmRJOvPzd/dF7aUCNjzT5+9uTSZtREdY3gqF/Mg= +- HyCtFyESd+uwzWJAR/fFnu86QkblWPfY1iMpkgvtr3c= +- N+gGiuLE4J6IOHsR1VOygkBlYbL6v8f+XWjpcMTEHhI= +- qP0QpCHwv9P4wlNg9HtoCRE4gYdrDzwa6qxIADnRr94= +- QBM8VM1yDPd6F3+B1Ya2nudDfl37XnpLe1AuNpupnsY= +- uHxSK78FN5flwBSxShG9x/FEbuLxYYPYbOPsELAucyE= +- BQ+ZPqIyLUtpQPhWCiU6EXCf3Fqwj9mUvOsJaEbqFkU= +- iE9Fiq/4s9OkgK5/p4Umuoo8a7f653xhZ0lqHwv2I+0= +- 2ozHkJBVqWln+O7MsNtQvTMIgpoU+u4KyaGxxmegyFw= +- AIkOkSLOG9PfxvzarkHKRqirMFDQfH0V+m8ZtBZMdZw= +- fIxgoZ+gtt8nsqoM9q+dhNvgN7LZIHBIHXKk9xs24kw= +- nErqr/nm17XT+v5lChXVBQDU9x/4D0oiDpmY3rjWzQo= +- rAxw5Cke4DlorSQwlV/xlWinSaldePvqRSBsf9fwlaw= +- 8ff6SLYy4p+r+L/4dyB22+G+1WD5JBRrfY8ERwNRRgE= +- HVYgAHA0bY3XpuoCXNnQDSBIxCx9cLEpT12Ipf1MY9Q= +- uqL88D5XubQxsjK7Q3vbh4wW0OBucmd99VGvBBUurjY= +- PoGSz6F9j2YQ43z5f7i2y4a8G4LdYpFt57GXvPWq1v8= +- 4JRGEUWvr3bJfpan2VQsC0+e7RWNpzOMKahAD6bUqz0= +- tPvlcUTfiO7mmDj+5ZLf5/wlByLLzbIXzInmcpX9gHM= +- 8SC7VpjVIMVpG21gOgC/1mLRO/F3oEVx+dEMB0XfoqU= +- tmUMtafjCMEuYXoF4xooN+iL9R0f5mFMuJYSdDL+JXw= +- jOlPyYHIPKWGFs2ILykllig2XQeaKFpaaKZIxeYcVPY= +- 8EE8npbjxzPuFNv6GH965SwplxVF6JltptBhj3HN1Us= +- nrfuf1UdLwrGhJgb0fHi+ko3WQGZY2dT7+YU1Nsw6OE= +- "/C3/asPkylL+zsqcvBkSMhe1ciWe6bg1V/qAQTgfeZ8=" +- Qx6HbRSL37Dkd9nz2QqhHvciBQinHBEomP8BFA7Zl3c= +- UzNqZ2xkwTllU7K3yS84EmdognyTtk2RQgacEO2npyE= +- e+iOEibGUvBHehpxORQlYSy9lKXWPOOREDkzrPdsA94= +- s0Vj4uvrdxcIugZIyThTg/YcwR6Gr2B2hIQzBZwUst8= +- 1ZiQ4L8Qh9Fv4NWITl/iLTrOWyzkVIKykJwfhGBErlw= +- m+E/ZrprtxRqRo6jdNtGfm+RovqbwVeLh/hSB4vdQ04= +- nNz7vgGDsvGFXuL3NU+yqNF1sTOyJwUqCVMCtFWb9SU= +- fGauNHCYrI7VvdgpPv3HcWdf/cVff6/q+yiqZN/oTnc= +- HaBnK9Ny8YHXn9U5Gq7aENJW6/2V3bCaubUeUq/72/w= +- syrba1TIcnBt6AVdFj+e8HFr4xPHC57GHqQGKDTja1Y= +- ERVs0iSlxz09/oP2xblF5oGn/zhPD5UdZC+F8Km1U1A= +- ag3AGwkFH9HfJh1B9bF8f94aZMG+KlHAAvk7aetIBh0= +- OLukIYTJ1qpRsTXm4+Z/oxrrsk0ohUXkohMJ4ilYe2k= +- 391aDD5wHDNTvHjkJ/BPyyxAugt7VGcW448s6Okpy7M= +- "/ML0BHRngGVD4hl8Mqc3qnRciJ8WKITLus7TwrS9SKE=" +- 4spq7FJVj8wEMRmDutA+OMpeeZwjnSAq56T1iv+KaXA= +- q0XoR0JpsCb2aNSYYLNoUBIuGKUNXqOPP+/a4IJhhlw= +- Jbd9JLZxHNxHJ+tanuKSqRbFHEFDQ75BQslPfGFOhP0= +- 8qypO4DK5oEiHwRF+k4sroofn4+h4XQdljnKrSIvU30= +- 1wiM00R1Cj8J0diCwDMvGNinLTyoZGAQZwBuQrIBixw= +- 6X5nlcklJ+bexY5+pEjVVY4RTxW4aU6Id84ou88PAao= +- Uu89jZBzTEta3KRpaqFMBqNFeV8s4mVdpNyoQtWJvlY= +- 0sqoLNtaCjP0K4Egg8SkxRlYBfW+IFjNnorsmrZYm7o= +- wgz5h5Zmp2UAuxNq89DPTRVoMGSz71va1c7Uygg5Jro= +- i5L34brPyV94fz6C0+oU0lfN3IPaDuw9m2N3Odj9mNo= +- PZzbKRVASlP2O9MaFYaF4e9ubpkCvEhroJe4l6voMCc= +- oDwy/NNRy6LZc4YisIO+0CLvB3k72StZ+uoCB2U/Nx0= +- QCaW+7rG6DrfxlSfCgEPvi6/AdgMiiVSQnJxd1spWMU= +- 4V0SkkwOCQGMaZ0mG06L8JgOzWP92igQJ2SFCu5PiQo= +- DYJmWbtplAeOwSEQRHTTVPqZSh2/qHUwY4PmMD9JrTE= +- 3EtOID+d3c5Gh/HWaYm4OP4oGrS7S1M700/ZtXe/ETY= +- UZB298Ts/EQol6wxaCBtjjjtaaRPKoGpGb08A3oJXhI= +- bPXuCc6hsj5eosljEN6rorwx+3Ua7rNkuRHEhchq3rs= +- f4L3KiDL4pS5nQ5pzPXtZL0SbOPRcxNcFrUj4CWeAqA= +- 8/bHAxGZdopT3adOkBN8Tr+QuvP1g5QXpIb9Vy8CFmE= +- b16QUZxlm+fp25l28O2IrYzjM9TqbDs7DT2jksxP5fU= +- t5u4vRZwUJtP4T66on4i8yqpIxgUok4zKm9ujUEm5d8= +- QD9FoJZmXSXyt7B+Z54LrSSuK82uvmsOmCEPaywI1ow= +- OJ1GOJobPj7MZDvCv4c8CYmqE2sVS0kt1lwG0hwv4yA= +- 5gYAYWhqwYR9aytV1mrARPOBNHHQRRuchv5R3wAyKgA= +- iSfKE14MFFI99aEoAOJeQdPqCVlz8WlxOMW6M39Vq0k= +- mJoJ61gL0YX1sZ45fZNxCfLdeZfWLCFym0+WKbrwm2M= +- 814fOrFqBl951cO81wXWc5UMSDbXcbE5PJPMzsaifAw= +- 3oJMlWxaQvdXhodh4tepdAm2cBSSNrFb7FsUXnNNoBg= +- J564jKqDsgBWoVzAnGE0urDniPt0o2mPuiLevewtpVI= +- q0BAbBRU9vfSfaQuUcGCCnV84mx9NAThrRa/mDpKEtw= +- CrAmWEKhx9E4URMzSdJB4qglSla+8dR1Dqt7xiAVimU= +- ssnDiMnr0jL/pSDSn5Dl7YpodZOWV8jZP4mde1ZRq2A= +- 4SO+KI9rs23kALAodkel7Y8E45XcQ+5L6N4oXB0OWA4= +- bgAHRvFVpE0VIN5FNMDFlgcNb4N3uiIzpNHWXliS1eY= +- RzYLjF9YxboEyM6EhUU0LASQz6sjzp9Q4W5Asd8lTvg= +- sfjhv2U8BF0Kv7SfVwhqbfLbujvNntJsPUdJumPQETk= +- NvUJV/Xgtu4+9FVnTaNahmZ/MxQgncFRTFEP6V6ECDE= +- 3D0uceBS1lO2eMGm70bmva9MOrccHJpxuXjw3qJqG1I= +- QwMVCjaLF0QjgeC0Sq1rQP1FJB+tmPaGtSld0Doi/uA= +- INGhQVhul8yXj0m/6OcnECz+wQD+eOHa7VW5Ha30Lpg= +- P9E9qMjjg3UNIV+rFJk1AI6ywNpPBJcoXZfNr2+r28c= +- 9AtTDjSixheCMuGFTs05U8ut20iMJKXxffd10LZ1Mlg= +- rsDniCTeEgXPmDhHgJg8byt8A/im5QNqUI7OdvGzxac= +- LFi4Oxxmgp/2BomRZEt5P2Np42W4f3kOrkpA7NlxgAA= +- Y21c1QTO+rlOHgE3zVliGZVmi7gYZrHyZc18GKmFZOU= +- jOt77hodmh3k7Htw400+ltEOq1kKmWTD4IK4GDs7u00= +- 3gFS+VJ3bwn1N9MJ8fPw7HNpyN8SlwcelGlS95jIYGM= +- Ktuakm8ioLScmJh8GI1qAsgUvODvw4KUiysLI3KVv4M= +- GFzo/GYMVgfAmvtETYH5GDAKH8dzfXgOSmwO1YccbdY= +- 5dzT+Apax2liibTzh2Zb4JGpyE95HrELtz5BcIT73yg= +- 6GQhy4ykKHEIFLAEPzKkbRjXyuzBoEYgw03OMFcJHcc= +- xVDC9KDU/YwWKT4KsJSyJgXMhPfne6nvQN9RbY3w+8Y= +- shSSsV2FUA70nlrZkOyKUwwndyuaPRKXcP1sczJXwZs= +- ecfuFWAryaCLzWJX3670ECF8juJHNThnMmAKPli+yJE= +- 5IRDkp9X7Ey5ZdNYqCWEkVWygohzxO0pKf1xG8nwE0c= +- atYEabYF6JfEBb5AO/GaTu7zg1XGxllltrxwKqNVJo8= +- WnOyqVMjmPwjugk7fEGvUOxzt0uU8gWK6QnvQ94MxPY= +- XmoJUVgoOstTbaV7kZVTh0rv7AsQ/62DIvl+GUv2bvU= +- M/EKTR9km5K+t6iOXS8Yp45cFGvesS+n49ZfRROiYRc= +- W0I4nvhBOa6GQ68qGzaQiaPnKYxH5ZDRiiAbh+vuUeg= +- A98uX6a6Xc3UO6nOgLKVXb3dL5FBgsWLuIK0R0jQqwA= +- 15wTs/fnXB9hviPuKnKMmsGAZeZL2yrLqOrR/+2v0Wg= +- 1Y/I2vAOm8PihMhTJqhIbfKEIS18xpz1YuclS200qTE= +- CyKYRAhFyVOmfUwqHo5s1DYW1hSYquS1eUYfLPG7zLM= +- 0Qanirl0KhpSoV7I4Fp9yUtCbCcgHDGexo5mumM33KM= +- 3loa30/tzOFTORXtxgF3VH8QV7YbcRn9Ew4fdChwX3M= +- UeKkZyHRBNkUjYW2F4M+d0X9vWeVywtQKltuox0zN44= +- kY8vFkxuYLTf8aXsHzDrSOLiR1kV/jhCfzpCR6AUEFU= +- LFq97yoOrLSfURWZGpMx6PeMWhX5hkJoFf2UhrUjBig= +- 1Cb4Ol3AlW8e1+qGL+KELN6UxyHmXw5W6ZMo43pWMSI= +- "+kQTKyOOZ5WPsX0zpx0yUiGAUHmQnDp/W+0aA2Zs+DQ=" +- LdKHvDqESlVTpfYYBt2AmQSnN6INO8fDUIAwZFQP1jY= +- zp/ri7UR4qwpP+7Gi2bxALF2er7KbqirKP5FBANxMAg= +- KvWpooWEV5189QU+ig+v9457nh3opI7OamZPYlS9rds= +- u5PP+IUdSazN9ptmWwM54c8V9WwDbrvqXJ1CT3mOJH0= +- ltl+mEMcbfFS8NxNKJTGytlr3xEnRMGb907EOj/+kvI= +- Bp/KAJiC4T4BxrBVnJsUpDN8RJX4P9cgll7IDwdwppk= +- TpOUymW+mHNAt7cG8kwokLvTFQ2u+JYTXa54IPUZT1w= +- hQYpXW5B1UphMJlHtnDpX7H81KbB7/d4y5hmAxCrwDQ= +- tvbzacU/ZEqpsVd42/8qHwX8m3Y9gjqoCzJfzF+1zsE= +- 57wvlzr7jfrwD637GVlnQRCL4Iq0oQfGp5nEKbaExko= +- zpebV4A5TITbABGwWHR+Tc50Y+AxmSl/BlbzW/9Br0Q= +- pnkeDRKZIyQkZv/YyT47uZWHkbJJ6ALJs7Piw6x8DvE= +- DfNlyhdmlYSqifPKpLIlvcNg6tAMROZ3nfAe4qaLd3k= +- KyGKPebpw0jDxILK7p7Xk7eWPFTTu+dXqLG6f2TN3go= +- bTUKIVWs8MDNfcuqsMlYdSClnl2kZ5SNClaPSmHA96A= +- BrTqswkt3Xmm9kQK7qlib2jq9ZUVeOvBBY3Xa5wL8gQ= +- JMc3Qp4DIel4PTobG6lmkHqepwb+K6hDIlnbUW7yHss= +- lIAAD355RUZ6PQP60pLDKVK5W5CISIidS93/BwjTAYg= +- 4qUw4lHTZ1A00j9cX4f1TsMYKgiLp9EzUIJHlPjmt24= +- 4e0/Gsiet2qR6tOqGEvYt7t0Jq8wvsGSPUFdIC2FIcA= +- zIbYZeR6Ja9Lj9rSZ+KMMKYE9yjnPuItL7VbTnqSzpY= +- eOCgYf1eJN/dyTOEzS08mrGz4/+y7iQ05PkJAT6IpAU= +- r1iddY2cVE5ewOYgNLHhqwjS4d3M+4KwSbMDWG2Z8T8= +- vwric29nuAJKov2jBikeh5SXpOdVv2KPUtnsaIAbsb8= +- f/Jsp2Nv7N6VdXyIx5EXzVczNE3Ok1mUugaDvYrjBHE= +- "/nkUgWGEjk1QUGoRnMYgd2cQIxfgDDTK5wZ6bM7heJk=" +- gGN5zekvlFEz2afGDIqYON1SWfDQlHAZyYflf5NUQ4M= +- tkQW19YRUMvvaQhgT1vdLyuM/oRXvSycqBn2WURFfJk= +- f7l4y7NXGhdTTlCx5tzIKquYJaj6p4dguWq8IVRljBM= +- E6W+eag0rfeITjoITtjmCVF16BEmjBgjPr7llhotV9Y= +- a+N5BbHbHJEV1aeSaTJwBUWUzTOOBCaMxhl+tsEFEdY= +- OecmncyqfRBjZ8B95gD+IhN7QBYxY9QfMU8li4Bmj7Q= +- T7sZKdTgh4zVUnnOI2nRPE9zmes22i+kQn6c3lYpx7Q= +- aikax2H1dhYYuYv+N82i5YN30bJIxQiIBkWdH6JY51w= +- hjTB1Djt4EGEAWcNr/CzUQJXRO4n0P4jyAyNNfbGJDY= +- 6gEWpv20LSR4akQDHIpfN4IBdchww+yQq0j8mJyki7U= +- WBV1X8bvrM11FAGMwSBKKGv0t24h7vorGcpACfJjcrY= +- if24p5Cwbhc7KyXBU4yX8FE/3YT0Y6xNbTMDzqjaej8= +- Xf1G4npePo4G/LkoF7CVX3/SgEj1ADv9Tlvo5nv0F9s= +- 0jlqH7y8zVzxf0xwlp+4/6aG74GMO7pXtaZWhOwxue4= +- VG9yn5jrA6BIb0jtIERxHfydp54QMafIg8Mzv7bU6HQ= +- kxFF1N3RgRvlReSsiKgfH9v68HecQ377oWuIRZUnTRE= +- bHDQmZs+vwHnboGncq6dBIZrxusL1YyMtW/72ZnETIM= +- HbhrSecNgOTm80zBEtPdlLj3VqH63nhAw2AER3YmBko= +- P+whMYUrXbW3jl+7/n8CMJWfrs/buCG1ERcd33QGMLs= +- 6rxE+lZVE+1TXzv6pNcLoo6tloMEawTQZ71X4BqIl4E= +- HMxSEqMKElbBDJ0gxljBCZzRo9Q3uKAK3R6Wi9z3vRw= +- LwDHDV+phn170iB+DQuH41qayWKo3jbuG+OUS2OzkUE= +- e2SxL1HKOdxoyAm7EZeSwWn+JO98yaeRatOwGv7asH4= +- aHs0ah/iw0i2A529zfglUuYjtflhCThKTaqIQlw9cTY= +- 0EA9Wk+SLM4TIpJ/R/ZOP/7MzIuWWTkNW6A1xfRQiNc= +- eTAbItLI25IdsmB1CH2cymDi8fYzSnmFZplrPF54ySo= +- puvfsSbnAlQUEJEGr5+4v5z0YGbsH/jvIKJoB0ne8W4= +- F8FTLKbP+PajqCAAKK9sJYC/N/OeEMsJZuilc+OySh8= +- 1Mf02OT17jEjvsQtV8pL0Zki8J5F+aJZoGj5s4Ywbh0= +- gXk1BTsqmbwBX6H4ZRPDaSrYwcrYo4vJTsytjoeJXpM= +- 57wwpSpLQuh1O/njv/gvkrZdDRT7y1/YYoSG8N6poUQ= +- SMWh0hf+hQgkZNLKHpChbRVGT6viD4YQ15tjqlh5e5s= +- "/bgn0amXls0E7hy5aS8ZrZfcnF3GWbr/rho3hwNUfl8=" +- SNwTA2XGHzUlUczGVapVW+2cU+Mw3y3Pl9fB8ItprPo= +- azn+ilkksKbZtRb9skPQMZCRNkMSTK+8c/AThtKSyPA= +- lSPZ++ebzz7l+fZkqAQfo826S2uLuQLLXsM1pb8cp2k= +- w7KStnaYTTn4oefZLvRK/z9nJBKAi+T8i8NGAQGfYug= +- 2CCHpih75mAm5LS75sq2c7XmKfp9IADSDl4ioRgr6zw= +- 2cwXyi+Zz+UIAiY7ZQvjZn1pIONzY3YIAd+oERUk9bg= +- FPjspypKCBTUN5g9vS/nJsx2W0nkZegeZ7eLrEHFU64= +- 46Wt54NiCX6dsyqVZ2jlqNNJgMkuNLPBRP5xwmnlPNA= +- OmLugEg+JF5r2k8kvSeyB2O1q3//Azn+l6UYHqkRXmw= +- mG3kUpZOngXjjz/4ivCzqJSN6Gdn8JQXvT2elQDeJzk= +- p+tzbIzcEGy1NUjztiKb6nVLkSxwUWy94kC9282j/r8= +- LaIf+7IV2MVlzdyVGN6uOG+SaMZj8EXBiTMhzwVtkWM= +- 2Ehn2w7uzbc7XJJ5Eht6IHQPaVTVyKqRLG26BeA6reo= +- fxjJ/LOqyT7jrcOUhqP8sf9pvUsDZDfA/CDzLywREtM= +- YMYMv+ZpKWXBLvgtvxeQutvU3s94VEczRDhxtRmabRs= +- WTGVeej8WsH+WBCrySZkuXt+tf+8G4X/la+qcBPNijQ= +- AEhXV0TdLFFztrjo6kGRxLklvjrMlYf0Aaxtt3SbFMo= +- hwU2Ehq0NzAEuTWABIYmnw9t3KxtVCk7wClv60we3dE= +- Dnw+zVNkZ/ixHSznWiOE5Ll7PxS88L7uPToMBCDZ0qo= +- Pd5uVNsqKYXPdvYtgw6JEaB04JYb+45K9omgIgMzsHs= +- M2HcfrlgffLWa7bmV++Ep30jiuO0TZ5VTfTCI6t/uA8= +- T3Vj1rAScmRrrzuocXbPCHd2FYdjxScDlsn2hzYtzIs= +- wpRx9wzNhs0v5I53/XoJl+mdfFv6C8+p+76oZ9v4juA= +- NBz5Aio+ZGkJjten0FYHH3MIfSg0B8OxCMbg/YmW7zw= +- apjpLJIpHk9lyMNVtnxLYcrpkyNKwD57Ho4usyw76GU= +- GZ/7VYjXL2iy4MLs7aG26H6dXNovw6Hjf7pRY/+1II8= +- eqb5EAW5M/wsafVlJ0B1nJvJ9ZKoB6uzAoZjHh3e12E= +- wB/GFG0JHKXRXDfNNt0S10P2CDuU12FYsGLwfjFSn6Q= +- vAyhc8vhcq3v+eiLtYqeDdDXA5gKA6nYVFtgrTCPsKc= +- FsQhQ2wTweJxi4mhppJXcTXK3Y2SLNnOti7UmS3FNdI= +- g35Z0Dlqtfz6ZMSN/pifSW7SE4Z5k5mn1DWCkAhxp6M= +- JGc1M4jACuEHEh2lsHdRWEexsUEmCnWy1idnu0mvgyw= +- ZqVJFkRd1iG4Qi0Vfl1fPQt5T05K2rtvJcJ4Z67cvtU= +- Gp4+9y0zNEeG4R072boXYyLNym9scQ8zoGwzHYG4TZo= +- FVJgc9qVUNtJbj5nrtOKDZBae4s/H/U9ExJsXVa/Phw= +- xfl1s1xyz+LacgCcmGanzl6vrc5XrzlcnBtslLOD7Sw= +- "/DYHygRzqQ4NN1MhLfCZMZwQ8kIYZUuvmEiRsObyyvc=" +- WQasNhoTfi0oZGXNZYjrtaw/WulVABEAvEFXfD11F2Q= +- C0H3ofcTKrPxluOS+t/ScTwpF2IAE/Y6+XMBHTM7/7E= +- 7BDl1VDedmVFtyKKjfnIDTB7CdpHozrbgjDJxfwwPGI= +- w++BlBUhPDty5JsK6ixZcsS0eplAX1r7eIwvU3Db/y0= +- GoHZtEro+u3xHYF8NcTdGQYOXTKk3FjOQvMUnMUW71o= +- I0xIw7nD3MLsIbaUpwdcbic2jXVv724KFaW/08nfJW4= +- B8lwwaFzoQS8H0x8wTAWmn+HeD7zt7iylvDR7u8ODog= +- "+qn2XTz5LTbhLDZOoG/aGbhGk0IsRcY/UJMfJzcMztw=" +- hJw5g5ulGBExYbj2b2cv0Ty4CqCGYJxtqj+SaFy5VUc= +- 8nQ8sz6xksyw2zP7h7HGsf3Z54Q7CfuwVxUh7yy3TOE= +- 6O6IXQnMpnGQ+ly2cCsa0NszHlmV9OX3VDTs1+vrbRY= +- hswm1xwIS3/4b5eOrI5bTMTFyxa1CxmrnI53ruqF+kU= +- kT9LSEIRz2BfQB2EA50DBvZevb2FPRuME6NlIoEO2Dw= +- GcwC8m30PMVxvJ7XsMTSkiSj7CKVKSIXJe920CHIMm8= +- ohHv5luTREoCk3as5bKLG6pjsXkshsbjT0/QmwouLTY= +- tmu3XVM1d6Ovf82/Gow/iL+7QJBE0LhgzuW5WpywgOE= +- Hscz7rIHM756cekgpZOaeUiXP2MZqT9RlIfwi0c4Pu8= +- aC14nS9ZpOe+xMIIqd2MYo4y6gjFu8EU65vEKcg3dNc= +- deBg12M5hRn2NGNlXsyS7mRchpnaPMYgG2CTuegSZKY= +- qZo8qyv+zbTCQPgNAAdRJw/MUns+YxFY8YzVbFVvbhk= +- SoyftR22+PxHPVGsqGibfduppubXzpxlZsmvjgvD+18= +- as104UqTCfOIxO89cK69PIHJM2maIJlVFzHsBS6loJE= +- yA2s4zoO7t530ZTtlJd88maSotYBm0Jr1YfN6sjO/fk= +- gfpo7IR1WhC9C+tSW+g2CIyPlPs/3Y2jpjnnQRQX8JE= +- B1EFxpKdEtmyQN9VPVduQRNtbdeij0BVF6JW6ZlshoU= +- BILuDZ3lbMN8Qma1CAvolWuRDWjplAjFU7QJgdepkew= +- "/OGpC8Rz7PChIUV5cJmq4uOCbLsmDs4R6tegi2+SBqs=" +- xkI9k8ltsx79w7RbY3Rc5yjJbN5vFRiovKZZPrCU8AM= +- aAewzeNukmz5IvLNMnBaJWF9ehvrPdtCw7KJV/g5QfQ= +- 2K4suO7l6rjBHzs0OepKKkCR4GZGgngh7hlrdWikFM0= +- apnXK65b9Rz8P6lkL9tIQAlJPXgs5NyJulYDAbmxFa4= +- ZZxujRGHPbxnlLXzfhi+RLDrOsmTp5yut0CSZBLk/Vo= +- nZkytSYLsMlj0V4tU6b2hgxxlq2VbCLBSUcX6/udx90= +- hTjtrmYvwj14T8YgAehD6O0SgDgkCkvq9+Ecdwic2Vs= +- NSn3rg4oRDGJMI8zh+k0EwkUgSEERhH+FzdH61+033Y= +- fzA/L9myxwr6OWY2g8PnbEf2AiU1BIWqGAJOBsBGgws= +- CToLCfOg5ZUQkx135WXIspPlTLydoWUYMF2L47vGPGU= +- dWcrW6XxgLohM9S0NdvjSPOAzLBT/M9/3UV3qGeQU8c= +- g51lF+wQTixwzh2h2GsdicX1R7Zmrc3YJEVsl1bH4mE= +- rtfvnJNefXK2R167lWo6Hy/sgMzhhIpmpf6PIaTo7Zc= +- 4PiVhy1lslKP7slzUKOiErPUq4h0jiXQIqNGQdM4IWs= +- vKeIPLN5KNUv1sMt+gzFgz8Sl4smcIVPY3kNrFN2GHg= +- eJIHPgTHcEGepilwdwqHFVsl5W6QGzX7zlV4ot45Jx4= +- XpODKz+vDHQbQvGu0QDz3INmscCENU6Ea6POozb0Kho= +- HbRnxpjWRwaqhkOmQNIfIUAKKUzXB+SgNlr/kQJEmNw= +- EIvQdmv0Ktl/xoMKPwyV/kxMeQac5WTBNk+LdTjP/hw= +- fHYfUCDVU+kCYpdGy5XdBb72YPVHbS01pxaNgh934ng= +- ANhcKzqVKbIpEIIQpgDOw3SDU5TksrZKqtGxZJHe6cQ= +- 3qAhuF3dPJ6aLXXQncysNl389m+bpleEAM2dO7pmsOs= +- oxXw+PDxfRkQC/4xLsQw+9YfJVCvskMDhtz8vx0brNs= +- NC5IkXTMhXnQOOqXaDsBD+6G3iwnTSour8tZWyE+ZD8= +- kBIhJumAFJkndDw8Kz0KyCA+O639aYmRYiqJpn3B9/U= +- aftT9QHDmlyXTohdI66ZKiYujhqjkuK+o05xMZDPJXw= +- wXMj/AsbqwDdo3ZN7zLxQy0K8US/1ff4yH5xlpZDBVk= +- dw7bSsFXEd3MJMkzDFWfdvTCOiAcXxPPjuzuuB/pLmc= +- 4A1Sqwf0XB9J5crSpJJ2XaVJXC/iSzJ4DEokdRw7DU0= +- fFqNGiLWppm0oJU0SLRK/kUbj3GEnEzwnV1Q/lvYkoE= +- REosRdFEUyWsX0uqRvjInjzjrEcNa40oalmifHws3+s= +- vtGSxj0IMYjfWeYuQzDE3ThxdCyrZHkql6q706YVmm0= +- wJZkmSaq1AVUSMYSNZ9wfwrTTyCpuSPWOcl+ZXP0opc= +- gokpb6uTfvm50mi8fMEFYlIgWlIXgptkuQX2s5mg7Tw= +- Y+4k5RuvS6xFuMRbhNDdGg59dc/ZEu7gX3rSG/9O3NM= +- C7gE9wuCIahrDXY0wpilt4BfoSMwm51V3IaDm3OoAy8= +- J/EypIfpS6IehqjASmDewR7VDr+lV7VsYpuhX3sNhXI= +- mpAEA6wxO6J6G8gfCTJlK4Ag2sksI02Y+gsGvwBA7P0= +- x3Xnt1ft5jDNCqERO9ECZhqziCnKUqZCKreChi8mhkY= +- I7XtKaHoQJ9wZE5E+uuuea5ocxjv1xnZryn4SWsBaoE= +- KPARbvQr9xgySUbxPXh6HUEnSggzXVLugz1bV38Coyo= +- YIX+4pl6U/4V8ZXZB1kCOOwfcXrfasf9TX7RN/kYkqo= +- F3VjFevUe3EQNZ/HsWgXm/by3zZG/MiIvIqgXHizisE= +- zwuFT1oX/a13PUYkONTXMociuBfUCnTsuNmtefmKolE= +- IoWHf77EuxrWRmptNZbzo2lkbbA6AtT3SiYWpQ1Fegw= +- 7vE5TuO4DZzhjr/mGKBW5uApnBLNGcmceW1ILrUid8Y= +- 0tAup03iyfqx2ALblpwY1AmoZjqWl5d7scmMzdneQ3I= +- 2GW2W9s7o3kfyVSdLjFfPfu6ASjbMDFskTeV99eegyM= +- ejGAujPJEd9EaR2yXl4sg8XLCo0WZVKRNFuKzL3fhj0= +- 8CyWNXSBlyRDouttKGHIA/p3kPt9AiWy9Utr66lk9K0= +- 3/xQSqVTWbkmXL6+HkAy/mALZEda4/0pwH0jIjM00K8= +- hNiYd/DUBB77a/kaFvAkjy/Vc+avBcGflr7bn4gveII= +- EpRPIjM8BJAG4r2/ey6hL9xFacIfBE64xMz5tVij4fc= +- 5KCpDlrAfVQ1xvJcTPfMVlvst5e7W4PFFbxCfvMqR3A= +- kmD4iaA8PeWoBrgCr9zKMIUTMoqQxEmIlV2NwT3ZNQQ= +- hNnEuElQa22PgHWpAA5+CiVL5xBg6oifrTyIOVmI9Pw= +- pa1+bVIlrQDF8F3ba7OxWXqEPMkvbPGISQ/8uIoe9O8= +- qoAvZU4656qhtz+HJAVqBeJpGszqjdkAV5FggPhNfpM= +- dhnujOpJGH8wlhbjDs9UvgciWbQ3YPH1UKZElF1VcvI= +- fo7qXMYJgCcMnOt1zowIfUjXJhEP09F5Ifd07v2OGNg= +- m5esXnZ+U5PNDu0JqOUbbzd166OPeSWT6gFui6nplrA= +- 6hWWChHRwx0SAfBD2G67ORTmpAUT3KO+crhh6eRjJZ8= +- wKGu7bZaO6qbfMzSekdcrnh4TRvQIlcGy9huzYjOH40= +- CRNkAlrICUnbxEE/pGe8IDXwlKIv/claZOgbELFEtOg= +- iTWxDwVuzQk3BP3fb/KSi2RJUIUQCLbcH4Lg9mTr2pk= +- ZNcuXBwWmPWocsxkyioL3rj15uE8ITAiuBDWFoKmlZ4= +- gtJD6Ff3mxWNiwwKDmEOrUGqoLQfrvV3NRwOOHG9Gpg= +- VDOLVgAU4KZM50dnxgwNE2gxdaZLa0Uzr+N4nJPEVHA= +- "/TqqO2bvnuEBPGo2iENlOzIrglfEMUnZeeRLgqzQmBA=" +- XxBZ/wCMKUuFT0ToC/Ka93lHJef3mPkqMOgtgMTwz2I= +- 9d7IcLax+Ybw/PKhjXzVuqFggUCGfZw211N1Q5s7j6M= +- F/gHVGRNM6xoWwhCpAIimtu0P8kxL3vfNrokI3ofH/s= +- vO3PJPf0OpmE5w+rj/BVj6Nzp2hMexoE6/KkgdedufQ= +- r/ffvkYU4G8gp060X8/DuGGxmx24p7x7Chu5DcFXXI0= +- 0nEpi9KH+GazblpapyAaMGbLyd0gAAzgpZLO7k9zeLc= +- hZMmRZJcNFWxG299pMh/SgY+DxKOKm/5vFjm1lpkh1c= +- A2XKwUG2PHpXAlT2J9xs8e9hhV0smzidcohXiNtPDbM= +- fWNUbXnMVqG48A2nJ6Bg1OC0wGYIF4zMfYjO6eM0GxI= +- sFya1JzwrTuUKYluKXq1CFMtMzRrh+H5OW3J9UC+tLw= +- j8ApOWnaxXwlpYyC8vTEO/XNizf8twxNe/qAqPfLWyw= +- ATmsb6H7HskLwV/l6xNCHzJXm86EmraXqj7zt3gjrhc= +- Amxvm/lBA8jSb8NHsDTDOmY+fkp7RdS1PHqtBpmwSV4= +- gKxpemYXs3YXwFhT5YoNPRbm7aTyHsoEWGsu6ryFbOk= +- 1/TTzO56zT3X+tOsK+Kq6cRPTpt/uALXMTbUxTkgFAo= +- UjqhjsuJLFH72+KMV+EKkkGeCnPokx5Xi5i6/8z5nN0= +- dcIJcL71kX5G91NCp5PMSKJewYJcE3iYkZ8BY/lIdrY= +- XnN/iR2xF1RCo5/ec+UdeBpUVQbXHJVHem3rWYi9f5o= +- GGXk+b6WOfx219TajuJeqnQh9oN6zLZ1FpN+aUaep+Q= +- SBZsfBke6GxbAio+xyjPCabEiZg1cLrKVdHHaOsBuYw= +- uEbpy34y23SBg8IhbnN+voPa0O5PUECPNDlDjvSdaIU= +- 8nXJNpLw4g2loNN7TdC31vaclOu6YiFWVhYp/p/eBis= +- 9tvT113uTrUMVW4qMERsDoBsyhYaz+unCLXm/titYzo= +- 6rwcOFvgspXsnWbOW1NYSUYUFbS5XyxXhEfa17MKIlI= +- ieAVNqwgcnlAnU3h5SU+AfShdp5pbbDWBiypuPVnZ8g= +- i1VUUrFMjTVwYIlkoc5AZClzF0YhHUXdPJLCH7NcsDk= +- 1hMMf8d6ou+0rNQ/zLeHl5tbV16oIMC6DY11r0yt1As= +- Yn8fr0xcCxHFKKsWMjTIxP/Ri+ofrxXccNS74dzT+tg= +- s9F+u+Tyt10ntjCc+q4Uh7ZnMBpzlR59UjoDnNLf4RA= +- Om4p58jUz5lucKn5XgVeGCoawvp0iCHkiFnCVHr0qGs= +- d3Uk8M+ceSWW6ys8V4AdvTe2mZkQ1+aTkiqyXJGT+qk= +- MAyy16UnDd/M13n0bHvJg5229s9vCCAL6TQHYi0VmVQ= +- SloMU7P99MoCwTZocmqJzZhMSLvVAMwJrbJfvd39U3Y= +- zjpZhofI0uWqa+2tIOBZtKeMygra1+VjsHmY1c0ia4w= +- rbpsDsio2J77A95kJCegkwL6T3R0mJ7PM/1UWjDS/1s= +- ZVhP2wXU1wx5jDTHgQ42BSasqon8JGFtuZ3p4cP6cuY= +- jltXt7YgkA4T3YSq4jkN6g7qGZqn+NNPR7coJCduk/c= +- r27pkQZ1hpZAZSDKKsfZ6ZJaMC4X7H+94RQUlbUlb8k= +- 7AQuUs8+tn9DI2qsX5miHSwVf3MY8O8mETUiwWDoP4k= +- E6phJ+973KKWv+tukyRhlMRCQhn9/6u+XibAsPJe1+g= +- bXQT02HBxQCbfOMws8X/V3YVV716c4cMDdRkU9LbSsc= +- ud2iZNg8gvnHHxbhEocNguRWG4jJ31UwYNUcdMQHAVk= +- JAb0blBsFLWpNnm+rPmon2h4UhpERFWGZybXpOqfb+k= +- wco7fa2w+gWv+bUaPicrLmVItw6s2V5oTxG5Qkz6hrA= +- o2DvFt1jdv81k5V+CUPokBZ7MKhGR1Cc8BWvDMt4qKc= +- wZEi8puAtn/Ld2inXrjE5rlcR60+Mls4mwO8sPhnzC4= +- qWoZxE1t7Tj0MepWepk8IcicFoDp91kKo6Bz/pQ1xDg= +- yhn5SwrZp+ndrRWjewsGVsOVe/G6goZLp4eryn04XyQ= +- Eq1KPvM5ZGhdVWOOlX20VvDYmmRQYcasN1EfbAYNciU= +- vyy1imj2hNlaO3jvj2Ycmk5bCegsyPnMiMzpBSjK6yc= +- cLYUT65NTBY8biBfAuNH9VO4DgMEOyer5m5TkkfXR9E= +- fEpcJCtyoj2Zm7KAHGVEo2j0mjq4ae9XjhcQebRKmtg= +- FQ8OkdRmgrwRXPW+DP0jInRHP0LdCyuTqF8N6z0Ovp8= +- My0ep6/ymu42ZGw8cpKrXzxCw7mqHw6iWzEqXGtK2Ag= +- ll9puu+2AobGAmK0Dc9AcXoiJ+712wDJtxfV3iRFNRE= +- lSNPAntdpaCZKL3l/EMqih5SVVnKsIuDDovf90qduTo= +- qj0v5PbTAdvWuPstL937eu6/O+xT//9LOaCWevqIxgk= +- 8bPjYGgGx0OgeIYjqvxdHoLkNEhwoG8c0kVmI+/NHtA= +- Rx2UEBPUF8Jmgnlee2AridB0JSwFAPEQVjeVwle5qVs= +- bV1F1X688wQtoQRki6fN+/uBTxSO57rUhTNr4dV3OSw= +- VF8HApXSYl6K+IbWVtbx5hoJzMoDrm2ygwTqHEGAOU8= +- X1skrWVTFSXdzMrOBZja+qOG4wdJur8Sx7DNoq9FxYI= +- nh80Hf+RYbadavxUFA6jDkRnbtNgDcmPUH8GeP5k4yA= +- 2tCuKpCv6l5L20zJn6X+EmvS7eOx50uMaUp8eNK4b+Y= +- WRLVWQzu3WFyTuINN7UVQnkWyRUIG8ytKeDGhEdgFMQ= +- XOX9Wjq5Usj5/r1hcSaoHcSis18Hd0eNVD5LPrK/mMQ= +- AaDGa1Rf7vz/Eb00pesW2MO3nIDXe24k3j3veZcNbDE= +- QKE7dI7MJ7OL3iNaazSF/7V8F9KtHH9uAWitvOM6h3E= +- tcxe2f6P66pD5CmEA/F6Am+CVeHiFytDR6k7b6On+/8= +- y4stx3amY6WekwcN3NZFZ359TMTmCreKjQmw5xBTJkc= +- 1niManhyL2/7ViBCFHa30LIjFUbtjwOfChnMOFRu9yc= +- 8NE1GuAYMUwwUMKh1hJ4AdDCjnMGRttO732O/SlGGvk= +- TL46zrNaPDCIoBiE6N/TJ6uyA1lMxyq0p0++YdV/gKU= +- 0f4LPJBWodQdzbC3rtvF7T/285k1gKYhAyth3yZakKk= +- "/HZHvucg75QBOp/wPZPXvcIx6qBy9zEuJ1WP7PXd5Sw=" +- x4GuzhupxsENWAGffInwKhpynZBjfskb2xqNHYSjFF0= +- 3ADJA4UrsZ6yUK66BeU0ptIRYp130FUDOAa3g7rgmTc= +- NYDJJnUYgH0UgDq2gh+gZ7TboSEKQUiiQ7npODuuah4= +- UeTmUAM0z5SBmwGjYKnPk9myxcT/DQOqNVZUCGMaFyE= +- 8bILM2lMgg9dYezmj00WXLU0i9bp/F22QZyRdqtBxKo= +- qdTQef3V/i7GigwRj0DWlgt2oAMGGbZgjOt4V4lNNoA= +- Ec6BiaR9QMii9WpvcGRPWra7ciG0SW5WQnlw7pCcXxk= +- a2yw6gWgsNrO3iS26IfK2Gv9caPkqJfluFym/l5Cnnw= +- RcTEkr4e89uuKoiVcENG08Ny79E2C0ZHkAotAECGs+0= +- "/+wrBIKKlPCNKLHZO9lwLw4zlZMMw/NZPRGCvu3CNWE=" +- SrnzmOdnKNqFRiPvZS+icU56b63iMlvagpJDHpkyHFc= +- JHn4D2R8LJGJsD+ri2UjydAAfKOQfUSu95MQqKDbvqc= +- wENKfVAmHlccmD/h0JHyYUA2HNF2U6vrckKY1hoRgnY= +- U+XnxaiEiTc5xM9kUoVyrrhG+OTKGYYYgodHXGWQD6s= +- Nq5wSTa3BYiLQHI6x/8Rs8AYG4P4bsKg76kaFNYBCCw= +- 4yrDHoTpVMTvMPemeZlIzfCPMOhd5QXiNxVcmycmWqU= +- pJsdG1ipS+FmXLcrPpUxX0KmEfH/LKcX/iIVTT7M53o= +- VNwLVJIWb6CFIK/XHAMPOYvXLvkNu3O8LgVjY+wBtUA= +- G0Ahta1iX4/q4HzjnXfH1vARpzx1O7dLmfO5j6DI/F0= +- kVSyb0KUUdJD9x9C/JHtIVmwPS+hO0kWrCmesi6qL1o= +- hPUOiY956uAkPWbHECxdmZm2UL38RCsEv8TZw1RHCuw= +- ocel7KGEwDFqoXD6L5smN45iQBiVWet/T/Ch5Zljjgk= +- UJheFjmS8tBOTawpb2wxt9quQdZaOe7GE4cj0dBDCzA= +- lnUgriPo7hSIi65ygJAxuYOYrkpjZ3Phj/+RfXdnkzQ= +- W4hMb7IAF2Si0FR6feWUcDPvZ394E79rnAC2d7PotQ8= +- S481OInZoF0XlG4m0BTv6ZQHy6i9nQEC1KqxDOYikEM= +- SYRTBCXtOdhZQXiGYeC+Flfy8shL++kLZeTXHfl/6Ck= +- h2BmO7Jfp581wsFPuca8vkRKjJOEkc0k/mhKcFbJ28Q= +- s3DeFOlBQtShCKed9tDiZaC6P6LhD1fEs6iSt0yfhKo= +- 9RU9Rn2oxRAHJRS18cm+GhuKDcfC7pitinXIZRzxE1U= +- Px08QBeNWFjOouMWsGkqajzGJi3wIIGARpGvrDceSu0= +- OkVz7uFRZgJn68FnRPVZv4mvgcE18VqOK2a/VXZfWuo= +- xXRa8vR3zNV0OLTKVNVqzQD3qFlTC7g2N2Os8GnZr3g= +- xPZ0LJ4ZYl+CCkSh9SaTpMNIO6Icoi/A/gnnPH2kINU= +- PPLPGi7eQBSyHomQ3QzjDe/U5Kl68xbOfWJFPSI3XCA= +- Zy6Fe/K7REjER/hUiqHsotu/R4+tem+uY7sJ5uSKVrs= +- cVTG7rbNa3MwMXWf41qB943mBWhZ0vQ2PM7mP+/Hz/k= +- CUDQEt7eIpGpueL6v8wY7qa8c76JbnZXwnOa4JRrwDE= +- KyUL9aGMVlNg9F7Kie1P9RnJitWIbBY7bjxbSnWoQPk= +- xSW/ubZ0FV59TCedXAYfJiizEeA626U4s3rjDyU8kTs= +- 7Yub4ghC+T74tqsuF0/Qsp+Ol2XXZSmlBhLbce0eQvw= +- vmyQb3FjDS96M3DUh/mzgtg63YtIn1wlDHYStLaPKAM= +- fRKMTFNsKpqSvELYGWpGlN0wz3XjJHa+PtGjqSXGMeQ= +- MaLVKCaD7bOiLFZfGZqpb7n/sxB681qtku4c1WfPwl0= +- DkNlCxSOFVfe8h73rhbr2PfCHM+mduDZ9k4EJoGFWXA= +- FWcXjWdW0Dv2ljIRW39Av2Ib6SsNgTZU3hRYZRnrXto= +- z4w+P3GutQinRVc8fXCbuuCeAOdcau1beIiIVRenJnw= +- Gv2olzenRfFdQoB9VPZ8gDcn11zkQ7DzpllTGziuZg8= +- VgEeP2M5b2EuNU05InvdH7h7uqWKauKTytHX8Fwl5hc= +- 2FSo2X7CUeh7oB6yc46/HxQUiikLdj0c43F94la5MhY= +- mxvYGkNBYm8szfvqK/HqwTNcmwATF4JAQ61U1SBzC0E= +- 2sluqhWZcjS/qgplHbFozNhLyLX1nFuwJ6eLbBZS9IU= +- Pu8M0Ub2MmzOYwvB4+NVEgYLYvM9pZb+0V4EFhVw/CI= +- ybjgZ2UfjKDdelJ6MYMNOvR6sk7q1GDYetqfMiOEvlE= +- IuFfYTxYFKWMvtheKcyxQBYxIKIHjYH9zI4N2twYKXo= +- DJbLS+8fhZEKjBohwdWrjdmINVtd8cGai8FnjWZjytw= +- U9RTsMCLaziukVFdyI0l++zdHWAB8CJBlinfhE+LpDM= +- Hu/3oH8++SZ+ZWpumosz9HmE+MdJ/vqnrdSn1uHAjSo= +- YFR7tBIQwHhEAORq0Zqozn7gi+j2rIFT5HtPYCtzPGo= +- PJ+iHVXQgUjzGSAP5SUfcurYTHgAfk0IRt4SVD9KnWA= +- w3/aRy/+YjItY7px/kiWzplQnc1Ks8OaDbIce0cC/sY= +- qlk0P567NU+1zf8Q6uf6cloLHi72uOo2DZWHP6KN+Kk= +- SxeYEHkaGa87/q+9zwrKJ02ax9XwY7jgt1GJNgwM86M= +- U797WjUeleOZxI7z0m/SLAtieor7kVOV5hw4rNM5vlM= +- AI3VUMIV4HwrPMVd3Huo/rgSzKnDjjVSPvavgw3amdI= +- v6Eguf4uZoKRFEQm2gzVxw41zSue0u+9iwqjvIYWLps= +- RET1pPpC/42s4/pYX0iAKC+M0JElDwxGeUdYyts0sdE= +- RUGXuomS2T+T/UV077a7wS414KRBe7V6pRDNPpLDCls= +- qP7cxZ063p1LVQJa/VSCXsjaeYIlood4gIH0NJcwxQY= +- eWVlKB8GJfTka12K/UrwXrZ/tWt4bqbAatIg2wLr0Gc= +- zuKyWzZZ+dVlL3UONV3E7sa3aLcr7tW8hlbTMcDtCNY= +- 2fuS47vmW+HxqtSoLu9FZ/eh6+LNEQyASblpi+enDIg= +- 5vc/GhW5dXhigSOIIxcGzTrQ/DWHeycCdb7zT/hY+jY= +- eogur8jrwTPU4XWZJZJKMgqmfxSu5m755CqGT/OukI0= +- eVhH72osO+TI66gB58duyX4DlFVxwmobbLaTPuNtVxw= +- XrtJ5JmmYT6DLkM6JyLt0NKUfVb9tNaErw8GxjH99jM= +- ybqtDBfv11bKj/2+8YLWxna2WPG9VdtyfdcDw4EBZKY= +- Rd2tsmZti14Ys167gvdb15D9T+ewJe19XWfECatGb4k= +- icxNlVM+86iNZjxC9Tq2Hjf9N76Bm8RimQSak1vwtbE= +- YoYmBMVCoyltUGzxqVQZ8Wf1KAH+U0CK0+qK2wDyVDE= +- 3N8SUegRz53AKT28GJkUKlwi1ZNLb/aj+3tze5TTaY4= +- 5RTIP/bTJM/FR3fOB++jlpfVvmAH9LttIfKjeJrBpGE= +- CoYFD7N6Te82iF2pVX9bIqnhkXZ6gOekokFUEKRGK2g= +- RrR19NPV2Gs1PZlF/9bJNfI+mjSb5RVW8k95hQlodPs= +- hC3nsjnw1qsX3AjT/P5owJCprw61KFz7xUM7MwTF6+4= +- 6wNLQdJ/7sPO6u+BOoaMp+XpZaqCRWDofWvtAjy2aUo= +- m8bR1j71W5tYF1BjG9CrYAbq0MCTZHbLq6KNsrYXKi8= +- GCIjbTijmO5+67UeTq2Agl9qKiVoOAhANuxCPCSJAYo= +- BGOY9aAN07Gqo2Tb7TiYxibqm8EqI5oNXCFDX4PGVLE= +- "+GV7xl8f8BCOs3Ru7LGli76ZoxLfVy9KYRjxQrVcDLs=" +- 9OmUcwCoS0y7JBC4kA20pLEz7DX3PizH894dhN9f6C4= +- TNdLjkTXJvKZCQrGx3SDcop2KBzM2O6hnRS7fcIbX5k= +- pxp8cBH1OhurNkLsLOElk/BSMKzo3h4+dkX2nvrBRD0= +- m9mqDfAL4VwwAt76DQja0KtneyQWqqctu80t/zO90tA= +- fuFi8hPOI0IqlSnWuF9nKZkS3xiF/oAu6OYJAsZ7HzI= +- EGKM/ENPuH8x1nXTfgQCwtgkz+g5Ov96Ye5XqqfZCcM= +- Hgnl3Ko0YwSrrsQWSkFXCmeBsTDc7O03j+Lo37uQAp0= +- Nc4HbDxmwza/J311qHFPqwa+8ioWYZamA22sG/ggrJw= +- 32NcyeQsRY5LtWH0EBNj5t0doZJPFcQCjEGhGnZsEcs= +- yDS+xUHwaHPRQkgilgkXpZaFLtQqtb3wJ80CZeu/nek= +- L8WS0RsdlQYFLvq2RWfLmPPyfurv0RW8w1myBs5nNdk= +- 34UhxMyUNSSLPLQuFefN9CkTg3iAYY4CKlylR09ucEM= +- VJy8/3ott/z8Q5W2vGyyXvkRGOz7ZJCJZ1B1yOHnJD4= +- W6V6Mqk004CXtM00HtQYsxApOiKewaaZxR5pKlqas2I= +- Fr7f2mC8hsWpjaDp2NxX+7+9p2sX3kyaZlTapfJa72o= +- 4EV7Gz5OwgsrBk/0mOxrqncIGeMiJwYgdaMJlsYylLc= +- "+M6FWRwx+flJohDonhM3upAnRdo4NWgtEU9VunIJlck=" +- IVL2N3qphB9b6qIav9iGp7k47XoD1tOqilJ1OAcg3eE= +- C/fLj2udLqfC4BRAcNwMgzaW5s5Q3HoOaI48qCxl4uk= +- Mm+IKgLQGS6RvzIRAM/vaQgHedabVnQutOUzccznmxI= +- 5hySbV/rO41N5HciDXz59rKfAFfI3vaYOXXjGFDYJbE= +- 6pKmEnvzR2O4+4PJoMGswcBYhbBJB0p60votS9+jaF0= +- 6qXBXurwc9CHTw1LI8XBeqY0vaMbgH2j7a1BN7wVm+M= +- gbAnyPKkhmE8tMCa6T8PKpI/Dh/VQfA0/GWkAqdjxZE= +- 3CK4aOQxLw1yr/l3HOSbAVz1GqZCKvnxNfdFogqfWso= +- fo1E6hmlog9gVbEFmYoS3ZZrNrLs3K7wS+rmUMDKPYk= +- VDN72pNuJ+BaV8Nl2BilJBmY4U3f5o4DWwXGqWLrzgU= +- Q0KtkOjxfat+oxcCokD+NStgxvjOIRwciC/oooeCg/8= +- 8JkNyKD3D/tTdcWTY1mCb4ZGedMRnvBI3Rs1Ei1S3i8= +- 6IHam+jXpjS07QMT/pFbsPqV1LjJRuUNdIDjsuwtFmo= +- s42dFow67fFW9PJJuBra70tzh5BRBXP1e1Asygw18W8= +- dy8Wbz16yyDlnKXDTXBrAaLkXjYEQ29gw0lWL/K1Kqc= +- X/x9/Iduyu6VCB0hKQWQfnIGdwWUBAvrBYh6+gvvLHc= +- Nuz5Ezzzu3lj1T8w/zAMnzdse6Eu76NBEUVjUYvqjsU= +- kg2exLBUFV0Y724DAW8gi6fOWwAWxuQZHypIo21tW74= +- liiOz6jo5IahGE+UnLH5flF+v/TLXVJWGCduWZeCz80= +- 5WaUvuMITr4cL9lBg4+2XNLkUk4dkJ1U0nVgAE3yMZg= +- 42ON1S0wDBOT8174Ve0ArjXma0isyKj7/Gtd+6M1WTs= +- kLCLnQSRFLoJ+Jh7K4DIvoeE7l5LUrh673R/tCh2UuY= +- q9S1CeIS/9QPDMC8db0niA1jOpNK1k9MHWWNyTTBM3U= +- GtzYHw4//kpu2vWp2Rs0JzlV7paiUU1d6VBJZpUQXiE= +- OQb24e9x93J+LjE30vG3x+LBbNK9ivzjABnhy9k5jTI= +- j8Cqo6r+jwUXHCYrMVfFFnRTRsy3g+EQnwBqfTTSPAo= +- TRPh2+erP5D3z59JvrT6erxWJJZ9bbebnmHAIsBl0IM= +- XcKlx5NcHFDgopePtGX222GQTMK71jSz5vLXS5IhtBA= +- GnnR3R1o0UkdiMQLiAw2/QSIIE8aQZqH4NpkpXe0FhA= +- 3c1PL/KQ/Qu3MlNCSeaDIkMZ5YPAznsM7msZMULyDcI= +- 6Py86ugKOWFHNHwwUabM4IhORX6QkpaZ1N5XE/8ofSQ= +- AKuZ2XGuvu98eyHKFVUhTbtqcIwBRrMY8KiUqJtLqNw= +- f1dB+9k0gfQiql0Dc8ixwLzn1Ln6kAvECsj8YkAR6Y0= +- fTFrk95f9OaTZXCNh6uPm3mEAfdEQs8SpwnQtCIS4c0= +- IlxxG+n6PAMCKTVJ6j6YMTAo4OkjLjIWaFWacJX2PIg= +- S1Kaw3W0IXvhf+8aSm8WJBhcyZkJ6SJ4wHWeEqs9Yfo= +- c9Uxk1VWWQKn2zDGbJXJZD4JKne335lkP6RNW/pL9G0= +- 81fQJv0cY70xxJX6FLcsQIu/LTBdXgnL2AOXZzsEZXs= +- pHPZBKUU4Sh+cft4vYfYExGZBU9GNzCa1DkW9HS0owA= +- "/SVrNqz/D+AD5lo9UY8jlyNA/WhHlqS+783rRw17i7c=" +- Ta7+jOCRFtZvwW3Q8Ibi1F0aEMKmquic9PByRzqLxtU= +- oDHtonOsGIYdETJK+ICFlSdAW01HWprFibxMi/1ZiJM= +- cQm4Q1O7Mdk1OR2SlP5xFV2eYY4Sc7LxUx6RIxhhD2A= +- KK2bGZPUf99Kit58lWb1IwhPJ1AlRpDjIIcZdKwi3Yg= +- FQHdE0ceQn+uBu0A7fVJl8XdfZYo4uo9a1nDNURMYfE= +- aHTqMdvglhnXdkQyO6ZMN51MWPOxDmFcOVjmvhAh/QE= +- 4oeB38LDHjYlfvt+qPHTkj3tq+dKVmuQj6w4KSoM6wQ= +- A649aPzX5+jyn940FO4Yg8ksdkhz0rQ8LazPos1qFbE= +- KVWAQa2o5IAzaKblFXXdvJIXchaU4TZ+ro1713eMn7Q= +- "/7UdGNiCVf1VTjJAB+JQPRUIMM3/+YlpfULe75dLIiU=" +- bv9mbodluNFwdxCAJqry+lJDfpoWu3fpR08qLBRyGlk= +- OqEKzO9Nj18O2irJuSsWbZQ3jg+EbU11IBhwyMG9/hw= +- uCLxzS3PxoW0foPjmAKJ/V2OP/OoLe8k19HWi7Jy6zI= +- cUMUjeGVsDefN52EqIUfm4SOxRVRGJZSgff+qSNIKyw= +- e9nKenVhFeq9/yqyge6djCL0S1HZemgBFp1l2Q/xYyc= +- SzNdR1lLacnRYqKEdtHn5vYc8Caw8+Z9UPp64+U0qHY= +- crVa4yiFaiLHwcCm050JEaIdVlOr7ObwFgkHzYhnFKM= +- Sxp0HWeMMwTOwNlDysUc51+Hi0P4RPWgtcvHpNWhMjM= +- K72+34GcfqvNRAE4x4uqrz8MRUGKTbRvk+6xfxlB3Ag= +- c8Y9FsZo6cshES0W/RoGoG7tazcTDek5QAI46PJnA+A= +- UCSvKDVHbBubQ6hSaFxpZRtoC3XNQ7C4XlyDQDxyZis= +- k2oYXKqiZrucvpgengXLeM1zKwsygOuURBK7b4+PB68= +- FUIm89QIYOX4JqnCanpmzT+kTniUqCJfzxD4AGDPz2M= +- qgoTvPt4dRw1iLTdFhrrYIFSnThRU0iUhlMNIqaJ0RI= +- Dy0f3roA7J9virN+z5F2dH1g+1CaeKOcT6Xxg+ADmYQ= +- FhLvykx3bDfxC5E5Y4VnrOoWLgHRcairCHzij0keIxE= +- G1ulYEcxy7AwMltMLjSYzK5pzWKBuLti8RFlJHLDXbU= +- KN0uFezLnR4USVv3XqaaYSIHu9WrqdJrQseWbMS0z6Y= +- poNJVhOW7CZKNQhHAkpFIdAL6qM1hmDCcJqA8xx6zdA= +- smtwMKuzYinOgQPNbJ5Lvmihn/oCqPXAoW7ZnlMDFXk= +- CDTC1gclrFkCJXs7eN0WGtJtHAKQ2/HkfMFK3VuMgUI= +- vFTDQJBoXiuv9QGzPNUyKU039Sk036YHfjXs2gxL3OM= +- jgqR7/0jHjCtgNJn3WZI4ZkaBe5CPom8LmB3seCYKnA= +- 6pDV4OUM0SkBWwWvEMfriFBFMe61HZzvs0l88U2bGGg= +- colCSUy3DR16ALUHrHkBjTXkPy5uUvESgl4DdwxLYCI= +- yo8WiNxONAA1IHD4JAAqGMnzBuihRsMbR+KpL9qWd2w= +- W5VDi99JJnSI+VJbjMPJVug2hQMYlQyZP5hDVMSLGBM= +- y3SwEcrLPaVR+S2pUNG+8pRTNX7hrKe0RHShszeb8RI= +- DDzjEh8nl5rUu9m6aaWK8aSd9hpYwozOB6mpdSrxNcM= +- cYyK3KNxvEfgHtnpsEumjOLukUYY2HlBLltYTthQwXo= +- ofV4h3wYSuhuzB5x/tCHskGV/KcJNafMr6LPN8vrWjo= +- FVTG/BFqty8fZkjrq5+CNXO2IIn6gnIt3RZ2rbOeCCE= +- nm75ADWuKm2GFJ6LNnKMW52ISynOBDY20PLU2AED5bc= +- QlDA8aIAJ6ChsF1FVzJrLBPdcbnqxD+u7P1mQ4IgvsA= +- 6rEblPRwDBHaPiZ1ngWbJkpXqhu2JhzRFLC9CNWFFUg= +- 5oIbgukW2C/CTks+OzgiLAg0gwDfnQGOKRyP8qh3JBY= +- NPRMxpJAX8KWgN4T6KCnJnCpKB9RFEX+/esEv0wBjPA= +- DsrTbqaL5xz/1dqdWRKwc2mXAYCGGw0NhdQN4rksD1s= +- OqSwMy7Ah5cCHb4cc7hoY+QzegfemHGEVi7q5V8vcZw= +- ORcYgA4YwZXE9422ej3Qy0jGA60bkr+TQc+97eQemIg= +- H87cMTsQJC0d8wIdRx+CPa+aC0mh1DDFNENvVT/8X7s= +- vopfEcZ5E4WKohP8E9489PcNr4KAWLC3aycGT7jaSiI= +- "/BHW8o5Z08wzwLFM62RL8JAuvWPWEhjf/p59rHwlRUI=" +- MVAv9MaZTB1mdioGEDJb6PWiAsR3rIOWYLdAeCh4UWo= +- CJVzW77c8ySAAHn+VdD2yYJlZzgVOL9/nCc50PjNsH8= +- GG2qKX3YQOSTHrvtmlncdcm0f28h9Yc1K6+qNJ05BMU= +- 9nUdwr4wo60gFPD82wS48cKm6IwUA7IXd6DdoBg0XAY= +- u1Oz3xfAHX6C1YAKcnYn1VP4rczfURRIkRObfZxEneA= +- uwPgxK+ZGvEeiXb1rLTSBgLOakoTSwUXXPyrO4bEoGk= +- 17/23yOO1mLqNPCP5KQL/nqnpUhgdkHtY/CP6B1b++Y= +- iqML4LOGiui7FP7+B5NiCF73upGC/9kvr6u4A8mKRK8= +- HZluAz1hLZrytEtwBh7g6Gi/0Uwt2QsSnh7et5U+eYU= +- 5mH0yTXopagzSa+140dpXC6XLpZ7UO/NYY+TsLe0wks= +- M82JFjR9JXZ98OAFeM9c4o9Xj8PP0suMXYjfEhnWQ/o= +- 7Z10Og5E/Zf5OtR6y1Qv5JDOYJkrdjpKgl034/nKY6c= +- oKRO2M/DK35hvv65m7/3cGgIw/5NzfR1Cords//NQAg= +- DAri2cI57UsEfW62IcO/TMfteNo7bnxhh+ORGYh1MUY= +- bS/jLcQknvfnNZxth0//u/M16DLkmiaBI24baGr3h5Q= +- oHoz6xxZ3iB/zL9qS4+xFf29nVFatvys71vA6gDVd/0= +- B6X94HiZPxbrqJFvLwSo7ksMl6iiKAc+gND1qnhXZ+M= +- YOF9tCRBV1H3HdQ9E4GcX5XvU04AdzpvVthV/T1d3XU= +- F5saPp4xnP8MpmceB6YtrX0Iew8qie7wICYSw8tGuvk= +- yeUxMOPLolIYTUSibMOG+so/NgC7oIWPYOXuUNTAV9I= +- Gecvpl/E7qThoFfP2z7iaL0JmkABZPEdyBjlvSqbiVE= +- gjCeQRWm02/t6tGOGJ95LJ4kMCsNcsAtGcYXemS49h0= +- FUtvftGwcyfj1MoOarjmYte2s8K5ItaLaKJ08TzZlMo= +- g1PunVucIJSiCxNRRLtj3CGkXQi9eBZcEuKV9/358dI= +- LvpTJoe9NdSexG9OAQxiVCz5CsrhaildsSZs5yjsQco= +- VemKHlU9vAhLCiS8izbiGErXHwBsnu3KUpzlzFZHjtY= +- KIllofLIg8cb/4pLOht2zHfRHmX3CRDV/v9BGk5f4bM= +- "/aeZDTENIL/Lxw0oDe/f8rOnSTwQIOqz4nA0qC4R9PQ=" +- sxw1jSHz48GlXX2quQxPOuFszF2HfYL0gZww6tQPeQo= +- EpimO5DcEJffnI0tyv+tGxPNM873Ydree2hBjtR0KA4= +- zb7O0yMheP4+TDRLT8XuK1c6GepNi8R4nIB1f23Sx/g= +- kOAzpkCLaRgZAORvOLmgC08W95e2XFZsVMpwp2jvVW4= +- lfsNu3D4UFsd7fCqG8p1zdGSw5daBPMN6QwmoRVr7MU= +- F3ynD0Le8SOONtoylHMmPtP+rdFAlMB5oiML4Bk0NvU= +- UEVWRTxCjhcXIK0DCBIcnfGZO10eoiD7sOXiOHkp5Do= +- zC627GOLT4BIUXQ4I4QxCFXfTet0M7ghAZLFICk/hxY= +- rTzsaSA+63BCOp73ZgewRFGoZOhwXmkeH14doA7xcu8= +- "+PlsTAU64WVhzDVKpJQxp0q6m6v/WliL/4ZdnoZY8q8=" +- qtrxjGOh6XMLiBLfrQW3rY/R3pOGaG/CwfQsTRuvpL4= +- RKtsiL6DsySC8U8FwRX/Aeu5I/ts4bbCunY3Le6G6aw= +- RHgjbxVl/Sbbaw6DmSGWgGDWNGs5xkQRTpjw17125ew= +- CA3F7Qk85K2/MBHrPLSPaN1ITj4IsCC2q8qUMHAHd6g= +- XMe5YKwcjvwfqeQYRIbsil9Xi9qKCs2Z1qkUcjVXCnI= +- WUJroIrFOip/YldhbW1WSlb6SCKNZzEIZUD/f2WmocI= +- EMjGNNQyMpOYN5BVAOi0OqHXX4oyEOY/nXw/3KVTgoA= +- xFslzrv+iLHl+h/hY1x7ZDXAe7sqWTzurbgBCq0oQqQ= +- r765G1r0DHtlMScKftPJzewlVASV+W8zHZb5dOQKNNM= +- i4B6oFBaALPvSeJqKt6OMfzWxwDRo67ulxtJ1z2o6P8= +- SMqvtoWDk2r9DXinv9cEbSSS+tlPPEhZFfdLtgEoYg0= +- 8dLG7MIPFY5bsRgObcS+ci52qum9whT7YpqLomFMAYA= +- 9rFEmDA3due8Exz3LywtHpYy/hW6D6pIPFT8mhdHV7A= +- zJIAZJThZqOx5SVd6FteYcYlTKtNUaXRmCwtaRLf5CI= +- 651KlkvIpxRalZbNBfp5+IobkU+HrT66V8ghzbVJJA0= +- fuytuXqAbUCJddfqG+st7tbr+EH5YhkJUs9Yj9ESIYo= +- Y4TkDGyAO92unZNI85dHpQPP4u3MLrHL39h+Blz7W/w= +- nAVjbofyfk9Ot1sFTY+x/L57FyIqDlpNI4NOef5TSUM= +- szY+l5CEakl2uErSS730aSkrmax6iohkjGF7exbaBYw= +- cjmTYdpqd1T+yYbcpbfLrxyBCije1KuvVrIQbQbLeLA= +- 8So4g425f3dnxh05IvoHNlbkB/ANjcczfltdCwCSIdo= +- L8c8P6XME2Svv9rduxItWDaf3Fg+rlh3gx8Rt6bc2po= +- 6cEPdSqIc+ymLWbcMWch1dzMtV3QyIvZZxVaqJ6iDsw= +- Tcbwr7YhRrrOAw4wDmNECtkGIMOF6yPqhZoCOGfG09w= +- d1RMi5NOm/o0qUnkQ4zWPamSCG3xqN0+zrvWin+ERy8= +- Ur+3cP9MFT5hoJrzcr9ivBGjKs4WDAYHNjJBUPzLE9Y= +- GAn3zQx1rPNPVtjBl4K5nGtfzRQSijzHmso4pPlK8/8= +- G828z/HD064oeQXghQ5q+7VgECdvCppSrh/3h07zVyY= +- Z0dNx8A8GDZCfYaDgEydct8W4BuqZnjYJKldXW9/Hy0= +- 4MYdpjoAHPyQRtitUX47jXQPPnXSV3FIvEk8JbQuqmM= +- 708yiY0AL3u8X2YEuy3PIb1pUxYzbGGvzMZ42pkCo9g= +- lq4Ph1vZBi1eJjRzWQh3+C1lsWBXHg1DhcZdmj48CB8= +- B4Y+emohVLqGSnGwgYxe0y94mZQwJUsuJy1GH80NNOs= +- byK2TsB0SWYqGzOi0Jxn/+/ixvRUVGD6M8dI6WTFJik= +- QPSj4iaMKnpp5utXb06lMXYkwq0wIgOBpbG6jrN4o/U= +- cj41NPjifW7UZKK7tHGxgXuzeQj3OnAC8rgMsKPJXos= +- GVWP5u1aOIvtdRgh8LdU8rhqdqsyH21VaRZPtSPabTo= +- uFEjvFctlibMrvNbg0pglk/3nd+5lobYiKwFS7ybk7c= +- c+TFFFbCW6tUWN9xlpPo3Xymsj4hS6LvEUL38psz6ZU= +- Owz9ZBAFjDgC58AuctOL6Vee3RwoEF0BR24USMTSktE= +- xkBrBr99eg+CtjfBbAAQAsCFUrSOmgZrcus9pzM+TJE= +- EXI20LJNWF66WGOVfbZ3foQBkV0UQOYPq+dMPGd8w9s= +- jgffJhKNinhHTcUlvw8KFq+kk0Th7UIpaS4TsxPeRqg= +- mcnxGfshq8maOhTPieO0TH3jiS9fyeWMAX+A3gPReII= +- idi3xJ7tp88Vsl9DsnhhmlP4dqhCtswu1yDz0ylP3Hs= +- fQ/wbk+Nj2wdq4vzUD1nC3WatUM5uWYW575vNUiuqXQ= +- fWee9GLxK0PXH3dM9koWGPvnsHQznkVVR5/iXQJ5xiw= +- W0e7tJ5QgzKXIsskUcNLwIwYmkZqSuQHiTga8gFB2qQ= +- 7Xk7S8xqMVRGLPCc1XGJuczFLdJqcts6KHiuL/c1D3o= +- tKM3LAPoObm3QGQcdMTs6DrwCwiz5wloaxSSJTPtwUw= +- yMw4iZ2aXojWk0uXx4zLGiXZ0UlPbAc8xQOG3h3Wwhs= +- wjmynV3lHzvWWzlA2NB8NeImGqVMsMjg280Li2R4AxI= +- Gw+TwohsVyR0J13tqW1Qn5wcMckqiv4Sb3Es6sk98x4= +- WMJB+X1v1h/JH96KQASdug5AdKMGwZAEDPzSeLXkQSc= +- SiM9pnxu2d/ZFs1U8PHz5dZ7RCWmeftpomyKeF/s5AA= +- UFCUXN+ihkbRQOd2X4lWetUvjzWFw37/urWtV12o0BI= +- YriTCcwN06BiKIwu9/g3cDHua1651BxUu5qTlvQzrG0= +- a/ZyAMKJAncGcYRiUMMBilWUTDj6G7w2Pb4SphtQiWY= +- cNtyRB4ccGmMgSUXqpMTK1gwO/ZyqVoCGj4tV76P6oY= +- 56yCfCewrKoareT1DK0pfZluhix2V9+B9cNZWpDBhUc= +- Q81Q7t7SQFF/2n+DrCrjkzGthx+dB03rMJ46cXt8bMk= +- ZhI/ldPtU/8eV26DnE12FifqWeACP2fuSpS5L8jmhFs= +- A1tsikrurWiG4mJJtCilxV/xj8pqt+1QyHNoNBh0Krc= +- PDc/SVO4XN6liOBDbBNMgZ9XC3LB23QOs1z8lCuqK84= +- n0e6SwFxRK0D4Ua5uZVg/Z97jUql8MI//zWceX8QGaI= +- Hp5Ml8gzOSy8bspKHXw5A0kuQNcS6A78xXcZZ5hw59A= +- "/IqDwwe8vYjXuEMhNwTlT4+5HMj3BXslrNsG8V6oDoM=" +- myj5QxqbHRljMkQ/u4uh2pkZRcD7RGHlQ0Qi/+ubaps= +- axLuD8kSyVePIkfPnPYUt3wVeZ4Ao32MVgB3lmzd8nM= +- 9kufK3Us0sXsnh7kfeDaimqFQjoI0FsmY7VM0l+1opU= +- NbXzzG/bqnOkQXQSLgeLW3SuvG4eG1JrZK+v5VuwHyE= +- TTHnXmUJLSiBiY65DODxWGMqSYL2H5QLlHnABol57Zc= +- 5n9AQJrSCFPos8ZcffufuxRNm50AekOI/5frDwX1K9Q= +- SKG33JO611iLRgyEKWz+GayMP3LmiFDImo2IMLyDiTg= +- 6l5MTgholoa2+OChRzFA9UPkJZH7wEQOHh2P2eLSjts= +- vmfbC7CJA4AU3FspZS9BuyNJd1x5tNO2LNIh3jQc664= +- 1Codg+Fa1HlqEhAgAsf+01BXeoDv7u3hedi4aMQfxYw= +- SCWF/2ixtTbyXubHe22AoEfewgHLCnd34IIehCIz2o8= +- Ws5JgZmekSLlk+y2cxG+m06H6n+X2Aa3gqn4xqwKaAc= +- 5Nwi0QZ2vD4ddWh4Sjv+QDi3hKJmgoqbkDNCdMVtPc8= +- s9Uv1LNsklBnWuhCW7Y8JofFHOtgAyQCt+ACrF4vWqQ= +- bq5p3jRy5rjjlfee6dRnYj4jxVpzW9L30k7xx1ehpUw= +- tYlMCdH/8ZQez+c68DkoP5ODNK2waKpDfRk9CJbBKDA= +- PQfYpVSeoHr9b8U7O6YcrkfzotWa6/xe/gPYukJsv3w= +- RdGzE3YLmfhKeE8bDsfw/oXGqsctbm2Gjb5km6jDJjM= +- S8i4ywCMg/dVPma042pTu1vlKi/ze+e2EE5NkxVCXEg= +- ptgYlgxUy1VyN5kWC5vgtetVsfuD5hZBZLO3wKdGr6E= +- OH7MqLsqnGzfHuJ4HfrIwbagcV9LPHw6VqnPiq9v7kY= +- 6R+t8k94wIGXKiAVFG6betRja7WiCPVzO1TuRAdoIHg= +- yhKpJohbgUE7jBpIBB3VNv3k/Nh/m7YsA8GjVedCpOQ= +- GmfKvdUqbFQzFqDR1vSrkxI5vIdAZYmaBy4XWjfKQZ8= +- VpGnklzwwJQso/QuoW9OcDpKuzwijG2RPvDGEoxlhUU= +- 6JEzS1tAV5SOwoQJj6vP7x57MA/WnaZhf+NAfkfTACw= +- iIscDRwjSiy3DJCK0LUPc4IG+7X8ASqrDOGtLr3UjsM= +- V1F74rAvuC5tuBLt3q+cbwSxP7rHw0Lv83f13Q7anxw= +- Cx1E2fX9tCOR2xhMLdg0BaOmiBBVpiqKiedJrnxbT4o= +- "/gXZkXtSRTK2UfUI0TTThEbLeI3T1+qysTmOVPOwQhw=" +- vih2oaqNz7r8Pl8UWzpXJXU5OgFoY85Z5FaS0oRn5N0= +- B7OP3x3R3EsWuQzAq0Jg0MQWdtUXaxBRXRylM4jzxRI= +- 7qHx4HGSLNTrZFfEzosHasxCkdz4b1BRNnmXiaghrF0= +- 5XoMzrhUesT4kbIeEuPswUyPZfzmfV0oHEZWL4E0Se0= +- QJr+wt8aNIToGopx55SLSqIN7TWJn8BGgFgQytdGyo4= +- BwlyXcrujM7qbL/D7cwQG7ig2h1t3vlZq2/P2L2NKyI= +- qIyzcUN7LpiGbpYp7l8USE3Ygtma6lT8xUwDXK1weXo= +- fZIEAl0rMpgE8133kwvC/wM8yu9ElF/O7qWrMweyFgA= +- xSaaiD8an56tHKA84tl77PNqDeWj71OSDbIUSi6UFJU= +- lJCcXs1fC2TErgFxzWiIkJWF6H9gv4Hx1CEe1rW5a8s= +- wIe2O29iN5ZWsWFga+QvovPhmEh0vCW4WBHeUplN8ww= +- 7/MBcQ/hGLJinv1ob8TrunV0NSAuk3/DsdNknkpTtvo= +- Jl5RWcFp4K0/ayTPWCKneUKaQbSUZcPDLsjQeZN1ReE= +- TxsUeY9bkWTIKCXrcZs6nItbaBqMuriDr8oUjoOAHBA= +- KXqrxWu76IUce3sh6HtlrwMiACKFlspYjptbN1LUF2g= +- Dr/N2SFy9e3xsDw3waD5s5h8MzGZ+oTyooOFT8FsbS0= +- ZsySkCgmc5pFfhj59J0YEGlJ7RHlG2LaPcHOgkPGg1Q= +- 7+KUQ2wzHw1jiTCRcuXwPOabHLkQBiQyjP/356ePwRg= +- KxHcqLj/FaACfBtaX7l8LFTlFbfz2zskx9sq+damouM= +- ux5lJ6XJXOB3TwL+V6hcmu8Mv7IXT+Uad9VjQI20X9k= +- 1QxO6ixcKkTyX+J4rYdqQ3QTygqJEd4ckBmrATwwUkc= +- JOfoyhbaKOyNRsXSnEpC1JZo3qhDwlHxC/Y8yNWU3h4= +- a3Um54FXBoAsHhNaBWL4t9/kvmCLvbbaxbEK0Tw0RA0= +- H+gn4lXZ+k0P3xDLLTOsaLE1NJGh/1HKUIwBgI8a2Ic= +- O90AvF51EJNqKGewUOtH4tUFyKM2y5NnlbUwRGb7kQw= +- ngtrEjvVPlEnVqL2IQX88d9wfUft1JmLuJb4uUAw1Dc= +- KC0EmdB4n3dDMY0hCsNpLjPn4fF+ZBq7qoJe0rWUclw= +- Vp40SU7b+nzNI4liU2pJ4syv1lyf2aCA5loisuFA/rA= +- 92auT+C9v+6XknA/6vLB9osIIVxNLE912QtQYoyqOTQ= +- fY8xA2MQMiWCI9wXCvqsxYG0uwBOV0ir/1MMjz2tnVs= +- DNJiKaPBMmimt4zBtdhl3Jyic9nRHJhA0JGxlv0iwwY= +- 0t4afg6DQs6Tl27DnNGwec6oee4ZsHp5Jc0/WeMUcHs= +- w3sc2GVV6Gr774DM3T1b4qJcEHjdHVuC9uPkpBAi/Ig= +- 5hvjtQap4yzn32KjOpo/7nVCNx9o7yoFnDqHp/uaPKw= +- dL/8tP5nOhcKc6mrUgWuBgmMc8qyZQzmziu7nCNqDGw= +- ZmqQmV5EBVrX0rn/L+dt1BW7Dc5JJCko0Iy7v9Wd1l4= +- 3sX/ZKpa4O0p35D5vE0NxejIA1IhNnLg74iA1rqPv+w= +- dF/oJxttoQiShlNMd8urtzREL80slKhJTQcQ/uwXieA= +- k8WIZAAH72VaUQiQ2aRIXbg5PSX/vucn9heMVuQnRdw= +- PktIT9MOzPSJezHBSqGXWv9y1PWbjEwAZZZxKj9+xEw= +- VcauYfz2tMMhCAeMmZmu5CoOdsRaWTLdJimMcCdHowE= +- FSR//Zat64fWnODGLiHiTpMjwvgkdDNLNbBID+UUacQ= +- 28BUpiZygekoZRwEFSiq4iNo3Un86vN0tIXA+yGBAnc= +- itIbvRHFjI9J+hJkpfQeutnWdrbzCD2za4mBN6/dJXs= +- q44Y706+vt3AsxUs6ckAbhT8BSQuP8nOMiRupqlUMHQ= +- kanvNWMBDqGvkWCD+fsDoRfU0NKml/gjaNofc3Yp9xc= +- qkqeoD/KwVtfxjyUmsNOew/ReQZxasO45YxZnNxaUvA= +- 4mTH+XlzcTacgiMKZs5+4GwHlXuGknZSUUAaspQ+zP0= +- NptBxyvmkojtBvN60868Sq49WRYv8uUHtIZNNvE4bi8= +- xvj/mC1EQ8QMfCp8JpqfmTS5qN1FzaEVeQgdkemxmPM= +- SKOaMxFxeYyGbBa3REogt37y/q/7c96chfyZSM0Qois= +- eYCWRKgw75JCSmYiclK4e737Yzqdqxi6RQwbjTVmXyA= +- 6tboQVbHKLIsgmTWvyv1uYpTZrAhBG7qCb6p7Q3nIxA= +- jRfb0oUpLwalQPslKEmHVdD2QrcNOjg9EVjaIoEW5co= +- 68gERk1Iq4qU78st4mw/JTzl0kI1cJBsHA/TwxjDyYw= +- uLvW8D54CKDyfaTNZ7Fx9daGFcfmIDxMFtXDKGspdxw= +- 5GbISM2EHCtdP9OQ0GeDoDxAe038B4bZTO7E9YQPdBw= +- U4+emfKKx5cmewxJqTZ368QHbtnFNdDI7KU3U7BKt+M= +- rHvfspVSWdWudQs+YzRoWhO7UUotrwsB51tmw0NFIpI= +- 75K3eLr+dx6JJFuJ7LwIpEpOFmwGZZkRiB84PURz6U8= +- 9o4+zac5jVZUq6b4XX/BQs6O69Gip2UGRBf6RJ40CEA= +- Y2QCZISah8kDVhKdmeoWXjeqX6vB/qRpBt8afKUNtJI= +- 9u6U7LAU90+Ie53MUtrs9zqz4zMzIMrdmLy1nYlcUvU= +- nsXb74fbOoNQ77aE9p6gFdj4OTWEPP2bkmeQiMt5sT8= +- wjFw3YhY+LtccRrdeYGZB/Ya6QbOnN0upb+MWdhjckc= +- aTDdqNfMY4lpFqgQTc0XaRzyQ0XBbcwQjlKMo8EQXIE= +- nQxSrnAjFwz4Q32Gg67ukQOJI453krEsCPBPFcMFypo= +- jOHNQ8WlOtXaDzno8Q+mcJUsSDnFp/MNP3VOkOloBSc= +- UB1ay0rMBthdH+GXml02to8r7MBpdWFk92P8i9J10PA= +- z/mGwlDDBsqBfqeAA/IIOwVgDMGd8B0/oq8Vi/uEiuw= +- a1ZelRWhFBZdiJI0ZW96oV7EVOolyQsdThCb01Y8K6Q= +- Ofg90xNzIFGlyfC07tzsN1xUO5i7y4/4QEjFz8i4dZk= +- IvOrvO6k+BAbrmXkkebh1o4mQ2kWpfrg2O0i8oCKIWI= +- vnQXXLdjfx3+xkwWmZ2sLqxhF17CjpefO/v9HVWFURc= +- buqLBMaL+v6ZQH23cMInYzKC8JfQDnY9lZn2+LUm5HY= +- pGejE+jDP93hA+06LDfkrERUJ/zrJI5mtrzBF9nKaDw= +- ukZ2gvS4wKH090E3zzlZhWnhNpLuoxRrkQftYYiLtJk= +- PcQ9u84RVaNxRXz7NMWm4uEDaN2bke5zazz2PsTB3V0= +- bH3YC1vUH2IDmT5jjNM/xt802+Ko5C/grEdA9ikdrQo= +- THE7ZgQztmjVWwC4f1xkzirVrrlCB9P7/FFjT+7+kIg= +- dpI68jpx4zojCdJvTlSUueq0wPDEEy0Ax22KvHGwzy0= +- jTy7dUF+EzbrHS5PDRjfvy4fp76wZBefqc0HuogTgZM= +- PUhv5byI6bZsGFCbDYsXvcFuXY5Cakr7XjwWx8e+l74= +- G27ey4LbcbMLWwW+WpSZ1NsT9L3nzO5eT0K4HiXBhgI= +- Wy5MdmXgrQaxcN+NY5lSVTwqCuGT4KeMG8AopKLblIQ= +- BFur3NIRiWDoyLjg7PZbc0aG4bGPWHEMlkZ3n0npQq4= +- sM12t9eCk2LVgbc5wLKVq/UxgnkmCQeLsXqd2Rf/unw= +- rJKEZqyc9vyJ4I1Z3bbS9ajiUtelDkONE44w2CROGtc= +- 0R85YXJvA0f7gamHgT1vIdnvZQKyr+EdwTCJSyKNV3A= +- OEvjR0SpV4poD8EutA6FeDHswubZn4WhbHD+dVTLmNM= +- B/kXQAttsocXDcDi4e7qnlS+TYIlw2szpMC2l11QBHI= +- x5jO7668oCOetZnStQ8jhOiZylgiWI1Usyg9oy3MMl4= +- AClSVwmsiQ71L0fNOxZAs05wLPF25oCB/JhPx0Rm0TI= +- qEdnNbN6VBo4QCoucDfHni0hf+l4Dl40NHFW72Hv9Cs= +- '08tD55jidIPog07Y1bM6/wySkrBwZV8grb01pp4ffrw=' +- ggwFdya5WQl/mMiT1s85FO/tU6TCahfGIxxIAEOjbYw= +- RKIUtLTCil/mV3KlZ/ib9Mf3uC8pL4LuN02Sqcrn6zs= +- 3qcRGoQG4nz8i/X0nF1AiYQCsLWEsyhfBpFwo2+e7DE= +- A7L8RRSo5Sc6ETUu5+mxl6wxNh2TIADkDvQSFx3u0oY= +- j6Gf/g8kfXdLh1m2+10A1l+FVGBndZv82gBtjxyzatU= +- IUK4ElAxy/bIsvQn6HD/1mXsI5uenCmPE1gmNQ1DEy0= +- hi14iPjsPUhoCJkbz4Fc8261NVpR0fgdLzMivzZL0+g= +- N+gBkfaePBRZDSslZfiod3qoNq2yZZjI6HFUw/JPkQo= +- JUqiSKy0fdZUyj6lP0jCwm1kHSPX4uk6HsViWN92dMQ= +- so5OkXdzlxvM14YR/9rnd1hhQiLlQlhdqpI9UM1X7XU= +- "++iKYT85K5cUItzaHM4bm2vv03/vhgyjxf4GZWLW3To=" +- NUQFkO+FRpzD00O5bYgtxa76lJQgjwKI2aqXJ4Vlcc0= +- kwsMbB1fE9OI0g4FMdRh+bdRbhAsSD2St/fkksdaxaY= +- 24Sbvz5cgScSSq0OJNS2y1RUd8L7Qs0+4/60ZvoQ0BE= +- hgVJBRwhli3HUoxok85bd6TBI3NAxsMZ8fkDS/9IINU= +- a0EeOhAdLd/t9t/TDnZ499AR74smYz/UWElzYwchTbA= +- j7V6qhkcdSiHkjx4JRnwuuqFk/MFoiQwpzcwZHEVzjE= +- 0tjgVp4xxUcBVQASH52evgzuOw+14FytzjWLBt+8tcA= +- PfZUUyla1Nbt/tmaPcmptRSZo7JW1Q+L49eYAcfKFX0= +- zNFqE176uhhx3bOvLyBE1N2XxduUQPnnqwzmN141QXk= +- 7weBZFq101DOY7AapxfWKOwX50AgurKh+m8GmCQ82RI= +- uALzHXB000yJOq0bg8oXoQ8USDRZOTW/7K8Z6QUrkIk= +- drZPo2UoJa4TSNwhCdPBJ7J97NNL60zwEMMC5ME/t6o= +- pliB0o8np14mTd2o6HCQXxYlo3cfxqVVHaNcBEE7yM8= +- J6DWACf0ujN1sFwcpFdUpB4x7uaX0mkgX21/AMN/X+w= +- "+W2urN2FAYQ8JyKIV8B9gvM6dGO4qoLlc148SkkK3N0=" +- DNVgoRb5chojVxPtJcjZukQ+LH3NdmNXtyBq7FqHnlQ= +- ZTyKxdlri4fYMDJ+Hp5A6HCxoHNZ1vJZptB1PZKHGU8= +- zaGOMrD1PB25DlKHuSkOKTAQtxjZAdaWdx3Ez/6Vqt4= +- MO2Ih72EdRJ1cZsjYsHpK1v9DWXB/3XiSSl9XCxkQTM= +- 0P8nlOx6+HZKZUsxto0HrsD1GAU/7pYpkXpXgq2c+Dc= +- Ethl4NMOZqHlCaJjYEIa+FSolNJB02Yuziq/akYVaD4= +- 617q8qWc6SjgR/oFp3xuHE25K/8Tv3ysDNAgEZyMay8= +- 27efuLMsHUGVQ1ZmmJeML8s49xBdGsGwp9ZfC7ROyF0= +- P9hAbGCJZRFnEyR2Pgk5btjgp8AUYLCvT2WriQI1BlQ= +- yXFlfwx3jD7+tcP7oFqLt7VT3/g+4wi/fWjdt1BK/X0= +- XthOkQZhowKm86voiL5GdFVVhz+olyo2qy+SDf5ge4I= +- AnX8oIwhbHeyoSJ4e2SRpnlqspPkCX5dYhYsDtSRDwg= +- dso9qlkgSDrGRnKSz8fZU2m1RzGVhRjObZCIQyY0CBE= +- mkU9z2g1gBMkyhI+RJFTvOxRr0FfR2W/Wj9dZPm1WzQ= +- MzP2vSBki2FmrgoLSguQTW0UPiuO/0AleeQ/RamMSRE= +- L34upX89v0DwCj2SsUl3iDHNI/OZsdze3lxJVCG2mMA= +- WF0UrCO42sjNyir09WUfWp0oIz1tdoBhOBlxod95s6Y= +- PLW3DOusFfVn4X1O0GhiRLKP1wRvJcWpodxVFNqsQao= +- LgR/o1AfQ+qT2z7ODtKeYnnFaO/MUfBw4lDfSW1C0hQ= +- U0pKjq/NhImvMjVtWnol+Ixwz+BEhTmnxClkwbiXo1k= +- lbYfs0wTqYP+v0GGO4ZnmHypCzHF9VmH4gAIipb7cU4= +- 0IyehenlxKbwGp2W9QYn8reHmPBVhy6Zrip5YFVJdfY= +- 7c7OrZVxv7nx0RX52wHuks1TuzgE+S1qwzg7y4CIWng= +- KObpqcWS/GX1RebMBY3kxe1JZ2hlETRrljdD8pAwSkI= +- CJVCUF1lnOy7mIu1zP9bzPhb4t+owiE1kHmu4lMSmLs= +- 2yzBgvuzhWkbcvOliMenSmRNO8ljRPJxB2u7ED/f4rI= +- NhuQSydhSBjwCxRqOfaEGJnVVGg0X16MhCuM+ljzvdE= +- K4Zem99JRO0nB5N6NgV5beCdXjGoS+JjclPwWO5svAA= +- jj9oVeGPRNCTCRckzVkh7ffiFUbIYhnFDHrYXAu/rOM= +- uqnbM092T9IfkBjegnAUAKw8XbOJDRWTKlzTF4ZKjpo= +- 5keoMIcJlYtC77I3fqEo31fKf245fUgzGPB7Yx9Vx9A= +- iwQwg7qbrmO3kRl2BhH9Aet/tie4VMisRwCc+7dzEOY= +- sQmj9k+S7pFGXlQob9X3N2N7l2eF3JS6CzrT73JKjbU= +- r56Bi1ZwnuA7o+UfnYEo5xQcMDm20jk9x7tJgvNhHB0= +- R7Wl+GdnJXBviAXDMEvd57zwiMF7BC6kE/em8HdLP+o= +- 4Nm0E0Xa0FE48RxGyeMMzapn49G28NaBTmnNmBybOhA= +- LAkL2xLwUc/ZESHHPGlYQVhAlnOWqDVKy7Pm9izF+Ac= +- 7rTGuE0EftsfC7F2/PqE8z24reJWrI8kQ6YcoYcqDe0= +- ejDXgxDyNYlqNoWJIXb+Ptar4GyTzOkE6XbiUINldD0= +- J3R2ibr5kDyarmnYKpXo3PQlTGSMoT5Mn/Sa2x5Ua7Y= +- ZC7jUIEZT+3I6swfmgY+XMQOHNG4KGk8G73GVSva6z0= +- 1+StfaTmfXIxWyso0r3VBQjIxjmV5yv4NhBpgZEnkGM= +- e6hLV9so3NN1euE+4cWtd6GUrkVXXnJJG9zYEYur4PQ= +- nsuQgdms/1GN+mIDa2zRNA4r+XetmdJra08o9NGBjbc= +- DYfcSz+KIY5FNEtWszL83q8MFTbCmfA9f/bNpgVVxss= +- QuRL5Up7xXRP+OK2olrcTSIgnFDhFsBsY68P420P7Nc= +- 0yLiYjZWX8jGUOeCYrVF7yeOvrJqpLD1K/sCyqUyz7I= +- 6uQriYjboec2TD6jYAawHHTNW61LiL+zxfnjguMEzvg= +- qATd5cAAoSD8MTn7TE4z/WfknwQGbFt09Dle4QeF5+4= +- wNuQ8p9Q1lll+LtguH6Y3EXqc6FGaz7CN/zg+QTvyoU= +- DUtJblt1+K7W1FnOqmx1TG2HjbbHQ051pHMj2r538Bo= +- G4cpA3Wg8Y0UxXrvWhfRSBpN+Ar2plUM1r33M1QrHaw= +- 7qWf0b3GMUUh+gg1dqfqoFdbxml2ymSk54mEG4MzqoE= +- PL4/41MQer0sd4WIExIGQDPPSxKu5w4Ahny1PCyAAoo= +- Sp29OLIGJZtrQX/gf/ieBZyKVM+n9B9szaPCIzNPqTY= +- hFrY+lp3yBMvfbaxNzj1NyXoBPPmUr5a7l8r9SlT3tw= +- YMXlg95j1/oLWhpHErtdFEomS0sXz82RJ95LeN4K5fs= +- VBiBQiOIOjIm9Vj4rMVdRJfMxChvnwTK4+Ahod3gSm8= +- "/mfF8WCrS+YlMbFOJfoxm2OhrJsKdGqo34bSzd7bCzU=" +- dGJDFneXrwX1h78lwtyEdPYhlq2NOY6VhW5ihLhYa7o= +- JOJb7fr/yJTRRaWY+VIXW7a4hTxOI/NHuKrM5/HE0RA= +- 0uKdsNQlHJgTlwGE5xbN56asCj4BxBUnskEeQ9RgG3I= +- clVE3pb6fjjnweORHXl3D23heMUtS4dwKtgg9f5+E1w= +- 0hVoXFZbf+QGuIbE172dUfxbUtstnA5xU4JEk6f1wGI= +- t/IkGarPDq6VY4wp90ENg+0aITrgrzN6lT9+5OaIz1w= +- RWHgiNud7T1LKfsNe0LjMt0w+OZ1XtgbHJDUa/8kKmQ= +- uv/fN6pdOWHHe6YxXc2DaCOiDq2Xhp1CMngN+OQ2nxM= +- uRapChc8SLHVAax2NVK7mM0YxlwoVJVeRinCD0y3ZXk= +- FD50xuGOP6c0F/dztFomC0DhywpNHOnHrykyz0GK7jU= +- 68mMHvzisYJVF406GbMmXTEIeKkwp41L02t8xrxKcxI= +- ShiYcW72d5b8yAx0JsT4dtOY3ifaXHOjrM9CXkKn9BI= +- cxqACbfjrufECgpgDtPTl33ChiC760lPM8J6WTeTklo= +- s3c0tDtXQgILvFPjOj+ceKYoTLKMiB2YghLJQkhBplY= +- LjT9gr05FWHiLclqOqIuViBiuEe/ivu1sI3sIQ7TMYY= +- bzkt7Y4STfKEjPfYECtyzygSxS62nf+2G3cMghoGAjQ= +- s+O2TjUHmbmAq0IN6WaNgfoN16nXo1Mri9TRin4quqs= +- tWtbUZvFHV4lO1hK07s1N4ZsJ79JMni3eAvGqMA740U= +- 9q5lTkEtB5ShXPgkzwfseGCas8Wx4isk2HMUJ3zxQjQ= +- Pon6G1RKeEUvQ8nJABE8UE+sHKCADph8sNjyYSgo4oA= +- pPUFE3PZSSacmUCDVDLt9cHcnOYwEXzHnuWVa4wKK+k= +- IPNJBscDeuUwpoJ43QIkAuyYfgVeC4s/HV0I0RIxlMc= +- 5FalgUsQ0pH48yKpVGSlK7pFSgypvIrla0TYJoCd4BA= +- JA3V48kJdr2yBJKcWo3eEKXaF7pUTNSFqKDXnP8czY8= +- SZcGJ++K7ocMdzV9yszNPj7wZ/DtJe6YJl1xdri91bs= +- JDfJ6662sTIB+DtH/WiFsvPtdgk+fePDbLKFtsBzeao= +- QAlNCm+ovkD/2SenGyj7jGt2B5lrofiyqjgWt2Ig5Ug= +- HyrE8xAPCIuI2/OS7HScUDb7Pj/60HEfE9qY5FReMSg= +- ti07R5UH3MGh6lDOzu4rX0Igd/xa5/p/BGPHjMsrqcc= +- 3Oehf5v/Sqfv6/MsOzoIIDO+fl8QMUM/EvR+ElKvwwM= +- QF5gO0aYToWjBwHrx6bXV7+YjGR53ED7Q0QsUmnooqk= +- MC//+FIzF2eOK0WfYqaoJaW/QSPMyPISd+SGkFBBmcE= +- vduQsOe3Exw+MVkUwTl26j261S0a5iaffDXgns3DX4U= +- LMVv3iup0lsHOOuqYli/mYTp0rP0fG9FepqlxiS4QL4= +- R2Z+essAyorOyP2Mf7+qT0IiPqJwXiGi2KFE4VFfXnM= +- S2S484gT4DM9u1Yg5mft+iVlMzrgetH107k1d5alDR0= +- H8Svc0YljyyXx59pi9hqfZZ7+Kq0kenmK+N+RmPcJdE= +- FB9hxMgRDrw2EW1obyXz8jcZiGHDfVta1kZehN8KlZ4= +- 7T/TjdIGRY0L6U6pTd4OZKQovdSUqzLspLm+ZVOvIIg= +- 2EZfM1RW1dgXEiC1J7wCkGvmGpxaFzRKBpDwiuG5LpA= +- 7inrSoclZ4J4rEOc96v9KoSc3HN4prYxYBe4HFHXIOc= +- B6YbOVnrCxkvx4C8urL22TUD/CQii6yPmGHiM+BM1t8= +- Tq/ccwUquznEplT2gHDeJUcmz+ltX234xZDIMco8CZ0= +- 9BVwj9+9yj0CbZUueCq2P4eSdw6mTitRtmqqZywei4k= +- 6GXAnHVtqtL8yUJPtdOBi1Z+Ho6YfIDBD3sQD+26+1I= +- yQ4JfkbbGTHC+zwPX7Xx3y8qoB4/bZQ1D2YvbbF8S8s= +- PrykA+bQSApKNKnm9EErVHOD03qnDZyf+CWJjYs027w= +- UOaWginCXkYKdWGhBYDVm4CyPtBAWU3LLVD2nUlsmhM= +- ykFv9LteFao6jpox3mxHKM7xbE8Ya3iREi/wtMM7oOA= +- ANQS7Y3MLVRPFt9nT2xIVshd0xOCyBdrcgTeL0x1bwc= +- lY7Vbju4aumPu+hfcxSYqMnF/r4Wk84RlEgc+WVk9mw= +- V1rSXAZ/kJVREKH9KjT5Nbkg1kzWfkgsx+592Pj6CgQ= +- gos7+2ekbEFzzGQadw42+txAkqdTEL5q6CnwmJMSLbk= +- yQRvejetDqfO5zNVmE+lQomC+LN8j3vOyR96xxp80QQ= +- tqA6BLh43sqcGRPb2WBDL0GHgMaQcuNOlJxKlR+6k7U= +- DD+TtMAAG5S56pRRDPNqVvUysloAtRNITTOXFV/4ZAU= +- kFYu6WP8Hzmns5oZvB436XqxShWfFENXILHkPosE+m4= +- Quhz82lNVM3Jkre7u/NVijk3JkOcxQy6mKHTbjbwFMs= +- qD8GqUzaeZkC+Dt7pYWg08povs8x7PIbAPVnHjKmjfM= +- n8yjWvNhNxBL8b2AYQydzm/w9j0+/zjEquPCWnzpxyY= +- ME+ndAkB8eRYbmEeWeTRAK/zzQch7NGtyWbyacjFiRU= +- rI+NiAPNZV2HpSL/eE1W9KUi0/aF9XatXiAwd2wymQw= +- 8cQl3812u3XeK6gyyAvR8hY8xzXGgLy7Vx5ISQnq01w= +- kV8g8gMSwo5jFu9FxDPy0ejP+eXE1fUiM2hC/xE8oYw= +- 4op+83sQbCTLsK51Du3wELGtXwR+fIPb/gsUVOQEsy8= +- ShBqfkiizxYnQ58+NVx1AnDoPxTgUPYGsPEratOdhAU= +- aXwx1cHEKecMPluneEGcUTFJnahSRN+v0AQK7mw59pg= +- OL4qncFOHc+api4xIHKcv7s+4Hjrh7zCv2vnt+dO+64= +- SC9YogAJh2hXIfB9u788aeaB4oXAk8nvw9camxgZPm8= +- UpbB+h25wagFoq+/4nQOzlYY2u8zBmJIjBVW7AI8Xtg= +- zwpahWQL9ueBQH4KBIDdoeJZjxmDOPIM2YOQSU/i990= +- ERjx7g3bBPAkHAyGM19io6OjsJXTOXcTEuAjE5nwvaU= +- aVY0dZDCqCDDYwLRTqpjczTjxAvFAv0nACKZB08nNVQ= +- 9hy0IoHs7QyHsj1abLpW9InbKqIMJ4zvH3LuaHc7S+M= +- D5p5rNYg7KSRST6fA+ITfTqLoWFaOVMBDRz7h26yRx4= +- ChHvPFHmJpzhOpp6qfTuvj/pnhx47JgZ23/X7LjaI48= +- 93C+Q6xjzR0lruud7EjTUHs03QRaD7IKGFMVvVsGWbM= +- ueo2xrHEvUhaKTZh8vlhstP7UDnpTg9hbuU2ULjQoa4= +- tcC31kBpuQqDSlErjFTqSk8+z/j6aqrrXKj3HogdBYw= +- 8W+sjYj7UPSEsVWctfCH5VAcT5wczJ9x4SNUexjntTY= +- "+hA4BPoel3elS2Bp7lcNm39VK99UI5CsAOTJpSeZT+E=" +- UafAlY6HZVk0Fyy584FU+/PYaExLm8v2RGwrzrbVZus= +- jIW2Y55i4QuDMKi4gwBLQ8EZBT19YrUSqYx36waWJ6c= +- Tlw1KEmVcOS3+KU4GTJ5oj70pXahmTgZxNDL+a6r7do= +- dYbe6cP/Yg7fOJvtxj7YpyMXledKThjzlae+I1j6Z6w= +- iRlaMaE2JHnHZgSOvDTxjU/An/H0fMJDAbdsR91p4qs= +- TvlUrYYjEe3eecITTWYng8XG/DAIB1iX1DSN6cZRz6k= +- yi8gaeoMbkZYIi4G+N1jllnLteZ8u7pnNLwzSjeZvGg= +- nH9yzRDZQ2xoFp5l33u5ePyivR+K0g7fspJ29xJBg9w= +- XtduYxGLryTtWN5RnqYhxINj9hYfrAYSxjj6SihHUBM= +- 0T/FRyGMRcgcpuEG4UwjeK575BzgMkAC8kznVS7xl0c= +- HOrrxlfsrXlxqRaGlkyVweYdjtSphHlS9KUHq+9RzLk= +- rMNvGibjk7zkiGNdhn0hKMRMzBGDzIDwCZU3OiIiqFA= +- OTgymKbEPfxOMKhft3AYbaZLMclo4s3pjJ1IlZddlKU= +- 9HXrarHLNfzJlKVXSFsZAk77EqbDeAK3z+Z0fzJVdmQ= +- xCQlx7Y8DZKpSZkSMIWXQQkCH4e1JzXHY+bJ4khCBNI= +- xUBAtLBAE6MOeKsmCZKfZpaeGvzC4dPgLRcWe5xFcYw= +- dFCRQgpaJfJAEfKVD/GQ2HV4Kb7ELmZySyxR+0Tq32M= +- 3/kDiDw/F7hKwadYj5mmGOyMtElXeo82gYo66ny8jHc= +- S+XJi3utaTcYztkTGEmwnXVAuaGE2/dg35z7vgZ0Exw= +- c42PQ7EoslxcNPCdwmOPSynAjDJJdV1peaZXuZtAoPg= +- 6RqrEZliWauL0y0Kr7yD5uzyU4YI2c/55X3QhAdzz3k= +- u6YsJ6vkKEZSYHOwUPN7x+jyfLeLbNOjUzf98sY1Fgg= +- hYnGOwlDpiv9qbNdzMcaMPVnc4b298ZEwzB0Zc4s+lU= +- MvkKD+b2Gv3y11t0jMBqkL2HkY+bAt6pCpbmz9gjUSY= +- IFSDGO9BJswFHgrtF0LEhJHMdukfK0b4Br7UfSwRFjk= +- DPfHbhZO4GPVmrPJLr87p/rxX23qbamCYLUyacDaXzs= +- IPNcuCyUdwSeBi8zf6uIRbxby3JuWfj6R6joRqnaXFA= +- 7D0AISJQ+5ldCMWgaS/rw/7bJDKB6z3v5F+j+/mSwj8= +- i1G5oV0Ggehz0GTLqHbcsvd5lGfvLhNYsYpf1JI4hW8= +- PUgQsUsiBu6u/vUQRLAfeEJSvvac6mNIrt7F2YsLaH0= +- ZWxPW73Fro6nxq3reBg9PATzm8VLKFRpow3NPMMoqe4= +- 03dNDRk0p72cAKJG6rbBcfxdHjWoBKEMf9u9xbwThpg= +- M5IwaDQJ8jyKKzlO7TA8y8XN4bF28pdwkA/DdgjCQ7I= +- 7ovKuzYIFABhVNP5zYuEwQxC/WOa8L2Jl9EY+ZU4EFQ= +- 7xMlCSU7wMlnP5IqWp5L/LMM7UkzGL3npV6kLUkAn5E= +- VpZiW6xAnWRAnB/IInWovuxwI/El0WphWxVAWqeZqzw= +- ax5bbzYVYCwj4jJGR5W+j+nMmQmV3tLoK5N3ODdEEUE= +- DIMVFRxYDjFwfCaLfQjL40YQRSWBwXSnKP6Wp7X2yzk= +- eLcXPPPAIOskCOC3MnuEy/n4IyUlKlWKxFqTHiWJ0fc= +- OaEQuxh+BghDcl37AAdcyWi81iGFhJsOGJ1TA6QLVtw= +- kuY0jxTrEE2VMptZktr2bioBZ6ER01ArJf71obUo6F8= +- ol53ObkDntzsY88ARALn6cBpLNQgGBF27V8m9IVTuHE= +- onp9dJ5Te9O0IHl0V0d9nkc8LsXft4eu3kYE4CUYPu4= +- mO+HZ3HeySJ4xzjDE0RwmgWeQSfBGfeMrF41OHTnw7w= +- AuU3eiEQdQTunl4lk6l5StgbIBtY4Qzsx8V1Ev1EgUc= +- RFWszyKrhPfJYlYwKjkayjXqHW2VlBxWewg9l7a9wso= +- t8A+NLiehBrEfJhGItaxG10brS6EkdrpFzBIKA5MK4Q= +- qbnrnLjw27bgyYsJNNLW27Fk2E/aLTJwJikPJAL6ErA= +- RZIJLhBhx+qFryrtGUYhzBeidiuuM6eb+M4z/QFouAE= +- 73E6Ixn+zKbXsp+R2TA3RNIQov5LM7Hr0kCvpgUx6+A= +- zy6Xo43sQECQEpOY8QkpfdxRi0fmghVTKdRUrn4F7Gs= +- uuroYJmcsHCsW5qmUxJ6GCVw/Hbh7prZzKUvbHBUtd8= +- G4XTrrC0xmBgZ2P3MbSQJc2EPnzE0iNJ6suokXRf2YM= +- qEiof+xFjx9hoxf/H6trJGT2dw3MrtAhes8iQFdUrcw= +- 37LFcXArlXmP+fh/b1Q2+eqpoLaQeuIs71+APJCrcfY= +- MC0mJzzr7UyVAHfqk/z6GloIhwnbSRBF2ZS5BnsDnMc= +- "+CGpCvHFfSccR1Az72LrZcL4gGrCQdtlamXvcD4GJZs=" +- HCdkijfLrwPEnV3VTjV03kCczRLGPwAgylAeJwheAMM= +- ZlNbe1TkYe+1JUd32MfNs4wpU0jEgj2c7R+I+ZfFklA= +- 1AWI6ClS+8Bcje27Qdk8O5DH/Exyb2jPmjNITVJMwgw= +- TdaMLI9S2EFsMeZJNDqgmInhM9lKqabl3sM3cGUYlh0= +- vLwAw+gfaklIBhfI35VzAJnXkYGT0haKKZOQrkHxRi8= +- pAGAnyl6Z4Lt2LnI6pEc1FAikjecBsHw1+hsvyTTEQk= +- YVjjia16NlSHQvlhDHIcn1dYD3n3KXBW2b38yOFXFNI= +- IEZW0OdRkYnrqhvE5Y8U+7ujJQ1WSpEl33oodYe+5lA= +- utsC5czRvmEjsDaO0gdGw6YzKovyvc9stfZbK80q7hQ= +- xNYlX+N3ZMir4MQ/qfK5oZYTi46HPs7cAPNCT5p3VYw= +- WL5qrEW/ncDiAcweSVkQK1uRAtvFcuiE4M6Bt05fPS4= +- 9jisiIbvojNg0TMHPZKsZTTuzT9w6LpAFEHzTEdxWfM= +- R7LSC+fM/oPizJPodtm+IubWA52Joi86euPdu3+F/8I= +- Kdqgm1owAi9HWK8dVk5eZs7CxcchU2g6CozQCGpamDE= +- qI2eeP1zvj06eHEPa/rmW/aQBTGo1/lvIzLGkqvdQn0= +- R3WgD63XlUCvxe+XiBTJK7yh2Wf18oXrtZEjennPnZo= +- u/XaYM2cIpRYf/8+m1K9avBw6yMoZr9jE2QjMP4zp6g= +- Gi9v9Esq1FNIpVszj3pQsIkyuFZ7+MiqsqCrmP9Ww/s= +- REl6tsnpSz7llvtTLkmiWRHurwtaXOh2Xl/+06Td8DA= +- Wi93pCHDvdpu7Rb7lVZ7DpUH4DU0RaxKEQLDERFElT0= +- d4sJ5JkJ2VQrj2jP3gMCfds4IAG/yTsySt4GhOdFSc4= +- "/UXrzOZ6CUG2F/TMbc3r1S1ZQB9YdAftMBFgSHZaroM=" +- fU3ZQre3IImmgb1QvyRXobgebqW5vPFs/5fWOfcLB+0= +- Ppz4CYMgH2jd3322tBrZ0yAlnen7y+VZ9WcajMeYauQ= +- XkyYFNzI6NyqsY6m7dtwoyWuPhHR+x5jnVVwPB33Yrw= +- "+qkGGMR6oDHGLzc/yeyZHp3D9pkNCZNTzxvoxJPpbLo=" +- HrJEwshi0dB0urEqp1kFynWnXnhVaeqsdwFaWCPqLFk= +- W6oIJKjcSJxgfUlcgdPfu2ZfyKySNVkprAwpox33+7E= +- 9t44t62ncK3580hQpTo2t2jvTVPdLd7/jA4wyRsEC8Q= +- x974PZtOJfXAqkSnMv+ph4berdgsS+wj+hkdHuchWaE= +- QI1OqmRE5eaXXJmCMnWvBHXjDil3YaWZGZrCRsYZN0o= +- dZ5JjaP4nP+lu2fLB4uTsLUo+gln6y0g/zzGIEOEV+k= +- GNvawA+CSiw8W3f8ZNKKdBMzQpIEK9Ou7gCjgp/+H10= +- K4llJ/nqyB+lvOF947vR5d8gJuhqKPC3TvIhyCDbQAI= +- BaNyAavcYLqKr1ajmZeKUicSxUWI48fXo6JfSBmcx9Y= +- G+Wh7kRqHPpp1nGOPx0ZJ+5+vta3GjYKchIv6IKsYDQ= +- zt4zOw/yxTF8C3Aw229G/9JNLS8vuW9Jypdpz0s+Fa0= +- DMEptITpDcZ+cyyRCpeG2dc2ZqNTWe66aZCCQxmOhGc= +- oenOubBWpOPodCHUa5cec9jDx1G9DOruNIltXGMaC9Y= +- B8fvQKnnkRTK9YUi2MEkKFiUx71dDbwa1P8yt+omnw4= +- 3Pyh0dqUofXPnjXB1OC9XYOviNNDOVlDwOSL80FF6Fo= +- BZ0fZJYjK+/NP/1Wp0GXupwhoWW6d4za1WLBQqwXhZA= +- lQey2qBBnX5XsuSk3H7rWig3HFB+1qD/YNPJTaQh/1A= +- L1BG0hmwMUPdzKDr5UdezDrAQiTbFRzCFcTzueq2hZg= +- 1RvOI9UhZKtT03eTkPi50zmNII5MbSoup5KvPsrdtzo= +- wzf30hPJwNZwgG4/hFoXaoCKUK67TTdIjuPsrLaZpZY= +- ePYyhuFVab7bX8nxYPdsJGgVyyH7gsgnK0afsPbzMxg= +- 8ErU0o4ZohHNHys52Bjsekg2JFlZMhdn3vtFrNo2GBE= +- unpuIguOR0bO4a4LrEcmpIisWgBe9HQ/jGEdAKxzd1M= +- aUOMPejen6mUt+WkOCLQK77LNLhL3iWUElK4kMAzQVY= +- G9j8dRIgpIa8DOXzfeUTKEKT/2hcuPT5Nryjddo+ktI= +- 7W4QS5CyHE3wgCfnpTU1T29+zrOCIEfJdKayGJJmCG8= +- U5u0Pv5z3AGA+eE5WZAEYnBZG17fIakxVCd+hPjDPCY= +- iaq43q+eYUv7PAwusiJ/C75iykmXMmE2seP//6TTSFY= +- wo0d+kPkva6OyMyc9byBtJqYuvgU3Kx2P0kRrMrzFbA= +- 6obIrd1Phj/e/UpPxVPcGpLfUAjENSBS6a7rsmxBA8o= +- 8GiguxtEmQ6rZCN0h9IUbqkAfFrPkfjx/tQxMwE8xas= +- FEyaB5/FhkHgQPBpZIR1eKLSpzprsZbK8K7twRZIfqA= +- FQ6yMF0iQJ9x9SD9PwdZHOdNDHp+J5+UpteL3nEPE2c= +- Js7VfsSqaSosVqtZ19NJ05og7nzF7KGM48VnxVVK/1M= +- 8mA/oUy8hXn7j/2pxurHOTzIju2wpMu8qLDMVfOd72Y= +- RjW40fDykyngdiRrks7SFvkPw70DOwwOrw910fcDhgc= +- oOWNj7fY3UQzCxpVuhkAQ+kxYXVG1sBsS+9MLnczFkI= +- JwLkxKPe7+exqqREwgx9P57x0q7Ou8bUgFKNngmPdyI= +- s1scSQRk5q3Xm4n6hi9Nae3v0H96VLsuaapG9tIZa2s= +- NDaaGOVFp0e6tab0osoXsDMDwH6jeGfjyLMopnrISZg= +- V82aO75QP5skbnmKENhxDAhZ470JDJr9xknpv4bN+1U= +- dnl7kG3qG/hyWiVazT5uost5LRIvHBgKcD/VPTpSa/M= +- 2kDH+uwQGU6C/vKcOpQfDEBdzlaG0BJ7midG0/0ICDU= +- 1HA/2tZdKRZVQ/Ugl0IZpzasr0wSaopxmLjsZKFQdq4= +- 0uLwgg362K/r9YoC0eFnzE+iED2Ox/JgWINWGULTl0I= +- Py3miAb1HyVHEQwGXR8FcqmrciZdbEa6cTmzGKZXabY= +- 3wD5aTd/fOVrrUhcCFgYy83h+J9E9atj+kdUu7jBVJM= +- 0iY7N3LZWfYz7pmnwSBBh26wMJ+/kVexiLUsYe9Zopc= +- qSpeKViVMOM1iyTfMzpfVw9kkDOjfkJAp0nTcA02hf8= +- WWZhmHL8HyP0teFXBP4EY4LBQH0cV0fUUxPSh8F1bek= +- HVAHRwbTbsrsnYdchgQQB79B/x+97p020QGiws1Hj3Q= +- a40rHPfmcaft6Ms9PU9RjgxOTJUv1rt9q1csvzwCeeE= +- 47s24pCbC3bgW6A6tl/3985Uou9nNSj/p2zVgYFZBzA= +- WIolfp8GtvzIhl6W686MkOKqXQGKx5XxcwgiE9JyP/Y= +- pzapNfkL54OxLEQrVgtbyZGT28gSemS5HnEWzssQkiQ= +- tM918FL+uLNyGKW8riBw5MjyQFYqRIsFSJxcNFftGWI= +- NdxPy1iHRA16FjZnkENTwo/P7i1njo00Z4Tw9YNznS8= +- VIobtJ8WU1ooLnhZQGSvdpQGmYHnV5uLtHsED5MpNIc= +- FxXNHhLQ9UrqKOo+JgpZg3l02UBhfzJ5BR/b6qc2Mtw= +- 7UVJxxT/vbpVgLqUalsMuOCpAsx0Swb8rtD6B07zxqY= +- 8pNZgJLqS9p4U8nOOuEVxaKTlKSdJ5XSysjQzDHZueo= +- zZupDfNELk7qN+whmnaVYpWfNvQGRgPogALqQm7AoRo= +- bQKB+vC0c/yRUU6qcZjUC/Yn9Y0MuouqL6V2h+V/m2A= +- An1gZi0SXeZm+KhNNvvJKxnv6fH2Arkqi0AYW0RGHsM= +- WB3Nx1ets6uK0lQXSvgBf/3057myoC2lJNbzo1T9kdw= +- 2t8WjWicy3P5/2DqplUHA0H4KbGnnJJ7GSG5CRecvBk= +- E/vgelJgQ6NZpGUOZIuueoMHpKC/FY9Y61I256muDqA= +- h8srspeWtxW876kpxoFvzoOiICZVYqcCx3Y6vff+d7s= +- wA+wsjvz0QUzfNPywu+bxTzDkfm2ACeAbZ55UJQkW9k= +- wFnZ9bWa8cKDIB+LI/OwwvF+5rJu779kC151QuC+clI= +- ArgDMMBuP9SssCA6ZRrNi8yEeO8EvAp/L4OYLIIH9+s= +- dsSRbruHU0LQBLqIH6TKzYAMKzpPn6I2Ioooxf8NAqQ= +- Ma3rinvPde5Bdx+ymtLfbzkOWrmGIw+BYguat7K35ak= +- aehxOy2DOh3y3nLriNz79RD2fOc2NXbiSQCjP217vN4= +- 4LI2pYBCA0K3v6fCtjDfifOGNRGpKmymv/4X+l/EN1I= +- pcx/iKSIvsaFCGn0Eazucm2YR8UiZ4P3Hd5ExkltY9w= +- RWQ/y+l4TT3CtRnVKbw5Wn87WoWK4Foj5HXYQSHlNiI= +- JULFpd9Nt7iJzCIssHc5wHuTNVaeYYudSQIaDY26EjA= +- gFBvmp4R6f3ThqEVhN76/odm2vdXlhCUOIyrXHFJf1o= +- CBG2xcMbBClrD4yHKus/5yiBL90ldhW+ym2oiYkg5ac= +- ClEAsxtVIF+hkty/f2fJwmSevb97YcgaBwADa7A5eZg= +- 0oLq2KcpfghsMf0wQNd6YS67F091PTdT18vMVr2lg5U= +- Ir4q9d294bVc7ISVQUkDMXRXwdioah8BOaeftUOQDGs= +- KMsBffyZBzqhtHwbMPQT4853TEmR60FY3lD527NtgEM= +- mw66gYRw2Z3qW8ooUxKQHdkWJdtXZOkJJwPyVtO8cZw= +- 0BmQCL7dyrfYlde0OpJxypx7Yi0hxkdwbu6WdWJ5hzM= +- HnbrfnXnbI65A65qUDVo2iqPS5byI5w2xJARRoErZDE= +- q/2unzWDT9YOOD7c4Hy3nbbllFVUE7gV3DotDva+vhk= +- ltZn0JgSNxcilp1mEDOr/kyXzpAtarFcXJIt4Wbs2Zc= +- FvyeckYRajM5dnFbTsIzmHUthXSwOCnAd4I5/WFSaNE= +- 7699wzVfO5LmtyFK9zSDq2WXt4WOrlwwhrfaYQTG6ck= +- n6kM0pi/rvobpKX7YxyszOp0g/S6QqyXFP8gbjKyjQc= +- IiALApFHN7oOewZMva3Gig8su6F8ufwkXu4gVyo/Gvs= +- EKuMt9h9SN/GDiw70Lo3955lioVbuI4wbCL6QivqKwE= +- vK3ckM0mgavz0VZrJNdnsx4E98EGEXz5Lr8WE9TMi+g= +- mEfEfB3tI61wJ08w89WehiPvMjaPtfCcA/PTstfKDrw= +- muLIedS/KkuNXm357drLbhXxTwkcRJzcSnEExsJ0LFk= +- CYRkdfVBfi7vBWES/eiGgMfQqKnyoHA+GAx94s7ju6I= +- hVVUd/iu18krZj3vNHEkvFCtayjATuZ73MEA2lI4HvY= +- xnKzQriupeTy6zG0vamtAjcBdhzObV2rLZ7J6nbOsZE= +- VqKXlMWZCdjOYca/xNVEjQ9rHNeC/1oKYd9HbY7VUTg= +- OlOxes1gdyJt9VrXU7nFNXVzR0FvXoNuLkFZWyPJgd4= +- vNRRLmpzZ3QRKCvm6iCHVX/XOdZX3JZFqhpvO6EcFPU= +- 4WYWZL8UXBuFSanxH3koeouj3YbP2U01XmBhf/o9gpA= +- DrZD/TpvsQ46p4nOFHWfy61GKFrhWlBfKn/Ct1QOcDo= +- XeWRfMM0I1a0sVyXEQY0J6oTUai4PYtRVsKShxgYcco= +- RTXFm7yWum/nQmxh0A2DGt5L6fczAfGLMd0bA3CTRfk= +- 3J4kc++D74Qy0Odaxk+5WG62+OmHfE/k8xAmjNQNidM= +- yrvt51oJTe7zxEPgfX1wKaKw+Jznax5Po9GTGkJ0Eog= +- 7hOgYrPK7iZawWcYZ76hEOwKxz9k7oVvqmN+NjWN2tA= +- p/MxDIZLzRueJV7Q2TN5wxlt8w6HyDVyw+aIIXuxiU4= +- JfOutR8cx4TZ0LzBZr2Hb4BnjVUow+XbDmJ6OZGrj+o= +- XHc7Iup502eziBDn6a0QhkbtYuIxhozvsLEoDqiKxPA= +- jHwL0pF8mL7yqR9RMwKfmPFnsbUK7ypGBvBiRZhiLv0= +- j7YsyGr7EGwFhRiCLegqM9JCzizleIyo5Sfsiok+HA0= +- "+FgukFNMiQbGSVnXkKRlGMnl8hFZLF+DlKmTCmDaEBc=" +- DcTb71CP2cMJonhD/2VUJehIgnguAMLvNLV4W8D2g1E= +- iRSGWs5SIkBq8zmJHRKO89klVzC6iTEAmwgF7dWLehA= +- inE/9axwDLpM2+5xWhu2vJR8+y+AoI0TzSGexLbWfR8= +- TRpHGNuM0Ifpt/y2gpFl4ROOknr5guLgSy+rcxcGVzI= +- mLUvU6kcsLA0ED06lHzkcVUu9KLVju6mlWnRVVKYX5g= +- n9gndl4/2B6rBkDMy7MtVTUGk3S1IzLzMov1FLb1vMQ= +- Zuzdkka6VUwV9rlhxx+/wkCyXUNP/iEcRSw4B5uCMk0= +- 07ncz3ZIrZlfgtTKhivbvmHAQ5dHIINxXEMirSA7fXY= +- DRMO0ID2eTAzbQhSJJJid3vdX6QFAtD86au2Q+bZrgI= +- GtBdrxRufa22yzRfsc1YDXSRKrnvqOZiPCcscOlKQjo= +- h/ZRXxxgKFgVoAoApQ9xdOyb2puLAMmgD1tuJdLQn6I= +- U7xlipAulO7magSb81AI1hsNnrbTA4l9L/R41qmXsZg= +- xkW4MaSwAI6+MoXKL7rst8f/PsscwMBbCrbkl/5Op8I= +- uKb88iMeeVcroFrCS0kf1DR4jVa8695fUy12+Xr11yY= +- "/44/ROq5zt3NwV/RndEbaTScZx33VzslIzRt+u+v19A=" +- SvI0cYSuVJ9B9ftlKULSYZS6JN0jOwS7I2pbmP/h9Bk= +- tcdVqqsQOLPVYnu95/R8qAxfXASBxtM/BBOdB6oVMOc= +- DbLB2rEWQcwiTXUiObX6qk5xiDt3n1FWuMxOPXDHrUI= +- JTDV5+VIiRSfj51gSeJsn2PA3laH0PFFMs9FhJPeWmw= +- N2U0rztlrBdPUyy4Y+TMH92FWxUYiMe5cwOM5EX7f6k= +- xhGW8WvBs1XtyA9KXtWYw6AygT1BVpxLrJ674h4KZPM= +- EhvfJNg3sQ0zdCP1vR+ofpnQg/dB5ybOndJkwPkvq6I= +- "/l375a8JPxHYeXy3kYMwp9hntF9rtR2dkG1pK3WwsaQ=" +- gKEMrwdJIWr86KBaUuQx+IGc4vO81jE7H16D29bCUzI= +- tJx/wO7gm5w2hcuK0KjiiG2O5d0fRM4AqKMgrsu5OM4= +- Pw7uTsN1WVzi0G7KLLVWeK5L345A6jurK012edaJhO4= +- "/4GMtJ1h5054Hg708FA9pG4CMo1MAAwg3NL5y6I4obc=" +- ecvcQ2rOaJhpgRCJDKVwQK2p+6fg+xXNDR1V2VZYtt4= +- QMEr2cPhW0eZmu2h3Tvz7K13BJbOx6CrFiRvheyjZss= +- 3y9j7uJH2OkHteWmhV/SuD5vxQzSSDUpxob9la5bZsQ= +- 9o8GJ8P8uCUMEMhn4F06Trkl6PHYSWpWMWtpQ8YICzc= +- 0KmDRMWOS4QYJb4lW0OV7yMZzzPVXVMBieyBHMvTWpI= +- ngfxz2Rs08jmUOW0MjA+VcDPeajGVUgJo5qT38PIQjE= +- KAMY96Rv1CvfCg/zHZH8HBZr4t7A0c1sBD8psLXRiEc= +- L9b+PGfQorjRt/2s09jPSGMbfdQMBcrnXfy2n+jU0LA= +- G4IVHlXotdQxqIlvmT38NAlo3/HB6k1T5xmCr62apgA= +- 2i2PxIJMsymqfVQR8Z4A+ErmphMcGtPq266ndJrGkGU= +- 3HxAL+2h3DhfBPOw5NleQ8quU5PhsyhvjQqmMmjcaJo= +- r2eL7JOYwOBNq8y/gntdCZ96xJk7ErN69JZNiDiXeB8= +- a1vGzc0XEPSRjLai4h3Al8dAK4J3u2eVHIauXWJjb3M= +- tSfE7bTl9XIBtsqkkrp+Eb5nsX23D2+nkbaT5Y8mzL0= +- KEkUn+wDBAltOY3fbmFfXgoM8pIExIGJXNQ6OmBVuII= +- zQGllS1YmJF6KV6htUoi4fYqo6ig2DTm5sYl1YRpYZc= +- wvbu/c09wZFB/mZeJx8KEe5jNO9I/k9BG+zQlMbwTVk= +- Q2zTcMzUPWDX/G5JHFXE1MZZkepOanfvG+ek9vyoC2g= +- beTKYqzhQ7oRgsYiVvw+sWG+tYLi3wmBBoAV6GCyoK0= +- cq3H3DpicOFAoYo0R6+FoR0J+pLlwZ0cU0EkGRJElA8= +- cPPitSHUgRDsvLSKPzDLFyH9WQOR+8IxyumTaekwtnQ= +- MQUXQeRij/lgLwrpurgBSUm8XD0IYssXzqJJ3iGXEGc= +- xayqPSUBjBATSu1BtTIqj2kmdytibZ529Yhv7sIqPkQ= +- oD0uleWHdGCEf9Nnw3iJtG87wz1UC+b4OkmPuHXx9Zo= +- 0pVGVeKbJog4XuP3M7RwB48JRUFAVsN15+003Ld6Na0= +- ZGoWfcyL6NmsBcul8ld9JPJBNughx/LWAy4Gmr/v6a4= +- 148kELff39j7rHa3NSkgUh9e9bctpKWp5DW3MKmi5YM= +- 0PLQbfrV2188Gl9BmHvu7aFmhrhQw9Y72ESlKntTPh8= +- q/NMqTzP2XzOfkcD3ODeppaepQrgHSKW1+sQqiVqOQk= +- g2XcsMISrzYA5hUrmxGWEAJFtVIvOGsCkOh8tnmH4uk= +- Eg2f7UIuSGB9EfjyMxVjjBiKRih7FoB03u3/LLoUp44= +- 5eGpTJLy/RZFE3LUTk+aIYEhRpJsscYFdypiUfxjfCs= +- g9nLW1t0Yvxb3Z2osIxQgQOP6v+YzIr8ZWm8cW2tb8I= +- daSq3M/QP9kjkMkzLkYfTfSRhBZ2F7AjkPESanBIkQ8= +- R4iRFbGcrT6gCwKp+Y1i145UpjDUOTS502GZvz+fRAE= +- GUuNDXkyaNH8maJw5wu97HPCEB/Huj1B0g0PMcwn4Uo= +- F1TnBu7P4XkUBpM7tMbGMctUek2vZ1lCs/vRdBn4eBI= +- KAjl2nHGgnfMZx3/Ty7+Tn3cgEbVzpcbvNZwr2OQGFI= +- sbU5m/YuyuBja/5gqLhGQTWAjMr+fXZMyesRJwYOWJE= +- ogr/EG/gEdXdaW47cQUgD/dDMe646GW7gOvYKxJmWgc= +- BLRHeDr+W/1LSOjbBnE3MZUmqY4CnDeyVZFUzszBBn4= +- xMkhZfXLwAGKb42h8fSg9HUnBJWcsULEzHCsMHDiVrU= +- cvEGrMJod12iiyHrZ0eb1lr0E1wk2ZnNlGC4MncqPiI= +- efRGKUS5SF37XVDGSLw7TJgvMK9WAQOURF5uSVD1OIk= +- C/XfO810khhpDfdB6y9+JAcRReJfIkXuQFf5a1+lO2k= +- ljheuCj18viAh/M2Qw1ToOy5sQo3Fid166DhhbJY5+w= +- 6tFVjJl2XJZ9v3Y5IHa01OKgsXqigVws2ZryHjsGqU4= +- Pa8wZOaZSDwiXRVbIru37lw2dc9dEgo+NcxM4oxumH0= +- WHcPdS5Xk9MFyNM2opxIOKx17voUQ8+VUO+GKNbBy50= +- U8Zyf+lhcPXrjaxNZEAEBaZFYJJoEt45D4kFsMSBIcI= +- lhpruKBhbMEqna29Dk15NKGOGiR+SFQLSCZcxKolWK4= +- XfVYEzXvewZkXcLr9QIfcVVcw2tHRHCqnTyZqp2fjaU= +- 8nbfKlphGqrlwQEkjk6ROUpgxkT3JiFsWD0YRRChRsw= +- PXX5YkmdLzhr+Zfe2mYZuk3TVmmqhALiWUAZmHc9nII= +- 3jbITuPoriTiuCZkAMwCQTQMetNiT6ghgQSuypasclE= +- viyc4XJ4yTEYU903aeOUzeAEJYsj4e2CqaGMD+gwIxk= +- AaaTjTfUeyM/TEqFPn7adNfpN+PBEO0BGqGLcTXOzTA= +- N5DWE/+AtKV5qXAVqFYysHgDn3gxwY/7dGi5HYKzpms= +- YLFTaqPoFeCAzNBSMB/1wuaQXkKAm54/Cv5e8TeUV2s= +- CfxGpPloeqsSIVIYx257t0satryqiMfNa2q91AYbsX4= +- h5pNdtl4+3ouvPOQ7XV2ALdOXfKKDmST2qiAcLUFXOQ= +- fiX6VfczR7DAp92qGX+Hzww/CcoxNNqhLOFXAEBjJyY= +- dScSC7tWpaQaYoaiGEjyM9StLMgO2HW2iika1KhvfPI= +- i0y56S1LWunyi5QrUUYBqlLAYmOGuEPffqh6dqXkYgo= +- pV+kHdgWQxEOymOmGlf3KAtfFc1REDz9D25Gyq9vv4w= +- QxNqaz3Kxi9/flBl+DD1WrBeYBQefaT2cdHahuInWlc= +- F8e0mntcB+G95+bBzYK1tuNi6My/GQNJFBk0+YrWYdI= +- VafugmVZUL6wE8Gz7sEJJ+i1Elvx70iyDZgbt+hTMK4= +- duxVK+r5yCMu5icDNKscl6AcqHgCtejQIwZNpJ1tI8I= +- GeiL+dbqf2uei1FsWwawdp08pfNj6KvmtmulYGA0+Lc= +- igsQKqYQRSiU+Hk7fvivCTKVDKCsE9hnHoZOEVALJlw= +- yMOLnIc0XXOBU9d4sz7EK/E8XNLQn3xRtfeclfim1/k= +- f9BvDiph/sS5P89434dZ5eTiotovWmJ8+tJLgBQW67s= +- QPWYzHZVDSkEO0ziNKXkoPLllRoRO67Cgx+R1SDz20o= +- y14PrHXJIa4CSH+tMMjQph7rPWx5MSb6bjCduFTNOqE= +- NfkVZqaHwLN0ZjBI/G6rnPegUT6PCWzfHKK6aYb6jyM= +- sQj9+Me2vdTmam4+LV3TY2RWgx+tMP2mio+CHu7gJxQ= +- OldFoF+H3e4dtoshfcBDv6IG0ceqod0KfddrhSpzNZc= +- HO5G7VT6BfPPBKop6EXSA+g+Xe/7GJ6EFVfkLdlILdo= +- Xk/467X+hNjHlozsCMleCDxe3xIFSx0usa7QUeYELDM= +- L19s5a4wtUql187RulZpgrqzS6KBSlHOGGXSwtiBXNQ= +- NqoVqI56s2CEy2hFf6VzHA7Xaz29OHFGH3xWuPfAbls= +- ibAKLt9tXVUuD6HSfDNW0mMoIqZ89U81CEqzFNNr7OE= +- hOvBuseHn4pz6t6EDFF1R0hG7HHBSeaWQ+318Usn8SI= +- gdBv6RZh61WIurCtRz+GDf1D8RUmpbQ3L7Qdwk6HsIE= +- RqKBzTVJitbgswNZtXixxiIwaVcqFlmYQiDfp345Fyc= +- Xzs7YUlXEAh8TYOylv48Z1qzkGFYN9UfJyvnDrIsAGA= +- 29zwG/Us6sGFo+DXuFGZf/kLxm3kdSF1YtcfJwU4Rqs= +- Q0b/kvW1deqrZz69fycjq722amsVeBMp52XzEGiMoOk= +- CfunlD4irC7aJjOBPe8QWkvU1AIPNcmiPsFF38dSEdk= +- J+7Pl/MN1M+uk2ilBjDyy8ctjOowySdZm7N2edluPtA= +- Cmcki5rgZGhRiX0JmB/5QicOcXPN8s8epWH0U4UpHUk= +- lY1RYCu/vRiyoIS6hIqCfCmVK/7xcMk2QZsJIplMBYk= +- XVpwoteIeYNNs1g/jSdVguzgbq542w1ADdpaCJV8YHQ= +- jG6W96tqApTKyoqWDZZMnC+7ijf1yniOD8gCvmvC9CU= +- OV8pEHMcUI/e2C2C/1GUUUqCK6HIJtrSG7+bLT9xYHU= +- qQogc3TSmnRnNjMBVgemtjbvyvBiZ6XOXJCvE9HKgTI= +- xcCIEy5q2/MNT+Muk3q8mSMhKLZqt5lAr1gfx1YQ+HQ= +- dlrZ9MfmLjHn0M3m8l5xMEEWx99si9RSBjdvgl/48Ps= +- xALRO0qhpq6Wlxtob7wL3R/thz7L77D9AdV4ce4AFAc= +- rPRUiJeNn/RR4wUZTl3YVFK3b3XtbKIjlCzUBp7VLaA= +- dDBWFrK8FsBvGQNMqdsZ0qpJ1s9ctIGg0OtqnE2mXA4= +- qR8Mwk/2i9cYDXSICxloayllxI3rAtve8twDY4ieWIM= +- YXA0wi22ijplKa6RDR3FqlzaYjDRdzQLyU9m6XQLtIA= +- zmQoco+Kw0lNDQVfjl/01s3wtEdWFS77M8+K+QAl9BE= +- KUOlZ7wFvGbKYgHbxfAL7D93SkexuUKJoq6OeYNMIaU= +- 5b32k2ZKg6dCeEuVyqWGkQwGFmzs5JNa9BRpifJui/g= +- KjM0nn5gaorS4w48hFIfk3dFDPCQg+Fi4KmxSAzg+XI= +- wbWboMVuayF9/dDeWeQHGFaFF8B2oBLE6jS6hn8IxeI= +- zTQNGlxBUd6i+35Sqz8nrr+aQTX0UG1NbgMInwZumdI= +- nt10Ev5l/wi9cfNOODq0NVt9HEavBXMYC1I/vzhA+Oc= +- 3mJ4q57RKSyICemFIA720212rXEvdnRWE34SLN8H6DU= +- AVAA9LWM5AIPzYDf5PuxXzmoZNd9BCM7uKCvSPoVG5g= +- 8fpdbCZCbzfnPBw28I3YmhFyElMa3FnyIdi3C4HQVG0= +- wryCnylRk5dfDLRpYkbigyiDjhUzKeK45D3iOwgALr8= +- oYrE5vvT/AJKB6Idr7rDfYKMqKBKDjTzaPHsVODU//s= +- MZuuKP5OZFwKywPY6ocCsz4Z0t5y3UhXO/1ePJyS5wo= +- 9YfU1YZgYTgDnmT1ieysyzdepWOtwhoI+xaeZakZUks= +- Q5CHSC0h1XWEttGibMnjhE7XXDbzPA95UgQqsEErJAU= +- uWibRuBNqPHqKvFrsZhqc40G9UjzXZR72WRUBgeRjsQ= +- WMax0yZT6Co63AT+E8AZJd/EFZ1J5eEaR+QBHB5/seE= +- nI9aSnd55qgX7Q7P+7vPWTo1NwAkKHSDUDinn5Hcyuw= +- BJWfqIEJNagJgYe3HSJ5tpPz0GbOrjq3I2dbvA/NxsI= +- 71Ks4JDMxpDDEF9IPavlIcfhgcxnCNrnm9hFKPYYugk= +- uCK7k5Bam9izoMCBaMQnaWQ2z4vzftSrjr9BoHZC7Rw= +- n4Cl4UAXzMBasMkEx5KRWo4TSpfrwvWjx7yfew8hVQk= +- P1wLX5wybnlopT/lIdtUbxaNUYSUmNUSHDothe6nQGA= +- bu37ltcnrdR7ycEXCELh8JnukoDSIZ0x4rEaNwJu3sE= +- yF9nuoAmDF+rvqJEJrg0qZTV4NjF457MXOG/cF6Lp5s= +- KSniL0ixxnyiPYhx3YHM5BLhy0QQikaKsKv4jb98cyE= +- BRkl0D/Y3LMKK4pawM+cos3gOOOEz5MeiqjK9X35GC0= +- AM/kbSur0zPR2z+cH7PZ1sPVP9f+TPIGNQWm5abeOZc= +- FQNDQxztVdO+VodW5FRTuO6tXdBv6PqPYs6uCX3S8h0= +- rZsHArxBhJmx8vtO6j+H6arySusxXxK3ndLp76qb2iA= +- ALR3dSD7HfrYomHcwE3JLhgN0DbxUZx2r3Mhpw4+aJg= +- ZKgTa+2BMSE0YK8ziXLUt3UNcXZXzRAKFNOUjitGv48= +- BbtDKkv21IRoYvT5igWaeo59RLnXCmDfN0//fPMXwK4= +- s4KCJXicYbysWEKkwFnFWjOP4+RJ9G4pwmKj/pas0r0= +- uclQZA4bN0DpisuT5mnGV2b2Zw3RYJupH/QQUrpIxvM= +- IOfC6Jgn6Co+e0108wwtwu8WDsPwiUoX+5TXjtfDrZg= +- PqRWtLPf7ytklsCZY6F3JJm+QNxwicsAe7QSWCYvQ0Y= +- okVv8GHEnHGDFfaOD1QlKkoWAMnsLSbXefS3tgMe4EM= +- 8kq8NLE/redugFeZ9xGH2mzZC5ysNzrmXtV/FDvWZOU= +- Rchr/8uR1RnyUSzNcSs2NwOOYPl7uRGS/4vZHck7dnU= +- vqfwiHW7MRzo38Y781oButo7B+0hg8HCHzkt0H5sz1M= +- F0F+v+Blom5P4Cuf5F2x5pBcG2FSW5SK+U8c0nPYFBI= +- Cx2/8nFKWozq1ygmKmYKWJUHLuykXB9WnSY2UnqQyWU= +- THPWx311WcdCNgyr9b4Wc/qbjkvCqd15G8VE2Ft9YF4= +- 4SuC0djXDxqEBPdRntEXjUKlFMuwvukAoWUOUM87ZYY= +- eJuZ6SpLPbX40ngcXO/zGQU1Bm7QUO0QSZwFbosM0P8= +- uNqCpJXm6lgvcW9yxwCVm7F275gfzinPBH1Zg6jEZuw= +- XmEOa02CHgNaeGZjLT6rlI1Zx+9RVdbDQ2/lYAjBjCA= +- U6YMlDbZ8UTgWs9Nf+EJGyH1To+gO8abGBZj4W+BseA= +- r1f5ohtYO4Z0Qn70AeIih/R3T5VOXv942W0XOi82sQ8= +- X1DdcnTv5CkRF6CJd5SFzkNTRT8JVgQ2lc8Ji8dqpRE= +- tMTY0b+3vA63L65MsBvIKyGahhtuuNw2paJ3sGIZ3ts= +- yK3kXtZPpO6NqfkHLwa9w7jlyqX62cW0gAwyd+z8I2k= +- OLh7ENCNjCNGmHLxiAFwAz9Mp3yxBWO9RNcehXuACPQ= +- 88iAEqyD7mQtqZvNnWPPbV6N6idrrjBl/03t/83CDGM= +- AvUUgvVypHC0O7Jq6XkVlYufLCi++sypK9JBfDZpNCE= +- aXRV7E0InvOvlwt8gRJqUUm+2FRf6qlOYtbbChEb6cI= +- sCVvDvTfttJ81poboHEApjGv48p7yf49micWGgCPJnQ= +- ggbSLwQ3gRCOaco7dLJoqC+h+rY+olgRXj7eG1IcAp0= +- BMzGdEVf6ANTEhdiTLZxakWqSPxhBs031DQbh+ZXLsg= +- H0VOjOjXxIchT6YzHXJMktfwYHFtIclrGWhTJTCcEqU= +- jFyufA3QqcZrBBBr+XEAA8Gqekvjw9QhExVJSfRFJm4= +- SsH1rv2bAl06+V7gRR3fQdu9FXt/vYppURyyHzaBGVc= +- xrPlEC8mjRemBWJyCr62JbDTOYKJ9G9Rhh8bqzBV6J0= +- BiXlv6Eeh7Qp8HaBu9/4u2fZcSA5uNjzYpoR3RmUIDk= +- 5jgYAZH7pQ3jRvUBg9swG21DqKI+pIgqmDGVuQkdpnY= +- pievSUPD4nEyghcFl8DHltzGjBIHIOMTBmOcNhvUMU4= +- JWahjNHqxf4WGURD/gGjVA4mH9xppvDHm21S2VzXadQ= +- hGFbGnvXaRLSnEQy8Rg7+iijQCzkIdcjZGhY8P2ywIg= +- povzsv7VxcRK54xgykxYvf+AXyG/csxieyFRURziISA= +- zFcSmkVJUZavuICjhhqr8hi0Aoz9NxeBb5PYxdmY7Ck= +- BTQUFSSxh7VA05nmddxKDkYR3iM8DCPIyUZwD2YUdmI= +- UPSAl+PloVZRJIuK40IQakqNamYlV5HCh+8MqjBLUdc= +- x+QCJY7jlfiuCAm0kFEv1GVDuYuTgHex1Va6t1lub0Y= +- ACX3VwTw15qux1kZbwDAXvIH3uDmeG9ySyWyNO+rQTw= +- FIZKaiPe/JBdWOi8IXuTvBdveEI8IXXcCByrEPo5UrU= +- 53O7XZAmqgmeeQzY79dN0XesDwLT2TFF/Q3WA1WkylA= +- "+VK3S2CDVUgirrbwgrHptkb1bROF4tvzItSX8iccYuU=" +- F0y3USFJbSrd1m4SdRCtLIRJZ6g/9SofIva1t8uJSgc= +- dy8P4bJuR0HAyfTno/o3W3AZWbu8bKRhBb1E5+PcjFA= +- W0BicumJsVwMyCHTn0ifHiMMZVej4CFrFWtoEI1B+yg= +- 8+rFbqRkeV88ziYxg5we272V85oy4HQsHsent4XZgYw= +- trkBAlXOQK+ihKSLKa1dTGSneW3YmWztemWEnbQIieI= +- lc5w2e3j8A8uSGemPQehI1N4NiDGE1VGg7afMEC/fgU= +- kJzeSic+Xur4LVvZ9AiO0z2O5CGmTvczthZmL5oiBu4= +- 4AD0D8Ts8DYHnBtrldfAMxudUUHdeb90vMqtoE+XTpw= +- WLqjxUr1IfhwOQ8hJLa+MuaXiX1daTgY+BkvMFOJfy8= +- ruEnHrbwwE9Oiif9hrC3ZXyqJvoWAT7Pd256kFGLX9I= +- 9fHOjyXXgH5YMyxLwHRmjN120f54wWQVnsZ63XsADFk= +- LLOAnuPteqGt2m9QT9jurqLGUFR3SyzpT0CwErf2I2M= +- iukC3QkROqnw8CMqqGeaY+i5cSZij9+nd6N6M9zcrzM= +- MABfVs8vTUTnLlb8VVIblmsEHyYjxfyluSivwRsH68E= +- oLCk+dV4fpR2z0FuUq1I3MsVfmkK2yctos81inccX4E= +- 2GyGUbeUuvqlNJb7uaGdFDOQimqVEWHY6vCIitnDyMg= +- XpKG2oJhoV0rJVY95Cf9qlFe9/iOAPd2y6+t7R1MWvM= +- GUgovfg4oaIVWiscpXmshsVsbMtS2XV6BgdxaAAN/+I= +- boClvx9uFl9lllB2KQphY4394PKXJHTXO5VKEJYqOS8= +- ZseC6PlbqVjyitquV2xComPCRJr0FvuERJm+9/1BstA= +- S7XtUuVkSAwOtExkZjPABK6+fTIbPy0FywIK6ZRjMUg= +- Z9cQpZCgbHaDbgzddbZEwnt26Z50MA1p8dhXlCoZKuY= +- MfYed/JXnf3HFzgZTNejGi4/UGcUcORyREVOXt/WRl0= +- q4ueArMmbwPJZw13vWKups8W94dN8xvizVZudkH57Xs= +- 2EqaaysP6ubtu+KW2iFfMHmGhjxi9OpfMzBpDp48s8Q= +- LVQ7vBK39q/nsOyyBTRgZzS54XbXR/Y6Js9B4mcQjKM= +- hFul5BLQFB/X0pwIdiX5FF9f79+/KOW2FfgH3z2R0R4= +- tLt/I2riTXJtpoFTw6XbsHlYQ1SO7A/CMZq1AF0dlvE= +- WeIPaUVi2gmQIFjJ9G14lbcVO+WthLpqmNp5h/lXc88= +- 23rZUDNuvS9VVjrZGMx5SvC07boDC1GBKproE1YT0Jc= +- AKa3LUCJrHWyn9S9mWlgtTWMnW9knhx70PJYdWv8nKA= +- 6NXRuQ/7Ld7K+xXNR9jfhv4nMDaKmupnsZje7xk2a08= +- egGt6kuKEISnrr1/MlYIDDGjATqlrXY4rdITbW8+U3E= +- SpxT3tKaDXrtzBa2yoTeDPVQO2loPqkT6Sn+eExXRTc= +- AktMLyeSL87f08WZyfESiErfjDI2qTNbUfjR2hWhuAQ= +- dMK2isGtlHhiZySCxlcsFMGjt5Dts7sZKlHtNjkjQKk= +- gXSgXU4m0GMSLRGRl9PRV7SG+4EHRlBKzq0QOCDjbmE= +- ssN+0ZpdJ2kaodYXeamHYF28A0jEJDR/R9axpzuNrso= +- y3mwKyCv/xhwTJqd7bZQ2X47A1A2GIasIOht7GKOxyU= +- ZbyGf2j/0cq3ct9CUr4mZILJ7FWHsU2x3/mtxdtBQMQ= +- sowizQRQlXWNMz8a6vy2pkVZ3FD2sRZ3zpajBpgXQt0= +- GmhC/8tou7wraZhowKnIDgbfrAV3VY4lSrh8yO1341c= +- Mwh3HLGxntqRM02M0JEHkcFQI7CWkuu7SlIBIk7GBgg= +- DW/924eX2oeDLEFQW/p4iJvRDKnQZ5vO6q1YxSyN7HI= +- vOKWbAsNhTJ5Vr5K47oaAsYa6nwLLZqut19WvndUaMQ= +- NieZllxQbLhkQO2IqPL4rDnt25EeCBkZOG+3mW+UR1Q= +- W9etsCRGMbVEqF39SOkUK20f2rGQcRT5LV+KJ5ULAro= +- lqHbeEqaxyFda7IA2ZhE0g3b9/WGha/GJkdpkIG1ra8= +- c0duOCYxd3m4+ccgnHZPQ4GakBujezTnty+dy550r/o= +- 4/O246ClDYsT/wjJNLqDyLcNoziYI+kGIwTXCIEx0lY= +- 5xTMsjpRqEcOhAPaOEjmYnYvEQwg1AqAvHPjZh21Y3A= +- ghooAgWqUo1pdvU6dnZSiqGa54/iDhizNkzWBO0XOTw= +- KwqMI0u5U08mR93H/Ib1mZZRNXs1nw4TnQp5I4jraiU= +- gNqfiAiVF2oKevCpG2HhIhiWQoHH23SxQHT65jwU+G0= +- O02i4o6+C8Kw0wSX5HSKR2gWXFWLBzpquhXVffglPqo= +- Vi1KukzBeDQJzDJ5bDsCQ7tnaMxV5RxN06fmXLVcJIo= +- pe5w8VIlI/Gwo/SPTmGmNwi37OlOkfB5hjYq4rSNg18= +- d7kOfpl4Olx/QuSQVCbvei+e1n1y536aYIh6KzDca8U= +- 2vzOTH7UN4f5EVWkr0hVGFsAAldScQKAAElXNvIAWSU= +- sQ5kJ4AuoKuWjzul1n5Pn5Ol7Q223eFvXcWtFw+8lnU= +- NbbQqqrjnMWs3o89R/1q11lOUHxdebnxF4xbKO5fiVk= +- pgOXSuSzZwbNBO7AnVvb7MXvjieWIrwB0g2C/akvXZc= +- N+ctVHhL6TPdRtckD0eeCN/2qALq5dWEdNRvJK7tDe0= +- VvSuNWOEfAlCWwS7epD+GPy8AiU9/CAf+KQPk+NR4Lw= +- oDZHVaOKh7oZ57ohtmYFHx04fLj7va/zgjyiqVJAk7w= +- GmvU2dedwKebU3lccNM0n6njiWij+++/6Hg++x0raqw= +- DeBeRbnfM5UcWczuYuw/ONYfDa8Yf1aVmanv1unnH+U= +- 6aL00OHwGxzWk+hpUe7MRCneQlkJqOUDjqCA+xWMP5I= +- M0idJJt52Iq41QikRbpiYhX8juQdcHZxiEwHO97QAac= +- "/Kx2tLLJmN780qBVtOrbD6jXktL1mZb+oJLfJRIcVHw=" +- XspIkdryrKvkqVgUvZYBQ9ZRsH/HLtqDEGBp9gAVyVg= +- OTQsxB15mapFqJc1T//gZ1fOm+y612MsgL2iN75Peo8= +- 5JozIW0YzfmJfIRb0g8DcvEkA3vgxXZj+VfCrySInLw= +- xfIKZ50BTd1tNgg93b5hwV1lJhO4j8z9vPbXjYc4ZtY= +- 1LRYZNnW+r/FaNdPJsNaur3iEFM316+aZgXhxWyJGqY= +- yCB57ISiX9HvRjmEncnQm/WhUbhofRdiWY0g/u6KCAw= +- hN4TaFZYV/gXAJDo1e7qk3JRK46k5yJPikI+CpswGXg= +- GAPGoz0mk8kRS7poAiEDpKu1uKuwj+ELmAcv180G/0k= +- zK2zRuJhCAictff+1JVxZDgSLGRYD2ZNk1/RNCprVQk= +- EH3c6tVgdUHrfWMLEOFzy3rlPamI7r0PfDa6gUL1C2I= +- qalaY6QuP93u6ZQhYEQf0aMle+RX8z81vlLgwZ1FkKs= +- 97EVCfTWdcPETw3TfKgwuwLoz6WPBMRig8S/y9zh/0U= +- 1SR1upSSpx7FB2KjoDtzrZR3K7GkToEudSMHIebUUf8= +- voUAQsD8uza6xTjHZd0dqTWByNgejB3T7zfCqDpWYXE= +- C2fGSk6WQOeNOWPaAEq1D6OFKG299p5dquH+xL0sMuQ= +- "/U5+geH6BfUZ5K8f5mYjolSx+7XHKUVU73ZgkW320a4=" +- vFs/4y4jxPl+6jfjny+5gjx4DEurih2xSWaurGyyhKI= +- hJXlcFP9D0kPNwnb58ZSjec7yQWN8MKw4wqMa70rDrU= +- iXsxIHLC+yiDhol/rgh6PZQmjo1NMgGCthnle+YRsYE= +- 3RDWGrjZ+qfYSoSPAazSYebSLNpAZXvwrJJTwDwJGkM= +- CgqAt0wzuXB7KeLT6EPqC9woubIXd5EIb8wuRNYGMiU= +- JSfVzuKuhuyA2IcHmKQ+aoe9JLoORAe7tv2zbeVYnso= +- z6P0R6apfUGhWbRH3/mwP6HqGiH9XPKBvVCqXymhWC0= +- yQvA9tN994p45a8Mmfbe2nTFKw+f94NB3MrxXdvXGS8= +- dU33Tg97FUvQOM011nVM/q+axTf5nnIQu8d2kEiDO6E= +- ocqf+O6EqydI9OWbgb+fB+/T0qv1ImcGKV1aACHWR1I= +- 3vq7g3Z7aK3B15l3N5fRF+j5efvPvRw08mb75HFvR2M= +- WjJBCFCKaUR3dj33Y0xmpxlqdN9u91jFKpH+UvhfCVc= +- 6lWVzeiNgj1BEKLa+gKRtSsKW3lAnPShID4RDBIwJrg= +- PFvbpOgyGUe0uw/I4UybmU9N5SAfHwEVyaROhLSI0dU= +- hGBzcd5JKmbdFRT/sp7jAkMr2XQeZr0lyTKLS/PGSwk= +- yrGOXAzfeiLLq/2eBrGmHaYbQXT9POVdN/ieySPZRao= +- BNvdF3sky/AfvWFSZTi/68hFW2IjsBIlAgdoUq45M8E= +- xNMI9vIKvk5rDyiZCP2Dzvl6H4myWZPgYS80PyVG5BU= +- nlonFPd8ZmfPjcz1FygKFdUKoPsTk+FoSLUL9r6b0pI= +- Vp0P+VO83+Tx5NMZcGOjXs1RThtnVUwP34QqPg4i3lU= +- iPWd5IczXZjI+xsI3e5hXWRM3krK2KTRG5Zd+sFCJuo= +- rebKXADuIFZLT+trZrbxRawNvlrBZjdPqdumAvsddT4= +- 8dET+cCAkBJwGUYCvd86OnBuTm3T7cVl4oY+M6nBG30= +- ivv9uNvli5UXHATB2Gg9Mpr/wX8/UMSWKSFMB1II5CY= +- ra+d7G/ew8UlIiy6yVn2ow1dljzjpV3FknkIHTapCuo= +- hNxrXW40ISRBZcTJQpam2S/vRBHJDYqhZ0AOCGNMa58= +- SH5CDJ3rPIb7Do2R/bnHdleBHsJx0qC9+HV8dRU5Pv8= +- UdW4SXohf56S5BY8Hd+x5HeFYuFZccQzFaapJdg8DiU= +- GZHtdg8tzOvVCQ4+wGAI9KfdoZWyyf5LmAGYG4U75NY= +- uA2k0pUOlW80yn6l5jmXmTtEqCDNoxRjuZPWXRdYt/Y= +- wo7MTsbDw6i8GiK28Pc3rwE1flmDlJvPmNRhcFuEnYQ= +- ZfKprgtD9CjlPmdKDf3WbL6zdUVdZtUorRWGBuno06w= +- w5DPsQBPLpADa1ka/xBadxLWSYmZfVDT3SX7NNYwoOQ= +- bTH22fvtnkI5VcJfuqK0PB85Qb/+BlSLG/LAcEYViro= +- 7O97HmTHDey5eG33eNRw9yiMAu62uVyX2t5bRtdoq1A= +- xH/hvv/eMUPtpqSMQhSUH0/60hsTRxuQyO3X/qUxPMM= +- 1X0TmhiLDchOZaP68wbltwNd5lt7ZaHMn+gmcP48RwM= +- AwB+kJb5xQDGeb0Yd0zlprY4U2tNEB4CdTRTTpCI75Y= +- mmIu6vSmJps+6J/Wjbm/3hZj4WN4Ghl2u/yS4eCwmhM= +- ghx4P4yVGjikJw8rrTL5NxDmo8Mv9QTmEQ58h79NKYw= +- KcnDDgYEUVztmLPRT9iHUaj45Lm8adSDpnolfBSrefs= +- kiam3ocrxI8EGb0W23b3QlBHV45Zz5qg3m1c9d1NuV0= +- sqERV+OVkNw6CuNX5uikYyqiu1U9M41mv3D4Y7xLFHQ= +- IBnDvW8Z3UcLbGDjim1uDqGBbb2BDBkFouDH4t4rzlA= +- aGc6PUy41JfTGWCGwckP2W9kRU1mN4kMTr6OSoZKgZc= +- qV5T7S8qS0CiTW3iUfTiTbSPSab9FVYv6vCm8V/Fzlg= +- IFmu9HmWy4F3JhuaiVmk0yMwt8kkLiYQrPxPBzhCgT0= +- uTo/XnP3D3nVsAwk7dw58J0x9E7DXIS1mHp00Hq71vc= +- T3VGelLblr9yoxtvHr/YY7SGNjw3VZm0eylCsHI09Xw= +- PWjZmd4ZTeOsPudRPIATiJF2s1Hkq+x4bP46naOF6rk= +- pi7LjE+W86QBZdOjZ9HqZA/5Us8KomP+XT6Lp6ctkuY= +- Fkb1qfjBVYAA5BiO6Yc7+/p9bBoKNBoDhenoso26LZ8= +- CqgV/7PhDgk9cvXF3ureZ9i3fVrMjrBeyg6vCBnI7YE= +- qM2fntVbf1hmBWyDrsFR/nvmvQCcOO9XrMZ5Fsqm/2U= +- aa2kCIei2Af5eWqqXbSHTFXms/4KYRkPlZhvxMJZaxY= +- L+928T47QkG82auAPDk09ukQGL6LeARXN83Fkey+zhQ= +- 89CCxsoIERHMWu6g4sGGbt9QATjSXBIbPzk6Kc3j/LI= +- 5cQe+x53uWAO7vxKwTJ2rt3EWJFWzIE6hOTsrWIWxI8= +- R9r7aw9vjHIPd+8DnVN84RPE/+gLeacqb4qtcAdYjfI= +- axVxMkDoevIEKakkQ7pL3S/kArAQC4vwVwiCV0ZD8J8= +- LEBRjkKhHoIxMp7/dnZlw2o0CQ7dYRQ+ZulYSyuqMf4= +- NV8gOPD3NRe5KJ212iLM9vKZ4/V5vuvzUne72XlHxy4= +- wMwhMWfm8KexbD3eqwJTc+8hwUPxtHGQq6FFzp1s6ro= +- O0hKzSpjcn1nip6j7IWrOL+xBWyzsh71tzJ5xr9h7mI= +- lD7+0u6hVfOD3+XMrRKQJ4eyx8jZrvlmTr+fcgKXL3o= +- nD9eELKHWQ69m04iDSPTZzecQPgEGWgm76O2w0nWiyU= +- t7lgY0NWb8bYSxWjJPjgHv9YPMbGOAXHZ12dj8DaGwc= +- PbxrL2/GeZU9H9LENE5glCZ7PusEMZC2Zg0HQa+fgUA= +- srY8RCKwoGPyKC5KhH6muYxpZFnKkBVnljER+eQo3cM= +- cExFnGcy0Wy5ZnJjpLQOHTwaRA9uB/vN7jyUNDCcsgM= +- 7vRJGK1Blr8l9xPBuVumgKRHvMlNY6aH9Q3YCX+CMoI= +- pKTBmYqkvIXaJ7gEuZsf8lnt0jwCB0IiGp4RvJbP/g8= +- VMwUVgeEpz6grsIUWDzUpaPifPuo5PuQ+2E0jLNzE9A= +- 8q88jgAhc5n49UGsCpGhMFmJrBjXOoyGt9AT4owcreY= +- 6PGtK96jr5RJZR+Qb3tFgFM9bbqtW2qzZqMktti0pQE= +- u0q1TuLBVQCgly6rWkPKSnDDsXoaIkwyoNHsgwvmYqM= +- g3JkiKGxPgeVby5wZ/1pjsUMwx1OOH2BA2EBe4tYtcI= +- lbb+FbPPi0xatsyTidS6MNxgmx44AtuoX5lRa5x2CrY= +- "+kAWLYhY/YN07nYs0Kj+R09nFAxRSbBUHQRguai5s+k=" +- PxPagRu1oDZkQ+J0/xtyuDoM7XTd5/Fe/jSGfA6FG98= +- qo+wg5ib5p1zK0PXT7XNHeLU7UBtyrYTYX1HvGE3ESk= +- WW0VP9URU1lQzZ1W4c1VS1fqmsf68J/ZsKWlsC488vw= +- SVaZ8DPNZpsuz6pCvRXN2g/MdFvkwm80JSJpViMebtY= +- u9SxMYDFMFdWvfAdNQgwwQr67oXTVjFjrlrU/lnu90s= +- gpo0Jzb4peVp/GeulGFn62n6w5Ti6ir1VVnj2tmLVmc= +- d/TAtg7pOlyx5W96SBe4sRXS3nik2hnLbmJDoAwXiYs= +- aXB+bRxafT9Wq5FE/4SxnoPJUrzkZ9kOGnrWKRCDfEk= +- "+kYJGnyg1HnZkXP6pmCWEKCtC3bTiPsPGxFKL1MQteQ=" +- R+YlB2DoQWqWUY5DsFhaG6KCCLC9TrWDyWhVFthh5M8= +- idMVq6f4csqepMAAiBgmrRyNSgfL2lN+06z1ys4g+eI= +- PykvCZU9EPtrPxaljXv4HWvl73IADx5MT5SPVW1rlgk= +- 8Zfx7Ov+ClgGsrle2N49uJjX/j+5QIQdMYcV27WxyVw= +- 65p2UM1TK2HKn+wM+Ckkx7pzkL/ImOLUW8BnlnuYnMU= +- 2/wD12KyD9uBBqv5q1d1MvcJDYH/HAdajWuOuvYMYp8= +- 3rd1Kim5udn/jceKVNrXPWI9F0lQwpjgeAhCyH/0f9U= +- asWf1bNI5vJubIn84urTiESOlFizrC0eIEvMNzWloV4= +- tR5f1PcLBRLhq7db9UKMQvKvHLcwfWfaxEClFCU736E= +- tEPsVKkfYen3Bgfxt9nstJYfIw4GPOJgwcQ68pTiJwA= +- ZrETKgFzkQsB7joV705pWDu/L38eRGLJnvvhuatb+Ag= +- 77I1nhi75RQpG30t/1F7/7C6mYF8ntZCjQ+hqrBvmXk= +- l/jdamSEp8MusTuS1V63nlpoATWcPYpynXNk1icy3iE= +- 1oLtTKTZicE07JTxVR4exYDdbVpuzenz015uSnF/veQ= +- 2x7i68H1LBKQ1OgvTAH5II/UM3VYB1u5qrQMGnkeZRA= +- Pckadn3KJp0WC0NS3BZCnMlvIn/2YdddgoMRqgtGoeM= +- GifKO4jv0WLmJQ9AP6u+3sPdDJdRZ5Z3DPQ2osAzxbo= +- RFcfp9Ufny1y/uFBSmiYSvGUS9qTieSlxEglYpJ5Aio= +- beLUs2OC+KHI79S0I1HQD8bn0FRPE6A3VZIGrezldeM= +- VwhyHEcQYzh22xNqlTDYgxy7xQIyCQgAyGYn8WYH1Kc= +- 6Ut2XPMtrD6FU6RtB/vSG+sgl0Qrxsg1ZmFo/dlvVjc= +- 9HWfO45lRb6lS3eri/dlgldaZ8wHVuVpSHxUIG25DJg= +- zXlMs6JQQs8/xCY7SBjLNXziEhyyisk8jIzhwmrXpmQ= +- 7JIzz6zgs67JpCFxDQ6ReC51Kewd672WNiygCg2zekQ= +- Wf/hKnDfFRCeA0WVXjIwqXjzHrwo2P4+QtMGr7KLjoE= +- "/XMhxAX4r0OBCmcju69vtclGGu4nO8NpPueQO+zE5uo=" +- FO/0R+dhIXS7vYnop2QHc2N9KtBU4lTTs7YDr1MtsWM= +- G7S8x9e1DEiFSSiLwJtnDvs9y4lsENpuwVjvF+bc0iI= +- kbJxqdnas1w5b826HbqNIcdfY5DxFM4pkQ6nWX3CyPs= +- wIDkJlsWVot8IwQDuaiXmyKBb8P2HTUv2BfiaYFpZ/g= +- 6lKmqJkPaoXrmGoIP2qX+lBiZdQd84wtn5Xv8d7i2Is= +- ZUfyEIigKXwo/ub8u6NMoy5CL8C1mevJFVR+nC/puUs= +- hMk3LQhWkfuXNYw2unI7oK/9adGVb+w8gUqMrl9Cb5w= +- 9m2pFu2jhG5z3LRlpTRJ6mK+6E7gBtIT+W7qIrp88cI= +- sNHYf2isKpq3eWoVMp+WP5VnwRdBtVXJCHN7nworOHE= +- gyjU9lxK47jvJ8RrO6PE1KnMooFHY+H42tXEmHUYRM0= +- qg+Jt6bMUEkJz5blYSF0v0FkSW4vDayV/pD4m72oI5E= +- Qsw5oRYOVhcdQubVXdGYmiaV9BVk+pdJc7lGtycurWk= +- 1uDTTvFjejgUL0Lsutihr1ucJPvLSUn85BfVtoFvn+E= +- 6wqHGdhOQbTK202gKtqp2o1LTUroEGqg2YtG8NO8Z9Q= +- rOeq8Mtlx8jqSulQ5/mj3lLOoG50T6PhbPMzoxnqI4A= +- uNnCbH5gSwLIPZMnbxBpK2WlDBsHaotyCDWWlDNT45Y= +- QYnZzhtSlVn0BfhnuhvEUTB6Ne7pyLXq625kd0Exo0M= +- 2EWqBsNpfWVkPqi4QBaBuzzBxp71zyOA67v2nr75rSk= +- G3M+MIlxAqhH0SA3dg+DsybIgaAdZxm3h5jhZiQt3GU= +- 9JyLRDWOrItHw68e64HA3eHnwJ86KSDCv2cUUK0qtOU= +- fcPowzD52NZ6BN5pB0Fy8NM+xIX7jIwAPjPay5b85GA= +- toyIBgi9a2ynYLkXxVAuuRjvPaOXBZ9nCj1iTcjT5As= +- 1bc4EUf2+7NIW3U14KSE0TYY4kVU+3xZrHw7XpBc/6w= +- "+7YzeiunXQieHr/z7S9lv4MbdDk8mkhnEV8Edniw1jk=" +- XrnA9+XoI9mVRUrWqssGEm14eMFQC9jFE2ajyZ8nVkQ= +- 2VHVPEQIF8u1Qq9t7SAClrs3P/ZX1kDhcSPxQjvII3g= +- dV+dVRqCqD1HEiAJ6v1Jt+X0K2mkOnZlvOHi9akM/mw= +- kjJY6dCVl/bvKW+UPd53xoSrvFdC+b8qZ3tlHCVJXrE= +- zV/4GDtZysW/WCSVXpfOlAbGGevxzYy0rF20VTHqq1k= +- 9Q1wDLNwCEz2dV/fOnwtqEEDRHlhwqh3tc6bXEzQqhM= +- hNOsZEbS231+mcrL8BB9XhIfLp8yfh6eA3UdCW4QsCk= +- '09W5yjMpW1i+E9XKVfXqof9TmDfRL4EI6ylgQp3zb0k=' +- tMqJ/vQtNtll+qCpu86zr7jgBjMbtJuB06TXN09+c6o= +- wnbjf+Teh/AdbrvM66BzmtZVjTsQ0dO2aTJWaZK/bOo= +- aFzsvlQHLG+Ea9MdxbVaCFzf+/SoBGCAQjMFzgGLfzM= +- YZUZiu7FRXb1JHS/kssC7BxeEX0d2d286wj1v8VFoLg= +- TKMDo79933voZSAx/wJ/NRlzogXN2vv/pYB1D2G8k84= +- 53gMeUMuI4wj1nV6QOjj0A53XJrPNmA6glV80Rgki8g= +- gSzMPol1CwsLMXeL1GwU6r9FpN3LMpjY0MlMJjkmhmw= +- 4cbUfZ1hsJ6X6ujripG+jfEKMHbTqX05KPxjcgb9eXw= +- UIC27nlODwzAwV13RAZD1vk8kiSxo2GLRDviArS4Ktg= +- H6cEOfzFdY6pcHkb1KHZKLPts/vEtfAG1c3FlH2mHqo= +- XHMEZ8AIhr8g8KWhDBUCiib5b0KyBpXE08c38zmJkA8= +- "+6+OsUvhj9VRNSW8F8vLXNRuVUjvtrILij7nqhbQt/4=" +- 0bdlDOdL7JACz/uGgKrCDIpPK5TTl3k/27YNsLNKxjY= +- YE0lVFxbfFUgCZgXW+BKOSvE+/h/r3HwzT86vKY8Jck= +- P4mfRsmSgjgtuK+9978ECJl9esc/Y1PReb0YKCfMV9Y= +- Jho1Hod3zLldibplvhjT0zxi4HM6LgHAqg7HN/cF7O8= +- uBse+RNKjprW1EWH9o7Hy4GBfjfkt9Vl2ay3E/mCSIU= +- eppfzzzG9fmqnR9u8TDvzcLw84hQov09Ymz6XYZRuc4= +- EXavIzOMUNxqdhTsOVVdZTwLemvxGU6ae/kEO0zUDA8= +- B/ndCzddqvCYsHuHbN52OOfoHZxOJw7zk0KDxGtLLUQ= +- 1lSLER4HiSZ95uw1uAbNyMFtY073I/voczaEjR6qZ74= +- pqr2TzDLw2Y7l/xQIAhz6ASx5ha2Jr1KinXGgK9QuEk= +- LF3gw1HFHriB/tHTkrMu5RjbssUBso+GIy8/b4mNgg0= +- 6C9FLaahk31AezvM6wUDHpKNv1JxPeBruOTONNycVVI= +- x82OXfbQJK3kbelAc+Lnhjxco60KhBhJx+DgqKRL1Qs= +- up5iPCPNwYKyWQn+NPp0lfGA4O/WQl1egKfRxQIHt3o= +- vQ1VJVcNilH0/oOQV/Ukya3hraZon8KrnZRhEO3jB/A= +- 8CJl4/M6eu1TocJ/ZiuwUAbjeL215phmnSJF4rY8CZo= +- QeXui0zxuFD+K+6mvvqatRYqMT8ZB4lpIkFSVt4dCS4= +- BD3/jtpmIjULcH1996augbJDuk1hsTytck5SbjL91ZM= +- f2Rmw++qBdHIG44428Gcx+wFYJBP38OQPPoSzvv0Va8= +- nRuxL0RMPWo+GitttfzkvuYM16rrv7LVg2lvBpQy/OY= +- e0tZhpFXgDTPGYNISUTX0G2hW4OxmrUC57b/7JBs9w0= +- 3w0yIfFhFENzx4UeJ5GdK2hloiDDL/pY8UVS/1iwmVs= +- 3WKe49ZsPBOfj4GjVMfEf7WLtQPtNmnlk9I3wU+MSYg= +- SwHTO6L37X2vY2XW8qZpkK7woYHfJwEwkRATCqnAu+Y= +- 4Srnpzr0tPaT7Fm7pzGTvF+3Ax1Sok204R8z4zVrrAk= +- 8bXLgTwib9JYPt8nX1G//wpwwWLJ7oG9pZXg5dohPk8= +- v8xE9Yft5y0fmVqBtcbSs/5lm1ydvBTtCBkYpsuOZOA= +- gA9V9cZ9YD50LN5fTflWjYFNSPVoaaflwe3MGJSV0hQ= +- zUHp5AaKZXopIuEh71hmRvPfUa1GnIFaaA/0MuT8zUs= +- VL8PNa1XW1B71n6GBsmzi1kkMU5cxqUWUyusFLSlf30= +- V4ipCZbkQtXHqmUr9wx2ZQR7k2NAD0arJVEB0XUaCBY= +- PuKA0JbKBUa03IQ5aFWu1CAKfyPOoMOLvymw1QBelTE= +- z2iej/oIAVu771h2ADVTRVWiZ/XngABNhqFl94MaitM= +- iaKIzIoe/P/tbWxX0aNoK7igvamsjacWoVEERobbsFY= +- G9CjO2YFf3V6ZmBNYoqaiUrUZZs6pI8Xnk2+ohJRduw= +- ppbfU1eocdug9wfI4KN4V6z2i2aqD1IvLUBUs6nT/MM= +- PFpNzG3WX/Iv85m1J7iQ4fbCpLR6qq8XlT4AxD8qgzY= +- 5wr8XPsKoWQ0rs3miE/VDjhCjFhVsFPoi9zA52uno2Y= +- oXNEBirxwTjRze7Dwvr1HxJhSbN3cP0a+SB1X6ydGbY= +- dirK9hbBeg+8OTR+xVxZPv9UOjX7As5B5L+bf+ChmlM= +- YuMlrAzMAsYiw1MXIeM/hPW1FbXLpTzn44weunB9ffU= +- JsonbNPT4YHFVucfgh4EVFHnubC6friJPmKFM7PUuvQ= +- G8Bzln9MJPAA0Pw0AGz43oN1Kp2P3mgnixjAM7u2jSw= +- tb0SR39RKBR+eZUSoR0sKIjUPHi1v5oM8+btWhiN7qg= +- bnF/c1/DitoPiZ/Fx9KYASYElclUkAqSbPsltUb0Bb4= +- bcgJC9npHLkMh5NEnm1Dqr9Pyxw+3KJmXlnn7S/dbAk= +- A1XWPNs8DFOMKN0/Uskgo+8YuG7+q9ChQzTddlukzTk= +- Es+qMFpp/Wev+fIxDWw+5Xj5sdsuzNq6+9omxmfrilY= +- Cqi2xlkcI6KF33Yw0zoUHyaFlkLA34U1IpV6cN1LEHI= +- nzQoDT3AZAn3xELKJONsuRRad9UlLQ2XEpRAgRkDhtw= +- Dgxj1SHukVhcu3WTK6mvg6ROPHMPIpTrnmmL7csuPvg= +- VIShRcmf4S4nZh1Eg3XGordgk4CazOG3XzflGjXIz4Y= +- MvCyTBIhKX/78MVdzd/uIH1SUy4wx8gyl5USa9V6x18= +- 9iIS7zck5q2bda9+nt/hQwnyXe8lxqvTprCNfyeeBjA= +- gdSCGWkNAfz4Y09aILE6+WUlESLaQiVfxMk7XwE+hLY= +- q+JJlTgnPUTz0NdcrgyPabCNT8QtHrTtNLy2kHXXR1k= +- QxDVliC+2LZGz2zHWATr2Zl+4jLrhGSDCOyLWozKTyE= +- 9L4R6FKwjcbulRdtlT22jOuFVNHDRqt9pDQ+UyyVB5E= +- Qag2Xo4T8PM9RE4yNjQ4p+7ReC5M6mWX4xVO0TzKdtU= +- cKhMnf8n+KcAsxQEXDlR4hD826UpbHod5sBA4McgKCU= +- Am+fX8VW/lrI4iIiX9pbApTcCnPaniwgJYhI4wEssXc= +- eitJsbkIghkFHCVswBRMSaU1p8OskCwtSGXTfPn6t80= +- WE/0LhsjUw2BJmam/lIZrhqMPKfFr/ekVNnE8L7lpFQ= +- FSvuKWVq2NvIdomdMn2irmUv5sWFjKK85GU7O9mQAZM= +- 1B+G25rEHB14Zku4WhxUUyKHrmr/k5XXEaHLbuADz8c= +- 2SMbiYQ0YekD1ThdFpra0qIs/uhehHFAtGtgX9DUXew= +- XzvLKIoRHRR6J+ierW3IOBeiEkgID16BxKKUxh8uqD0= +- PZt/z6dzA0zRN1FkWNuY8NNDCKcbBNLl8rQG5+awGzM= +- SWqe8QoY2aeFg31odWyj/imdf9/7A7xAyb58MPGNBrU= +- Pss0NW9b0ORJ3osdIT5re5xcRKvfZvsDaAuw4cr0h6E= +- qaP9oMZQ5csp+VO8gSxaAO52zUHsnAHDjag+DBe+89c= +- F/Yo/FBd5UXHTwfF5CJUd9MsVfT/+bH5T/iiDc2ZN1k= +- pdFt1MV/XPUY4JH8KKXP8ZvZElvuBP/L/o8lOkoT4Rc= +- Nda47X1vITbTJvFKhdMilk4c4kKeXFeYmPavgvZZWqM= +- AgoVQdiz2jxNTMH3eXFbztdhjXt3yiK9MPvIfR5LB4Q= +- cBekOZIAIK+FuK8Jy8CHtdbah28ZqCEJoA1tpB/p13M= +- 4kVnYOBq/k4ezhfz2G6kOMytF1ZLCrOKkBLofPDE9IE= +- kxa5+ZNZK/QiF3UEbFbVcyHqmdSX9cI9U8DGL+zWfCA= +- i5hrfWNYMYnGVMu6jM3G4gPajVbZSFOgik3hF8VU3Vk= +- ZfoctR1UWXHw6U1gzxVGWHpxYTvxU9GX8xEBZ0/8HD4= +- pL1PLWd+iU2tJsoUdyHvqopGUbEnK1BDPC6by9UT3ug= +- hR+KGBj+AEcR2J1DTKg62YAHFPIzGPnjOiEea7HLWGY= +- GNwNsZdbUBmNgplTZK3FH7+OsLAnkOm9nEfzMzNzwRQ= +- 1ASPOrfoUxYrsCL00zvZKae1lMm5w8nSVH428NMcV1Q= +- QA45ut0Hm51jeEuCm07sFF9CGow3toPNw2eHH9jeXwI= +- VK2nDkPXft4zLxCZc9Qf54yw5FNhNaD0IhEaLRT2G0U= +- 1TBOOMkjLdz/FcCd17SREzzQ45sz55NwoFG9yhft4LU= +- 21BCTGvV+h32xoHNGDHAB53bTE4zsOmZtKgA6oDT0eg= +- FcYu73WzNHI3zxI378IOk76fZJiPGze0asDSrzoKCCo= +- mDV2+NY+1JBuFvgdKluLCEF6jBb+xCnWo/DWHnInmRw= +- dqgOLFN4O5GO9RUpV7C0gTn+OID2GugwgOEkPPXbJCw= +- 9BbpKldFgFjqGYqHe7nAyJgYwISH379DwAsnuFhHRg0= +- d1omnG96DE24RySmx7y+4mbXCvg2bxtpzA3nTpAVGzk= +- gKSi5MbogaGZ6t6JY0Qrfv6lMemDsNcP2QqoSBV6LnM= +- o8VAd73D/WVLjoUOKhaxWaOxYg3XqYDQ+cZTh+W+tS4= +- Ats4p202ibznvMvFcIwuyjK+rnKZ8w2bwrbCwS/jZ9I= +- n8WyMJ80ursSr66rqsbrqXGI9g1zzgeMN7rLbMoYCfU= +- lt16+OX2LAETtywYcfXd0keBol8N7rnu6HMs+Do0bxM= +- rri+UCZfdlDwzM2QG5IzRPOI/S2hrw2G86zoM9bF4ls= +- iTACfTsOUILfZAUJLWPcBNaIDtbaNhbDeTxdx4XggBs= +- ukHeygR7Tz0XezkUqwsYSssOPbp4BZh5LK7MNKrOXB0= +- xqqHEBRXzkoq8UDDu6lp6MFgobf0yqNjI1NuCew99ok= +- VFeyMsIYXU0dYG8HgMrUHa5VtiqwBdZyhOx8u4DOk38= +- Zv0jcrOegIi9fIN3Wc5yCiRLR4B3In5MYmE+dfsg4xQ= +- ryi0mJqp2kgiD9ptSks3zxhYAnqGSG+Frize58lsO4M= +- 45qnPjeVp7QEOBksi2i12IKgIX65cvW1zwJeJC6+wrg= +- awqHnu2rNFY3fabYUUONWCI0GVSJH2/UqJ0brf8fcDk= +- 9SQmZrlI0IBggsh2DrSoLMun7NvT/bkztlKTYTnS0Ug= +- rwuyzh3qT0u05o5XI7nhDbTe3GxhU9lgCo/MQM/n/ec= +- 2oSCAKI+IrvBVVNgEqRv0nTzSwSY5tQ1RBPcF2ZxgpA= +- "+5Hw/5q/SF51tY7sFaLQv7BS41LCHSaQxEgcJFMFVJg=" +- V7g8sfGHy5AHupI9pPev6s+VOg+bIfFETJtPDmYeqjQ= +- YplDLTvFZMRgRaXdZfvd1NAFOedqMj/uk+r/WwtbWZg= +- T9emxoQCM5p/7A1FQX0zndPMBY5+zM0jJEC9a4r/0u0= +- Fi58rA/Tx2f5xrNAIiGF+fI87/MGbQeFTSnn27zCeg0= +- 9Q/Y2bQbNKP0rZ/2AZ3jHDWLhQw+QtNrtZjvzIxrRes= +- kUHm+rnti8YeyPgkbhq04LDcq+N/FRJVOlS8mrF6rE0= +- MjanJH4Q5T2+AenclZ4GmNuAUMjs46wPx3Ex1pjVXPs= +- MSItmXdgTekaChz1pvuB+5meGTAUSGUKGOCv4rsHRNw= +- E7XiBiApa0tAmI7R7LzKJfoGfpIrv3j1GZ4tSVaPXJ4= +- 6pd03DfMw86YRZdAFd+Y3HYCdAYshcUqKPrzZLpyo68= +- tWWeyeWbG/JP7QHj6uAzXpBXm9NfpDD8/+kZ1GYgLuY= +- tyhmfjsqaslx3xSCsSaAGFGb1qQwmL3uSCYKZ+YBW2s= +- "+YCu6fHdbd2JBN0ZeVfyh3YY82CCArA7nlSBpXjdmz4=" +- gbNKku0M4sSh0oW8ZWslvObud1vQ9DGWyCu72wzaDvk= +- o+GBljztfjUxFAbOcQ/xS5+QeQ5UiKcgrxZQqZ+mzlA= +- gP+usTtGdcFs18SUjMF3RDV+CuIXRsXY975L9CKeWv0= +- QXWMb1b/tLc3LGZGn+n4aKbOevB/+ruSxMRiLdF4hWg= +- o842Bu7jIfNkDbodLvVd0b0solok2jzLtrxpK5EbZrk= +- Z6g2Q840puWTvfLDpwaoDC93ClxPLhzFBJBz/XGvMO8= +- X3NlwKecagWCwzeY+tskWNxCotYcxBJMTjDGjeqjk1c= +- g7jhTMCIzCMI+SPCgPfOv6r1zj2voY4UnUKZx+ar/Kc= +- WGrr1Ic++0UEUZev7r4r+QCciWO8YhUJfsQ1C8C2EY8= +- o+LuUFpEf/vZIoCcFP/thQ03+kkD+TroqX3GZM2o1tQ= +- nwwTiA5Hdl5MS4bA4nkQtc+rwcYAM1VfZt48wUTGS3I= +- eaSP7LYJa+RhTn79MnsoHoIHTjTco2Egl0JGcKAWp+s= +- Y2Ll3tE1hMZAKBJl2W9MOjP4I5vDihRRnhgL0y7z4Rw= +- h375BKppyh8cNr4P34iiX5u9dt/f7pWxb90Q/cTPva8= +- qJVIpWAOY4IZdbQp+bBX+KfxyZp8EKTp8T3Dm/jBxD4= +- K52FoFWpFrb31gNF+q2ebBThjEGOKfYx6PdXzU3wx5Q= +- OvVBi3ZxK6WsMy3/HyWt9cSTtiv4D+pUedStSn5VKx4= +- 6RyM7a8vUWgls8ugszfRFa4SHMPXk0M0/d/6qdcHdKk= +- 5LNp3y8bNN5eNR7u8+/9aPXflqS5PgqY7JBHmXXkslY= +- 6EYd7uXthXVVQ3GyIjzRNlLR2OYBVEkO4BNuM/bjS3U= +- FZ2FaGPh0J1MsI1LBs8xLu0w3sspi1vScnxX0HYOt/c= +- 2Kr8S4R8NR0zb9o6x3niSsky30WHsBm0+arNZ0rZd70= +- DaC5Q/MirXKtM57JuFkkzGNJQkyxB2b6+5kn2G0GqT8= +- auIXFkoeO/5cXIm0JgqiCmD7tzUCCztlKnf5zDyoklU= +- bF8oWp7b2r38rPqNl5nWyWcdlpWsfTRonIN9N3xaSU4= +- QZTRcG7R9AjV4C1nJ3cBn01ThcdmqMbKisujFn02p7k= +- 97zS1ONydvS6VyiLOwTCmDhk5bi2ea8tNrLn2CUmbtw= +- HDEt1kJqFme+0KVxKJfIZP9JdJqY7ZQ50iYXzqvPBnw= +- AfccmiurLBSDfWPr9DlZj0BYwE/WRdEbeU5wxpADgIY= +- 0lsbU/7aO9Uph0Izi0sLdFZH2HfdOBEpvSwK6v6P9kw= +- GL9u3ISAzzrzxIgGj85uNC1L1bfssk6ZHd6WttiSYO8= +- SB7DEMKnfFKmEYLEHwy/oK0Qs7DwpEyvv+yrsjloFu0= +- Hju4lHVvjWK1dZyxu+jlKSmSHuQKK180FHqZ2COtT6o= +- i/TexUXhBbtU2vz+ZDa2eri/DAHXtXXYZYEGYbhY2G8= +- cVqXSRxqOrWslm4feslCvlkThdImxk52pVAmxr026b0= +- cW+f+Skxx5wdTiON2hWnvUE8z9Sn+lGu8pq8pE/SasU= +- fcrJGqyR1+UTjI0SI8SpiFD/xXv+Nqjkpb0QEn2J4ws= +- 9kSz0HcC3Ivp2MLuOnB6JQwsi/NFD9psvBm2eSLLDlU= +- iTUmIaLltpiirM1JlYvaUO6XyN+BFOxUjLZltMLFjlk= +- kBWzUCohdZfd/4cZOgwhn38cfKVLlEsQSIzNUMdyIzc= +- c5jPEPKa/XFe13sHnLv6RyJxz9jkuni4n3LDRQMl+I4= +- "+m5eWhiorxa5gjJI4y/ofZGlp7AODkXO3BYKLCvMf/Q=" +- khBIh2d60id47Zg5pBOqN74MXHLV22DFRstmQEndyAQ= +- h2jO0l5jbt97LUoH/H3XTWbE6Ji1N78Ei1eJlO2RNgk= +- ZnjUPnQtPzvgGo3oh2GHwAqfcWJCdEgiYclGSeb24EY= +- FuU56IOiItEpBf56W6Fjj42VyppkWcAju61e9fk4pxE= +- JD0CPMKyqDLpcXFEUWjdYibwZdz/aROnETWM7l7Cqdc= +- SdYhMl61WmhHb7EHtticw6N/kxkox1I5haKKny9H3s4= +- I84H/ofbhaZp1XImnECkDwdx4YGjnWD2CGUBoRLFG+c= +- xlWNLBFoIjQ+AnLZQYJUzPaW8AWXv5bBACbaBYWQrOc= +- 42+r2h8DYMjODgmY8kKCgC1K1qT4Xbzpcda58sYI9MU= +- "+BWuYXw2Q0boxmGwenoTffCl05wRHt6WGI4GQdJieTY=" +- LYpBMieqJ9LSLIDPgXVAni6T558LclLWfPvdzBNJZho= +- giNKPeUgrEPli3r0CeKC53llyuWoZt0HtwFyLiucRTs= +- cXmwswmIAcK5Y4EreCf2fxOZ/TygOG9PbcXxsz6a9aA= +- sCToQFsSdTvT0J34RJHU4RQD/ZsGq8PwI+kL+EWBC1M= +- 4JjH+yI9EEGWqrcpe0c96TrFOMlZ7XBfZpLMh8XSYNM= +- 9xApE5M9PX1rBdQBzPXB+MuQ1ZZqb9fN6Vbsh+BJ/P8= +- JnXnMonAdODGstdS1IzfhcelhpL1qijULnsfMTtPaqI= +- jSlOtVbffmLqMr3GUeaaaA7NnBBc7TYv5Ayb9hdGehw= +- 5UaHxy8VWr+SWWbpO2Qby+axvfec+AduYH+gbieK9eA= +- "/MoogEXt2GqYTPUAf6oQuDh4QrX2Nkt9pY6sK6lTJ+4=" +- s0Vk8cTNHZjcJqqk+IjjAgZWAzrdTdBiCyboIEk79cI= +- NHyaOpHO7pYGU9bI73JEBfaJYnnOctjnf8dx964rC9Q= +- nbjNaXqJu2baamMcwu6EGAoO1v3/naCuhOdbf494MOE= +- eoJLt0+yFG+afLAKK1mcu5uItvTSxXSwiuoPW4dDh4o= +- M9c+I0EcWTJyQd8cbOShT1dptg2w6biM9p+GTAXdZ/4= +- Vg0j1/Fx/ihnGKOFq0QhlyNZCsuVwR+CkmlM5iDajfw= +- C30K1mM9EkuXx033yOJFXEBIyNqSjeo6DP/16AzOH58= +- aaXXNYgsjGEq3hzuwX6f1EALUDtQDKLGuYRIK7jQdg4= +- HShxXkzXY12uGTOx4ImPdlvfrgAANQ9KSBcFiCEPctM= +- HIgWjFJyudN9Do77V7GyRgd+YgkXEY0RZliTaa+PHGI= +- GIdiR+YMUcHTWrhZ+LWkgdng4v1C+6zfVaBTQfW8chg= +- 2K7MZSzk+zxjCVIWyxUnzXsVmWDapTdn+5aEB6X2jx8= +- Fa+JUMiw7GKAuwOeWiH41mZbLdVxa+2Q14ti+tRT+cY= +- 9kv4GlMVwykUFZhYHbNkDzONxmJsB56ufYLq7czuHnM= +- RxcveXp13F/BkzxPy0yYHFuOtMZgnLXZNxx/VRgf5Mw= +- IDdk4wB4PCC0twk/9Mdt6DYVzjG40inppvJRb6elSdA= +- Epi0BcFr920vm2IU1aAfRdjeA88cfaHr6M5d+KUf/NM= +- "+CQSfDnPFIHa9HUlv6l+USo2z6/lcdJxaZAJsa3L7lQ=" +- LR+dsTkgat4q3xGpJnv2vVUaWrkirCDPluT04xvgji4= +- W6EC3ISSkS/M9TG67yX5Semj62o6uDBJ+lxVHot2Z0c= +- mmWdFJmQN//6NRo5ixo0lTTZ3xzN6WUzzPHlBonO5ZA= +- sBDvM3p6HFonREs9pKZKIlJm75Hwz/jtjiYuhzUzAOw= +- u6ZU2f4KeHwyzqW4bA5IKnpS69l7OeC8Lm6uEwTlVFs= +- 6QDwwKQKGJJ0sR37YPC5F0iO+/6rIpkamMEQen8lVwg= +- 3YIHjDTrf7OsPFA9Z2TsjF+MooZbOv6UqSX3GdtXi48= +- 1dOvShDFrvCwqVUgMCF/naWJDnkMJH84cbiS5d0KTCg= +- 7ii7HOuIkrxch0wnz2iuyMfkkOhAVk+swAps37V5bRo= +- vKK0Gisl4TfIP+40ave9Hg9SvVYFg8oHobQvmUTFxQs= +- bqDipIQpzgRDvrRw4Echa6N7HfnD9olzuW6HctVPFyc= +- 87LOGkh7yIdHToWSf6S8yk8/KrLp71MLMfSERH8eZSY= +- H1qP501tMelooNzDNBrzxv4WJ3Du92BNCiCUn1RpoQg= +- G1hD930uqmjDSgoVMYenTDLfhBRJDjaLV6sbpnejcPc= +- vFXdOEbjSUCGcLb0Z31Dl9IOeA5I0l3enLeMZdI9Ig4= +- qN1CeE8F6Wy1MwGMzgdZXIah1zG/Jijls96jLN5rjFo= +- NwCt8fJfq4ICwTQ8SwtOP+xwbVfK1XQIZGe4s93yc+w= +- TJGNPzGtAD1/1EnZ/ES2YX1HZdpXbvzDa+HRqE3lEn0= +- cORI7zCZ39JII9bNAplMrDz5AydOogp+me0NeHFRrks= +- 2h5n15RDgby8u6fXTfTR48YbRv2Ku54TvTEl6ddYKUU= +- BWyny2D8pzaDqKy545g/zhL/FzKkhCRaXhbd0kxMO+Y= +- lcSovp0/Ogrd7LHLowIqfu1LQtHR7PSBdsbDKowwhUY= +- hhZYOCrrVuWstzuJODp6wbaysTOADNyeg9DymyPAXRw= +- m/KW39XjIusEiH0vRw3SKVZ4HBh1Cuaki+fEywtR1hQ= +- 7iwhGn/y+Y67JiOmKtbWqMX94g4WcCE+0X/zds4y2bU= +- enrb7Gas+TRIXNiiOefjRRLdDmgeEIS5rTPG/JrvN6o= +- Ro/INJFJPAenQhAfLbbhMOHEAZsfOYYKlmEzf/q+L28= +- XLLY4J9tK0hZ8iW0B3G4QIxE/JG20wTQzY0xqcLIeiI= +- E0By80Z9cOsho66QThheQf7eBU0ES4bAJMOARRAntz4= +- nPubmHSw0H4evIAOn1asi3JiqbmM/blh55J+mY0g5nw= +- O6fcBlJU4uSSxMIr1NPHozmxdclv+LSkmbxegwZ0MgI= +- h7ft7IkEKSkA4/EkAAzxvpYXYogJ9QwQydjAOriRm10= +- "+s64ZLtg2b7KZN1ejTzpM4y+rgZpvB9BqgJzsmQ6D3U=" +- tsdLlBJQ1hX6usbxi4yrKEKqibC/NRLL4UMpYIRSWGs= +- CBWcgABdBLujocLHBEX4DiIH6jwYGgydE2rq8fK72Ls= +- nS5ipUvaBeJu4IteDx68VUVOPpDhwoDAyWKAnVugEGg= +- CGwaclbr99YVm1N9qzqKuJhNn/Ac16uinzELhNxyG3o= +- iqH3IsQodCsGD1oWkXjW28WeJKHrWSUsZlzP4rWz3D4= +- 6wzsIgm2BYdFAi+7jJDad1wwinc8DljXEQEThyM+ZSg= +- kWt66Rv9s+KXPTUEas+u9TLaOvprNCgM86G/uH9hesQ= +- NsCWWkxdabtW5ctqReNdRcVfk8kSsJYT4M0kzM1Vjq0= +- q4H44VGGpI1LMSNWLhKfEr17N5zqwFNnFD46ZAc8p+4= +- qKtnVBMGfwzGkm8WV35TYv9wMwyzGmkoWivNdbB/DXc= +- 5A2uDvXbkTJZoRo+uqgzStQaA49S/uadB/kQp0qu8sM= +- 1OFplN+QAuUylPiZcU1xN1kv0TuphvzQcCFNyF1lmWg= +- LH0LsAG+GLbUvzvhyQ8Ukud0e+Nk4cVLqiGKIeJpfyE= +- ppJjiajQpbvj8wbrsCxQB8ADCWecGeIqLfSb0AeRxrk= +- KWiED+5fu+ATs1vYeejgxeiZ6/ppNnYyvYm4/EBT1ok= +- xZC9YxZDJRaC4f+GkM2W6b18cp+y08J5xpBPpXGCL70= +- y7mmw6Nz6nDa9bsRFFGIVYGh1/mn4dxz4gpwU2r5zW0= +- MaiX1HmyqZD8k4rO6oWfqlAgq50K+/VtSYRi9smW5KY= +- dmvZYUwTssLAs6o5hEXFuM4tBsipxEdGwQQTW8roO/I= +- R0JEkFXeyKgO358pYlc5vOA9D13Hy+b2U3oQnk4Cce0= +- "+DHhrwHeGlVVeTNT7ng7319lvGLzRg8NGXW+RmtlL9s=" +- gqeSaiKPh0aM+U/T1a7sYhqj27vEZ1BI5XlAzNyocK4= +- GhabqvJZCzIqAAwdifMtXkOAjEgrTec9yJ4/o0bpR2E= +- "/Tu8Lj+OaGxnVMHEI+vz1P/AdVZpNu9alSUmzlrN1Tw=" +- JNtFCFlYDe2aR8kvny56yDIrcOm6Mi/+XgV0nVnYkew= +- M4NaWkqFZYAXaMK/XTEoTR/JnAYXNyKkYzFA14k7ZOY= +- wgUnW0A1ohzq2pffSt1mpRnUhvWyd/3qiW+LsThHFdg= +- Gq8O5RfC1GCKdoBziLyAAoFY3+g57bXG3zENs2KXAsU= +- UjryrxH/MVGp6vLzQCh1vum3GJwpZUXKMDnVfhHtI8o= +- "+416vYoAz91hRCa6lsAZ/Dnb0plO0Z2u2WY7RLEck7s=" +- KFZ9+bCO76fWPbJVlsLTZHa60xh4aLOXNuZ1JoOvNbo= +- 79LXCyBJhUF9+XT0YkqJK6EO0TCS8x2ZrUj934lJ7Yg= +- 7BDEAbi5FHrBcEH9em9VlMHCtJGx9Zdff45dBxWRgV0= +- OtIkdteKlvFmGvVAwGbZ3lRXr7I8oY8DiOJJiMl/C4w= +- 8QE7jJ496s5iwWLDQEHl/ANpBtgZVlxXz0jNYF2lezg= +- EtDjTRhuHPa/iAcG/S+iyGSFJwli4QY9zkFhwpTdXr4= +- "+lKNOt72HRmag0j/tI7wFDYD6i4K0AcSHDntxuOutWc=" +- dZZyIK0VQ4Tj+44Oy3315sCaVlyIBB/+ASFXS0RtgsQ= +- ZnbqWsr7IryMJCIVQlnl2V8ay0SGdjvbfv/JhRvF67U= +- 6KGZwpMRHP3sK7Ei/AmPdPswA/IKHCYJfgtQAtaRuTc= +- FD0cIEFplJdiFF56fR2XY/7BJQqVNG8S+wNtt4qjs6E= +- OMKDfq0YUP7UDyEK/5jZitrnU5heMijauHxBhdPVGJw= +- iWG08JO3dgJEmg0wGe64/MGvBGpcp2PH1cBAKwWGRqo= +- 9J77eQGf2Zrqez2KKlph42mryzmERJh4McnFWwAaA9s= +- AqSlUlOcdWlQq42uluJRSYgut1/uGn9lPKkLa9PXvxA= +- M3eq/s0J7Dfs+6ITnv6GIFjNfewRc6OTswslMJ+VD/0= +- sU0yDqbwqoN+xkbqeA1eguUUQWegjk1x/z3P7e8skck= +- vxQDxoJOguKT0uGRWfe0V7n2ziF111wlFwMmV9xHqos= +- mu82NB70vK6O3DzTmK5XSkbpFF5Tj6rtt2AVsX85bVI= +- 3A9/kGwW0cDYQu4N+4ieah3gAAm8GxI46xcJhcKq730= +- "/QJmOfpBzqr74fFY18YREVS2rlp9T2MZGjb6+QblcHw=" +- wBHpjgN/GfAifPdSdE4/oRR6lwUmTQX1BLRGx7I3hVU= +- f0yQ1ZwnMZY6GLviTpHOcocN2HIXblhkrreqigC3dTY= +- idl0O3k7Iq65qBQqvVn99M2r/dAXlsMb51h8EU4NN8E= +- UbdjaLOGgvyT1EEY0R5qZ1tf2nrbagkXdwwES2ORAFs= +- KyB233k7pf2CyYwTWq4fA9BEt2BJxOB0FIRcSg19p4s= +- EMyHQU9O7jBMQiBi3wRG5DUOEBzKy6heahHulVIIhN8= +- I1uj+AM3Sz+OsFZfpyoyIzl9EaWG/4CPLkk8FNRxdi4= +- dK8eou/cHJFC1w1Iq9Aaug8fYqNtBJwIlsdhACtISjg= +- "+eLq5ok6duQ8AvtkwfKCHAFnhXiPw1eTu7u+5RlSXWA=" +- WG/JejRLINsuC9UgSm8RowQqa6YMxIR/OZIsfueLyIk= +- wBqGzImBBP0QhmIgX8W7chI37ebdDWfF3TZ5j4br6pY= +- 9hSi8ysYuj2sfHynrCvwSBA3xmJ5G48fgu7VXjMMiF4= +- rl3Xu5clDu00j+jMY/WwHBOEVVmc7DEVo7wjZp4OZCI= +- wx1tBzMfCanGHHjQ0FXMye+NnXYTxvZiPans8WSOiE8= +- y9QnODWMTW0EHOmtAPoO5bj7YeuCdhPjK10kNjvQWZk= +- vhxs66sgmRRQclM/L/EC1HGzJAGGRx5Qz7EeydV0Tyw= +- 8EBNEUIsPF17haSWc7U0ToUZhJxIACEOKknsFb8vCCk= +- 2iRuQPCsq0d2wGVqSn2GHdWbmQep/7aiyV51YtK7rOU= +- K4OC+Wu0I8NwNRtbxh0QkN7gW7Xzc2x4IcrMG6qrWvU= +- y0Lkri71F0tm90T43ZQq5HVg+4PGlFXf5o1etD599JE= +- kjrONBC3SMnSd7Pv4vw+mSklejxk3Y/4ZliETrZGHX8= +- K2KZIQIc5c4c9WEQ6zyX2/rjIShbW05ekarhVSc0ZN0= +- 8qpu8Ux+mixcjwgZAv8wy4zdi+bwfyu7I+qdUjjrsHs= +- ORC9o1lrvQSM+5fUXgZ1t8wHrYmq4rPmoaqWs36Anvk= +- Jbf8hvC4YL1TBp20xA98xHt+Mcn7BNHNOTQJmYU8Vm8= +- Rc0Ohu9i7dU42NhzpzktNewVUPpWV3WZSG0XDCWl1og= +- WEgx6Bba2SWrvPXABszXI42B47f9CuUy9VoNNa2qd4k= +- PtsipqcYmlXgP/kOzMNYCKapEhyklQJ1YIQ1b0iTb0o= +- 7ANznY2U/zkWLD86M9uK/HsulnzdQSJLtrxVXb2vwe4= +- 2qAM1ke/IZJaa8+56XxSfsO7AI6ZZlxe1F0CMmhW0Hw= +- PCbHamx8rl8VcsG9+gumDBGe/rt+Yq58tb5IpMwj3+M= +- UCHCZQuK8//Etp2DjxLyfF1jkK2p8N5WLiVPmHeRH0Y= +- dFCUr/27C3ui2sCWHQA1ojkirThaDh86Cchg8Lsfbgo= +- '09Idg6NDbwNCyPRAABkc2h5phZwcXc7hix8knE500sc=' +- hW1ToavAf/o/53LpPijOPvUChT7nyExtEwHmgod9gjA= +- uWEYiUB7R9V0gRLkthQ4q2bhKYlT9EogvUGVvohNjVQ= +- Z8/b1CoVuAi/PW6CYqtReLH9+ub2WfgsHqOzEjwfiak= +- uIpUyMWsla5YGPVWrGxsMBxZe03k8i/s4PzgEOCkesA= +- IjV28KVXs9N2hcB+59mvrjDnuKYHrK6OgzhXJZJEJUI= +- Wa/IN6L5lw6xUibzaoW4+H+r3Kp8lGSBZrdChehdjN8= +- SI5BXT1FyWU4zobywi+IwX7UDUt2C1iC0J0oF0B5LFw= +- OG8al2VFFUBLW0STp1M/COSf9eYKNAeY+b3ly3FRbs0= +- QSh5A4Aq/ssz4c+3DXoohbaWzyhe4GOYbm67t2cFQcA= +- biui1ht2ZCtPXSdtftq+aM8bX4eOdIFJT8i45tY8Vnw= +- 73SOf+TseWuG5ALWU/sDHFNjOeqZNaUadd1jl59rqOE= +- pJdvHzpSjP06oyuxhFcG0fc2k2QFftBskEBD7nW4Kqw= +- vXyu+dOUam3/DC8LvF8A+RxZbnz9WqpFjoAW/JRaIGA= +- NLgP3gAE5beq692T8qzYi80IoEJnDsa2hsuCGWXMD0g= +- 5+2g3BXC3zDD1BupBgWrmcqnbR+X5JCynYXp1W5KsyE= +- loQSyXy0OKLP7Li3wl1obo5cmxHRIrwAyBa/rDhRUOo= +- Q1xri6TgeGKtp6IXB1ISOh67QAggmCuk4EVESJlif60= +- GFKL0GQcrL1bf1s91YU2GiBKfnvyfeZPLksZDsMTU60= +- 0K89kDKywPPcH5SRgk6b9rw54LzaRmj3uQHT+PqqEhM= +- "/QUh39zcgwUMmDha8DvAkmCm+fQcuDsy7f2tirg4rh4=" +- gc0eQspS1S/kWhrCAt1XknOcOz4LFDD0OHXg+aLBZ4o= +- Tvpce2Gv4rVpgyy675K1IwmvtyopMkPuN1IEm3wry2M= +- VS3SObO9ejN5sXd5vtdUawhZAy+oqFK4+58N+ySoY3w= +- cUHdXSeDi5D/GIricwV1Sxm23U5q1mmYGjZheHBBebM= +- pAcNhUD54w7NycbwbGKenFLu4zL/ncemP3laMl4MtH0= +- CQlSRfrDFCxl+G7r22dkRPguJD2KYR+5La2zUt+JwJw= +- TXwmVxIbEBS0aV+ouzQHkWTAwksGJHVVzFLCfJexOBY= +- ekg1MzDJ9LFJ2DqwR9DTviGIMwYreqk48eF2Eu+/PI0= +- 0b+EQgALTPG7J2jrx8wbOLRnWSBlQyXfPUkdHEb3yzU= +- fOKuosEMRJhVTnIeuv3M8G9jWOimUGxM8d5h6gOFjuk= +- LnejR38BfKPht911CD757PJiyb79jqBp13xHCZmRIyA= +- VwytDJsKArzwLJY1SdwiBtmkgNLVP5hIfzHr/HYIZtM= +- vTF8+wVJYhDbXQkNMkmRGP/NwnTfZH8L5NzQu72hPMQ= +- zCltpEoGVskm7/H9qZSC5Bc0q7d8bLgJ9Gqq6J4bZbs= +- aw0CuJ4Vtp2KlqbO2VYEpgFCBxQ2mpDrwR0psChjLug= +- D1mNAzHgQJlPwjvCeZ77FQ75AnviSSrFj7zYGrylG4Y= +- JALqMvj7UzZvl/Kh36A5kGkMAHngEUIj/6BP174cfhY= +- STZ1oVa99KesLT7cp6oaGWwPNEavGJXbMJ/QQkv48h4= +- rCDLBN/tvwN1wRnw5X+H9+KDE4JabDfoDKxJPvi33pw= +- zV4mTtNEIpHmcQ7MMpMyKsbTj7CooFSWamoCjdN5RSE= +- S2wm0bf03lNvtcxJZVpYDc7/25aj5drw0IIUEdhy0EI= +- xE+5czyLhPUjwOu+3aCV2yNeOJ3HfHE4Ifd6MeAK3f8= +- qbowz/yFNRspPsEOa7L9GqpDKQ6wAzz3F7MCATc8jVA= +- WWRenwk+4tACIQCeQmg1n0OlYbwUTwH4AzSzjy/xzOs= +- D3qXie6Qw+4yhuXm8/x0hM1BZVj1kOIIRnPEWdcipUA= +- V0xnzVabqbxHU+7kBksXOjGiY4Vapv+GmrzrrtRWNg0= +- tJB/oXuOmJAzwGCMostxZq71A29ovmlDeAlj7VVA50U= +- ct69uVkbwo4gRCyH9j3Ylp3HZemRBP8qugEji6bUfd0= +- IUE7WgFtaP4ERl9f3Lz2eLMyHD2nBBCh9rREa7ms3DA= +- zCokcuU17Q+8326Vu5ilGfcda0Sqj+KFvT4g4RK67SM= +- ti8stl0q3CQNLPi+Ebl4iBNOTwdcRkIi0l+134FuLKM= +- 5PNatTM76FFyLu/TPuzvGO+hUgtkwWcLbk5+7YUQ6gs= +- 1RqwAemqg9qacolVDN88kJN3cl9/Qg6cvzjuxVxsn1I= +- 3ol+dL8XntDtHhzuh8BALPbyES8lHmAC/S1iczj+TeY= +- VjHCXSghON8MJSlMVGswU13rN41GT0SscGlcVniWa+8= +- N9PqadyG56fcIJWj8dn/uzD6xa84UGRR+6mm9IvvoS0= +- VaDShZL2pWwQ/bqDnOW434fFWYYH2jVIpaDchCa3gqU= +- S4Pt0kr+SUSKDV5Xf7+8wPmQqBdOS57r2maRu6iFTHU= +- 6FLHOThm2Y94Q7OuuPRQ0XXF5K27vzcSt4zHo+X+1qw= +- "/eGn5aTtMl/Be+p7vTJ0CTciCZkIfqSfALPzB5XmXZ0=" +- w2EmYb3+s2vpb5B4aApNAwp1YVMur2jRjcbLhG/P8JY= +- N/v8Jiy5ywpL4UGpF6ga105iak1/id5cwvjaJ/YYVkw= +- ZiCTQz3N2gZMz4ShKX0RoTtKLn4+5+kGLfy0vk0Efwk= +- wfBEQibtvddwawDUicLKticxBpfyloIBHaeRJuwmCDk= +- gxiffGrlT2l2D4605xOyax//hFKIuoe+r1bBTEX7fsg= +- hxm74kuCWBe8MpyTmzaFGFpvRaGBnNUDBvkhhCFK9hg= +- 3i64MDKLJqprrsXJfKa7hQqcdl5I+zIkgjM8ykbMME8= +- V2eGvospHMuG7qtq3KQQRV2GNQLB+BOiLtUhFtrjKgo= +- Lin034mcVJgDT0bV0IwUDtZ6beTXoNCtntIqidFNdUY= +- oby8ETgTzyqOL4ahYjXCnGXq1ACtN9dJp353YT6P9po= +- k8+0ggg7z/HASOa6LKvBBwReKam7OG3KMtZmmaraCR8= +- Xtx784aAY/UqNNvTKaAVbXY41vsp42TpPSZsX9dO9kQ= +- 6DF26u/MGujEoj28c+vPEi8mz7m6XHz0dj6WwcOKbGw= +- EeKiRAQho4QDe5tTAKB1B15Q/+7V3+Zj1PzRWMRJbDQ= +- EgdlISAJmCbBtCebZEGmDxh/IEQi26LN6X9BGJFoTSc= +- 3mEhj9jIeR3LBHatXZpkgnvlhFkTosVz/JyhnOCrK+c= +- tYHaBeT+x9moPyygMJ5upfHvLlxNr6+/s6pcIY0necY= +- lT2kHTcnCaZXBPCJ+SyPIWcJydpMwxaj5xLA3mwEhDM= +- XzMg711BXtp4zVfoPfFIrIaQMuGVoogJStQf+F1grzo= +- OEVH/lJO3TPADRmJy4NkWaN2E/WuaDPNsIFC6vN5Gck= +- chr1URqt8dT0OHJ3cX/8EkPzaF1+OoVQBgSJ4y1a92A= +- 3wblA8lRJRbuWazTKcTqoNyjZvOwbKr95c+4GsJ8HtM= +- XlpEfLWaR8qBv8l5v8mBG57XXJFsG1YbqUDzzhaRIvY= +- TtvI9gIAw99urMVhGG3JiXVSXuHHu0sopNZt7TNh4Ko= +- QO/gIb7zQAj0ROIuzUfl0ngWXcqaIJawu+VZaJLkZ90= +- xIqFGMmHSG871bHkhnZrxji64LrtzEfp/0fPnpRydOs= +- RiCDuJcjzwZXOEwXOvBYWM7JatbdtDZmyhMMgjmSJls= +- Igwsc6/Wd19REwIXfR1nTCvqOKW6Dr+z+UlDlA2kUVM= +- Z/6IpRT7JN1jTJvRmWoR+ew/1+npxoaQLY7ZUZwALUI= +- dLPH3iZYCGJiNaNlJjFM9UKwod5X7d70EX02V0+VpIc= +- RHBMA4cDKVicya7k6urwkgTyGSuMe1lizsf/wwzPnsk= +- E8Z6ANi1YPjwlhvfYgJx1HrFtyTEGhX8eC2DfqtfMBA= +- SFjnhohcEPuRX9zAQs5vKXSH2aKZRzjHW83nugkb6xo= +- PHNt6UcdXzWi465M1HOMGqbpxwR3Ek1b/lYfLCBM9/U= +- PaEYGa2Mx6zbaGgLs7oMi0qe7KiWJYsa9IyDh9T6hN0= +- CmTua5c3wz4JpZNNMXFd1tZcT4GETzVI7cpMBVCHsLE= +- X4lJ2FdrGLsQgQey2h3joqutMKj0xeT1m8gsAlqAfr8= +- Npp2MI/6He1tnBlMVzPQQi6sTXv5Ct+/D3uqU9LiZlM= +- miWPCgosAZH6vBK9EUNm83Q9tl56sBzLd/vbZ7Eijwk= +- 63f5grXDsjWL9xFiZ6GFZvUv2Ohj+jD0jtbbD81inQk= +- 4Rao9VUJGNkhLhIXFma+7WyRDtNfO1YJDlMbORd80L0= +- W6zGoQgukz9UAn/cV3lJpQWSgYiLwP3vSl+0v5KxPSU= +- 0L/Nw2Gp4SEuekWgWvF5eu70a6LJ00cptGzWml/+u14= +- uECaZDYas+DKL71884vdxcDdp7UPfZ9n+7JNynrzNDg= +- uIbpAeN+oUkgKg89+AdPhMxLph+KobC/HfGUFDhjbVs= +- QLOEEc7rLusmRKc2mNWUlOGmSlgiPKEHEW5K5wz2FZk= +- UWuN+F7ZColcICwnJGfz1xnBBZD1v0BmIYcSEak1X8Q= +- pjhAosUkOGCq88/Tm66DUcvJQwMSAyD1MGIESuZNAMA= +- W+/b4B246In/R4vygzVYu+MQ57ZPYw5cx0PkjxJuGto= +- MDRuzyYk+13K8TSt6C1WdZJJRX8HLFd5K0O35UN0ZLM= +- zsKprJVHlkDHimXYrJn3a+GQMbnY+szAT8zXCGfy+1U= +- E9ClN2i5RUqOS0td9ePmJJBOul2lOeRcH2loV34hvTg= +- hBVcGXKtmYbFCpZovwwvKOE0Lyd4YfFPfpUPHNyalDs= +- j3REnyTbTbBRrwDu25zDDBByQ6NfrN3egc0jA7CTAtY= +- uNmB8cfDwk/uiG7jt3iJ7sgjWe2R9ZtXovXEaor922c= +- fnf1Ob1veX7/D6jvVNx7e21QznPcFqmhJtNUZ/iOgKM= +- TAU1us6mFxEFJsdIKRkdf9Vuh01BS9aJmPw7FAUB/qY= +- TGlfgxUFKkXlsruullDwzYNw7UWhpNHa019T2za+Jb0= +- 02Mn5cXJ3LcPF72WrYGRetK/3LzwUkc3itgD0dXQO/I= +- V1LpRrDinYG0iKsWR9AwpwWEU+bTvG7OkXyQhuN8FDo= +- "/aPG8B/A0FF4i2HV1NPwUzVK2Cwddzk29qyYpcOD/GM=" +- 7izx+iGXV+0Na8s2pZkc6WmUKu6mXSwKb7dlulVMXOc= +- vVIQpXLi6A3nlN6V2vUigwXVLRVf9Oy/wY1xpIU9yPk= +- 73R5z6Dy4wz7Z94g9HskZ6IbyDP1TuNOSbWgva4u0CI= +- dC0AAd+8OZc2vhCl688HjL2ELW9RKjBE4aax1SNQhPA= +- YkMAC4Ha+Wu99j78RDb8B8tFPfmKJxlvf1SanIACY1w= +- htHkWmkwHKK9dHxcfJTuQWwMjeS9z7Vro90SpJbEV6s= +- TW7qPGvfZlfYBXOJ3gcDEu7cK+8HTze+kggoKKkycO0= +- WCLotMf3s4BvtTy7HY1qatFdzYki+k2RSbkqFh8QwI0= +- NDx5He2hCQXpwDvMrrdUE8nulgr3sfIpH0rMmSXiBlo= +- To/gRsCo+x26il2YJYAHd//kNwzSECfOpT/Txly6NVI= +- uE3/JMFL+yLqIUs9+2dJHd3tYM4+ucw2+V5joNBL+PY= +- UwNf8ct0CV8nXyFdsmCVvZJufbBaFhcVWVI+6fqWOsY= +- ozx/B39Hi8WVQ4MeHhSSQs5/njwg11MHdh07pG9ABYQ= +- yP0XWU28OtnZsINQH5VhSfP2iRjfH+D9LO8mi6nHno8= +- HYs+NfMBpbL98wfytHgCCyELoBimwD7rfaWpWVy40gc= +- WnN6Q6CR58dBEocSmgCRcjzed/5VpnJrlWtXzu76b8A= +- Z3XXi79Lzl/d7117+hg+LbPFu+RhwZa5iFP8sksp7hA= +- xunikcc6Y8osIzQA/PjzdxTeBORXo3+L8IgLd2MJm6M= +- eP7n1Hx2SOW+imuMQ13B+xaI/8FRwDvpN0OJP1YcCLA= +- uCHgPBK+MQGfR81vzkSM69P93ZTcfQ3Izjg88MTpV6Y= +- tc37EsCCa1fGam6mBs1vYRBYZ2dQ2efV2yBeZ9FmFG8= +- Lltkl52jZvqV/EHJG3AMRGWoyu1frel1bVro0GU5M4o= +- sPFezeZ8wElWez9z7/jAonA1SnkFPAegRieio+SS12U= +- 6yHQKGWk9+QIi8wGbZK4DE6KNXrxRdCjS57dj++elTs= +- eLcXtq7uj2e9AGoTpxUPKvPPjPeJKp65kEPkXd7XwMo= +- "/nBgtUvu+ySTSIIeMszoOQqA9Y7/7h6Va+968A+zlZM=" +- pgK3fJGKtbXh41H06at9bD8pR9yJm+1S6uZtEqT41FU= +- Q/QAq0tsZ5uDA646RsbfFpHb8vg4Rplum5j9q/D6yjI= +- FgBabr8QYwDE2jaA4kTY2nDgRqnJRGKOoHtToblpuIQ= +- TSdJF0SqZyIEr5sgNoIbu6luGPr6J/yAoQvxJSbmeNs= +- u9ADSz6aprXfU3U0eIU6DCvg6EtXOJtsoVwgGbzOBxg= +- WTVwzoH6hzLFcGWrt2V/XPh9WSO8fdKeYG5v1hWejos= +- jMe/ZxeTKmsTthjLAPpaPt3XQpZ14ztossHjt6iDCv0= +- wX562p4JFmXg4h0eln5KETdlZ2mcqRtOA0WYHFUv3iw= +- G4lNxLqDh13YVlldca2A90tIkWa9mqWJudU1NUduJ8Q= +- 7IN1novHX9uk5BTqpf2cVvkbOUXqT6Z5wuUsSmHl7Q0= +- UhIvADuT7NJzWLVdzxpoCYwYIhcr+eqwz3Kzz0oIl4g= +- gciTuZpz5B55Bse4iMTLoproIfz/EVuFpcMZf8WDdtk= +- PujF/XbxKS99NVivNpDO3Yd8GwzI+PVAETB2+gEZXhU= +- jG1TpkCl+fojK01KY7scOzGx79x4DqbuITLaiVq+jBs= +- uiF2euSUr+WiFl3LMzjFMj6ZBwUONFQsQF1XXMMb9Sc= +- K4++zHdomSEc1bX04tSFrVXlUPxyf2UqJVYoqvz599A= +- Aqd1Mv028ktTJURaNZK/zZhPfnxXBSy75SSdPl+OIpM= +- hupUmkNVHVe7allrqW1Qp93Tf0RwJ8lLUiMvk6b3h9c= +- v6vKdWIjkFLpRJJCz3yla+d7JXXOsZavsRx/QizCbRw= +- vrCzVZ9VxHiWEK0/Cj69gYaPPL3t4pkKI9YShjkfAHU= +- TxUOLze+obi3MKphN/BjwduAqaQArxf2sT7FsBAhL5E= +- C51lW5o6QUQqtUaHNy02Zi6v5WWB5R2CjFl/Sw30b7k= +- WopZgTTEPumc0lTQYpW4ZnsBEcr/1dBd3lPBF3TVhK4= +- aXzM7rR2t0gCyLgswTPtCIr5yzjqFXzhlOZ7+UzfWJk= +- Y31hEsxPB6aUkLkAmhPK3124AdipDhW593Z5M0FTjC4= +- fE1XbyzQ6Yo5l1xWCZ/1O6XzQqpH8Ravf1zCAz2gv6M= +- 7MV3mN6kqUxez3mBx5eqtSnZ86vwTVtswGp4Iy4gql0= +- m1KJ+ievuZuQ6SS+t94iuBcnOmxv2kbWNB+c6w/iLAY= +- 1TUy2NJp86eGkLoiYTFk0CbV31K5dl2Zz35ybZ9sCIc= +- ivf9wcZQyxDVaFJAFLHiMUvbn9XsPR0pYYD4yAeDHs4= +- R5aJEaPUCU3qcmDO82cNKbTTNfC8AxJLpka+F6ltb+Q= +- LIaALlXKaI99txG3KYw3stcVzbs8u4GMW/onSEIbnyI= +- zSe2pq+RaxGVIEzl9j2dgb7rQd/f6fLuRhwNksPdP58= +- Qq8gUosWDmVM7x9yQiH9tumeT2znoHn5ZnVWOAhK2lY= +- AdczJWUkVfJ9rRf20HFnvh6AQqa3TYqOUuV3W3zvuS8= +- OxSPw7CeSWTA9LCIIL6NCYb//zSJp0C60ODaFNS5Na4= +- ygn1obdhDORxgOT7gsbOF+oXiq0gv8jnZqfOBcpIrSU= +- demQMb8LZUsk48slwEo+4QuuwZB/G04pDVqdux7alxw= +- i5lqDCv5zvNQ+2adZkMfBsfCnRDXnCc16fhHhnrGU+o= +- jV+DUEu4N5d469LY/9Hgf8hzBzZJKa0F3YGjzVtDL1Y= +- 0eCFlA3xHfN010L/OFFTtac6vCbLJFJAQGIFOwqb7X0= +- 6gG625Sv1J4+4yH3uYE6OXLJ996nlSeH0es5wqOS5EU= +- abBgdfOwWwIyHdUkUTw39XCu+S9eAnJHw2oLc1mKQ2s= +- fKGoyGi9PnOFap+FDtjusIOU/PhGF3hwvy5XKw8QpLo= +- 56fxwHAgiKOqLutqJrhTfVsylhLnBbxbucWl/V8tJMY= +- "/64XViHMtkCkFBOWdi1mb+KMTWcycQw3ACg9+9pDsrM=" +- 3bJ1EX83TizmzylqHgPatX4U7ac0OlXGOYKsUswrDv0= +- JlBVhMZkNlsZmUoIiAdvAAq7ajwZ/alFGrG00TkHFdQ= +- XJf74lxPAwFo7xJl91aldj5mEVML9JPgqxwgIkpZ6DE= +- A+oPsoOVHNXjgnqUouAK//qG/UJqHQFfFZmpcKAZ01A= +- 9nRQ3y2t38qDpGXVWH00N0ZkgRWIq5zww+TnfABb1ag= +- WfndPLoy1s1TJGlU8baNQZqOquYlkgvU+x8eHeR9C6g= +- BypjjSLr6FNqUxMJcMh7zPN7+MdmCnIyPXp3na4meNg= +- ejlQNGC9FAcRqybRD4nu70LMd8Dicfip8P9/FGw6lt4= +- FnXBEUIy+hG26Wv0KwlINl+WWpuDF1S/N03NfqJtfyg= +- qC3NWWj7Re8enfuLIP9/ov/afwv/Bb+5VuoJiTz2pak= +- F1rGR0bFqBtOSUafYi2nerihZtNhBGZIqn5o6wRM8Qw= +- YteIPR/BZp+U7cov6ILnVtQnlD5ydF/lLBdzm+7FSKE= +- 37PhW3hxuFwvnoO/9rkHP61iyWS7R9wEyp8etGzzUvE= +- 0CksZdFoIDqBW96EmteWo1p6HaDnRjgRI9N4oMrLbSY= +- vQle9SUfM0k0Atf2uAOClifokFZekrM+GONwzvN7I2I= +- 73vtho1RQlClUbjliFkZkReeZzh9qvlCZczQung9Pfs= +- "/aXcPWDAyFeMKDBuz+KOg/MN3PNM5zOtyTSwAjSIcgw=" +- aZrNwxGjsNry7XRB4sEyiUH92ySjJ+aBUgUaGLIx/Mo= +- WoOGCya+sRMGhSjKWux3aQ7y0o01fhTzBfwv8gRnvaw= +- HrpL/XCb2lOOTTTEXmfjzo3P7QmptfTmlEi78B94Eck= +- yG2dAvSmXhGrCBvHQ4BHX28jRmeDZ/FAJEkWs7CCqk4= +- "/CNDFHEopQXULrWeVlheOo4JLYFVOBHvtCHrUn0DiCY=" +- F4Zp7+JBmLVLsU3vfAwqnXDe80YZ0Wf5vhjUwk+XOoI= +- 8GsputXV5UhoQNlV4tUqLhLS95awgAaq9xwnb2NUD4g= +- uJK9U4F2z1UPlU7+B64ModnjdLYGTngzkGsNZ+bCZRY= +- 4nNgC7kWanej/ou7189FZIvomc1GioTx1yLMXkKC148= +- 6Cukd0G1lqlGlS47QRaj73H0SLVQPpf4tk194Z+tzvE= +- OkICZ2mpuv4knNwHaTEjNvO6DyR4L8WIMYyyo7zjIZM= +- G83m6rdYBeTb5woDfpm7BYIwCDJqLx1mV+N564Yb3W0= +- ECLG8I5Bzt1EQajvOJMSSdGbzJmsu2FkYvbYsBlagbo= +- BCq3yNUI4S2aoLU8PNheyQTMK53FfhbuPIk4o6huwqw= +- G2MucKEqZnGWitalXjka9+eR6ZOW/RnUDFGoaUe7Xf8= +- kY4ZQWqzgxvPGIXOYhMOUrhxFBI17R5cY8UACvF2a84= +- qmdTCRaDzrtgSJihKpcP8aZajAko5UKNvmUKBES2Mw0= +- G8QRmWYLVlBCKMqqILr2T+9Xx5m8M3Dt82JVNGrPpEU= +- aqRecnXW6O8X8xuOrv+QtrwsD3809dMaatTq/6AQN0c= +- mKa4beZ7Rd4RGDhLRc13Ygf3sHpq2bw1Nzc+qrcay1M= +- Omfygcm7L4QQp8od9rTzrerCxKZFJPq5QegmukzHnKo= +- CcQ2IqWk/KCS5vVavhR1HsXYer/Cs9WP2EmTnSw4MsQ= +- 9z1bsXV+2J8H+UKVB7PWRnoDQMRSea4O41sEY6O5dds= +- wn/YqJmh+WRwe/ynRVHaycnzbg6uVSdgx/yNHS2PuyQ= +- "+ZC5bpbcTy1mXEY8zpnd1VAWskvFhz3S+y8Rbkf4wLw=" +- B7GGDCOGRcS77952ClLSjP9rlQqRTci/7l1vzRvkm3I= +- yjPMDESDo3r8eWZIAcIso5KJi8R/mu905wqg7CIJ0JM= +- 6atTfcT4ml0uopUY/Mc2I/YOxYWTysv3t8XzRFti9cY= +- GkS0XunkmiOG74lkoM2Mshq7Qx7rVhsH4G7oJFg0Xw8= +- HfvifWTghvqpoIxsGiZSaU5t5sTkQMsxTRW/pSn5cOo= +- CWunfGiLprYPqc0QVsYgYsDtA9/v0yhCbzWYSg09u7E= +- muniwt9o/Xj6HrOr4stCmbJEJbP8U+Wn5oYWN8Sw9QY= +- wiyOmD6lvDED9LFFe1JiaJCH/naCL5NIZrtHutlH6Ec= +- wvtodXwi6Yrblfl+YFDrY2gQ1BoQuAPlwEB8K33EWbA= +- aXQoDQoX/jjyoqUIp5xuaqEDWXRJrHSFlu+popk7gbo= +- EMZs5+T17/AwjcYMJTcT/JcJ21Ro4AlhkUKKSbTYu0w= +- "/tutQ1hImf2jrSbGkDPeQToUUfI40RFuNsMFADQfByo=" +- O7aKzLqLKKBg6DEaEN8peU6nvum4e9k+repgpRS5LVM= +- OzeOShB6quCGMPpVnXbBki4DbR5Ojm7Auy4wm5IMJnE= +- b1oDRgxSQ4OpvNkObbEtXJ1yJlKeZfrS47h5JeXV+zc= +- WLPC4O7dVtCuZKE0ncLsBAkNbWVoqiEbQEU17eO2UPg= +- iMuLmOpDkYXL+Hp4zq+q4xYXxiicFykBSFHJnNrxPbk= +- fGirhj+OUEC866P9Q+aJFdkG/b0GHxpQiESLB+Q3CGU= +- rdQly9Ji7IHwq/Nb/iNcTi/8o+a5yCxe/WHg9QPoTeA= +- D1VHDX21Iky26QX9VBGHXIrtRxo5sJaje5wP5DmVgGE= +- sfcB3lj1PLtn1htgmUkfYG2hXlapVgg+fNpBcY7YWZA= +- pLWaOTsQDvRXbPkMbLbjfpX8PHdU0VY+zy38vSmy+XM= +- 2V098eXuKjYbPU/h/bXxjXfykrWTXioAIhbo5QgL5bw= +- s6BZM4ZcXyx6/Vdxh6B42xFgppAf1n5QDJN47Zk0WTc= +- Mp8AT6P62rGD1g/PUOSZl2w0eVdIZ8uiIN7M336tU40= +- PpXzDWivkLsMJ+M8zrZ+kCyr3XW+Q6nsWe0ZOFSuenc= +- j/QYG0T5kcM8sQIJlpIgWMOvDEl47GZuyzY0TDo3UzU= +- 70E9aj9Nm+61rtN6enyOJNHzrjyXpw+EQRVsTgLRkiI= +- qFl8kb52VrOFcqUiD0YLNMFtGj5BSX3AbYMPj7eky+E= +- HPtynkp3VoOIkXJy75G1/20bMy3wOJwheaOhBMoDGbw= +- xXr/prilPEdQ2/XC/KosaDrubIdTZbOglePiMAWjBS0= +- VORjuy8gg2XRmJHkpJ2YewabhiyNjIodQheQ9HXWT+U= +- rSQFO5x7KSQJ8eW1DJcRlGdknEndx4HlwoU6Cs8nuoU= +- jwS4zLHooWcDHMQ8c66UEByC+n6GIv2ltVd5t/YNcIE= +- e2X3yKAnGh2sH/lBkxrjM7C+siK26w+sOkgCFnsWixo= +- RXfVTS9bA1zUDlq4LwO7xOeWWMm0OMCzcD2ilwxgBu0= +- d/7xiqwwoQPn2LH/TX9mgoDFJo//jeEpO5yIS4e8U+E= +- "/NBJmXl4TxyFF7t/ExwMY1Id+3vYJxhF9cFIupLXCJo=" +- 1p7a6RDy1cSlDtbrAM4VTlHYnoHQuQfk74WEncLpcag= +- 6J1pc8NiCiCUJN9XMXEMOpLwEmLn8cATkIs2wRyuyMg= +- b3+XOSYtdgILKzCEGDvy7GmgFV67CRk2HNhILfoJNWw= +- dqf+2ze1IAL2d9uAir6D8rIfZgrdtly+5/1VZKsMEAw= +- Ahcll7j8+9zafikUrWeSCpVxwMwyd6k0F0q/RqASt8o= +- e2FwtrxMCeP/k3bl7cPHfNOywswlyN1S/y2AE0N/mhc= +- DTYsLYd7mONyJSyIzcCQc6d+/qvdWMEAVaVUCmDa7ss= +- xA94FGr6YU+6FJJeUWg1Jj4DlTjjpVC24hLuoQDHYw0= +- MgMj98cPlwlhd+1gA6bJE+xmlp4trq0rA9m0+s5n1UI= +- ZWODJtf11frmxIq6Hc21bFc7zeGQK7hMBdphiULLkaE= +- czKm2dZPaiIV17hkNMwE/uccJQLWSxnBwTAde9MVPKc= +- lvKIbAoxW7aKFrxTFgRmE+e2Xl2nGc82c2UkE0As77U= +- YAc1a/gqXac3DGpmHhdUO+4tDxBIYy+jbC7nD4qbg4w= +- MzMFI53EsX8fo+GIHNPttDbfqm/QmeME0+g4EMrBshk= +- EQtOUBT4SSk4fILmnOy/y1q5xyV8IMRFh0euu1iGZzo= +- zdoPIGU+8ZLL/tqdox995uElnrsc/bg5vnCwZ2zxSqw= +- iZ6WX5Dl/rnlIVju/pxVt6/vhJ33g7ZB+3EHKJu/cag= +- 3bA03QL86Bk4JR6MD5HD2gO51olEFeSf7M4DMCmJpqw= +- 5rMBX0Cs4VKmflL7AzwSJM/ihRCpUaFT8so0ZJKdt8M= +- rgmJ1OIERs+omJSeReIrnrspAkrojDRZ5oEgkAALKds= +- HRsRdmAg+9gxCVT9xZpRZznnQNFVy/MUKeVykaMlcYU= +- vKniV4PdM+aybWMhg5Yrfbvnzl4IUCRKqWTWO6L/Mqc= +- vmh2in1QHjZ/rr6iRcLy8hhdHZQGEInS0s4lp6uqEjw= +- xnKjVLaLJIoPl/UmQzVqJJuxsk7M6/caT5qnce25bu8= +- eGLrt+RzFPXb5qNR8G5G5yxMDHm0mSXHPiqc4YsjVoQ= +- NBDYpR34zl2TOL/o/FGBYHGcn22++kT9Lbv5+nY6Vn4= +- 8nb618gGZKOrt6voFygJq4bwM8rEHhNVDpNM8xAz/2s= +- 0Yo97OBEoJSyqDCQp4zlna91p0FxQ16fBlhdYwL1W+c= +- I6WR5IpIA9uOO51krbijxdjEkAcfTeWoaPttWmMJ7gI= +- zPyXDiFzgKnwMoo2+kkfW+QmzUsQJ+QQ7OHYBKsp3wg= +- d3nUmFHIb+2Gjk9HSkwtvH5n3lUkYoJKWfs5JW/d/NM= +- D1wcL1WBxJ+guLsdYUSCsjaLGv5Rk5ehT5R5e9QTcOs= +- WLbiE6ZIVucwVVQ7jRWUOLkG2OWxZGe8TYMf/Zh43mw= +- 5uZ8nUl6f2cHmEgrSeqmjjKCr8axoNtyivKovIMK1sc= +- AKWPxlkyJQvfyXIKIpuXzV7/j88vtZM7/4Tsd2rU/vY= +- 61RN8GnsTjRkim/ETZluEESJtGEmh48H/0XuGvh5GN0= +- JAo37VRwZ4UhCB+dvRY6lGDcpvk4uwqbFY1DCgaNCII= +- zwIGN7B6upCyPGTdCYqmw4v3Ebc/HrCUVjh6KN6ekfY= +- 5Dr3iYt4kIHwGBaA3SZ8aP+L+TrBVa3zcceECdDk+KM= +- 2WIHl3wnoeB7HV9yzPlR99Ri20naIpaWfmS0R4mQ4BQ= +- Lok7A2XMFrI1vMxq2NdtlWE4Ni9TAsbm5Rep3eUi69U= +- O9NOErQWEyq/1QBMS7h7b7gMMQzZAnrXVujrxyqXXiM= +- JPhM2B/9AjVQkGgXEdD46OI1VpbSqb8DJ5/uLbRa/9w= +- IgxCy2dHjNfCZAk38FB5SqPlQLL5QDocs8qGA4Tri+o= +- eC6bEUmbhdVLOe+6qNOAJZSNGNk5nokE6MrjC69De34= +- CRt3S3OayO86+LsI5MYrtvy75KHJs9bcYZh+e6GPKto= +- 0vCSHeVPclrVv+Jcl1lMzylf3ECqcL7mSphbXoLY5ic= +- tWunK1yM8FDEnSVGL7WmCxiqB6pmqKSYXlKPKH3uwXQ= +- 0MO9Ew/OO+c81xPEVXDpQPn3q5wKkwnZDGF6w6y+p98= +- G77K6mlZNVwRU6PAzwPxnZnJJf5uVLM7YgkSBuR0Qfw= +- ys/VJEADRN5RLP+n3Q0X6izIRr2fp5pmgfOBIHPU4H4= +- Ytm1ayOp7hinI77UIlqxnkNxsvDk9MgwK+Kpdv85WhY= +- AyzBH+elfn0KRMfayhul10rBRKiuCRJwU8Q2kCOrb8s= +- lbOvMJkmFpVVWxKIawdYE/mkHJ2mKPIJLWI8QBILoDA= +- Q3mx0goFqBfW2pizSbe0U7ZwZRFXiRgp1N+P9i6k0KA= +- fDbFsPtrQ/o0OQdLxs8UDHop6rvQtsiFQ+zgDnj1+vQ= +- lTEk9ZZQgRLPDGt7QQpZZG1NTv32WmeVBy6z7bAOtu8= +- Bkf0sL/UmMN4PWlVYVmVmVTtpewByGE1J6VztMJsorA= +- ZvH6gy1hmxxPU2MbHuCc22USTcip5ZiK/KMh21KYY0Q= +- CZOPkSjQDZc/XPMYs0PgI2OKqIqT/Ycu2Z0hNGC3Vks= +- B/UxYgNn4enOIirL7fOq8dbh0w/bY3KkFjM1ZxWRWIk= +- 7vocfgyWS7ujpvA9QTJdQAgFD1AGLkPjvNnr9/dJaME= +- CXy2wyWuv1MUyE6oJScVxSHj7hIBTR97I+mRDnQekkk= +- AFSn3p1P3c04SrvFn+m92WoZJsNt+YcJEkwf8XRs0Mk= +- GF79TOh2tpjP1x7xwQMRV8ecumLFEFx14CcPGhmDBh0= +- lFcpmymsS6WpbHwr60l7GH0HRZiJn/V0ugGbOEq/62w= +- "/j6Rr7CldvpTwJy65BUZvK5Ln169vR/7P08PGzqsWUY=" +- 4WiJe7STV/YMW3SQDFofB8OnlqctvdeEOqMSkWMs1/g= +- nhXsgQ0kj9IDDDBrWCvzT9tTX5DRyTcDqePr0hJDbRE= +- 7unG4ZBvblS0lnPw0bVuBS3irc6N9fM9YGybu8XmsEs= +- GwHjChn5C1OhuILspl0oAsiTY3ZcktFtgbCTdjecgLo= +- hmJGfcfJ6rajldxzWw460RCCzDWV38OmyJOqjNhmSf4= +- MIlY6GXMyQ0cxB0peUk/6YYf4uZiG4lqgxxOk5fU7Eg= +- s8Ka6ltQyF5KjWEQ+e9vzkNzQP8E+nI7ut3sEdeiDX0= +- Cad/ROuOb+5kCrz6ZiachYW/wgVOQUUdzVqWBHDaHEw= +- unXNOeqpHsae8gSqB+v/0kUr62yg/b5c26gb1zH0dG4= +- X1cqDaQDsXqSUCef7rqKeXw4b0doEkexkPDYaemdSMY= +- M735BEiyPUO7Xvuu9Zc3xLpJpz5XZAuZV4pyEEgix+w= +- IOnBQizTRYfjn3TqyJGqckziA98wNCKTRZ3m+rNG60c= +- cp72QrniROkpozj6e4ObFwg/l1VcjYq4VaO7lBYpkRM= +- rdx+lF1hLa1sLuv2LVpyrRiSOv0ZWUN1BnKWcQ1WzNA= +- s/iI/Y4rmIxyyqEuOK21fbA9WMtfOBe+QcXU3e9F0fI= +- lM6jBeKpH+J4+tIAF5NRZx8xrfq9UglrwTBduaR61Vg= +- doxa667dfdSpe/ZK9fJgZ9deTmHohL28o3QszHxM7sw= +- tZQ+YEgeK/c6tRo4ftgtqHV8Gh6kmd/tCcUX5/ZGU40= +- sbLBx93BTdfCmdz8HuxaR8gUh8ge85RfyTYV7Q/siBQ= +- SgGxQJblE57EU66bXvprzz6rGJmYbuZNJxEV5Y4WlZ8= +- FPtCbwLvyIpW7Sl+J+RozcsoLZxlyW/ivbXzHmA5XgQ= +- h+bDQ0ygzydiLOuMXklj9WCRraXpSaLXgRnTMmM2jIQ= +- iwBkgHWbs0GZ9TveQ6uYlC/tMdJOEl5B8f9Kp7CZixY= +- zvcPa4GK2+SglpiCpW2OapSnhi77JgcoYRCeLS7JdS0= +- 0gmrgie7g8inajsVK9+E2bcw+lNNbPKM5Aap0DwU7aw= +- 9ckxayB6jvn1r27QEPjGclqRz8vRQxvEK2fn7bUyY2w= +- D3PTa0szqDXLpaM7nihYNllodWHciHqU6T497Gt4mn4= +- sV0WVd+KwQZb6yIakRuQp6Y0XtqS3/C+dytetE4N45Q= +- mRfgDwVR7pXjg9a7f/BPgSW4JDNNQkIJdZp7HwqAmcU= +- I3VKyvzM/BVP3pfb84+4mFc4ZjJ0F+X4fyyW+yvK5B8= +- KSFQmXqyTRcBJ4gah/QX6Gq0bEGk70BxKWbmFyQBdbQ= +- AA731ytHuRO8WO5AfaDgIDGGMRynR1egP5H65rB4zAM= +- jStlehNVoFP/1NvxnhgoVgRwK0vLCLGFYkJDhazTc44= +- lhNIyc8mNOicy8fgGLq/dm2fgUPC15tw3q0RovZF4Uo= +- n4nV9ST9vYWQ3wdkD0e01kyw+yRRfS52VcREDxTFjJ0= +- lGcwfZgx5rPyDVKD4o/3RruuU+ftaQUQIWz8W8aUplA= +- w7s9RC66+JAiwMl1Pz6lU52wkN5uEuqL9N5w/8AAqvo= +- czMZH9SW+ltzdUR72YkqZJonaereJyTFqIqgwPS3Ack= +- fmnz5/NkSVlI5cmFdElJ1+a5C8XeA0QOaTV+/bFL2xQ= +- KEp0ikkCq2r5eO/zoHWM+7rlhRazljcYxpmNAPVD7uA= +- WPl0C3fLX6iCLd8Z8yHsSPCSIv8v7ywgCMDMDVAGT1U= +- QfvrRvHK4/NTVw6xXCJL0J+5f9DtTqI6Yeih+k51f1I= +- j/2ZZDNJ/r9EH5mtY+zy4s8W4/ZO1q1FMqoZcf3UAB8= +- R0cBXHpBDOt1W1fzR/2Ns5hcTZZwGDD5wRklB5uoUTU= +- iQ6mcbzc9mA/8zkxlN/WuUHnASt1qKVMPSkXrQtLTzM= +- p1WoXPQUsIevQ+UxxPPv7GJ8hKZbVbBOPBQpv6KtCHA= +- IwgcMuB4AN6t52DldHWM+NTegNpHtuKUlIAGsWSvvNU= +- aif+Hj1Y+76cO1meog3TuV72N7Py8UfYG21pBd1gXGg= +- Ek22G+51wXx4dKD1+tO2v89lAEo4FB5ycxnCBimZV2s= +- 1gXwkbfJlNDhZW01MrIeOowG75GRKCzD96PlnUcR4A8= +- NzybHRbD9zil8BflwaDokAnqYscjQxwfaoimgaA2dak= +- 6CInmu42ReymSQ5aTPXrQZfWtla3UnkNYywvLA5V3dk= +- gSnYeqUhafRqixmRNjzdTjsJx0w0qkMmGFcu4xYQ5aw= +- pgR6GOsZeq2Ah0DKsghBR03XrzF/XicncmAGyaBU8ms= +- B1wyNF3YIEfh09oqpo9MYlgeIPcVS3vBD7p5HO71880= +- qIzCJ/LyLRc/ncYjbAz92jVooVZWwLvosoFOOPwHkjo= +- efeSjz3rdDbW4RDfrjfo+A6pxl9V6oTrRJiVtjvFkJ4= +- wqhN/64DmGuzOXaYZonRXh5Mh4ZAWFc334hQZE6lpY8= +- KDrXhYiahgWxpdz2o38sPX0Eg0XYjllfV58V+yRFy9Q= +- Ke2rXAMdb5k/IWLNHYuw/SiW5WA5zBxthcM62HiQ7u8= +- ijHiFtK8oO+nrrRFp1Que5qtnvWNHlv+mxtdr/ZOrnM= +- eXhLd6gS05oTvpsUh5ETVFAtX3SfS4ohktdeAWBvCPU= +- 9bgLz2igaU6RNkrzELsyz/9lh7Snhv2WB1ypiQA1BEc= +- TtSsct3+mzl0yC7yzU60GsjmY5xCb9VCOq4n5LGFEsM= +- qIGzQIWRgVN5KQeORqb7GF/DQ71KGiP7yN6dEHNjlIE= +- 8cq9D/jSVvU7Lvqdz+Ohx2Mly/CnAvsbLPVkMlxDajw= +- yZrTahi1Uwqu5Ee1aYrkqZndVM/+mqvA4sYvrpYFZyY= +- ktUX++jgUZLgr37JrmyCT42CO1RHQtVsgsXqZoj93EY= +- N3Vd2tgpyqj9vEX7AVqFQuszrBd9+PTKhG6dCDpFtEg= +- c5AvXIk96Y4Vm5SIlwqgDpBLXkVoQyPt+OJ2rU4sExw= +- LOngX0AlK83FjGLTuxmAxIxCz3SdUGB2ExjBXXLhv04= +- r1WC/jxUBiRe0/61uq3cRRK4BRdqkmFmTg0F2cK8Xs0= +- TZ7grAQv9v1ulRm9Lizc3HmkSGN32et46pqtg1IOQiE= +- vLvMmFbNw+KmTN5POomwnBuIqH0QNgtTvSQ3sNyZLOM= +- A0eAYtlKmFBKBrNqx8EUF8UVIb2Ehlfb/DAwRY53UnY= +- nMlvkmrcL/VIF/Jet4+DuXjgVYfbdQtZvtkOqL8WUF4= +- QEreIqxRVbGEos52LUuRiEd5ZKmTVPc9KQXtw8+Dvgk= +- kCiU+jjf0+TKLMGproBGn+X6m+SIrGVqONO79EJdc6Y= +- 3fz1IZVs7AamdCdIK3IeJ9b05YZJiM+jxD2Lrk44F14= +- OCucT46PSZ8OfrNt/uICR6F5bacD/E1ZWaq1AyE28WI= +- V4pU+VLfXaKnpzO/gw3EhxSpcZdx7Co4gFHXZVZyCYo= +- "/opWROu9GUxYf2+xp0/9yCZrQTGc0/IzOBv2LB3MOXY=" +- wHgKa+4pLlGMmNZob734TaopdH1xEOlfe7DYy0+8e1A= +- ATzxm7WfQYwUN9E/3vOJWMbusQX7cMqc04QgzxKZLHk= +- v8kmWAPy1oliyJ8mKkoTWIDM9L944YRaeS+dnC1+udA= +- QEYgT7IeD/87ynSab1Cq2pVEByKw0AXGnm2tWRsqIs4= +- gsq33wq/udldyk5ZN84paMeYxyb+pIwBa/l2MiHv2hM= +- x2knJBmuQiKq7M+ouA+bO+C0DmVfiSuyI2yt8WtFc44= +- SA2W3HDYVvFHtrm57/S0Cz1PahbDBBaAKMA857bmNE4= +- epvgerBeGJquv8+Z9/ieAkhUdNgIK+jeLtvJ9RoFnJo= +- ZQRejOc3qC+xDMkbYBtQQj2CaqjJ4KUmxo/DkVbZD/Q= +- TTihMUUhFafEDt87LwOxc2xlYWRknWdbisi9Jr61z7o= +- 3p7bIETQEvBFU+SbBNVMvsjopGpArVoZvF3M4doA7P0= +- u2DMUNb8Eq5vt+2Fbh7E3P8ur3bCYx2XeyPdLfA7EUw= +- cyQ8WO9ztsXGFIMhieUa5v0oNNG8xvI2RcYryAVNEzE= +- AYx8OpWHtm1Nf626GpQQCFKstaKcokQwSnz0vnkGwf8= +- 7p1KgMoxqb8AYDG0Fagx81cB8YnB6neOezaemXGZ7dw= +- jkz85qB9RWpXPKZFYvpY2GxxN93Ovxh5ttSBhA7x5cg= +- 7HXWstTle1caQf+gW64gypqOE0oayqnHHh4+9ymJUsY= +- r6FEweQCv/1+p5/82Hkl51qfA6zgv5EFjdn0bXGM9ko= +- OW84YTSu77pD6z9VnCLiDx7kM+A5Lw2c36NWqHXhqFk= +- tsl41giTGDENeIZvbS6TwvDIrRh9Q/BRVGwLGn9p7kc= +- VgLb0wcqVGTYEa0qobn97i6Pz63B57wVXB7pekOdz9c= +- DNLjqF/HHxc1J21Jr8rIX5AcVQO/bOkeo7/f83YF2Gg= +- Ad11H4N2Yy2S0FIif8ob2bYDtDcu7YQY07JbwPOYJ4g= +- G+ZBvJYGdA6ErEbzNMw2cDl/g9t9YdMJFVh+TI2NGWg= +- MVz/M9h8ZIA3AkS26TX+8hagZ8c4T//lJl21cBrR/oo= +- mxiTiCESXdIF4VVEb3Y0rHpMb0c46DXJay3ppFvPLsw= +- j8G1eRBCJMt1U01yucRFngyrek1g1GlGmQA+2nyZaMA= +- BgxooIyHIGXt+TXoofYAyrQMred1M58kNjp4d1CdH1Q= +- lOQ4yX+EIajfcru/IbI4ieuJlVoHPYyob9RlwtAZCF4= +- Z+3ipJLhnnO7OyXk/wNd6APUf9QVo0gxRt9O+B2jhHA= +- KH8vrShdJZGd5OagXy8DrvMn0DbB8n8H/SpBzwDeOOI= +- FeCuSW6aXmKD6XRnyyMGpyHLKdptRtCzJMnOMsDhzWk= +- DycVGGnFeGTnXg8qbm2+TEXJC+uB2F2WIIyWhhwKzks= +- Aqs3jj+co4Mb2PC6RoGTUF24COsyju2LEa7P+2nZYLA= +- gZWzQI31gcWPfAwDS7DhH5SmJMAHutriwCa7RlgnBn8= +- Gm0U1boS2YcdoOLtm8Ahptrz67M6gpTYZaH/hVxu9PE= +- nAlvpOYBSQAiM1Tva3HRtYvmTO87Xi7/MZbQ0mKv8wg= +- WESL5NJ9gE7kesCz3Cn+4Cexdnc/gOq8pS9QKnMwDe8= +- C2sMlFgwxL6SuBHNs9HmL2T4bfa4le58lurhZtpCLAM= +- xwKwjbjjn+ZJMtR7/7J1oTD72g+5EMjBSoQVYuHsROM= +- I0Z37/cJZqdbzHrKzsoT4obWZaF8DjOtLZoLsRPi0b4= +- nh8cGAWGKbbAxBq6f3DvfOglIfwA6D2DxjcvFwth6EE= +- QSmgmYEswpzDHX47T73nsJtaRsizF7zP0clAExT9h/c= +- izqIsy+PBVFRmtsWq5GQJfns9tV9rdcnkKag2PIuM2Q= +- wBprZzdlxYnPvncXTLmZJBH7TBVhsCwr3dtC6Pi/bF0= +- K7+JrZyHdcOTXYVcJmqFnRRc0QkwEwsjtB0h+ctkH3Q= +- lSi8VXB64MksNH2/9nonltXMY10ovSiH1giwvgEgm7U= +- W6htl5l2Cf4iTU98pra9KUw3fTG7tUQa8/vSiCgA6WE= +- B8xnODThMdVQqKlF6TUysYyBHn2ens31cokqa2yGz1Q= +- JSHaow64/EwjauhP/PVDerdDE6FMnZJqC5n6p4N2hDk= +- r1SsUYQTdZ7ANJp8kl6m8Yp3mEE7n0HRyGauALqw5SU= +- 4UlfFnrQ2MOapKBefpRynaHv3gOtl5TKHNQ5C9owB40= +- t4GIsjlMYjJ7t49O8MCdGP18h02XANX66syw9cU7o+k= +- zBUyxfFHuTDOKYVqhGND73kpLFa0whyyAyDhNuEOJbY= +- fLB2elch2nDUqoKT1Wwd59of9XynaUPC5Sg3tQpneQ0= +- N1mEEYI/GGTgjTcB4drBkqHlXMrmSx3AmN5vF70XHNQ= +- wQS74vhYRxb+io2L++VRhF/1/sVjeijoeClUul3tCZ8= +- e97mb+qZR8yNWjLh7koJ+3GmRdhA7Zc0a99k5YAqpJw= +- jwjUPqQRVEugetr1TlN2tnLXWBrsOG4jHvVw5dNUhto= +- ocPAvRwszhTAGXWAO6YGz+fZuyy4873tardqDt1wW4s= +- PJsEkjcbuar7QDu7IbQOvspzSKKiigQL23tkA9LdV3c= +- sUk3CACdTZIwr/md/hMlELIK8SwTJil4HIkTBrkub6Q= +- f2OE2RqwIN01Zwqn6MJuEHCzdxHd1KSXnCt9XJgiGs8= +- unKYvsaJqYwZX7HJ4+dKF2MKmYRSjGHWnvlD6i/WJbc= +- WpbUw+DyGJRanK2DLUBqnl8ZqAfmduP+ji0927QEZS0= +- "/xTOtmWLzys8oOijkRSI7MKvb/NB6UDsuYUFGceaf18=" +- aey9oKN3Z331A81PG1ANe3hTAWLxZSYZ8XPdXuVF2NU= +- YMSHWcie1pAoXeGqURSgkPA897NHORa3zuRS8RWmoYI= +- bnpHYb3beS5nKCAZSOojxPQTANP+siAVXA+nxhv8Xo4= +- gDf1HKUfXSkMAxxMiR3S1yX2uGPCmNXD9R3C2d8+NSU= +- USr7bHYxc9OWuqDQhJTlhFaC31PRHwVhECIaZgGXPiw= +- gQCsxSFfeCZFxgE7Zl1tIdt4JSZiLAbMW4qWxHW3pNc= +- PKtw/uzSmbKpaoLeQwv3WrdHhNdj76aXJLHpBeI/oGI= +- svcqSe1kVU+Pph+kS2/RKOzNUDAshIeoDaUWIilKsKk= +- kkEZOfAxqUGNKXjpbrM5NZItZtCuYDKX5NMZ5IAPShI= +- VTvyMHyfQD0E1UbiJOhl5mH1Irx3v9ygwGm07mJXhH8= +- fbIpfYEnVop8qv0+Ot0d4XMZDq1KuF6DJG2aQXXGD+c= +- j392I2wrl6Jw/YPilwaqozs7+HJ2+/ZPaFyXAp8xJDY= +- wfmflLTjY8a8cfWlBc/ruuww1a/r2EWGkSAZ49/jpBo= +- 4oYyDNPv6rK7slDeTF0UXB2I4U9JbuLN7eU5P4YEhnM= +- rYjzhSt3ZwdaVrDDxuNfXF/Vqr57n3YMnSeXeWzS8u0= +- L5kZB3XvFL6T/Kp4UsKOgqC70zpKG77T4KQbqSGqtFo= +- Lobzz5+iyo2H323JGP3rFFlxdDPi9229OFJMllaRADs= +- x7sqcgZMzfxhKw0Zb1wPhe2j7Hk/cwTMX8H5MsHHhFY= +- HB2KrXXzFhmKFbV0xY2Y4QmMxtEfG9r1Xr4MthHVHGo= +- h1KlVpP3mOJOX/M9PuHXqq71v5C/C/MtRPd5LxnlSO8= +- iFg/4VEpWz4T8fHjyj7BiZNEHwYa2QHh7j+HHPGG/78= +- TRTM+vP3UX3pVdt42a/BtGUYtMNeHhynPETHNQ3Tu3w= +- 4XpbpTx9/McEHQ326d1yd2iBpDDE7l/eUNc+cXxOpVU= +- 5K57WHH2CgGQwDaBIXFg8QZ08yLKSqW2UlJDiVcs5Vg= +- X1xmblgv/JYtYyTFxg45MXS4ekQIxlnmxoBPAG0OfnI= +- ALPohsDQBqS+r5k+ONZJ8j9F84MizW0XluaJdM5nPI8= +- cFkHtznjgtfcqFHspnHdoSDFwA0550cHS/+MGJkGcuM= +- 93K4v+EzAuPppyJZvY76hr4Rj/ZFiuDp1PSvdHDNPyY= +- LbdkcqdCz/otP/iCOjc9eAp3aEDif1KdO6yT2b4lxGk= +- V/iq5Qfnj+7rwaxZ6NIu55LbKSwKE/GwpCQc98jjuzU= +- 31kFF09jPmU25oH8hVmSIfF4TJ76GS/Md50v/FWg4co= +- rQJmFAjHJY9HEEpO0E+mvNWg2C4QaDVBe0In61k2yx4= +- r8TWfJ8yYNWsr2FowqjgVc8DNCOSdzCOdOHT3UXl5Ag= +- xQ84f8oNc5YiUbOEA7/6lLYgie0giDzxqpcd4nX2T2Y= +- GGQJSbAPKADttb+JZVSuLahh3K05LkyrQsr2l6DeRWo= +- sXbMA5IWC4teJfp8PuegdxJB+2x6Twf8/yoSHtw1c80= +- un7RZV00h5UOFjKeZbKTsZwi4+CNbMcTKEq3gno07iw= +- hb3IJCAW4IDGtA6sLT9V/VsA4qCKwh0cRykp0oYYdVI= +- gkwd5hq5jezIRD4r9S0+6W9IBRvZJ7giUuM2wgo24XE= +- 7Y1/x255Ol+l2K2IjokPJFJmnRnzbMt342C3GWH1vfA= +- p54XlG4/Kq6EUEbVU6mfeAxm6Q2MsFuC9qGYR3T2fZk= +- isSzuzcEfknaPx5yR405jkcV46fQ+WkdEiSStE+NT70= +- vfUggkgg55TubMOD9W7rEvcZMz2mTHQGZ67LIg17bAo= +- pLTFilRbZtI85tnBAAeInk00psOPJCPvh0VrvuEF8s8= +- 0ehoevkXd90SS1nEOG5GpwpO3PqAcoYXgTV00VQfJNU= +- Nr5OpKaXHhI0lwCZPKJ2woq9njA88nQvpKWDBfK3X7g= +- HAWrVhNpj9r5seH09O9ftH2e1vXB8qqM0BVcSXkUyTU= +- agz6CzfQb9KW7i1E4Wcymj6fUqp6jL02MvmDkl265WY= +- ZXQksRMUdA55KKKueNxESMwqtdTksuFOQnQy/ZGI+/k= +- fA4zLnxpNK24hSxcpbwX95GdCqLJA9tGCgvbEjLLy/Y= +- ldMBaaWcQYtSATMV/IG8mf3wp7A6EW80arYoSW80ntU= +- B8MP2h89+wUsLsFxrlzCzMiOShyKCW9cu4Oyxx20eao= +- QUFcYOALUpwumyPvrRuZ2xq5m1eUI94bbhUZp2Oro7U= +- LJduGMwz24ma95+pWigDOkzfTpT/HRJq3Os8IcQ28a0= +- TmTC6L9LiKxZlsyi5elAmRl/BgOykMbsFdDKmZAJM5c= +- dFf5jRQ5BN0MR9UEfYwoD9g72yy9LtgN7qDofv6VBvk= +- e0HD1ItPd77YcF/JGj0xYDdKNGVla4PRb0LclixmYWE= +- dysYHapmKdDcxeXGqvDoiwY2XJNvZ1ArAQgNdpI6xHQ= +- HFBLIFUEvBlT0VpNkKrJZodCjvSovrVeVeToULhZWBU= +- wZjqfp6Rn6r5BeEHu77nmas72JadVBIeSy/L9uQA2ZE= +- "/9r/iokaM5kpyptQnT+IbkzKcGleGfmGwM7lYQ3pzfw=" +- ACr1j94KC9/EMkOgzWw7+LjtFdhFJLsW+ef520PkisU= +- P0MKP1hLUfpTskx6y5zkqVauoJVw6BxXHt1PdEBlYnc= +- "+eNKylZbP8d+UqE9jIyEnfVYn+ShuSqjAzI1ur0ZASw=" +- ynaFfEd43hFOfbbljQ3Cuh/+e8TwnS7dUWQZB6QnMB0= +- '08bGvk36Ei/YrJMhY9rnW1OmowpKATzQ0GWrJ4kITCk=' +- Kjc4u1JHfI8OJawRsvRjgU0vcPeuMs9TH5OWZezY9go= +- Lt+t3w0wJ0U3MFW/1EQ2/RElBVZTGPbjPq7KCQkyrT8= +- A9niaVKxFYcuV6CtU3yhD1im2UwyKSpIg6n+nwzzInQ= +- grxUPgXTCUHnXYSt7abyxV8bOJp1XljNB6tPhgcGA/Q= +- cCcmuKs/nSXpA2pCiJiAUt3cKAeNhAVE9V42rnEyjmo= +- frGoz6WrJPQFOatTwvHHVB/TK059QEgw+a2fuu2J87I= +- DR5WfoJYItnQ4OouA2810tpEO+qpypUAZCjcpTEDrYo= +- kfNOvlh/iVxWR62WR5FV2seKmYdeu273V/v6yw1fK3E= +- 1FFaZqY7Y+lq8g+6T8gYwt2ZPHj6HEM6WNjNc4cA5t8= +- kAsheN4/z84W78te7nRMQbYBaZTaHDF7vH21LG9CWcI= +- T2XViFOj3tYBWDgSbuHbfBdcvYPNX9kAWiU8rzS0P6I= +- IwduRxI4QUyPbmG22mYc9GRGl6pzaWJleFMa6QDrdKc= +- 0/ZUvK2D2JDkk5f5XG9FDYheniqFxBGWiuOl53phips= +- QOYkEShRuy3xpNfAhHJ6GDulmZgz4gkbL1GUntSeJ0M= +- XPoO+i30iTGnd7KQTYXt9YkfynMjGVIYlzhEheljJ3Y= +- IpB3y+bUpiXQ9JmGY53IG9LDh/u4eCGCsy5lQF2YkP0= +- mJOIXBBSut9ukKAgFr6k3oKMfDlqrp3ycYm/BKChYtg= +- 4kXpZfxY0dPUpDY5QE/GcljTN4GnId+N617CdJvvCMk= +- huWdrApWHugv69jRvcIHH6xaA33LIXpS+mPRYKlHc9A= +- iTGoWuht9czk45m/BAsiUKb1EgvQs6LqnLJH7pPTcFI= +- l6QIaq1TToQKTI2gA2v1hbl2Eugl7s8qEFc8vFsRwvw= +- YW4k/gEDfQ9NqxhxLsaEhYAw2/102eUC0F1B7XdNeRI= +- 5lDafrvPL5GBUBhoLkE+9yK61q7MiVLrqBg2PBUM6uo= +- ya8RDch52zkyEqXBAM+xnejMqn6CPU1LWqu653ts4Ew= +- zgqvxGvGoAcUQuM9nIil1WTqZ/dDg/+QGY/F4Zqh21c= +- TFZ2lMVTnfKyxZS/LcMGWabwISTt2KGeSbWjn0Jxx6g= +- S5lDz6xtygxs2HSd/aI7j/v852V/NLcFgspEc4zRkbI= +- 6vdhONKvCIVXUBzEQXqpA1aWBQYloruNzWqyqiiLgjc= +- cw/Erz/FU9NpU0OtNpuQaDKf1HBnHgBttYgecr3l6+o= +- vnr4v1N7JM9PZ92AwtQPBrxX8G4Zu0MMJseIenrx+xc= +- 39ijFfG9rPsEJm6P3utMtRD1+piBg+ufpXUpJxaZB3Y= +- T/DMHghqr4xXN6UpT8Ycyxgq3itHeHN7eyyukeN3L+0= +- 5iR8a4Jmyr5YnVoW/QpVyYyWBS1F+Y+HocR1PqTAo7Q= +- QzqgWCu2griDWJnimcycjhDHO/uyeq9uWVWlUEav8Go= +- DOeVsygcxSuqM9F+8tZiqnIA1d4KPGbzSTMLV7Q00+E= +- y2f4AIU6EHhFOq/rW+BFZ358MTTEbZFhuNl/PygdRhI= +- GVOcnIAkHmCQtUqxguwqooSQ4bnjAKqn4E5hwWdoGbg= +- LzC/OpxIJHOC2zOura7LhEWssd6jMxAYJ7quE0UG2ug= +- W3qR3+aT6+L2pNSW+fNJ7X3gP07Qpgap7nRM7xJr6b4= +- 1lALHd31IoNKEkSogg9aFUAauPfJwH3afi46j18R+Hw= +- mD8VJXljHxqBK9lrTapUjimtJp64D1DDlpZUZm4w8vQ= +- X1hUtWzabnEgqO48CnaC3CXw51gqY2kQl4EKeEmHjo0= +- Pd8rnHuPLx7ZhQp58U8BUrPC5w6ds790ybbdpK3iQnI= +- WSRLJdWWCHmGdi81pZhX5gETj9X6pGtWQM2txESzO0g= +- rRd5gTuV/j9X6ZA9kY2HWd6Zxbame78PLOZ7aq7WI0o= +- ND5nwIeQh6XzMhJ/yL3aCiwDJFE1uOC3ya8VJuRtYWs= +- KHOpte53KEIuh4A3bImNPuKt8nASE8n4in8oWWjGXgM= +- vcaitRCuJQ+D0dCGZJs4hRV46h8Y6/GnOayNSzjgzUw= +- aGZSp+V2znbX+ZiP+Es3+pPlzSJI4p4YZp52RpBWYhA= +- NA+Wsa5TNJWz/wXc8c7cptxPhSv1w1KUetGNRJrOZ3E= +- QSNXXY3kDA+l9oaf/7GlIXLVJIR1Kxfv3sdaNmpg1Tc= +- QgwH8YpQ3l+Fp6TwotTxxY8bqg51lgkszpCsRGQn36g= +- D+L8N0mUy4EJJo9bc2v6m8Xc7761Pyzj47aWvZup5wg= +- 8O1Tsg16xdVFkzaJ6ZlugsyXorGPW42KQuZqoQvGIJM= +- 37/xAtpTFUStUUdJdztmhbtLwxqDIOu++CES6NwgFyg= +- raQb9uTCD4EyiNwT/rujSM5tn8QzNUGTQt+N4ow/Tfg= +- HmUQtt0y37TRibzpEowxFcTpSeZ16ARoLc/ZECHbF9Q= +- Jt66v2/cQoWDRzAfevkFl0mfsDcU6CaofsVkEO18auI= +- yaAADX9OLv0WiMraUJ9YzoPJ6IM00wsgqv8PSrhhdxs= +- g193uHJWRzY7hIM+9zhXrUDYZPDhmJAQUVwUlWS2e64= +- zL2g3vR0QJP7GabobdtkqGemJATdXflHt9aEjS5yN1Q= +- 7/SGCusnwJdWrmtX46wwqOe8ZyzpwkQ3DcfiaOCJx8o= +- VIYdvZdj9kiHhU6iLC3olDX1sZF/gHmtcZ+JkFY66Rk= +- QoNudBH4RTpDsnam+SkLck3EZiW0d+8IIf8dUhQ2vBU= +- "/F6RqRm8GtihSQc203f58P2QjkZ6azBFJBiVr1Gmv3Q=" +- nWX4cAQHx01ET+I/XnBHqkejalhVs4GDaYafWybE8wk= +- x3FSiVr7cFL06grFFOtxA2A4bqsOccesfJB2E4s8GOQ= +- KNVq0peWbdIGqnoSv7Ao+SIa0Ot2lYA6352fYHuy4+U= +- uYhHeDDOnG7l1AYqtB9R8VT8eS92wW3CDzBaA+7CGCc= +- kAok9rNjU7aisoAWTD6ydR++Xl5x3eJgotLW9Tz10L8= +- 65RZcg/jRAWsddJhbK+UgKXY1qis0J9Dn73d+QbMaHY= +- Y7/O7OQ2F6Ga9wTZ7LFGUw5nhFQurY2cxXtLqplGWXw= +- CyHinLCU0Xg9OFijJz5JmFMFR3yXGokdGrhTIoHcO54= +- tX1YV4S2Zd6aC+Yc5T2zZW7k5CzPzXCEmdynpZKR35o= +- 1wCoreov4fNi1faaJTWHqoyu2fFA+tvxQ+PNFLtThUw= +- CTfMnS0OPmy9K5xCPJW6N8HnzEC423xHyTYcy11+3pQ= +- yR5hfdNph6amdrn+WbTc3qPIrfsV9T/O2n7YG5HiW5U= +- 6jGDbWUlpJZvFgFB4bFkN6E74O37lDCylYj7IbxaiVU= +- YRTmWvD5JM4bjI7K3wh3l3xNeqWkdMLdqofa8Qstbrk= +- A/qUSm4dNWQpmV7/2kgB42Y5wYQzZmrY6vtDApahMuM= +- 58cjCH1ksMfDl37C+QZ3JWXtIMfnlnTPN6tG/BmDcA8= +- 4TiyuwK8c458CDIJfJG7EBftWAUafJOU6C2Bv/2O9Io= +- z9GhuvhjIriaCTqIElDbf3uOqMpZzFi6TIyRKq67Qio= +- KFWI/R6bVTP151XAAAl4z2j0XxcUUYKN0JJU75hbhyg= +- UbrW4j6eyn0jaGx8u8NmTOXyWjZI6saCMnv7xMfeoHU= +- gdpuKAGnlrtm5mV9J2K2BAjco+i02ZG4ob2fUNoUUBU= +- AC5uKl7iHwWH/Elgzbrx6pI6BvBgI8DHzFrRb4ovJWs= +- XX5JXrhKNHVhIKCBRboPLsos1LZojFJmijt/k1fi5mA= +- Fu5Uc2OOWReVvpMHlhk3hJk8XnM7Z9ciDAvlBdqVSYg= +- 7cQ93CgzsHgvLIb5orwTYF9n1TOcxxy0jRUNdLaoouc= +- EwR6xVgeQhMLjISI7rAfLmisnV35wHy0Thvj0CQMEhE= +- 1WOKgGXSDMgxT6UqHzZi3I9wGGg1/d/BMQZEgrG0DpM= +- 1RQffdPwBjR+THYqnhTDizHmjI2eXPX+tFFqylMrj2E= +- m/oo709U25rWb2q3YctlnrovBdZT3OeFrCw8+qqagkA= +- W6N3+OKPvmGa/DxT+ATRXvBlkzKyTU4gJ4TOuTvS7O8= +- l+sw6+MWv4Tr+20zhLX/8GcVYciv1W88TJ7Loda207w= +- XzYadIKOWreLv4SnQgoovPtzMGBWgJw4D7lj7ucu/bM= +- wBpW2pkJ9pez++XQnDLbgNCNCd7Qinp0M5dHmCscVos= +- rzPVBcbnK03GuNaEOd4TFGbtQGa4Qv6gPw/2w7cml1o= +- Gwu7Zg9IgMmhkmSmmt57/qQF+pdsPHht2P2TUnBWvHg= +- 8sXt/O4MKLZ42rcj1aE+GMyavIZnI8eComkaNdD8XgU= +- yq6L+mNMy5LMPx3sObU9OBG28N99z8adIZW6GCAw9mc= +- PFMML0SzHRhngs2+6KCwqBU1DqU9TLe5eC7J2q0Wtsc= +- r7nH0meriXdVWyNrUYzC7qFZQmaRDkv0B9/VHzDopys= +- 6LVDukaFdJNkOoShnCjPhHVbneN+oI/7NVd4jz/5Jsw= +- P+2E7hMDlBvuNXvrnQW5arySKiES7JCFcbdgNLl2BV4= +- gVN0RW3K+C3l8FL+BfPpKlX5Dw4WStLPcOO21qSq7gM= +- xFxiaYWp/9q8LmPAiqtizKJKTl1EBc8kph7NAh+0+U8= +- B6PBEzabdhqqo4gS47Lju7omqS1qzI4OwN1dWza7DD4= +- zwvvwO1kvgTeeLTl2OSbe3ek9DuYvmxE2zBU0vD9UuM= +- 3bmJhkOF0phkYXOUVECMliXt/aiqQ4fdzi2OZMvHXMs= +- GrKC949/yghx51k/jdIgG6bdXKxQRT9dzNPPs9Yq0i8= +- "+Otzm2AQb1zd1jCB6Tyy24BX97fLsVvFj9tG0iBFyP0=" +- r4lk1ZIsZV6vjNm2thilPpwsB/wwsFvNWdYXAq8DRUg= +- 7Di6n1gJsN8btiFe5IiNrf86I+bS0HrxOKFRz0c+VgA= +- f0YrBckd0IYu9WjE9vsq2OrProMtE3kEd2kdYkiA0RY= +- ulPxjCRUl+TXh3FtEVPAKU4EvbH6Zhju2MH3GSnGCE0= +- KPxlZbOtYA6/rnp3kLbrm9L7xkbhG9mzkslwPUqulUE= +- 5LHGLz375rQOO6AIoUiMsL9ryc6CkGwMqXQW3L4tQz0= +- jRmhY8rcoUKjF2Jz6DeuYHAnunrWs88xgNG9d7AiFpM= +- Ro0DPtEiAiV3a9mIKdCjBR1ykElncXIXbaC+vFVfbTA= +- "+P5749YcU9gb0lZpMJTlL8+GK/CSAdHI1WWFOtPIr50=" +- pFRZlwpb9kxhKitUb+Gaswa5yCuXqfB6Ssksul6e6+k= +- CK2WDqpLAcqdEaIHNigxeBRUXIlD/AzErissqEfrf4g= +- FU4mvwMKbpV2fB5YgJ3DCsyBucNkjecp/MmH4XtG6gg= +- V939FvdoD5i1pKH+KCLr0FALZwIxH9BixOCDe+Na54Y= +- nMJCUeO5c7TM4tcoUlZX7nAZBYqGNW2EnBe2pnqZdEA= +- s8YbximBuGaN7Q0pkz2YDBAjDJzBnqQGIh+hzoTLxf8= +- yPSE4mCCGgJDFhZCiMZ1WbKom3Y+yph0KP7ATv/bIWY= +- lznATkegEVex0YLf2qelIHaTxkVoxXgkKnqecYnO1TI= +- yv7g4DuIIfLWBrbfgN7dNiWZNtJVcUqydb91GhvzjaE= +- "/1ieYptUCh2UIoljhDAs1qgMm7YzT51TFjP3px7vVFw=" +- DXgcc2AwxlEtBKpCi7siiMbgm7tdUlb4nm7MW9f7R5o= +- 3xk7XMHSD0Bb1Fv87ZOTlA41bqJHsiF0eZYClwx8hM0= +- OymzMuvSqRJ1pAqz4zmh691H8HHsmAs3EjfiyW/oI+I= +- 9Wyfv6qCDhXZb8O7zQCQKuI8kM3C0/+l8mC3X+YGYlk= +- tbuLpXrUDOCAvVwi3DP5y341RrWQSBVDbnRjhOQVALc= +- wev71EbMw/StugH5r/Rv5HpVlxww48HUjyNQMA1crAw= +- YCmPRC8Z8fEIDUfgYuStdeji/C8fnzBPOuVLdGlU5aA= +- 40QUwdxdZSzgvp+S/m1TRHfbzW9cqOEjnR+0KYHgsaQ= +- rKaGOAllxbNuVUbCUkA88j6rtli8KU7r3gU6Ax6kxYk= +- 7YVGbIPo0V2Cuq6Dl1WmPvjUasQ2l/bUDj5Pe1biy+k= +- 8RsSw0GTuoisDYZ1AJbtttSeegZmC4tH6RN/EZnObww= +- E4HSH8oF7s1oHHh5aJc8EPOMfpR9/zYfbvVLROa8jVY= +- "/qfdQDzRcPWUSiG44DC63g7XXQYlTk2wkdVU43fZ/Bo=" +- dpMX2uoLSRDOe4UfWS9yOlAcdX+DpdAvSBmSFmfZi0s= +- Hac2LrD0acHVcGBWejt6qH6QzoNWlYCdM2S0SGcbgPU= +- T2MvvRXqIhR/+sCsvcetmIUmazQOg9b8eqVRiQUpwQw= +- "/YUfT2nhONGKUJiMkRMooa4UOW3BYOK3shDmYhjemL8=" +- FOFDfSeQkGY0iFGnsKddMlcyz0Fi9LD2/+awGgzIzcU= +- OB6Nmp6+2GLBSZS7O60vaqVToCND8arjZ2x8srtI0cQ= +- C5S+eXH/T5NPljpgGpxa3Kk7dT0i0wsjlMyopMLp6qA= +- ocdiDlPKaBd+UNNtgIRufHn1nWPKRSQoCCZM6q+L7h8= +- 7w0makeGD/H76LH59uXHSu5IcfNPHskxmMqnwpG6FSU= +- OUQE73K4JiCZy5XmDDva5SjYtID3dG5/WIv9huGaqK0= +- oNdjDFglMgeOLa2nQa6bCuH7XGv5GCM1HnCCNiY2OWg= +- C+dcjERnQQ+u36bTgvwg2WBudz8rfoYAo9UdC6RFcvE= +- "/7pkm0Dd/1fDQOaCQQ8uqZPUmRfzQxHL/tX2Tn5m0YE=" +- N5YMS1iF4cEZu7yE4kiLtLGcLdKwYqSKbfxt5u2TBKQ= +- dwyfB7B02JoF52bzTOorUHcaeOAn9I9+BwfvV7kE9JQ= +- al8pjoUzD2/bEZvTCWeKpQqH+QLNzSst5/zJX1GyeVo= +- LyxsvbbVzlB1NFBrL3InnR5ohvFFeud7ZItMVPg3Cig= +- zCwK+W8MSWRu5x2KFSLv66Vcxf3IMu+iAcFZoGzplyI= +- D44jGfHSqo08MyhM4z9b33A6mZN3Dgx+n7QlpYI/KAU= +- id1z1nDHJLXYWLjCMq6Zd9XSecaLiOGB8H82Bg6y0f4= +- 57m1WvwmvkOtR5U6IjsckIgvUyhfTBveRlN5urNSIms= +- BF6KMtlOnMmqv8Og3aD5LcGM4U76dzw7dZT/eTt+fNU= +- 5OVAkEsiJZ1NL7VHu49ucUbhIj2H0CjmqbP1AINWIjA= +- 25x0XTnMqxgQQyxNX2Fm/xg/zn5RP8F5+fcNg6JltL8= +- DZp1ZlA0mThldESFosPfPZpyuSVuM+Y02ob1nUQZXCI= +- 65MQ6zqxnCzu7ujJUQTHV0DzrWG4e3eitpPVeEw/IiE= +- AgVG6Pk6mddAvgElsMfBtctAioNkMLIctWqX4TZAit0= +- He3BRqs4WOSbBOvPXacKuNjSaCJD+04sz71sniF8qS4= +- LARwudzP09ptq0lLmlOGy6sqbX/FEyCL3sL2KytWHXo= +- gcAwJoeWGok39ID2vqrfWWqP/U46tCrPGsjE0OEp2ew= +- Wbuv2fsGq25tqEHLiwBUmIlpl3BPBoWmgw8hDRROyY4= +- "+JQLvDBfoHdlvHuGow/iCce3ddypCnPSdAVNPLu58bw=" +- z1Ijn9YqRLd0I0oJTTyGLAPw87cY9CvpECUIWne+EH8= +- zGiL5b1e7XJ9Q3gL5127bgAq4/k+JjYrAVfTPN1Z0WE= +- VYNNGO1oHkl7Swt2cVXRIq5N6dBEwoFuaYjM7cBEgvs= +- Sldlkae9lWyRXw/eN5jNg4ArHkHC45zL1VXmBSnZu94= +- aTW0XAvjLNuxpXnXUQPkTdvFMG805YY9Jh3n8oal3Ns= +- D603pG/UQ8ymugFu4eq9YfI0h9pht0ZvlmxBYZ9swz4= +- cNCACvPjkV4IqNK7BkW1uYzMd9K2LHBP0JTvH8EQiHQ= +- aOa3MxDDzI9DooAJWgKtqamY2GFjGh+T1lQdbaSLZO0= +- Tz0K+ok040cA1J9o4p1+Nw2m/V+9ydIB6uhSDs786bM= +- Nn9KQ+C38rsa31oLDNH3ZT8M1p/+VZHvkcW9VM3KEW4= +- 5AskLPbeQCweHgHlJpSxVIU/vDRY+CXTFEL9DvcAjzU= +- l+qdLSoxTr1WMw5EcPj87tt61F8sT5+7d7qHVXeHN+g= +- c3djDh672HHcZP4gqt24In1lmQ8FLnXXkNi/1YFiZf0= +- WTKnL6CI66hPjrn55XGcJbAJpHRM7shP20ABrhDEHd8= +- 55zD/SRqd/gyDBFJJ1X4i2HyxzVnE6Q4F0x628ExoJw= +- W7YAvi6KkaUst1k38olX2Wsj+gnGPczAkISGnMP7oRU= +- d0ciT01z+uBybg5HMBst42YiE66hx8gIRaZS3cvySLE= +- VCiJ11QHFFCoFo6MKzRDkRrDjJRKg0SIhi9En1MtwKk= +- 0BatZkxYWIIVvkeuaInPSep6yOAOWUZiPe52mmczXVQ= +- VFcLDOu6OvqVtTRqwDDFnTWQ5Q71EediUjzMnKMZOoA= +- QZ7Mg1miEziiWM/DhWAk4P6gzkQmGL6MFnL6m7YyGww= +- LxCB5o0ojZRPOboAXKXGLHme6fpvdtvzvd34tYIX1P0= +- 2KHoIjqLlB6lgcmr16ftgY3FePyJXvOIGQVbvMQcLZ4= +- 20oxWaH4XdV1cnFcOGkccmAqQnkfiZ4B1E+Pk5HoQu8= +- A9r9Jt7LyfquOlS5EjBgb+f8ZP8qKb0rPw9z1c6q7I0= +- 9A0csZZrlHckXAVOpSrVHzl8EhLP1NH8XVI3lnWhaXY= +- Oi4nCw21Lh5wxL+PVVy6mRISWVAkSaGquQ1IlgaOsqM= +- 7lJ9nSydVaaM+otdBIsCsNp+qVh7rTkN0so++VjkA0Q= +- W04C9WuY/rSwGkEtOQv9plRUZyKZNJJPc10btMwU0RE= +- viAwFbU78y77YENLE101SaYJ9xzTRO8RrYQlWiOj9Os= +- Ft/A24xpu6gdfAaZNyj5Y3kD4qq/N5IlBJuhRgmKTuA= +- qDjxWMZGDpbinSQNT5vejiyqMu1Kp90p1AOmxr2eQRk= +- X69oOWRX8TJSX/k3UN4uIZWXAUWcEsl+zLmLoKHeMds= +- gCX51AHnWxFYSg/dHJ8DSWjo+umB5lE6I7jmG9uebmY= +- KX2XsoE4EG8yO2sVoR32Hx6R0CMzw5x855fJWTB/KEg= +- iHQCclrunVhV1bLqt669c5LNLLqo0uLDGaLNZ2lpUs4= +- z64IBbjtBLCQ/nYcA7j6zKWDiuS8mg1w349cRAv9oNY= +- "+cjkGG3OHNPBbidw6Sc4d+6PP7xlhvQTLBRmWxFfUGM=" +- qxfTqsxqwfmRCv8P3RFsDLbmmVsneXYCJCdxkJDcxNw= +- uy3LqDoqhBvRYauzjGsyu9jz+PD1Egx9FehwdgZsSLA= +- Ycd3d+qcYOOeq/X94oZjDU2N0c+iM6Eb6aLbuEdlgAY= +- 1lrPu6xGuMNSXeerqW17Fin5njFN94tV44Ql4RMeV3E= +- KoFDapVEQW2jpg1fvNKSYkBLpXO5V5x7Pnu3AmT33XM= +- EjIUjvkXbviQ5rD7yJcAgycfX7a+CKxJEgIpbViQJIU= +- YNQpxZ6uT2QjTKF1KaGDTu4ORQS9esMTU++6Qv2R1jI= +- PpkPuQ8egd3RgosxtfZt7CcWWHHFNmbq/cxumIN8rTc= +- DXuwPjqgNt+h48JhEB3QtieGt8DwhVgRJVSbn0ssMlo= +- IbP51gteVxwBHLOAztlpLghkcKoMA8J7vK+tfLBrnjw= +- d6fPr+2XBGFrlm15O1RiQ5xDIJEbcdKOBGBBE7x8V+8= +- bwH2he4m1g7I4BNqJ/Tqb4E0DGHUiy3ElbjgDbIUnw8= +- 7s3mG+J168GZgXmVnWwWuClmzIKhFF0f40aUbBoWshQ= +- MaXltheYJtxOQ5f7t7KdyN7JWxsBZ0OemFLvH93fIEA= +- zljq5F9iT0OkEAqxmv2gNnzrC4AOJA1dyZDWfBs70kg= +- jS2sEcCfru3fVOfHDBc596cnejid39+OMBGFQdj7pvA= +- OsoSD9LMwNDWAe1JqJeezIeMYk0fNA6jLc/te8BJTDs= +- pY010/P/hCQv6TM6aPV4fvLwysQzTaFgQuAehmGg4EM= +- layulIJA7KrpcdbYNe6uQZ1FC0qR1OTtMXtEUw+eHFA= +- 7v7D3nyqXati8ABVbuvP1ErgGaNrLU2/RtXj4ORu6eI= +- Rgu/fQKJPvfD4ActKiCgTnE9cb2HzWIZD+9vtfMIMzs= +- nXV+ofVzsHckQ07l+LtbDUNDh6OFblicEzQ3sQ1ACDw= +- f1CIdillAxGsOfFxTjB9KdSvk8ErFulvaz15Zb7SHFM= +- 8Ho6LtmOStJ4dahaSky1AHJrfHNqVEhGcJKrktcS6iQ= +- hkK+CrJ33U44tDSSSRBOA0GqA2tkNkEwUzuEno+/d3A= +- 5GclakQfZhXXfSwRt9Xsf+X4g/Al03jNDUdXIOmFLlI= +- ObaNH+IHIXbmyW3sw10SV9p4/S8jdCy2Y5oJwYqRo5Q= +- cWd0jnIraEqfv8IuX0DfCRyGGt0Tcrccyize/gPIMyg= +- 8As9zEqWuOYjSvNZ76cAeh0KIAzndKqgT12gSV/RIXU= +- eK9z6wt/U2hSejAjNapSM+B6vqFVsW/5p/W0WBuLdnQ= +- et5DQGibUoy+O62HqAdIrSxe6ya2glGNivxs8bYdn0E= +- iBT8YQODW7/8rUu1zk5qwT9s+ic5k9CtE0/r8aGUsj4= +- rd68re6otiRSWziOpaicq3+FMIbPXGtH2FVPoMNOFuw= +- 9KkEzweaj0bSx2fe/m+5M5o05PLaQlMn8KNaE75lTXE= +- XeTnBIjMCPfDwKzizaK5X7Jjt1CxdHL1f+hHq4c0ID0= +- N/pH74mV8/iwN03W4SI7iXEtaikQDLO9ZOM52wPtd2k= +- r+TFkPUIb1QnEn5FNetRKI4M5i9COLyuOewIwM2z9Ks= +- C3ytmj8KWe42ShY3kCuBy7naynYj34g6/zk11Mxshfg= +- yNEhkBAPBy7I1HlVhhO91KsrUSuTjCjoyVD/iyu52GM= +- ERfuUjY3GySS7cw7PLvcvmD4gpT9cVH8ZjjXyOporDE= +- tiOY4jsB+qrHXJ9slkDKdP7dc+kqQu8mKP8rxl4iUPs= +- hEqUeRZOFOfGVQ+WHh6rJorUwWPRuJzOk12qrNqYFeo= +- NsDneuggZHtUY6PFWIpHKmjILJfcgfnhqNIkOGRVNHE= +- kvsMCvMhogT2lPMPRCxoSM0xlHk/4AKRKx/2/PyakGQ= +- B5H/2pLBFsfRG+aDYkII3nObJEQCWtCje/bXpgPpKeE= +- 7daKsSt+ATYaYYc4gWOapYT+zUDbSU8pIDkJQxBCRUA= +- YcjXYKOsN1mynr4fwtE9wDRA+WUfIMpZQ4ZUxsfzlJs= +- 3wEOH2qrW9mdnj4RSUYX3V/T4EIuR1cT3oii9cgQ5Hk= +- 25EgsT1S522iLdQ2sFbr2+ob+xL1e7WfJDQUkg7V+U0= +- e1sXx4zBhZ8rcv/LlGzAdb0qiIPJvyLU4oTr9z+Az9c= +- FKTm5De3OjUPKmpI0YznAWnRa+0JUhwDckbHavSc9Ik= +- eKG8ZYANyYpz9kENU5nHvmJqcg9YliIjXRpHxY4MFlQ= +- D/8odQNERqESlt1fZbmHPSMJ+hyy9KRY+uXkRpODkp0= +- eu9UCBZRtVXStVm4HvECBceab3p0xNCkDDTh1hu+i+Q= +- d1ucIAACxMwPQlMMKNk9D+KQmqqw+sba/pNk5qdIyf4= +- rl3rhl05GvHFCINUNeCht9lA83fk0iKEA6fbrnYI6WI= +- YmXbDIxdsWGeVzNIHu1kZPiyxuT6DZ8FzxAFZpZbbBs= +- g3A1SQ8Iy2UQvXloaQgoCFbrKj0Hj93SGdUOR3CidHE= +- klsTp++bS0lUlX6yjFl2cV6rpla+X28GjBmTsY1FdaI= +- FLvj9yZIyNxXufGNmY3K/E5vjtpGtczCae4Ba3pyMDc= +- eAsQz6qsSidfuLc5nJ2EPVqcRLzYYZGW2TJlR9ghLuE= +- 8osXxChGDRypSRAAvp4D91zD4a8+lsfumoGu/fVLZyA= +- jflQJlOPt+8FyL8VggWXXFww6Na/P65GBHPwBmjlYdM= +- KIn1Rq+npmmlbhK0S4gVkT9fntWtmt1Pg0oYLUwgBQQ= +- SJH4VkgKkOLxEyVVz0YX/QfR+uwcOzffCwnIs7XMsa4= +- a4QZn1Y5Y+gfAjZLNRVT+N9BatzYkaoap87XVgjD9FM= +- xoaJszjYRe6fSMnTMW8l/ehGL4xK5Gw+KMubLQrXmRk= +- Sss+YmQcGYr1x2nIkH4BBGYGyG2yTYX+KhsubpKjNDU= +- 00R2UruKX7spyFQjZm1kWlDBLUe5sDfS4OMm7wkiq+o= +- sB6wAIBQt4gJxHhILbtVCjlI62FtYbVjNoVnQZKrV3k= +- vQhetZpV9/cOc37wjLZTxEec+Agh1kxI4RMCizuViik= +- DZQEOF6l7BHopBQYfrX0cw4JosBmIvLQcxIcRsYGfcQ= +- GFR1XADNu8hYU43w0J33aHqWBnfYyImQ+GbIT0TyZ6o= +- tO87Ct+94R/2R0PXZOvK1gNcZ3DpuADMXSrxbJGl3e8= +- DjyxN6RigDVuy2akRyfPizmLgUvSI49zY4NR+9GUsUg= +- SrWBHoqgSxqGsaepDsKFCUfzlJmu10WzpxajkBGfPvU= +- mVE1vk46jWILVacl/3FUybslXK4C7guVAA+lQ5/60Vw= +- XNPmQmdOiT6dP+3DnsU9FAmX/XDjQ8rGFkZNVUucO50= +- KKuJUVzilGVR9PP0RGbYPvZ4aMGpCZ8UxYsZ4bKDmoM= +- s/sohxuWETfHOMCDXZg1miPqQaal7BBxwDeP1aqm3lo= +- rdumoVWVkIb+MoeuLSxC1o7ly9lfp+pprY7l3y8vMeo= +- QoXWacyOufGoYEe/UEkY6xGyUsJV2MSwx5H+UhOjuLI= +- gjXANKTeny3E4ROJTxVWzcA9KrClP23vfTRGQnxgQko= +- IaqeWnt7y4zlGrHzorovdAWZCdA/FaROMsqtw7vtkw4= +- tYrRGQbMZJCTZPRQez49d10xzF+6g3aMFngNsEm6VTc= +- h0B4QUDYVIZbKqDybSRWOnTRn4YVd4T87jzmiDJKzbQ= +- iLsNjS3Acu/wkNwZ2zVtZYjhu6rz8R0UEHuLn9xQgsg= +- G3T9gp3e+QjjVqS5wKBZe1YoIREpn8tINNCDRYmLaL0= +- "+vmeEfjfz8XU0FXbNAtig7DdkB3C/fLOy/JdHRz8GK4=" +- 6RrI6Ot1FCCPyE6T5VLGtKaxjAr7FWfa4E8x27IYmbk= +- 3SxHrF+VSLrdlLKZCGI37QFrYQ+bm3i1bmWEpDg/mIM= +- KhbMd+/nacW1qc2b1TxAGgnHGL8Dx+a6CeY+AL7Iiuw= +- ELpGatN0J5uY81p4IB9dTJrfNqoCJ/kAuRCiK71La1s= +- fgcXhqMFWjfGsuS2SWV/0mtKmQHYV+HYn6P52sY/Wzo= +- JMBxzWZi5oMFNY4ANeT314s4yKf8Kiu6zzs6ZDWmI+A= +- 0pqr5qim5qsahOSbLeLvs4FY3uIxn4opwyP0ba99Y1k= +- GFVWAvGaJIivvwfBJezJs2VKgD5DbxRkUkKxrDB6YoY= +- ooe6x/v8uQG8TAZAyLozFNL63UcfEeL20JG0TqY9ALY= +- v5ksg3tA0y2I7ZUlZbPbxJoFt7Q/nrockAZKq3HqUUM= +- 2OSp9hChZifCyGz8UXfA6Op7tSqYwGMfX3ZxwS2wpno= +- W7ycbxUpcdjT0cQM2oHwDi2Th+yV8xK8gtcF0JUVmAU= +- ve/0qcB1+jQnMZHxH0e1ciHsheyiRZ7z2IIpA9l2Z4Y= +- DqrTjkSQtv+kh4hx8/+X2MqhUJEgtJvxhiVhxGrG0ec= +- maUCjsNR8s/c9GxY7O6wh35liT+6DHAIqJHZ/23mECA= +- r1DjKjslY+/4eppBigw0XYaIzciEhGV8quB80inf1SU= +- KBT/+Z/AFuseJk05sGJjrN2ujbs08RsYtQfOQ8QJYfw= +- wWwDs7TiSI9/m5hxLnEuvasUyjVIignl1Vz1e3ptRAs= +- vXHfj1UdmG6OUId/rJpS9h9FQzOe1YgXKLnzZ1C658A= +- dssk/+heBCWk4ap95/NpscxO6iRcMCWQ0ZxxIHnjBWE= +- E/bWZ3f0tZhwGWqmzJVze23DxBxDRff5z6sAWIQo+vc= +- 4yC3VJFR2a4PdEJ3tZtwY0OtMN1xYq2eHiziU4uPw+U= +- Lxu3y6OBx3tjMhMP1s1qm6kVuJGAzTKxeouTceIsOzw= +- PMA/awwvG80iMdVU7kMHYipQ9U9V+2DDQER2aPjb79Y= +- 5xuvL/CV7ITCD9p78mvWYAiQRA5H0z+i2fT39g28Z/0= +- rBa4ncLgBXKGDqGRi01UbgnLKA2CQtlMi2C7kqmqdn8= +- Bhepa6w9XG8oZqCMrSB4ZSntY8qOuyiGMwRIDBvzrcs= +- Q5z7MDJLLxBY2zUErGaTiDAqr6jUBJMQlS1CBLO8Rdk= +- 3Q0q8f1XXDOPaCQwkCHNsJCgs218DBJApqJZBFcjgfg= +- SjLrbtlLNv8FF4KoWo3dhLL6gnte1sFpsKUdcMe3944= +- atuWskxWXPijy4jjuaarssdgK4A6js9R072RntVnPBw= +- PNLuSXretLTa8u84CcLTFDPUR4FdJDz42/XBsKmETQU= +- TrS5skSgBAJZvN0SWXcXpcivGGh9076Ni2IsOZPO8Wc= +- 864iMXH5OrcVKBGV6mb99zhr2GBosf7Q5+vGphl3GF0= +- HVYqXAWsjH/72dupc+P/sHp+SrLgX0bIr7mvr6BfqeY= +- nNn8lgg+FJkdbC0UjGhbGNUSpM+bmGq68llVakNP+bY= +- js7ciWNLmGvNbPsPenGw3+bwhdSi4XM+SOXZ1dwQ+V4= +- Rk8MSGOiQPa7T5fqPHD1XE2jTUUK9YT+sbUCGPI4WSM= +- "+SigciPliK9a1iHI7Q9x5UlaGzQXf5kiRPa30OGnVI4=" +- kadfRD+GCxDJU1hztiMstjSbKAdjMwvpI18MRVOtJnI= +- AcBikd8qWOAvANta7wjdSJLpnzpKh90XsEKyK5dQAD4= +- PK1SzjI/rXqAVZxQSZw5V7sQ6A5P69yNJV2SJnrJU0o= +- TtHnhVkNUj4opdaX9eyTYVgUC0qEm2F/66hj+w9Djhs= +- X46AZxwKWZFSMiJzrbrk2DmJDYOEseLWdnOjW1oSIHQ= +- XL+KrGWiA14aSK75snaia515aWGc+F0V26XYNbGVLy8= +- 1iBFTutW32S7FTlKDELxKvt+BZ6GqmCQBQ+VJtlBNaM= +- v62ADo8PM+7xDC117Jcd89ZZZfyZVLDgO0z1a0CjizI= +- "/ZaZwx+Px5JTXWH/GsNHAPtJ/85Nr6NAW3Q+tzKJ91g=" +- BbStE7kPXzaD4hj7/d/v/9WV4t7UGVEgCowuGEHipzg= +- tcZ6UIeatgAnAdd7m2H2wcSpbTRUBjYwyCa0Clk58aM= +- 46XmPXRG1CaOdfQZtqqpF8G/wRjrSYLv0lByJxCwMv4= +- "/dKOUbBWvoLP0ahF/Gmy7tKdPvlwDCZKcEDb52SnOTU=" +- Bhs39EQ9WGuCz0ZNie8JYYzrpfHOLQEaRUxvpOgQUno= +- Q1Vw1K+BkkfdiTTcIgQhrSz+gJgaJGD3CDcanzeRCJY= +- Tjf6WjvL4oyxPApsyGoJAcypQeI5zYNrMhmwrc/a2qA= +- bj1AO//K9RrXSU7r4MOSyH6HKbIueP1a8K1MMD1S0k4= +- EpSPOcvRu0D2YQCtFkd5tZX3H2B6Ov8ouT3i35TP2Fk= +- N5i8y+Tv0RASTGpHbBzSXdeXnaXL72nQUm28vNoD25I= +- ZXS4aZBj03fvjAnxnjW4KhgHUa7TP6JF+EXHDSSDqJY= +- 4np2hrgCjP7ntX2VTDq8z7KnAZaJJfUrvUgud75d4Ls= +- FL3Nb9ZBgK9ed5Hfkbavjpo+e8hEmX64wpJScG35fKU= +- g0jPQnLjpGI5sZstAqI3AkNwyNpe0fF3JTjMx8NMhCQ= +- zERCkq7ctff+4pVMtiaHxOCH8QUtj0xHmI0xcfzgS8w= +- XyIn5AxDRJqQM2xhqposrChP/EV/hCgSIH7irJFoG/I= +- fbqTAj9DLH2FLli06cRQ0GXPts/E3rGsS9f5H35nOe0= +- 1KSQ/2sLLUsFrKQvkIHlW3gT3eq/k+PyGWmmzDw9qj8= +- mfd4SKJgJ4izRzkozDFOS9u0fi1z7dqiQ6m1UfL61/M= +- lqHF3Klpb9n4YNp1SIkUlqlOpYOP+CT8H1sq5Zr/ykA= +- 4cwLDWuza0LglQ6fIDdRzqTusKRAJVsybYYfTX4o3Es= +- FBn0vIIywZy4HH/AL0FjG5lMr1ti3zSQ1IPgzdGBsXE= +- utuDS1S7jmjAUTtx+LQl47s4v6MKyF01F6GeLFYpgqA= +- u3TrmoT/Go/80ERa3rfpXeqlF6tjya9h/1QvFPYArKo= +- 5F/u5/jRBg8bNMdoikG9l09sTUijW+q2TmxpDgdNEeQ= +- gVjYSprbJopptG6FNJ0UV9GB3dFxiMxhK1UoMs32Pm0= +- lEhmg8cBlAm5gqG5mhCnmBxOu7tR+ZntCHrOe3eOyGs= +- kd0eoMoj8Dnp7VRbAslAKCskoDlN6thDeJM3WY91YuY= +- AwPALDSwJuR8w8maZDxQhjgH068n0aUT82X/0JHQ8d0= +- BcecW4vcLl0jDxw13B9m85VVeLayQ68FAkZxYQIhSRM= +- sxKX//wBhykctXUyvoIBPOtNMyeEcJ+EoqEPcJDiRy0= +- "+dqF+HAeJ1q0vlllff6a31+gaP6xk/x+Y61i5YgdmrA=" +- VDHZD+hKa+D5UMkLS7Pa4kXjkAYikfaJCkHtm8g3TaM= +- PFsR++ABKHONwErjpSo0A38d+1WQadNt+S96fULBQMU= +- Ds0l5wMjXN94E2rEzKrVrJCy7GniGq0rEex4WWY67KY= +- "+ecUoW/ml4vyA2+/jXQih6DCQvg1zgS4L2+OyXF67ig=" +- Iym062M6LmLMwbbxX4e/RpK+az5+AG4Sxzve1JhyzL0= +- gPD/G9P6MxV1Hsgy11p4rU/NUsPPS29YcVCkkxtEiyo= +- Y4fGTXDn9ZBp6XRlO+jQt87GJt6zCerDU2K47jwCvTA= +- Ou39bfNKsjtbEPsixmGFqzRunBx5/tcObUdj2HCPsuI= +- LNZzdy0cZ0aysYCK57ywiLIgC+IslV1E9CxElTcL+ZE= +- FJvKLe3GRaNGF4rYkO88xCR7v013z4fom+gWd7LBTSs= +- GXmb/HAOQQU23BnxhKbl5KFxjEk0ITH3KHISLz8IBpw= +- 9Ew3P8aF6C7xKyLAbWWGYo7sSw26jjgp2Oj8St1kh/I= +- kBZoxA4anKbiLyStO8jA7HcN1uZXO/NrGzwzr6fEHPk= +- bq4HwjFHN0PUzRl6A/YLENFmmMeCTiz6J6XwNXP2VgE= +- Tfm4ROmPM3MyFellyQerE7jZUiHieGzhs1+yH8zA5F8= +- ECukvxleU2N8BxJKPxpQc+3ixlpAKUFk9ceo08sT/YI= +- zrdgoY+k5BBQ9k2LRxdBfiPFXOd5mV/tFJidBPaYxtE= +- JREr6HQtN6I5fazgGbaFNN6H4MlE48kiuBbeXPdm0A0= +- hY8pA8m6P5HMqQfvVTLDcGkujWTNtQ6BlrF4CPKsTIs= +- FDl1wTZgscRBn01adXsmQgCGnXqw36wYGQ06QlctpL8= +- iiYPBp5lMwb1wwTPQ4r0YnyE7aazjej8zLgBuSGBs/8= +- 5M3SpSzUq0kh5upBE+Gnb/NOGTMc6/TfvkQW46uVG14= +- "+jjiBcOzcbXkvZa5sQ5UTbK6bNfIg/fSBoDUavxMJ+s=" +- nlc8+f9ubLOB9LHjtUBhdoXuXwOT8WSV7fZV+4Z0za0= +- R2TsRslJS3/uEUiOE0ngOGSF86G8OmUVWMlWOV30q24= +- M1ankolPcEMcn3f/piA4W48YCKeoABdzLXoas0QFwo4= +- nu8gbv9L+S9AhblRXRDah0KKObIHbmn9mXCHdjpzHWM= +- nYLmiMTowUrbXr1VoDfRM0TJSuAWScdujUEfg8XoPSU= +- dcHV55Kuis5tel67oJU58SMFIIuv0jmMzJcddw3tq9Q= +- LqEHPUImlFqXF+I+FV/Ft1JoFDyHjvP2QGmMmNYTS3M= +- YAXtVkmW/vJg4fzbLhWuBLbRroeYSTLIuQqL+8zciZU= +- hURx084gjZkf3snIlKzeYGUR+YGvz/QFmCwK8qbzKTQ= +- ukwURYWdlI7shWCChwIuFqd83PAM/4ti4KK5Rg4k4DE= +- KC9grw2RWstcz6wpZTLoc3yGvLqoS03v5JHsv0QwnHw= +- ycQzkKz54azXvaaeyrouSKcEf8b6egqZPwx5mwpU0eI= +- iMWjtrmiAuXU0/Jmyj3t1i//Kqk/GfD1qg74uILpwoU= +- jKmhQMEMDeEFbomSAQB1ML6ElUn+78Qmt/MYq4mb6Fc= +- ia+rrhkoHsXYzJE/gs8fdlUgPrmTqjMLUURf1/fnrX0= +- M+UcpbDrrO1M4Q5dug3BphWU/9c1LKkeJ98sSX5yE2E= +- 8FEAHzINvZrIciVDKA12kp3DhwYMWbhogXMfOuNx2j8= +- "/OS0p7+PKlROgomwq0Af6cJFVm09OiUNGditWQlQCdA=" +- 3fXuBPbdQ/mN8zbVjBefciyPv6XiQ/lMRL0MC7HTD2M= +- zGZT+E3qt1idZvO33KqdSEwjcZVJJuwdbleaECa7Fvo= +- O+SSrASeIis19e8ZuRZbOfia2h9k9XFso7ExpbXL4tA= +- 1K3P+btNHJZYk7F23RPZ/NkTQ6Nm9tqP0Xi/qA/N4GY= +- pmJEfTEyrYBJp3jEGzaW1lVWwGsHQiUXF/l2fvxoQ9U= +- "/emWyPPP8INInco6CGAR3k9mG6Pnoy/Wkg9M5PO+6DY=" +- gf6S1dG2bLpkNaCSkiHpmxiNiRTHoEx+gexSSAcSyTc= +- JQUqTRFiXFTWS5PdtXGaLcrUBJryOWa3vlw+trG+NgM= +- XQR3s2C4gcCzVbAxqYLGTHWvQmR/3Wpwv1NtRoo7yY0= +- 40ogLlM1PZhtDpqfpcHR6vVaMAE59W1U6uNEBUmxTUs= +- dJ3lfA1bCeLHT4qWRMR/p3atqZ2Rkb/ItWJoaX63kUA= +- m1pfxTvDAH/2gnjxS3ymFZbBxAGg9YGV2DEKgY951VU= +- S1urMD5qRDRkWC3EtCjhyivVTlN4gM2mdxQvnch5t/4= +- YkhudQZ6+icX2zzvEPxfuNg55kVZKPcLhuAIDm0Z9eg= +- epvIMhnOGWotwLA2/tomJA/LMTcHf2fTukkbbuG9A8Y= +- 479n+oTik5OpJ2lUg6w/DVBvX4HZJ/AKgGnTYciFyqc= +- hHkm/pv+3qxUCobANQKDm6Jlj0xwUp0OhZK+0yM+nBo= +- zhLYiNQ7a9MHm0PtKAyNgh+JLIia0rR7yWSFIYineyE= +- lwDOpCDz85yAnFUAYadQvzNjF6I6GxWhC7JoPhaNk0A= +- 7y3wtTnGwj3g9MvkJkjDAa4OIuiHNApFmftO9OJnjkg= +- WbLa3z2EfK69ts0q5GLrxpF+B0uc0/lS3EEXGkm4fO8= +- H1D7VhDaC74dSIlaKkEbwSnf3OoA7V9TBY7s/3/Egn8= +- JWe7YwsVHHYPWdMsWVeI9sedssKXlMFW2dXidlOa3/0= +- sZlsHafhA+lbMsXU3sEKZfeDF8jBoYSMz+1RajFMFOE= +- hfOfVRScE3O9TafHjcjfXofmEjUZ/8tB5/GhXLnKe9c= +- 768fe+y5nxGhV9a2hMTjFdiv48rmYzy7QT5qLjLbSEA= +- Av6z6Tx5IcYQe/7o/rikGVN8NS8r9mDd2Anw/SjXEWI= +- H83SqQH0qpQAge7YhFw8YYft8tUXZejwLce6B565BVE= +- h8Q0I6N4efWv44UMOJXlqc2LTOlYcIdFe5O9Hq/RyKc= +- "/rxKxm7jq60s4q0+oWGSENlmvcsbgnvqgMstKh1rM3I=" +- 4MyFQeo1i0IrFClJCM5OKSdOptESkxerH3qXwF7cvCk= +- WvJ+Dt69K7W5XXiVO4n6J22hihnD+Uxs5v2ICV7cLbQ= +- HFXqbq6zHiDdfChuJlcBsDOHbiRKYKX/BEUmnJgInEA= +- 1oRR1BqjUXivmgRib5sthC4xNk8YVhQ6+pom9CCF83Y= +- 1EBL10BIeA6Kz7zSfzFi/PhhpR21m2vrflz5aTlEfMo= +- vXg1y4WPbxhXKJ9ml+in8h/bhlSoul8m86dXNeVmFY4= +- iwBALHvJK/1f6vjtW5ESLghgLigO8O47nLzYZ+ctF70= +- DObC294+SLUGiEDC+AfpA8b5n7X6oBynKxtxt2ACvf0= +- voxtO6ZNAZ7Qx8ctrNdSpGhCt7dLfEcnd3qNcgMYc18= +- rsahKk8N7QLijhYR+gzCahdXOXpt6fZ7Ne8IBAhdrr8= +- vte0Pa1Z3rqqjfv+qPqDxMC6vbQ2kLWOjTkv1SbTGTs= +- 6kJYYfcdDrj/sUkRElXSsvjWz98eEARgoefTeucrBdQ= +- UFy6TCurBz/JoDdEYELhtqB+nR+K9Opz2dfXZ/Q0WPw= +- aPOJOE5fAROUUtrVO7K/MojD1aVW9wepoP0o0QepCFc= +- IOW8EayYbyLw96Ebm7PxuGqFy3uDFmZOxQRcDtoKhiM= +- Hla7jd9krQXReqH74Phk7d4N1fZPSH+vJtCwY+LcinY= +- mFxV17m93SaHZ9dNkKm+ysB3Z7urTx6AiejzvemwGnY= +- fNtK6pmofCJNMvWPmu0hyf9NL0Q9U3/YFXf8LNqGlg0= +- BFs4nKvmhC5MN3kvygmWT2JHbcHIfBBZj8XmLiNsdWQ= +- kFIbyByuj3Dg2J2/P40cjxgad8Rsv6/QW17nTE8sow0= +- 8rXoNiS5VjEpTyIoFr4yoC55Wl3OsbPzIF7Bvr0JdtQ= +- g0kdAElsJ6JIZcj9XwDz+TDi13uRyfKTZB7Hov866P8= +- 29b8CmXIJbs/4B+MnZqErrsdGijQ4Hk0oQbXlUNQyWs= +- aWWdPmMfQRLEzH6d1QGu7bcDJ0FBOJ3tqBMLvo7TQZI= +- o/3p8MZWvJbJ5V31/QBOu53Dxzq+YaJNeqNkBYEyp7Y= +- 35eTUfFErNwVk4VQSHs+ZLE1ko6bIOiHRT/rUwyX0ek= +- Qze8Uwn6GptsiagvKwFegbZLdz20zYU6eghpJQ3khSo= +- dbL1jiVTtiA4DBgWtWeHAmvdGjwQYSlq/ppV+QFFNsY= +- 5o04eGlbj6ukln+IAPP3FS3LQGTVd6vgZZc16pUg+2M= +- FFRRdkuVYg5gSKmWado9Wx16xv/Tf4HmyWqUDwgQzcM= +- 3O3516E1WTrBDCeIbshvx4Ub4AS5mCj1Qd0GB5tU68U= +- h2Ma3hV+Gvh+xJPR14jtowUHvLc/CQfu/dOJFOAgZ6U= +- gHzJiU0RMREdjHI4qQSy24+rzZgICDvlK4flx2G5KVQ= +- UiSd6faBG9ep6q5wtJ5Zkw0YhgJk0pNSoJ9QsDAnt20= +- 4+Ud1CyqoxcSBMKX6cz62z9zH6p3BARgkXfupIFAGTs= +- 7EBkxth84wQop+PlLpaNAAG00jC89CjUgxRuONOjYdU= +- qIcKkJsL/h6LgnhfHJifI6DY5il4o2QDEZBBX8DIh/I= +- adYh3gyi9VhgpZdLA1t6RXCwreNjFivTHhEsHUdxwmE= +- 6a+Kd4CYRi3nfoFT8NB3JFhsTUUAVpCj7CKTG3lcntE= +- drGIO0qAlQijui84eN2OnQP4iUWpkau1D6HIeTPQIDg= +- tPaR69bUvzy637YwzXgCi3VhAIlmRY9lY02iqoesfKg= +- CvN77hl3wDn8UdZq7DLXim2m/U68Yy6rm1tNiIenYak= +- WHOfAWB0XPi4Gqj2njMxYIy1RtmKuoV5MAiCNbvvmkw= +- 2iUVm3jYk4IXX0kpnyknXhs8+LUrya9al/JdDHTRD5Y= +- Ipq/qhfEqlCJlfO57M3ndy6FuPdBY9jkrmZgL+/REq8= +- mc0CkhVxCpHEtRUklmdK8YkNCF3bBVEibC9wUMdYS1U= +- r7Fc2Jw5azsxWbSDwg5XvIXgXOcOypsReb6EpKAb/q4= +- ZsnCrnbehqs+n1Hmk+TWpOt1Fxfk9ZWaW0KBdE6sCmY= +- nCW6dD8lm7sHiG1IQQvEAN15ak2lKMftReK/0ODlZwk= +- sruEbmjuZQfJinnFHxvPpqFdYenBl1fGnCdhdmMn5Js= +- j6Dy5P+/7zxKdAxbNw5Mb1c9tUZDkUytmAlsD95yvfk= +- "+sdbTelFSzBtlAoQ4f3eCSfhkS/39ZMlisH81UNBHLU=" +- ePL/mcVxLHxu/BU64+fqTIlgXbaKzvpSXEZlUQPzuBU= +- B4woNZICD1ZWsf82rTEjJmJwwfDe5Dm0P3I9ZM9neWs= +- MJBvGg6F6WhTN/FrYiI/p9TGpxLd/IUg6q6tmIbNX3M= +- nX3rllAxUfQQFxg0L1bYxCuxxPw94kaME8q2H72utRs= +- DAzg4RdgBmHiTJjV4WVkzwhYH/l+z0SBkQHtaNUxYr0= +- chdz0ueMCz+vYXSSlkkaUBtKQHSr8lHPJoqVeiBhJ48= +- MhIp6CRHXRhOmp/JYMIT3rRDeV8OkjSB7WWZ+f6BPMw= +- lH1RqfpQJrl5ACn81iLkDOmqrt8N9fQViK//od5i7m8= +- C7h41OQn+POkilZmyp0/chDkr/uWHWs8uuUsAT5WLX0= +- gAp/aAJf0JzlQDFv0LWD/IYLNkg9vBip8jnEl8ferf8= +- YDAp5Ca90am5IQCDBAIoTpDraQ+o8O/kuoAKbLLmsEA= +- th7Q9sdZdd9Exem5hb2cf2N/N1Dt5fXX4ppcMz0v5XA= +- IuAtfzI1psMOKFSXuXxdziasoItlpgb4TXGKQE+zofY= +- CGrVxOhZ6n0AJLODpnS5x51xnTzDECTL3a/h4eZ1JS4= +- 4x+9mp/U4Qgh/8KJDwkxoPueYF7Ay+s2SyKUe4V+jc0= +- KMYrOfESZdnX6EPfNDBuLx2KXOlqUoyXkZTPRhNtwHs= +- 1O+HlsYkNJ37jMcRHJZbrsOWBfT5DGY8kggYINfdOsY= +- E3/TlQtWaOsk4fAIO4elWRWUX1qv25KB++SyA+VCP2o= +- kaN+L8us3cJzSbKW/DfwDSnePW3W9mP2Pedj7EF8XV8= +- F/lxwxSqEcDbo74dTollKEjHTRQCugu4KRMjA7Zihuo= +- BkosIdwMtxcYlwxEgUlT7pQla2gxh0SIBjryymQWnSE= +- s6C5oHPfjiFfHKMG1D8BAGcZAKADisL/d3gRvRX8hfQ= +- ETkdTRB1oipqiEW2DGwvUn/f2XmPIKPeSxR9jJDB4hA= +- GY8RCccW+aJOk9XJYD8gC3cx2wZgM1jPQNNXTq3gIEk= +- 3AP3PqQm9Y7TVONZOn81JaxiXwl17PAGkF8q2Ezojqs= +- LVxy96V4+g15/uQT79FDp454W/2dhp0Z4Iqk1j65glw= +- 9NAwGWahOsKBptVfoE/Py7fQhCcfwBu1bkAZ/VGv/io= +- caQX9j97G0KoECH8artSzQewSdKDFbcGJht5Pdi5ibI= +- BcpaZgBXqwyDdNZeW0kyf6FZjwVccmSlOA/Qmy8PpSo= +- PMFPAya3quxBvDU4umHaeAlQOyRar30liD1EXyZIN0Y= +- qNIMeqNzIkKYJuHzz6uwi7AtKyvBPBKyJyzCP/Q4lpI= +- Gz2EElFYuMGV0PTejiGM7EjIep8wBTe7SEZrpSH2xeo= +- Ec20FO3OOkyXHPBSJq8Ew/SVuYUiSOJjv7TNF9jako8= +- qs/cF84i8B+XcX7DLhoFWGhYZdI0cmGUnUg3tIxEObc= +- G26h0F3ZyRNmyjbMoWSxxxiUEMuX9KMGzRSf9oA/Qmg= +- rJ7zdYoPMmNCklQOPJEHUwqdILFSIsFIJVOg7JrGdvU= +- 2lsjUwjqx3gT+W56MWsrPONLY08eDYapYaqG7C3t87s= +- rpPTAg7wpD4Z1cggWK0G0oyM898fe5WoiBATgBb3wdQ= +- QNJH1Tl7C6lh/58oMsfs3Y9kqB9ThanDet5MwJu3CZI= +- H6Gr6pcgiuyyTJ310nx6q/gl2Iu+Ds2oMZLPtRroc8A= +- ycuuMhNbUSIl5ghrJIqzO6s93KUq3J0b3oT/DAwnMMw= +- "+TzXtEZC29eA5ATdAVSthF92Ddog+XzuHl16otChMFM=" +- E5JBWE7aYaE86ajZq0TrHC+VdtFmIdcpr+RjX5+raiw= +- 9O0cAfxj8g26WZTGE8cwP6LJ2p+c8jefSjIiyB1f3e8= +- jCLjgI6suBKFY9m67H8te6PwrY5n0kTJEdBu0FBP5Rg= +- b/KngzNxmMPn36TcY1zcnIqiL6SKIxkBeotFl0mUYsA= +- ZU1ZXdoWrbiZQ/x1W6GQNKy4wJ91ty3Z73rUJ9WgFl0= +- QcEazUi/cPNgQreNY5MCAvuUZFdWcidC4VcMeQJU768= +- wVf3btocJplIJNi52cQK91v76+D++wAwR5EjRmRoTyM= +- eoPrjuGNr0ODw7fJL9jwzN9hKxfyII9BEUKmt728P6g= +- RE6GzVL4bn/VnaMXG4LZCRuY+TGV0EYa3xfvDdoeI/I= +- WbJFF7IkyJxumgwhQTC89W6tHue0fXO7JwaazixMil4= +- E2jZ5OwyYLCrzCEnDJiT3qliPCya4juDkqLuekHEIdU= +- dICN4QWg1M5Cia9dlgiqy3PPhbRQuhN6YRdYQAdhz/U= +- wLdCXGuST97oUnWsY+sorZ17kV5MJ+MiA8VnvGweNsc= +- "+qG0rUzOj/hBsg1qieJ9f+zh1ZwYTbcPQInBehUvg1E=" +- Dal5qPwl7xyfZ60A/K7qbL58QW0heHyzhSboeRYQrh8= +- iUAWdinADBE1MNWaV0CfBRyPbkKGqUlvGHWStkHP2kI= +- KYOczAfGGFtPCZHCRISr7OyeoP98gpSy+T114c/ODTM= +- "/Ea5e49sAmUrgTqncccKTjJzUdZ0TuD0hdqpdthHGD4=" +- 0m3dCjIkiW/qmElSu1Z6/zpIyKYlzJN7pVglVfzXQuU= +- tY7tLgkC5ohwT95rYoQPnw8lRRjUejgcJ0IwHXh4T04= +- il9m2WK84MDyt+65NchsWRFUQTEKpoRwVrW6UrYi7ZQ= +- 7GOwSFJpTzeS2BZ2FrYw/jRAs81c350kmt/XCXwb+FQ= +- 0I5aaqn9/Brp//AHsS5l1XkTaL6jF9ZfADZeVENxLhg= +- Vl37GEwLCsxCyl+aeviZgAeeZtFMmJc8b+/vEyEu6eA= +- ACO/scC9kKXXQvgEFKdEz/B80FiVWWO6aRFVo3RLVGU= +- wg5P06cvNKQzEuvNx1cmTaRfGF9mfyv9lGX6Gi1eUBw= +- Jb7HA3Mj2BGoq0F3uQqm3CcY0FJSuZPyvR8OcPSWneg= +- Lv39bORofAGlsFCLV6ZPVfXWWkoUluNaGngnlVFhafI= +- 9RKz2Zjh84ngm+SX00EyTG91rL2uCtioL4wKouNFKxk= +- aHwL0achJtl+EI/YjL9o0z/hjTuDWjcaZkVhX3LSmRU= +- Y5qcugGIT3paREQ4F9d89ZIE1arKcZmqFSlyszoxhRM= +- HhdIwCM5V5fuFsKIry4qTyLPjpJL1Gj1ZH8/pmnnl8M= +- K8l8LVtXzCdIyP3U0eM8zpcQ6krkVpNIOmrrKycVMkg= +- aIWiGFH7sR01QvyU0IWsTS/L3rFK+Ttib3MKW6hUMMc= +- uuAYtCJ66okLHznmhrwVEk6ByFBxee/YHJY1WTN36Ys= +- OtWBY+PKl/7Of+o5JmduyRiCE8Z57QUVRFJ4lncgRFM= +- kcljo8/Fre6lRUR1pIsHZk9OlrgCQyMu8017LHTVOTM= +- ZvwLvY+5pR7JYpv1oYuktV00x3sUOUTLjxkbcBSpwNE= +- NTFAiA3VZ5hPrqC0hm/F7Witqgtm/iiWjimD/y1c1UQ= +- BDBvtDjy3e6dWYbUz3zbhmFR3UzeOBNP6NEiGqC1eXE= +- riXWer41kM8cU/jemMmXxDMwqM3OAxdboOzNBmV04+A= +- 3/gQxjmLp2J+q4WVpUXNcbG/rJFJDPOQ62hbrfEKi0E= +- P3HcX2LiGrreDIO5lZUOwpseS06xkW+2M2SqdWWiMXE= +- LVzqfqsD0cysqpL0600IOCNHjStAfalCWiTTmlLLQ8g= +- d4fkdqjemXbney6g7kwQ62BmMmtL0gvmU0DHGETw4OM= +- pK+9QkW1dM+Hg5Tv399lF9DCtK/zyvUWpL4WWHuYA2U= +- be1IEkrhY4eKI8XxmvU6ttdSuRCnvKGfYeQLK2zafAY= +- BxdywSnFsyhS1SFZResRSrwwHMPnI1llg0XSE6QZCWA= +- Pv19A7LWgj5LzucfE7Zans9Kf/hdsNQ7xfe0m8W3fQU= +- 8IT55ySOeAygv/YFW+C6PuKxMzkfHF2vxqYucCKg7Kc= +- PSiEUVLD1e/zsEilGtRRT5SmmWkPhXsiW7N492Knoac= +- TxKrhYSczebVWvG7/xtJMZtch96ah+d31qoPsgNAgnw= +- 2TMn8RFuobPA9coIQbhRHvqnPjE7W4PflRxfIc2ieLs= +- zMwAupmXRSuVnpe0bRiEA76AoFXhDo9bjEm7Vl0VmJI= +- "+0k6IMdGr0XHOmo9k58GcUbG/BuYaVomKpRMyRpiGZ8=" +- TztUn9VXIEfjevZF/4Y20e3KF0X89MFdjIg3ieVytjE= +- vKbLm2SMNd6lWDLrl/GCwEF3cLAdLD/kg+gQjf8xqx0= +- 9fVa4xxHTB84QZHFNh6gCmHOEl6B9F4Q1V9Ss9HAx88= +- 25DXvIGS4FL7QJcK9lm3hJ/dE5rRq9/wi7NdRrtSdOo= +- b5tBglNCDrA5g2PFxlSCsE1uLut2tYLwYNYKb49Wr+0= +- 4f+euC22MMQkuYQgcKx1V150KgamOtrPDNm26lzlFxs= +- b41kOLtOJAkK/CC9+YBhaUtGh9HvtDX0NL6O+8OOgIc= +- 4FYc8TnUFC4bONd7arLb8kE17sRDW/mALyJcd45Dt4Y= +- iPsqshwb6kfVTqsVXlQcvvUdPqh5OPioskI422hcPaE= +- OpNl1pX7os6kHru3wDE3TRsZpT1U5AjS9t3Jnhxy87A= +- Jt5B0jqBmbq+BKmPhzK1B2RWG7ScMkr3BX09FP9eiOY= +- LKrC5CqI5BTPc9g1ioKsyZagD6ughyQb1t7LLQ04xio= +- We1fVlbr3tdWpzArszyut6l6OHLh8wjtHr9NlPK9+1E= +- 51bQn/27GpofCJkduFACT40ltfn24q5rYqAmcj4ygdg= +- B0gOOjnAm+ZNlasdh27WkgW/a9fwrTv143TwxeNVxJs= +- Y7HPpolBgooz/rZ7rfy3kbTytj5kJdvxi89F17Vv3eY= +- MO1IIYMn3bm746Fwia1HOeqI4dcv9xm7nW/M9bpRjtY= +- 9UZdyrIw7ZWf04we7ggJcYc6PevWWLCyinx3HLE0Szc= +- hdCCYuDmz2lurNTkjLItAky9OCdUO/zbp6AOO5TLmPg= +- DWkSzcEi/WPjLgJkqw37ppj9b9I58WHMrOobCN3NjFo= +- 5U6UB7Y/HSSzuZInQeCgHi1lZPhIDGHGMU/L9VoBeLI= +- w/AKKiOv613b2QBB1nlNO4FUnpCF8ZGcpBo+IljQu1M= +- McOVbcPpFONk/n+sU2wUp/1TP39dt0j/MZBxYChaxSQ= +- VI8oMKmW6NCULTz+Ngi0AmqfpLcyXXFQMSz+v5ekfeo= +- 4iHLscFNFgnkMwUrbaZkZHA9fggC9R03Ls6L5uBqqSE= +- 2WL/Jl5Qgy74+sqnvUmAOqy1rkA5wnsWSIwQgh1eqb0= +- zMaS37BLSp3fBFi3SfoGs4ojp3QwmwFXgEZhITa4oCE= +- h+wRwq+E1sWnlqn/K6+zQbXjD2iBdYj1I1MYocW+X2M= +- rVLWzfMCMn/q6ibZK0USvE35dxCXKlt3z5B2/aoWku4= +- ga1vXDPf9TGmqvlxcLGVLkEuY6cyHiq4zwDCOnkT00Q= +- xTzBqonY46FfhIA5QzPQDogOho5Z/Ox89a0cmaaYopE= +- 138neBWyLTK/YlWDbAV5ibRPTxQ4te8DtCQF8/eD5EU= +- mrdBucgbJz34alynPsvgd9vdxsXcEOL9KvSjLG6tdK8= +- bh9W4xR7vnGDWQrRLRjGshfu4Npe0fhyxPiEAiGOh8A= +- 9lO7OwP6Vq3MAgphRKvXgzOUngpEwD4MIauKZkolWeM= +- RmWe6K3Y7GsIfCuhiTeEbgmDxuzk/U4Xz5IgXXzrx8s= +- yBBBI8siJIVlX63YsGBFv913s2POeiHGHOMxWFRok28= +- mkQMoPy8Mffl6Af99Wwq02MWBUE/XUivAroIssSuzB0= +- 4w7PwcYdOXAuWk/bAB1iH26hbodN+jXJTAaDfG8kYCg= +- 4jcW6rZrVo0t+u6drEd1P8yykjfhUsAyCdXxvrzwbmY= +- RhcFexa9SUuTIGp9dLjiwWDJM/TM52zIy1Vnrk3imtE= +- PS9j4Hs9sKa80Urc907OVh2+Ksk6+gT2Zqe/R7kZY5s= +- hG/Wbndn02A0PfY0C2F8E8fIAbiudg5A1grkojrxq0A= +- 2HPA+BerepJ2QCtDvc/0aL3pAoF6Wq6HWgLfap1p1rE= +- m4dnBtoNynwOF2rc2qy1aceQ0nQI3vV+m0eqIrke2V8= +- A+pBkedoA4MN8hMSc5GTYnzXTJMLCpYybZqvWacfYSM= +- 4dO8EG3tIKlvXFCbtpGXjKCyvCU8naAyAHYizbbDc/c= +- IcOlKawwQJEbDWXnhkStV2RDZby5bAgMrcrfdnVN8Uk= +- Eiv2rMB/xI4kJ7nV9st1XlcNmkvu6gUeVUcbhFavyMs= +- lf9An1+R+ADW4e3hN3WQucNTBOCCclDv0p4o3pkr3h8= +- SRzVW1JOtU/esHOldJk7UC7bH/tYnV/3RcP4PTxBwY4= +- MZmHg8pHycpmuSS60jskifDpIzCU2+GghmwEE0Dp8Rk= +- ONXP48ps1+pJko7MetrH288sVK3BE8fGKTdaAQl5nrQ= +- d5RhsNSwhBYjIFN4a+XA9TYjzxUKvDctrPMow0F2abo= +- lZehTLZ3M38iULR2RBnLpyTuOvyM1w56ggcT1R87+lg= +- 8Ah/VwgYpu+V/adNz880hXMfvNXFLnTZWpYqGce7xYc= +- bmV0Px+90kzmDKRxnYJIHnN7ae0KPz4s/JQ6OmQ3oxU= +- FXk5JoOiXamKc379IJd8Ve0B6rBiD+pQN+hBJXAYz1I= +- N7aWcTpVzxrPzFK/5CUKPA0fQuhjZ+HY4iGuupanmvQ= +- z2Fr1oj2NHZyy3AJAe2/isGxwp2RqmhKImoiNfT948I= +- 8B7PW+WL67fsbfRRUUX3b18rX0KseA0sc/GHikWagq0= +- ktdAKFpd6AXfHDVKQ20eZnjpz5HnIUaGFuu3uFjEbyQ= +- dHBbJEdT96m1FOUCp6C+kcbERKIENPt49XOCQRdtZMc= +- bBw7fx39xEU8zXgt856KqjBM521r8QBHJgtYI6bfHWU= +- bkcVdKtHOrKZYYovu/jxMNADkWKaiOKiAgvDmLA7538= +- HcWMK7bl/jVnNozczE5GFRP8hdC3fxdWjO0WSIbrLZM= +- uEaB5y7aNjiW9PvSbGYP8aWFUXb+Lgfnuslgfhahes8= +- Z600IaWWGozdrWX13h/2mGulCzuehm13Dz7hzXA7x1o= +- U0HMZ+5qUuMkcwGqM/5XB4yo1GHIsLFsls+8hDNUsDw= +- TTl5LZs1iuJQ3sAm2gG7VXoGqN92qxgGvwCmzxwuu40= +- Hw84GKSNVUivWnajTRJcltAaNIMzyOv6wjjrrOO3RVg= +- MuzguPF5XBuNybgElwe0Im5LQJpv3mxiTRVNwea/5p4= +- l/zfdCPQNo0naOorqLBCbnLOcgRgBNgJcv9TbzRybOY= +- tKTtBUpsvb5+d/Woj50n1gHGFBLSjMiyuQc0+Eo3p2Y= +- peGL8X9YTnaGjSIuxzJ6oEeDhErbPtknb9Bl6603MB8= +- UdkM6jlpFSap6wTTxDYxNzcFricgBHZKxJXpwNSADaY= +- gnAlTGzKk+JVXP1dkxXKae7+fx71cihyTWDuKYPzPa0= +- eUcwSHH0gSlquFDLMnSRytMxgEnPk97tGEsBjuIuwkE= +- QW5IqRGG9hoCbZM7M+tNVTApIDYv88xYPgw9hWhxjhg= +- DdFcX3gZdkWx+9PsCL87ywH4R9LQ3r6H7sH7sPLmylo= +- vqocgBT3SIR3gkPLlIXPlUgjKQTfZmnP4gSFbBBbwHg= +- icbUkUeGpQwDH5M5vqfCc5cxlXpq+hlQSMPA301dLh4= +- miKHLh0BUrcJ4qe49O8byeI/mUqpZphKseafkQ5HBV8= +- 1do//MFZLBILKDTBNsNdZhjF0MYqjUIqZlShIZaViS8= +- 2D5eI5SJqsAt4RbHSRYga1o6yyviGjpq/y/KsDcYdV0= +- Jj9ZpJ/ytkXLjM5KKGqH2drts2d6Jdq9XjrzZDgxMdo= +- EzV+XsZaZ6HeOVR/WQo11d4OUJ06ADU/PN6zt4qHGzw= +- DjcaGtgLZQlOVF/lVYmumQ6motox9YKNs6+JHJ2jFY4= +- l8ZZgeA/8VqjcXnn9kIF2P029qcfQBKbrOO2rI2fiQo= +- 6+SOXKdGQUPESw2254UCviCTlvgzKdhsoplrVmTuzfw= +- oK6PCd/Pe7N0ikA5K9DG4VU6XrcWNWsQKFqW6hJp68g= +- A8eA12/gqJdCoL0m8oruMrvCbfp1li/DRw7U6jqLefs= +- iL/8XcNXTMTFd+XvPL33r+ZIT6EPAXtSxyNqgYdvN4g= +- sXdeIpt/VQEHE2fJur6GdHXwnoo8vl24vNGUnSiVizo= +- 5dqWe2guRmP9s9/LB82U8mKzqf4XWK1b1MXVmHX76jQ= +- RqW2xPfBwLUvpmHrYl2fzMCj7F2qSW1nchCMSQwjsKY= +- JdyeRqG4Xj1doG88Xgz/5TPfdQxsNyXtx/EeYSezbz8= +- v9IF+DAX0EUwPUbbfbPvANQVd7GIUDLdUBtfmzoP2J8= +- "/gAwDQxGeBLWjPLI8hkszVGN9ApxycWP8TZo9yXg4GA=" +- 4nFwdRdkOgU4yQlKu/8xSAao6E0WYv5yCJoFJK/E+q8= +- oDZs/20iBoYWTZ0ThLUSaH+A127L1zNWBRtEBPr1NjU= +- tO0QC4PRSAcLTvqS+yKCSSlQIpUOicSX3osZMc+7NfM= +- Bw/9VsuZXHsD/+wepo/nVjL/D00HM44mglx+l0S10qc= +- 49q0eGqgKWHNThA4oZ1JBgxcYpybvESRwLN6qkqcMZU= +- V/UewvrM+Z3YxSXgHCgYDxKn2v1lSZP53+iDQG9BpKY= +- rocewR9ZAACMTR9tqOPO1ruQH3saOmfwet6lc7rnVBI= +- uI2h4TnNPNOk6eEXDJOqV2lQ13Qh37da+2Zo2AihQEc= +- R7OJlCG2px5sDr1bDuUlA+qXsYL+x13t7GwaTt3s460= +- 5OgTrpelQzJ9YYKcSYiR31HVN6X+wqXEZtFya74yXwc= +- 2ljlsWeAhVeWxvuslJke6jlMtgToSjkaDlP1VshtZjk= +- dHQrsa1Bc+xYlYJ0fVfISTk13jEbVNUJpIRUj4vIhkY= +- Na7WO5xwLO4rdvUIMKuGxUlvOBr7oOjqMyP2/0I5dA0= +- l8WSMUojyFxLyhIqZAta+sctb2WKM+sM9997yqKHYE4= +- fMq+b8Xpvs3RYNmjigioHBiQwqQ9Jh/mzSGQd5B+ta0= +- kHGesevcKE/D28JXohISPAoSiQG+Cu6ajHrrqhQf2o0= +- oi/PbvD22Tirc5EHsl05qOVLVu7TC0fw2LfHGGh9RU8= +- Qq6Q8aCvmJEo2ik1gQF64c4DYnfZE2FlbMbWTRA9vEc= +- RaCEnT+Gv/B6229Aw8ZMgQSmSW/aCu/imlqcBGNHm9w= +- fKnIYHFFbdBRDtyPl0/xIJKAz2UCp69P0VofYnQ+YHQ= +- aJmoFpj1yZ91bNssMd9sSAHeqm+YsWiY2NV+Q8NiiBg= +- jhS0V4VM2MKMQyDKwd/gsI+qY8qoi8bZM8hGbf98SHE= +- 3EnHs5a+QZD0hVlKfpvCdaDoZVkphieFHeNXrb7o858= +- D9H/Ovw+wZb2e0wx+OOeUp5sU7KRPIvgnzEex6C+GAs= +- 5/1XaTw6qivDW6AH2rsJ5yCJJ1fO/mmIF7pCcjfp4lc= +- dH1+njb/gJKwoJvAdAL+IrOcyxLjBykyK2y0RF7tO08= +- gCVwGGxvoj7el7Og4ZIW2QFikbx0u8xfzfEDbjfyH2M= +- OL5V1erC/CAVMRd/XVYcTE0BdSVDUwQMWsQ8ij8S4zU= +- 0x3R1btlF+cr1Z5whDqL9GBNICEFPP6SOT7FtuWnTT4= +- U6XcijXrmXOrNSWD/AtmGHGSGIye3TJbG0lZTTsPax0= +- Zm3rbXbRnWAx8y/btwSSM/sPWIHlL8DZJIDyivOL+GY= +- 1Humh96D9is2EFvy5y9FYHCDsrGABSq5shRPihUL6Ug= +- 5e1oRBp0XISL0sCG894m78kMe0kZpDnNCzVkAmZvhJc= +- nNiwznJYXo3wwDKfq5pWInpp8UYbhaflWi2kpmK0j2k= +- RMdqCahLDS3lYQLHOAmoz1gW+1+as9M9NITUzGwH+TQ= +- rZ/k2XPg7q5qDH/fftGaKfhRgu/g6rxvYYB9EN4P8Cs= +- iY0RNfSsp2Phr6X8O7sJiyK6BcIBynfff485mQPltiI= +- fGQNc/jENKrDSPb/85zFvtVqDS5Y3ca0dpdZJf9WaIw= +- "/PaXeX3oxH/bNI6OLkEG+6Etgggh73OkFSJTBgAGBUs=" +- oEY0fcLMMyAmYQBlcJXVolYOeYq0kvteGE2gsrWY3oY= +- Prnx+IobO14mPwgoawTxDi1vDaiAsAZtr2txWG5dHbo= +- Szavhm5PsSs1mnjzyxwoUiaq9JxOqsr0LB4dS2eX3SY= +- MtCg8jznVSLiIZETfx7yXkiUXiBEaBcWse3av105mPc= +- wkyxTSjuXrMLRU5mIWhqjA9sBim7sY1esWSfQIj39uk= +- Df2qZL1vC9M0J3Vc9nLZdaWO3T+CO3pUvjb41+ahr+g= +- GdnxFudeDcfS2VbhormzS9PAcASZcZvEENBqHZtUDFg= +- V3wIe+id3cLkmqeK9SEn2ELul3tQoI39xdH6JDJ4WW4= +- U+HO03m1vHERXrmZSpid5/d7G/dsdNHvmQCP/2E84EU= +- WfdJIuwH1/EK92LpYM7aZLhN78hdaBb10z5danQ7gCc= +- 48Dty+hLH6qIJ5OBmvr6qZgFv1JcHj3XuGgz/vlJ2T4= +- jEWBEYjSmDnH6pYpAr/C+rv1RG+vRA06XVLL310CAcY= +- jVhe2LQlRfldlIQps4XmCmBt3czt+eZS+aG1h+64c38= +- ZeGUK9IglIvzpo4BXDDU3FVAdG/X0bCWc9APEQKSzJM= +- 3Z83HJhJmsNqosCx4UvZpnAgwRrbFzPyBghPY/CcDD0= +- IEkHsTPyRGNUNovPCz0IEHJKvX715Iwa9HHqbrwW71o= +- kQBaoQ2HI9g1VOdncVRSM9UdWdIt7FiXltck4j5lyXo= +- U0YJIbui5f97kkHr7Sn2/Z6kYE/9cZnJ9h0HoUBgTt0= +- ZuGlEqMO5bcua2UnEcNvkAJx4DDxAno9IFVZ32GWNmk= +- nbE6MLaGa93wIFcoBgIfzfIPIbO6CQEOkmu+P8TdIU8= +- ZqPizxoxeG9LUgDocnkBa4Y1roKQZANawZaon9k0Ms0= +- eT1P3Anntq3YxDLYbP1gP+27I+6Dg7XyTecT5hvcyAA= +- WzSkEgbsUbo343Qkx41kXIoaTOwQD0Afj/oSSYLPXBM= +- Q1OOIdw5ip8nCvIXBZpY0rwievxTzHrCmxmfZfgdVu0= +- xy+LOySvv+KaliJDw3FseW6wqsf8WH6+M7/I97+Z2Cs= +- DDOYeZUMD+m5+diti/JNucC9t/wganfPcDucJMltCto= +- bCSqdG3Z8NwgY63TsuxRfupQ6U4klymqf5pNksDWTzM= +- 5ABeLBV4oegmxupj8LMfUbKTDQXcnrlhaHniK4HtLOg= +- X/7S4b1Ws346l0ommhwmqa+H9oVMpgRIRzpyklbuBA8= +- iQekmbVK4MU28gXvlx0Qba2SsX+6utsAnEHixb0QJc4= +- tYZ6KnY2azBPgzTTjpSnfd4ptKk1CY160kSKT+/IQXQ= +- HGmdBtlmOgO/zeMqufe69XbzR4BzGOVZQT6eNa1TBO8= +- "+UH1V+6JaDAPZUyHxVZk/JjPQ5aGeN6lW1kq2lRSGfQ=" +- btZF7w4avqG/Hk6TX/BPnhjTmBI4f2PNo0FbRiQPBAU= +- 84TA5PiNyepVySugFstDsNgh52xmdq2i0N5eOSl2sw0= +- uDa+NY/KaIyMbdyBMKy4ZUzJ0f/5NB72geumPHQdX2M= +- grpwG8gf+ciwYRni+ZkJIpcx/KXKSE/xbJGCa+TsU9E= +- 0XRuHOnRae2r0MfFFOvLsWUIqAn82mQeTJF94rFDlT8= +- 0bNwf73Goi0W6Vv2uRBkb12cKz7YG9Y31FT/ubsJSOQ= +- kHfRr2nHvClJyRCzpHhnFwIavI7pgTFFjAZg3UtfzXg= +- tR176m0CaapRutfDyOJ+GfKCHi2YM79+gGR82VIrGRI= +- h9l9FebDutdk6TQIBOeWjVHkCC/VHju6akGORg+h1ME= +- yQNOSa8sMoiLmrMrGNqxb/qoXqDLfZu0+JzOVDHnZq4= +- Lisk+O5Au4R/6FuyMzajnvWUjmtJ2JdBnO1odmsWlno= +- FmjBH7gdZPQfapRIh5gOWCqAoDu8ut+qOQU9MUzKBZo= +- UL/uSccG12ZBF3eqwcnzVFbDPs6ir7TzyPEDOwKYvck= +- BZYEkhFbuUlBYHiunak32/8bHZpHS9OATxceGZJXBG4= +- YGvkvn2kXsquAgaFebdXn0ySGMh/p+NnizsVHHhFeQg= +- atZloD3F7pVpoG4NhHVmFYnb8UVgnAq9/iQ6xCh7zLE= +- O2YE0xAJxLNJCM9bGEsRDc/6MVNHS6P9+KqLvxAr0Dk= +- JiiNmQRcjM3vw0EpU8QegLcQ8XCg2FCR7SrqKOUH0Os= +- 3KIbqVH56AWX0dR6DivxseTjPQ7LhnQRULBPXRtzzZI= +- 1MQqFBTWOIaskoYnor5iYrAIAPhHGbxd0adTqx6G3vE= +- LEAgk/VmoOO1NbkA7M6PKzBLtsq63W11s60SPfgGq5A= +- 2ywn834eP+uE2VVBepMKaEF9vu6n2mxpuM5y+Dnumck= +- gBSQMHFdXAVAg8yFxzAGOD9g43SaaTRVm1z810G25MQ= +- A6n94KyTRmBePjtnHpPkjuou4xYXXGJXLYypeg3AWXM= +- ozpzfTg+PI298e+4mhwPyKkiq+avQY/dxAItbobVNpM= +- NoTPfUyrTbXIevnKR8P78nf9KwEv6FDjqxCf5/oHZWI= +- 7Q0VMyNgk1DZd3e+q1V//oNNk/YVwKn32MAXZ9f8FY0= +- yRKG4aqSzLt1ThawFn26m/qDEaX6PVLUPlYpOAlmgNQ= +- bVCO0gI1DPLwiUL4XIWaPh+p1bXt9FA7ldF1LfsFSTc= +- A5rRC6xbvTNDQWHtKV1CbYhr78pjihefrWoKU0QqUps= +- dn/GTOMdmHHpddI5p5LtCtHWcDIpkrCjuIcgfxXVsLw= +- Sw52rOLxjRvNJ5eEHVy0gYMhw2rnaQBf5yAmdm58f2A= +- 4SHZrJJU1FUhsbBOl+ENWtQ3UZvknBP5/4fmnAMfebk= +- M828OHKzeJd27/YXjNdYXZybCAx1KqTpLCdNdo4qfqI= +- NLjgkkWabDXsGdayFIrghqtwpRQWEzg/4eWK0n7a9oE= +- j00J+aDsUlwyk4VgVFD82bPC/lPPNK4NG21+UPcmyKI= +- qs+24d1XoUSKAXjaqG1F1TdGcPuHv1slxGVN9ob5U70= +- Y2jg61xlhBTS7r4khn5BHoKty49oCEA/Q3QRQRptdS8= +- htcV7nK3sxkyneBZLy6wOPPjscIcxyb7fZ4gXENz8pI= +- P7xp5Fxdc+fPW/tRgxmTrU0S96a3hfxtCXZE9AzsSUE= +- iMZ+WDc0LaSA16dNyR2VOHIw8BhZOTM6WYKA5lSCkiM= +- 9TZAjqCQsJXMK9Lx2YJNyBtqhG5VLCU06v0nmK+z/Rw= +- nwWzbjW18tz6WlF+GJWsluZJgWbUj5316UzZ8/eQYW8= +- v8CJQCPmhrwog2q0ph2AQfrdheuqGASxLogg9FFUUU0= +- ZLzglePah/etlfSxlJLU1THUVdMOaPM46DjZfxEpSFI= +- ADwT4DeS5O9jCJTBjsywFe9U75bH40R1Tq09fcJh3W0= +- N9b7lC0xFZAFMjB5/fmgewypk72nbcC8grfme83UN+c= +- cJDBSbtIo/fl/bV7NbcE4VRdOkzYiqj6RopFPfmYarc= +- e/ICeu951R+2yr0o4BLa8v5AjYQVa0qkqbHaSlsM6yQ= +- 034l7Hb6JxgOna810QdqdPXze2ZUFAPqLr8pAv5F68s= +- 3mFlC86DB3OOWM1V6NM1Ws0fCkjPiSzPiPwQ21dTEZQ= +- JTZ84JGke3QVsmzxwNx3xAgE18HKfD+gfHufTJ6yt/Y= +- g5z00ccpZPHyBcJIdyzZs7d99hEkXWh2DUFpw8bbdEI= +- 14sccjog3zQRYrsxOGwGNoryVc39qWom4T8A8YXzwOQ= +- 6hgltHTcXbipTyRoZG27sGGnm4tdi9SvYrZKKg2sNAI= +- iY+efm/nLdpl79/2e1JCbuo46gEJuntKAlrzSLlD33Q= +- jl62A0gvAHaLYMsX+Ufic9aqfIL/r45Ymgb26EHDzvg= +- VXqul46cUwCNF2OJkY2671FxFy8Pfy8dunLOTSrxK/g= +- 9Myswg7XyCx7/pAS84zBJZhW5TLL5dxrxD0+N63rjj0= +- sa12CQb2ddFzwH2e/jIQDPEiQjBn2nLIRuu0kNtrahM= +- n0wnkH0CURxI4y4UZg/e5Wegap7oENmvoZJJCcILa30= +- xhneWTi6PYqFptFj9iF9Lck1lji94eIUZOvMGQB8L+Q= +- z8LDVuDe/f+g9mkWgqY/4/rhh2xtSV5r1DMF6bnES/o= +- OgD0qXB7BJ/1DJprOIv791x6SccbScATswm/lMxh4dU= +- RfwSiNSvm6wMkeXwesO5cmgiSQERjdZt/+VPde+Qr08= +- ajTWVL3Yt13YERVyQHnsuVm34Gs7J/M5GbQALNB6Ba4= +- LBqC6yYAQ774bFbUJcs+LvkeJBRGes3fGFURGbZl/Ts= +- AIVQjG3JnHnRGcjy+MyQrAnw7kis5kqumGxGyc0oGc8= +- ecLCKAr02SUY6MHGunjHSDW4dk5oM03gp3tk4abQxmA= +- XN0vZQqmF0mgwNEBvIDEVId+rStmcWVMybyZYzEgcE4= +- POsjLLq/FFJfIC7B22nd2m9/Ard74abzdGG8V2lb2jE= +- sNvoEe/W1ADDkFHLrSSbtDtEfAmSLXBiKhSBbGSczDI= +- 2lLjMymhPrvyjKK8C4b3F02xa32CpbdmLOyufZ6IgKs= +- cT/ftj/XHXXN1nK+PZe46EsxqTevYxslydP2ji+vt00= +- wte184/zVKrfAujy76CD6PtUelstd/Xt1kXp3xDxRP0= +- Uk7reTMgJIPTFohohFnrmCcumzPu5tdb6UXicUvGqPU= +- UeOZnVBHvjOndgRGA7KfsF4+eg18sIMQrhQnkN960yI= +- URj2MLwydG+wuV20DNm3LIqiOVoOGqeUxzE3AhSu6M8= +- 1JZ3sF5MLO5+31bnSVL0cf/1R5jvJEuG4WmxFDi1gkk= +- d6rrMsfo3M0niKYXU8Mh0JVNTcyHIzTg2KDDTnIE2AE= +- UqDHYhxl0cqfHXVBz67iGugkrO77st66OFD/RJ++m2I= +- qvf8yltLJEpm+PdUwDbANOf5S6dIUphsHxlgORwUuTI= +- K11/TMP6l8cebCr44m7FFp0hz8uN7/k5bdFfp7rCAGE= +- yL6UsTkwzSiCzDMlqzOVk/iK9snQ69ePxj5Sh/XAAZs= +- w1weVVxu+E4m7lz2U8LTJOQtZWjvtnoMzqbzqm5q0Tg= +- DSEcg3PXyWToI2sUSKb/mtPxajaeNC3Lf2+Hc6fGDMU= +- KVjbilfHhuM7MVfxjgDQViABjjaRaIrgEyvmUfOmSSc= +- 325wcE7mdzxl8VJddP7fo2kZHCSln3ZoOZJVrBXmw74= +- LLuwq0jLHPrWk4BCiT+cemdt9Bng1CCq8XwgceRws1w= +- uwMLGqoe9GaQEhyCR43T6jteVwYOdMzA+gEqXs+9Lm4= +- hMOQ2tXt0Ls2H2h0fzoeXSzd643eIJFHsA2SnBqAt8g= +- kxkWuqYnrtbteS/P6/2olrSs9YqXGZctoZd3xemC4ik= +- m7UI+vAM4DYaeOt3a5AEvOicAR06x8uSbQCXMMTKf50= +- IF4L3s+H1y6djzFs0OgRXWj3tCOW+Ai9P1BwpLfkVXM= +- paCqVZnekpeJFiCe3AkB4t+ZnG5iOLOiNFiNffl7qpU= +- yRrDRb0bqdRlEH4ty2kvVcI+x7pKUVaMp5JMmAsXby8= +- 1pEofBsj/28pipoaHV8x88e9x2qJ4DF+78sbALlVOBI= +- LRoiZii45wCQkoq39WvSgSlHBqLtZORIpOVeeH5ZGT0= +- 2pw+xYBx1W7Kvwt3qJqRJlQIpGuqpOfU9qR1pAC/4CY= +- BmrWkKaVoyb50vh7qgvSK4FgmuKr8QGdchjrae+fn8U= +- IghaqSm8169LI9nZwEah1P3ovlH3nZE5Lvr++WV0qwE= +- gHrl8420e/+LCbN62APLEO9RR1Z6iaM6Zrsygt9K2WY= +- dYVlpgqFiiAAWvjbrvPFeNewEcn6btc7JS3JqUXarQI= +- auwbpySjD6dsQCau5T29nRkXdTEkvSiqMQ2w248x2V0= +- V99yAiT9h8W/0OZgV8fqxweWXxGmUC2XEEd+TbNG8j0= +- MAEGp1frYD9Zz3Ed9JG+NfRYGHBlqIz9HIQ4o7NFCqQ= +- w6G48bH3RHpe1T5x1uh5OVmY4+cCHgx0jVs40aFDAaU= +- X+icwxVoz/ALl4JlKd0OM6aI1/otZs/mGodQBNQzw/4= +- 36tY44+RWkR5LeJzVQVJ2J0IkhatBHYc2cJ83BFJslg= +- igsx+gbz2kc5tH+YZ15LLPQGC85m7S3W6ipJorqEkUA= +- uU8yuInt/aH9rOMBpGN53juVCShnRAAWi20KyRb91uI= +- 31qC85QZqHs0HuZXZtDNLUwlJyHTPv7dVH9qmQJsow0= +- IE8upgUcM/wrU2dLBwhvg/WBTAhPPl7Af8SOiNMzE6M= +- Q/u8zyNY0fqCyy5R2n0NS+4dlOyg0PaiY+BFug5oIVk= +- eJYcT0dmVuPq8OWrkZKkzL6Bl7V2ove5o2tKPEWSCWY= +- JcvCKwCbPyhbCztNBbAloRYZyl067Foruwr2kAhOwCc= +- 5jR3zihGCf4IFgKKslhSUGCmPi7zM05pSnropEA3VPY= +- lhx2P3K5qfduHpjvdeO4rGl5u4cifsnnAdvxPwBDSD4= +- RErjHBJLSHS3OTgwpbYfUTUcqYrCs4veWVMS5zULANk= +- 4I0mOE8glIQg/U/yYz8QK958rLo6978UgrMj5HxJp3U= +- XpOoa3vle8ITfFaUM7+j5k71URoaMyyEM2mx5nsg9fE= +- 2bo71RpEMZaHBdXiB0LLu7JjP0bJEOA2PiHRTA+C+C0= +- NW43di2EiJL5Xcy/4AUqnF5yyQlN65CUNGhVgPwh5Fg= +- c/0cgqUskM+JwQfB7CTqNyNgKP3mJB8icGakwUMcD78= +- I+xZ5ds3KnfhPymTYvtMBrOjCJ011oJ7P/e+lFnH7L8= +- vuuieWlSo78DBAN3vTMBHP7ZMbWlrtGwonMgB5Kanb8= +- Mlclk6oJGXudVsq6kMVdm4PUQUpTKvBsoHFzDPcYTy8= +- tVSIx4IVRIOnfmox7DFg5bS+5DpP+cdbkNjZzmPWBZ8= +- iH6WnG+gbgpxbDZjVxWL4HoU7paVM9dPAo/TqnKzRJg= +- WAtpByQ/Eb4KoIh8ZLwTpC0SYGsishbP7rLF7wBtp9U= +- 0jdJ3Ii1/+axT6daFEjl8yQV2x1R6UGGhL1fRzcvyxU= +- YW5/42xP1HqvE2RkaQtxoS8HMpOvfJp/X/FcuRkjJOA= +- 4Ll3tueJHUjOcVjLHbhZIWjWvk+pj0KKd7LPbLPcCeA= +- tGHqzo+OUqjwzz+YiswYmmy0UYdcDd3eoplmMzvO4PA= +- QkktoGI0rQrHb11d69ttGuAnz/vnRqHBO4m7i8ATkTc= +- DAvqzviHe78kFusA8rXcljVOJt0d9VFzIEWbEjaGD4w= +- rLnlOEZOtFT5IZS/uFXF+H8GdOT1FiB/jCjXugz58GQ= +- UT0P2PsLGOq5clRW9Od6+M4N0hw6imIxlWB2IFeoOkQ= +- h5bCK3qQ2K5mSsu0yc/0r1NXofcVTGUB9uXJnPK846I= +- RRuPRAEcc0orB/OhoPLajAQEbiu4a+aXD+SvsRoldiA= +- ViEngoRoJXeBYU3yA4J67MwBT3atRxDHJyZnoitMKdQ= +- xheeNOIEyCIuYNm3GHTXHLryN31912X9e6sBlop4mCs= +- b6wTNhbpkQU/c6x6BfjZHRHn09V6GTSHKv+DiqyiDvg= +- RbR0c+m4bHDzJya+lvx4Ao5Q0fhC5SDFbVy2mOzuIFw= +- p9NR8945nHRgZKU8aZWasQMSoAPsY5hbzYb7bcHEAtU= +- IfI8J7KIi0TYYfpd2GvTNArwI7s1Y6IlXdJnXOBwaqE= +- fWVz+WIiaOsGMx549sovvyZVs4KZInBavdGVw22h808= +- lDXz5ac2qAvDMBDkipbA1U3neMJq3kVaaOe2Oc5jDGM= +- viqtfPr4vDRvAcq+84S204C7b+p/d8e7v8+a0h81ORw= +- DFBf/D1aCIKhOmwIK07+fZMT4D5IdSHc+L9maBLW2yQ= +- mtoF/SumizVj82QSrZ921O2tyyzlnS6aaQ1xWRFI+6c= +- PCMTUuYTiT3shHZgZ6yxQrr2WBNhKYBu3K3NCOpsu+U= +- 1BKa5U+OATJeI251c6CfHtnLORLFpXIdUJKq/y6lzp8= +- HakTOrnb0R0pN+yNMS4eJWmFcFnnPMct+S5nCSiYOrU= +- fvCvp2xY5sV2Af1jL3qqKeD5fsWwZA4NTdEzXjspxcE= +- bEsuo9JySNSGZt0qAqM8V6jNz3o1GjUZYzu9jlI2dKA= +- ZmPRcPqMuZ/ZoU0qMuOcpc9Q8NetbReFJKMPiCBOwQo= +- Da4+taW0lwg2oh/4RGU+nuzfHG+rk6iMoPwkfulXlpI= +- 23/4jmI5mPWqPGOHQaNOIqux5JuWUO2MOROVpsvvW0c= +- w6qkedtx2QnS5vYspanSF6Zn+g8xmt5Ic1z4xh/5S98= +- lOsx9jIxwgycFS+1o3t1AJEWWz6IXjz6v6tcgNqIbyY= +- qCDFGg2TazJiOvwT5bQ1XWDuo0+eO9EFtAIK6dGOZhI= +- DAWF4gLfScyqzmjN72YiAMgVmHUB6+TaNFWcx4hxSTQ= +- j7iyPRBKkUlfDBTRMzvgTz2ySHpsxyYTl4e7dSZ/Zuw= +- 19KeRTYikTtqCMP2fzgzfNomzIvjQFbv/1HspglmFM0= +- ywsqVug0OFnviw36T4X+/d9nTSZpebRZa56R4sfzlzU= +- O30ZQ/A+is/terdOiVtZkg11y3i6aCJHpIdJjibbwKs= +- 5aEZPpw8FDe6hHpnH69YJwUKF8YJw3hSgp+bA6xWk5I= +- eEvjnojoKjHthyluAb7Bi8E9Ax5HIbZ168llJ+9GC9w= +- Lmuc8187OcUcUUGbcP7VQvjK8fAV7oxk2yG7WhC9Dfc= +- iFlgxqr84jkMfgHLVZKB7kb48DXeaLRvjG82UhrYASo= +- uCEiqJ8acgct9TKrzw3hjSWKhHtsmYx6qSzS1GV2ReE= +- bor2pmq7H0OBWy6t4wMgLygWd/0X47ZAWGGjTaHuSy0= +- h4mBdk1S6qY8BzC/P0AO0CMQfc6Tidb2C0A5decH4QE= +- VNzMfMSDD7w5MdXmzBcvFZ7HOFIsTg37ZXMSPsAv2+0= +- 4V2bAFGYgx2pOkonzxPO1uDEM+ytFFCBGv7Z8xpPafc= +- ZmUvICMV70pxXcw7igeMY9m2Cdn8C/ctPGcBeLPO58g= +- BOswP3SUIvbj2rZrQUHRQaPYw1S9h8YvI/Q7pvopM4A= +- Gc2lMVmKNUTLJUyJC8pYL9LCykNtwGsSIFwYWemp44c= +- D2xoc3Z7MR4eAIFP8KChswDsSuMVY9ZfxIaj44rxz6Y= +- cEYL61Qqgv7oC2iMbcoedClumbguZfUjsqsWHkhjPzo= +- hHj2vMtliSP2lBbUSJ9CWaBK/593FfblX4ig5wZ+Njw= +- GlTb9KCuh3cmMwbkot8FaxVHtN8CWDZRP0OXSwahxoo= +- 9CugIUtAQazxh0Hvy5fXDIG/S+VU0AphpNikm0hv7lE= +- "/1H2OjxIvJnC/GRV0BkcjrKA7XAeOmcAm8hKppUrXhs=" +- "/7k7qtE6NtJrcK5HDltnm7ozvwA6pDPmQ638SbtgfYs=" +- ENCLkOyUv4pILeQe8UgM+SGYa7n5rXp0D116MCE4J64= +- 1BtWP+DiaIpXncDq2FkZjemJEAJ2U9Kur//FK4XJ6zM= +- d29BaoFmy4OAadlgOkUnhWrWrYvYaCbMrnHrT5QNaFI= +- qpXob/BR5Fg1D9cgh7QvMvBRf28xmK5aQder8i8JeqA= +- FLUcg761/LSCsgNPk1Gf4xl3pq0cCNenum0dDJGw35c= +- UwllxBC0JzozVivmlpoiXhLTlEulOPZrkuJFmUVwnmw= +- TjQcc+qliDmWBdLAe3ckMWPt5kl9+0saI7JUD9wQXYo= +- 7XUn8ra3UhpJhjz5nAUbr+QnCHwwk+h/GP97EJhGnbE= +- MO+WlJEDhwc+BVGFAOfN1eqi+DmRRfYWRhw8sREsbTE= +- CQw3ijQWrdgkyyg0kcoPZIRerG2gJimC9n8cyzAiBSs= +- VKdUOYPxaEbX4e19M1wyhUHd0/KbELZdsAY866fOd4E= +- fULgS8i94eM//z3+RJXPE5fZo/PPYd9XBO+0GRMdwVE= +- o8vGIUZgQ1ygQIsucNCrtgW1qSuAMfMnBzYEllgXu/g= +- i+4b5V8GZgAdyy8guYnDpwzHiLL3+NJUw/OAc9CCX7Q= +- 1zix+GAw/knZOxsSb6DQewcHp6r697KJHXcElx0OQwk= +- "+ChWTp4YyhB6RNrD8MJNkCFr8GGYVLvyjyH/1FL9liQ=" +- soFE/N0PPSoPXkBMgN55HYVWk3glP7v6/Cawuh4rGLE= +- r3IkCHNJ5AYm6Ca4lSk9U5ypu+mJYYZn0Hau279GDrs= +- yx6bRvx9sSgugcYZPXV1/962zrNRXDDchlVOw6MDrTQ= +- hfyQgjd5HDPKdwCpE6u/Bckg7i1fQLD1TDxHmRcU9ao= +- Kd2IEYC7dc+TiDC6CgYsooZv99kRAHUWGid2+RSxsBY= +- PzZUtJv/x06QeHe/niTI/J2qWtWKVt1aFSHEMQbn33I= +- 0lctYlCov1FJ5hSXi2PShdnBUm9eXqhSyjmJdFwQ8gA= +- WcMwAoO9U5OfjMd+H6yGHBf115WYpgQeqhSVn5YgCi0= +- zZkMbJ0mOeIY8C95CkBGPI0/wzgKhRei8PRbRNVk0R8= +- woDLdB1BMHK77NpcPCmnan8AIRAflO3TXoq0UVcynxc= +- EXVt4vR9NMZltEkZ6rj+NI2SCEfdfJUqdUBOM9/lQzs= +- hc325KSn/fptdf6EO7/nYzbG0WSr7oRTtAWiWCLnMM4= +- XTHJmZQtdpjGF1m9bQyGlZFf2O/Rb43BARJvok4hrdI= +- o7zytUV578NcgnRMZRvGqsvZU7BfditAlJcB1u8Mo2A= +- X2WjqBcyLVwg25riK5vO+2G3ci4mu6DKGfvylOhHxHA= +- 6kpsmvB+LfoVoaTevA9lXdmsf/RpabRzzSmxhDzS3s8= +- B205F5lgt7XMozIpoz/nA0pLnpNxqGMkb7G4gbjpI3s= +- Kqa6hLeV+t+cBTRsrX+Phc7XTu40v1zVGophYQFAn3M= +- LmGv0l08p2oO4mXbwiul6dhE3JOsXy43GZo0/L3LWlI= +- mQRoisLNO/4bd/2rcaYoafnyXTEAZ8cpsTJl3UWTZA4= +- 37eptnxoeLadMbjx7UZ2iuggugdQv+PVNym+o05u2LI= +- PTBNw9ZIaFwX+VwiSEf7xBEtRgVl11gF2b+RBy7aUs4= +- F1+36BRdEesFGgqsysG/Oj7RbvZ9ID0Cwy3sNaOq3nc= +- XbKDhF0wvOxAFmTX4ZigU7W12OhGERlACrtjtKM43UQ= +- 852sbLq6U14sIHzQzY8VSXQiPISPcn+Ys1ZM6labQc8= +- SUQRqPtiOc//4GIEbQCNdOcgDHE4XDvliSuLwVWnBkM= +- EA3ryJ9GvdwQSm0uovuFPaK8/sOqWFFpXZmRxxFlY3c= +- cIx17oV9KNOGDe2xuGVFTxio3HRglpVwtaRh50MY6/U= +- 4Dri4ybPiijjnyaqHktH08kcDA1lRiIUY8qLs4ASi4k= +- EP4e1e2ONckozB7l+GIpM9IhmqVmfL4+Ue8MgxdQo/g= +- JUQqYdDwf6ZIwbzK8fkixQuE3UUJ+/BjBbIRNX/AOBA= +- odDMR4bQz1B75/eY29uFQFv2UFwAP/F/iLqlHMmPKcQ= +- Fc444KVpBZ3LimdHFyS4783SPZiKp79zfRjZLSIIaW4= +- 3dtWwxn323ks1o+F0YkvKi71Cwp7bPYeaJXQkPjKDE4= +- RbFk7cipBF8ZBeuGQrjKp3XfsE52DSHcLL5UXo/IHn4= +- jXMpyDvGrLlTpYTQyBbDjfAXQ84fjOZC3MLscvQkfto= +- uY0/df2sh36Zh4qbcJ8OE7YD2zJz6kYp+4BAdepANfU= +- vmyovjdIGbBIgCd2Nc+l3Yo8e4iLTZbGs8KK0vxN/W0= +- 6+HK5uoalLBej6pE3tigvDGmffj4NvvQOMbFiOSwt9I= +- RVmrtb0r6zp5CCwJgHb0GHYtaQQRZWh/opbN5E5QxbA= +- HW9VptEHKeJYl1DzjeKoFnBD9KmPByR9h6nXO0FipsU= +- Ot8fxTm5Kb5cD5fSc5FUvFK6w6aRlB/lxzEz5qWf3ik= +- C1EJBc3eF9xm8fstmrz/JKOJHNONqdB8YJREWavpD3A= +- dQpoPtPpJMdb2e5wd02RdqkzVqeTk2UJI/4wjVBqc00= +- Ppe3Z+clxthO1FQ3BSuDVTbZxV6TXv4/pQPdlKFuNoE= +- WKI5KpfmK1Wbu0U5Dt7iJ8LfSN6AU7FK6CpsTqNtf6Y= +- a5/9cWMd1k4SMe9B4TjNKbkzxocHPB9ypmVxmY2b0qM= +- BRKW1yQQSOhl0XYwuv5WpIyu4YGpHBqhRwGjQQmNtJA= +- WfJx9jCTVZYvD+xk3KNs/0R3bqThme0KNQFH4V4POmw= +- I3Cd/K3iHDOslJkZuc4sgJjCRXSwZnxx2LFFuYOCa8w= +- Qqlksz2yCDJxShRdBqg8rIyRQ1ld0Ge6lgPXy1YdTiA= +- "/TkkC6qOBpXLB3CiSaRgsNTpnaU6AKcnskomnNFkVq4=" +- 1VMh5FTbWt4T2jaH9elC06WWTxFlLOUczvgd4qV9JoQ= +- elHQZKGiFqaS91P82rJ25P8gGgHYtm9W1Q1NcZ/Q3Ic= +- SEur0MCV/viMi2r4QACCbNv6i6Up4CxDUlSqgdpZghM= +- F2MfsB3Furn4yhPjQlKVDZVM4NAMjp/X8cBcJf7eQzE= +- eE3PQFZAlHX1Rto0YzkVukc55+AP7r9ZUZxNsR4qz0o= +- xKm/18E0ofkiDIutsDYC7sXvOureesFAi7EBHbmdrWE= +- TwCHF5bGGJZng3uFdP1MxqOZrLEyy1aDDTMPL+pbHA4= +- csywOtZ321qS24QYDcPILyWRxTSt/s6jlfswp0ogwow= +- pqPKDsfEFeL6CnJz+q/4fcKhNwbw+z/XalonPzP59+E= +- Tnatg1RGFDfATvm5skJUC2QG14L/LD+yiv2rW0I/iP4= +- TCNigHXWFbqQ4SZEubVjiDmshfjlYGFd3OE3Qm8fFb8= +- 11PKfNrC/CZvwZajluQM0fOzkbtTvJx8VJKZ7jVbjkQ= +- Oq2+gHIS93ZMUPN7KmCQI2LK3uRjB1N3kj7hRmo1vEA= +- lTreDyjdoLB5R+qIXiXY+mUjf0fBS1Qx5jCeH+0kSWU= +- 9aLZ4zsLJkk/Yt1HCEquYt8crTcTwfT3C38xsxAdztI= +- hwfu1EnYAQ0ZHFNlC9iuYmTz/pj9h96D0kDp8CwFa/Q= +- MNQwhf3HMJ/fTS3vV08RYxM1yn1Hishlr1tEvpo/TiU= +- EGVoNEIBnnvGaZD/UCUYJKOPzqtcZugXmFgtEfJMg68= +- f06VFHsrQ25jTnk+bnWcmATPW9FzN7AoJ3f/njVmk20= +- Tj3P+xMe6AAoStkUw/XVZbGp3iNtd4uNzWhPKqC//Ak= +- 4MJ2vLspvcNuG9ECMHgCy0vGh6NVSlPeCni9l6ILa2c= +- xcYoMD1jVYeCKkkPbbUUWs+LDZG08wWA6VWx3Rsk1tQ= +- kDSZiV4CkW/dHquL4aBA46Suk0dxDdW0s1aIWq0Yehc= +- g6cm+1tYgcbMfOzxNS8oaXlE+PSWBe98Gx4Qj2TshyE= +- xC/qanh/qoTMab30ngVA/TdN1EYaafn+MZzRdyPqNtA= +- vJYn94j/bl+XuTIb74YR2o+ZPDuFoGWVkV0x7+GUpK4= +- HGX/AW2x5Y5vc+C3Dce/tlRRhOdV072zxeJ1gLBfmbg= +- uXR6XTzK38W0jmIu/jPr9zNEPIf+bLAe7apBEwbl9C8= +- WPBz6x8m0+hiUgC/yqg2pnPHzMabHaemPKSMpUxA8Ug= +- 6R6I7op07Wm5Vsl9CGcHJ68ZsCJFnJO5DHALdkMZoG8= +- y+aIiRWKvwsCurIp5/2GUWCedQbRt7+ykqRLRDCagPo= +- fEnP0CVqX8YMcTG8iS1eNCHcnP4f3MEfW9BwEuUOaaQ= +- QuzDFiOufOAzMJwT/W7dz2mt32XDKNE2hL7mVUFdcwU= +- gtqZZfIrM3KzYm1vLS8CJap1hwP/af9+8gM+jn0LfFo= +- H94yH9s8wRaLH2ntB5kBgljt3Icjqno4EhVXFAV9XcY= +- kQ7swLBhTCqeOCx2QJ9pStBaU4QlIA3b08UFlpDrIGk= +- b6MhLWJVifuNadrFWnpgnQHgd0AAU/5h0PV3bLwJt+o= +- nFcpWV+yh8wqIlYoBEi75wbAqGbwNyUVx0g94q9OZTI= +- bkYcjn/5SlseEeuJ4gMD0woGDSsYrL6p+eHxAeoQgFs= +- y+rOjVg5i/DLq9F8tsLBrM9NN145cr3sJmy5NUjBX6I= +- iRGEumtgaVlOFW6DPZmp9vnmOFu/HRCToxRXn1rJJZU= +- Q82ad6h8bbEwO+Rio+Fy5qeUif3G/uV/iGoXp8kZZgc= +- 1j9HATZ7xnr10uJA0JQP8fJWc7/7hOS4CH2lVwgc3tE= +- AWDJitbc1J24JP7JzJKpGtFeLKb0MVrbLyVJgMEpQVU= +- iiAdq6ehFLO4CKr6iMb6ZOPGK/n/LhtIK9VF53Etmx0= +- E1wVhG+rTsqL7t/s4Ol9Wo3rwxHieuz0YB3reZohkrs= +- POyHu0RtYHJ/C3ujqeE3x6Ak26JpgFuj+LN1Sg2faIo= +- lIWrhsZHmA/fAMIKcmBIT+2wqBEKAojWRBGA+4XeePc= +- rp0fbwoXBcXjVqVptNK3W5SFCCxmNFdVJ59hDUQW5dg= +- FbdnQ49UVyqKFge/v+Bjsisa4Ae2i5Yfirddz1YRUxU= +- iLAQgYTw2mkS7D5Zd+v7qFPMDaKD8UZnLc9uvJduujc= +- yO06N4SfTLQxrUlqiY1HiJnyO9SgDQtxCe3RpGM2Z30= +- BjpZuKDJWFPu0PTmNM4+TwypaF3trD2TAkz9LA2fPqs= +- WSTmqGC3EFhCFOizk803HyckX+yFpceSqJtt8vSNhvc= +- ba0uA/ZXTInl5CHlireXXUYovIlrjOHQpG8F9XeLtoI= +- "/nOCYK1YhvrQUOyrzcKEJrrdyEPXrijYP/ItyhZo7+s=" +- 0wFX0m2xdr+fe6IfHjS4TsgWT4b2jMTqy0OEq+xNvKM= +- L+TT3aiEw+N967OXXYKhOXtJrxHk9AM5GJc1LVYJMvE= +- "+/fdGZGRC8o50A6W8xttnaLg3oZ/aNjw5+gKkp+jvi8=" +- ZffEwA4iFxONF/H/pgim7mx68cWj4cCyM1+I42uZAxg= +- JKAe55O7jyYlg55H/KIzTg53KZk62IlsBkg16XJ25Ig= +- M+eiZtRbViM6saANDJz9sV3Ml1QTSIdB/7b+jJLg6Pw= +- 0tkpQaKEcCzCM0wakBfsFviIqqjQGRX7YpleXgqE79M= +- OmRzodiTteIVuZ83ciC3W2vmrDVv//gaXYnCrglVVLI= +- XxhPa8qPgWaAKFWnjpfR9JfXbo+64HFqp2626/WT9j4= +- VR8/moTqiCmJx2Kp5YHnvw6IDFJ8LzyQXx8jWWUDeyo= +- SVX2JMnye+151iJn70j/sowkgxUdarjH56mi++DwuFY= +- JUcFeYOjZefV3IOxm4DF2HUWc2h0xuOADfHpyIKRYso= +- 7onZ0ueyf0b7i5ap0ZzA2ArA+XJMX3QTGP6Y+K1gCf8= +- 0FJcGIUVCPjF/zvrwryZWxXC+mzgrOuyuWRiuRjrT8c= +- 8Fio9qMxXras5DOmahrdNMQ/QFn9+bjNcZzsCid+5/w= +- cbPDhiGS9ADLW46OTgxJnxddvJCzbSdvPu7F8GlGJVk= +- MJk3Wz3YUjs1Dr+Vg9m73Nc/XTTAWsxPXZgGIZZW8aI= +- eb3Q5iX77Am0nYY/QbNuj3nzPHAGHX/zTpdgSabUl5M= +- PxldwaAWjc8ezQn3XPDnI+TE4JbqKJz39iZqBGstWN0= +- Ily9VuiOqIMor0sG1psUywLGXLjPWNt453Keg/TXRAU= +- GYeDduLICeFmPEEa2ZMEHtKs99pZS4sD6p5Ix8I9A5A= +- LxWlBvFeV4Lfau2YkKMu6j+TBthuwLEYDFbYB482mU8= +- Hs9KYKwLGP4AVtJmr4lTJMDyySssu3GPYBsID1SARd0= +- KsmrJGlWeueRMl/lzJ7IZO5folUXq9/epFFGi63MCk0= +- 0bfXivNvKYYXvv9PyDSBmBUaE9RNAa0+TDBeKBH6dAs= +- e+gPrsvq7BLRmHCR+mf2Cwz0ChEJtP5l4XVj1+nq7gg= +- fGNLv29o03bIeAk2j1QSQ0aaksAn7PhfttSIN06VOmY= +- m2lfu4MVrKS76jkoJ+md7G2VbkDE7ECxZ8WMi21X2RU= +- "+ynq5BP8yvCE05zvI46UHGYKlN0N00dptF5rI+VZUxU=" +- feA92yvqFmr3kUR0dkmjdfTHphkBDBTkefVNVPriyDk= +- "+qvHJ9EmEfBdUkOFnVmrbBhajXo3pePkW4ubvSAgtyA=" +- 2eVAbpMtyCETcnwrwikWuKDGu3hbP8qSDTbyP7CtZ9k= +- 3sHxA0Qlx0UZpKpZthfKyHZXZF5NptVAPQsQaEqilB4= +- nMy9dbHhHpqVevpNxzV202JvuOlyNqvAVT7SG+rm11E= +- kcLStcbClgJE5/gcmpUjNsZOeZ+tXmPRcXzLAk/jC4o= +- K4kVJVu0VZ1PKFBr65Gs3kVE560HsnoJg8Q7bmzpaf0= +- bjyscssXHOW/vYat4Aw9FA6mgRzpje7A8Q6IMl19b5I= +- R1cOJf4JLdQSYnkqbjdYpcPfEq2e7cYWqgiIanJw8mo= +- 63xok7tXuojDV8l5vLAbMN5cu0Ev7smAzLxP2jHwr8M= +- 4ezjH/aTneRdaa5gcCLcxPuAvoaygv+uL+zN1h9uyNA= +- X0dmTSc03BHj3PuHfR15Fth7uXQHlnrZicv4Yv6DRWU= +- GV210ZBNejTwsqKKIr76Rf3LJrz+y3uIT58Py3QjLrQ= +- b4yYekofqDfKuLAaF8Vmk0t4d9utOe31ZZqViBZzzYY= +- vsMRbzYmDoaOv5fOpCV5mWXUZDHYC9KP1uuWOR+oCJA= +- hyaYfFERgDSYKyCLupmfYmNRod3f45NmV0lMkdP5now= +- yH0zTQbjnJzZi4lGExu1NrdsDF1Ze7I/ijxR8pW869g= +- wc4OtLAGTD3LDCjhNQKco2Pz8pbeupjpGFTeG1noi8E= +- z+TchL+T5xQ7khsC3nee9K7k8UEhxNsoIBC3V5vy8Z4= +- oSqCboogJ1nsM3HhGBoL7ok2JTMgywsOKam+rPakpnY= +- T7DVhk6/J1k80jfDcqJ5nXBxjLR2xfJ4mQBTV4ze7aA= +- tnbI1+XQjwJoa/wZVJnRRtUWOKy10eSQqlOnWuBaV9o= +- zlqE69seee4ZzrmI7kzzkbw1DIsB9yxy3n/zbAGOXdA= +- "+tesQoSA37FVIi/QaXCmfcC2FHbsENXpIHFTr2Dja8s=" +- 8i0xR1E7uyGPKGSvvJhMI4vNf/myaJ6LtMKGApNmUzI= +- CkZm6Ab0Lye6RBjZEQvrWTIzch9YzU7FbWvRYNlsFjc= +- J+UIGFyrH8KaGhRMSYIQgA/+qcNYG071jYeZ5plq1ak= +- fNz4mA3p7nHuxbl4SECw3rik9WOCT1/EQkAERh2xZeY= +- 0hPfqdQykdhGwt7GFcixuQyJ/zM+ht6PuPhhR7c4MOU= +- joRAvQdrhc2NAevtMPRKdBpt6PNQIOedBjrvKuthe5c= +- zr/lZhv8rCkqFmWnVowQwBPzudG+iaVKvNCngocV1u8= +- BlheydhJ7GLCtgs0hLWnpswuDfz9n980G9gOysjR3N4= +- 8izQ2PmnwzB1Dv5orN0OO4ztwBnna6Z1dz6X29j4Xz8= +- "/8K+aoa69tGGWU1t7YIcC360JJuBGsMspd0bI+1mnYY=" +- QjKbFOsky6OOGRCn04Y4E9SHL0QDhM7ft3uraRlTRwU= +- PNntBBLE0HQf3MueQjkoHQzsuBSkOiny01yCardjgYc= +- XxDov2GHVPyO+70H1R0pDp2pWv9WaNCmElNKkoeuGaU= +- dTOclmi2P067WYGUNDOZug1x515Deekz/5T2uCTbd3A= +- DkKcK9XZ0q/fD5FwIO5CFTXUNobdir0T6NzhhGtjQuY= +- mkvXTMPw0Fv6MjZDeRMIkSI9CPge2NNvMmyT0XhEKOw= +- Wain/qiGpPPEHIeBaKsrH+4nWlwaNcR7Oi7MY14LsR8= +- bY4u87LJ8EgtuqvW8/26pryiJoCk0JIl/Q/UIf8RDI0= +- LRIS3G+Eczil/SvIozebihpR6uX6YYivZllsq1pod4c= +- lsz5THCfyE+OERRNG15fDGVMhFksEAcorWRNQOhoXI8= +- 3jDP3Hk1Bd0WkrLAMbLP/TxUbr9rjHPZmAe3qAKRlyI= +- aoB3iCWRDFoFc6lnioo7ywey9OkG3c1MM7bsNrpg4Ho= +- MCIwhDWtRswkrS7eVvaOIbUkIcD4Gfk4S7XB0dQd1v8= +- hEfV6F248TUGH9366NNaVMfiqDZY1aKGDWdhsWK3tMM= +- VhMUAa1mtyo0dQdG9Pjku3hLKO0vA1MQ0H6aN/6yPxM= +- 3hx1yCfMVduoyyH7VkFkToiZxW4r2Qp32ATnlMjSQ/E= +- 2CS8IoVDKgQ8sVXXqTkcEMSnPFVVccLH8wKvej4G/44= +- R4XjhrvMoUWpXMrD8mmpvrno3bac15GYufA9+aMylH4= +- JAcNivYLWWJxyA+H1NutMz8vJR4YAyNJd7BNdIS2ynM= +- md7VU8m2r3AW4cFXcNNXqiPND6w2oMpXjfjKtUFu8rw= +- Z1LKOM4qp39shYLZ0B8s2P/n5bTqPKcdQkFR194mkKc= +- XY12U1VlR16CrZo+wwOjNB0B7sMMQ1uoZQp6d5joVP4= +- 8tM/7vl6Htr74fdDHDFl6xo+rbces5BS0AGOUKKB9Lk= +- kJu2gKrpMNoT8WSYrEpnGvJADBCLmXIGb7+8HP6xbZc= +- DvpFjlItzbndgvMrBWYSSamU+/NDWrjIER9+0GKO6CQ= +- "+fALAG2oSUqjsjwrEIUdBzXv7jtuxLjlmSW/t0WaHJY=" +- bDejj0QHnHQlSdSe0QcAdX5ECCkKgiX1RB0deRAohzc= +- 6QNEAanh8ZKxOeag0CLx8t/DVzlksTpNmkgoPvy/n8k= +- IheBmTgPf2eSqXjsNQNoln4p0GDnNstPO0xDSx3Fe6A= +- F63SSo0v7RZ7HLzQ0IeGFlm4M5Lj0BWmh93yssSRWLA= +- mi32kI+igdAMen2jT999MfCYtog4nAy6w6Eaa1YKG9A= +- YQfbST2Edz67itfMsZtwR1tbd2Jo/8pIf0n+zY8pEfk= +- S86b/K2Jitji0SXijrAGHzcCNIJFLJ2NDHEcFR4heks= +- 5Zt5t+ji+me8RboUdeb6p+9TFcmrfcfxdeO0rvePALs= +- jtQQbyAJmZMgxoxXWgs2L+iNxIpdj/XACsqSdh2n3Ug= +- dXEoY3507QIOxw0v4ZlaiICSi+r0oOhpmS7CZFSqerM= +- tz5ncsl+znXJpj5YD/CyRKsGfaqYdYpM8OF0W3NME04= +- huAivPkBYp83qvKnvJ/YFz41TyvCaT5pVsW8J/3T0aE= +- eBj4bfO/2+4S0F3Nfs1PescOaKAy7S+JnvRNJbBxmYQ= +- G/EkgNwhkP4sis3wn0v2ynzlaY7tZOWSjF4us0wC4eE= +- "+BBHUM/kukHllDtBAgtqpgsTZZu/fcfrSx5J4R+WalE=" +- Ne+Xd1FRNRRURlyuek5eqGzgO3AWHJmiuWYIjjKx16w= +- P36Sw9fUKbkrJNmNbS3FFjGoucO2g7g28SskobFgFb8= +- jS0Cj8XSISs+MOv6yZ0x96BlgyYZ+r692WNnlIqVOuk= +- ni4y2Aj+aUyLwLKu/rok7nG2Qwj+vEwXQjOb2U0oxSY= +- GvhaTRCRUStB1pxBAyH+43SxnYq05eNWSBtadYr5LW0= +- yE3o0Q/Glv50eJo7n73w5Z2RRBDWbXO77mCxFKq4Rdk= +- Vp8br4/NFm3UTbei7+z8TfivjLFV9uO+FarsSPsy+VA= +- 378ZwhQvoTJ4cJ5JJh0zwEZDsd1VIeoh9iSxIbGp0o8= +- 2DJaO5P/oFkk13aOu8YnMepyZqs/j2D6wWZyXvR37no= +- APFWvyRDh2w6FGXzZDIO9Hl6LX8m4vQcquUn0xYiNQE= +- RRQDBLOo7jK+mb3FEeRbQNE63wehHf4EGkbt1mShr+A= +- B1p7k2/Fel+ge4LarFcpkXgxNB3PUnxOv1lnzzN6YXI= +- gXrNS9RmQgc8dufVJ69mwhf+kO2rBxE10dRBdoFbSGg= +- 4qWMiuTvHcUR6h93kUZ1pqQHQwKg1ejaoERjegrWfTg= +- 0oUZcldJ9bNX9TrY9cx81y3eu6sseF7584mE62EAhTI= +- bnX9zkbKi9o8Erzax39IOFj0+1kJyT5poEDrtkwrX2k= +- z0bE6R//6cUyt6cbFnfAbdfotDpjC0QGQuDSkEMgmCU= +- z7//uWAKdPECyBIqLzyUmPzGYr7hkb/QQCacuvpB7sw= +- IjFY4pUqOrm6gZli3+8YkHyHFf85YdO4y+ckg68yvNs= +- Oe2Ryvv1zOqZ/+/4DIy0LrZEZtrvwUXAIrS/Vchwx/4= +- u4LZ+vBjBQ18CQNmmT1osznp0ZoE6PcLcvd4J2CliDw= +- 6BP7SLoTeTN075gKw+myWidw0a6I4ZS2gIuDk/NKuDU= +- 1PFPAN/zvVUZ4k3TM/PnYnH9KiycH1bM6NaCVCXsf+U= +- OZIblTHLJOXG7+7646PMulvkQAR45m/lio63GmffRZU= +- EQLJO7j3GGMwIjNFDmEEmjXMc3mmRvC0WSDtlu3qgzY= +- zzsjoNEXk0zEAGjTo3724LEeWoN5mEnC4sk0TWK+4nI= +- B9LLRg94avOEe8WQUXMfXrUHEPMa9NUtsHxmnLYD+wM= +- RUwE1Gts4cez2Tr5bpGTxJ/QSgZBJPAzjOCPd8O0vq0= +- RZUeA3paUKrpYG295fHYWwDt3jWBUo/a8FqOqYb3FiQ= +- DTLg5WhLqPiis1DZYZCg4mtPsFN8ciJXApzYuDYQpDE= +- WUXA2Jd89jDH1yY5OPXN3CyXTvf5gwv9tGspEBEV3rI= +- I6ujS9lkfxNETm6GvCOKu/0Fzwy/uvz2yI8UoCjdEGQ= +- FnUxE2DiZH76JTee/E3uEDdC9eYfLEMIufm4BSded64= +- CXHU1FH+jM4i2FFF3PoHKiQ0UkuSgLELwOeMFWjj5UY= +- 1B07Pu+fGaBqIfTQ8lk+7Jlzw4VfI6lBm0CIZREW6FI= +- ElrO+5qG4I7LaXr5QH+rXiZqvufucpn0WxfxKhCCRWM= +- 4agcWwaZ49jHlUcm8V7Y7U9dORVTPa6W1w6xrFDk3S8= +- TTzgFd/HXIRxQLD3DkPKsm0fNAXtmK6lSbR8bJJ9odY= +- fo7+ALb69+xrrM6x3gwgjZOAvCKFQayDTbZK8DWtItM= +- jvCuI7OZCyqFWTthkoeQ/9j9/XXkFh6ovpN4NDpjYV0= +- nYMCC/CDIa0gel/A/hMj0dfKAX8n60OsJ5o24TF5bdk= +- 4dXU6OrUTiyh2JzC39H9qL2i9MNDaLDBYRYDANjkYMM= +- mdXzKByuzopaZcNx3UWikyXtOd4OVwkzAfoKOwy4lAs= +- 1nXrPT5xy5w9Sp41BB/iPDHJRvY8F6YdG8wNGkpQu9M= +- m6rKtufxveFFJ9wri4ZCGsLjvDPZwfPF2RbITDuOm/0= +- Ak7oribXt9R9ruQHE1x51xRbhbCBR+YCqspMkyfMS7U= +- 8toPTJrYTqHyuSQjBddRXYA16zPi+yRla89h51akx3Q= +- Smf7vudY1gnu/oXBJysuocttejS2o52ZOwBthDhXdiA= +- rfn9GljOavGrttgwSB1GjhquvEUBeHd25yq7TBJgGZQ= +- H/tBtTWa7ffuY0bdEzjDe9FhmUBVAuizdIwVphd70VA= +- O3271WQ9SpRoY+GiG4uoyYMCwAeYh6xqLiWtfWNVrrI= +- rRsw+YjBVWJ4GlFz6vMgxw3apVCwkGTMXo882rWCQWQ= +- 3lJILM4gG6zGpUSCcPNkQeGaUa5dJk7A9oODpFnCyKg= +- 2ny66o9nD1zX3NFQQINmQBLUMjSAzKS/gJmX4HOfSno= +- opjO+A9DFAUohmc4l/Ngd642PPmDvcLtk1fnVEWneGw= +- 2OzhZeUEj77ROGq2JKWwp1V86uXIGiYpDdrlPiJqL58= +- 44mhlg8Xsf4ST/BhMR2GO8t7wC5+kre+ZWGSIJgp4jE= +- QHuAd7nPmFYh7togfS65hv+pO5bMaD+F3D27pnEf5a8= +- ASzyllk98+VeMnY5ueJ15krcHcSk9FCv8WbTbExAd1g= +- Hzk8+K4dnIfORT17Xjf7A9i3uEOfut1Lee9snWAaF3A= +- O20h1UWfb2xgxsIAGGiEDP88v6E+pP1N8qyBkyvpySA= +- dVXyhawmXroihHIaa8sBe6cHil4FTmqPEx82NyL+tjM= +- n+YgxhX7JaskwABqKjg8AaLO8vi1hzv4M5XjJdawFBY= +- L5XfNK3EO3p7P+Gc0IRqlNOnnqSOO2WNmNlny+tbTgk= +- QbxHwsuoKaWb5KXfOzExV9fQMUEkFsMeJSsHCNe8sL0= +- kQHAwUu+cj9iQUkdV5ElSPwq5GeMFdgp2HQJdfyfUWk= +- SO3xPyK5sXQ2WQ7t14gcCma6xZ6kgkwyR7T5LHPcwkk= +- vi4io7Ap3g1iyUzHH5YuMfFThyIn638ikkFZBQBEDrs= +- R8ZHsGHOl3ghg744Hafaayf1aoW1soCFH6V9Rxb54TY= +- TgMRRze5BM0V/iw5msLqr+oqHOE7x67P0WtERZ7+hjg= +- Q1JisbCEuFK5vt3wndyCPF1nt2Hkj1rsNbOHNO4ry0o= +- Bhx+nWtsxJFpCkj/6ARXaJkt41fg/5Ts61ey5Md5KEU= +- R99pWzGJY4vrpt4hSVrQ9JJBO835lwsK42ftRXxOn38= +- fCiBLpOCPuAaoBqRzEBlUy3Euk5jFOu0+5EbN2BxQUA= +- GA3lL17ztYwRmsr+yhW9KF4w6GQYsvVm+WnL6uEgAOc= +- Z7zb2rzzAHj1NWISaK4V7T5y1cLhH2XA2nx6mhbLfJ8= +- ZpgFkA3tG+tb8OafYwZ1ni49KLK6NrCfxMTaGYFqNHg= +- coDOjh/aMvJICvvZmHkoFESruzQ+MPbmVTD/vcAnC98= +- zyOqAaoCS0p9lVK/+riPcLgwiE9aNOidWm09J2KKoj8= +- zNRwKGy4bRwBPszvZ43NXv2i48JzZE7RT4eWV3GcvKk= diff --git a/config/webpack.config.js b/config/webpack.config.js index 0d759de4900..146e9b48442 100644 --- a/config/webpack.config.js +++ b/config/webpack.config.js @@ -6,6 +6,7 @@ const path = require('path'); const BABEL_VERSION = require('@babel/core/package.json').version; const SOURCEGRAPH_VERSION = require('@sourcegraph/code-host-integration/package.json').version; +const GITLAB_WEB_IDE_VERSION = require('@gitlab/web-ide/package.json').version; const BABEL_LOADER_VERSION = require('babel-loader/package.json').version; const CompressionPlugin = require('compression-webpack-plugin'); @@ -54,17 +55,31 @@ const INCREMENTAL_COMPILER_RECORD_HISTORY = IS_DEV_SERVER && !process.env.CI; const WEBPACK_REPORT = process.env.WEBPACK_REPORT && process.env.WEBPACK_REPORT !== 'false'; const WEBPACK_MEMORY_TEST = process.env.WEBPACK_MEMORY_TEST && process.env.WEBPACK_MEMORY_TEST !== 'false'; -const NO_COMPRESSION = process.env.NO_COMPRESSION && process.env.NO_COMPRESSION !== 'false'; -const NO_SOURCEMAPS = process.env.NO_SOURCEMAPS && process.env.NO_SOURCEMAPS !== 'false'; +let NO_COMPRESSION = process.env.NO_COMPRESSION && process.env.NO_COMPRESSION !== 'false'; +let NO_SOURCEMAPS = process.env.NO_SOURCEMAPS && process.env.NO_SOURCEMAPS !== 'false'; +let NO_HASHED_CHUNKS = process.env.NO_HASHED_CHUNKS && process.env.NO_HASHED_CHUNKS !== 'false'; + +if (WEBPACK_REPORT) { + console.log('Webpack report enabled. Running a "slim" production build.'); + // For our webpack report we need no source maps, compression _or_ hashed file names. + NO_SOURCEMAPS = true; + NO_COMPRESSION = true; + NO_HASHED_CHUNKS = true; +} const WEBPACK_OUTPUT_PATH = path.join(ROOT_PATH, 'public/assets/webpack'); const WEBPACK_PUBLIC_PATH = '/assets/webpack/'; const SOURCEGRAPH_PACKAGE = '@sourcegraph/code-host-integration'; +const GITLAB_WEB_IDE_PACKAGE = '@gitlab/web-ide'; const SOURCEGRAPH_PATH = path.join('sourcegraph', SOURCEGRAPH_VERSION, '/'); const SOURCEGRAPH_OUTPUT_PATH = path.join(WEBPACK_OUTPUT_PATH, SOURCEGRAPH_PATH); const SOURCEGRAPH_PUBLIC_PATH = path.join(WEBPACK_PUBLIC_PATH, SOURCEGRAPH_PATH); +const GITLAB_WEB_IDE_PATH = path.join('gitlab-vscode', GITLAB_WEB_IDE_VERSION, '/'); +const GITLAB_WEB_IDE_OUTPUT_PATH = path.join(WEBPACK_OUTPUT_PATH, GITLAB_WEB_IDE_PATH); +const GITLAB_WEB_IDE_PUBLIC_PATH = path.join(WEBPACK_PUBLIC_PATH, GITLAB_WEB_IDE_PATH); + const devtool = IS_PRODUCTION ? 'source-map' : 'cheap-module-eval-source-map'; let autoEntriesCount = 0; @@ -245,8 +260,10 @@ module.exports = { output: { path: WEBPACK_OUTPUT_PATH, publicPath: WEBPACK_PUBLIC_PATH, - filename: IS_PRODUCTION ? '[name].[contenthash:8].bundle.js' : '[name].bundle.js', - chunkFilename: IS_PRODUCTION ? '[name].[contenthash:8].chunk.js' : '[name].chunk.js', + filename: + IS_PRODUCTION && !NO_HASHED_CHUNKS ? '[name].[contenthash:8].bundle.js' : '[name].bundle.js', + chunkFilename: + IS_PRODUCTION && !NO_HASHED_CHUNKS ? '[name].[contenthash:8].chunk.js' : '[name].chunk.js', globalObject: 'this', // allow HMR and web workers to play nice }, @@ -473,7 +490,9 @@ module.exports = { new VueLoaderPlugin(), // automatically configure monaco editor web workers - new MonacoWebpackPlugin(), + new MonacoWebpackPlugin({ + filename: '[name].[contenthash:8].worker.js', + }), new GraphqlKnownOperationsPlugin({ filename: 'graphql_known_operations.yml' }), @@ -583,6 +602,10 @@ module.exports = { }, }, { + from: path.join(ROOT_PATH, 'node_modules', GITLAB_WEB_IDE_PACKAGE, 'dist', 'public'), + to: GITLAB_WEB_IDE_OUTPUT_PATH, + }, + { from: path.join( ROOT_PATH, 'node_modules/@gitlab/visual-review-tools/dist/visual_review_toolbar.js', @@ -677,6 +700,8 @@ module.exports = { statsFilename: path.join(ROOT_PATH, 'webpack-report/stats.json'), statsOptions: { source: false, + errors: false, + warnings: false, }, }), @@ -689,6 +714,7 @@ module.exports = { IS_JH: IS_JH ? 'window.gon && window.gon.jh' : JSON.stringify(false), // This is used by Sourcegraph because these assets are loaded dnamically 'process.env.SOURCEGRAPH_PUBLIC_PATH': JSON.stringify(SOURCEGRAPH_PUBLIC_PATH), + 'process.env.GITLAB_WEB_IDE_PUBLIC_PATH': JSON.stringify(GITLAB_WEB_IDE_PUBLIC_PATH), ...(IS_PRODUCTION ? {} : { LIVE_RELOAD: DEV_SERVER_LIVERELOAD }), }), |