From ab1e0268d1c58c2be0af9664ecd1f32e2617c4e7 Mon Sep 17 00:00:00 2001 From: liqiang Date: Fri, 19 Sep 2025 10:49:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/.gitignore | 1 - backend/application/settings.py | 24 +- .../dvadmin/system/fixtures/init_dept.json | 4 +- .../dvadmin/system/fixtures/init_menu.json | 2844 ++++++++--------- .../system/fixtures/init_systemconfig.json | 10 +- .../dvadmin/system/fixtures/init_users.json | 9 +- backend/plugins/code_info/__init__.py | 0 backend/plugins/code_info/admin.py | 3 + backend/plugins/code_info/apps.py | 6 + .../plugins/code_info/fixtures/__init__.py | 0 .../code_info/fixtures/init_dictionary.json | 1 + .../plugins/code_info/fixtures/init_menu.json | 49 + .../plugins/code_info/fixtures/initialize.py | 33 + .../plugins/code_info/migrations/__init__.py | 0 backend/plugins/code_info/models.py | 29 + backend/plugins/code_info/settings.py | 22 + backend/plugins/code_info/urls.py | 15 + backend/plugins/code_info/views/__init__.py | 0 backend/plugins/code_info/views/scan_data.py | 67 + .../plugins/code_info/views/scan_record.py | 29 + backend/requirements.txt | 3 +- web/README.en.md | 168 - web/README.md | 212 -- web/src/App.vue | 27 +- web/src/layout/Scanned/api.ts | 12 + web/src/layout/Scanned/index.vue | 87 + web/src/layout/component/main.vue | 4 +- web/src/layout/footer/index.vue | 13 - web/src/scan.ts | 84 + web/src/stores/themeConfig.ts | 109 +- web/src/types/mitt.d.ts | 1 + web/src/utils/commonCrud.ts | 22 - web/src/views/plugins/scanInfo/index.ts | 0 .../plugins/scanInfo/src/scanData/api.ts | 41 + .../plugins/scanInfo/src/scanData/crud.tsx | 195 ++ .../plugins/scanInfo/src/scanData/index.vue | 30 + .../plugins/scanInfo/src/scanRecord/api.ts | 41 + .../plugins/scanInfo/src/scanRecord/crud.tsx | 229 ++ .../plugins/scanInfo/src/scanRecord/index.vue | 20 + web/src/views/system/home/home.png | Bin 0 -> 186120 bytes web/src/views/system/home/index.vue | 635 +--- web/src/views/system/user/crud.tsx | 23 + 42 files changed, 2520 insertions(+), 2582 deletions(-) create mode 100644 backend/plugins/code_info/__init__.py create mode 100644 backend/plugins/code_info/admin.py create mode 100644 backend/plugins/code_info/apps.py create mode 100644 backend/plugins/code_info/fixtures/__init__.py create mode 100644 backend/plugins/code_info/fixtures/init_dictionary.json create mode 100644 backend/plugins/code_info/fixtures/init_menu.json create mode 100644 backend/plugins/code_info/fixtures/initialize.py create mode 100644 backend/plugins/code_info/migrations/__init__.py create mode 100644 backend/plugins/code_info/models.py create mode 100644 backend/plugins/code_info/settings.py create mode 100644 backend/plugins/code_info/urls.py create mode 100644 backend/plugins/code_info/views/__init__.py create mode 100644 backend/plugins/code_info/views/scan_data.py create mode 100644 backend/plugins/code_info/views/scan_record.py delete mode 100644 web/README.en.md delete mode 100644 web/README.md create mode 100644 web/src/layout/Scanned/api.ts create mode 100644 web/src/layout/Scanned/index.vue create mode 100644 web/src/scan.ts create mode 100644 web/src/views/plugins/scanInfo/index.ts create mode 100644 web/src/views/plugins/scanInfo/src/scanData/api.ts create mode 100644 web/src/views/plugins/scanInfo/src/scanData/crud.tsx create mode 100644 web/src/views/plugins/scanInfo/src/scanData/index.vue create mode 100644 web/src/views/plugins/scanInfo/src/scanRecord/api.ts create mode 100644 web/src/views/plugins/scanInfo/src/scanRecord/crud.tsx create mode 100644 web/src/views/plugins/scanInfo/src/scanRecord/index.vue create mode 100644 web/src/views/system/home/home.png diff --git a/backend/.gitignore b/backend/.gitignore index 6c50cc9..c0ddc38 100644 --- a/backend/.gitignore +++ b/backend/.gitignore @@ -93,7 +93,6 @@ ENV/ *.pyc conf/* !conf/env.example.py -db.sqlite3 media/ __pypackages__/ package-lock.json diff --git a/backend/application/settings.py b/backend/application/settings.py index 71ed7d5..2925211 100644 --- a/backend/application/settings.py +++ b/backend/application/settings.py @@ -28,7 +28,7 @@ from conf.env import * # See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = "django-insecure--z8%exyzt7e_%i@1+#1mm=%lb5=^fx_57=1@a+_y7bg5-w%)sm" +SECRET_KEY = "django-insecure--z8%exyz2sae4e_%i@1+#1mm=%lb5=^fx_57=1@a+_y7bg5-w%)sm" # 初始化plugins插件路径到环境变量中 PLUGINS_PATH = os.path.join(BASE_DIR, "plugins") sys.path.insert(0, os.path.join(PLUGINS_PATH)) @@ -408,7 +408,8 @@ SHARED_APPS = [] # ********** 一键导入插件配置开始 ********** # 例如: # from dvadmin_upgrade_center.settings import * # 升级中心 -from dvadmin3_celery.settings import * # celery 异步任务 +from code_info.settings import * # celery 异步任务 +# from dvadmin3_celery.settings import * # celery 异步任务 # from dvadmin_third.settings import * # 第三方用户管理 # from dvadmin_ak_sk.settings import * # 秘钥管理管理 # from dvadmin_tenants.settings import * # 租户管理 @@ -416,3 +417,22 @@ from dvadmin3_celery.settings import * # celery 异步任务 #from dvadmin_uniapp.settings import * # ... # ********** 一键导入插件配置结束 ********** + + +if locals().get('ENVIRONMENT') != 'local': + # 1. 定义统一的迁移文件存放目录(例如:`./all_migrations/`) + BASE_MIGRATIONS_DIR = "all_migrations" + # 2. 自动生成 MIGRATION_MODULES + # 2. 定义需要排除的 App(如 Django 内置 App 或第三方 App) + EXCLUDED_APPS = ('django','admin','auth.','contenttypes.','sessions.','psqlextra','rest_framework','drf_yasg',) + MIGRATION_MODULES = {} + for app in INSTALLED_APPS: + if app.startswith(EXCLUDED_APPS): + continue + # 判断是否存在目录,并在目录下创建一个__init__.py 文件 + app_migrations_dir = os.path.join(BASE_DIR, BASE_MIGRATIONS_DIR, app.split('.')[-1], 'migrations') + if not os.path.exists(app_migrations_dir): + os.makedirs(os.path.join(app_migrations_dir)) + open(os.path.join(BASE_DIR, BASE_MIGRATIONS_DIR, app.split('.')[-1],'migrations', '__init__.py'), 'w').close() + MIGRATION_MODULES.update( + {app.split('.')[-1]: f"{BASE_MIGRATIONS_DIR}.{app.split('.')[-1]}.migrations"}) \ No newline at end of file diff --git a/backend/dvadmin/system/fixtures/init_dept.json b/backend/dvadmin/system/fixtures/init_dept.json index 3603364..76ef8da 100644 --- a/backend/dvadmin/system/fixtures/init_dept.json +++ b/backend/dvadmin/system/fixtures/init_dept.json @@ -1,6 +1,6 @@ [ { - "name": "DVAdmin团队", + "name": "总部", "key": "dvadmin", "sort": 1, "owner": "", @@ -11,7 +11,7 @@ "children": [ { "name": "运营部", - "key": "", + "key": "zongbu", "sort": 2, "owner": "", "phone": "", diff --git a/backend/dvadmin/system/fixtures/init_menu.json b/backend/dvadmin/system/fixtures/init_menu.json index ec9742a..23401b9 100644 --- a/backend/dvadmin/system/fixtures/init_menu.json +++ b/backend/dvadmin/system/fixtures/init_menu.json @@ -1,749 +1,745 @@ [ - { - "name": "系统管理", - "icon": "iconfont icon-xitongshezhi", + { + "name": "系统管理", + "icon": "iconfont icon-xitongshezhi", + "sort": 1, + "is_link": false, + "is_catalog": true, + "web_path": "/system", + "component": "", + "component_name": "", + "status": true, + "cache": false, + "visible": true, + "children": [ + { + "name": "用户管理", + "icon": "iconfont icon-icon-", "sort": 1, "is_link": false, - "is_catalog": true, - "web_path": "/system", - "component": "", - "component_name": "", + "is_catalog": false, + "web_path": "/user", + "component": "system/user/index", + "component_name": "user", "status": true, "cache": false, "visible": true, - "children": [ - { - "name": "用户管理", - "icon": "iconfont icon-icon-", - "sort": 1, - "is_link": false, - "is_catalog": false, - "web_path": "/user", - "component": "system/user/index", - "component_name": "user", - "status": true, - "cache": false, - "visible": true, - "children": [], - "menu_button": [ - { - "name": "查询", - "value": "user:Search", - "api": "/api/system/user/", - "method": 0 - }, - { - "name": "新增", - "value": "user:Create", - "api": "/api/system/user/", - "method": 1 - }, - { - "name": "编辑", - "value": "user:Update", - "api": "/api/system/user/{id}/", - "method": 2 - }, - { - "name": "删除", - "value": "user:Delete", - "api": "/api/system/user/{id}/", - "method": 3 - }, - { - "name": "导出", - "value": "user:Export", - "api": "/api/system/user/export/", - "method": 1 - }, - { - "name": "导入", - "value": "user:Import", - "api": "/api/system/user/import/", - "method": 1 - }, - { - "name": "获取导入模板", - "value": "user:ImportTemplate", - "api": "/api/system/user/import/", - "method": 0 - }, - { - "name": "批量更新模板", - "value": "user:BatchUpdateTemplate", - "api": "/api/system/user/update_template/", - "method": 0 - }, - { - "name": "重设密码", - "value": "user:ResetPassword", - "api": "/api/system/user/{id}/reset_password/", - "method": 2 - }, - { - "name": "重置密码", - "value": "user:ResetDefaultPassword", - "api": "/api/system/user/{id}/reset_to_default_password/", - "method": 2 - } - ], - "menu_field": [ - { - "field_name": "avatar", - "title": "头像", - "model": "Users" - }, - { - "field_name": "create_datetime", - "title": "创建时间", - "model": "Users" - }, - { - "field_name": "creator", - "title": "创建人", - "model": "Users" - }, - { - "field_name": "dept", - "title": "所属部门", - "model": "Users" - }, - { - "field_name": "dept_belong_id", - "title": "数据归属部门", - "model": "Users" - }, - { - "field_name": "description", - "title": "描述", - "model": "Users" - }, - { - "field_name": "email", - "title": "邮箱", - "model": "Users" - }, - { - "field_name": "gender", - "title": "性别", - "model": "Users" - }, - { - "field_name": "id", - "title": "Id", - "model": "Users" - }, - { - "field_name": "mobile", - "title": "电话", - "model": "Users" - }, - { - "field_name": "modifier", - "title": "修改人", - "model": "Users" - }, - { - "field_name": "name", - "title": "姓名", - "model": "Users" - }, - { - "field_name": "update_datetime", - "title": "修改时间", - "model": "Users" - }, - { - "field_name": "username", - "title": "用户账号", - "model": "Users" - }, - { - "field_name": "user_type", - "title": "用户类型", - "model": "Users" - } - ] - }, - { - "name": "菜单管理", - "icon": "iconfont icon-caidan", - "sort": 2, - "is_link": false, - "is_catalog": false, - "web_path": "/menu", - "component": "system/menu/index", - "component_name": "menu", - "status": true, - "cache": false, - "visible": true, - "children": [], - "menu_button": [ - { - "name": "查询", - "value": "menu:Search", - "api": "/api/system/menu/", - "method": 0 - }, - { - "name": "单例", - "value": "menu:Retrieve", - "api": "/api/system/menu/{id}/", - "method": 0 - }, - { - "name": "新增", - "value": "menu:Create", - "api": "/api/system/menu/", - "method": 1 - }, - { - "name": "编辑", - "value": "menu:Update", - "api": "/api/system/menu/{id}/", - "method": 2 - }, - { - "name": "删除", - "value": "menu:Delete", - "api": "/api/system/menu/{id}/", - "method": 3 - }, - { - "name": "查询所有", - "value": "menu:SearchAll", - "api": "/api/system/menu/get_all_menu/", - "method": 0 - }, - { - "name": "路由", - "value": "menu:router", - "api": "/api/system/menu/web_router/", - "method": 0 - }, - { - "name": "查询按钮", - "value": "menu:SearchButton", - "api": "/api/system/menu_button/", - "method": 0 - }, - { - "name": "新增按钮", - "value": "menu:CreateButton", - "api": "/api/system/menu_button/", - "method": 1 - }, - { - "name": "编辑按钮", - "value": "menu:UpdateButton", - "api": "/api/system/menu_button/{id}/", - "method": 2 - }, - { - "name": "删除按钮", - "value": "menu:DeleteButton", - "api": "/api/system/menu_button/{id}/", - "method": 3 - }, - { - "name": "上移", - "value": "menu:MoveUp", - "api": "/api/system/menu/mode_up/", - "method": 1 - }, - { - "name": "下移", - "value": "menu:MoveDown", - "api": "/api/system/menu/mode_down/", - "method": 1 - }, - { - "name": "查询列权限", - "value": "column:Search", - "api": "/api/system/column/", - "method": 0 - }, - { - "name": "新增列权限", - "value": "column:Create", - "api": "/api/system/column/", - "method": 1 - }, - { - "name": "编辑列权限", - "value": "column:Update", - "api": "/api/system/column/{id}/", - "method": 2 - }, - { - "name": "删除列权限", - "value": "column:Delete", - "api": "/api/system/column/{id}/", - "method": 3 - }, - { - "name": "自动匹配列权限", - "value": "column:Match", - "api": "/api/system/column/auto_match_fields/", - "method": 1 - } - ], - "menu_field": [] - }, - { - "name": "部门管理", - "icon": "ele-OfficeBuilding", - "sort": 3, - "is_link": false, - "is_catalog": false, - "web_path": "/dept", - "component": "system/dept/index", - "component_name": "dept", - "status": true, - "cache": false, - "visible": true, - "children": [], - "menu_button": [ - { - "name": "查询", - "value": "dept:Search", - "api": "/api/system/dept/", - "method": 0 - }, - { - "name": "详情", - "value": "dept:Retrieve", - "api": "/api/system/dept/{id}/", - "method": 0 - }, - { - "name": "获取所有部门", - "value": "dept:SearchAll", - "api": "/api/system/dept/all_dept/", - "method": 0 - }, - { - "name": "部门顶部信息", - "value": "dept:HeaderInfo", - "api": "/api/system/dept/dept_info/", - "method": 0 - }, - { - "name": "新增", - "value": "dept:Create", - "api": "/api/system/dept/", - "method": 1 - }, - { - "name": "上移", - "value": "dept:MoveUp", - "api": "/api/system/dept/mode_up/", - "method": 1 - }, - { - "name": "下移", - "value": "dept:MoveDown", - "api": "/api/system/dept/mode_down/", - "method": 1 - }, - { - "name": "编辑", - "value": "dept:Update", - "api": "/api/system/dept/{id}/", - "method": 2 - }, - { - "name": "删除", - "value": "dept:Delete", - "api": "/api/system/dept/{id}/", - "method": 3 - } - ], - "menu_field": [] - }, - { - "name": "角色管理", - "icon": "ele-ColdDrink", - "sort": 4, - "is_link": false, - "is_catalog": false, - "web_path": "/role", - "component": "system/role/index", - "component_name": "role", - "status": true, - "cache": false, - "visible": true, - "children": [], - "menu_button": [ - { - "name": "查询", - "value": "role:Search", - "api": "/api/system/role/", - "method": 0 - }, - { - "name": "单例", - "value": "role:Retrieve", - "api": "/api/system/role/{id}/", - "method": 0 - }, - { - "name": "新增", - "value": "role:Create", - "api": "/api/system/role/", - "method": 1 - }, - { - "name": "编辑", - "value": "role:Update", - "api": "/api/system/role/{id}/", - "method": 2 - }, - { - "name": "删除", - "value": "role:Delete", - "api": "/api/system/role/{id}/", - "method": 3 - }, - { - "name": "获取所有可授权数据范围的部门", - "value": "role:AllDataRangeDept", - "api": "/api/system/role_menu_button_permision/role_to_dept_all/", - "method": 0 - }, - { - "name": "获取所有可授权菜单", - "value": "role:AllCanMenu", - "api": "/api/system/role_menu_button_permision/get_role_menu/", - "method": 0 - }, - { - "name": "获取所有已授权用户", - "value": "role:AllAuthorizedUser", - "api": "/api/system/role/get_role_users/", - "method": 0 - }, - { - "name": "获取菜单所有可授权按钮", - "value": "role:AllMenuButton", - "api": "/api/system/role_menu_button_permision/get_role_menu_btn_field/", - "method": 0 - }, - { - "name": "授权菜单", - "value": "role:SetMenu", - "api": "/api/system/role_menu_button_permision/set_role_menu/", - "method": 2 - }, - { - "name": "授权菜单按钮", - "value": "role:SetMenuButton", - "api": "/api/system/role_menu_button_permision/set_role_menu_btn/", - "method": 2 - }, - { - "name": "授权数据范围", - "value": "role:SetDataRange", - "api": "/api/system/role_menu_button_permision/set_role_menu_btn_data_range/", - "method": 2 - }, - { - "name": "获取所有用户", - "value": "role:AllUser", - "api": "/api/system/user/", - "method": 0 - }, - { - "name": "授权用户予角色", - "value": "role:SetUserRole", - "api": "/api/system/role/{id}/set_role_users/", - "method": 2 - } - ], - "menu_field": [ - { - "field_name": "create_datetime", - "title": "创建时间", - "model": "Role" - }, - { - "field_name": "creator", - "title": "创建人", - "model": "Role" - }, - { - "field_name": "dept_belong_id", - "title": "数据归属部门", - "model": "Role" - }, - { - "field_name": "description", - "title": "描述", - "model": "Role" - }, - { - "field_name": "id", - "title": "Id", - "model": "Role" - }, - { - "field_name": "key", - "title": "权限字符", - "model": "Role" - }, - { - "field_name": "modifier", - "title": "修改人", - "model": "Role" - }, - { - "field_name": "name", - "title": "角色名称", - "model": "Role" - }, - { - "field_name": "sort", - "title": "角色顺序", - "model": "Role" - }, - { - "field_name": "status", - "title": "角色状态", - "model": "Role" - }, - { - "field_name": "update_datetime", - "title": "修改时间", - "model": "Role" - } - ] - }, - { - "name": "消息中心", - "icon": "iconfont icon-xiaoxizhongxin", - "sort": 7, - "is_link": false, - "is_catalog": false, - "web_path": "/messageCenter", - "component": "system/messageCenter/index", - "component_name": "messageCenter", - "status": true, - "cache": false, - "visible": true, - "parent": 1, - "children": [], - "menu_button": [ - { - "name": "查询", - "value": "messageCenter:Search", - "api": "/api/system/message_center/", - "method": 0 - }, - { - "name": "详情", - "value": "messageCenter:Retrieve", - "api": "/api/system/message_center/{id}/", - "method": 0 - }, - { - "name": "新增", - "value": "messageCenter:Create", - "api": "/api/system/message_center/", - "method": 1 - }, - { - "name": "编辑", - "value": "messageCenter:Update", - "api": "/api/system/message_center/{id}/", - "method": 2 - }, - { - "name": "删除", - "value": "messageCenter:Delete", - "api": "/api/system/menu/{id}/", - "method": 3 - } - ], - "menu_field": [ - { - "field_name": "content", - "title": "内容", - "model": "MessageCenter" - }, - { - "field_name": "create_datetime", - "title": "创建时间", - "model": "MessageCenter" - }, - { - "field_name": "creator", - "title": "创建人", - "model": "MessageCenter" - }, - { - "field_name": "dept_belong_id", - "title": "数据归属部门", - "model": "MessageCenter" - }, - { - "field_name": "description", - "title": "描述", - "model": "MessageCenter" - }, - { - "field_name": "id", - "title": "Id", - "model": "MessageCenter" - }, - { - "field_name": "modifier", - "title": "修改人", - "model": "MessageCenter" - }, - { - "field_name": "target_type", - "title": "目标类型", - "model": "MessageCenter" - }, - { - "field_name": "title", - "title": "标题", - "model": "MessageCenter" - }, - { - "field_name": "update_datetime", - "title": "修改时间", - "model": "MessageCenter" - } - ] - }, - { - "name": "接口白名单", - "icon": "ele-SetUp", - "sort": 8, - "is_link": false, - "is_catalog": false, - "web_path": "/apiWhiteList", - "component": "system/whiteList/index", - "component_name": "whiteList", - "status": true, - "cache": false, - "visible": true, - "parent": 1, - "children": [], - "menu_button": [ - { - "name": "查询", - "value": "api_white_list:Search", - "api": "/api/system/api_white_list/", - "method": 0 - }, - { - "name": "详情", - "value": "api_white_list:Retrieve", - "api": "/api/system/api_white_list/{id}/", - "method": 0 - }, - { - "name": "新增", - "value": "api_white_list:Create", - "api": "/api/system/api_white_list/", - "method": 1 - }, - { - "name": "编辑", - "value": "api_white_list:Update", - "api": "/api/system/api_white_list/{id}/", - "method": 2 - }, - { - "name": "删除", - "value": "api_white_list:Delete", - "api": "/api/system/api_white_list/{id}/", - "method": 3 - } - ], - "menu_field": [ - { - "field_name": "create_datetime", - "title": "创建时间", - "model": "ApiWhiteList" - }, - { - "field_name": "creator", - "title": "创建人", - "model": "ApiWhiteList" - }, - { - "field_name": "dept_belong_id", - "title": "数据归属部门", - "model": "ApiWhiteList" - }, - { - "field_name": "description", - "title": "描述", - "model": "ApiWhiteList" - }, - { - "field_name": "enable_datasource", - "title": "激活数据权限", - "model": "ApiWhiteList" - }, - { - "field_name": "id", - "title": "Id", - "model": "ApiWhiteList" - }, - { - "field_name": "method", - "title": "接口请求方法", - "model": "ApiWhiteList" - }, - { - "field_name": "modifier", - "title": "修改人", - "model": "ApiWhiteList" - }, - { - "field_name": "update_datetime", - "title": "修改时间", - "model": "ApiWhiteList" - }, - { - "field_name": "url", - "title": "url", - "model": "ApiWhiteList" - } - ] - }, - { - "name": "下载中心", - "icon": "ele-Download", - "sort": 9, - "is_link": false, - "is_catalog": false, - "web_path": "/downloadCenter", - "component": "system/downloadCenter/index", - "component_name": "downloadCenter", - "status": true, - "cache": false, - "visible": true, - "parent": 277, - "children": [], - "menu_button": [ - { - "name": "查询", - "value": "downloadCenter:Search", - "api": "/api/system/download_center/" - } - ], - "menu_field": [] - } + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "user:Search", + "api": "/api/system/user/", + "method": 0 + }, + { + "name": "新增", + "value": "user:Create", + "api": "/api/system/user/", + "method": 1 + }, + { + "name": "编辑", + "value": "user:Update", + "api": "/api/system/user/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "user:Delete", + "api": "/api/system/user/{id}/", + "method": 3 + }, + { + "name": "导出", + "value": "user:Export", + "api": "/api/system/user/export/", + "method": 1 + }, + { + "name": "导入", + "value": "user:Import", + "api": "/api/system/user/import/", + "method": 1 + }, + { + "name": "获取导入模板", + "value": "user:ImportTemplate", + "api": "/api/system/user/import/", + "method": 0 + }, + { + "name": "批量更新模板", + "value": "user:BatchUpdateTemplate", + "api": "/api/system/user/update_template/", + "method": 0 + }, + { + "name": "重设密码", + "value": "user:ResetPassword", + "api": "/api/system/user/{id}/reset_password/", + "method": 2 + }, + { + "name": "重置密码", + "value": "user:ResetDefaultPassword", + "api": "/api/system/user/{id}/reset_to_default_password/", + "method": 2 + } + ], + "menu_field": [ + { + "field_name": "avatar", + "title": "头像", + "model": "Users" + }, + { + "field_name": "create_datetime", + "title": "创建时间", + "model": "Users" + }, + { + "field_name": "creator", + "title": "创建人", + "model": "Users" + }, + { + "field_name": "dept", + "title": "所属部门", + "model": "Users" + }, + { + "field_name": "dept_belong_id", + "title": "数据归属部门", + "model": "Users" + }, + { + "field_name": "description", + "title": "描述", + "model": "Users" + }, + { + "field_name": "email", + "title": "邮箱", + "model": "Users" + }, + { + "field_name": "gender", + "title": "性别", + "model": "Users" + }, + { + "field_name": "id", + "title": "Id", + "model": "Users" + }, + { + "field_name": "mobile", + "title": "电话", + "model": "Users" + }, + { + "field_name": "modifier", + "title": "修改人", + "model": "Users" + }, + { + "field_name": "name", + "title": "姓名", + "model": "Users" + }, + { + "field_name": "update_datetime", + "title": "修改时间", + "model": "Users" + }, + { + "field_name": "username", + "title": "用户账号", + "model": "Users" + }, + { + "field_name": "user_type", + "title": "用户类型", + "model": "Users" + } + ] + }, + { + "name": "菜单管理", + "icon": "iconfont icon-caidan", + "sort": 2, + "is_link": false, + "is_catalog": false, + "web_path": "/menu", + "component": "system/menu/index", + "component_name": "menu", + "status": true, + "cache": false, + "visible": true, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "menu:Search", + "api": "/api/system/menu/", + "method": 0 + }, + { + "name": "单例", + "value": "menu:Retrieve", + "api": "/api/system/menu/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "menu:Create", + "api": "/api/system/menu/", + "method": 1 + }, + { + "name": "编辑", + "value": "menu:Update", + "api": "/api/system/menu/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "menu:Delete", + "api": "/api/system/menu/{id}/", + "method": 3 + }, + { + "name": "查询所有", + "value": "menu:SearchAll", + "api": "/api/system/menu/get_all_menu/", + "method": 0 + }, + { + "name": "路由", + "value": "menu:router", + "api": "/api/system/menu/web_router/", + "method": 0 + }, + { + "name": "查询按钮", + "value": "menu:SearchButton", + "api": "/api/system/menu_button/", + "method": 0 + }, + { + "name": "新增按钮", + "value": "menu:CreateButton", + "api": "/api/system/menu_button/", + "method": 1 + }, + { + "name": "编辑按钮", + "value": "menu:UpdateButton", + "api": "/api/system/menu_button/{id}/", + "method": 2 + }, + { + "name": "删除按钮", + "value": "menu:DeleteButton", + "api": "/api/system/menu_button/{id}/", + "method": 3 + }, + { + "name": "上移", + "value": "menu:MoveUp", + "api": "/api/system/menu/mode_up/", + "method": 1 + }, + { + "name": "下移", + "value": "menu:MoveDown", + "api": "/api/system/menu/mode_down/", + "method": 1 + }, + { + "name": "查询列权限", + "value": "column:Search", + "api": "/api/system/column/", + "method": 0 + }, + { + "name": "新增列权限", + "value": "column:Create", + "api": "/api/system/column/", + "method": 1 + }, + { + "name": "编辑列权限", + "value": "column:Update", + "api": "/api/system/column/{id}/", + "method": 2 + }, + { + "name": "删除列权限", + "value": "column:Delete", + "api": "/api/system/column/{id}/", + "method": 3 + }, + { + "name": "自动匹配列权限", + "value": "column:Match", + "api": "/api/system/column/auto_match_fields/", + "method": 1 + } ], - "menu_button": [], "menu_field": [] - }, - { + }, + { + "name": "部门管理", + "icon": "ele-OfficeBuilding", + "sort": 3, + "is_link": false, + "is_catalog": false, + "web_path": "/dept", + "component": "system/dept/index", + "component_name": "dept", + "status": true, + "cache": false, + "visible": true, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "dept:Search", + "api": "/api/system/dept/", + "method": 0 + }, + { + "name": "详情", + "value": "dept:Retrieve", + "api": "/api/system/dept/{id}/", + "method": 0 + }, + { + "name": "获取所有部门", + "value": "dept:SearchAll", + "api": "/api/system/dept/all_dept/", + "method": 0 + }, + { + "name": "部门顶部信息", + "value": "dept:HeaderInfo", + "api": "/api/system/dept/dept_info/", + "method": 0 + }, + { + "name": "新增", + "value": "dept:Create", + "api": "/api/system/dept/", + "method": 1 + }, + { + "name": "上移", + "value": "dept:MoveUp", + "api": "/api/system/dept/mode_up/", + "method": 1 + }, + { + "name": "下移", + "value": "dept:MoveDown", + "api": "/api/system/dept/mode_down/", + "method": 1 + }, + { + "name": "编辑", + "value": "dept:Update", + "api": "/api/system/dept/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "dept:Delete", + "api": "/api/system/dept/{id}/", + "method": 3 + } + ], + "menu_field": [] + }, + { + "name": "角色管理", + "icon": "ele-ColdDrink", + "sort": 4, + "is_link": false, + "is_catalog": false, + "web_path": "/role", + "component": "system/role/index", + "component_name": "role", + "status": true, + "cache": false, + "visible": true, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "role:Search", + "api": "/api/system/role/", + "method": 0 + }, + { + "name": "单例", + "value": "role:Retrieve", + "api": "/api/system/role/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "role:Create", + "api": "/api/system/role/", + "method": 1 + }, + { + "name": "编辑", + "value": "role:Update", + "api": "/api/system/role/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "role:Delete", + "api": "/api/system/role/{id}/", + "method": 3 + }, + { + "name": "获取所有可授权数据范围的部门", + "value": "role:AllDataRangeDept", + "api": "/api/system/role_menu_button_permision/role_to_dept_all/", + "method": 0 + }, + { + "name": "获取所有可授权菜单", + "value": "role:AllCanMenu", + "api": "/api/system/role_menu_button_permision/get_role_menu/", + "method": 0 + }, + { + "name": "获取所有已授权用户", + "value": "role:AllAuthorizedUser", + "api": "/api/system/role/get_role_users/", + "method": 0 + }, + { + "name": "获取菜单所有可授权按钮", + "value": "role:AllMenuButton", + "api": "/api/system/role_menu_button_permision/get_role_menu_btn_field/", + "method": 0 + }, + { + "name": "授权菜单", + "value": "role:SetMenu", + "api": "/api/system/role_menu_button_permision/set_role_menu/", + "method": 2 + }, + { + "name": "授权菜单按钮", + "value": "role:SetMenuButton", + "api": "/api/system/role_menu_button_permision/set_role_menu_btn/", + "method": 2 + }, + { + "name": "授权数据范围", + "value": "role:SetDataRange", + "api": "/api/system/role_menu_button_permision/set_role_menu_btn_data_range/", + "method": 2 + }, + { + "name": "获取所有用户", + "value": "role:AllUser", + "api": "/api/system/user/", + "method": 0 + }, + { + "name": "授权用户予角色", + "value": "role:SetUserRole", + "api": "/api/system/role/{id}/set_role_users/", + "method": 2 + } + ], + "menu_field": [ + { + "field_name": "create_datetime", + "title": "创建时间", + "model": "Role" + }, + { + "field_name": "creator", + "title": "创建人", + "model": "Role" + }, + { + "field_name": "dept_belong_id", + "title": "数据归属部门", + "model": "Role" + }, + { + "field_name": "description", + "title": "描述", + "model": "Role" + }, + { + "field_name": "id", + "title": "Id", + "model": "Role" + }, + { + "field_name": "key", + "title": "权限字符", + "model": "Role" + }, + { + "field_name": "modifier", + "title": "修改人", + "model": "Role" + }, + { + "field_name": "name", + "title": "角色名称", + "model": "Role" + }, + { + "field_name": "sort", + "title": "角色顺序", + "model": "Role" + }, + { + "field_name": "status", + "title": "角色状态", + "model": "Role" + }, + { + "field_name": "update_datetime", + "title": "修改时间", + "model": "Role" + } + ] + }, + { + "name": "消息中心", + "icon": "iconfont icon-xiaoxizhongxin", + "sort": 7, + "is_link": false, + "is_catalog": false, + "web_path": "/messageCenter", + "component": "system/messageCenter/index", + "component_name": "messageCenter", + "status": true, + "cache": false, + "visible": true, + "parent": 1, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "messageCenter:Search", + "api": "/api/system/message_center/", + "method": 0 + }, + { + "name": "详情", + "value": "messageCenter:Retrieve", + "api": "/api/system/message_center/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "messageCenter:Create", + "api": "/api/system/message_center/", + "method": 1 + }, + { + "name": "编辑", + "value": "messageCenter:Update", + "api": "/api/system/message_center/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "messageCenter:Delete", + "api": "/api/system/menu/{id}/", + "method": 3 + } + ], + "menu_field": [ + { + "field_name": "content", + "title": "内容", + "model": "MessageCenter" + }, + { + "field_name": "create_datetime", + "title": "创建时间", + "model": "MessageCenter" + }, + { + "field_name": "creator", + "title": "创建人", + "model": "MessageCenter" + }, + { + "field_name": "dept_belong_id", + "title": "数据归属部门", + "model": "MessageCenter" + }, + { + "field_name": "description", + "title": "描述", + "model": "MessageCenter" + }, + { + "field_name": "id", + "title": "Id", + "model": "MessageCenter" + }, + { + "field_name": "modifier", + "title": "修改人", + "model": "MessageCenter" + }, + { + "field_name": "target_type", + "title": "目标类型", + "model": "MessageCenter" + }, + { + "field_name": "title", + "title": "标题", + "model": "MessageCenter" + }, + { + "field_name": "update_datetime", + "title": "修改时间", + "model": "MessageCenter" + } + ] + }, + { + "name": "接口白名单", + "icon": "ele-SetUp", + "sort": 8, + "is_link": false, + "is_catalog": false, + "web_path": "/apiWhiteList", + "component": "system/whiteList/index", + "component_name": "whiteList", + "status": true, + "cache": false, + "visible": true, + "parent": 1, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "api_white_list:Search", + "api": "/api/system/api_white_list/", + "method": 0 + }, + { + "name": "详情", + "value": "api_white_list:Retrieve", + "api": "/api/system/api_white_list/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "api_white_list:Create", + "api": "/api/system/api_white_list/", + "method": 1 + }, + { + "name": "编辑", + "value": "api_white_list:Update", + "api": "/api/system/api_white_list/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "api_white_list:Delete", + "api": "/api/system/api_white_list/{id}/", + "method": 3 + } + ], + "menu_field": [ + { + "field_name": "create_datetime", + "title": "创建时间", + "model": "ApiWhiteList" + }, + { + "field_name": "creator", + "title": "创建人", + "model": "ApiWhiteList" + }, + { + "field_name": "dept_belong_id", + "title": "数据归属部门", + "model": "ApiWhiteList" + }, + { + "field_name": "description", + "title": "描述", + "model": "ApiWhiteList" + }, + { + "field_name": "enable_datasource", + "title": "激活数据权限", + "model": "ApiWhiteList" + }, + { + "field_name": "id", + "title": "Id", + "model": "ApiWhiteList" + }, + { + "field_name": "method", + "title": "接口请求方法", + "model": "ApiWhiteList" + }, + { + "field_name": "modifier", + "title": "修改人", + "model": "ApiWhiteList" + }, + { + "field_name": "update_datetime", + "title": "修改时间", + "model": "ApiWhiteList" + }, + { + "field_name": "url", + "title": "url", + "model": "ApiWhiteList" + } + ] + }, + { + "name": "下载中心", + "icon": "ele-Download", + "sort": 9, + "is_link": false, + "is_catalog": false, + "web_path": "/downloadCenter", + "component": "system/downloadCenter/index", + "component_name": "downloadCenter", + "status": true, + "cache": false, + "visible": true, + "parent": 277, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "downloadCenter:Search", + "api": "/api/system/download_center/" + } + ], + "menu_field": [] + }, + { "name": "常规配置", "icon": "iconfont icon-configure", "sort": 2, @@ -757,420 +753,420 @@ "visible": true, "parent": null, "children": [ - { - "name": "系统配置", - "icon": "iconfont icon-system", - "sort": 0, - "is_link": false, - "is_catalog": false, - "web_path": "/config", - "component": "system/config/index", - "component_name": "config", - "status": true, - "cache": false, - "visible": true, - "parent": 10, - "children": [], - "menu_button": [ - { - "name": "查询", - "value": "system_config:Search", - "api": "/api/system/system_config/", - "method": 0 - }, - { - "name": "详情", - "value": "system_config:Retrieve", - "api": "/api/system/system_config/{id}/", - "method": 0 - }, - { - "name": "新增", - "value": "system_config:Create", - "api": "/api/system/system_config/", - "method": 1 - }, - { - "name": "编辑", - "value": "system_config:Update", - "api": "/api/system/system_config/{id}/", - "method": 2 - }, - { - "name": "删除", - "value": "system_config:Delete", - "api": "/api/system/system_config/{id}/", - "method": 3 - } - ], - "menu_field": [] - }, - { - "name": "字典管理", - "icon": "iconfont icon-dict", - "sort": 1, - "is_link": false, - "is_catalog": false, - "web_path": "/dictionary", - "component": "system/dictionary/index", - "component_name": "dictionary", - "status": true, - "cache": false, - "visible": true, - "parent": 10, - "children": [], - "menu_button": [ - { - "name": "查询", - "value": "dictionary:Search", - "api": "/api/system/dictionary/", - "method": 0 - }, - { - "name": "详情", - "value": "dictionary:Retrieve", - "api": "/api/system/dictionary/{id}/", - "method": 0 - }, - { - "name": "新增", - "value": "dictionary:Create", - "api": "/api/system/dictionary/", - "method": 1 - }, - { - "name": "编辑", - "value": "dictionary:Update", - "api": "/api/system/dictionary/{id}/", - "method": 2 - }, - { - "name": "删除", - "value": "dictionary:Delete", - "api": "/api/system/dictionary/{id}/", - "method": 3 - } - ], - "menu_field": [ - { - "field_name": "color", - "title": "颜色", - "model": "Dictionary" - }, - { - "field_name": "create_datetime", - "title": "创建时间", - "model": "Dictionary" - }, - { - "field_name": "creator", - "title": "创建人", - "model": "Dictionary" - }, - { - "field_name": "dept_belong_id", - "title": "数据归属部门", - "model": "Dictionary" - }, - { - "field_name": "description", - "title": "描述", - "model": "Dictionary" - }, - { - "field_name": "id", - "title": "Id", - "model": "Dictionary" - }, - { - "field_name": "is_value", - "title": "是否为value值", - "model": "Dictionary" - }, - { - "field_name": "label", - "title": "字典名称", - "model": "Dictionary" - }, - { - "field_name": "modifier", - "title": "修改人", - "model": "Dictionary" - }, - { - "field_name": "parent", - "title": "父级", - "model": "Dictionary" - }, - { - "field_name": "remark", - "title": "备注", - "model": "Dictionary" - }, - { - "field_name": "sort", - "title": "显示排序", - "model": "Dictionary" - }, - { - "field_name": "status", - "title": "状态", - "model": "Dictionary" - }, - { - "field_name": "type", - "title": "数据值类型", - "model": "Dictionary" - }, - { - "field_name": "update_datetime", - "title": "修改时间", - "model": "Dictionary" - }, - { - "field_name": "value", - "title": "字典编号", - "model": "Dictionary" - } - ] - }, - { - "name": "地区管理", - "icon": "iconfont icon-Area", - "sort": 2, - "is_link": false, - "is_catalog": false, - "web_path": "/areas", - "component": "system/areas/index", - "component_name": "areas", - "status": true, - "cache": false, - "visible": true, - "parent": 10, - "children": [], - "menu_button": [ - { - "name": "查询", - "value": "area:Search", - "api": "/api/system/area/", - "method": 0 - }, - { - "name": "详情", - "value": "area:Retrieve", - "api": "/api/system/area/{id}/", - "method": 0 - }, - { - "name": "新增", - "value": "area:Create", - "api": "/api/system/area/", - "method": 1 - }, - { - "name": "编辑", - "value": "area:Update", - "api": "/api/system/area/{id}/", - "method": 2 - }, - { - "name": "删除", - "value": "area:Delete", - "api": "/api/system/area/{id}/", - "method": 3 - } - ], - "menu_field": [ - { - "field_name": "code", - "title": "地区编码", - "model": "Area" - }, - { - "field_name": "create_datetime", - "title": "创建时间", - "model": "Area" - }, - { - "field_name": "creator", - "title": "创建人", - "model": "Area" - }, - { - "field_name": "dept_belong_id", - "title": "数据归属部门", - "model": "Area" - }, - { - "field_name": "description", - "title": "描述", - "model": "Area" - }, - { - "field_name": "enable", - "title": "是否启用", - "model": "Area" - }, - { - "field_name": "id", - "title": "Id", - "model": "Area" - }, - { - "field_name": "initials", - "title": "首字母", - "model": "Area" - }, - { - "field_name": "level", - "title": "地区层级(1省份 2城市 3区县 4乡级)", - "model": "Area" - }, - { - "field_name": "modifier", - "title": "修改人", - "model": "Area" - }, - { - "field_name": "name", - "title": "名称", - "model": "Area" - }, - { - "field_name": "pcode", - "title": "父地区编码", - "model": "Area" - }, - { - "field_name": "pinyin", - "title": "拼音", - "model": "Area" - }, - { - "field_name": "update_datetime", - "title": "修改时间", - "model": "Area" - } - ] - }, - { - "name": "附件管理", - "icon": "iconfont icon-file", - "sort": 3, - "is_link": false, - "is_catalog": false, - "web_path": "/file", - "component": "system/fileList/index", - "component_name": "file", - "status": true, - "cache": false, - "visible": true, - "parent": 10, - "children": [], - "menu_button": [ - { - "name": "详情", - "value": "file:Retrieve", - "api": "/api/system/file/{id}/", - "method": 0 - }, - { - "name": "查询", - "value": "file:Search", - "api": "/api/system/file/", - "method": 0 - }, - { - "name": "编辑", - "value": "file:Update", - "api": "/api/system/file/{id}/", - "method": 1 - }, - { - "name": "删除", - "value": "file:Delete", - "api": "/api/system/file/{id}/", - "method": 3 - } - ], - "menu_field": [ - { - "field_name": "create_datetime", - "title": "创建时间", - "model": "FileList" - }, - { - "field_name": "creator", - "title": "创建人", - "model": "FileList" - }, - { - "field_name": "dept_belong_id", - "title": "数据归属部门", - "model": "FileList" - }, - { - "field_name": "description", - "title": "描述", - "model": "FileList" - }, - { - "field_name": "engine", - "title": "引擎", - "model": "FileList" - }, - { - "field_name": "file_url", - "title": "文件地址", - "model": "FileList" - }, - { - "field_name": "id", - "title": "Id", - "model": "FileList" - }, - { - "field_name": "md5sum", - "title": "文件md5", - "model": "FileList" - }, - { - "field_name": "mime_type", - "title": "Mime类型", - "model": "FileList" - }, - { - "field_name": "modifier", - "title": "修改人", - "model": "FileList" - }, - { - "field_name": "name", - "title": "名称", - "model": "FileList" - }, - { - "field_name": "size", - "title": "文件大小", - "model": "FileList" - }, - { - "field_name": "update_datetime", - "title": "修改时间", - "model": "FileList" - }, - { - "field_name": "url", - "title": "url", - "model": "FileList" - } - ] - } + { + "name": "系统配置", + "icon": "iconfont icon-system", + "sort": 0, + "is_link": false, + "is_catalog": false, + "web_path": "/config", + "component": "system/config/index", + "component_name": "config", + "status": true, + "cache": false, + "visible": true, + "parent": 10, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "system_config:Search", + "api": "/api/system/system_config/", + "method": 0 + }, + { + "name": "详情", + "value": "system_config:Retrieve", + "api": "/api/system/system_config/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "system_config:Create", + "api": "/api/system/system_config/", + "method": 1 + }, + { + "name": "编辑", + "value": "system_config:Update", + "api": "/api/system/system_config/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "system_config:Delete", + "api": "/api/system/system_config/{id}/", + "method": 3 + } + ], + "menu_field": [] + }, + { + "name": "字典管理", + "icon": "iconfont icon-dict", + "sort": 1, + "is_link": false, + "is_catalog": false, + "web_path": "/dictionary", + "component": "system/dictionary/index", + "component_name": "dictionary", + "status": true, + "cache": false, + "visible": true, + "parent": 10, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "dictionary:Search", + "api": "/api/system/dictionary/", + "method": 0 + }, + { + "name": "详情", + "value": "dictionary:Retrieve", + "api": "/api/system/dictionary/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "dictionary:Create", + "api": "/api/system/dictionary/", + "method": 1 + }, + { + "name": "编辑", + "value": "dictionary:Update", + "api": "/api/system/dictionary/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "dictionary:Delete", + "api": "/api/system/dictionary/{id}/", + "method": 3 + } + ], + "menu_field": [ + { + "field_name": "color", + "title": "颜色", + "model": "Dictionary" + }, + { + "field_name": "create_datetime", + "title": "创建时间", + "model": "Dictionary" + }, + { + "field_name": "creator", + "title": "创建人", + "model": "Dictionary" + }, + { + "field_name": "dept_belong_id", + "title": "数据归属部门", + "model": "Dictionary" + }, + { + "field_name": "description", + "title": "描述", + "model": "Dictionary" + }, + { + "field_name": "id", + "title": "Id", + "model": "Dictionary" + }, + { + "field_name": "is_value", + "title": "是否为value值", + "model": "Dictionary" + }, + { + "field_name": "label", + "title": "字典名称", + "model": "Dictionary" + }, + { + "field_name": "modifier", + "title": "修改人", + "model": "Dictionary" + }, + { + "field_name": "parent", + "title": "父级", + "model": "Dictionary" + }, + { + "field_name": "remark", + "title": "备注", + "model": "Dictionary" + }, + { + "field_name": "sort", + "title": "显示排序", + "model": "Dictionary" + }, + { + "field_name": "status", + "title": "状态", + "model": "Dictionary" + }, + { + "field_name": "type", + "title": "数据值类型", + "model": "Dictionary" + }, + { + "field_name": "update_datetime", + "title": "修改时间", + "model": "Dictionary" + }, + { + "field_name": "value", + "title": "字典编号", + "model": "Dictionary" + } + ] + }, + { + "name": "地区管理", + "icon": "iconfont icon-Area", + "sort": 2, + "is_link": false, + "is_catalog": false, + "web_path": "/areas", + "component": "system/areas/index", + "component_name": "areas", + "status": true, + "cache": false, + "visible": true, + "parent": 10, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "area:Search", + "api": "/api/system/area/", + "method": 0 + }, + { + "name": "详情", + "value": "area:Retrieve", + "api": "/api/system/area/{id}/", + "method": 0 + }, + { + "name": "新增", + "value": "area:Create", + "api": "/api/system/area/", + "method": 1 + }, + { + "name": "编辑", + "value": "area:Update", + "api": "/api/system/area/{id}/", + "method": 2 + }, + { + "name": "删除", + "value": "area:Delete", + "api": "/api/system/area/{id}/", + "method": 3 + } + ], + "menu_field": [ + { + "field_name": "code", + "title": "地区编码", + "model": "Area" + }, + { + "field_name": "create_datetime", + "title": "创建时间", + "model": "Area" + }, + { + "field_name": "creator", + "title": "创建人", + "model": "Area" + }, + { + "field_name": "dept_belong_id", + "title": "数据归属部门", + "model": "Area" + }, + { + "field_name": "description", + "title": "描述", + "model": "Area" + }, + { + "field_name": "enable", + "title": "是否启用", + "model": "Area" + }, + { + "field_name": "id", + "title": "Id", + "model": "Area" + }, + { + "field_name": "initials", + "title": "首字母", + "model": "Area" + }, + { + "field_name": "level", + "title": "地区层级(1省份 2城市 3区县 4乡级)", + "model": "Area" + }, + { + "field_name": "modifier", + "title": "修改人", + "model": "Area" + }, + { + "field_name": "name", + "title": "名称", + "model": "Area" + }, + { + "field_name": "pcode", + "title": "父地区编码", + "model": "Area" + }, + { + "field_name": "pinyin", + "title": "拼音", + "model": "Area" + }, + { + "field_name": "update_datetime", + "title": "修改时间", + "model": "Area" + } + ] + }, + { + "name": "附件管理", + "icon": "iconfont icon-file", + "sort": 3, + "is_link": false, + "is_catalog": false, + "web_path": "/file", + "component": "system/fileList/index", + "component_name": "file", + "status": true, + "cache": false, + "visible": true, + "parent": 10, + "children": [], + "menu_button": [ + { + "name": "详情", + "value": "file:Retrieve", + "api": "/api/system/file/{id}/", + "method": 0 + }, + { + "name": "查询", + "value": "file:Search", + "api": "/api/system/file/", + "method": 0 + }, + { + "name": "编辑", + "value": "file:Update", + "api": "/api/system/file/{id}/", + "method": 1 + }, + { + "name": "删除", + "value": "file:Delete", + "api": "/api/system/file/{id}/", + "method": 3 + } + ], + "menu_field": [ + { + "field_name": "create_datetime", + "title": "创建时间", + "model": "FileList" + }, + { + "field_name": "creator", + "title": "创建人", + "model": "FileList" + }, + { + "field_name": "dept_belong_id", + "title": "数据归属部门", + "model": "FileList" + }, + { + "field_name": "description", + "title": "描述", + "model": "FileList" + }, + { + "field_name": "engine", + "title": "引擎", + "model": "FileList" + }, + { + "field_name": "file_url", + "title": "文件地址", + "model": "FileList" + }, + { + "field_name": "id", + "title": "Id", + "model": "FileList" + }, + { + "field_name": "md5sum", + "title": "文件md5", + "model": "FileList" + }, + { + "field_name": "mime_type", + "title": "Mime类型", + "model": "FileList" + }, + { + "field_name": "modifier", + "title": "修改人", + "model": "FileList" + }, + { + "field_name": "name", + "title": "名称", + "model": "FileList" + }, + { + "field_name": "size", + "title": "文件大小", + "model": "FileList" + }, + { + "field_name": "update_datetime", + "title": "修改时间", + "model": "FileList" + }, + { + "field_name": "url", + "title": "url", + "model": "FileList" + } + ] + } ], "menu_button": [], "menu_field": [] - }, - { + }, + { "name": "日志管理", "icon": "iconfont icon-rizhi", "sort": 3, @@ -1184,280 +1180,284 @@ "visible": true, "parent": null, "children": [ - { - "name": "登录日志", - "icon": "iconfont icon-guanlidenglurizhi", - "sort": 1, - "is_link": false, - "is_catalog": false, - "web_path": "/loginLog", - "component": "system/log/loginLog/index", - "component_name": "loginLog", - "status": true, - "cache": false, - "visible": true, - "parent": 15, - "children": [], - "menu_button": [ - { - "name": "查询", - "value": "login_log:Search", - "api": "/api/system/login_log/", - "method": 0 - }, - { - "name": "详情", - "value": "login_log:Retrieve", - "api": "/api/system/login_log/{id}/", - "method": 0 - } - ], - "menu_field": [ - { - "field_name": "agent", - "title": "agent信息", - "model": "LoginLog" - }, - { - "field_name": "area_code", - "title": "区域代码", - "model": "LoginLog" - }, - { - "field_name": "browser", - "title": "浏览器名", - "model": "LoginLog" - }, - { - "field_name": "city", - "title": "城市", - "model": "LoginLog" - }, - { - "field_name": "continent", - "title": "州", - "model": "LoginLog" - }, - { - "field_name": "country", - "title": "国家", - "model": "LoginLog" - }, - { - "field_name": "country_code", - "title": "简称", - "model": "LoginLog" - }, - { - "field_name": "country_english", - "title": "英文全称", - "model": "LoginLog" - }, - { - "field_name": "create_datetime", - "title": "创建时间", - "model": "LoginLog" - }, - { - "field_name": "creator", - "title": "创建人", - "model": "LoginLog" - }, - { - "field_name": "dept_belong_id", - "title": "数据归属部门", - "model": "LoginLog" - }, - { - "field_name": "description", - "title": "描述", - "model": "LoginLog" - }, - { - "field_name": "district", - "title": "县区", - "model": "LoginLog" - }, - { - "field_name": "id", - "title": "Id", - "model": "LoginLog" - }, - { - "field_name": "ip", - "title": "登录ip", - "model": "LoginLog" - }, - { - "field_name": "isp", - "title": "运营商", - "model": "LoginLog" - }, - { - "field_name": "latitude", - "title": "纬度", - "model": "LoginLog" - }, - { - "field_name": "login_type", - "title": "登录类型", - "model": "LoginLog" - }, - { - "field_name": "longitude", - "title": "经度", - "model": "LoginLog" - }, - { - "field_name": "modifier", - "title": "修改人", - "model": "LoginLog" - }, - { - "field_name": "os", - "title": "操作系统", - "model": "LoginLog" - }, - { - "field_name": "province", - "title": "省份", - "model": "LoginLog" - }, - { - "field_name": "update_datetime", - "title": "修改时间", - "model": "LoginLog" - }, - { - "field_name": "username", - "title": "登录用户名", - "model": "LoginLog" - } - ] - }, - { - "name": "操作日志", - "icon": "iconfont icon-caozuorizhi", - "sort": 2, - "is_link": false, - "is_catalog": false, - "web_path": "/operationLog", - "component": "system/log/operationLog/index", - "component_name": "operationLog", - "status": true, - "cache": false, - "visible": true, - "parent": 15, - "children": [], - "menu_button": [ - { - "name": "详情", - "value": "operation_log:Retrieve", - "api": "/api/system/operation_log/{id}/", - "method": 0 - }, - { - "name": "查询", - "value": "operation_log:Search", - "api": "/api/system/operation_log/", - "method": 0 - } - ], - "menu_field": [ - { - "field_name": "create_datetime", - "title": "创建时间", - "model": "OperationLog" - }, - { - "field_name": "creator", - "title": "创建人", - "model": "OperationLog" - }, - { - "field_name": "dept_belong_id", - "title": "数据归属部门", - "model": "OperationLog" - }, - { - "field_name": "description", - "title": "描述", - "model": "OperationLog" - }, - { - "field_name": "id", - "title": "Id", - "model": "OperationLog" - }, - { - "field_name": "json_result", - "title": "返回信息", - "model": "OperationLog" - }, - { - "field_name": "modifier", - "title": "修改人", - "model": "OperationLog" - }, - { - "field_name": "request_body", - "title": "请求参数", - "model": "OperationLog" - }, - { - "field_name": "request_browser", - "title": "请求浏览器", - "model": "OperationLog" - }, - { - "field_name": "request_ip", - "title": "请求ip地址", - "model": "OperationLog" - }, - { - "field_name": "request_method", - "title": "请求方式", - "model": "OperationLog" - }, - { - "field_name": "request_modular", - "title": "请求模块", - "model": "OperationLog" - }, - { - "field_name": "request_msg", - "title": "操作说明", - "model": "OperationLog" - }, - { - "field_name": "request_os", - "title": "操作系统", - "model": "OperationLog" - }, - { - "field_name": "request_path", - "title": "请求地址", - "model": "OperationLog" - }, - { - "field_name": "response_code", - "title": "响应状态码", - "model": "OperationLog" - }, - { - "field_name": "status", - "title": "响应状态", - "model": "OperationLog" - }, - { - "field_name": "update_datetime", - "title": "修改时间", - "model": "OperationLog" - } - ] - } + { + "name": "登录日志", + "icon": "iconfont icon-guanlidenglurizhi", + "sort": 1, + "is_link": false, + "is_catalog": false, + "web_path": "/loginLog", + "component": "system/log/loginLog/index", + "component_name": "loginLog", + "status": true, + "cache": false, + "visible": true, + "parent": 15, + "children": [], + "menu_button": [ + { + "name": "查询", + "value": "login_log:Search", + "api": "/api/system/login_log/", + "method": 0 + }, + { + "name": "详情", + "value": "login_log:Retrieve", + "api": "/api/system/login_log/{id}/", + "method": 0 + } + ], + "menu_field": [ + { + "field_name": "agent", + "title": "agent信息", + "model": "LoginLog" + }, + { + "field_name": "area_code", + "title": "区域代码", + "model": "LoginLog" + }, + { + "field_name": "browser", + "title": "浏览器名", + "model": "LoginLog" + }, + { + "field_name": "city", + "title": "城市", + "model": "LoginLog" + }, + { + "field_name": "continent", + "title": "州", + "model": "LoginLog" + }, + { + "field_name": "country", + "title": "国家", + "model": "LoginLog" + }, + { + "field_name": "country_code", + "title": "简称", + "model": "LoginLog" + }, + { + "field_name": "country_english", + "title": "英文全称", + "model": "LoginLog" + }, + { + "field_name": "create_datetime", + "title": "创建时间", + "model": "LoginLog" + }, + { + "field_name": "creator", + "title": "创建人", + "model": "LoginLog" + }, + { + "field_name": "dept_belong_id", + "title": "数据归属部门", + "model": "LoginLog" + }, + { + "field_name": "description", + "title": "描述", + "model": "LoginLog" + }, + { + "field_name": "district", + "title": "县区", + "model": "LoginLog" + }, + { + "field_name": "id", + "title": "Id", + "model": "LoginLog" + }, + { + "field_name": "ip", + "title": "登录ip", + "model": "LoginLog" + }, + { + "field_name": "isp", + "title": "运营商", + "model": "LoginLog" + }, + { + "field_name": "latitude", + "title": "纬度", + "model": "LoginLog" + }, + { + "field_name": "login_type", + "title": "登录类型", + "model": "LoginLog" + }, + { + "field_name": "longitude", + "title": "经度", + "model": "LoginLog" + }, + { + "field_name": "modifier", + "title": "修改人", + "model": "LoginLog" + }, + { + "field_name": "os", + "title": "操作系统", + "model": "LoginLog" + }, + { + "field_name": "province", + "title": "省份", + "model": "LoginLog" + }, + { + "field_name": "update_datetime", + "title": "修改时间", + "model": "LoginLog" + }, + { + "field_name": "username", + "title": "登录用户名", + "model": "LoginLog" + } + ] + }, + { + "name": "操作日志", + "icon": "iconfont icon-caozuorizhi", + "sort": 2, + "is_link": false, + "is_catalog": false, + "web_path": "/operationLog", + "component": "system/log/operationLog/index", + "component_name": "operationLog", + "status": true, + "cache": false, + "visible": true, + "parent": 15, + "children": [], + "menu_button": [ + { + "name": "详情", + "value": "operation_log:Retrieve", + "api": "/api/system/operation_log/{id}/", + "method": 0 + }, + { + "name": "查询", + "value": "operation_log:Search", + "api": "/api/system/operation_log/", + "method": 0 + } + ], + "menu_field": [ + { + "field_name": "create_datetime", + "title": "创建时间", + "model": "OperationLog" + }, + { + "field_name": "creator", + "title": "创建人", + "model": "OperationLog" + }, + { + "field_name": "dept_belong_id", + "title": "数据归属部门", + "model": "OperationLog" + }, + { + "field_name": "description", + "title": "描述", + "model": "OperationLog" + }, + { + "field_name": "id", + "title": "Id", + "model": "OperationLog" + }, + { + "field_name": "json_result", + "title": "返回信息", + "model": "OperationLog" + }, + { + "field_name": "modifier", + "title": "修改人", + "model": "OperationLog" + }, + { + "field_name": "request_body", + "title": "请求参数", + "model": "OperationLog" + }, + { + "field_name": "request_browser", + "title": "请求浏览器", + "model": "OperationLog" + }, + { + "field_name": "request_ip", + "title": "请求ip地址", + "model": "OperationLog" + }, + { + "field_name": "request_method", + "title": "请求方式", + "model": "OperationLog" + }, + { + "field_name": "request_modular", + "title": "请求模块", + "model": "OperationLog" + }, + { + "field_name": "request_msg", + "title": "操作说明", + "model": "OperationLog" + }, + { + "field_name": "request_os", + "title": "操作系统", + "model": "OperationLog" + }, + { + "field_name": "request_path", + "title": "请求地址", + "model": "OperationLog" + }, + { + "field_name": "response_code", + "title": "响应状态码", + "model": "OperationLog" + }, + { + "field_name": "status", + "title": "响应状态", + "model": "OperationLog" + }, + { + "field_name": "update_datetime", + "title": "修改时间", + "model": "OperationLog" + } + ] + } ], "menu_button": [], "menu_field": [] - } + } + ], + "menu_button": [], + "menu_field": [] + } ] \ No newline at end of file diff --git a/backend/dvadmin/system/fixtures/init_systemconfig.json b/backend/dvadmin/system/fixtures/init_systemconfig.json index cc692f2..77693be 100644 --- a/backend/dvadmin/system/fixtures/init_systemconfig.json +++ b/backend/dvadmin/system/fixtures/init_systemconfig.json @@ -97,7 +97,7 @@ "parent": 1, "title": "网站标题", "key": "site_title", - "value": "Dvadmin", + "value": "协众防重码", "sort": 1, "status": true, "data_options": null, @@ -111,7 +111,7 @@ "parent": 1, "title": "网站名称", "key": "site_name", - "value": "企业级后台管理系统", + "value": "协众防重码系统", "sort": 1, "status": true, "data_options": null, @@ -158,7 +158,7 @@ "parent": 1, "title": "版权信息", "key": "copyright", - "value": "2021-2024 django-vue-admin.com 版权所有", + "value": "2021-2025 协众防重码系统 版权所有", "sort": 4, "status": true, "data_options": null, @@ -177,7 +177,7 @@ "parent": 1, "title": "备案信息", "key": "keep_record", - "value": "晋ICP备18005113号-3", + "value": "", "sort": 5, "status": true, "data_options": null, @@ -196,7 +196,7 @@ "parent": 1, "title": "帮助链接", "key": "help_url", - "value": "https://django-vue-admin.com", + "value": "#", "sort": 6, "status": true, "data_options": null, diff --git a/backend/dvadmin/system/fixtures/init_users.json b/backend/dvadmin/system/fixtures/init_users.json index eb3f52e..4ab1d69 100644 --- a/backend/dvadmin/system/fixtures/init_users.json +++ b/backend/dvadmin/system/fixtures/init_users.json @@ -16,7 +16,8 @@ "last_name": "", "is_staff": true, "is_active": true, - "password": "pbkdf2_sha256$260000$g17x5wlSiW1FZAh1Eudchw$ZeSAqj3Xak0io8v/pmPW0BX9EX5R2zFXDwbbD68oBFk=", + "description": "A01", + "password": "pbkdf2_sha256$600000$ITjuHRKiVCgPpiuCYxAaEp$aA9LDAfujtdMJRstK9YcBPz9a9MkfFG5Tsq1NviWxy0=", "last_login": null, "is_superuser": true }, @@ -34,7 +35,8 @@ "last_name": "", "is_staff": true, "is_active": true, - "password": "pbkdf2_sha256$260000$g17x5wlSiW1FZAh1Eudchw$ZeSAqj3Xak0io8v/pmPW0BX9EX5R2zFXDwbbD68oBFk=", + "description": "A02", + "password": "pbkdf2_sha256$600000$ITjuHRKiVCgPpiuCYxAaEp$aA9LDAfujtdMJRstK9YcBPz9a9MkfFG5Tsq1NviWxy0=", "last_login": null, "is_superuser": false }, @@ -49,11 +51,12 @@ "role": [], "role_key": ["public"], "dept_key": "technology", + "description": "A03", "first_name": "", "last_name": "", "is_staff": true, "is_active": true, - "password": "pbkdf2_sha256$260000$g17x5wlSiW1FZAh1Eudchw$ZeSAqj3Xak0io8v/pmPW0BX9EX5R2zFXDwbbD68oBFk=", + "password": "pbkdf2_sha256$600000$ITjuHRKiVCgPpiuCYxAaEp$aA9LDAfujtdMJRstK9YcBPz9a9MkfFG5Tsq1NviWxy0=", "last_login": null, "is_superuser": false } diff --git a/backend/plugins/code_info/__init__.py b/backend/plugins/code_info/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/plugins/code_info/admin.py b/backend/plugins/code_info/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/backend/plugins/code_info/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/backend/plugins/code_info/apps.py b/backend/plugins/code_info/apps.py new file mode 100644 index 0000000..2a8336e --- /dev/null +++ b/backend/plugins/code_info/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class CodeInfoConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'plugins.code_info' diff --git a/backend/plugins/code_info/fixtures/__init__.py b/backend/plugins/code_info/fixtures/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/plugins/code_info/fixtures/init_dictionary.json b/backend/plugins/code_info/fixtures/init_dictionary.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/backend/plugins/code_info/fixtures/init_dictionary.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/backend/plugins/code_info/fixtures/init_menu.json b/backend/plugins/code_info/fixtures/init_menu.json new file mode 100644 index 0000000..92eeb18 --- /dev/null +++ b/backend/plugins/code_info/fixtures/init_menu.json @@ -0,0 +1,49 @@ +[ { + "name": "扫码信息", + "icon": "ele-Bell", + "sort": 8, + "is_link": false, + "is_catalog": true, + "web_path": "/releaseInfo", + "component": "", + "component_name": "", + "status": true, + "cache": true, + "visible": true, + "parent": null, + "children": [ + { + "name": "扫码数据", + "icon": "ele-Bell", + "sort": 1, + "is_link": false, + "is_catalog": false, + "web_path": "/scanData", + "component": "plugins/scanInfo/src/scanData/index", + "component_name": "scanData", + "status": true, + "cache": false, + "visible": true, + "children": [], + "menu_button": [], + "menu_field": [] + },{ + "name": "异常扫码记录", + "icon": "ele-Bell", + "sort": 2, + "is_link": false, + "is_catalog": false, + "web_path": "/scanRecord", + "component": "plugins/scanInfo/src/scanRecord/index", + "component_name": "scanRecord", + "status": true, + "cache": false, + "visible": true, + "children": [], + "menu_button": [], + "menu_field": [] + } + ], + "menu_button": [], + "menu_field": [] + }] \ No newline at end of file diff --git a/backend/plugins/code_info/fixtures/initialize.py b/backend/plugins/code_info/fixtures/initialize.py new file mode 100644 index 0000000..f465bfb --- /dev/null +++ b/backend/plugins/code_info/fixtures/initialize.py @@ -0,0 +1,33 @@ +# 初始化 +import os + +import django + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "application.settings") +django.setup() + +from dvadmin.system.fixtures.initSerializer import MenuInitSerializer, SystemConfigInitSerializer, \ + DictionaryInitSerializer + +from dvadmin.utils.core_initialize import CoreInitialize + + +class Initialize(CoreInitialize): + + def init_menu(self): + """ + 初始化菜单信息 + """ + self.init_base(MenuInitSerializer, unique_fields=['name', 'web_path', 'component', 'component_name']) + def init_dictionary(self): + """ + 初始化字典表 + """ + self.init_base(DictionaryInitSerializer, unique_fields=['value', 'parent', ]) + + def run(self): + self.init_menu() + self.init_dictionary() + print(22) +if __name__ == '__main__': + Initialize(app='release_info').run() \ No newline at end of file diff --git a/backend/plugins/code_info/migrations/__init__.py b/backend/plugins/code_info/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/plugins/code_info/models.py b/backend/plugins/code_info/models.py new file mode 100644 index 0000000..7fe052b --- /dev/null +++ b/backend/plugins/code_info/models.py @@ -0,0 +1,29 @@ +from django.db import models + +from django.db import models +from dvadmin.utils.models import CoreModel + +table_prefix = "release_info_" + + +class ScanData(CoreModel): + # 产品件号、供应商代码、生产批次、产品序列码、版本号、扫码时间、班次和人员信息 + code = models.CharField(null=True, blank=True, max_length=255, verbose_name='扫码值', help_text='扫码值') + product_code = models.CharField(null=True, blank=True, max_length=255, verbose_name='产品件号', help_text='产品件号') + supplier_code = models.CharField(null=True, blank=True, max_length=255, verbose_name='供应商代码', help_text='供应商代码') + production_batch = models.CharField(null=True, blank=True, max_length=255, verbose_name='生产批次', help_text='生产批次') + product_serial_number = models.CharField(null=True, blank=True, max_length=255, verbose_name='产品序列码', help_text='产品序列码') + version_number = models.CharField(null=True, blank=True, max_length=255, verbose_name='版本号', help_text='版本号') + shift = models.CharField(null=True, blank=True, max_length=255, verbose_name='班次', help_text='班次') + STATUS_EMU = ( + (0, "重复扫码"), + (1, "正常"), + (2, "未识别码"), + ) + status = models.IntegerField(default=1, choices=STATUS_EMU, verbose_name='状态', help_text='状态') + + class Meta: + db_table = table_prefix + "scan_data" + verbose_name = "扫码数据" + verbose_name_plural = verbose_name + ordering = ('-create_datetime',) diff --git a/backend/plugins/code_info/settings.py b/backend/plugins/code_info/settings.py new file mode 100644 index 0000000..3a1f8db --- /dev/null +++ b/backend/plugins/code_info/settings.py @@ -0,0 +1,22 @@ +from application import settings + +# ================================================= # +# ***************** 插件配置区开始 ******************* +# ================================================= # +# 路由配置 +plugins_url_patterns = [ + {"re_path": r'api/code_info/', "include": "code_info.urls"}, +] +# app 配置 +apps = ['code_info'] +# 租户模式中,public模式共享app配置 +tenant_shared_apps = ['code_info'] +# ================================================= # +# ******************* 插件配置区结束 ***************** +# ================================================= # + +# ********** 赋值到 settings 中 ********** +settings.INSTALLED_APPS += [app for app in apps if app not in settings.INSTALLED_APPS] +settings.TENANT_SHARED_APPS += tenant_shared_apps +# ********** 注册路由 ********** +settings.PLUGINS_URL_PATTERNS += plugins_url_patterns diff --git a/backend/plugins/code_info/urls.py b/backend/plugins/code_info/urls.py new file mode 100644 index 0000000..d09cab0 --- /dev/null +++ b/backend/plugins/code_info/urls.py @@ -0,0 +1,15 @@ +from django.urls import path +from rest_framework import routers + +from plugins.code_info.views.scan_data import ScanDataViewSet +from plugins.code_info.views.scan_record import ScanRecordViewSet + +route_url = routers.SimpleRouter() + +route_url.register(r'scan_data', ScanDataViewSet,basename='scan_data') +route_url.register(r'scan_record', ScanRecordViewSet) + +urlpatterns = [ + +] +urlpatterns += route_url.urls diff --git a/backend/plugins/code_info/views/__init__.py b/backend/plugins/code_info/views/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/plugins/code_info/views/scan_data.py b/backend/plugins/code_info/views/scan_data.py new file mode 100644 index 0000000..7d89668 --- /dev/null +++ b/backend/plugins/code_info/views/scan_data.py @@ -0,0 +1,67 @@ +from dvadmin.utils.field_permission import FieldPermissionMixin +from dvadmin.utils.serializers import CustomModelSerializer +from dvadmin.utils.validator import CustomValidationError +from dvadmin.utils.viewset import CustomModelViewSet +from plugins.code_info.models import ScanData + + +class ScanDataSerializer(CustomModelSerializer): + """ + 扫码数据-序列化器 + """ + + class Meta: + model = ScanData + fields = "__all__" + read_only_fields = ["id"] + +class CreateScanDataSerializer(CustomModelSerializer): + """ + 扫码数据-序列化器 + """ + + def create(self, validated_data): + code = validated_data.get("code") + print(code) + code_list = code.split("/") + if len(code_list) == 5: + validated_data["product_code"] = code_list[0] + validated_data["supplier_code"] = code_list[1] + validated_data["production_batch"] = code_list[2] + validated_data["product_serial_number"] = code_list[3] + validated_data["version_number"] = code_list[4] + validated_data["shift"] = self.request.user.description + instance = super().create(validated_data) + # 1.格式错误 + if len(code_list) != 5: + instance.status = 2 + instance.save() + raise CustomValidationError("数据格式错误") + # 2.查询数据是否已存在数据库 + print("ScanData.objects.filter(code=code, status=1)",ScanData.objects.filter(code=code, status=1)) + if ScanData.objects.filter(code=code, status=1).exclude(id=instance.id).exists(): + instance.status = 0 + instance.save() + raise CustomValidationError("重复扫码") + return instance + + + class Meta: + model = ScanData + fields = "__all__" + read_only_fields = ["id"] + + +class ScanDataViewSet(CustomModelViewSet, FieldPermissionMixin): + """ + 扫码数据接口 + list:查询 + create:新增 + update:修改 + retrieve:单例 + destroy:删除 + """ + queryset = ScanData.objects.filter(status=1) + serializer_class = ScanDataSerializer + create_serializer_class = CreateScanDataSerializer + extra_filter_class = [] diff --git a/backend/plugins/code_info/views/scan_record.py b/backend/plugins/code_info/views/scan_record.py new file mode 100644 index 0000000..92bbc36 --- /dev/null +++ b/backend/plugins/code_info/views/scan_record.py @@ -0,0 +1,29 @@ +from dvadmin.utils.field_permission import FieldPermissionMixin +from dvadmin.utils.serializers import CustomModelSerializer +from dvadmin.utils.viewset import CustomModelViewSet +from plugins.code_info.models import ScanData + + +class ScanRecordSerializer(CustomModelSerializer): + """ + 扫码数据-序列化器 + """ + + class Meta: + model = ScanData + fields = "__all__" + read_only_fields = ["id"] + + +class ScanRecordViewSet(CustomModelViewSet, FieldPermissionMixin): + """ + 异常扫码数据记录接口 + list:查询 + create:新增 + update:修改 + retrieve:单例 + destroy:删除 + """ + queryset = ScanData.objects.exclude(status=1) + serializer_class = ScanRecordSerializer + extra_filter_class = [] diff --git a/backend/requirements.txt b/backend/requirements.txt index f443f6f..a02a2ce 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -8,8 +8,7 @@ django-restql==0.15.4 django-simple-captcha==0.6.0 django-timezone-field==7.0 djangorestframework_simplejwt==5.4.0 -drf-yasg==1.21.7 -mysqlclient==2.2.0 +drf-yasg==1.21.10 pypinyin==0.51.0 ua-parser==0.18.0 pyparsing==3.1.2 diff --git a/web/README.en.md b/web/README.en.md deleted file mode 100644 index d8ca172..0000000 --- a/web/README.en.md +++ /dev/null @@ -1,168 +0,0 @@ -# Django-Vue3-Admin - -[![img](https://img.shields.io/badge/license-MIT-blue.svg)](https://gitee.com/huge-dream/django-vue3-admin/blob/master/LICENSE) [![img](https://img.shields.io/badge/python-%3E=3.7.x-green.svg)](https://python.org/) [![PyPI - Django Version badge](https://img.shields.io/badge/django%20versions-3.2-blue)](https://docs.djangoproject.com/zh-hans/3.2/) [![img](https://img.shields.io/badge/node-%3E%3D%2012.0.0-brightgreen)](https://nodejs.org/zh-cn/) [![img](https://gitee.com/huge-dream/django-vue3-admin/badge/star.svg?theme=dark)](https://gitee.com/huge-dream/django-vue3-admin) - -[preview](https://demo.dvadmin.com) | [Official website document](https://www.django-vue-admin.com) | [qq group](https://qm.qq.com/cgi-bin/qm/qr?k=fOdnHhC8DJlRHGYSnyhoB8P5rgogA6Vs&jump_from=webapi) | [community](https://bbs.django-vue-admin.com) | [plugins market](https://bbs.django-vue-admin.com/plugMarket.html) | [Github](https://github.com/liqianglog/django-vue-admin) - -💡 **「About」** - -We are a group of young people who love Code. In this hot era, we hope to calm down and bring some of our colors and colors through code. - -Because of love, so embrace the future - -## framework introduction - -💡 [django-vue3-admin](https://gitee.com/huge-dream/django-vue3-admin.git) Is a set of all open source rapid development platform, no reservation for individuals and enterprises free use. - -* 🧑‍🤝‍🧑Front-end adoption Vue3+TS+pinia+fastcrud。 -* 👭The backend uses the Python language Django framework as well as the powerful[Django REST Framework](https://pypi.org/project/djangorestframework)。 -* 👫Permission authentication use[Django REST Framework SimpleJWT](https://pypi.org/project/djangorestframework-simplejwt),Supports the multi-terminal authentication system. -* 👬Support loading dynamic permission menu, multi - way easy permission control. -* 💏 Special thanks: [vue-next-admin](https://lyt-top.gitee.io/vue-next-admin-doc-preview/). -* 💡 💏 Special thanks:[jetbrains](https://www.jetbrains.com/) To provide a free IntelliJ IDEA license for this open source project. - -## Online experience - -👩‍👧‍👦👩‍👧‍👦 demo address:[https://demo.dvadmin.com](https://demo.dvadmin.com) - -* demo account:superadmin - -* demo password:admin123456 - -👩‍👦‍👦docs:[https://django-vue-admin.com](https://django-vue-admin.com) - -## communication - -* Communication community:[click here](https://bbs.django-vue-admin.com)👩‍👦‍👦 - -* plugins market:[click here](https://bbs.django-vue-admin.com/plugMarket.html)👩‍👦‍👦 - -## source code url: - -gitee(Main push):[https://gitee.com/huge-dream/django-vue3-admin](https://gitee.com/huge-dream/django-vue3-admin)👩‍👦‍👦 - -github:no data - -## core function - -1. 👨‍⚕️ Menu management: Configure the system menu, operation permissions, button permissions, back-end interface permissions, etc. -2. 🧑‍⚕️ Department management: Configure the system organization (company, department, role). -3. 👩‍⚕️ Role management: role menu permission allocation, data permission allocation, set roles according to the department for data range permission division. -4. 🧑‍🎓 Rights Specifies the rights of the authorization role. -5. 👨‍🎓 User management: The user is the system operator, this function mainly completes the system user configuration. -6. 👬 Interface whitelist: specifies the interface that does not need permission verification. -7. 🧑‍🔧 Dictionary management: Maintenance of some fixed data frequently used in the system. -8. 🧑‍🔧 Regional management: to manage provinces, cities, counties and regions. -9. 📁 Attachment management: Unified management of all files and pictures on the platform. -10. 🗓 ️operation logs: log and query the system normal operation; Log and query system exception information. - 11.🔌 [plugins market] () : based on the Django framework - Vue - Admin application and plug-in development. - -## plugins market 🔌 - -* Celery Asynchronous task:[dvadmin-celery](https://gitee.com/huge-dream/dvadmin-celery) -* Upgrade center backend:[dvadmin-upgrade-center](https://gitee.com/huge-dream/dvadmin-upgrade-center) -* Upgrade center front:[dvadmin-upgrade-center-web](https://gitee.com/huge-dream/dvadmin-upgrade-center-web) - -## before start project you need: - -~~~ -Python >= 3.8.0 -nodejs >= 14.0 -Mysql >= 5.7.0 (Optional. The default database is sqlite3. 8.0 is recommended) -Redis(Optional, the latest edition) -~~~ - -## frontend♝ - -```bash -# clone code -git clone https://gitee.com/huge-dream/django-vue3-admin.git - -# enter code dir -cd web - -# install dependence -npm install --registry=https://registry.npm.taobao.org - -# Start service -npm run dev -# Visit http://localhost:8080 in your browser -# Parameters such as boot port can be configured in the #.env.development file -# Build the production environment -# npm run build -``` - -## backend💈 - -~~~bash -1. enter code dir cd backend -2. copy ./conf/env.example.py to ./conf dir,rename as env.py -3. in env.py configure database information - mysql database recommended version: 8.0 - mysql database character set: utf8mb4 -4. install pip dependence - pip3 install -r requirements.txt -5. Execute the migration command: - python3 manage.py makemigrations - python3 manage.py migrate -6. Initialization data - python3 manage.py init -7. Initialize provincial, municipal and county data: - python3 manage.py init_area -8. start backend - python3 manage.py runserver 0.0.0.0:8000 -or daphne : - daphne -b 0.0.0.0 -p 8000 application.asgi:application -~~~ - -### visit backend swagger - -* visit url:[http://localhost:8080](http://localhost:8080) (The default address is this one. If you want to change it, follow the configuration file) -* account:`superadmin` password:`admin123456` - -### docker-compose - -~~~shell -docker-compose up -d -# Initialize backend data (first execution only) -docker exec -ti dvadmin-django bash -python manage.py makemigrations -python manage.py migrate -python manage.py init_area -python manage.py init -exit - -frontend url:http://127.0.0.1:8080 -backend url:http://127.0.0.1:8080/api -# Change 127.0.0.1 to your own public ip address on the server -account:`superadmin` password:`admin123456` - -# docker-compose stop -docker-compose down -# docker-compose restart -docker-compose restart -# docker-compose on start build -docker-compose up -d --build -~~~ - -## Demo screenshot✅ - -![image-01](https://images.gitee.com/uploads/images/2022/0530/234137_b58c8f98_5074988.png) - -![image-02](https://images.gitee.com/uploads/images/2022/0530/234240_39834603_5074988.png) - -![image-03](https://images.gitee.com/uploads/images/2022/0530/234339_35e728a0_5074988.png) - -![image-04](https://images.gitee.com/uploads/images/2022/0530/234426_957036b0_5074988.png) - -![image-05](https://images.gitee.com/uploads/images/2022/0530/234458_898be492_5074988.png) - -![image-06](https://images.gitee.com/uploads/images/2022/0530/234521_35b40076_5074988.png) - -![image-07](https://images.gitee.com/uploads/images/2022/0530/234615_c2325639_5074988.png) - -![image-08](https://images.gitee.com/uploads/images/2022/0530/234639_1ed6cc93_5074988.png) - -![image-09](https://images.gitee.com/uploads/images/2022/0530/234815_cea2c53f_5074988.png) - -![image-10](https://images.gitee.com/uploads/images/2022/0530/234840_5f3e5f53_5074988.png) diff --git a/web/README.md b/web/README.md deleted file mode 100644 index 86d36b1..0000000 --- a/web/README.md +++ /dev/null @@ -1,212 +0,0 @@ -# Django-Vue3-Admin - -[![img](https://img.shields.io/badge/license-MIT-blue.svg)](https://gitee.com/liqianglog/django-vue-admin/blob/master/LICENSE) [![img](https://img.shields.io/badge/python-%3E=3.7.x-green.svg)](https://python.org/) [![PyPI - Django Version badge](https://img.shields.io/badge/django%20versions-3.2-blue)](https://docs.djangoproject.com/zh-hans/3.2/) [![img](https://img.shields.io/badge/node-%3E%3D%2012.0.0-brightgreen)](https://nodejs.org/zh-cn/) [![img](https://gitee.com/liqianglog/django-vue-admin/badge/star.svg?theme=dark)](https://gitee.com/liqianglog/django-vue-admin) - -[预 览](https://demo.dvadmin.com) | [官网文档](https://www.django-vue-admin.com) | [群聊](https://qm.qq.com/cgi-bin/qm/qr?k=fOdnHhC8DJlRHGYSnyhoB8P5rgogA6Vs&jump_from=webapi) | [社区](https://bbs.django-vue-admin.com) | [插件市场](https://bbs.django-vue-admin.com/plugMarket.html) | [Github](https://github.com/liqianglog/django-vue-admin) - - - -💡 **「关于」** - -我们是一群热爱代码的青年,在这个炙热的时代下,我们希望静下心来通过Code带来一点我们的色彩和颜色。 - -因为热爱,所以拥抱未来! - - -## 平台简介 - -💡 [django-vue3-admin](https://gitee.com/huge-dream/django-vue3-admin.git) 是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。 - django-vue3-admin 基于 vue3 + CompositionAPI + typescript + vite + element plus, 是一款全栈,快速,开源的后台管理系统! - - - - -* 🧑‍🤝‍🧑前端采用 Vue3+TS+pinia+fastcrud(感谢[vue-next-admin](https://lyt-top.gitee.io/vue-next-admin-doc-preview/)) -* 👭后端采用 Python 语言 Django 框架以及强大的 [Django REST Framework](https://pypi.org/project/djangorestframework)。 -* 👫权限认证使用[Django REST Framework SimpleJWT](https://pypi.org/project/djangorestframework-simplejwt),支持多终端认证系统。 -* 👬支持加载动态权限菜单,多方式轻松权限控制。 -* 💏特别鸣谢:[vue-next-admin](https://lyt-top.gitee.io/vue-next-admin-doc-preview/)。 -* 💡 特别感谢[jetbrains](https://www.jetbrains.com/) 为本开源项目提供免费的 IntelliJ IDEA 授权。 - -#### 🏭 环境支持 - -| Edge | Firefox | Chrome | Safari | -| --------- | ------------ | ----------- | ----------- | -| Edge ≥ 79 | Firefox ≥ 78 | Chrome ≥ 64 | Safari ≥ 12 | - -> 由于 Vue3 不再支持 IE11,故而 ElementPlus 也不支持 IE11 及之前版本。 - - - -## 在线体验 - -👩‍👧‍👦演示地址:[https://demo.dvadmin.com](https://demo.dvadmin.com) - -- 账号:superadmin - -- 密码:admin123456 - -👩‍👦‍👦文档地址:[coding](https://dvadmin-private.coding.net/share/km/cec69f3d-30fe-47d5-bd97-e9e851f0b776/K-2) - - -## 给框架点赞 - - - - -## 交流 - -- 交流社区:[戳我](https://bbs.django-vue-admin.com)👩‍👦‍👦 - -- 插件市场:[戳我](https://bbs.django-vue-admin.com/plugMarket.html)👩‍👦‍👦 - -- django-vue-admin交流01群(已满):812482043 [点击链接加入群聊](https://qm.qq.com/cgi-bin/qm/qr?k=aJVwjDvH-Es4MPJQuoO32N0SucK22TE5&jump_from=webapi) -- django-vue-admin交流02群(已满):687252418 [点击链接加入群聊](https://qm.qq.com/cgi-bin/qm/qr?k=4jJN4IjWGfxJ8YJXbb_gTsuWjR34WLdc&jump_from=webapi) -- django-vue-admin交流03群:442108213 [点击链接加入群聊](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=wsm5oSz3K8dElBYUDtLTcQSEPhINFkl8&authKey=M6sbER0z59ZakgBr5erFeZyFZU15CI52bErNZa%2FxSvvGIuVAbY0N5866v89hm%2FK4&noverify=0&group_code=442108213) - -- 二维码 - - - -## 源码地址 - -gitee地址(主推):[https://gitee.com/huge-dream/django-vue3-admin](https://gitee.com/huge-dream/django-vue3-admin)👩‍👦‍👦 - -github地址:暂无 - - -## 内置功能 - -1. 👨‍⚕️菜单管理:配置系统菜单,操作权限,按钮权限标识、后端接口权限等。 -2. 🧑‍⚕️部门管理:配置系统组织机构(公司、部门、角色)。 -3. 👩‍⚕️角色管理:角色菜单权限分配、数据权限分配、设置角色按部门进行数据范围权限划分。 -4. 🧑‍🎓按钮权限权限:授权角色的按钮权限和接口权限,可做到每一个接口都能授权数据范围。 -5. 🧑‍🎓字段权限权限:授权页面的字段显示权限。 -5. 👨‍🎓用户管理:用户是系统操作者,该功能主要完成系统用户配置。 -6. 👬接口白名单:配置不需要进行权限校验的接口。 -7. 🧑‍🔧字典管理:对系统中经常使用的一些较为固定的数据进行维护。 -8. 🧑‍🔧地区管理:对省市县区域进行管理。 -9. 📁附件管理:对平台上所有文件、图片等进行统一管理。 -10. 🗓️操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 -11. 🔌[插件市场 ](https://bbs.django-vue-admin.com/plugMarket.html):基于Django-Vue-Admin框架开发的应用和插件。 - -## 插件市场 🔌 - -- Celery异步任务:[dvadmin-celery](https://gitee.com/huge-dream/dvadmin-celery) -- 升级中心后端:[dvadmin-upgrade-center](https://gitee.com/huge-dream/dvadmin-upgrade-center) -- 升级中心前端:[dvadmin-upgrade-center-web](https://gitee.com/huge-dream/dvadmin-upgrade-center-web) - -## 准备工作 -~~~ -Python >= 3.8.0 (推荐3.8+版本) -nodejs >= 14.0 (推荐最新) -Mysql >= 5.7.0 (可选,默认数据库sqlite3,推荐8.0版本) -Redis(可选,最新版) -~~~ - -## 前端♝ - -```bash -# 克隆项目 -git clone https://gitee.com/huge-dream/django-vue3-admin.git - -# 进入项目目录 -cd web - -# 安装依赖 -npm install --registry=https://registry.npm.taobao.org - -# 启动服务 -npm run dev -# 浏览器访问 http://localhost:8080 -# .env.development 文件中可配置启动端口等参数 -# 构建生产环境 -# npm run build -``` - - - -## 后端💈 - -~~~bash -1. 进入项目目录 cd backend -2. 在项目根目录中,复制 ./conf/env.example.py 文件为一份新的到 ./conf 文件夹下,并重命名为 env.py -3. 在 env.py 中配置数据库信息 - mysql数据库版本建议:8.0 - mysql数据库字符集:utf8mb4 -4. 安装依赖环境 - pip3 install -r requirements.txt -5. 执行迁移命令: - python3 manage.py makemigrations - python3 manage.py migrate -6. 初始化数据 - python3 manage.py init -7. 初始化省市县数据: - python3 manage.py init_area -8. 启动项目 - python3 manage.py runserver 0.0.0.0:8000 -或使用 daphne : - daphne -b 0.0.0.0 -p 8000 application.asgi:application -~~~ - -### 访问项目 - -- 访问地址:[http://localhost:8080](http://localhost:8080) (默认为此地址,如有修改请按照配置文件) -- 账号:`superadmin` 密码:`admin123456` - - - - - -### docker-compose 运行 - -~~~shell -# 先安装docker-compose (自行百度安装),执行此命令等待安装,如有使用celery插件请打开docker-compose.yml中celery 部分注释 -docker-compose up -d -# 初始化后端数据(第一次执行即可) -docker exec -ti dvadmin-django bash -python manage.py makemigrations -python manage.py migrate -python manage.py init_area -python manage.py init -exit - -前端地址:http://127.0.0.1:8080 -后端地址:http://127.0.0.1:8080/api -# 在服务器上请把127.0.0.1 换成自己公网ip -账号:superadmin 密码:admin123456 - -# docker-compose 停止 -docker-compose down -# docker-compose 重启 -docker-compose restart -# docker-compose 启动时重新进行 build -docker-compose up -d --build -~~~ - - - -## 演示图✅ - -![image-01](https://images.gitee.com/uploads/images/2022/0530/234137_b58c8f98_5074988.png) - -![image-02](https://images.gitee.com/uploads/images/2022/0530/234240_39834603_5074988.png) - -![image-03](https://images.gitee.com/uploads/images/2022/0530/234339_35e728a0_5074988.png) - -![image-04](https://images.gitee.com/uploads/images/2022/0530/234426_957036b0_5074988.png) - -![image-05](https://images.gitee.com/uploads/images/2022/0530/234458_898be492_5074988.png) - -![image-06](https://images.gitee.com/uploads/images/2022/0530/234521_35b40076_5074988.png) - -![image-07](https://images.gitee.com/uploads/images/2022/0530/234615_c2325639_5074988.png) - -![image-08](https://images.gitee.com/uploads/images/2022/0530/234639_1ed6cc93_5074988.png) - -![image-09](https://images.gitee.com/uploads/images/2022/0530/234815_cea2c53f_5074988.png) - -![image-10](https://images.gitee.com/uploads/images/2022/0530/234840_5f3e5f53_5074988.png) - - - diff --git a/web/src/App.vue b/web/src/App.vue index 449b965..f323085 100644 --- a/web/src/App.vue +++ b/web/src/App.vue @@ -5,6 +5,7 @@ + @@ -20,17 +21,22 @@ import other from '/@/utils/other'; import { Local, Session } from '/@/utils/storage'; import mittBus from '/@/utils/mitt'; import setIntroduction from '/@/utils/setIconfont'; +import Scan from './scan'; +const scan = new Scan(200); // 200是扫码枪有效输入间隔毫秒 +let removeScanListener: () => void; + // 引入组件 const LockScreen = defineAsyncComponent(() => import('/@/layout/lockScreen/index.vue')); const Setings = defineAsyncComponent(() => import('/@/layout/navBars/breadcrumb/setings.vue')); const CloseFull = defineAsyncComponent(() => import('/@/layout/navBars/breadcrumb/closeFull.vue')); -const Upgrade = defineAsyncComponent(() => import('/@/layout/upgrade/index.vue')); +const Scanned = defineAsyncComponent(() => import('/@/layout/Scanned/index.vue')); import { ElMessageBox, ElNotification, NotificationHandle } from 'element-plus'; import { useCore } from '/@/utils/cores'; // 定义变量内容 const { messages, locale } = useI18n(); const setingsRef = ref(); +const scannedRef = ref(); const route = useRoute(); const stores = useTagsViewRoutes(); const storesThemeConfig = useThemeConfig(); @@ -61,8 +67,21 @@ onBeforeMount(() => { // 设置批量第三方 js setIntroduction.jsCdn(); }); +// 扫码后的 处理 +const handleScan = (code: string) => { + console.log('Scanned code:', code); + scannedRef.value.isShow = true; + scannedRef.value.scanCode = code; + scannedRef.value.postData(); + // 处理扫描后的逻辑 +}; + // 页面加载时 onMounted(() => { + // 开始监听扫码枪扫码并设置回调 + removeScanListener = scan.onScan(handleScan); + scan.start(); + nextTick(() => { // 监听布局配'置弹窗点击打开 mittBus.on('openSetingsDrawer', () => { @@ -89,7 +108,13 @@ onMounted(() => { }); // 页面销毁时,关闭监听布局配置/i18n监听 onUnmounted(() => { + // 结束监听 + scan.stop(); + // 移除全局事件监听器 + if (removeScanListener) removeScanListener(); + mittBus.off('openSetingsDrawer', () => {}); + mittBus.off('scanDataDoRefresh', () => {}); }); diff --git a/web/src/layout/Scanned/api.ts b/web/src/layout/Scanned/api.ts new file mode 100644 index 0000000..f7b15e6 --- /dev/null +++ b/web/src/layout/Scanned/api.ts @@ -0,0 +1,12 @@ +import { request } from '/@/utils/service'; +import { UserPageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; + +export const apiPrefix = '/api/code_info/scan_data/'; + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} diff --git a/web/src/layout/Scanned/index.vue b/web/src/layout/Scanned/index.vue new file mode 100644 index 0000000..c313a5f --- /dev/null +++ b/web/src/layout/Scanned/index.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/web/src/layout/component/main.vue b/web/src/layout/component/main.vue index 9250d1e..e07c2ae 100644 --- a/web/src/layout/component/main.vue +++ b/web/src/layout/component/main.vue @@ -4,7 +4,7 @@ - + @@ -20,7 +20,7 @@ import { NextLoading } from '/@/utils/loading'; // 引入组件 const LayoutParentView = defineAsyncComponent(() => import('/@/layout/routerView/parent.vue')); -const LayoutFooter = defineAsyncComponent(() => import('/@/layout/footer/index.vue')); +// const LayoutFooter = defineAsyncComponent(() => import('/@/layout/footer/index.vue')); // 定义变量内容 const layoutMainScrollbarRef = ref(); diff --git a/web/src/layout/footer/index.vue b/web/src/layout/footer/index.vue index 67e6e5c..2d158d7 100644 --- a/web/src/layout/footer/index.vue +++ b/web/src/layout/footer/index.vue @@ -1,8 +1,5 @@ @@ -11,14 +8,4 @@ diff --git a/web/src/scan.ts b/web/src/scan.ts new file mode 100644 index 0000000..7e71930 --- /dev/null +++ b/web/src/scan.ts @@ -0,0 +1,84 @@ +// scan.ts +export default class Scan { + private barCode: string = ''; + private lastTime: number = 0; + private timeout: number; + private timer: NodeJS.Timeout | null = null; + private eventHandler: (e: KeyboardEvent) => void; + + constructor(timeout = 100) { + this.timeout = timeout; + this.eventHandler = this.eventListenerScanCode.bind(this); + } + + private eventListenerScanCode(e: KeyboardEvent): void { + const currCode = e.keyCode || e.which || e.charCode; + const currTime = new Date().getTime(); + + if (this.lastTime > 0) { + if (currTime - this.lastTime <= this.timeout) { + this.barCode += String.fromCharCode(currCode!); + } else { + this.clearBarCode(); + } + } else { + this.barCode = String.fromCharCode(currCode!); + } + + // console.log(currTime, "监听到的值:", this.barCode); + this.lastTime = currTime; + + if (currCode === 13) { // Enter键 + if (this.barCode) { + const code = this.barCode.substring(0, this.barCode.length - 1).trim(); // 去除末尾的Enter键 + if (code) { + this.emitScan(code); + } + } + this.clearBarCode(); + } + + if (this.timer) { + clearTimeout(this.timer); + } + this.timer = setTimeout(() => { + if (this.lastTime) { + this.clearBarCode(); + console.log("执行清空"); + } + clearTimeout(this.timer); + }, this.timeout); + } + + private clearBarCode(): void { + this.barCode = ''; + this.lastTime = 0; + if (this.timer) { + clearTimeout(this.timer); + this.timer = null; + } + } + + public start(): void { + window.addEventListener("keypress", this.eventHandler); + } + + public stop(): void { + window.removeEventListener("keypress", this.eventHandler); + this.clearBarCode(); + } + + private emitScan(code: string): void { + this.onScanCallbacks.forEach(callback => callback(code)); + } + + private onScanCallbacks: ((code: string) => void)[] = []; + + public onScan(callback: (code: string) => void): () => void { + this.onScanCallbacks.push(callback); + console.log(9090) + return () => { + this.onScanCallbacks = this.onScanCallbacks.filter(cb => cb !== callback); + }; + } +} \ No newline at end of file diff --git a/web/src/stores/themeConfig.ts b/web/src/stores/themeConfig.ts index 356e584..f015333 100644 --- a/web/src/stores/themeConfig.ts +++ b/web/src/stores/themeConfig.ts @@ -11,140 +11,51 @@ import { defineStore } from 'pinia'; export const useThemeConfig = defineStore('themeConfig', { state: (): ThemeConfigState => ({ themeConfig: { - // 是否开启布局配置抽屉 isDrawer: false, - - /** - * 全局主题 - */ - // 默认 primary 主题颜色 primary: '#409eff', - // 是否开启深色模式 isIsDark: false, - - /** - * 顶栏设置 - */ - // 默认顶栏导航背景颜色 - topBar: '#ffffff', - // 默认顶栏导航字体颜色 + topBar: '#edf1ff', topBarColor: '#606266', - // 是否开启顶栏背景颜色渐变 isTopBarColorGradual: false, - - /** - * 菜单设置 - */ - // 默认菜单导航背景颜色 - menuBar: '#334054', - // 默认菜单导航字体颜色 - menuBarColor: '#eaeaea', - // 默认菜单高亮背景色 - menuBarActiveColor: 'rgba(0, 0, 0, 0.2)', - // 是否开启菜单背景颜色渐变 + menuBar: '#edf1ff', + menuBarColor: '#000000', + menuBarActiveColor: 'rgb(237, 241, 255)', isMenuBarColorGradual: false, - - /** - * 分栏设置 - */ - // 默认分栏菜单背景颜色 columnsMenuBar: '#334054', - // 默认分栏菜单字体颜色 columnsMenuBarColor: '#e6e6e6', - // 是否开启分栏菜单背景颜色渐变 isColumnsMenuBarColorGradual: false, - // 是否开启分栏菜单鼠标悬停预加载(预览菜单) isColumnsMenuHoverPreload: false, - - /** - * 界面设置 - */ - // 是否开启菜单水平折叠效果 isCollapse: false, - // 是否开启菜单手风琴效果 isUniqueOpened: true, - // 是否开启固定 Header - isFixedHeader: false, - // 初始化变量,用于更新菜单 el-scrollbar 的高度,请勿删除 + isFixedHeader: true, isFixedHeaderChange: false, - // 是否开启经典布局分割菜单(仅经典布局生效) isClassicSplitMenu: false, - // 是否开启自动锁屏 isLockScreen: false, - // 开启自动锁屏倒计时(s/秒) lockScreenTime: 30, - - /** - * 界面显示 - */ - // 是否开启侧边栏 Logo isShowLogo: true, - // 初始化变量,用于 el-scrollbar 的高度更新,请勿删除 isShowLogoChange: false, - // 是否开启 Breadcrumb,强制经典、横向布局不显示 - isBreadcrumb: true, - // 是否开启 Tagsview + isBreadcrumb: false, isTagsview: true, - // 是否开启 Breadcrumb 图标 isBreadcrumbIcon: true, - // 是否开启 Tagsview 图标 isTagsviewIcon: true, - // 是否开启 TagsView 缓存 isCacheTagsView: true, - // 是否开启 TagsView 拖拽 isSortableTagsView: true, - // 是否开启 TagsView 共用 isShareTagsView: false, - // 是否开启 Footer 底部版权信息 isFooter: true, - // 是否开启灰色模式 isGrayscale: false, - // 是否开启色弱模式 isInvert: false, - // 是否开启水印 isWartermark: false, - // 水印文案 wartermarkText: '', - - /** - * 其它设置 - */ - // Tagsview 风格:可选值"",默认 tags-style-five - // 定义的值与 `/src/layout/navBars/tagsView/tagsView.vue` 中的 class 同名 tagsStyle: 'tags-style-five', - // 主页面切换动画:可选值"",默认 slide-right animation: 'slide-right', - // 分栏高亮风格:可选值"",默认 columns-round columnsAsideStyle: 'columns-round', - // 分栏布局风格:可选值"",默认 columns-horizontal columnsAsideLayout: 'columns-vertical', - - /** - * 布局切换 - * 注意:为了演示,切换布局时,颜色会被还原成默认,代码位置:/@/layout/navBars/breadcrumb/setings.vue - * 中的 `initSetLayoutChange(设置布局切换,重置主题样式)` 方法 - */ - // 布局切换:可选值"",默认 defaults - layout: 'defaults', - - /** - * 后端控制路由 - */ - // 是否开启后端控制路由 + layout: 'classic', isRequestRoutes: true, - - /** - * 全局网站标题 / 副标题 - */ - // 网站主标题(菜单导航、浏览器当前网页标题) - globalTitle: 'DVAdmin', - // 网站副标题(登录页顶部文字) - globalViceTitle: 'DVAdmin', - // 网站副标题(登录页顶部文字) - globalViceTitleMsg: '企业级快速开发平台', - // 默认初始语言,可选值"",默认 zh-cn + globalTitle: '协众防重码', + globalViceTitle: '协众防重码', + globalViceTitleMsg: '', globalI18n: 'zh-cn', - // 默认全局组件大小,可选值"",默认 'large' globalComponentSize: 'default', }, }), diff --git a/web/src/types/mitt.d.ts b/web/src/types/mitt.d.ts index b68b80d..380a7dc 100644 --- a/web/src/types/mitt.d.ts +++ b/web/src/types/mitt.d.ts @@ -14,6 +14,7 @@ */ declare type MittType = { openSetingsDrawer?: string; + scanDataDoRefresh?: string; restoreDefault?: string; setSendColumnsChildren: T; setSendClassicChildren: T; diff --git a/web/src/utils/commonCrud.ts b/web/src/utils/commonCrud.ts index 9a3817b..5c59769 100644 --- a/web/src/utils/commonCrud.ts +++ b/web/src/utils/commonCrud.ts @@ -94,28 +94,6 @@ export const commonCrudConfig = (options: CrudOptions = {}) => { helper: '默认不填则为当前创建用户的部门ID', }, }, - description: { - title: '备注', - search: { - show: merged.description.search, - }, - type: 'textarea', - column: { - width: merged.description.width, - show: merged.description.table, - }, - form: { - show: merged.description.form, - component: { - placeholder: '请输入内容', - showWordLimit: true, - maxlength: '200', - }, - }, - viewForm: { - show: true, - }, - }, modifier_name: { title: '修改人', diff --git a/web/src/views/plugins/scanInfo/index.ts b/web/src/views/plugins/scanInfo/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/web/src/views/plugins/scanInfo/src/scanData/api.ts b/web/src/views/plugins/scanInfo/src/scanData/api.ts new file mode 100644 index 0000000..8422649 --- /dev/null +++ b/web/src/views/plugins/scanInfo/src/scanData/api.ts @@ -0,0 +1,41 @@ +import { request } from '/@/utils/service'; +import { UserPageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; + +export const apiPrefix = '/api/code_info/scan_data/'; +export function GetList(query: UserPageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} diff --git a/web/src/views/plugins/scanInfo/src/scanData/crud.tsx b/web/src/views/plugins/scanInfo/src/scanData/crud.tsx new file mode 100644 index 0000000..9715319 --- /dev/null +++ b/web/src/views/plugins/scanInfo/src/scanData/crud.tsx @@ -0,0 +1,195 @@ +import * as api from './api'; +import { UserPageQuery, AddReq, DelReq, EditReq, CreateCrudOptionsProps, CreateCrudOptionsRet, dict } from '@fast-crud/fast-crud'; +import {commonCrudConfig} from "/@/utils/commonCrud"; + +export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOptionsRet { + const pageRequest = async (query: UserPageQuery) => { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + form.id = row.id; + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + return { + crudOptions: { + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + actionbar: { + buttons: { + add: { + show: false, + }, + }, + }, + rowHandle: { + fixed:'right', + width: 100, + buttons: { + view: { + type: 'text', + }, + edit: { + show: false, + }, + remove: { + show: false, + }, + }, + }, + columns: { + _index: { + title: '序号', + form: { show: false }, + column: { + //type: 'index', + align: 'center', + width: '70px', + columnSetDisabled: true, //禁止在列设置中选择 + formatter: (context) => { + //计算序号,你可以自定义计算规则,此处为翻页累加 + let index = context.index ?? 1; + let pagination = crudExpose!.crudBinding.value.pagination; + return ((pagination!.currentPage ?? 1) - 1) * pagination!.pageSize + index + 1; + }, + }, + }, + search: { + title: '关键词', + column: { + show: false, + }, + search: { + show: true, + component: { + props: { + clearable: true, + }, + placeholder: '请输入关键词', + }, + }, + form: { + show: false, + component: { + props: { + clearable: true, + }, + }, + }, + }, + product_code: { + title: '产品件号', + search: { + show: true, + }, + type: 'input', + column:{ + minWidth: 120, + }, + form: { + disabled: true, + component: { + placeholder: '请输入产品件号', + }, + }, + }, + supplier_code: { + title: '供应商代码', + search: { + show: true, + }, + type: 'input', + column:{ + minWidth: 120, + }, + form: { + disabled: true, + component: { + placeholder: '请输入供应商代码', + }, + }, + }, + production_batch: { + title: '生产批次', + search: { + show: true, + }, + type: 'input', + column:{ + minWidth: 120, + }, + form: { + disabled: true, + component: { + placeholder: '请输入生产批次', + }, + }, + }, + product_serial_number: { + title: '产品序列码', + search: { + show: true, + }, + type: 'input', + column:{ + minWidth: 120, + }, + form: { + disabled: true, + component: { + placeholder: '请输入产品序列码', + }, + }, + }, + + version_number: { + title: '版本号', + search: { + show: true, + }, + disabled: true, + type: 'input', + column:{ + minWidth: 120, + }, + form: { + component: { + placeholder: '请输入版本号', + }, + }, + }, + shift: { + title: '班次', + type: 'input', + column:{ + minWidth: 90, + }, + search: { + show: true, + }, + form: { + disabled: true, + component: { + placeholder: '请输入班次', + }, + }, + component: { props: { color: 'auto' } }, // 自动染色 + }, + ...commonCrudConfig({ + create_datetime: { form: false, table: true, search: false, width: 160 }, + update_datetime: { form: false, table: true, search: false, width: 160 }, + creator_name: { form: false, table: true, search: false, width: 100 }, + }) + }, + }, + }; +}; diff --git a/web/src/views/plugins/scanInfo/src/scanData/index.vue b/web/src/views/plugins/scanInfo/src/scanData/index.vue new file mode 100644 index 0000000..a7dd426 --- /dev/null +++ b/web/src/views/plugins/scanInfo/src/scanData/index.vue @@ -0,0 +1,30 @@ + + + diff --git a/web/src/views/plugins/scanInfo/src/scanRecord/api.ts b/web/src/views/plugins/scanInfo/src/scanRecord/api.ts new file mode 100644 index 0000000..b68805f --- /dev/null +++ b/web/src/views/plugins/scanInfo/src/scanRecord/api.ts @@ -0,0 +1,41 @@ +import { request } from '/@/utils/service'; +import { UserPageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud'; + +export const apiPrefix = '/api/code_info/scan_record/'; +export function GetList(query: UserPageQuery) { + return request({ + url: apiPrefix, + method: 'get', + params: query, + }); +} +export function GetObj(id: InfoReq) { + return request({ + url: apiPrefix + id, + method: 'get', + }); +} + +export function AddObj(obj: AddReq) { + return request({ + url: apiPrefix, + method: 'post', + data: obj, + }); +} + +export function UpdateObj(obj: EditReq) { + return request({ + url: apiPrefix + obj.id + '/', + method: 'put', + data: obj, + }); +} + +export function DelObj(id: DelReq) { + return request({ + url: apiPrefix + id + '/', + method: 'delete', + data: { id }, + }); +} diff --git a/web/src/views/plugins/scanInfo/src/scanRecord/crud.tsx b/web/src/views/plugins/scanInfo/src/scanRecord/crud.tsx new file mode 100644 index 0000000..aa91b46 --- /dev/null +++ b/web/src/views/plugins/scanInfo/src/scanRecord/crud.tsx @@ -0,0 +1,229 @@ +import * as api from './api'; +import { UserPageQuery, AddReq, DelReq, EditReq, CreateCrudOptionsProps, CreateCrudOptionsRet, dict } from '@fast-crud/fast-crud'; +import {commonCrudConfig} from "/@/utils/commonCrud"; +import {dictionary} from "/@/utils/dictionary"; + +export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOptionsRet { + const pageRequest = async (query: UserPageQuery) => { + return await api.GetList(query); + }; + const editRequest = async ({ form, row }: EditReq) => { + form.id = row.id; + return await api.UpdateObj(form); + }; + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); + }; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); + }; + return { + crudOptions: { + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + actionbar: { + buttons: { + add: { + show: false, + }, + }, + }, + rowHandle: { + fixed:'right', + width: 100, + buttons: { + view: { + type: 'text', + }, + edit: { + show: false, + }, + remove: { + show: false, + }, + }, + }, + columns: { + _index: { + title: '序号', + form: { show: false }, + column: { + //type: 'index', + align: 'center', + width: '70px', + columnSetDisabled: true, //禁止在列设置中选择 + formatter: (context) => { + //计算序号,你可以自定义计算规则,此处为翻页累加 + let index = context.index ?? 1; + let pagination = crudExpose!.crudBinding.value.pagination; + return ((pagination!.currentPage ?? 1) - 1) * pagination!.pageSize + index + 1; + }, + }, + }, + search: { + title: '关键词', + column: { + show: false, + }, + search: { + show: true, + component: { + props: { + clearable: true, + }, + placeholder: '请输入关键词', + }, + }, + form: { + show: false, + component: { + props: { + clearable: true, + }, + }, + }, + }, + code: { + title: '扫码数据', + search: { + show: true, + }, + type: 'input', + column:{ + width: 200, + }, + form: { + disabled: true, + component: { + placeholder: '请输入产品件号', + }, + }, + }, + product_code: { + title: '产品件号', + search: { + show: true, + }, + type: 'input', + column:{ + minWidth: 120, + }, + form: { + disabled: true, + component: { + placeholder: '请输入产品件号', + }, + }, + }, + supplier_code: { + title: '供应商代码', + search: { + show: true, + }, + type: 'input', + column:{ + minWidth: 120, + }, + form: { + disabled: true, + component: { + placeholder: '请输入供应商代码', + }, + }, + }, + production_batch: { + title: '生产批次', + search: { + show: true, + }, + type: 'input', + column:{ + minWidth: 120, + }, + form: { + disabled: true, + component: { + placeholder: '请输入生产批次', + }, + }, + }, + product_serial_number: { + title: '产品序列码', + search: { + show: true, + }, + type: 'input', + column:{ + minWidth: 120, + }, + form: { + disabled: true, + component: { + placeholder: '请输入产品序列码', + }, + }, + }, + + version_number: { + title: '版本号', + search: { + show: true, + }, + disabled: true, + type: 'input', + column:{ + minWidth: 120, + }, + form: { + component: { + placeholder: '请输入版本号', + }, + }, + }, + shift: { + title: '班次', + type: 'input', + column:{ + minWidth: 90, + }, + search: { + show: true, + }, + form: { + disabled: true, + component: { + placeholder: '请输入班次', + }, + }, + component: { props: { color: 'auto' } }, // 自动染色 + }, + status: { + title: '状态', + type: 'dict-select', + dict: dict({ + data: [ + { label: '重复扫码', value: 0 }, + { label: '正常', value: 1 }, + { label: '未识别码', value: 2 }, + ] + }), + column: { + width: 120 + }, + search: { + show: true + } + }, + ...commonCrudConfig({ + create_datetime: { form: false, table: true, search: false, width: 160 }, + update_datetime: { form: false, table: true, search: false, width: 160 }, + creator_name: { form: false, table: true, search: false, width: 100 }, + }) + }, + }, + }; +}; diff --git a/web/src/views/plugins/scanInfo/src/scanRecord/index.vue b/web/src/views/plugins/scanInfo/src/scanRecord/index.vue new file mode 100644 index 0000000..eeed5d1 --- /dev/null +++ b/web/src/views/plugins/scanInfo/src/scanRecord/index.vue @@ -0,0 +1,20 @@ + + + diff --git a/web/src/views/system/home/home.png b/web/src/views/system/home/home.png new file mode 100644 index 0000000000000000000000000000000000000000..4485a1bcb855f7b902f23b07227a85f296195484 GIT binary patch literal 186120 zcmb@t1ymecw=Rl%aCevB-gs~e4ncx9jYH$^5+Jw*hu|SVaCd8hYjBs~7Th1n-v2)5 z-20z#?tSkuM$uiXrq6HAwW?NigsQUaD->cBC@82`@^Vt@P*BioFGn*H!pq2bS2Eno z2eN~lt}_%AD$ef%8Y(@L5DE&Z!AeudMMvqaAP{WFW?}|51+jV9IlNFqK?#d_IG6x! zKrWP~APXyd5$cnc4r)p(GZAWSUL_7C2T72nm7JFoNW)866X<0F6fmO}6QvaP5PT6} z2XZl?^suwFcNX*zq5dOR@a6mOVRmZDKO`LNn@V(MQ$*f}UE{Ug}k`R_=*#Ejj;#DSfYjf36J?zdxqsGVJ;-Cmgg zHsjw?J8OD6fY{YR&R|z3AV}H`WbZ=rAMEO&|M24ffc=I1A7(S)KZ+e(ooxSjZw6!s z*@Em|bU445%K49-4whgSu(KuD;UAX&qU@i`fBgHGbuY>N_vHTy#J>n#tjzx#FMeP7 zFET+MR{ss@?<@b1zT`kq3Ji4p?TNgU2sOXB1c!{IfCPY>OG1L1Q-)8RkB^H_3cxQR z%@5!f;P`FHZytGjXBQKDAm}&G%Ltp5m6;&OjE@6g#>L0VY072F$_e5zXEo&maj}~7 z@pAB)bAh-4=74|kt2kM`;NQgd|4z3VP|zIgWM}e%1S>le3lO`5y#+PpKS33g1lxk0 zl)z>n5o+!~ngk`CKqf9Ash2~9`UUkotQ_2|oZOn6T!NgOf?OQT8~{O%znl_$;j=RL z{NG8r1$lV|Ir#qz=}XO-nYftzkHo*zA}IgcRBbCW7fTUpz;A8;G5Qu{Z}EFrfQRev zVb$LNdZ}qAE1lu6 zoBodxI#O0I5c-SfkB@&u{kf$3pDz9O^LIb{gCRL9XBV)O=id!S1LXMkH(M*pKjkiH z0{qJrGmw*&8_10M?_mcMCzF>5y_hIM4Fub}ft*}GW|ZbmU^~jcP+{!=vY>PU|9$ow zBkcd3XlIlEB-rZTfEvif#b?6HEx>95;x=P7G3NoWnws$gSOEZDfC)brHxCbp=U;}o zTY`S4>A%8^SCEVEU)cG}EoZQ~i@S*vNZjJ3=>FBP|K$C5tx%{rvzbf|M09_Oy{Kt7)tA7Cc zKMnooVEtPie+d551cYl)YWe^w(P`xj(6y{t8Q&xmoLU`DRxrNlKo zG7qy{Q_1?18&-pk+j+{cYRq)a%%hF~5oAsqww)#`N_@lfr{Ed%M=C3zRFKb;sPH=a}`&j%`AfCVW&5qbeJKk>|_ubDF+;Q*ydPU7EgK@iZ z^zaj7$irdJ%X}=mdz&D8uxyk5SN`g9m)4kA^y0Bs((L0D9m{fSRLim9*b#>P)-e3J zz}XG`&m14p!WDz1=No!MpWAt#E3xPA8AgEMoQDlH(VH&R+xZjiYA4qZ?yYA4d{(`_ zecolC+r*tJdmukaL%;3fd{;dgS*`o!=YrUGC_AQH^8uW|^i&ahG>sxY4vTkW6!-fh zr2O6}JHu1L*AF!}hYb~*tlHTl-t8@!?5*bX+N*vTM)$kP4?p+sJ+Ym67bgiD&hO7LNas#pLkZcRncH;GF5NTdQk=g_FpcM zy$2E{@%!yF(W?wP+(n#+N3Y)@&YWEluxyRFi}cwTd5J2167B+n7l!$tH%-a?j8Sc7 z+=IRX7Y@-HR?pxH4Se-amvB5E&Z6JGG>*F{meTsm)8mw^0i%=o?;^3_weu4%bPTbk zETNP4-3h$#E0-UpoN)T@YG%JJ^H^wmU(dZFvzEzK{odzTrct8FnK-ajT)Xfpk-pYG zQ^anvdi5F92T8VRkSfm784I;w`>e`xI{xdGzTblF(*Z{8>Hd(4*=54Wa1M7U#p9m2 z=;hPwd1sc&X>6Tcl-+6L#pF(F-MDt2Tp2Q7HH<)1mo<8Bz z8*9<0PeVGbCWwoC?v*vn1%+K)z+pII$gS*sKFnvUgzay#6lNUXgg^0772 z`yHPXRZhPR89`tbbJpTVO4B&%lT*mtQ7~M=76&m$wswo+^SuB%apYQ@X^ZN&#QcFc z>HSlQC!6VrC+1xRM45G`W={_1mn@k=InMam!$#!oVM7F&U1KRrJ^f>z$o@uWg!~mc zy&BcAW7!S@?-iD9U%NQWq*`Upa76g~-^dvH4&ENxE{gjK4vE#5Z@wxv9EPkIxLmm4 zK(I;(t6eXLZAm3H1l?=JVu%Ao7jV9)mLvZ5heqJL#{ zHhcdrQy2fvBOh-eg^|i~c$$V)j+wEEryIEdSI5F}CJ4+qx}GU{L1JofrKV0D0%Ovp zTZuJz?J!88%?R22WXFNpGj4EM_k4>eP|?VUn|2Vm7{CyCod1wL{pGCevw48cG(a#4 z_US;(&*6l55~#-&y?68l;$>!rTr10T3{A%&u~ycdi&Uv&Q#nc%Cs!UPvvK!|BhI6H z(4?%Z35kxjsyaz4iU&VBj9oZ$m-Y)PqcpiEJK(Z8>{Ir_1o!3n^TR;tY}+lob344x z^_O-bUTb00FGOp^yfLI!Ym*sZ--~5MzKg8j*(DCgpjZaesLM`>CG=<#vJ{m08c$EB zzZ?`aQgDy4)U*FJH>NB;*KJ)-9;w;J)B9y276iH}Oi4Y$@K<^kX*#Qlw8Rz1E(Pc-OBJkE zO_cXBstdEeqd5x`R-*Uu;MLRk$e;C3EVGpUa4ez=&Sh$wX(7VD0kugqdRF1__ygnd zDKJ?ZJnH;Tkxf!QX~K_)=_3Fxmx!#vM0Iy!bg7!Vl zZ-8aFghaI!a?FxjvR_1p95+cG5oc_@XCW(V6rH6pSNb;79`qc7#}CB3*#cjV+fVzz z54-LZjW)^m4N3b}m0#n@^Ur(~1*gBv$%dnShq6GENG+zgM4}w@OiBWXDaj**2)-G> z75^H5hb8#kbCf;XX{7DIzuF|@UV!7?a;!-v8kn{~{!$7*Bpth)O@&>5tU@E=Qsps?GSO5T=Py|Nf__e}-@0DqJv-Mh%Nx_5h|iFnwpd6%NaL$?9<|AE zgfhjyazEbeFSg+PRc%wJ;5UE?sYv+TTX(rvTQ>PrK+1#gOh)ruj+*qfD-+oZCRCwe zECtA|!p+M3%k_<$l8XzGv+geV5b~p@A730<)VMo&t)rlJZoXqYoo<0MQ?l3QF>Po} zEzW{*+kMPsK%prx6T!>~9v)^SdBc;@S9IXV-jfrzQ6;g3^U@a+a_bTGftngIM(e(~%peacQ`SNR6mdftNrhp1#uu{}Pczm*k1b$(qlxqF zDx_AKl1r#+u6IT-kyZz}a%?<7cmBC~DL^nKt{|k4v=3LRXDP?<`t&--`Dd$2JN z>4@jd7tV!}(9bUs6BN^}>hXJ1)Nh<`7!rwm#28mCsGtK3r%}|CuXV2@>Hl9@SltG+H3pm-QH0za)~jJ7w59)Pna7bL!M0$w{uE!SM1mvDNO{O%yH zJN4W*#-8gRGJqr*&eSpCNf5m-i2zjbpgP|h!x*Q5&r_n?U*1q+@Br+Skicju)o5qZ z#Aa!Ls0prUmw-qIb>qxF$VUV`4Q2kZr-{1QhxMh+_hbHj&ZAC1^X-_y%=@?6N=yZi zFZnMxi}HG)G~bNLpQU-4DCQ%(?&xSaFZwxvO0r=pwBRlU$-NqKc;|#>LWq4s&Q=en z2DK6xp|e4#GWr#jyBED62Oj8vAF`mWtWiLBtBy6MGNJKR2sH9DI|mvp`WojYyh-XW zSdsV@eU`QJ{XOP(z%T{NPm zis$N1#}vZ^pp70f3!2h|eImxflP|8`!xQ>gq1*0tA6=tj`?#r=?)H+%n3qI4zIB*f zvXXsBzZPlEE(JFphzNQ28xc;sCj5G3V(C~VJ~#&@;;mH<5QaJ4BPq|&2gG58=d+!H@hHw;l%ntRtDsQUYn0Cp zQ`X}CrEdiPcFmeJQ)BiJY30-C73Dd0KB)&$5+{-c`kcnFcN->hy70{;L(WhHHw;X& zfU&B3)QJp=>4GAbe=A66cIApz{T`7NXd4KS+jJpQBgGEqx!oi8Z+D!ZWfS$B914V$ zgnj9xL%(O1emLJyY&D;)g{x!*weuZ+hkGL}NiPZC-EiTsH`H&DXbpm{`uB00zI^8w zJ*8#?utqyGMRCX#J3w-2bv7}B4^d;^WkytTh4$rUN)m?Q#O&!gP1c^dxY=)f>WAIe z@YNxJ#%ID)zQyckgrcfSO3O?UrjKNQTEaNFjU~|Mc*K$Y<;o&Vqxdl$RUhc`yTimF zF9e4z=NxpJ6gwSIizMEPB${cw}WpTN5S>e=SY zz*iKU5-O5EC%7cdKE}amU__vzg;19FT8GsHaOmt+wY7y~6V3R1U)ayxi&SygTkiEK89db(}afJH$+(+j_KAl9+J6Pz9AZDo#}bTd>p9D*y^!qXe*$bg)<~@oR?j9z_VTakcVN!OPNWZ7XsG! ze2%+8s@=NY?;`DrL>KV@l!cyQFJkm)Tch1!w_WdlzQo?Q3yH^<4#%>hF2<6e4C&Mh z!wl*rJUMtp&|S6VBG*s~%tX6ACu8n7O`A1x*?~rUmo_;?p`H&>%l$n|%?0bVnLM&j zE?j3-_7;*V^y!qoP8dBcD>6g*Oh#^%$)!UQ_fGW-MHmCAI)rhD%;ETp($LqM=_VFw zV7y<9mjYlN3lORSoy`qEQ>QOS4wdU3H;ps3plgoEq_%@Mfmkfxt#ISB8{H>xD`)yY zuBW$8@SeX1Ui>b-7@}H=0Kst&t;jkOw-JL{^P>Y|5(xQpI2t0=n*mzG(xf*TzCH6X zJ%=zcPz)0h!!zfjM^v!3Qgj>qKE=P$`%3Lzxw7z%Rd7RlpDB zLM^xbAIZY(9zdmwPj!xma8j04TGs50aN$qAbQWaj8HcYZ9E`Qtv|Tgdr{BDpr`@3G z$t;zdEQrS@#UD#ynI|^Lln=F9t7QCyL?k(aFiTkYm*fbbQ>{CBJ=%u+>T`!Q`)HwX z)Z%8Yo{j7lGU_bYw_NgjFKn5am}f0z2<$rw`a*u&t(mmGb+Y+3NL3hX2`D z#huo#3K}b6dkn?s{gu4dnxTJsASbx1v4`uJ-QW8}i>|nchbUT0{${=@c((RkOfR&= z>&z%jWz%c!&Y)gJ@+?5Yg5hGt8gDgRb>MhA=D-GhIV(na6r2A&Ue|DuzO|iJ(NZiH zC+~Fw#Ioom+oT%1mEVo*jkGQuPwxBcwYMh|#u+IW>^x+fF%Cm|ksXvbrJ!XIIOT#r zsM+{K11Z%Sose2h##~Q)U3czQ-{)G{4{mvR4L{%%@xS{4m7C?L*(q)aZ}HyubvSkK&W8>}u%Nx$xlyS=?Pv&%>)gu#tq#hvYuA87GwnH=NRZ+H7OAYj(*Qc zs=v`AV6K$aT`RBUY!`I$_%l$^v?IIhJNA3T*I#Gmc(W0h$O3J1hfw<;ZwMld7z=M4 zc_F@IVfb&3fMuM6f0_VkJId|ekD*fDr80x^UAPEq&+o7)k`iC4$Xc)tNNz zmD7#$uciSe?_EEXsBLn*;C4*e910lFESqDQ)8VUavQVFGYNM@^Thd~gj`D66l_ATC z&<4IRh^c>ho7~E~-Zgo!WuaMc7J4X<+!#@Q?lk--R@+gIxduygtII_MUJIoE+Sfn%caz0v_OaDgFd7@1*)$|K zp&ga?YX~O#!5dUr3wNsrRCbZeH&}aATu(PWd3$P1rWF)(?z}r!ce6*=EyQClt^Fo# zh;Z#l>;bq)XJ^ubO!2gkhadl|6)+|1`wcpmvL0)cs6e&xyX5*CK!~%4x@kGhYue=v z7$VHZv{WBBF8Y*+fg&0X=xxTDwTVmfE`w*!d!cgfHnDrfvuyoO?*pILIq*#Dc?xc) zR|KCs zr^cJhg9Ga*>)*afKTc{bj_K5t?66jN&W>f5wjJJR(#H;Z6#ye}iQfibVnG7j&`Tbk z*j{$#b{qg9xBxh1Kmj`zOcd(b5_;TPX7Ah+u(oR!g@8owAqgePUVr(=WrC&b69Ua|YZ&&2dpkm0VJdP)MabJ;W+u4(RJv zAxxhi%i7Pfiw#GS&`#g4HdcPD5rTU4cK`KOaq{$NO1-z+G2-)8Mq+Y8Vh95k`a+A_ z#F~$~1de62GdhsPl42d1G)97Os)WXtlI=5Ze@`Eou*Y-s@+H&d_agOc$nYoESeR>= zjDT-Fw?WpV2ET(4$TidUQ;Fhfdq;Rohz$v5f8Tk)C=-5)Jun;^gl$I?{}Ah3WMpJS zjTi*-77BQLDt%*e^>O4lrs~p$9+ipXO;=xm)*Jc*hcsgdjg8l;7E6hH+f9#q#p6Yb z@*|-GnbyU}=Vn_eYptC=8D-mdx~A``$-I&@sH%TLQE-;we&Oi7({<4?KXQv{IbW~DLt6JRj?@oTo@G}>vE67kJL+mKu9 z;fcyo>crgK?$O?m^?hMX}pHA9(9%cnL~babTjX2$_yV^zL?VfeI)vFc=H zd87z_e`Y4hmr=gxUA2>0YTdlj>6>3Dfq;E*&v4ARrSkB7q{Bb7KT5S5w>vMp~Km%*AC~k@!a;K^f4RI9*|Hg0!5{yREkG z1BvAGdC#jcE6EikLZiO8jW)Eix5bJ-osU+(ksa?P3ai8e@FRY5Dyuv5#8BFgJ*(-h zXTGxc_qc@nU=m<-Td(^gRqbcV5eXX$;C%1it3kQqd@3<>a!Xw_H~QM_-77h3@|gP} z0kdBi(K3k@sKh;Ut>ZI=?8C`<7~f8oZdVNjZ(u9)?g%OzXcibLH~v`MxXt z>W+Dz7#FA%&-l)TS#p7H0~dBB6O+b%RgeXtc?Ipk^1#7_XeueMczmc}Mo_Tlio5-x zW7%KC&U`bc%$33{l^mn9;%SpkYJEIwkNx@Zj8lYUp~~%s^~yR5Eo?V-QV{Ng=HTXl zt3k9RnZ&0gf*kT9ini}uIXCa*XUH6900#o(pZN?i2u+`n?UzSw|w z-O^KRVrcPRslA9burPFySk?|SLf`R%=qap^;}mej#qDGx(ePA4|C6%ey>*$O8lM6QpFFiaUPLD&~0tI)74 zrSAR$OmW}DSWXfOBR+i=md_oJRPc6zc*0N-C69b%@ARVX0d5auK@cJ680H=Y%6>;y1Gjp#W_D=l?3 z1tiG5u|!m+&Z5bup;s9xqUW)AO-_T&sZnee=6w4znoLME4wXyWO==sy{lfi3inaw4 zreRiO>q@yy5bgR?r8mq%k=RE%yU9`P!YXv(Jvt3%%G%z}!?5Q1r{bs$ZTIBJ6WAxU z%ZMKU+m}*j?AH<6Av3z!Jo204VA2r#VA>d}&n8*oVSA!MFC!?ApQx^Cl=I5okic&v z2E6Ln$1mnEP}n(>8|6NcHr03qRzbHy?{nJ4*b5;Jix%+>f@c@=|ImJM!GxEySpF;N z!#hFxOy{Zgvxd?RpwnJT!B*8H;V^)xcW-TJmA(0ZKzms5HluT_gpP|8hjekZ)j||} zyMRIQ#9uy@SO!HSI622Vt1Djyc`3GD7$I2w^LMWCIK?vmX!lSL<=-K$he=KJ%6~Rw^FBJ#!JuqQ5asb?pS*zz}%qy@jTYewY>zL-J-5YKjwQb z(-)vS6+Nb<5wJT>hMlAg-CHaP`P{rl~8})8B zDIVk%DlNrSTiO#UYN9Dcwy9Vg=(|y1IB!~>t75(IXwOw2V{S)6zVhQfYwp)iK)qB| z7h$C9@n2H3gNuNq38{17v_X&`lEF3=zmwn2r%Fx~94xTt3RjJ*}(? zb-2y~`D>FlHu#lAL4w>n%3@ooH9v<7>@+~#q$ng!dXqoYK<<0dafF)=%AYl=Gr#%Y z)y1FbckEA3aRGt-F*%1x6S_4*B7&fZs5n4k$TyAtMha>yV=@W)ihMJmRDoQvlZIc@ z?x>LgkICr$WXbe1*|yaTAzYh4j@MnjH7TF%#Mx+0>@Fp394lbMM_Tqc_<;Y7tyK z7Hfl=-G0^5paXciS6O=M$gSI{3+HL0K4z!)GRJu@NgQz&gzRpsdq!cQlDemKap31( zyQ2j(vL-)e>=F>I;#)lhbN8bvmF@eZo-OiL$dS zQbiwF3>PGd@>t2w%GA0jNlkDu3!Xm1IMjbGPf^jsgnjPk%yPOK&NB~?MI3wI+;p+x z$Xe2DnoFYjCV{RMEOJy6Z!7qD?mcyKBF>ZFbIjOix)@NzVKsLY*%{jTJw*6uu4$=y zWyN#^hC=D;of3`&W4B z5L@K#&+u>Ae+*_+BGE=T#U^1NTph!=^J}3E3B)7eA!WE2OHgK-#tuRwru77NID-&% zV_i5Y`P!V@uQp}X_ru6&Y&FIEhJY|HJQvdDDsd18q(&GD@` z_YLvbXtcWuI~?z*l1QeZG*iEO_g2Xj)B+9y7$*k5ZD{ua!j8e^ppeg)y7aX-VNtAO zx~j77t6f7Q*>hF7R(+%8Idhal>{ciu)ELx=**J1Iz&gR*rZHSwNSLWy7W%F;7Ex|Q zjVlg#`DU5`GRy12SLl3AdL%FdwcPGIG?Cp?^GTLs`OCA{;-ut3)VUruAeH7I%loxdXr5v z6OhuVk%pWVb04WrozT^K-$%JkrrH6vgfnXPTniltnrdTt>CYe`B<-BI_5KP81+)5Z zkb_-~U9f1VTU|m{+bZm<@Gzs*GvZvawi#6@CmE@_7{|5V>f>Njq0Q)_k(2pSX=hJ* zs2Vs>t@Tw9dVj}ixxZU!SNcF<>jYh;FumbIO)dYx!qE;z&Gi`%WGYM*&Jo4R$Y<^T zs{()Zyu(6eQQ*0C9(D6WGb!sH6|?`$7i?aP8^&t0%NdGKmZ>CWJ{$-(r05u540Wb) zVw{?yTm$3;pV6*zwYgafRg&V`JBh-av8jHDV#mriR&g<>Bo!X+m2KUN9xV2ulIyl! zN@^4<-QVSoK6dlx)K5%8IMCwfap|i+n{^axx4BDV;e3wEg`8J68cJ?$V*u=Hi{Pat zOzTv(U{FS}J<+wK!3Iz>$Wg8y?JzjMmQaiAh33u-N7n|ruKm4HsbXyn9s7Jm-i!X& zSKl&-((HHp;LOYPDU!#c=3;NM*1yc?Eb-i&-3Md*rS>mvW%}2-#i&epevQ*Gt9bYT zSCgAGgN@ApdfF1)17@WIXvisNZh0Ji2It4Q-L|*lI+WdL{PS$} zt7oSyhC!b>Iqz%Qk4KHAVDH1{>PsAwP-g0KDmGLYF=@`j9&NCehsOYa#PZzT(uO}Z>C8rWxVhCx{K%k+m$K6Qg zQGmnUYDZ;ZrX((m(R(K&Wy0T`rKkp^9bd+k8p!zcG4O~-CS#8xchMYh({|YfgQMv7<{|O$-@z{xK zz5`7`qS|gPRgUIAW(!r}hl)=6JoT%zYQsl6Cq;FMuifh~hi`^=p5OO;{?Wyq(0T<} zIoPzT5DQD(8KpfsVm`O1k_vdUaV^w?&L6J4U`R*f{X9x{Z$0_}X%DC$6$eFb!*{%q zGP^X8HN@kmJoOpYYcq>c1Y!O4*#)b8M*=P@UOJCZdCS^thrvTkT4H*;Z)MGSp(Nis zu0-Ot%lCs51u{6sA(HC7T*4UaF%kuGoBB~WRMc1FgNRm5*Rx;=Y^sR+2BIsFKR2gd ztLY}3apk0}@pl9)HQi0bpf7|pllVvKfY}IKY=A?T3u8zPA#!%r#Q;x*0Qcp6Fqsfo zhPfR09^rA3g1q%$Fo@mohcQ)eoRS3xcBbpSnI3FGR-P?zT;9|e`*x1|lQXQrN7)_* zRp`g`{nUb2UvMzjPitjKWdKa4nFWToQUDIlZgB$x`{R=o;kzSI6>|StqwX5KlKT~Zi&{3wZbeGYM9Go+CVp*6}1*mJ5&`@{K?VAl#vJ1P9_h6iWKG5c|dva z_w}Tnui=DY^lzFUSx=3fBe5iaS>hjgAOX1Y^ppxIr1mf_(#n5g`(7cY|i~3~I5o)%Ak7?jcG?0>lF_ z+|5p#R-B~R8ZWc93~S%u=jZo^m)spT(cX?w z9VVImzUK_P;S?@+ojX4p8BT{O_qHkAO*Al$k|s{&88e!Og5jfwV5c6m9(EWfw(Q_6 zz}P2v>k%xR(%^gR6{IOrNPQF7iGI#x5guRk_VWP}3BzdX?Mktz_ubi;=WJJu|B5Ff zhGenEPw=d0;~k9*QOK1lH6{7a*0M?ARoDC8%}@Vgjd)^P=A+GS!cFh#A=5?wr<>g4u9*8ZL}f}rx$TJ` zD$Dn79aVla#_thf_w``Q(V_Q;V8)m}#^tl9NKb8M%x1f;1eKgK6ceYAhwh1$PDo&sCu>JzaatU)od~2g zhl?_(y}L~LMk<;o=e*F$RN#w26HFWI+HtQ6-TeVqsgvDaw=3o`wS5CX;wm>SmDzauNo$OdMokw=+WXquiBsPqp}MP`~zN zJFQAjaiI9-h+>M}=N60c9YGP_zLD2SadiVO)FTd4K3Q{p%dxuOI&6e0JnT_lPd=_J z`ysxoTzxue+Z&J3Kq(k7tpU{3HE&3lbv9EajRZ+(rkPsqz!Q z5u#x7hLYAtW69z7^Rs6V`s6&1xX_W6NN6Bh8&N-?SVu=JyUO*I9M!}qRr10Rk~Tl* zStT|6J0x0|O|&DC<+7utzGex2t|JXF?n0_~hkF%1PjA;bc%}M~rXt62;eG7GR?hM+ z(Y*M%wzVe3E&Hm$FN0Nr%cg3xVuA@v;b9Xt#c9IybcswYDQbz9&mHvc82Dk8F(WO% z9@eg}Cvf<3r2ul2%Ex=ATP!m=`z{#V7Fm((@ZCYU5!b=amUzbHl8n-pH0rOV&Ai7A zVXMB=WXsr}8sDgE@W^w_7H7b?CiieT)M+h zJh2)T2$||U#V=%)n8bqfIU~5PcHNO5PD{=!8e5!13$#wqDF>5Er&a(YkPUU$%%B`tH)*F2c-Aq;Px-ayMa-~sv1~3NbO+Rzh862 zNqK6(G#xSCv0cU_A7*A2eh!K7f1KI}6-P&-ZEGSEVSw4o!fEr#as$DJj~v@hQVjy9 zZKS8)%jy^lE8kJ7e{kAmKu!A`+nBnqVl60)_Q@kDnvN5JflS>pv#K}vVxSx+NOO=O z`PUgYw!V2z--7Dka2Zp6^@xYaL{TK0Wi#GKL{gkR?82Kjj%9cvLSuG`ef)){ul$Iy zC>kA{)F~Cw%I##63dFLa_`pV$v3`=~-d*eT@BrDI~oICt0R&o?1-?ybZla&tIN5Bjvs9s@__T zt?PCrxZ1I+6spUm)f&|FEJKlT4M_SJiw!|TdXezfY|-=>24u109_NSgj#tUh#)v9m zO5m!v89hC?j|!6tq$BLe4A|4S%P*f_xedz~|FpEW6rRIeeHxn7qTqV15f)BpPv(|j zl`&ms?o715k2`X_wsJu($r3MEFiu9Tk5Yo`_%8mtE;-xMF#-jw$?O|um%(DvevfR3 z^at@FTm$TPD!656_X<(yuT)SLy5r_?bRC~JOA&nu4P54Vs(Hvy?|E(TJLb7zRG10` z!n5dykCm}dO8jDt$2qk* zg1^e)v!pI9CIO_5W;c(on3)7IHZbYnWIQNY!kYWTg5t>41U4pX7`VL^P}Ib^X5}hJ zCw7tT4Qr3uDq3!Co}m#&SXy1rz6QUV5Gen4cE%by3BTgNT?xhX!=C0avk#fulAv_? zeiv$#Dr!A}yNJui)}X`CB|KWI&)TGiDy=7*9!Y`eTe}S`nSqF93FXK5IdPor5C{3) zPX)cj&mc5Zt6WCbluW)S3kEWOSYQ1y|rlr)PR1sI+V>6n> z>rI)#LcEDG6(3wd>$9cgz5LaAAw3G7%|Z{xs7qZ0nD^!mQ#q0y-m%Tk*9-Eda5CKy zBb&M$=EB*knYOhado@9_+LLnSwe^R!B#U0q{&8fQ$Cc`?_*`KXGI z96VxVDb2L1=q&lMNuzjuqv!p;d1k(7MxmXy$DxyH1!q-W9=S#~I1x(oCwzJ~34J4eq?KC6A6wUk_gZ%|&vbU;s*%_}=h>E(Kr=Zg~Y(4}qJj zZPtCL>U+Z;M0B}63<%cl*L_5agBXlSA3yt4QkM1IL;yyvDLP=qLI7V@yhU!BnLKmQ zT~{&cPsDE88h1q8N7rc^zf*;F&!;wIIk2HZl)H6gAqv!Va_3ee+V{j`|*YRZbEt}_KGz7jK%PWTj*!kVK#zTBsYQzV>dwN2+!v29cJXmpL{oWU3soCZ`qQ=op$#JZH{9#KOU2B0BrD-ubbr&xGyidL-LbjxO$JCuS|Bfc+av z>Tb1abcL@8d zD+*F;b9jDQ{5dM{wj(dY_~hPt6*)s(6ufuEJvWNAKv*u4l<KGzlAQ>PMR8oBhQpaKp}Y7qQU&c{HF{U+iyGElug3oGVD6c9JQVNN zno~$*5K`@Yu=l`tTlujQ3GU@30SN_5SOu#=6Ew?i00K)#n=4*N6UcSaQ%0fo{M09M zJm`xU7Sa^OXhNQmrX>0XtrmW^7BxiYlsfo;-FLy;^+d|G#>bUZeHbLabFb5(rSEbA zL^NvcSO;mu1)s=+TYe=Wi*?xFev18}7{QDzJjPI6C>7SN$z{@_ZJOArYaBPGE0>mJ zrHg8biGp=SHBFm|ss`z|Lb%*TXNWG!s7}dS!A0`Lu;S|7Fh(sFiBL@TOHM{GRf<3= zrkRW{GJZIYZQa|tc5{_Q)ai6gG#y?`p;#p+P`NHFdK+ctu!;I|=Vck;if;kmJ{@tF z>ChYanJOWvpxhjec$?G{9{9Eso!#u~+q3%3vF-a(a%!X3Sc-^zGG6JXgzL=F64cVz zyz%PTeF)`v@ld&N(VqP=ou>DS_efef@w zm>(y}G@Uyk2;!z88jSV^9l!8IATwyESZ`LnyzM$3InHG)hN2M=gXJ*M5qC%(nUvx# zcVFAm;g}6f3@@ltaIsCMPrS8GdP^h}1M$l8fPQ0?`^McJ!$!!s|B8<^-S!(6EZiPc z1RXkR0ba+~Y%y3g^qE&?1kKRg|Y)RoXw#ze}|Ah%@IfvgEeXI++;g|6ocgqmAzB zpLnk>mkctOH0i@3akD2pyqRUo6xjtBwe8$pEB5YQlGaK|f5_udWjR|pHyV~tEIP|d zz6Mr$K-4R-vYpK)US9dOIn8=Q)fG_TJ6MR_^nKzJbUCl`o3K~6H%w!NEt(reSG=hl zv|+MFcpW+KTiixO_ogHJVe2?9Ol0^QwqjmDJn?XWaqw*r&RB-Fk;=iI(j}QEHpMR< zz-KA&sr{P)DgW5nQ_WB3?$&`QvP9|(w*n0qqr%G3xNvU8!R^#a(yG$2%G}bF_s6SU z1{mz1p;5N|>X939nouXK@^zho9tU;tT(pH?j={%YcYP;5JItd*(@@2};zq(Ai1jm7 zX&?rbvgaQkxxj2;Z61LTY4mcuBI@ORl%0b)X1G@n8Mwd&yVO{Gz8EzL(`ac=^6vSs zA6`dk5oYuYh|hovii=C{zY?%N>=&{Fjst+G+rp)b2)<9VVtTgTi-hb#bE`7&SomYe zcP_o~II$Mu=Thwsvvr5V*Qz^+yLs!8DeWIKKCy1(9+!Wg%cFJ(q}?ZgW9p+)MqcsU z?~~e&JE>?5L%?xZhV*3$nh;lHdL#I^-6FTX{h+?Yj-y8xwN?WgR?2 zh)Z_U{~^UWip$Zr-L9)3iP{Z1nAYmu_W*vLxTQ_TIEfZ)b^#kvKyn62#(5HwTRIB2f51iTJ8B62;5Ti}eZ=hno>HggCfnnB#dOtBrelI5e z=eER}H2MycFr9}PXubOSUJ#XZ++#Kb>jHAK^0}`4%zM@6m|^Ai(xw85>r$!PD#;?^ zEwW>39(2S6uUYkD5Se#!G}&Hv>Ia0-h{*6an^M&xRMMC2unWYh=m$Qwgk0`R+W3;Ovy30H zr<;+hoye~?b<__#HJHBYR)4yL;d8Asa9AnO<%RW0o!Bwtxq4Z85)CCrw$P_&w4@i3 z#7pnsz`-s;1XDN4Kyg4@`(>`o239JvV5QG5e}kgbE1-fhZip5=XUx_DijuhyDQu zQcE*vw+r-@eoq5%f71v^J~I*E4LB$Wi;aT`DX1v!bm_=$@#Y(sdL#JB1w>kr?k*_i z`^%4<{fIWDoZ-F0Atu$%+e~Q#4H}g)ePxT>HwrfP_U}i%hf<1p0t7+_HIsP>7zERe6Vzn$9~Jjh)llyfpR*PKH!H)hDV4zCB_^zxtE+)hSIyLh(Kg_#~h^&mC^~* z#Po)SjwxkJ?GdOcKCd$p9)8tOk>|QWh@ytUltx^~r=t@l4_%14bIar5n{+u{;#@S1 zVIAN+A28jO^cXnXb~+69KU{Qg1#Iv1dv@oWjeJHfNM4gy1nVaJf++~lv5aD-o`UXc z{X9P3bztaBuEBMPFNNHL-7Z*3f8}tl^77`aihs`cEDSJcCds^c$g0*-a)4A-CK8E6 zfI4{}BbQ-EiAg2FpW%%5-jGQQ21zab_ZN{buIO=dN|=)U1=n6~}W&qyv;K7IPGz zYfH`LD!OMXkYH&g=jP{0{KV8 zmDEwa5EvW=az}O2G#=HsZ=F#QqR*EV7MynaBC8#K$T;Z-d(5F8`L$N9m_dLTwb#fk z-r2GSoo9)9L5mn}$}bJP`K~K^X>Mk1U?)fPIFkP%|H!*UGp+V4arlRcDi4#-tfXEN zvbvQ7iMXx2ZY(E|N4xck*6=)G&-hiff2lY{VZB2;<9Qv1VP{3fBjU^UG;&IW!#8vg zDU!5yYS9}J*KasXbdIDOo`!u0fI*9JXLwCn>m6A!ue*-=lO_Cmj0D(b4O^AFOZ4uK zSs5xyKX@rO_UXg5a43-VHu@5L^vx5r!%%6WCR0tnkE*lx^Q&xq_@RHO6@89ZQ8ChSlo0m~UJiZO(MS{jk}B zCpnWS@q=C{MDb1>X1DCc9|jLOl3C94(hL+A;ELA6L!+g$Q&%t_n{P9Aj7OulE&j?~ zcWCS8*QxJt=wen)A-w2V_ek)gy@V3Azp7^F?&f7-GeGYYM&=kM`M0ErsDN9;F z*B$zhcDpNYL&XJBka3R8b#l^=TU~L{SnoYuC9za~U&!aQF{r7w;Nu31Z;Myc04t#I zYu1lKzmRq~0K&8?b#^}!tWYuO5zvVHE8d9=BkmXtyAC~dDcg;UNLPzj6DA?)GfCJe z%|rBg4_q)SJ$m%U$#c0f7r2mX&GtUMLQ1AOXf zYWpyWtus8 zldDeoS5rer(xR9f&Wv8|Os}K9qmnmR-&97h^+dp8Q)S)E&B496}%4a0}>m+0OH7R5k`;%4_i=d5Y4*ZR5MN_&$U=e13V6 zrQNPr+isjVIFG-MEHzLk|8*35%HaTYMr~tFuq6xyT4WCn_5s>$!dBr<)Oz90+a7*+ zRTLZHq!=uPU`&^5InmSP_l>s^b`j9{Fj5_A#D@agrUmcjRvso3Z?4_5Ba#r9 zHfbXl?n1bz2`oj=e@->-M>b3uAgCmD7KMWZ2I9!*NP6^aGHc}0zC^iR_pypSo$Pp# z<~11Wd{AFslex>Qfq-}SQ}4?U$PNA<0G&W$zx%nyR4#~%7O5@Z<3urOO7JuYQ%`$W z#Du0aWk6+ol#9V6*``S$umwD%qF+Zk?iUL=vTv?&CA3HpOM?|9v>)I^AI4<}U5Fyf zmY(8Xo^P^HOgcL48zGR+;8cLMA<9b12q=`>KKOy>e{k;1@m+&7i2~q;wGSO?iVHLK zxkLe~KZ$L$;;cmiD?4^@*SclA{q#$CVC!mj5|N4ppZ@!Av5_TJm!e#X2>Q1jEP}{c zd@D$M9zVM0uXL7*c$qXP$xDwrjcJXoeErUA@G~h~6cZ2HF=GTI<>?foF#FRh->o^E zGIq~$^y(e8e!z!`i6)LvS|CjTad~&Qp{K)P5mq6!Bk&ym^2)PG`2ZOJJPkOFlZmS= z322YXh?EB+Nx~BSZnQs$_Ho{1kpjGI9o=2K*w~pzXb@I_RY~_En_>a zS-3Qntw+R$a@>Ye&4>!*3pcjGhrjW6zVQC%l1@3C7vb*~eMKraA6UQ!k=jF3LJY_=b zqX)bC!#kJK$-gUI+@JwZ#lM?Gfq)joD{3~Bc@)k@PUViRm=1p%r z;20Oj2+zX_L31wT$Dh26Rjb<(LhhsEYzNsXvk?d#BZb7-JSUzoqd(Z$e-pdpOlJf} z`Un&A@(aiF?O!hoW zau%IEo2=OLJWeE15B!dW+K`et%7hecz)54{Kb?HioL@QVC?2Rf3Ba5&Sw4K)3l2J! zzpQ(L&T?t=zE^`FgkWpf$G_kDM|!0p>!)z#7+-0G>#uU?UnI*g#%YgOLRW7W4dYsA zC`%$G37o>Wit88M&khygHP_SE-9tJED8(^@_l+DLT1uo5s7#8*YgaZ=Gr)%py?N`w z%Q0$obRyKLjul}l0;}Jur?`Zuz*zk^`A;Htu@El3&-*JhAxCIp^Z8!K3b(X zDOtX(V=8dpp^n?JqjX3E43N$E>)!RIQ{ME`Yu5cba%PtF>cF;BiL|H}fljwjh(mPN z5ok-gysyF9w;lZG!U=(JAySBBG3U16M5;eSUmT!OzWY4Yi?KOem}Pvfbnn})dhSPB zS{iUbYzOJeBg*8oWI^M>OJDBvSBz^9OG%W6>Z(5-PLz;1-y>r+ybgzm|Y)?C74o~#uDEevkAw^W%MY-5cUF)i6TW=%+Am485rMN%E?a3;cd0oEFv zDJR`l23nQjknX^1#%M&pAV(ZqJU^AJ#s}Jqx+Jm72c(U0D5RELb@@V`_}*PePa|T9 z^<&g1wH#K!j-96A>5kj6vzJSsXYhlk-5z-Gtm*2rw=64uBa}Vk)98wx|GjoQIU2~w z6w;+A^pvsbeeXHx`gK%BA(0NSqKH&JTKVMj-Q>i+8PJ2_y9{L$J6mX9{Jcx%y^W`d zL>SjeU-8h}VX?JS`+Irfj&xt`VIrl(lbUj|j0!x0T$ybiYy`;T@hz+KS9&m&s1;ox0GROm@ zM%B=z_~_IeJ`3=L=)su`cm<^JDsNh@pd7_aADgBwn@(Kf{bJYxh#YvHM{FW~`S)%7 z;ikn%CHw1*6KiS)@vXE2Pit@4lhcyxhQl%0pyS6)18LHdor%BQ=|y29qColCDUbry$?;>uev9c7$zgmDDE z#5juyP160ySRx4`GJqr076K1V5}~RmxlP`%;9OpJ;<@-pE}Jr!SIj+)P2HW`ykQ9s zcWy=sO-d>Pttf>NN-4aN?h085l|&loQ8fc`IMIdT{>dLTszhK+8IK&ukfiRXGQ%TW zj6jghNIc(14bp2>(2EcOv4tHSj_>~DHg=Q*N~zu62{7pXT!aNF&>~H-w~gTU*Yms+ zU&nwvauQY~dB}-9j^2dk99n^hBVrw(`lTZ(VRxV0BNT6S)?i)bbv&!q6gcsOF@yfi z`hqEw$DpjBWm?NmqH<~MHFx)YDoFQcd>f!VO-PIwEDY!(q)al~5$bTPJq{~Q^s7=2 zG?Iq{7Ep12r!U_L480Ugj$&75_Zwd{{qxxtfAQooEi{iw5#$E{IPPA3YejSE$@d0Y zdMIaz23eGjT6W(wSJvLT4$0$0LK1Kxhk3B-A70!u7 zTtQT>qAP_%A`wm^`^!BJT=3T+Owwa@TuaQCK7JYB|HD&BZ(k1d2=^w4BEmRC%QPu( z3?F;XCHOwX#`M>r9>l>gfQj*>!YD9NrMVvtV+_{py%;#$0@IEl-6{WkbMNQUWR z&^T)=UXUjDo2IL$L@9IxnFGsx3^8ayT#C>ETsFU%%f52SZo}!UOGM!ZaRRN2z{Loi z#u)^(4p?f9R@iLTBTdy;mD&q6eUu-t_S(!`yGH8UFRt4?1q_3=v1 zEtK*!PBP-Wj6@J5G5ns=qcl6=nSst^Mz_S^F-%!Xu*RW0mF(kIxFoeGjL_`d zwTrI4BDuzf1I(zzVPlKaK1J*BQ*NJ#oRb49=Rv~PMkazD&S8y3`=Vc-a=`l?{K5A4 z%FUFmPgW0mY0Z&(XbK$ZbTFhu?LS?+idVe+z}~b6!FihBy#BdU`|f+Z?LWJvo|Ar- z>J^lw1Da{*>v;6!6DPcT!^WP+Dm}L=zYD*@g^O^`3fo`*I|2`HG~kp3V+c@;ZEj(H zOXZ6{B{Y&m@-jAtKxrZY(kAHzp7stZLt6=gL`XzQiRX>h^uT8Z`lR}2=c@e(u=a7C zrO|d0nPzO z6C)2&f-)GQUmzq=1ly}8VinkT!65r(DYKkCH(oZRf!q$DVgo$DpWl4t%uWA&&5~bg zo0@L|EsRcK%a)YQ6UjYw*+bDy9xWtI7xu_aI_L1MAP%w=Ob(U_Hv$ zgd&matJLHKeugl%NI&8)w=CuPr(TL@k_?SlSTq(beT*@r>n&@yTi)_-H?X!dkJft| zU^nPKnQ|H{q1dwf3ag@-zCk> z+AE1JiYkl8Kr&qN@3FSGW{f%DGmf=I#(5^Bo7l2zN9WlKr(W~=EB@(258nHaA&ClH zzxpwj?^s{)@f&*EOIioS#^4`Ai#t5Il#08zgN(C- zZXXQ=Yb+>%hvfL_Ge@;hgeMe_u6&Adg$4Y;@W2y0xPRF$ zE|}Yd!Q$}2LF_`5@^G=GDVO8)Qzz5;@Y;S&WVffI!yq^ZQVOK7WL1hYPF+YgyF6nIJ9|3mD)h3oyPZ=f&8ASUW;4bk%R&2o9SiK-)xl40 zc%09F@G|NtVU5EdJxOI9DNii3R?KtS4oNA_Ses-*#E#xb^7HE!aq1_YPev5cP68S! z71jxqO;acHeCc0LBzwfTXn0QopzXM1qcdIiQW2n!F&ewhRH^X`cz2~hLapo!0hc%B&E}Ze- z+uL{DaNphQ|I#yd^89*jWRg|7cewu8*;W%m?rxEoG`g_t%7u=xM zx21dNdh&m|`_G&^ameBRrGIK)NzP9lyw~P2f}81MP#(sKDw%Q+3CZfN z9pEXH13Mt>F@klm6cURgC%oSGUh~6Ik=P)F;QPhjy*COqo1x{rEA%i|(vk+rycsjA%ORfBelW z&;H%@PrmB5C)&Q|d0wm5`k3^9_x_yAa#v$^Xh8g(ET0{f{8<(Gw zSxZY@L)(Z3suByvO{K4ER5{{R;~8Us2UxkGi%jzvdV9N>F?DcZg(Jo6sdbC*-=!~9 zrW-3#2r3Je2q6$oVRQ))7!SViqnl}IxQG{>HzjG3pps&K-zlsR_<=PhVJ+#L2p)jQqDm5Y*-28+wxu5;yGxKixZIqhttG3g~K9cQll+}hm{&>B9yQ=1!WA17;EZqg}Cjs>2*JP<%`b! zsnfyQ6;BOcpTDEf!?Lzb!#TCH5!Qv!8XWdI^23XC5J{+W3L_Ko9Ykf1;|PnkP|})R zn|HCa)QvAS8bxGcB9W+T4L3xfEp)4>{Mi{7eQ{U=R0)gYzU}L1sB20{_6U7KmQ|>L1 zOOIU@q|?J5uGHC0c0yHj=(oS&WmEs{wByJA=+`%`{Kldk;>A+~>!-65=n1!w3N$88 zAw7tr2p1Xrz{5JKE3iKZ&N<>Z#`ApQ*a0PkFA*r>a!l6Gxwf5AJb6s_onQOX^Z)sg zN4Hm;;e04=S$yZP&z;jeVe$H~bf&e@u^fTMIEzw>-cpeeL!GEx@ljfh6EOks$o6%F zVN5!e-2A)a0wV}R8|O$_(XG?Ln&FKwGJK_}pEjAlJ$xtEY+J@#CXPQE(>NkLV-4^C z>o&LX)Uvgle$qT1dSqx-DI=vXUtZDE(@A}63h62r;@F?SdB{R9o!aql-@lV5myYKH zZ#bK}bc`(;gs*TqL@-R*RtHXmII9U%juo3reEjP-v20@-K~p_(S)x@QS3&omqk?dl zNRrYj@!-ovHt!0zY`%BMNzl8=fu zNk?QsMUHE?KSh%YC;?R~b5nu_a-oc z@$JVFAyBx;@%YLeJi5G>rg0587viiBPLA577war3KZhuXgvQX6VatmznK`T&=iZ38 zjMG&Ws)>N5Q^#fA^ZReT;@{u%*=yc9Zt9H7R;=H8VuPj0sWh>W1fGX6hd1{{Ye^J^ zC>bDd);E-(5QW$d#y; zoMGmqDg64j8;{sEM+46q0}QZvR~Pe+pT;eBF5#59laIs=ysf@Iwa!>~k`QLt1}qjn zMi?^65Ekl5H8pVO#v-?V=~gZ~sg?J<<}6N}Q%?{C6<%ZDmG3#&A`uvrcI3t=M9_zc zJ<^^}=yf7R3&xDj#vRsKa;Y4}QX4`$rcZ9Uv$-J{dTQ=|#C?6J#>1u*w-fm4*(WrA zHAtt&O>fD*_s)lweacT|DV6hh+Gmdl_&^7XYOR1A#yEtK&cu<)=exH}nlj~)U%q4Z z2Yztf`c0RdG_gw80b>ouT6Xny@WThL;WZ~cXGG28$27HU4u!oN<1S=xVYNe)-3`iK zZ|BiiS2|;{K)RuhhgUzvD`uZju>p40($Uq$S0A{Z@##joeF*H{Z^g)7QEV+8F5Ldx zb&EzcPNg&lY0elw6ETXaDvlJ-Dg(SX-~0XjoG^dLf(t|DmCu{;%irF${Ts0i8SdLH zg#ibp81Tzrp%F`5U&mc*%iR0L8<^Fa=9~o+IQ67ioOAL-nzIfiib<-9li(CWc$g@n ztUY$_=;QXsHuIb_rZBTPM#?NMbVPw-yp%u|r4(TlVr>SehotIwM3F)fmNsEhV=%?; z-nYE`r0+kqsyd5>ISV3EnZp};KV??ajyY3v_uTcUhqWPvu(-Y6`JLT`a&uI6<5DS2 zu1*tZg)vDcy0eMSIPO5DEz@sZ92T6w2}kUpSTvMN7Nulcb0*&Qyz`I$^Idl={>#T+ zf8M$u-L)2k5DMw`b~;EcZ7%sSJa~_V-{eNk_)Yeks=uv7P&o|H+gzt?AYved?oVkcAT zo<3>NImfPi4_|%cCR8emGY&6Mq>R8=ix!GBD$yN4?iQRom~Q*-%zT%Ot&}1ROY2^K z{(1Ke=`|0NHEmld_8ofy8r9-iYk-XtbapG={;Cs@zQpqn+v@8Ff4cqJe={o8BCDts z?0knXMRItc>sY@_u=uW>$iHtO>mnvJWEk7hL_Q^QWZFzwIC0CzOphp{a>8 zdix3u#jyoK6>MOg%sIx6e1l6V=I=Xl(7R(P__nXEhSUN$^EV7@O8@vJ8S>ZoiSuW z$me`)Ipptam++R8E~seypD(?aJ37`eOEl0CSo~6n9&14>2qWSss<;-|^=oUpetqr8 z8K%`YJ`$J8D=M1IFe$|mw=G{pL#~c7LGEx~YE<*AHNXSpJIZX>yo0h7D0NswJPNbN zWtXh$v(F)}o&he08eaz}B1&NqL-%&|iWHg@)r-O&p+1lhmK8>EOx)7Vrd z7x&R!uIKIlemkH4@bh@(84YAbNSLvRK=w=Cariq2ju0UPr7~pw3=7BlH_n<>J$1CG z+zX6cEzZ-5Akci}OPB5b-A7-SBze8>bHBT!bxbfj5-9@0t*6f&|IVILFA$Z0zXN}t zHzUibr_N=~+KsGRzm>L*K7R9=E7GCK2Vocn#u%x!Hootd)0tG^ijUqBHD)p#H){%~ z9M{MN3w_@Hg(}LpDvNcN9g~)_t!@`P>}-y&KeeJ$1%gHEmh+Mm&K~a7S2rkcRY{7I z<1i#pnmCFp4{d7&SOO<_)4X#aG?@Jxj5x{R3{J-ia-pC%=i%i;rZhBHeD0J?Gw+{w z5i*q`E*EKbnpjKn!V=n;IW0rjLg?S-uq6G5<0$6hne%@>w{h&yUsMGMAZ-L6yY2VX zWh&PJf2Q)RH^2iFc6Cz@(p-7zw5pH2cFVRuExTpsb27uPia7u;i5U?Kji1uUxJ<9k zqm7S_HK_=EXDE1$h}d9y$_RWSX-U_&;Ub?pKSxhoz}2Pr)VFVB^9$zlFK;>%Q|`hS zYE%hrJRM5=w70b}`NUcG{NvG`RUP}qlZU@2I(BRW%1d#<#0(caXV63B>W%p?=5m^@ zu*eCm>FY9Kkr&UO%->f(ZPib)|L2Gh<%-kY;kO z32~Uq>y9OA2DqP6DPmKH<)?pnim~HzG__RES{}D>;&ti2?|K)=c}f&9HjPs;!Z7Sb zwp0d$BQz3a1-{UTQd1%$=Nz%Hpe?DsE?#o+@x19JCtzJ4v59!!R~~0uDI^pzN~h4) zA<|iXbkkETYum<0-|$ib31w&cZ{h*np~@Z-)&@8%#({7KTcHMar3^eP_jG)6#0Xk* z{^Kvd;@qcg0zXvxx*WO2Lw``sO&Ly`Kb|0^c+Wd71mMM2oIt?=VLAC3grEI!(Pynp z&+WAVuF$b%>e#8jUb?jlfHP-Lps#%N6y2uJ^61WFS<$tHtC!zNAuJ=LBx`+|7<{}yq0IJ8SbRb?z*zgczy zBI!t*ey4ta1gO{%X@QMnX4bddUy7p5rKq}q&#JLZ7YF4Dfzz+0?`K zEq%-U6l$?md<6Onq+FGgvh zh$7dRV(!!cE7QcG19LwqQfLCAFpmmS2q!T?h6f((;q6PWB?>`%-foFUXI)b2Pyr>; zg$x2B86lm+RJop2^c(bn1QIDFJv}Af_VUxe+uKp7dPavAI81!tYyZM0U$W1C&zU|i z`9GEKG|0REvF-Jq=g}2fE?zMC*5xCZ#>l~3a{Q1sn znA===&*NtcH3NJQwrtzU+&R-Z=aiXM8E@*kO+Wj~eGk5;p{|~kaD=6ZILM&v$ijG) zko0qviKiIH^r(pTLYcrRq_#v+8Q}y@_}G*r#$q)H%Gh{7ySVZ)j}((A^|WI`jS~V< z$S)T8kM4HOnBF}o?$gWIwWVzoPAhCzX zoV}lX>MyUoqxu)#kGjbo&wrs$%bc-Xeq}fJu6~j;hu#-?*ql9KHZvNB-mi6K$F^_( zzv#i&HaHEDVKAvVZ4wVKwwAge4WWh9;ceK`9u@h?W4H6SEh{M77#mw+tlE#Cq`YV{0kl$T`heKXbdum#V7&e8bkK*xWHH zB&A0sH3NJIc6IczZS8udPO2x2Mpjljqg6aPV@z~&Ti&}Y(lHo0;I|%D#NLT10<_j# zI&T_1CGapH9Y#n>g&ykb8YzbnR)9kHmoOyCI!U*o$_%iT78^^(w|M<~U)A07*_;DT9Im(Gi0fz4N6mANk;Hva6owI6G!i&Z)Dx%8CQZ_b-N_No1kd)up@ z%WeO-rpi}`xo0%esoVJE7ZwoIm6@11dR@f&!V)VxcQCDaXo)}5TE;&* zaW+Vd@P0_=2%SR;L7^N{Oi8MkiZLiHL52^Uc{#7mpHEjQPhVIhjza>^qdv$mw!Vpa zKZTY_&^ak#uJ$*~p@d>Xu@hkpR(pdghgl`4H=52;Z`&*9T=-*KrFn$T@KoC-x=JH1 z$A3msGr&)SwUSg&&$_k(>C}kIQKHZM^K(D?fv?|rN*OUOB|H*gq$5{+?hyFC;Ao0lmu|dV2_{IZ$)wzdPyg$=A9qn{&=+vZyoq$@NB$s7r6p%y+Q8QI zcFupvcowf-$vkF_c-(5x(bvta@spAeapi=cKJz6X{nFq6@4R9unk5IRVilw^^VDdI%+4Det#v9$)LV~jDNB*F=hIV>R2IO(uXAOTMS&ciuDRJN2$ zF~!hglSc$nhSX(zgr|{Op-coSS(FT{;Dr$QHc8$x1BqMCQWj}a7$Ph2oyOw&(?o`j z#9&QCN!C*?Y~$h+PyD&gjp5D*s^2l?g40{@gQ^>L@2A%;{zP3az{YvT*EQbAPXLw4E~=ny+3`==_9`0v9FUb7L)O3z1YPXAwZ4 zeSY=Oot#-efmuxxLGIZX^{N%)5RQ}+pgk-W=^RQ3kcxp;3BKNU$9bfU6$jEIb${A( z++V_c`P*#g~j7=ju!;hvV?B6opLVj7GYC zgXs2^7!X1royFJ!MdNeF1M9hM(KfcU<>}}y(a~EZj{EaH{46a#jBCy?ZG4JL&z#C7 zr%ga9wc8_wM0qQD&I_CcB?aYB5Skd}XEEghQV&0x;H(4{ptZykV%ZBWS@_eTjuDqj z6vL3-t^zNA*})f8zx`G91%YmRc+i;&*?0Ty!JG3@9lkPWKR-RZDltzpB?9n2g%v?drA%sJr)i|@Sg;&ff^ENA*V z4S9;F-|!9yd3sV4shBS;x|z$TpTKbqtz?9cwgRJ$;nJ7^B`YB)nTSo@yI8($D-U*V zqU0-@gom>h<1B#{2y4-PK;$g3HKh|XEnk^8VbaJl?SvrT*+)lr7X;5fNy*_-Gr+^( z`#)XG``&OODSznuW+%^Tee{*joA%Y4AKCmRZ4{`(Ykjf(Y))G7kqAFy{%YbB8&{n)@>#m z)X~w^&AJsk;1CA*isx2ckY4=iZ(CoP_B_fm&p8XG|G76`_q1)g&Ofn^N=&fDu`b-f zJFXhB2hv}lgYN%#?=QOp42joX_4s^ysX*UB%C-h0BfJeSJ@Jfh+_3h^Kl-TvQH~Ii zCGx#NH8-z*M?-^{ezJcM@&&G3W>U&sKY2pKUn)6A#(jMInhu(BeVj16@=#ms*AWg@zcEbix$l8D z#Y7A0y(ZSRE$O=Iqy^syyrS)XaTGYMltQpM&YPb0jrkQF+q=4o`PwfG{kIb)&7fEwp4R&xp1hywnFfLpG}w4H zQ!~ILz*vu)?tF@i&OHGoD&N9ut_ya3__e3M>KoTB`dhv78V=(W$z`*&bq9R&7q|1q zSD(Yl6Y2-~)CF;@QQDFcj(Jn+an6E}I3^{^Iyj7xND*T(SmmQ!jOb4y8^}yf9(D>L zBo0Y;q0BA!F6GY0wxeYO0eytA!>Ir<%;cs*Ii}vLTmJcvT=-6)bSNh*EaoZq70G3N zmT$;&&Vr#`OQ!|4N_R!^V?%a%CFdF=2EALQmIUb( z*|Ax+^>ssO$kQ6XddKGZn@ioVyyh=IJtz@QvtCtgs~x~Q&{Wh zbRl@&S-rw>{ibEyxqjuc$(hE-9^SeB&%k0}4GeFOB`s8vw4^HwXQm;4)kzn8=<3Jr z@p_DXflx`k@7}oy1K&|698NmY+NUop5c!(G9K#00Ih1vv1hI2i48lpIbqG&Was~zD z(8$;#v?Sl%%f&P1|8Crvu{V^5X*|n4eQfAzqgna1rfag2!=Yw?N63aPoy4vV?fH0K z<@=f!p2H&#KC<|?54ZXM(kO-K6d_s&S_<9trbezkJb;ZIO${-Bez1@09{4Ns=FMZA z-p_0A@1j#JjL3oV2(4z##?7>~caW{ip(zrf5Q2)0uR>6c>(T5a4C-hu^wLrE%q6EZ zd_xFv$PPY@>4*(Gx-l`39iHT2kO|RMs?~mU$&T|QD`v_-VtPwEFF5tQf35V~LIk2; zuUKhGF6-mBD*Rwri8DHkqglq;fByQTe?KkV+;E|1!IKIp_cC~*KS$qK9LfJz>Ojdy zE0TRbC zv8Txuuu(=|f8N5AzMl><6>V+oO%%thT=FC*P8~r*jT%7B09S=4m#(6HXFD%_(M7l+ zloh?;(o;UQ{F;Z)E9CtX>y*PvLsw=d%2uy%-C9ezTqc{%VvJ$MiWNMi5B%7xS%#Q0 z?Fi{5S=UmNscU4oNxmf+)9kge(`CroKH7sZyx;`!y?4Lm;-4Mryl?;dK|cKIk&CEk zq3GS!H{x-C+)sYJ>T_vTPgi%DvricNs~|PBuwUTd!n4LR^<~qUFfPk5!=@)*{p5Y` z*i!6!WlH$L9>3?`9@w$rzhu!6;&uzRNGTIhn#0p{WmKU=Vv4P`yFVLk9KNsF z>F4jiYTOC`3=H`}BO}A#p16-`x_S*yp3T$@a25IWUmxSj7tf=qsWKyc)_K!9zcQui zweR@MP50I}oc)-wtb6<0AKtp=H6oRoDSaO&Br-B+r71hZNX*jy;wYV} zjHfltC0Fm#nM?2M+i~tV5ZaG z{W-JuD@Xg zSH5&!rH9{m=_$eI?s!ssuD&J8RdY{D2!T=xAq3@eIoSsrr1e=fpG!t2`)tk#tPBvo zgJC9INh$DcJMGeI|9>BT!K*lk@%`HW-o`5~J8>k_J}6NX(c3%p?4|+!eC@gq>z;KA(T>fQN3at-NpWF^+Kk^yx)|Br z{|*Qf?ERBuMpfrWI0w!mY>aX-vO?o45EvI>r30(cMp71rtsSMF54~dknSqlL=5$h_#}*}rMXB2u6Vap;0qkUot%0gLK zoD_J+a1Ah!i0kb46ASQ_LOHPIu=9D-7QBCQL(2^eAsHiIEO39@dhD|xWPh}%Eo%-l z*Iu`Xla8N8Lql%RzXv{Cdh%Q@J$Wv`fBwfee%<=_rK$Hd*WsC>z@*AJ>7(p3|0a;M z5O~`N!xE@Ein@!g_OSE+z4L`HBU`$AuygKzaxGo$RY{UMD4r)t%i)EfA6c{Q0^@Qs znq-O&FWPz0>2uyTl=A~$Gi}8v?d=#gd&bEIez{pCbdlX4Ly~QxwdO3L1>5Fue?TO)C}+u z;FjB0kjqM5`216z?ojvX4_x`tO`p5IZ_PIUU8%BYj-MhAyI^J9G6n*6oABl_&cA(wnF^Y2z&+{St^UzNoB_W`J|7YkOPfFQzRO>uMfpC82Oeq^E|^~8PCNO8r)@trrZM&951+O0$?smbIQ5SoZnTiafFOb(dBm=B&et5(CT7neYLdA>EuKU%dzK-pco_zXg z(`X)_!Bn{Q5Scjr^Sf{UdTRXGbF%GuT-Kw@l*q*jBO?%!*cfmYXB|%LsRME(2F>pm zl1V<6eZQXrO$`Q)-}|E*`1{i_;Q8*YN~N)M1cnK&q4lpTAOGge)5dHC?yclC4EY-~~Q~zCP31*!<&`RQg-M z%ApMT)V2-Wy6SOWb=E~ypKgu8sTts-z?LmNOrBhk0_9&m{`OOLef5X;{L}^BT&;@u zx`BML2jvNz6N%*Gz|&NW?lAS<9+>Ar6j@5em~1W}iZneX!8vo{U$oYZ`4}*$%GJ{t zUkQBRr+Ri+%UQRn ztJ1?i)|a<4gFw>LzO{GOnB#u!yUK63zPOt;TPxqRyZVXyKD9MvuV~7LgeeIoB8|c* zz)8wFDG7Vwq&b{DWfmzvgG5oXG5Jz~e6h&(LN8l8cCo&vjqP!sJ{J=xjaDAM(hxgR zQe&MXat13wBT!NjRiGBO_va7v*QrYUvLV!v%4Q~g=ZQQ1{D!_$&zd)N=ITmcyC?}J zH8oZIUIBl5-I?dFzH#xR|GCALU(n=Koi&aqrO=U0%JQT{x;^DpN2`2ku&9Jpf=EJ8 zhzYc&U}9X_qqDnf&E+#s`0g34Q-1R2%}?cra-E0PEaSG#%Z}+lz_G})-2h7<2h{if zTSwwO4Rm`c0y{_q=Bw7WC<+Z<`qJ-s$3MTAv11M`J2|eU;ekoxz02x+_3x`TW&f$* z?aX8{Y2va(2$yI!BM`E>r9{0uYNrQU1Np=VMC(reSwx&OPTm=XrFz<Zs!M(P&Hwh5KfnB!j%32PkBx1|{J+Inodfrz< zKtclQ(0tU2^rbCg!@RmlTr~A0Tz|=OU?j%@F1FxF%2@XFbg*;ZURJm5=IMP~*%|j? zl%Sl1XsHkql#q}ZtZ|G$0PYaD{?uAHhf<165Y#`^viU=^rcD0_pt2xhU~g9!6Kg7$ zRnG^REm`fq;<~AeUUmQO4IfS%r)5J(d=FL1~1J>jNdZO4aE0&^%5@YWMI!X0yNBvZO`I`^( zi4VRA&l~pbwe4kBp8lq1c5Hm|w}0WEJ4)g7nra75_P-Pc2sJOvCrF62>}ZVXFF{I( zEul0N<8m^+pdNh5<@5jMo;y|#IkPoq<^-w+*L(LKU$y(c*R>^opUqgN7MdXH#7ao4 z#w2OkGtJThWD+4=iQ0)1s-D>1`DWeQv-sUT;bl_EHqTRNHS}kA)nyC$`j0ENO)bX) z9ELaEbm_M$-AM>&nzA1%R6}b|O7nlQ@yU1OY6=CD2r}BIlpGrAHIgt&h%l5Clm!G@ zq$V5Arj9w*LBCi^6_OJQ4V+MD;F8%3NTlGI*4_MN<8mI~v4K{~WR;I+1x_iHlB9y$ zBZrfMbZX6}HkMMd)fNBdXUp$j_0}bqe!0@)BqqT+ha4f1?9A!&ehDny+|ly(P3v$rYK(FV}h&Z3vrSqrGyg6s|*QV4pvaW9g69Ga%HsDXI z9;Ycke){wMP^9l%MZdLWVy)y69S zhS%#3(7erHKW zolUv6_MJO--dU4l8Sq;^mk9K+WM(S z*Yx~tT~?9NIr_@G@e7lPOA%TmNUdR5HcX^z z(Z$@kZaKGXT+Vh=B=6-Akr{OcJU||D&ZVwCLXr<9JN)81fnNc8Dm~Wjj&_==N2O8R z0(|nl=U(}%o7XS<@VebQ-dt^}5K0}=vwoqVtfAP~*M4^0lrPPk(DS@R zzq7P#&z5@?JOMlfYz8Vfh5jqW|EmFb;r_1jB})2l`uLX~Sm3rcIElIAnWz8#^x3ud zWwQELv!~QNL|V442o8wS%3nqKYgOLgSe=tsEtp>Y)>0I|YRkUl%4{ycb0v(>NDNAV za{^0(5f0%rQfP1v>&&ASGE1~)2lk(8D|@F%Jor{4yh+#`+8B*VNs;6is|=UDn!Uw zqk9zyL0QEFW$>np1zY!vuU!CdWSDaFnWs$RFArDr^_D}M;4I{_Ud3sNR59J9$||or zqn^vwb+_JFg(3< zC1(DI?)}C0-+1yxFQd{@G(hWaCO0)zy!pYHP^evh*_>0}HoLz0d&_rjxw0IVUsjf4 zf$#aK1gvm4B}r_OelCE~0u#q*Df@XC0w+?}B?Qk^sNle&Mj{UUyx+tKheO)5B49+? z8Tlei4v7Bjo32Ej#4yXoBUE9?<|H<7w*ZyGB z@*AT##`k@^FuiVVEuK)Q^u?Mgi zom)5IZs0Cp6;LrJ;I9e)F9l$k7&k38?$ba1<()6KnYxBdbuHPdUNmK_&{&tGGk;=$ z#c2){kOkskS*Qa)cOp&&o?w73ibEo?_|oG00+FenxO#8=s=m$*uX<)x@00I-{U!ee z+y;XU&gyooqOhg!VQOY#g;@-CK(o-jV`@`?L;G^&Q z%oD=~rP@qH6kFQcjvS-dw!3}d4{lxkKT~V-C{aS$bk*%!T#;aNO0G}e=J^kUVa1g61)u{`WzopVSb zv1v*C#i2_UOlfR>veM5FAdJT}vS)z@X4E!5kWJhdi`Kk(dF#%%#lAPYO6!abL$X1J z7)xJPQs_)gPE-)k8<&Y}LRHFqLyGi)c2a<+aX73oL~)Gs(|b`EM}WW=njX*K8Amn& zT<BYi;+7Fv>ge=#`UB{N~NAYk%>IIj6FwXH;|PX^DPp!B+s8&?c|?>ivIu&9-v) zmDxg`Dv=>;Em;*DVv}OzftTtb2RN`S>Hqqr6G-FGXmV1cotVG5t9|~2#-{iD_OW}H zFPb#-mSP-zgS1*PZhV~MjsI5yaQ!V0tpE7x4Lz^0Fezx9gRo_iQU^Nli4!r}3Ry)E z&f*J;Y^)}-wM#zt%QZi&&-<&F%+G%Z_)ewAi7kv!Z^;1v_u;=?^0U6Oxbka1dhBDd z>YZ+?vN@fp!BB+Q^k?{phiTHJSq;JKZMjTHZ}%dl*nW}I!Y23s-3Smd%{=u zOclRz)RB7 ze;C0HRIKfiwB9ot&={rKglU$}2;%bw9i-Gk6nJG$yXKc=tkZh1>jvG0vfhw(I- z3B0;|JxLT3xp-U|)MaT=zE4yR$xUipv^r{A^iNOS_O>}*^|bmlGd+`4$a0>t=^`fuT4}8DQ`H?edNKXsU>u+n!WcZ^$YwHCrO2Iq z`{SLb)n@JA&TcP%9Qey{$8kU;a=hxgGr9Z0btAciwz*U5e=cqL=jWX`{Z*0lU$S!3 z{ulMixIy|=o^Tc=!FLX2!*N|cN+}Nn;emf9WhfDKPHHf#=1t_+3#QHf{p6;)9edg; zb5qG@Jf41hEtBep6ryPQ-Yx5{t;yyHa(TjH4|t=?>ZO1{1@xF+dTn;v|9t)S|Gwn( zDQ`d8K9`@-#NAJgzcY-NwajdsP|2qL$Cm#3W7+zK36)R)g@YimNF@m+6h%S?jdE#5 z3iWrdYTdcwnn@?EXpKt`*XOFDZIySlhD1hbX3w8F+TCZY+`sec zdv>q;d+p@>KxniVKxDufd{1M9Wh@kw!*3O#6ef`r`qSzw|`tU6gY2TrB&0?$VYFt!h2eY{*L)8*Bl^|RY{{q%;5z3&1aqk;nClGEqV*iggfwWCVJ zetFF$(|);b?LJ<9$p!CR`uH7hYU#EMi!u{X$aq24K|Fq6`{836LWoDtSu*wRbLKaH zeox!}4wu9uemsP;EPZllqElZOzs4s16d?qz+yQv2_Uck<;}QGesVJ#J>3N zUQ)<&l)mFBQwql<08gG#LrvrG#F+K_cAgk#_0_db_IDSL4ueG~k^10jk7^mv?<3kSuDRIhtKnIgVcX%O{q8 z*aqHW<@-1((XqnBmPBh1jyMYOr6d{0cdU#If$tMpLn0i)Svqt?eI%(8g{n4Dy7Jbx zZCAGU_Wn-+{++bl_rhVyRfxaJ0K9HX_xrx`<2yfU3)M~aIwFb`PAN1NQ4G;R77$41 zBZ)~=f*jW(^pQOc-%~goiFG(MBCzFIV?ycYX#h+JAEM(-A&Yqqt9$voo@|`_Zvz-vrQ3jPsPzVB($4Q4! z4l4!(031q5jE%7-rl`Rt4v}bNtT2)5sLPhNCth$`sB`#zE#&GZ_DP}tb+i|J(zGTn zSupXa+kEtU51v@?%Y-gKDnmNeFuH6@NrAH-BoQ7G0z3V?w{4sYEFaYY$AC>;`>}TT z{^k0%-Pcd{YUtAzT|wzxAP9v+k@oA`q9S=I!5ExzNGb4yrb8N(R7fjPNyc(UwrmnKDy{yE|@w8D&GqXx5jI`8N<@v-VFXfvn?&bGumeJ5K0l%Ek zrxLshGh*Xx%3hBX(1Pt9E!QVPeYm2X55uLC=ke(JVIQ}O@r6})v9+TWG-oU_1q`&E zIdkrh)@)tN+b?gszckB;3O1)la5-Fr~IWMqz&o`5rn!{gge6+k_@Al_q zY++&j^wI1#>DwD0`PV&R>CHiq%PCKR6S%}tQU)aj(%DqRF7Sw*8&@e)=SfO71_ZwH zk!kDOR#6?D>Zh(aW2A_J1&!%l>x!uHgB>Ut0jqcJ-S7zU6^+Z__m{ zFXCF9v}m1>L=G!`fnAv^ZD2W74F;+NBRKZ=E-{YVUQ| zUcBs~2cKDU_TuR;`Rp%N{XvO3w(T*qfBBKrbmEbdMJm(k07nvvvaX=uD^dc{K8T= z$SaRH3YnlXG-V5@jE~il2upXlNN1^+QYoUCL`YAQ%Vxm|suM|37+lWBl_K(y=D!~L z16NF2z#A4_NJEgp%9JsUkT`3p^)tL{(dG1p5r5gXhUwW_{KVmoGGl$n_4Zd&q)W%8 zk~p5!9fz~1P%!0S%&DHhqa)qvFl3d-MH5pE_e&?A2%um2=#OnmvJ&E>_x-wePNt42 z>VV^!CC$j5Ke6&5Fs)|fJ>TtZ`!3$pzW37@&dWPVl<^V9Fu>YY{fl!qKu)zV-p@li z3ilj|&m1^Izpt}P$%Y!~*BgKK@3*e_%95sO=bSld&c}hu=lG5@{%QhnlGrIXz46=k z6ebkr$%2osve=}X#06;M2>gH~w!~40jeK0zBe6vs0*Qxvp3Mvf6sq7k`?Z{#NOw(f z>X&}A=BF3WbU(o39~q`Vo6joV`<5%{Z5`Kps*hA}_d$Taed%28U$&QZ>$cI-QlwOd zI4q%*Ae#%w<+3z2HE_wI0;irfm!%IcKX9ObdDGUHQ=K>#SEFHdRyZ zEzuAQ`d*+Km5CBarI?W9CT{L%{pYv+>6;h6Vg9*q05%-&YpVo*EdhAOr@wLcFRPlG z=1JX$A6f!ezzUzxSkOM@a*4AROyYvY6ZzI}meH5wF&2C+i4!-jv#*uFxg)c(a#E&X z9i}GC-?J}x`{@l)4E*D8$67G6k)DQ-XLh{sM&bVFr*{KHelA}YGJ_X&^4q&s%>X(M z-fs8a9aLq84lYybtJAV*1@INIODxh;IBT%>$kCfhVVzA!(nP-^lXLii9=>bV3~kr;!K600nkz~l30 zzl^`T@26~vda1URw}B4P4ObqkdRyPMv$O4UjASPGAT(ExNGqCMJ#7dFn~Q_;FecTD zAZ2SS-F|xAb1jqP1tR41rn9aX@jh)y>C++h%~d*ET?!O>e-AaeEc;B6s*%oTJWudr zL!alcQldi3%!bKl|9Q*G?_NB4-anCwdc2_V*ARdwe(mNbf6?<`(@*<_wvy^RN!^@8-VxRiP5M!NnU8wM+h3ayEK$VMI+8G5Vs zmj7nf`aN-8`yZS-sfG!SS$u!+msCxa9%^`?(lhU!A3S2(_!jQClUq?c0-p%z}t;#E3E6$^#V&>l{gv z(9kep*znrgUAe_urO4^wv+9<(c(!K*kq1UqW+X3#M3yZQfpijtBSPTWR43Z0bS5)j zPQaJAKvEs#ImPBU@$9R)asCqiu=)w^-@cBXti~4-=PPn0i&Fu=UiSn>TV6N!Y_w27 zx~S2@k@FQFJm*?Ic;~Ni6~4m{9$j+IA&jHs(fshUDszggI7+F}V+|vr+IbY6!DfAAUq~*SyYRt%oBrq0$tS!QSbe;&@o0EK2Vj$!X>a|H zTb4CU%rsUhfprRGf&-KYP(UJmytozPHDk&Sbi|yR0(X|n1dV;zvX2Zjku5_a5K^F& z#Hj>l1lnX%$p#bS)OZHzBL~o(uqjzr7=+Rka#a2H!M*R@yQQ*TtIu}MmggSPfPysjb|S6v)1oyS--8kZ>}v%7A=}F`NGp@4Y_|9!;P2B z1z`K$-3TH0=;ubXSl!+iKttR@7}R5IvA-`ha%d?i7Rz|~CTf#T_6E&6K5)&HVISJJ zeRXsqL`TDYt;5HbJ;k2$oz&@kw`L|}3Kx~Z&eNEOX>Xp|quX)O$8$G?Bg?9<*wDsB0K#0xn9=f3cbKm2cVbEYw)b42A3J=oRSh{P*U6-7L@ zejl%MGr92Gfe%-~ZWJ$odV@cp-b^p1ZhPt4cpu!yN#yy6HX4)U1{*2V0JJr*}d zkNx(My+>8)+PJsk&g+PA+#CD0;y;dR#^Uimb)+`jEUH?)}>Gua$*u@^sAg-wop@d*ru zEH&9OOP}7t`W=gyH96p`AGwxKe(4ET@9iW})#$*2RFq5tSp1B}IfHcxnhYw*;N8w+y-CN0i|M}i?*}Cia2sW+U+QA$D_0Ge8ygvyYeif|R zuy66^O_i$<-SOZ?zW9kNM{)@}E;zaA_fK~6){N*SauJBpttEw&*d)T4A~Kilc;73} zdH-c&J|Ct{=^VPS$!kuyL$zDaWT{8=i9inG^tnlXt*K+omQwICh+S~5mhQ-nw ztA?L^@umUE*NRXomFZ~jtoS-EUOeS1w}1EkH~5n$dOqIZ<*5qb;t1(yDHVG-Wvafp zE$rJdssoJ?i_dCcF~bI6b@R?uejo)lF$03;!@@a7;tbU)LphA;j$`oBEFpH5-kwf& zban91zRg5W^m1ZNGp{-2JT90r51R>6hO>@7E_uga$@5Yk`c&Ixs>bB^ow09 zzc|&;PYHX=SnZJ6fKn9WkASf%gusaYa`ZSdU8Uu@x#IpHT=6sRYfLGk%6TNl&>^F1 z|Lre7{rNSgo_*cfGZ(y|n%TOqyYqNo!y$NVMa%sE`Qfu)t84VL(pC|geaJA2=Xrzb z0vjpGgkAJz>+r%Z*0tC0>Q6ktzg&MhFS{{_g_4{`rn(1 z^@?D0BbN$8Xf#&&J3sQqD?bk;(%hIC=Vg{g2fW=xP0q(oS&ckOAv?!SM!<&E!s z^NW5^>F$e9gYK?zc(EJ>QDk^#)lrLg>#Ah7r6)EMr7C&9TDs|C;1?q~$4%$Y9LeUU zsiF2$7c}H*p6H6-m(c`T`6Nk%=Q|>kpj8H}#5t3a?wm+fo}9#r)Wf!fg0AB3kNo4A zubWU`GkkO%rM~fSsIX_~`Tcg9c^y!)F`@zqe2Ju7Ea9nCLJ%zpWj`w#ffW|(EF}a& zON4=%TovVFiO;OKmnT|w^48NXWKyAqvNHHir>RJ6_%jv@&)Dv*g7TQ<3XVNxd zYz;z!CnQM}gRj}s*~WvPPl$`S`q= z=9MQjO@3^|AKWp5?unkC?5Pqw^l-~-mp!}t4PLcHk;RU9bU%gf`j8o)^=&2A{$dq2 zDpHeE)Kpg?L`(mqj&4Lhphnj`%bGr={)5Hx?uKM9KmS=rxgaNv}{8e1{x zMG8q)$yBtURK|8kxI%`=S&}dYA@H*SiOS%t!&!%j9i9rv#0kIO_bgid)vM*&_KgR%&2C)6aE}42!BL%i`Iv376op=7`8+2<&9LEI4;zR`tQ0oYN zLBaV`{=E6=_k5^%+7nb*VLaB*GiSUoW=ogeyN){_-Tn`{rUoB{wcVp9)`%vgDxs4i zG9&S-8c3X`r5GcHrll`t?e=!=dE`+(8}#rWe}6rfEUM!h|MntY_sKuAdS^_rTta55 z5YMB6mJkBZ^9ZXOrhV}nxBdGYuQ~JGBR$5I=gh;5a^W%*uDNt3S`UAtuif0aY{QE1 ziojPiPpFypv3FlR;&XMjwo~pKS-EcNg!;dG#Wg4Y@{2!w_`my#{^|HVc%CLnEJ|rI zGKYv1((j`$^ofL~y>mMkpLxO$XVgsiI8agF_eZxrJL12mQe;#`L$alQvT}bvtU_&N z0nS1gmU;D}3%GphJfu+gKq4J`!(P_!+sR$KHqg?(A1f5f(}YP(62RQBiVaB*AA02X zeEQ5AnbX*qN>BFpk(+`XAG`WBeE6PU(;Js)Pyt03vNP%9FFV(AP18JV)}f6c!ZO*b z;>rbQuypUy7jy$~F4ZK@NL?&=V0obx=sbnZ=~-hV@T8@F$H=HCjnwR2;e>LXOT*d0g`WdA-w32r#;9GXRd!695a zn|?UF&_R$^T14VNiX-k?XbIuu+s`y{^q?4wlW3LNlR z9R?nf&SEcxY=O2YeAUlaKCtelnTtPF(I0+{p>w(CfAnTBtX#eC(`~Vv>xmeXNJKg% zG%CbmKiWxhI)KE-L?Z#4bxZh%|GE`b zJ&m|rWL!-yhrq#o4(A-1j9}Hy==yFi`4q5gB**fae8S%GlWF?g$1kaPTjT6~(No(# zR}p>7u}s+KWx>}L5Yox^U<7j`yht4Fl+ zj_x)lH8l^v;bF)s#kKQJ8}WVzV@>O>xAaBvNq*qt8AmMbVYA?s!8u1w5YU*bqD+Ek zeG+T&2gydi@$7vp@7e{4CF>N4ClH6}^2a!mzL38;=L(iIO~Z5jd}k?ei04L;WJE(Y zPbdrx7RtgNF)KV6Vr!_csUa-JRC!td{(W2Cam}O!->>zv$L@iy5cc1~ z5A6PMetIo33NfM$K^3E|5@=V2wT{G-7{81$2{KVwK&kX*A+q>Mh)R6opqbD7Xf>Cd zc?Fl9GKtHUoWQRhZ>1?y#=7y>{5=@f+5@Xf+fQN;#!{Ag$}etN_USj=aOzta;RjJy zqxjed&*kaI$2J$>2R{GusbwSCrPCx9l%Tt4>X)w`UA8f?F3+MlBY#N&JEu&n`M-&E zQ~&P`H=H1PO69A*{L_bTEt)F2jfj8pfpgCKzu!H&^R#(WpmG&u06MzMY~0y7nro^E zJGU44_hmmDZnMM*;T*2tUbC`FhY}JUSt4ghBx!$4h}6bGLqdWPl2|*=n>L$sCePuv z#%K7(%B47A=<+1>%EwD0x&zHGRy@Fa&b^i@CsT=6Gbo)B`@`~Cb^a)2> zZx2s*?&YF}={PSf2PV=nx2loJ)phJB_6++96+mJVY6>;$Cr%jEeQ^K}Y#+0LN|UEF z$_XYG>h{d4ZXEFewzcdgBQ;s=r^Hg3T19Hl(GS}~Z{#*BOe zyNccTIggB$^vZ4Q8l>Ldw0i5F;MXE0F=naYG{(2}lV zk$RV*%O=dw)zdZ=_n&)Fe%5h!Ptw`a@t;ImwY}?_OjCe}W1Il(SEVJ7Q6A5UB%KjA z28l%CgBtLSNstnRkXX+LZE>!bZEf(?AFkqkZ(YLG7tZ20cXyCv)G<$hg>bn3xx0ad zo)QwzNuJo)^75Pd>}RJ)g!;Cq|7`@s!#^^_>b z3Fn+TxMI~w^Xr*CeZ+mH)|EHs@f#CLJ*E1~&K%u}JsT)YMT1yJg=_Gm$M z+sg92UwmL^bHnJq(O3QJEn~i*;V`>#(y-fX>1pecR$`UFT7|0MDY4Fir}1QehHWf@ zbU{jDP*S3Vz!w4|)4AbmPB@LJO-+2^{#!8RUQAwMHDr53?(E*g{0XbLVfq5BrvX8P zWKLZZ7tA<;yLW6L6dGT6#Gc{4Ezfdk(@aPVkpkZ-63=mJeKVVTI`EY~s*;j&f)2{u zzkA)5r&_mG`f(lsZK18FbJY9yqdw4CiYjJuuIlN9h2dwn2gAZb1Doq+^2_B9AgglR zwsHAUx8EKX$yL^-7!(_N_unwl%TmOUN7G4!u%fcrS^?Hrv{V@9a7q#>i4=-lC~z_@ z9pjFCwyv79kgMh_9QOFnjr}@2`gt*Nf^Z&EgOP^7DMXxBMB*T|L#(7kDJ*1_Pgytu z1SQXL^N!W;pHVmAAz<(DAHcDLF3cL;4K$9ZS^C>GZ-vx}##%eBl4e68%{&FxI+W5R zal-9S?dNT8Dl=t*rY4Xm3~pR~geyag#HyG&uQB)Zvn{U-BSsZ~t20?tu8OI(S=zgb z_?awH1nh0=q_d}t?`!I70y=xDd1Cd0OsUP_$pTX*H*wkdGe&dDmhb%W&JNIZQbf|B9h_1(nSZ+A zIzD*EPjKa!vVdCU5sR2#t$UmoO__)GRN9}lV1(t$Ij3>!_O)a(S!@_ns4lQ}`)1k~ zm#Ec#S~7PIEd-}coXO3bo<(|+#FzsuqQl`x8M3*)q<1W?X7ie-^NJT=H|qTXzV+l? zxh-8CU>w_e+IJf>I=;oq-c~M~IIrUEr!+NJq!m5{^55F<$omSJ{Gk$`V|dS+#9;bG zRvfUlWhaBBE6E@x!Q!y8w{U4?Jk0tbJCydIhdED@u+n3$Y5@nWD^*^dR%o3Gz@R4Sx&lv+bvQBx(d zR0R!mTMsRc14~?juRw%8H!ofN=E+m*KgmdIra)gu57kXo!*AG+a#&{ej7eN^{#>k* zn32!*b=PF0^@(+7TcvZ)uIoJwxND>b89+@zlkqFhSOZV-s>@Fq_%DFiIfHW&kOxE` zZh2@Mw>-3sFaOJ>Bo)lj9xLYa;W({fP=S*}uqoL3>n-K(3u~mG&R$mVj0gwiBm%9u zb>njGUA>I8aR<&irszE9O_;+K3r=TxO#>=2c)lh~B0Q-$xoHw#deQ56{{z29_zGJz zWTj+lxrck#ujZ7_Tb%N;pp<=Z2VfA}da z5FZq%g%BjxQDp=@Ntw5velc%4?LvY7(SN?A4?4MU6oQ8lK>7=*h5i3(HC@ywJ0sXR35;_3nnfj4XC;R)#gpS z`?0O>0lqlW<6L~g==){Ay=@(PN1#kKfQ9p?E?c&7$JxTq^2npxFJ=q@_>v2!F{ydz zmG8M(kNAXn7-R8Vk;|4GQBF_XK$%L2e%9o3`1{Y?PhE9}yI1T5Dam<9miX!lBO9d} z3!d1re%NgaL3Uk&N&C7aR5Xkvz$iz~%d)wn72^r=iNqP$E=z3Oy@Fr0uHl+#C-Rz8 zE~GgTcuEo31kZV#+%Sa;Cd_8(o()7np1@c##__XFPjSJ#g;Zxej7p6yJQ?tk8K?5Y zoljHiWr=M^5vTD8^qHs{nPzM=YbT6&_>9jyxf_f9Luob$78eCNLI|C@6gfL&@O9SWX`eWW5i*q^P*`Fo z(vcoD&Es+0s$ZOaA5$7$T69u%!g2DrrW#e%-Wm)=df3FK*ya!Xrs6 zsos5MH+#nOaK_RXcHw)ls$0XGokpqlty{8tCa7amMh_Q=9g@ zOS_n-Hnp66_2^330OSh+)rFxs3hD0#0;Gc@+XY5odN8^mg<#c>U*T}{RJYvWFfJw4NUfQguVF*`Zt`T)GNcqZW06`TY?>7(CSrc=glB%V z?TInX*A+6kvFr{&m?TwLNg2bunx+wZl1;5|9(4e2%oI2yKjN{`;Ln>@zD!9ko$u~X zKgU{KjQV}F5dz-`{K(Sn4H6-(JMg_4Yw@JS3W0V|atQ&7SUQY4R996=fx)7*Pa*`d zOnbxQ1!XNxip;N8KKkY*wNr-Ge?L~xPc0kUig1j$q{|hj)r&k)1p?sNT$#RJji0S1 zHtj^AqwM+kQWE#}5+JBAR8hHi^r0{8`symeC`6H?UR$iCBA;0SNCds5h@O(c;GNl z?3kdd_LOY6sM0xL2gG4SuBw`zI3!~Z@!zBh~9a<>%_Vp)= zLLi+(iuAf>WU43$L!NXEn`npY7j%#=6&^Fj?0VIr^T%8&{L$*MJBWo*TnM}@AvQd* zX2OU9@Wzg@RU7yBcGKQH;$vLYX`;!^PGJtxY91@kMo57&4m^Qz=}4R!q@5Gv@Euqo zKq;h!$d@F=GI$zcArKm4pKCt?2xn8zYhw@=v=E~nOC7+$f3tBhftIZ5+IRN#lTU5{ zM%GIhC+O;i+T(Fv0KWC@m2Xxu##ZPFQR=Hl27UA;d+?~Dr?ZdQ6LY-j#i94> zTa~BFhG-0Z+jmjhTu(kSY%O+^tE*vhq-fQa+Bo2$&Yf)NY-LVe1IoIzbuJy3%v!($ z>sLV`pR%TXpAD@$;lw3aEZRu~kjJA=WoTC=LYrVcNn2DTP7=I+Pf^$32cD3xMkN-f z98RSULrO_xVz62fD?!e9``2vVIO=-{VBwTmd}7J9V>twXdi$ThA4t!TL)})Bs~VAF zOjpYehUd8-9o<>M;~qUvm<*S&cIZNT0+>lpI~9%DU&wSq|t7Ribt8M5;3^98JLNhUr{!<}}v6 zyqo|1-V;3djKUNgo*B77h7ba$b=|Li`}Dhjf2?F5SD89qMeu?wlNt(i^;G_@$$6qZ zaWrVp(pyX>Olm5O`sI1qom)rlb z`+ryQ%kzd=XAs%3tLkNQIZSWG$7$Le_gvcGS5r0#gAVE*V+i-0kczO5+CmNga@LF4 z(%r`Q9=aXZR3JGXF-SlX$JFGiC^~bhlj8YdS{?@dy&tVP9_Iy^8)cJ8!sNm412cR8 zPV7Fsu$GAh_}VA0XKqswOF-;EXpJQSB1AGebuR_|uj_-&r7I)3SY?R`QKT|z&InGP z?(vO(e-YpL%?3XAvwI*{SJ8Dmrwy&ru`DTgdR5n%U;XqM6|ll2E!+93N)f5Rvu zpK~dfrayBJJTHAoI}pyH1PAngjc{a3COl)tiMQ=2j?KuRRO%rf#7}&LSSXYv5{^kV z4He&%(`uW>dfr2@zNdwj&f&Qku{Bc?El<)hgsKwTj`4?eX=Ot@g@_X7Or6Std=n=% zP2&fT-A&dALK`F1^E~cpEn%Pt3_QGJ-AlK0?EBX9djTo*n_f2ic$}9N>w0RR-QNbP zj5gj8#3`W+NurQeqm{upLljJ8rXTXnPhHN;W{b4}%EefzutwsG5|GCU%l4?m^gxlg z3`VsQP}xI}Mz^C2{5bbv%{yH)$6;`M-rPwv)mPEhR$28npYhiyS-vPQ za;)4?I#(v0qgJt4zqN=zHqYbGq7cr|-Y1Ux(ED(hQ$4Yw?LKh+jUW5(M{c<&aH>gK z2fn71#P~uUL9kH{xcZ(QT;X;&%qi}ol@;c+w&gL{%-!^6PGf*F^{ksM+pcJ zShNsW;nCU+pZwZGJhrBdhDiyZf9vI(bVAc01lhq+$#?E36DF2Nm$xH5P)^e495Wj{ z=1vKa(qV}a!b3PsAS^drej-n8-p{Q|TL@}1#N{-LIQmnO{!&Rn>|E9I)!XVBCIC-s z7@JuAQ0OQbKK7j_E8Tog6j}-*V%eHKXYSisdG>rb+WU&Au~|Zzw68BHmfiC|Q#L|0 z<|@_}es*S1eb)|CdW}j9!WaUrG1eY&t6M1`G)&A^VLXVmM?P@~C5e?pJISQFCW4JF zRW#~notA8Z)gslx2aG3(eUL?nY(fwOxKe_0sc?c7>A9_dC`r}m=%2S&F4c@qX%&`q z1|LK}GdHo8&{*=GPcbo=z$1!FyDy)<;M=0yH|FN$gImU>(l<5jUAyv$O;aio$4R6> z_}Ot~_?RSOZRfsWx7*pZ{|tpBmKKlk4!}nu$YdxdF#?FNI8RVC3561rGa5fm@JliD zufGy!ky3%R6s4i)88SxTyVSbySV9Pabm_gCID77n_Lhmjn4LOC3VqLg+n?`q0iui=NYh?GKwGk?g@UsY%kSW zSid9BXMX$;KltQ}5tUP;hlR76j_!oFeBfua8;>e4Ptiua=Vf#F&-YwLAOzN$eo-|6 z#!?6bpZdECdGgUeu{SQ0&HBjLRODPFg#+cWZp)5(-#a>C?ZQRp^W>`W=M&7HTFcq< z>L`a5^_Mr@y1YoxAlSIGdr@b8^j^gV!x$}@Z8{z%=;|wtubj>?z^=_j>Sk4TuU<9h z)X)C!Gxy$<%jN=%oI@e|c@6^4Nw#*jk&~K8N)l_y zJ4LO|LjPTCWa?zpTPos7Nvs4qipfil>Z+=KPgjXe3_=UaQHYainOZoDc979tnu!^Q z=pUhqg+-SQwpQawN2yf8WHZ<(wApg>XCc)RsxCR?yX06=W2_~i;Nci9F=3=XDu3o?*vwY5ssu(VoBpvX4*VI z@7;_q1pYyCn$}vB5=_n4vaop?tM+YYTlaoq&qE&Lg1NC4?G%xMIJT_VyKN4~BLJ`4 za(qZwd;823EhWZ))edo39Fj<^3lUBtttRJ}`NRh?t;r;EiMW1*s+4GkA45>TBxAT8B<*$XD0mL_%Ucw3A4gW)I3smvdD% zkMIQ*+0EUY`L*HBa>Ls$G2HR~2X8gCR-T+Ymh`EKUFW$q{8I4QV$>ly;> zgS8+fPQbd3ebi)g7;8|*Au>MMlA$Qf)|a1t{yTSfb+CKnv*?FlK~?3lqenq5a^^zM z^H6<7`<{n?G3*ZSKl?gP;MfG%}qN+D-w^VN{JRAEdW+q60FtIj3L=x+j zNvK2180{pn6G$mgBH@iMzm&(eKESSyG7*;dUpNhEiy+57gn!`LuxJFn$`gkIU&Qp5 zLB<}!g0W?k(5WtnNJx_~4`npxo?XK)ZnT`phtt~&n`N8quH(PLz7Xes*XL! zXzKK-{OC`^R^K*(Fj166=6d}H@7r)HP;t-fU~FjV9;;}8OMB_i8%D?GZ8(nTXpd-i z6_1&?GiRRogC~}*eVb?~%u>$b5{o#jWRRGIhFlfv_V4C@pSpwBoO})wL;>HyGd*qm z=<&O0wIOvvV_a(Aw$ny@_Q9JeD?!#Mx-t+HEj#^~`b43HA}NJ*R9Sxb^t}`VMad*- z4_Yg5X^9UZKuHXiudaFkEd<6`q?Q;!J4-g3huGmcL7yN=snnmOcf{8Ro2fR4RYG&>`AkcgQ&L+;NER(Y65GK#-XJo zI>tq4=|BoeDK2sT{8PDU)@iiFJ$!w|UBuQPgdlTJ0d3&9-qg02-#z;TH_cnj>la*0AW%=01u1PJ&+Vwa;nE4K652cJ+*xFC<9giCz1YeUQFggCI}^jJu;Bsk$f6p=QE zqm0FocnKGrIEU)GWfbxI%^oU&Li;^*w3ZroZ6EymDpXfdHGGHD1M;LDaY?$wj7YQ7 ziYTJ_d^O7-+eWE$^iuQ$k8RxryKr)MmM=cF~LdKg}AJjevb!tQ9LK;E0ysx0ikmwp=D~$|K)4XxZnrl@KLgU|6U&M7#G{uCX^;J z23^Q(yRq)*#u*LOwIeyU4`fN70CGT$zsrN4$)onC-ZbZ*GRBDiP!8ijR8tq5IG zk$3c1;Kvc64#;^qK6=KBKxsbv_`R&`*h5x(bP&^*)r1(Fv2+vD@a5%qQE05? zs)iG|@uai(!Rm)m+V58-O4}%E9M=yru^6o}Lg1sAHF0YGjVGNyekZ69Iv&TF(UHIk zvz$HMMy}KQm5>nAnyPI!{}v7osW}sx_Vi88;9WdT7Q!X;=G zlgT}}z;CjuOTa#~AOzWL_CTOM<}95-5J^WOp(=L7 z#?a|Xt3JH=#UEmvuI6{kA7OvrxEQMBJgtygl9jq|+JvJ^YBUroDtn&>T>abCkH5HR zqIqC5-8M{~Y}?+uv#;~_WW8;`EgYpcnZ)r>Vl3KPJ5x%DH3PDdm0Z&3;glpwVlJFA zhfI*+{;lhIa@%^Un;J-ZiquMtE*oUzkV=!W3LyoFF;rJqbITJCaNZTudGW$C`PH+J z(VN5wrI4<&O5sQ#rReuyPkq>G56_k)d_&E36hjAz*g7jr!jKN{? zbm~hfoJGkhzJK$x{Pfn<$hg3ZE^6dGuU|y97a?30>H2+toriNC-~ZiuzWB=(^o22X zze@Q0hhD@*XG}z456s)jL3$+4=13Cw@2@>YXHN-N@S)U)F9o3t@U+E522VBcz_L~z zeta871tiXqB%NHf2)5hW_8W=kQl#;C!*ubSFwf?&`raq|6- zZ+*)x_bz*FpUIw-(Tc20kog3p1{5T5_5RM{)SVIM`|t+qI=*!Ue3PRnM$MXDN6poz z4E1XO9$dER-p6n2e7zTB@R7}vYevt`4uVnJumOa&uiU?YNk*AUKmP&-`94b!R7OO( zc*;U9p0e=2Ke_DIS$*xDZ;Jz;BuQDyVHox+y!8**^}nn$e$f8{vbX_V-{bIif}nt= zoR`p1dhDv1Cw(~3dR)X(lGrf0s*cIy(3)u}_5|IfZmfVBr&i5qm@wqF#n>ESd~gsH zu(+ex_u+4>x__~fVumNd2%l^$kb#Gja>ACr&VQ19(5^dP89DovIg_U?1&+|6bV-68 zoTVrad8a-PU#*c4#tG*%OvgCO?VDB+WHNZM#cG8q$Fz$GBLy8%nXK{8rp0EDw8O}Xp7MCn&Lh5vk$(Yn^q0fZ; z@Aq$^w{9M)&`x{L1a7|b8O~cY38iCf0_Y)Lb}~eJJ|=6Cx&|Zqz%^o|!zaNeWrUJg z+K7}R=jT$5(^!M`F)E96A(pgMWG%$~U$hj03f%C(rJsjX%4&UN5;viFQ2s#Otq-jK zQERDmd9J>R07qg&iVl>i!p3R&TkAZYu~bV*hwq)RbY1)Ztox6jU;mbuUHN8UGecw| z^>scyy+bQ|<+I+_zOI<+8be1%H2dDiN6)s;WX4p2E{a+J$u)IoJ$=Ntp8eJKx`8y@7FKHM5`ydkYa zTIlWQEL|{V-e+=Nu(aZZ=`iT+?&JEoi^t_yPwn5{uw~;)5@%VxV@uatcl_U=+f@fS zK6&+eUO*dyn?iV+S8lxYV#>kSy39Qq?;k?RN~3K+#6bu4*80mhGiJd?eYjrB_*kz~iaC zTlmGZkFlrNMQ>E5N~M*{oD67*d)V63&bjr|Xs)VeQ*Q?)m!#TA$B2_9MC!gbP#t={ zp?&}Pf4Kk{Y+{T-_!4LA5hY+LU4L)ZVGWeaF_0kvv`BECq*FQ?MMT+d#w3ECt`f*z zELnt7C<|63C=Ju5%%XFDkz7(mTThwV#>qID00~kCM2W%IM}7fu;^E^^(qT$5o=8A; zlUPk0_ThP13|VYaLTZU}9x95^u1pw*n79@p4MsQ&2AibWw$>VJDtjshq}+nQk20Af zxdPQSN6e1S-LX6PVP9Qvw)FFuq)d(kn}AeVBApZt*^TB%!P#^MG$`S`!#IbK4f{XH;xU7jp!|zx^piX{Rr+;+s34V6hazk;wU;k zH~T2CYe$*-h7oi3JFh+IjK8~M(;C0GxA$d22#hgEr4Hzd!@&JS`a-jZX2#DqA{_f% zk$0SQ!5c4Gxabc9KOc{}+|JhFXJsqJzV7w~%B7=NwSI2M8}dJf4!*2t-SHpW!tQrh z6$%&umW05j`q>tTCqPJvaTenej8d4$kWVBsmpS8)%O3pdP3K?!KH%Ylk1L%+9r+$l zq?Eg?wNvB~8u!Nr8Ko&DNy-I~lF(Vo9^^xV3KT&IiRbZ)^^Xxs2lDTc zvQnV6rl%MaONVv>iKH>3c;y+>xcQ0gC{@FGiwx(TJ{2&S#3D76oFOX|8Eg35zh2JA zzWylN_7u7B+<paxNxo9Jy*RHk;~G3r%0i&{wnwzXUc@k;kPYAu;vjYlH5F=0nSAjSY>5 zZ$4pTOV9U`eD2(=a|oAasS%pg^CAWd0*Mlm0eyB~Wm1-;2H(XLeSg|#f4bu5zy9=j zXK-MvLvi^96F9AFNa2WWOTV;>pSSGWvu|U$A|agYLa!`F=hS_(@qs z);RDqL1ZbZX#acXo&Sb&X3YP~c%Jirmfk#`hod7Zor}_xT$v?JlLqa{POTr3_3X9u zb-j95x$o^c6%+!gD4G~41fu`F=OmZ`2^FEzo@bouXd7uEwzypOjGsNa^cx>O`|6vj zg8Tuu6=w{$Zau=%HgvdhUUZaaK zWltayi_<>7waB7F35k)Cq6twM#~i!ySNm?E=hZ6oAsZx}+X(_s`tBmIaR;0q}p6=yi|9A;k zuiQyrS#i-B6KKeUfJF-rTZX)}#E~P^9`h$je)6d+DJ7O_FB~GI3y{IRw%sG*o9cPi%TF;5jF;ht;rubMLB8v~`y+$XC@9o6@M|+%h(xrM!31NB{S( zufFky#qVK|PfP-fPa4v_r>#Es;JV1T6Rn7=H*M)Vkx>TV{MdTHeL}cYsmTs1`7%7l zsU$j5bajq858V2?Q!e=D|G4)zs<+C&zA;jhA`DqSLl`GSSUk^5`ytN*23kx>VsKJm zGm6@dGJCyv^;>73^S)DN&%0+lR{&4%+|16lv048ej##+HY)}oc;l!CU1~v4ZT-V6N z`r0FY{=hR&E%?*c6+aSnRmceXibZrbs7M@RVDXZ+>ja+Xo$~8vAN%m@PCNhY9K@17 zvvC?9ec-o;?3l@fg{GE-|wRBHYa8$)lYSblKp^Y4qGPndCh z*7vf-?Ag-p;Y5NmgM=Yr5hx@A9SHV!MPNgW^gw1%#?TPJRcAI3lflJ3I3%&i^Q$}7 z@W=Z$GP|jo_rLXA>Iz`V;5&m7mZ%sIWGj0YyI3GZ$jk{I2m@AOg~gZ9*VB&n>M%)+ zFh13uqp1*r^bvkSK@AYe3<85fv#Yg(Vqz#H8tYZq*btH=DskI=Pjx={1HFA6LtT_sKyS z(ed;;wWYmRo#Nk(p~#%Mqx$ggSu-H+bJ(h35gWJ3^~j zh?F8O05o*=C4k0}2IlnN0Teig=lfWE{&N2|KJlH0iA61cT(*NyM1215FUP5b$cAX` zlj;Pxiss^kXYt5ku{bNRPGWEv6Ju2llt#G_qq9hn!J$YHNabTqf~OT0i6j9BTXuGk z2!$^_q6+&O&VfrpCe+s*A_?^9Gl#ZkfBoQ|?`MRoMnT}IG1V1&WkN32xLQA0y`|#@ zDg8kMa8EI2a`WHZq<|@}z1u?HF|*xK}!xI`x=Q zjv*bt_)D?R5QddAq7O%HCi~m>&Aepe-RoEV*Sfy8^F=;e?VD7C*FKN_u+BNE6G@jT z?VDde@w3}|+dm(8K8!Q-)RtmAB-5+MRrD-yN;Wv>$OzT)^p4F(2!s?eS$g*lniwyB zwzu_NHQ53tib2V=q*|fD{6OY=@W1CWx$4K-w!dm(P2C{@_`I1X9kTD*&b_N2Z`*Z~ zbq>G6YTH<#WI{$tHuiOJ$NCjqb;3eEa>iAB=>A{hmn=aLPz)g3um5eWB{B(~gER6? zTz~4>bVnt=^vJD9A<!!mrXCkfW*r3Mrw}y~WP;MFC~8IP zbl~Xlo`O*6s?GHi{CZ1<_KujE290z{nia|fZ3DD$I3saN^6(01u|Y|3 zKo5E#!*If-CJAsrtRDJh1KokGjyQ)q=-&piU;4>j)>^Eyn;$Ff+w3L9umT1$K@j$3&@hBgPUaU0S;Ch<+;DaniV`wTu+{(_ejT_^pl&dO{JAiSmeC z5#mFW6KhiPOQZ~5Bnge-$&LHDqJ9F2@bE~mcvxW|iIK{~I5_{@S^VnJRdm-j(7J9n z*IY9lH86Z)5~R{3Mxay#7#s?m0->=^AcaFTv1MDfffIJb%F^w}FH;j@IJs7_Jfzz+}?aJ;w zZ@hcQ+8bTjoZpbIrYDN(wde~X2{|K);)pg@r&exlz2oSYH#Yp{iTi2o={gpNUg8@`APx1^HCv~7 zM>6`AakO_IdG38l=_S>PN}ZsT0%H+cRsL8?k!G%f10`f9ELrr#mX5ZwfJX*4-L!Wn z?Y+;9@0a3mYnv!@f-TTz;~^(4M+0%-f9c}Q;_$6cuY_8oh#Cug{O;fJ&lg|Cl8H0; z`Gs#{WoaJ|?Al0YdnZZ>PMb2Da~fyRoU5g*;5(}x;E!8ZQkSd2g%L(N5}o$2NrE+_>#%PZ*^?21l8l?IbV0_;fzro#&2wcQO6U9PfP9N%$rLor3&AQdvaeBV&GMRn_u_P_=I5%of5oZ&W6j&=sgcm%ydgELM3BUkfe`d&-YV%pIT|}-r zN-Xz2^3+5|8Gv7N`TWuB2GA>n!S;XHuYS={6~hL_tq&ZNtZGCUB_sL>ObHlNaX zWGiLOjxB87d1Mu{wbU_{AaexCbSw}S5?}dGZ&`mx0IsVlFsw zG;%QpNFh*C5Saw$YdT6rKK7Si@$ys7<-!>!vABK)=he={dNI<16`HQF#4~%h@bk5g zb6@Wc8vPumuZ+m(V@eXV5_Dqmi-twbGwwa1aD04P^yKDa;~!fAwl@2v6`eYGk+dq! zWDmlCLKc9O3Z*O$tZt(iNiv=Tp-`zt3h9ky5g0rKZ@g{>uf2X2#i&HJ?<4xnC9M=F z608jP@-0vBgWo?+ZS@qSl0c_lT{!lT0G;NN}wSIgM8 z`jA-Wd;Rut>1QXYaLjm6SZfhdV}-yfk3IYLA2IJVfO8kr4tboGp0Kr)Br|ocz-4Ej zRD1TRM|X1?3hk|17r|S>}o<-AVbL#X%p07Rku3Yxb&LDnA-uEew(bjP| zNKaEPm&oR_l%oiIMcE2|uy# zI^1$5^Mu1!a5Qx!vPb~$s0xDEajXe8(RVk@iCnKll?XHP8CBj-m|GVD1q*nLtlBts7rg} zfnWUK&Q+flerF>t!+=-p0IH)v3duNHaa#AB6jvt_TIr1!<4U zi*e~xG0K5W;4447mtFh2s4ir&7@Uw8bbqX}2oi)f2nj*X<1^pApUX~t36mz}2~C** zA72PuY}39@KQ9|eKe-EVsZ1O)HDRz}!XKADn~Gng^BEjrg4_>{CK4qQlf^S#G)$Oz z|E)J4+F$aEl2axf@-pstaAOy>GJwP)gk~%>Xo~?8U_=kT)y$vOJmekv*b_thH<(Vd zJ#-f3JJxM#UFeFVt3=*-+1yd>2b6?O$H6QSVWf`zo9Gx}tc>UikN|s?RD1W9y4N)Z z`JR$V(23<^m%Qqlx8L&3%{K10lyd^l6I5rih(Y90pHFOT-$!x`b$r{yz86VjiIW7+ z^NNu>^0}QjY09Ac?%AF6mP!#8i%=?+l-24vgM?8)B2h`g{7F-vIsA81Cr&>6zwh|V z-gP@-W2POe3c&!Bl$azzYYom};us;pWHlvg2!tkM1bsP&K%;O3u|cCKlcef}i6g?I z_1Kb!;h=>kibEQ6RX@FG{;9`>fCZqJtvo({!2Rf%H>t3CeP{Q@0kVH)wO<+LAo_j! z4@*Oh&#ez^=9-J=pn#YJDLmxBJ5_)_SWZ$1z(cr{SYqkniH#+G{D&1(H&0B1B(gtQ zJ^0J+Cr~*E1oT+=)-CJ#*EcW1^F5rEDJfup7h_z12Col1RMxqE0Syqc%+|eSp4r+< z#@DF>ND`s6e2!*%5Xw=6@En<3HRY~uQ?}unpFMa;0?a!uoB$j`2HA1j$|p@-Hdgt- zqiihFS{TG)u@Xor5KiKJpK8OZB@3qxIj{MN-w&;wUxnIKG!9Rc*|@26V*AdHA-6pm zUN!mv9AShLQVUBT<+68tR5iv4V`W4S2kR`^OqRR1t)^t6j3+d$BIcR(&&F3zoX=hD zM|Z(`zR?$!d8TdD?TLy|vZltf>4JJjP2-^RaEoWmOGk?i!}|UE?%W)Y zI4mX2Ax!N=ss0+E=ueZ<{T#AJN9n> z-Q%|h7dPkovss%Q;oLHSAm70gt9-V$M$DO@(G@7gyMZb0a!9+)@UidQPwj*SXt_US zKMw$N(aND@!r{ZBQb=N95JsU)!rd!diJ~&OTs6+6 zbC^SFWMl;yo2R$fMo-!8|J#eE9ijZbXyLTOf3$CM)v9Na>XfiwyIRTsV@GGPrL9Lu z4@p$Zne)|(yB}LSbYgzlgI4*BgMBL7*_?$ zK~XYs4v`W;XIC{2+KO4fZ8OmzJ=Q6H?vbb6ZtA=oaU9`Gg)7zL&9Tl;J>P)cb z@hxkQNc*4dI#O)T&t{+L?r5dzuXGCFSU}-G$@OPWIpK&!%<~DoqvN;;fE>W37ta3e zukYOY5o1KN>@SfFwKDXqq|*p~bH_S9^!ii#+0cXI;2>^@D0z~9`_D&Nx2HrVyAKg( zD{^{KHlf2P3b`B~{QCXO{J}{tLl`g0^KslZ;yI zD7Fqi?^D{>#kCio`}Gs&45@RAiH~}cXEk0&-dA;PjtSaVi-8dv{J#IYkFsiW>qvJ4 zaGucpa~z7k-qK%%C-BiQUX192(OE9?;bngYo_qeJluinPvlh?uEWlK+j>~2)m{;FC{Dx!1mfalz#^GT5g6if$=bU0MU6c=k`<{Mi*KK7XuJ)BaKn=0h zjhY}CM`bRYz3>aCPCHUWX>wsuuH>&i_UIq}4#}ybJLCU*D2HVhHBbBQ+P1yVgH6TI z(6gtFN}ql_vFpVPo4$Pe+LlkN{(kCnL;r`u59|w8pDA?O zxTDVK>YCf{dwL0@2*54vr6CqN!$b6|&a`aapfX9;&9hrpRZ+d#DUke;)t;ywb z2Tr;uH;3A)D(>HO{DQEvmU^AxlEc)WjsY6}wCh=48Ss67P2%jJl^{_zsKHBGeK*ct z^tqor``ATV>%7t$p>?_tALRwrW%7S~@syK(Pw$b{tz9jHIzV+_K4IS19&g|Ajlq8T z|3^eFS$RprtY6!X-s5^5`j59gdt5I7AXgXM;`-uG$MpgoD}*j#T^?~5L%5q>vR1LD zJLb#3Se?za7W^s_7gw|ZHP%v2 ziXb&vPZIg{y!Z2e;lr;#g;!pFBA5`Ne5?Z@lJt#bQ#U6m%9P3R>$@JqXq#HYNy)$k zr(Ve7z_`@_Wb7~w7R;{yZ9$u7_wU$x#C6S@IE|T;jvVPZ{bcizkA3Z~lWo14>2)eX z-=$@66jD2qqzpNFBypOs}EnUSNDr{*x@7z<~0SsBk-nFZpv!@?@ zA+xsbxu6$WjVRXk!Vn=xhd2j=?&lR!Au+B@rlD;BBARZ&hVlX*;i>j%^d z9YRP{;;>qSl}HDk)|8U;UJ~Qby-lPd6GN+v!2@Gsw5aUSJv^sTLeNP>jq$NkppD_; zNppVWTYFsOCl7``|D5B>f*!z{C!gB(yDepPlgvc8r~spfSZVPFj9<*D`Lp zU?!)`&mo1y8UxZJwi3@2=`I`YeR4Nn{lzLa?F-4~vM2=BfvYh1LVuM=Dj;>#@rdaw zI{y7z&+y2zCEj@54CYVI;L89I7$+%HD(Ir^pR!AI#~JA7ft@xU)hqIVdDO3SH0@D2 zgsheJ2Pf55!QPilIq6%swyaxN7i4qAB*a-aC~>SJh*azk2UbCE5@F;)zZ}3IuZD`k zvvp`I5K^FH&_<2g7c{YkYNd%a_*T$q!<{oSHMf>4sDK`8=*$a49XI*Xr(W^KSN;91 zXUA2gDP9~PDId|{Rk1~QK0;}Fdvbj4M=SWwzg~>*#aLkpi%^aXe|dN}Kl{TlRWXZId;`=Kye!)#&ump4vOE=7OUB&>tc*OL%b zXw_IUG5e!#KKb~cDn9-|)-#~YHW+5*>zS3W=TqCBzhvTjci!^6oeP-f1Xv-M+c4>< z<-%R+#NC%nnf-~Y=Pv%z(XK({hUNyGIeqSTAL-uquBa59VWlL{0f`yq_?8r@;DQq* zS|Xh#NsbJyauDYA;a#y*W%JMsKW4M} zHP1`^WEi}V`eA)%%&Y(U{Tn+zsj_VdlLdL0I+jRCOjdZ6}mlmJ}4&hQk5rw3!tBVsR=Wng^ zc;9LBCvT}lt>S~9xxJE4tf#ZH$kfRVbawYmc;JbhmF#l_Mje2iN#(&%luCd7J>UWC z+8I*cICKC`l;H99U94Tv!H%Ahn;#tP7AEDNT?s)a`>jIh4O z1s*0zut~H>7J1^TrWqfPgs~-Jw*3ZpJqWB0Gx=N8c zX*uvD9)fFToi-?`Obs#yImqPY5$|MW!3ala42uerPy^}qDBzr<*IAk}S$d=5npZ8k z;zOf4&@q7Cu=Uuul8go~y>{L=H+;A2ijJi7;=$T|MnyQ8Lqvv*=dd}!GkdyNxuY8o zAA`fsRpYr3DH5D@ltWPcJ{zoSlsTy=%;Ot%s zCQn)Ts3WU*hyH!W5QgFYE0)apbX{$J(3GOiFAW)d0h#q<`{v7Q`Tjj+ni>krPM=qQ zMa$0eOFAR>_DwB)XC%%Rq)tWQJtVmxgV7R*xNt%JKfLJ`7kurT-}_BPvrG5fx0#C; zA9Vz204~jRx>>RZrL;rBOB#x37M$KoO@Xot_IOxxBTfZCx zbj4-5;!%HYK;`qQOQy|cZ&xSVJ4eMDHt;+$MdEg_`fY{H#mv{lz19-Dn%Cuwg}tV6Uao zK5fDg3s6=d9mE*CQF1_x6ig@y_Nije%jTc)$rC3{KfcVXgP`RxR!12j_Ai*$^nph< z>xWCSOJ|YGF|FQShadH&f`|wj;ZR0aLvo6_eeB!5dHeMk0iZyq zMu!Vcjs!U8Fb#k+!ZI_n7uy}Sr!~F(7sH^P8gT{y*=Z7h9g}Vdz}x-%WxSo8-Xxtq zKC|z)^WsyPLl;gQFktr0->m&_u)cP9NH)CL4#VC5i^cSbJ8F;iH|3IG9Hh=#!bh@rv)?tIti(#K_Dd zEZx%S#(M{vwK$r!4oiaq0A$sMLwgLm?WteCoav!XFSCo3hvT4%49Fs&8Q48{kpK{A zGJlx}0utPW$wjnKzzu+!Mw0i^&O$8)0|_Gzu5q*`qG%vGtfPCL1^_EIwZDt#5#Z>xr{t_v=m1u=9m)Q3?wpzKWox&M!d@6)x|f2wNnsrVN+}p?&jI$oivv-td^-r) z`(&95`;A8^9z%P@7&2`x99%RIef`;xb7afP+!amrF!y6o0}D{08-O5#id6F{)^e}k zSun@SY10%gz-G6>Zt9y#>Z-y6^9%NA)l#Us(M|50j{yL1qGo3A5&b^fwswIVq{xs& z5GugbbjYFvgLVEHQ%+#h7`#k`!A)oifub?!@}9f&*Vin?TPx?HL1a(}g~$Y`9N<)d zVVZzpLNOSQ?mY+>jGP9CAR;DEXkf`8*^avA1U#;xDH4W6MTBBeNOrkhaWBCpLysn4 zqaq+k2#Y3!s@BCv4?FxR50?>*{-KMwP9fUFpuYGZiJ?YE8> z(NTqn-SF9G>#$*iHFx8n?#`vZZjMhDiG;-)>&F6kCDk$8>=q`Mc0eP7xjn{i82`6i z&<7YhKC8VUF1l@Y+&cVlyt(veWP1XbDrF(Y3?y1xk>+)Q=>}ZsNgV=)uAl0fL zKh%5Zq6P<}fQ`zbp6-k;8{~U@7@pm&%k%!TdTuXAa{{JBF~pPc{vcNt;?`cf{Q=&` zl~I34X5ya7{Hy{c0cNxju!G2$gQ2>>KhSEqg26)rK83V-jNm5h%1rU3W zL}{!Q&CxJgV=?G3Awqydm5}T4Bi-%A;G6;|R0IqTl@f45pfeK^6#>SfnxES49;CaO(1MW^-GQ%dfgF|bGoE=`fNHnNz1j2vrg)_ z{l{7F{q$`(+jKdbP2T6*Ic1{(SXzl^cwERIZ8;wI#V=b|T}7FMwcE5oFWfvaWmd)d zvM@gRIdulLD8ksTEv{+W|EYCcM`~*O0|KGjb3o_rP5W>nj)%T_7a4(c>{&rKbr>SS z>V~}|@a-kMQk$H5!0E0Slh<_$dugx|3o1HHUf6;9cxVb|98KXCEDuFCEw4>dK2GS? zf3FA21nU{NRFcrgpZ%g_v-kL6>*^b2QG~z%T?E>r+i}j3OyJ|7oFL9ke7p2F^q6!Q z>`Vkip*SB0-+!V180B% z6K^d38Nbz+!$BqJf(emQv{M%YQX8p_y6uS81*3-)4Y*a6l$C$6a4Uen77KcJY&&Vj zh=1Js)^A_hsMjlt2UeW>&qAvpVX)o&Xv&1#*IYgeD-1yb(0QDvD^x`UJoM6zJj!6e zCx37&@y9)-TPKQ3gpuBqByyKNm9 zV{nM_q8wM(s(}e&Z5JEdv?Nca3gU*o^wgnKc96TIy)2%RUz5*RW=!aXkS$-E|(?S=fT}B=^Q9%J{l*Gk*N~SsayJ44=(~DE17IiwrO%3Z@yb z2{KH9fEXqW0zgRabO|_Mn2uM^|>a`)z%3+8calwSr zjtPq~9f~NUrM3a*51Df2cgmpVOvkS`af z7FkM>DrTU8xWJKT(ADM5b-ToIm?Jfox5habkgR@|0!r(vkNv8A?InsTLT3gT7^oEc(W@Op2NK^#ZVsJPa5-~d%{VSwXTZ1#BG|p$+FZUivk3ZbSmiHvp%qAk%C8dfOq12`$ET$c7DOBAoILSTWlb zxbF%HjWvNO6ei-5DoY^yvnqQV(iG=@k^XBBAu}23AcR<+*(nk5xBlbsTUm$IEB6Tz z%CWAtQ$eczhVpRZ0Evo->j~sg+n!~Hb_0vXv7n@D#&T;sdbB{P%j6uxiux{y?N+gD zZKx54_Z@O24-N$qdVFu*t~czf%jCmqz56OKm`8H(fSU^L?OOZLBM zlAuPp0Wr=YC?X;-q3%YvH^JJ{fN3&LO9)`>eQb4ijsX`4I7x+MBfvDJ#&?OkO z1;YQ#EdVVDLSlBPnmsgOsPSZ|QQY+7YVFa0-|uybp@Q>o{PFFhrVc)0bngHHd3Fe9 z$Apt+NXT|_)VtkeQJ1A5L3gWPt3jT;d{=QmzF{IJA>$fWWwNWM3KvEBN0b((bb7ylhCxm;j|UNd9h zsE;~2QR57e*7n}l-_g_%1h?P?)CmJ40v6YoU~$=&e&x}oN75YboH#L&&s{G7xXr8D zncMAZ+|pEgj*BY(xLpD_Ot_c`eK&90_Ik#IC#$y+aG32${aM5wcVH%K15-iRVR+js z-zdj8S`|Pf6f$F|H9`wUdb4lbR8#S%mKn4P5%$!)V~jIsAq^W#8WB%KQIwqlZ$QSf zmE{;dC?5hpFy1y*5r2K;)?*KT{`oIoDh=tAxzY>=ys${v{cFH3fwaUMPdcRcH3>2D zDvK%@)kpBJt!%!*!KFZiMy9OU+W6w=-hsyL{#P5$0MNO=tqp^V{pem`jh*cCscVg`v8jq0!Pc_i2q!T=wbZZ;rb&^X z+cgt)cQ`ghB6Z;qJef{ZRJWWod|>7RkH@+Zw#zbDA|-D*0DSS~vTglTyUh`%@`QK4 zSa|m(=Z?JzfVCBqMQoQ7Jpd2@WVA_9TH0d!B|Fko=Ybf@F1TvONx104KcKJ=Lw*Kz z!w^_-YL9^(mWr7! z2>=DvEdGSg>6^wh4K7jm_8&tJy%|8{p(S6#>2O?kjDOfKvo|h(NEAqK$|*Dv*ge`M zBy;=Pj-=2W->2tr*GFu-3L9tq_tLWM)K=vZg~MP7@;I^;$A`xanta=;vdtDkd4CP; z_4e_%)fH%LsfTTp4fb?5<}6%`Aw#n8>9@-r&mciC5Le`pwzD?$PR$=V<$Oh&j~?c8wN4FfL@ z$nsCWtlj{ZT?L`?Bav8i%*K%OSZ`cYe=R9JZ}19v+4Q{r&%i>y(Y96v0s%4{yBcAE zFz9*$HB}t{esxJ#-NgIk=dLQLs~99o9CPPa9_n}7Eg9hXs~b?sEwi$l2_c}+P*U04 z!_H!mWb34pyxa^-nVfp@kkyruZ#ONh9^Gozir@blJngW_x$mX>a~4=_pYC@+Fia#8 zDJ}Nys%(nptSS$lFQqeK_QKk$swzINlkM^Y$4(!EZfPPU*S_bq#{t;)J}z2(3k${ zrDKoS^6!PSZi`DeR@ER8N_KdGId;lFCj?v&KnMZV_MZ#dBpi$+31G>3HKeV=dJ?Sd zXVWy%NX<~L;CSwW5!3G9+ETxFYCT=RFb!y?0d8^#gkfuG3EtbZ2$zjM9GjypsA;K# z&*g$!P>}ERAUnreo$3SXzg@6qBNnZwhudjjVDBE7G`bK*Y@g#`!JgU9lMkEJ@8E}C z{PlqtR|a_$5oX*3l|{7Z^{^2q1VSLo5_HXg$=P1(2wMRMKqV1oH~~o(0b)Rgg0K-r zlsF*9<=XN6=qGCShWmkmJ0vDgI&AFrA5XpWg>T>9ST7xyqY%72XTzgm7POss#NbD) zT)(VEfo75&?&zinL2;oIrqPItPAs%~8;@P{O!LuB4%f>1+F{R~Im3nBUd;9ojK)!7 zeKMH$!UxOYaOPm;w&184lg1C}Gr+stYGVKhYAx`}sac$(#|9o+wZ%QLu30!lceiBx z^VP*qK75{(lAv&g8>nq!&`j$KhQr6mSDBK>zP>bey4^{zv9jTs0lm^?0C%T!16`mo zD#Pa6_tdoA;NU#DsI_8#NBau*_w_r)xdkJE^dSfG67qS!zKJ;3U=wNh=I`I`vcW9} zo!I3$HSy2{MgXQ8@TIwa8W2b=LCZ%)goBm^aCU~{g%v;E+YoIzSrjGkNa%;D-FjUI zV08!QufDYRgmX9O!5_cdvg#s16o*ig!<59N!l02PT^WplfdC=}_9MrE7#t!YU=oGF zOmNO%7evG;Am}DkP&5(^UX6Wv@z_HjSXQ!OF%Ez`w5(Y}B-baqCmx;;u8Np{BkCgZu7vc3`5YoB!)6eY~YjT)E-5Wwl4j zKH1OE3XhxzW=6mX5Z817CS+N(O6=WhFvA3722c~+0HQEK1hBb&#J%y>Y8_Ijja z=c9Jsi4!k>{H0&gYmD$jr^6+GJg@5dnr3N9|L*o5d-v&$KHWRNek)`&>Ph2J+7QF0 zvS6yWutb8<$|1X`&E50!Im-*NlVVm!a5-hnJj`;5-+8ZmXl`l+dN~cT$Lq7!K5(gL zz+r`jK8T|A&_#VvM<)uIdq8sK#LhT;_&ry?ykK%Kmnhb@*appCTz0{bAsH_?ZPuy@ z0e~+}f|x=Y6f@GJ$N9-kPrN>FNGO~?z~S@;ep=poMrz`z z@TfM}B?U2UpS<0EsU4An_AorJ7d(kSmW#pDY*@N9B@SPz=)*YgV-mnGJ8GO#*UaRw z1(A>?wI!1bDX9YGB;xY7R?SO!U?=yswsvgQqKIp8)P-BICRlU%a-;FeLeYUBwDPH* zZnw&WF72X=NWkTN_Uz&b-z})#eCnc5&Dk!9-D%8(W}^UOP#J~H33SZ_Z^uQvw-5yi z6C9dpfP%omDGV-v=sKd*j2c>^tWb9T>*ygP-_7v(!{}0_+Zq}GX+W00TAQ)4sS5vH z{4E?F5B}bJ0z&af@?Dbl|1q1dUe$uEm3iT-P0(G+y(;#AQYk~KuaV*Ma%iBDMMg@O|>IzNC+7W+!VmgcA5B0k2`;98>mXcwf znn(-mvIJFh;DMh$MlZ>Op8iaDy?*q~%0pSG5fT+a1pxx3kU-kX4(+CW|S$=Bm z+&&(~iRPB(t!K_S=-X7sMm6ite4Q3TQzC-pwdJQT4OgGmm$?u`JaI^Nj|UDLJZk>- z^R|EYCytziU)vWE**q|#;BJ><`+RkE*||}QGZjN{Q&EHg22EhlsQ{a{|Je8u%0L*0 z0~ACQ5fd0#I1VP_*TFXbhb4O5V;+mrpq*YvPk@;wW^Y=KcegCS9m9^qvg$4S;SQ|f zFF_&xW${+5+8n{8QGN{X*R_mWJD59tMB29L_8W5D_ull#xS z_?~wb8FC4zW}f357Y{Py2csKHSnOo|Gml(#v13e|W^m{CWL)IxHK$7-$7h%mU`OKWp(L1*rvfVxeGW_Txd7)AT zZ!iBDE|(M8X?}FKrJ*#`IKUK>rRF-r!MRfU9P95C=mL%3<07iZNuA3e@ZEC(9ILT#Qc;$@4>6%O*aY} z`q$DJ2D;N9J$S&-7gOz|4a@SKzN?QLIq^TQES-B}MX+&1g7AS}QH4Ls(Xt=+II7N* zhLqpx}F>&L$M_u+p-DjJlW zp|q^)f(kn$-!ClvNt57lF#No_YI=@~U2nB*cDe(i+_gJ5AHKx1kDPPL3DD;-4eb)zBJ*K>?4`fqK?D_>(2S+{ipO#KGWaN{8P|FK_Cs^uIXh%BqS>%cHHA z$%G=#^sW6ea=**E5XT#5L+2f?xROQ4#oA<$@w2UXPZ(6o`jwfxSLzK_GV%YTjS60j!o8j{wwzai> zIM*>q5GV*iQmdJBh@fo*sDTV=jBmq{#F9xF zJ?6C9jId2e>3!b?2`!G+SQziE{RM~S^@IKw5OMm;7~q}p-GWlAscgomK7I_yb3mji z%d>rUl_bp7QnF%}0j>=Qtyw+a)S01b_?zFb)D40;K?9NYGXYf&c=N zEPDk&5gGxL!qg;iLxNyZB;Ym#BNSJJ#>j}inXeyp=-7`J&RsIEMc8+j2mp-f-}9rt zjc+RWa(>-If~{2|QT_OT-2CfXV@CT<%kVn15hJXv)6!EDfNal6)sg5CZmK#yUsQ4Vu+e?KLyD79YpVjg#rQF`19^5J zFUL1qCyBp3{mIf70v?C6uHG11)eyU@KX4iLb9&O=B4%iZJiYpde`osAigm7mB@&Cz z7Oj>FJ%PV3o&1`5_~Y7D+=@>81^fO0CDR|32uDWbMCBU~mSLnJ^fGVH%#N7tDIy z?z9!FPFc5$>a&yWnRjg4zoISM0BjqVQSe@OmzQR`GA3@QEbCnvY&fKzX_Ga|6)9@U zj1VGF!6t|TKq&+cFq46s42+pkCV+7X3A>I&j%0tWdv4z9iQW7BLK!P(hQVK1yLg`l z*&Geyhj~9^Siin#)&Dw`kbu9a0p1zYhGe5CK+zoED;8BNfam)b`2L%hofgRQ+tce> zwPU{hZNuTgCR=7A&WjSP0fNndplFb2){eZ&?c)79iIL2 zoS*po6OWwGSW#OW!U2#vE6PoKdSI{0zQ3#&&rg#Sx*^hZR8f<9ZHCuzztujxJ{vsF zlvJEbz4C9H3Orh4%6 z#>TTJZ*F>T#Mt!tHpTjPZD>JMt+&n!l>nSHKJVU3o?UuG@BDOZYY9zz^@I5jUvTos zE7JmY%l!Zxl$tP%l-TtKfOj0GKCLMfJJ(|mU}4F&b6iW+#({-}H>T3j0m6CTm2J3M zb-0V`i3Vp_TYSlw!%ovQZI8g9C{Wmy1IMfQlhA8zZ=e$Ct?L{Ub$oWMo?!6_-b3`)=0GZ}X`R7ILm5o$(dQ$6NZZg||I z+6K1B6w&6U6@~8n{mQ&=2PS|y0Onjd`I!H%tSPlGFWKN&XKS_HFnqey5{(qZ^n}ge zOrjvVEK0glwS~VbTT@*bY&3?ZHzLM^QrVb9rLUG7)> z=$5CkGgk|9Zw+0&!f4;nbQa^mP-n=ZWfqmZfq`Pm0vYyg1faY+~VaL4Gj zR`qQ9zU@{XMx0GSSTFa?%eC)uiZ+_WQ-&X{%zBV!GU;~y7 zaBE!%RIo-*Rul;%24+6{#gChhqjAr0CUfr{k1u)qjeZjjvSr#ztzJ`<1>_gG0NwgK zo1gDoa6x6_-dXcXZc&_0an^6O=bm^(!pXxxP+Q0 zsn>ShWr~!-E_Z5tMF4pKG5|OML;=(S`-`i3K%l&{;@1atNt)_tjzMuKZ_n&C{1KGx+Ri@mVnrrV!P;!#2bF_wAOKuo4 z?UDk?-2?yy08kTYcgMiv`%O_zM^fj#1po@&0R*YCKB^_!^qL72QHINAhh5tLi@3^Y z3tDC1tgoJjL@9jOd$;w0#{Yx?-Wm0E)fm#(k65@7BZd_2OJ&>$fGusuAC3!7p3>pi zeObV?te%*5NKXK``1C7Z?%Sjb6I9jV`rzk^JEl#^{gDb}ITZyck^o5*+to=0fb?`b z>V4LCl&&EEmh-xQD1>13wx&@pzBRw=Mmyow3y!jUZjKvG??2q@;FGR?Wt}3sbMzjz zZcn|m{En+nIpjQ~SoGNEO({2$PaBhe+s{i&Pc*eyA5XyLdiJB`cin#K*ke<@E&w<( z)2y<jZ-cH~a{Wgm;$Hs{l_>U?zF2)_ZeH3pkK6XCBvMGC070}CdLbRvaJ2^U zgEb4T-Ii$mr%h2I=w`yFIDQ+^t=D0hE-xB_!Cg)k2L$A^y@!={p3a#KgpCR zn2TdeydKMzHPmDh>FY=$_CAt3rTtP-L6r8r#9T>zHT`kx+N*0~kz*Z-3T`B#W3!6x z5Coyim1{$|6-%~l?(!PJMC5OVBsimS4Tlx<`}FmaMV3~Kg`NN=6<8KH5w|qgp0hSw ze|5I#LR{1;uIoAFlnjSwG4>-v`LBpLGqAX(1n;k!pVVde3zi;i5C3xpcxMb9(;b)J z`V;cAZ0KE(iu>??3g-1^k2?3tN9KRy$Rgcc3E6Y?!@oU0Ak%emL7sQ%&|*J&^~?k9 zBtKORP`veFmugts(NNjaiazd4G{)l@(?<13X|Qz-b;t;$M9gVDWO&Z~Uo2^OGMh*6 z<7Vk($EQF2Jb7TRmxqqD&NkKr1&CUY2lfuwaph5k|G4X&+Bf~4h<{DFH2v-QtIs*} z;9-^&z;=cni9&Lw?3HP~rj;jlY<-1E}PXHGn*IWeGjU{>GmUS#B2 z3m*_;uT+r$!2k57U+=7LtiQnROG6EfV=BqKyMLd)PmbzQ3>MmTN7RYinF5&kQ`MHM z8jSc5#i2S}CQS->{4Sl8RS)x=H&)L(-Xn-hj_{7U6+r4qum=DYv6gA`n#!;96BQAz zS6?(}!pVJe3O54)H#=Y4^i+K4*>hx9mmp^^d~1@2Q-r7yJgQ*OdsfG0cUq6J|F~uS zCEqq|y)OeU)JB?c;-E2i^egDLP^4nJHGX$TKjy)_b*XEu|5@lC$ip{P>wv0t*xXQ! zcy-qcp}!jbrwuRw)HKB4Pym)E!!A&SLBY-at_t+0!lsCu{&8mi<6r!+{tecP*)uC5eL3pir7U)D5VKeA`yXF=jAC@lzxGC)s3E;7UK{$^C)mampn z%4fL6pfYDk&BbR;C2t|s-5KXFV{uSh%95*1MVajS6=mCA5xr>z9*JlFxNz$|19}HG z0_alwe;<+i)B2TnG=*C(P$U(xL_B&-p!+r5JpMP)PEJ!NZfDomYZqVm)3)`GP@fYb zr;tq!-DH43erHDzz)55zOvBwGm{Z=G|J{>E4;=H%!8sZK#Xcw)wZ!&~RI|CUdho}~ z<~&YkqHyLUoK|~D=HL=#iey-khcfb@Knq*>PL7zJ(6&1g0PeK1c{2wp}j4>p14fjkr z4O?m|&{Ve>32pxo@&0K1^*`|x5rPP2BoOGIf#&8IYzhU011CfI2V&WzLH66fTvGp( z)5$U$AdmTFaq}}ni~Wbgg2CujpyIqMyOz@f5bEi+uQx!)sUnl!{jB87=bs(_Noqq) zfW=Z`$C}ed7v1{h(~D+wPluPwxqa?_?(45V9((p+yJEcnu<8xoUdgsN5{VfnkOPTd&Mz!BHayx+07LW2fWgIqP3=W$x=EoK5 zD^I`Xi66fW_;QpMt!2bLPb~Q2zYkBF1i*T!snp<|TetNw9yd;eYC~&05}Dxde#ewv z1E1YmSGC8=<=#VzIMSN-&;+hOm`Lva+iT<=^ocKVZ68~4x11~Rg{ zJa2tdO_pby0#l|)7nCi;qN0*0QgEaFMYBmMxM8BKsR32d;Lxw?*59ZA-k4i99gMwo zQoqp;BN=9BBPcVBZjBF&bH%inhMD+_12>^7+)q)#iU&@Aaf?+hWD+Rh|9Bdheu zD-JpH{x@g8;gss!iTwN?ue`tN@-q${@<1y6WO#gVx~#AIi}JAXnxnd1{KQYe=hJCS zSz4(aTUpyOIuJ-p**!|_GK^02Mms{kqRd~fI%C}V|9N-8Gakk3O!)ME_dfg0OV2)V z=3d35yTE|OO%)G1s5*^8Kz)7f@*;2g4W|#8_-!!O{#UHnJKWj#DHRh}WEnQZ6DBAX zAyA62o`4`y(B15{=(Zu+8U>{y6kUWYJF&20%Z)P!jhzJ`xHmWB)>Du5HJNcNZ!W`{ z>WU|9RGqBp25M~jx<~qry9E{}h=#^m2o}YC%3B&oBc{WU8FJGyW(~|P?6QrlF-vY^ z0R0wKZMi#FbWX08JU`9Mx+$TpGvswmTyG|(96ki;vH%kd0dM;fhl(OWQ6#_x%$VHw^(CukjasmYTp&7rN*8U~>qN+gW877Np^|6>F^w@duqJ5|q287TW4uzdl?L@Y^j* zHUfZMjYHC{%Zn64amzsWB@H zi+a44Hh;lC!pt0&sVm}t-du6llh-sfwx0-uqsizuBLo+t3qB>725#l34=02D%-z{0K;M32Xz$TCbpK%AMd z6A@vF4gS}hkM6m5(g~MayNg|s*b8nE=M1&c;HlL{bh^qV3QiVH@)g{sh@xe;f5fo9 z(ArX0Jx~;6#N#n2in9K_HJuY1ouZ863Wr+hTKaO+(tBD2^GJgvAjgc^lZpmdUPSDS zpsvGgXF*XP3!{bTc&>agCJ-NH^tCjuy+T7QgnXM9zir)sXe^2&`wm4zJc3M{_kdmV z&&K~72Dlx#R5#YF--LK$2*ZjCF@I^D#S--UhHx{3X#3qT)ip;!Bozs0_-WZT95gf= zPP+_6?$GsP95T84C1$*uF0O4jH`7Jv2j6eIa%6c!d~lz_+jBe~xZD&DwH@Q9O6cKf zf}ZHwuH^XXauziwh+;YvFX_?0e;_3T3;?wATH@{EiCYi5;`CcS8Ua%nrrJo_e`arc z^4@~%@kl|aB3x4ew4asJ`qTOWIC*~c_sDw}Kh)caoh;l{hKpKwp=cK~pm zf`w8~eaK38UEjU5F{e@^C;4R}t#9?8GbEg-0B}FBPc=4aOCoys(_81g+{5NckH->V z)TlqU|LDJMZfRI2*xT<~)J*j8wVyw^vZcCzqnj?xw9!ZbSjB& z+C=#q#*=A9T|uM-1(}wgFZ;43Ka5KkoroZ@?9kpr7IxWy(=L?-bi;IB{`t$F*#h1v zPF+N0JRBY1%(=;~+BQp~1VN;LAONK6#b86il2;4>5Z5*6%^_qu_D>DW6Z? zG&Z0%5=8$0VPo4K{+~6#JELzeAL5C6gjzxvH+(W4er?~BS31HW(~gHPEgg-Wl<&Ly z>G@FL!l+>$oN!q04$m7mJpH<+pTk+DhWn^IUq~vgs<~`%pTf-mUh8ZOM;tj7806d7jSe6lK z?`@^q!7mO4%k#rZ=A;}M(#JnUZt0O3Syj~CIuUMnl!uzmUR+x7uWXy$)5zjbCGyP~ z#p5p+Rn(_qO4~Wn=$?jWTWw9dh7} zngO-}=mww&Kt^d@Sbh7Kvb=CK;nGYl8{o1afP*lmsKJQa-Bbsl20#;lN+ff7_qrgn z$8Mq^%Zb5#Wn6#G;dt)DH3)7?NwB6}WM}v>eDE;K=hrpH@XfCc*jihLOHY^t$4=~1 zfdK_+Y0wnja^gYCWw*b)a-xS84ue%v8F=WeNLdfaVjq6}q`WpWN6I zJ5iOz_pSE9<2sl`p<6G)!6%LB{`@D4Hk~ghzHH`*cE9k(Ss&bW-tos{FST<9< zt57gD&4ICl^8ri@132i^Yd-iT7*C8-{HpS=kG4GL^##IX2KM|e)iKoR(d#y|=+$nw z-P6nxjooC|_csnc?3}Hk+D?P?E4OUGrpk^}-GCVB)C8>|5B~Wi8)kg=4?oXqtW$%jL+hxV0ogvOC zUw4%q6d|vS5&rJ8`UN`QIp;WBU>y`-HaJIAi(^x3@SN{L73XCnC=$?X#}@UuFUK4B zK9zw1fUau@MfSo?)dp3O@zBh(QC44t>dMahF$qDOn^;}B6^EpcMp#dvD!kWI_5T_C znFd$@;Av@1_<|wrn7C;i{=mz>^@(t;fI3yUB@wmF5q!3|1%yy=A^-^;l0-o%0b?dW zICK?QS*zif&GmTrgHm0!Ia?zM{hRv6=&JyhAxZAos|j@6(0pvL2cerfjJ+%<>~=el zlf73Jo&W$%tOaI^4{m$XrAYx41=4{4(6?Jg`Jmx_hMaTzy9*hKa7I$N&4=v!h3Lo1bQL)TADRy=ydm>xek9kwoa5ZhrSOvF?8-tzOk71x|F z>7xI<|I0gyEZEDcoJYO(+0O^xbiv?nQW^Y?n=l<9H09JJ0N~f0HTJCQ9{p;zC)3$o z1I@Vexp{An>%X%2wrh^FbpM)ZxHQgQ+9<}Sr5lR3H5Q2!QrnBYJpL{vFEzu!>~)=c zN+YITAQFl==O6;e=?lNzU2(4-`pdSr?Mo<^uMVBjRlbLo$RFN75GjWmHN2ECW1l{ieFJ z>NNSNkABJ8M>Cr^!D6cnm4h^0#AaZ8_GyTaCeeb5UJyUGzX! zY&h+d8GCcdUGUluTOlUuaq;mJ+xvC(Rezgw?tL%)@_r66Jyq_k9@jto&3luJ)5Z?! z+Xs2wU2wG%SD`!$Oz1S}zV(t5`d@hGn{z+*h~91vcOc{BOW#`cz!k?2>Df)KbbC`s zPauFmQmgkoq;Cf9ykgpU7vJ^u_fbJgS5;fyjn9Ao%sqcU?xa-uA%vkmg$;P1DEIU1 z9M3OJEyAG=dl=q*kgJG0%suNUWvqPKJ$nH=RE(#hBx!ox$Et6-%nxYcUJ&yQuN9c>RK&>|X*|2Xu7WBc1PJ0*FA^l+zr*0eMYdA5Av zYdN-bUr0|tG|gFl#qsadMwWCthr)X;-qJpZfDr{f(LF5#Hc`gVq8^x7JOFRb`Eh?< zB@MtJ03#k=@Oe?AsU5--x?g9ezyLu}ZGu24m}!C}!y=qB&gzL_erMK37O!oHsJi)O zz~|k9q#D~s{8>!gHvEwWc+l5#HXPm5!p^w+_4$ReEXktG;2|o2WSJ_?%_P%gr@5Vh zwY}RM)CAC0z6wY#c@koBXJsZ&0iiOez#z$#0uFy&UG(5>m8}OKeajF37~Cgwo*a$8 za`>d8Z;&EWuqhZpw?aS04lV>^G6wd~@AUlcg}G=9?mt#nbwdm4q6PxqT_*&3u?*4M5s=5J(bPHoCid z&B6-yvd@gWxlIbZH*5JnZ#Zw{#Q;ey$B+WVOf9F->sD8tG_~Nm&lc9aA`24At0PDK z_}i+B`uECtu1Aj5`kewy3CZ%47T|L$IOq5=_ucXQw^5!4nTCVa0e~p)F@N-a za^d&?j&NhTEQ=7LiPGtLJ?{2E{cpX6>$WfrHbsR^>D(B`5{ZZq*AbNfF=imeuXYD0 z;~=68MRIDY&wAmI6ss_0tgYF06%py!xX3WfmGQ{w117!$SaXe029Ok_Ldt^mC(jR7 z-JQv0SCeQ|AC=$#dY{YvbEh;q!rPL%J!G~vIoG(4Z)he!Fc?HD`&lxLka06 z3KXJlCPN>hxTk;!-RWW6eyfc8{Ud2 z-*BJ}u$0hQ@3_wIe(dAb(;aq~!z0Vd)g(z8UDGs^^&?Z$((M$4{O%HyBngTvLD%&3 z4P}vI7OyNn=Ka|#e>?A#gB}I&4cY|5Q-Ntp7(S#B0MN(dLM$GG&90&)4p4#Mpa~P9 zcaT88FKCEp_m0&Rn*UW z4?3A=WIYW+2SP+62Kq5#VE%`%eEwUn59e0jZMUn^s`AhoFMhnB`ofb(+@LCw6_Vu+ z#1rw9_DMDsIPKWMZ_iy>eMWth9GtF5>cb!Xdf&ZgPh2{*r+<;ve%t^I*}4(VPRpEo z%))|4-d$63Uy`o`EXsMfj?trn6!Xm4l5dxJZUFDsDbB=_r!7z>V*(EC>8GtN;_TZ`=6 zzh-5iHb?+`QKnyZ`>&rI(JZpzs-VEfWNa^tA)u{RyKW}c*1EuUTObGmL@{adWRpP$ z8&H;L8IYj*F&nomYobIbZHh`yn!|&%H@dyM> z1*iHBFFd6b00Hkj9=X@xoI_^}CIJNK@CMSM85sS@TMOTE@#x0!J=2~7@HF-zE?`q_ z7(Hnuf~`@cyAN!A)D4@e@$;|iFmZgp-G9aIy?(~o&wo7sg}Ljr^Lxp0e6qOgdY6kf zoj4=#ct`!2LhlBBY}}WZmg;(8S&^eX(TQ znGw6xhv+Qx9}g`3@AcQdfSnkufgr!yUH&|P96G8*nt1Xh1GXB?H(*D3mJB7kZuZB2n7 zCR0Q$d~FF`$Fi!Dym!|xc-3w9$i8VtR*mX@fdr*-n9G;Zg=`V{=-g)EMGYRPx!Xo@s>U1OcwPE;`sGBm~z28Y7>?zC!b~t2c7i$*gjY|}_&MLcI@$j*@$DZvV+@3FND>8S1ZE-v zf#~oNk;aI--$xsaC%1-HPaR$){}Vu$IeMMJ>;7X3LbS9-QPm9O>_*5e%umBjCy%;9 ze`TSvypo@h=7=gE{aA6^l65ba4(i+MlcKD2jOexYdq|%Q=wq8ckk?E{`{IW@BUist~-+9$6*M=JD$Zr;HIKD8?{YpxMZ^MS_ zYDjGFj8r6~8KLIb56vOt4x3wp>~NS4&+n-)XMONH2S)%H7Z@B-UNxYw*Fv<#Yx))f z2V*3N$)E>2jx}zx$V^p4d1H<)z7l59v#BKQ^((CDItHlzM~^HTWKBt5w0^0|Q1j&9 zn#yjs+3ntFBwT%Rui;lr>0WHf_yRy!OlfX%EvYHJ$LaPQOcNYVQTg(rqfS2!+g-#u z5Z=uZrBVX1bDxm-ed+4UJaNnrWDz8;Z9BGL@Fg-8*IOMF0DQ4{K4dvH4#pn{dwr;7 zSb3=Vn)M}BQ)Gw3qdKh{k zY@l%hjq5OF4j6zG6_JAsMC4YGwm@&vJHS({=GHZKb~_MIaGiq)3kiTarG{o7I_i&71B?SE+jB?D34<&P4TB3kqZX7KOueeT1BPvoShP3m17 zXg+@25O`eHcmE|N+rTU`SevmP#EKq9? z4~>W5P4iiH1*iAPSU9q%=*`6yjTdL6alAi!(?h3DAN291XARgZ2Fs!)Re0tF%T=j% z2P3i{DrteC#fTpNeIw2@ciEx|CZR|~W8{)IpXk)h`hfq89Y4ooCK`}PMfx}Kw+V+n z_0s%V(@n5!5wsoctK?3FgM$MgoC9r>C;p4>-7jiKq=f?dJUlRZXzFe{3%8kK>n~0#mZgYThz%&gw8HEXk zm_)z@4#_ZJa*_0PG*?cpLVY0k&1vgrB(bksnSMC8y0!8Hh%}35NgyXp4uM zl7R>efYaZLq;wwp*h~EWd~n|OX1Bdb6a-Y@AcO*xAZ8e##16Lv$EOR;o0o3=VN&lr z$DIID&a2x;hyacRFbc_s-bAv1`KJKdO-2qUfRcKkd-@)~DxF*?9y-4~v{9nDoWSl?8RFV`-$gDyEVzhCFEV(nOW&37st$8$(SS7Qc4gm>KtBFGDeH5H>YbT^D2KwX4HHpUvd~ zGxVgkHU}UGhzZGM8sz{?0!GO1M0=iG%qOJveLT_m18Yx!@0aY^w|G2dL*2bnV0zQwWBNo@ek$j=89O>!4vN65WA82fChDxHs z+H&obHJj^)$8-Uy9zqJG;rUQ810e6e)Dm zgfBs0OE74X0L|rqO()t0R_3Ag*aJfliOga1g&#ZazC^ zn#U4JhLMObxnS7Am!>)0^+XV05Z>tlDj?m{wej7KxM@snG!v&QE@ys_#UjVr3N9Ix z-R*N#mSBSIaR3}H-uZLTs>LSGD_MIdRGJru79QYAzkf(>(Fd>~M{070Rkh`a#`e1C zjO+2m-@LRcTzju5NZlNg?4p#~RcdomQOT}ii5u?x`I9djVxhgQ&d~qiIiJ40GTQV2 z7v+FQa#B6<*R5_OGJxv_RJ+~LAej^A#j9^xTvc)>lKIE`-v7QdHcWQVEw3zm!KSqK zOmm1Zn6$(25<=S8$opfM`yV?m5Vo(3!iE3^aX@k9KJ)3C*AE*J?VIVqeKBh&uf9K9i2cB$GXjGOZ$Zf2^?IjyUN|EK1 z(9ppPEK4GCvhD92G9WTx!DjcxvW-jYRyQ0wZ%OHCV~2HnUXc~3GAy}y?K035O05*E zAkbAkvYpSZs!ZJNmpEOxy7ri&Z0AptM)&Vjf^%m?S`*k-(q#FXCr%yt>Z+2~Q({~k zZR4iv`nzYn{M@6bO_HdPvMbu>vY|NzGT0xDC6!w+JU1n>j_Hz>56>DnuKek>KV7dA z9G0#sPAR5?sS4_#LH4L1aUHf`4BPBx*cCCqeDTn8F8OxLDoX+9Xe@znBnB(F#+#aJ zr_bHC=?v~tQ6CG($2l_}pn^~a*7eSpQi^m74DjuU>00hrTUI{dkZj!|Mk0~z_PsQv zTfb*JYvbabuj#|FXzttVetWinJBlia370_MACgsgi)6wLyk_|f8D?&)zv&S}_9TS20< zBey+mjmHlCyk_H7)b5y;Y1+|386wO;x~L+`Q?DZSM?ePy5eOvB1m}P*34<1fst0Xp zs_iKOS0Pz4bg!-4z8K((mv3&kR&eV*Y(gI5ktPuNcjF6eCqV7z;O+s0LyRCsT_9Q% zSq=#w|5kZp|3IQ!_Z;Pnu3M*!8^2s$bB)(S0=g-Ig+*{hKwQ!QCPSbi;${pm35Y1c zljXvfi-Nbh&FF~1190T-ovqyr4DP$-cK4fi(1bD7Z?hrZ6op90XD+84$`jQ`d*tP= zM+%}ip@`*EGr!%u=0Q_c2j_7GMd_J$9@%HeCjbBoq8*+T@{j?@Pt5=FP1SBMjzl9! z7uD|uE9tj&*1%+zRn;THmSc9#V)o<7!7uR|yJTZOlEmMxYPN5Q1 zNrDIgq?3ij+|8>k4?Y@d#(*CEAeg_~j*_Oj;!PxecDm$2R8PPjW8gLk5eFc|%{7A7s}t#;F6M83m&v>S6?$a)NGXR8Q6n?r}-D2o}>9 zx#!Un<^jg zF?je**lA~On!wUEKygn%-Sr(e{4VvbymYyss#ZVOA*Z1x!H?Y5qTkXVxUZuz5+;HR zM!QD14g7?ueQ)^Br%U?AqZp?8#Owv7)ej6R#%2JktbP`DMM7bw2f^l)Hj}ZVCUn2- z@z1u-ar=ZENvFLozva_6ufAZ^Szd?DGD*TAIg(0i7LYEB>-uN;USCijzS8fK@!|I? zui`Or-nel+E#K>Q1bj|3GCr;$WN35##aK zdwSEK2RcY{-wh7C1F9$jT@-s~aUILbw|Kr-z3`r9g-muPG$bh7c;5KwSLgTw9X@-a zC_-wdZlpmt;>*onC9Sxb zoT%G#?fw9q3!^K;PnA{0&1cy5f$vGD_qigPmm!(&*6!m^m*g zSzcCi~vR!2P-Fs<(1rWk^gm(@UekonMw+0vh5Mer=UoyKqLv{x8OadLI z@a@WZ%^rt!@*C$I+sZAkcWIpwIj7c$Uf`B&;4)eBuR~8iA66?_2?WIY4vdrp>rUCi z!u z01~=^)%6wVVSzNZJDTEQe7|uOC=sB_GPcE9$H)=|GZ{paB`1ZpP?BykPzZp@Ktu|n z83-w~|LWcJp9`}x5s$}Vf`fs3YojfIDIp>sy7GomX=;RY*_jp1~{sPAVvU}V-JpiamyvsE;{GB&%dKK zM?bI1+&8{a_s*!yvP1h6|={c<&wKj=l4NRQWdr#C zsUs}fy8iDg>&vf6SDdIfqH9MwvK|7^snT0*xCL&T6Ak-8)48O&0)un9!)AiV8G#k) zbW;)_nw%*+(Za?L8j1Rr7OdE~9yLZ38-vw%H!|aL)#-o{N93^HS1SIX8CzS02fTKBwm=y)CP4Ueb*%po#3UKEm=$js2AHR9pSeq(YR?M-QxBO?~;!mEzvokNTbnd*?ZCJ-z@KI&gQo5R< zhjS=N#Y3+1f;njvvJXYtnm28#02CCU)f;-Hdquk~O5mmupV zG!+na4!2EJ7L|og>$kdc)!^c84{k3JxHGC7qImVIj%x_F8uC!D;s&z`;5xUI(r$7S zoN-Vtf+tMaWR51o;d}G_rH7y$0}KE;S7abFeUEqy0Bk&ZO!3wK{cg!iE&i2k0 z8iW+2+=qAr+wMGnya@mm4PBI;AOt+u zdTn2WncY7rS^i{(;x3{RHA!>yos%a{z7L(a9Al=5Sa{EMdRTAK}6QrxjJW5~C?Quew(-=8iMAi)@@ zXit_1Jb<871Y-=Q$v|n+DsV!;I0In}R3HH15E%j6VaJk6DMlMpaC(LX7yrO#Q(-qkqb|DhyLTVBV)7|Y zKMA(mLI z>d267bKy|Fom;;Z{nGQXeW^ch)B4kwMeDCqh=_>DAhq#Z2oWFxFijKtUH0%#z%C@? zwt{_J6yVTE=JTt5nLVkcZt}>S9;=}V1a01gXp*oayXSH;{ z4Sp|2D5yhKexGRUst2R{c`&*k@VBD}fBgLW-`)Q8uMO9mio;nO-a7rc_oRoexn%t1 z=%7-JX)-Wwg6~FLq7dPBif}v8e9JXQpLyG}KYXS+;=|P#bKdsovj0vS;W+7-Bc?Ac zEVM!B!mYR+t<~03lZ*s6#`MpoJgfoOPz3z%`MGn zZchoU9sK>+LD#?d+`^uQm@&d-3+BG^#hOQM&Gk>VI%fL;ED5*2@cA)U?MrjprL+DU zHFVt%iE4`6wO1p{?t#_1!ke0EF5ZUN*feHCYdl&#qvyaUGaasGSomC-X~Kv`foSLH zO@;uJHrHY9`sG(pDj$+CG{}sXojdH{3rF@D6zr&-u4~}2PDyqdKWtrnw=2#kw7Ml2 zTH>pb1-%|XC&ss;r4gF3*D7iNFy!-+6*GS;-EfA@ZY%Oq2jXS|h8Bz1Bzd)A7_VP4 zcKWOrR?gYdO|)OXMQgk^*XB)+wZ;%rDFjUiu`AGG(Quk%TXyb*L$56K1|k5UG8qXi zj?&hq0Y8_m`=`xev)i;JN62hj*8X0v>wn+)?hewndgrDIDvHoeGi`Zg$+d&i3$8L* zCxjpXq9C*%Z!-)N!Inhvg36Xl{IUzI&8Q_WnBsn6FCYj401n2?9fnjE6fn-g7>90f zKmY`dL*Pl_2Z0b!fg*-vIuB!PM=tVyWsQ;qbdpwl+cQ7Be%EMA zWN5)X@66lsl*23Ka#iWEuF`SuF~G5~SON|J+}VCqZmb5ksP$Uh-3Li6y6KJ=7JiYI zDf?rlW9Y}CkqpG+S-e#>fA+thQ7+wOQ~(Pti~TiRG#Ikvp4;V7@i z@wrI5j$wP$zqTq?y2I0D47MXQH8o*r_10;sDCIMOAQ6eHdTZCl!=D!b>*9sb3=~_EE%5E~E(IfNvUOT+7kENm@oO2jmq#Er68j8oxYLeK6f}uf^SmgAcqc0v> z*n4h=Ef_;A7T(2oz)TZy&S2^~49?yES~2?-iOSQ04w%uF=I{G^GOh-&t=;|z&=e2B zFjEt(X@dkHEe`XtZ>!dw;*}jeb7U7-D1jJ>hN(wgI917dc2h&m`-1Ct!ds5h^H8Bb zQ2Ei8<$rg3(gr9I4TeCt9%@~eLzHhbozB~H+SI~ioq$0{C>BY7X!g7Rl6|f$7Slik zsZ9a={|#)njiM-m5Q3US^sH|;t=N3rkn#7*oxDe)&DDNk^NNb5yo;`%^RC>@;b3tY zW}6Dy?+RB3_QT~I5CjpTNMM>KOw)ueBzKLBnIHm(D2gy7z~CH=^Q7>*K%f{Rzy%0| zwk^Flc-Ja!mcb+yL@&qYaIfj*)y-2fd|BV_e$IPeF2?dr6??Q*i6bfyAx)HA(2eL` z(GfW3Fr#stf9~Y30U$eFMPr=-)}o*V4cK`h9f`!@>ZC}*q_KVPC~00>90_keA|Pg= zBHD63l5ypiJ8DA}9Y(xUqxNZz%IzhMvA1$O3f4B%9{Tj_Uq1iPZ6}-oVi zgyu&KIw{BLmL7h2;a&G%cf`t!Kzhd{fSqv78HeIuug|u0tv?z!O*vs-n)m#9+xmMw z9xtN7RvcVV{7P>l{>I+lm#>IRHAO#8YwaDrf;1`^K_g&aL5zV{5f0PmbUcVKP+nFnV}=Z(rJT z)P0RwtgNiAs-qX|&FjY>_1XK2fARIsDv*vDINDsiW@XF#>P`5xPVXGj%8jHd6VQ!S)TGrfCoa0bU~G=Wx|!18Xb4>y?|gprdwTu(|y& zc-EY%bBwIC0e(${A;m#<+VT7mA{(3$Xu1haOXeTTvJ6!=;I!G`Q0-7ChboI8Aka;Y zNWwrkrX#Lvi0FW>CtoyC6d_6k7B(f8A?h5AX2O+d5Fh@i`tf`1&I#Df6+LFuK#Z9% zXpgq9e6(Tlrn2h1xS>FxsSAn&$^BWR)^Du zynIAYI;_uSkG)>|og{^dGGwRwjX5O`59s08n}&oI0pD%M;?Jfyer6vW zKeNvVFTA^W_?$JZSLWE=blJAVnJ>M!blr%--5%(k-+5eQXPAUQq1N2Bc9CLOpUn4q zx|bhStGQ>m?1t^Fk2gM%?sYEcSCp|S&1X%VKG?{>+o=k*JDhU5_TmE<&N%JnH96I;c(u-#t;k+r+({;{k??US&pg$5rGP?m5iXQBaa3Y2cO|?0nty}ntU{?le z(Rd_XbiCUuJ?BM5>3qkZZgavRb?K?F%_&`bSDqtnR6=L)+U-AFGx6A4(TVGJXT-r^ zc)Rw7RMj`)x3YD;=Qoz$;vlL=*A4V`_-BnO=<~40;Q}WBYlrbnVx5PdEA`N|TX^*1 zbX`Fs5)CJ154d`4Veegx@6OYdKm_Qi%@Cf3P;gwO5xw-6@{JQEQF1#(8w}GxD-v7# zJN&;KoZbJ$Vt@969Ioh%T`YEx%=8G^BpKPe>th=nPMZ8qmsOV>ytJ<3bi1N}@?_X9 z5|6<_B$x-J*v?-I9KWkR3T-UbFa-j-l=;@$dH=r5cf>IcS#38pMr>@_^9xSIwSKRE zyZRbmnj3~Gz@!=kV}I6@G+=;%N-~HcCWF`#L(Blc2n54~Q{~9dabbAh07m!CL~(aN z3UaOGYgTWIV8zB-EZ^FUrJEbEv7!Yn8Ubep6j^{M@?@$DrC@>ya1A0S;1=t(a>7BF z4p9+cGO76ApD(%RnVU|yZ1?kGBHzR44IbS5_0p|dW~4K_6mz)1&G3#djt~OFFaWS! zJPiZ}h(M4q6v&i7Hg&`mf*T&5`^%#@WSk0urRYMhS^=PoyBcAqWQWsbM?rzV>vw?BVb^(r$fq+ec4alX0luhh-i1DLW8Pbf`JEfg4W?%sptlIm$ z+XDeNRe)IP1~}BxqI|u6*~5~%w8 zRl4T-7{_@c1DaVRe97R$uHnR*@lAliuq*L++hns04l-)k)Hr?HO3+n-(0ic zR-4l`h6*Cwk`oD2*JH#C=8Nj{gY&yTS17x;nf863$1fgxIFMk-u)6_3_^xitr5;(y z)fr0)3NZ#%5O>6X+r#!W9#Is*O%8zo8q+|i0KzFuaOlK@C=dt+ATb$S+;h>x{)CV+ zH3bmPVesVrlD6*Vf3m&4#39zubhJhiShG2VxxZCm&Z2UZHHM-1WvCR8!wf{UL6ayfrj7#G?gdC1 z&iY_<27qg@TZ~gQ31Yj&o{yS5_@yauDL%@i6MT4q2ALm;uf?SR0d) zaS4>Eu(1RTl0YL7;e!NXa~9n2^atN(%I^8+96RPN0CPGUv!nxB#~Xmyt>+wc+VxM& z{VL5TrxCd&aMP2E-=8t6yk|F;6Wx0FP}JQ9$({~rr;xW4lMxDaJXsGZ?s>ze`qjfV z(LKT^5yy9nHeP?kAw9nVV66ZI;#BF*eR zbg$Yit0_GvrqW{sQ-cwWt~+b^!B_Uo@0^8Bi2$`7?cjDWHO|blBq{-hj?=miKW|`q z-b$;Vo}pPbzVhpfzJDSr@#AGeQOP1J?izX2#puKmQcdf$F738R^YB?)SNz){DV~Nz zq+zrt=aGEH-Epq6Ab=|hpm*uNwSBXB)wzqCDz1+idK&e4oIX>65s#yhhvywrJo2^X z%G!?RRL@kMGdwKSQv%@(==g-0yINMq3ncc za@br>aKnV5Yak{^2s$cA0!lmSiNc?d(PRo7L=Yfy3dWN>qum`9It8d<0-WLJwad@w z?a%lU$?~$hK=iUbTu^6xF84!$K}F@UYdRX&F3C+Ep}q3i5zI%lkj0q9-aBXs!ui? zWQhK5s`&eAP?99*x{jT5aS0(1s0ku!h{g$sZq^(2@$jBTxL;N}`emiJ6!#8Xc;3C=|Cp7X=`r<0!BzKs@%BN( z(~cU}w^z;NDeY8{Xa~&H0nM@~KTbZn_dDy$qLUVs)Lkg6y8O-J#;f{uTl7xv;!$g@ zv?oMFR-WZWU+lEQhTQXy=a!8x4mjk>C>ik6Z(A-H(m(G7hokeI^nl)3SiYgw>U9n{ zhU6AO&9uJQ2_{;xuDk?Www8^ZOPX%UFhxg*n&|Jzc+erMzjoHvs_|`(hYLR|Tm1x) zr0#L>)_j-yl_A-MpTSC=HwQ=pkh(AqWwA!gU9$=eq2L+iE?k(QiD)E=<)>v2JXaCL z4rBU+GjJivJ=qRZGZBf$(2|IvF4)xn)v|@JP@Q?0N|CELzZ;v=<3YdTfL*ac*^LCN zgTs`%{7m{REZ=za6AQmNDatWIkrX&38Con_rxCU$E}G95D!#9Mc2`R?_TRJBJ3R+E z4lmHQ*l3AI(>~t3(Le+ZhQMG_0)sL@FkquL^vtl~+@rJc-hU?G?yE*4Kj1+uBtjt8 zS*hC-v9~j;?TU(TmXu$;wXUTPWDz?bnGQRQcno?hy5kr;C~y6n_Z%{UHR%gtvDhBf zqjom#$?M68MP!K3H|3_WTMi!C>+DNs=1$5Y`kMwdBT-XFrqg9x8>+eJ$ye6?6pm`o zAgOTEE+if3C^X}CNN*iBP<)`asi`%?CegC6arCB&=pE>!HnPp7Ky`Gywa)armOXLX z^clL=(jW^Q#70JJtqwm4z$|85}0M zIv6+%u7WdII(%-&j|X+Pe^lR+U=Br7AAfVrovjgL5EW%~b_^}fP34{rIL3ENJ;&7G z=HU7DW%s+OninLd-dpk9f9d!cZ}jzL!lR+XLooqnn4KQ6MBM+}qVFDanY5U2AWKx2 z49G0_hd^mOsU+ORe&`OwPefbC-j26O3?} zqOi-MGlu3^1SL&%j#t*tzdvE}V$G!>5N7Y)H2Ju*2j>+bFFg}!iVdnH?>J;h?$r3| zrr9lK=uf>k|J%h2>dPMDG9BSmWJtQ!3a-6HwLkt`U$?;4dmAry}y*O!iP zG`izhRaH7hkd@+uNFZv~S=yX)P)c{~f_2jX1(4-%!yyR}!QfJ4$W(wr2=d&1h^h=t zVtX8M`Hw#&gF_N1NZb4@v=gW2h5;xdG+l=x$k^Q6aDhfN`^dh1vGXDJ$p3x2wW*|j zz|ST8n0~n;Vu@CmVmcCL5Q^x8z8`nM5!1xQM|Z;o#|(tqCV+AZa0*5VI5ELZfC>Z* z92^uHD5zjvABjN);T)8+q^02k00AHjoCBOoP{DEHxI9cBnuixZS&iqu-ij18^^@0P z3=&LGXF7gawe{#oEVO?2a~uv8vb;wOtl{bVMxAueD_dXPv}w~6zu&*ZH3R$}|1}H) zaZ`iDV`~l@S#{chtbI#9@QK zm_6r`V~!bjm(>pBgap9?A5SpL6juKTfnok?Y8F=6v=;=@l28>^wg=+uLc| z(~cg5H$Pixbw~#k{j&;EZIb!p=GAvQ^0N;jtqEk?U2mU0c+y?4;4*7z4tCl37i$)t zUBweK4Z8p{9N%=!sKfrA>rb~dFlLxw*5|E$tHO2HdAQs&tZ+>7^uGVZej|6pXj>vN z>`t?ArMW;lCP}4zRl4#ajj$OmsHh2t7oR=;sGHD1DxLw3aOYddUbD(qJ<@Cwjt;;F zP2gyV1u-lw_xS;NJzgA|R3dqRHMARYSt<8(~_}!|F>uyv5}n%20e(T?^MBq^2!4uEq8ubbnF(}rVMuPog3#!9r-wm?)wFxdpv#U1Ha?Sp|3z#t5g zCS%r*WhWgxBI7CSp~jPF8^o?RR#@QMHoAY#;r-p(`T;oKHXgwsd#PqvvON*4%jhgqic^ublenqWb$uROn~3xz(yz>tP?x z{`KL@PMg@FVh?Q!!wiRad_+YyplDP+jvti|0N369@k(V;N#vq{=vKa3R(f-{JhSxh z={X%rOR9DSGTW2k>~R2DK45&0!hh-PyP{v$2QP68gw9?UzP`t2OSX0|%J^?qS{8CL ztmK^vShT7I(U_HIlH#mWkK8(UY01BTT2*&z2CcyltBk9%v$rkl*E{f8UQX96WKX&P zr_J*7AOHK2-EV&Oovn}ixaeE7zWT&zWtkrq7NmXMS)=r{ly>$949^{L0T8!#uThw2 zXl}s!n^!#6Xp*Bv(|}0yIg|W7??4xY5E$o(8XDA2a-r8WRbu(-)e{!b=BqPI89_6# zd2&|wTkVRv#{#!Kh$2n;r#m6Z`4mO~fC2~GlHt%g&k$c9u5iOwhZ;$Fb_}_Mi zt=*TOa}KHV+;ZiU4NGrrX8b%mQ^BCGx^v=;3p}D@DpcMu7)mAc!>f%5eIRrFrpeH#sMt`O#uKV z&W=?-a@6K+uX}Bdy6t_5HrtML3F-4M)}Lw1bc3Z%fb0+n4yZ&%ur-371wOoc%fWDG z$PmmJh#-S=0c~O4KNK7QNRnkpSQwMWX5f>)2jT47zsH)2CS(Y9v@!<80{e_WgdjGc zH6#rG{Oc`8I2_U*1dH^53j_PN`!FW}%$_*1V0L9?5O3aln5U_+HBGh)+J!fLQaQA* zA7h5+p^FWLk(Zk>t4Dd=tQhmWyt=IE%ygTZ{<5zA9QmUqEw`RKpU08}!;G|> zKB1j-Xzr~)-umlQn&~SNRX84cv;NIRn`SlMd+pS3+8u?!A-LmUA+@6ylAm+p#9NkM z|Hj}@z&XaPQTdqv99pAH2PCEN!LZnh23}UC3bLKA73aB5SlPVkD7&2Ne(}Av4|VI7@jW^* zN||Z%Xmowa=2J>q>ZbXq4Ryhm&{ZR+-_$EJw-o3&FNkvv&4Lhy zVX}U!S@1R|p*ay7F$#mymwv_Z9^)K_*}1*hQU0&<5`c&`HDYsZrF~wk`av0Va7-d_ zNBFYwIo)UGXJvQTF44InmGI`uxz{dhslF;*mte?<_Q}Y8D9`0z4gl@#$qlpP*)L(} z{(FD=^nKaonvkXoMzz^G=bT~FZzG1WU`vbT`X82{nFfXie%C~2x`8aA{YBEky1H?u zNP3vugiJ*khG9wUh%ts(EQ*=MBXH&5gF%=Hfzlmi4}o2^mVuks#8JU4@$erlNi@(mo_YGx;iGV7L&`s7ZX*o;vVnwWO!US*6 zkGB7tIOn$=Wh|!~VxW%^Yk*3v*X`^IsszO1484ld@y>0N;gU_roC8D!7=g*nHd4=i zOw_dmJxP8tWk}Qkz(BT>;-xze!PWm-grC=yBHdx{luExHjB%(o113D!TBRL&!m+vS zG92rIL1cKnU3J%jeTd)8IC#LN{smjZKd!5|+^%@={ld!2Vv&y&uU-6mZe|_?iNT+y zqA))lE}H`YfkY*^+K;g}9CJ|qgr8S6e#I5rP_L&2Kd)5Y{_)qU!!okfg*j>MPg0x# z-j3(K=F^WKeB`^|mo5mJT5rXn_WW$_hUZ818!;2W1}pc-6EeUEh+=tX%FjG@=+&1$ zy6o3p-2%2oUO)Ebuc|&DH@fGcu#iJ)niO@l))of=M*zo7m+o5pOw&;=A4QE8>-XwA zOCCJ!q#;*%Tz|fy?Fa+>sl}ozS{lcH(X{1BMO3^^h}WFlYxqC91u_?Q)h?N4*CkwE zZ(8=SK*U2C7<^QD_pE~txd8xlLq|hvu+zr*nO&DV+>UkimAAL>=!t?$0YahG7mqyR z;y$Xs!?)fv8Av<1FZFeGsED>=OLO)4E4G#17I4@R_KG+*t;hLO`;T}>GumIk=_c9T zd$}`|XMdahlA(;Xa78SR)MS?R_haGxC10_O- zu6RO{GQxt8R8lle6T`B*;lhEFlIp=!NO~mOGCp=!E!xmjBASQSIIf4V{j6MWQKKn1CGJ|O*D+jkXTgY6%XQeAInX_&E?*{mY zp`!o*&wcUR6z&X3RPY1b+G^hl%tRb+ryGx6G#p;12$9O*jDmBLWYh|zO=@z#UD6sj zAW{j80h|kfDS?Y7^4t`+UoZ%Nzc+-sNE4{oH93nA4l`kcPIPRj3LVx^vj?+$2eNz~ zu#ROM_XlDF`(@o(-4e{Ms1G0MaoN=GRwvFFk=MFKk$wN73WFpkWinMcxfa){2mu_9 z_Ful5@k6uE{dr0K`=ToJl$|!;3vVue;;PF=oMafJefc~9aoPY$-19lgO$Tz1%xvzF zpLW(Q&(8UT%Vs8_S$&^+|EuT!JMh?pVAYwWOK1pN=S6ya_GRZDSNOth|&QO)g zX7ivI-&=5MZl0^t(r-KClp{u2IPpl4QzvGgjQ@cFJWDE_FFq*>6eO})%{{_Y7^y)1w+j?bWJ>#`G-s`Hp zuIbPdo$r3#nvQ?2opW_iPt2eKg)GothWYaDfkhe9+>8uZkpcyPMI{@~E+z55+YCw3 z8zSqc_8oYGOR;xY+t)Oc#bMfmp&6)cZ9e#$t*ftfJKRbv9uM`R>VHOO7kz{do@v9} zBXqbk94{~Y?!js!da~b?QAgvYmkgP5-l*<GP1aOhxrH*$-d&an<-=_pZU;+?H(gnRH zSdDnd+I*7XPeZ zb20{8*}x}4X@wE-L6Y{-0Jj-elXCh=;pBQ-F^8l!_3rKw0N^ko5kCZ_6-|wC zUvaNMF@Sc{T@r~fBzezTz55wWy>c8UmQ;u586-S9JK%S2sA{^lTQ(0m6ui`4gD{mK zq$#^BgbLxn#TOI+!17U}Yp=NO$)7*zW)tK(w2rysh&wAm- z=B7q43(9PEmkmcu>UsO>jjjF5g5l$`i3i^&&X(;Fu3bo6EhP4x5k#A zJgVCbi%Pd0X(W_lXAV4XeX!xCD^84@gcPJW|0sA>2Lz?-bRb>VQ5%oiUfDA5K9kbk z)G$Hajt%*e>z|?^B&(No5Gvs&>(clFAa(IbQK{B?wNtVoW+Y-q^&a`?;LHL`o)M8! zNJQ+kP+MhFEf&?4VQX#GxOKtW|H`_6n8@|+1$m$O?ar?VB`^v0P|C?s{cpe(zg4I-f@kP=kX4Xw+la8friqSFs^ngUZGR#SY=p((Y9Z+ovCF+T0ZWacsyK!1V#)Hfnq}6L6}ps1yoA1;5i|C zY$_e94U7mqwk5(R{HiRV-TVYii0?we0}5f0M72{(!=^^;P8po>d)>A`ujphZHsxo zX=<$>uDH^&eqLI7_hAQhBLH4(@BDCx!R2oMyC2odJ?p9?hyLT0uhu=}^15A3!9=fn z|NYK?#ta{LdVZdWp*{LQw(Yv}Xlil8;|fET+V}Dn=DOdX-hb1mA2-@B@;EegaYOEf zZcl3^fP1apV>hoC#A%%h`QX*#E-6?eR~^nJ<%->PWc5nudjoOb3(lRDgS_wQMQHJkTuT+a$l9WdVNsp_X| z=06Z4<}r#SBV6A&@49h^U+7VipGT~q3khqALz`zKBjR6KTu_#=Nb>&-8(ol_1BALFKF51x}JqII; zdLhr@gTmUp3ZjrqCDaW_Z3Pl`1``M@>A(@8h?+ zQbgiWC>{?KE`kH_#DRn;z|I6H+=SWAG@2kL2qUOYM5mSq>yrj}&Tr)aFr8_7I&mma z1P&N`$L(gEgPR5*GibU3YBHRE>_7kv22TdMVH$vFz2N#E3XV2+3WX?eoN+`ye7m?B zoT@Nc7=$U1Wg8gZbrVAffnmmBqcTKdU~^ejzb9@wTt*jc(EW{jt~hC@zZCi59n;5=KWC$MRi2&O zY7*{as%qo+<>xs&T6M!K`{?8)7)dSXuP>zS&d)&-5je_dYn;Do`MH^PGZTT&CK zX|(3zbfo#dA6=aF`KI#vGZUt&e80Z+>T_k~U34J1W>2j~?S8|s+#X#f>(n+iU|#i> z3mQb@3YQ_G*@!Pcs9WD_Wh(BW?z1~=P8Ue~6}fgG!OYCnjg@zp4%rhm4RlwX-;B-a zagU#>P`gM2BZ>r%%d)<>cftDAcbSSf+1VU}B#G}I)_?eY=)^N2gc%~c2^NL*2ukXz zu_e-yIj?lxGt}-JY)AyGHn{SvLyo`7?Qr}~@Z(69Q3b%j5ak`aIxFI#YuAPvt`68- z&QK!Sd`Nna8`Azi?%q01t|I*&K2=xSW!&Qv_k<83Aqj!t5?I{b-F0zToW&MrafihM z1QJ3*+&zg2!q$fBY+6ZNgmfjJ*jEse_{TCW2s9z0!zhEm7!1?E z7hBiiv+}iQ3I!20H84p45d|>ALX0pdZRK#SUxX3|DK$~WcU%s)S07i>)t}_RFpJI$eu9_qQw{(8l2P3Y{_$ML28{MwDjW7Kpc%ZmMWJK~%iXRa+Xb z?Au#tMqfOI6sg*QpbZ}H-hZPCkeBB|UY-l12Mjp%oIAgo8~3P_vWk+(O$`1VJ0 zm!5dk)XH&Vd-Z&gF(6xU_m~~q0iRF(sK1Y$*VK$dMcI-+nb&w@Z`-Objy!5ix6Dl) z$neLpqq^teN3^S$F`@q>Kd;_2C)br@55>&kSKR;p`==f{@B}0o@JIBuVOh!u-E37{eAMjW7_ zZr>@jF&w-ePRDT~BM9ozt@q42@i?FANXneW!MiiQVrx7yYgKd2%{j8$6AJ_)LrY2? z&Qm?#RV9Qz*=H#Ze|MGD2EO|eN3_C(d z0;K>UV9Ww6f}NozJUIVzY&XMj$#xh5AjytIyqR&R4m+|mpba{rE`mj|dMx?vD~!%A z#MNVGp-}O_5)-TJ|GoK5JO;`MVoc8*RM^W6AShmR-WdDImo6Ndovk9y0R>hX{BFs? zL<5TMgUKR@hax!U;9&p&-2g;tfq+5dLRzIg{|i`Dga8YaCK4owKrnk^A%0v^52^~F zT!KLwAz<%8g@Qn{;xH`-1PV~efuEL@=b{G#Tsq*7WyPwpjN!fVuwmmWh=PIKthCj1 zYHmDx;+c=U{>^K;-Q7oWIxq|hN1xD1=T$BIm{W8xSefMOhaaP<5$ zu6?stSd+%6Ds#U2S{ zGu;_kUOhpV*8{vxdDGP=9D3FBU;g~8-|17f*YhJ6F5flr+|v$9p((pH`JewH+%xl( zbh)L9raw<0H;qcGX z^ZMU{G&AA@UKy5X0j&GU*S4yiSiEKZwWcZ^Wzz+OqOpei#vOH~LsmAcl7b}pf?(am zd;wr(!>;Rg23s$)D=HdzXychBqpk#yGCQifm2Y*Z<&3$t+n&r4R5#ONjfF+|Z~AS{ zC(~JGx+DeL8f##g1_oy2V;}(ZaPFN^)liR$U{jC%S}ko5-H)qZAmKsOO#_N3!>~+n zQN)Mam*K5-zanaC$QK+4Svpis0KGzP)}MNzT5sS=lc{tEta z>^bN~TmYs2^%|RGAdEw_I3hC5`ew_@;{d!N{<5?o*C4D9;{v#4fzf@xwUkqE!2(PX zZQ&O5&v$}SB~h0`3~)jr5DJDwxPY{qdfwrp>6oUl#B7n!j=(_T&s;DQ{di()4hw_` zd!@PWb5o?KX%waeqPp&%;@eX@Nh z>X(6*77c~@SxK`rZK~Y%)ZfoI^p=OdUev_tfLymBKJxFC&*VCP2u>O?bU{vz0~5yd zgUhpbOinjV$YSzANEYd;k-3G}ltr4Jbvt7jB)hoR+$FUSj~m|6F8#%+p;0+%j$J+cwO#6QBy;- zt@X>%#RHx}4~6NHB*Jd%Sy8Gr9-X|Zx%O~8@BZ%K;(^!O1PLBU@TxWtDnkMV zF&S)xBHx>Vuoi^`8QYs1;q0cCI4y9F@%jBQyr55ay@bnte6t@F!~{QoI{V!t8JHvW zHWK+g$#s7DCcM9L5r{}(SDk3)CPWS}5fG^a)3Ts51DqttIyhsHgoJ`p#4=zP6*P%D zZutB)+5CjU&WdH;sM}i$4 z0vHz)8HdDzz~g8a7y=;_fYp8-1WcgdpkNk*Kmdt~U;r2dh}e@e`Og_(0RY;`(L2br z?5YAmFu|z=#&w8>+T|r;oI&I&AegWiAPWSch&HOVEt<3*m~)P;oA;KW3kCux$+Kbo zmfxAl2KLDWH%(Ml_Drbm%2r@namdQv?jachvN8l@Wyl!T-}SxQIc>&+A1wXI=lA%c z@%RB@P5K1DOaLvN_elsz>J1S@3B|cm^G)YZJn4p~7JO#;zDjPvD*jgu(Uz0tf!AI9DIMGgMm;t z6C5fCP$fTTHw;pyWg*5)#B^=UuRAy0r%GxDQ7FcEbKf19k@q1|#H9%#P_p*+PSv+G zV0$!(=GGRh+rD-Bu6Wx^e%X$YOw4icyq4qkeQ1{zNK}BZXX#7|w{t*`K{pK$LQCH* zTmEv1&7WH<#?e<--@SdtDd!NaQ_QzxE@Lv-hya&jLyqb}>wZkCuM4#zJKWY?8J9mq z*m$=a4utdf@c89*&jW20$oytua0YC{vlc7-y<~%*)G(p^1Ug@$s91uhb z!U-4^_F4Fd5)p(@5N3i{1{6^M6&M&3Ksjm8>9$}H83G6>VIa%|I0GRf64}=sD`W=3 zEpQM}m|#o;wOkNI3yB;S0e}R{vUcm~reaI^GY~|8aRZb{0Ow#VJtJRL*H%PQJWy$W zQjP6_o!jeBG9VXfY6c(%VBWC8>?c;1)n4aycs)^f=J2Wp@^6n1hbP-WAPMo46vNz_ z$)&lMezmURRe!cGHxP-A{qonw@6JEoaV&tUWE)t_3z2rQ^}BKCfxTWRtBwp@y0hX^ zQMREjCZ5+jk(ioRW^_)54bw;UO{Z((e1@~9=P!EuggCOs*j4Vl?17*DefveDj+k*^ zpR`=xl%zLZot8b|`<1JAJ@NH+^A?AbVA;-wvjN(m+G?$yJ!ITmBTN<%6P}66@%4K)>GqVd@^$3KJ{>_|&j(<>6l9!VaN+2lRp8NPJBl18N zQ4xlPT-e{bY{sz2nmw1_z< zP1C{6Ik+G|FgZeoKD{9t93TcFF-i7kfU|gl7P5zI#U753Al0A(Km};J35(kyl0=;? zs0H0JATtSpxQObOIJQ^Rp}Ibdsyc@Hh9*Qb4VqzsL55RRk>yfQnC(PSjsqn*^(ZRL zK}LoQg-Q@i9Ym7B7~8%2{nKvfPB2XlLKB1?lq6E=)8QJeZ;I#Z@va?vWs6AndF>0r zVFu!~ph&3?B8$SkB^fH+8jReX4@GE(bm*4y$lQXgtWyDW2?Wt@jIcn-H>309tGBmk zFZvYXiAdI%Z+_bK!h|vXP63c)lpru!1_as$l6_9 zd}OtaJ(da89*-J0wExJLO0x^+IeVyJFbqANB1U0N)s8E71e-6(Au5{fdimvJ54j}I zlhLD9p&)RQw6n#1J8G)$bY%FC2{8>`MVWu$^kdJK1u>MA!cZU(x>sZwFn`mU$J|62 z6SV_5RC#+&?~&Ih>&U%Vz>zWhW!1NBM&`QmZY}sHmYcA0!x!< zWM5%wIx6A;G-_QaYD-ljz+w#hGhd%kz#b!59jwIn6`SF<%P>fCVvn>yI1I}K;{??0 z#;5C-;^fkCpe9e)H%<~2JGA|on;ZjNeweQG;^rb~LJ^B1q3D!m@+V;&rUckP5fiy{ zeQV7~@vaNUlKVc|0RaSz5)dlxyYw$N!7KtQ%3y*WEukp-zylBigo+46fU-&rzpmVj zZx*e?+Fh-%s2#GRf)T4-qN<~2Ob4?H@AqHdh25?UU`h6iH%}lynt4>0ji+6{igbF!=o!zF0f# zhh?=l+Z?j6D@2cY=8XkUTzuBS=M&E1w5bp})lO3=5QVOufXsXm$K>~KK4y0RLr%Q> z(+xW0J{dkuedVidPmDRBXhV*wRCL)W8RR&ONP23AluDIDvdn+3YQjSW@gQBcSwG{c zH-1?@et7Sv)7ict*Nd!-p2=1E^v$ce;<%E_p8RshM>guTR}%B6FTbuh{JJX+{Aka9 z|9bEwTyRT|#8Q6>!}3c~er9mie}@*hKgW}sZRyPN3d(Co4;=ThD0e^XGRs0!ZBw_A zaUw|gV(YRA^INMP_qg1MMB?`Vyd4{%3j|6a3huO}qxPH>R3NZ8fxsvTr>NJ%Sg>O~ruQC} zkTT`~7ihb8kAYAEMmfY}Q^yoy44@QdG!CjNpgnkdcAr!H5C|6Q zln6v_ArW<;Fw8h4i2z80!HC6Ra2o_c2Q(Q}Hn6rl1X1K5PyiZ-WeG__N4z}=tob|+w#Y@B6d6?(HU^tMmye#u#1x;A8BYcwd(T`!{Ksu|Lz2uTcK&`jTSj2CEw)Q8x}R`mff<8pgnj3nM70I&!F zs0bAzEF%uxGGH-aS92pw%gX)twxthQQT=E`5zy9Bx8%5fBd$e?YJ?8d1X@wmnl!cI zFT?DdQY>jIM{|7lN;qOL3l1)VrARc|7tr=GWo@tyilBhXBvA^wua=0Bb^;9sfde)o z;O*@zaY(P>;9y|fN`y<1a94wLlXjK#gG7JTZc9p!nF=E3kQjwY06(>1XP~*CXqb#r za4@uUGPkP}?F-B}ha^ydm{9C0zWr$v@_ar#{muZOKwrOdtgQ*ap$f2zA{0vo2nQ!7 zOdf}2F>sykt_P!(ASmb{B7sDu_9Au#YP=aSQ9?|RARd>SK^52dAMZG zF!afECuW(ir*w}OcR1Y&}7D`AMc87LBZ!yJs6 zq#)l%0Pt0tc0!c}Sm_bb?>97uDJU_ZrY3k`7o9Tw=Geb~a<8upp5pcfq@UIXFVD)d zH6J&%-#?IqFrpiGbY#rHg4^n=w&vED^hk&4as9e1dd>J!1OPmj?BH=-1|=LeB{|7J zhErU5{ItBQKmE1xagR4EE85sRc)<$x@t~68b3}osk?w3DBSS)_KdqIpam8t~Zn^xP zPe(>|QmVk8y`{2l;o*!QC6EL;QnwpNL&(a_?C~I8w}OjKA93exFRmEpbx9trDKhB3 zXMei)u(5rv+p}Na0zb;CQ^(5x436kO1~T2-Z7zVqvMf}E+a59E+7L-pp=jooD<&Uy zTBgSr4)YkGrFN+bArq=Iby;0YB!s$_Mtoei@l_dg5+wvVRQYiBkg*Rrl!ON>8L@r` z+>qf+!|}-(LwzJTYf;7K%Y3q3ZWYbQ)QrBjjqf-3TOmbhPFyo!M!HS}D}#;L+)|A# z<-2asEF9@Hff_MZf7YM_u9(ql@NVO48hgCIf(S0A3`ykvRJQI;UDr<&Z4x-xZ-@H( zUM&*Z?drci6hLb%sbbk*jsr4Fu&8k-DkE(G;E?PNNR|bOirqf1KY|2fBtc_10FzKC zNF;gft9jo$M93is0(P`CAZ{8^q^_)3>B=`G>-~qqot*Dx{1P~UW|}IsOq1-dEMjm0 zV1UV@U^2nx@-S|E=3CU(Mo}n9khCa>ETPScBcMm2X)*X+4h-y-i*ZA;F=b3K4jNm6 z1BT^cT(3g(b$Vfo>)_EC%xD}y*^8k=e9*;=JrV9+h1(H_qX+RDGNkt`{a}o3Q9##DneCl zaN2DxQ%4sbr!rv^6XUSEdDbuM_}!t1HZj${qMCxZo;t4RvH%_ZGS{zQR}ASKYChgf3CyCW0)!azw6+PbyJE1Xj^WjuepLR6@64_L zB+y{Z$n_d{;o}|uT)uLHROBys$(O6b=d>ZmV}m2hhk_h86bTR|7sU2m4lm6}{4gGv zGCgwqiC4eAzBs!?ak|4arpD>uF@ zQE_xcA@IkAABSe<-kEBfXiNj^ri`g7*mC6Zs$KU&R$PHtxM56j@8^o_-lWEtixQAJ zIZA$h$=v%Ywb1$YxCt@ahrX?`I{|bnu29|Dgtj!alm8o-HE0yJR#vvu#>0Rh!s2Yd zCA)IY!5If_kL@wGe>1Ep2n^1k<9FBH{&S$Gk3H{KhwP##2tssEKXyk9cAp?;S%{lDWMT(rA}k?wmgk-ZxIuIETeQCJ>!3{#Wh=}?sx#9v z_FJ74XBwdjH7z1bp-}URQ%bV`jwH!b9cXSbV0jq4wv?;Q;Ml(EwLfaXH{z`KNXZJ= z7H!w=I=FYJoU7J%lyNvk0>N!21}y@>0U(KI%rzx});kGcQt??1`&cE+mV~4|O<8behxMZ4cG&b$+RVJbYmlJ?f!KsIiz4G~Y%lr|QOd@cU zEUyUMdB~8wWdO>0yjL7RI1}92gAt~H%^_g+q=JXH?pigxA#R(T>0nu(FRuRk-;T#Y zNMm~H^EgpaojkjEPq-X%^ARJnF8+E=;A6W}_Ea_b4twphFHgDdf}>vV=rewJ5tgp) zHZ=H$amnaI_WC_&#L?E;R{Z|P#m{8J<_I$r{k_@q#uN{D(J47VWfgKaY5&1!6g^qc z#-`@d_t!6e)+Z_UxM`xm?S08F+rLWZd^Jr=gr<6MV`zq9Ulgc(T&HB5XfT+Z?YR8F zqpmD*Wh4r#V|&k<8E2quZ{hUTSQIhKKyxgNmUwjX$D39>;}Pwy7A@K^IwSA%sU-vN z$rW92*lnPlk_xTViJ8I=8&{rP9&EY6X;aWj^|nKuMVB8lb#mA1?_j1iIm!dAXb1+N z+PV#&dYTnaEfmx&azC_uN2{bs-@A%Mj|7y#OCfQ9{6 zQpy>FQ&tlOp7Gta$^R?x-Jw=$iI2RsDlGauaPcU(ARsQpA)D#Bdpbj+0xZfwhz??^ zXwexC>ubl2*Bpl4c_Ks*Fv53pO;dtB5}NjSoO?Z4+RmDlDA*od>c^-7UYvjIKs@uW zAMon0Rj}y>s67)*2td&R%_rgES5{&0z+#N-ErRkSUk^MpRx!pP2m&}~uq+Fz0Pl{dGTRDPK^7%&u4A9m`jWul5^TH; z0#tlgrXErsomYJB)UoFw1<^kM)HZ~mIx?W9e!OdkmZ+yLT~YTw^=1xp*{%F9wl}|X zcE0@t06%x>Edg)>NWvZA_u0R@@yKDPzC5?;IpWsy14j0wZ4JhALvwKkl9+8#6p)we zLqiHCE1ON;HDi3y1@F$QTjH|oE(+(Mn?Ef7`QxGe$H;05F5f+2Ng#n@nD(UQ$(_zc ztQa*o_uBvbQa@jEQCmfbO}^);PaglLG<9^pAIoc3ez7@J zc!oV=7ry;tS`U8 zE67C=J3&@V{#7(2{k>%fh=04jvK_&g22+(lnYHix7b&=Dfigf8C<3rBg!qst*}!PK z-T8B;zE5COfJr%23#gIeIMP+JN#x8T0->-N2QfJy?fYGg69-%@j5t*hu^4We(+g)D zJ04!U0T>ntl@qg_eZBhKE@BHVhlcB}I2fZ2sKlKwtV3LDfI?KX$^vA|f=(H3y8k1* z_tc5Vut{B3^-Qq9z(64+#1yy$k;JiLM-VqZumnWc!K8#xeL4_?1SKYr;J}TU43@!Q zm^w&IgCI)af0iz84@f#itHNRTN8uM@SihG3?Wx8k%HOX%>MSH(mnN`btAH_M6Xzkw z1i2-4_zU`iTNcJ0V8LX3lX0eT+_^Wuzku3u^9$`x|J)S~&z~`~*F^xj@)wH$Tu55+ z3*hs@A{ZgeIA0)P?2-54<(n}-a;3HQIW z({l*F667$Hz_XKPA7=hQ1{|6UrMQdsnU3PRPtqanfP_6<%fAoiG1Vet(fY zE`Pa-UVOmV)}Q@e+vhzU!)8}e(tkjY=K=uNT-581b8i3lVRj`uOLvm|$6o*C?z3kV zTmb+LwIS%*?it^oF8(}aa2MG@^1<3gckZ$x=lY3^oo37Gi-%0R7OBJu_JE*8(a-5g z`T6G7Ml9X30p(WsAC*?k!aaODeF;mlT{oyx}C`6uWYG&+%k;Wx=n!46#VMyLr=WK=S*H^X2#+G z=b#oxo1wuIietUjjEZn8!u1Vj{uXaK*RM$k`UD(URC?E814cgI-H@^?(1?bX9yyt_ zpIJ8dos68^31VvmEwTxr6BjnIl55%S3ph=L1vS%x)8|7h8f#DD+dl`OiSiNn6cr)M zfW;XELiRbyi>CX4cfyrF4ebiaWRC$V1Q z&Etzvt;OLIY={e5+SAAmpMHCA9S8RJyt1v@`i?V|aApyKiu-T*3&4R^BMP5rM#Cq! zMCBuFUQylFs-5uS`wJV+JMq99(2Wt^wY>$s`e%R;K$0mWIkCpsBZsx@_R|kL@9%Fd zd`FdtPowsMpZvV*u`7-rate}(BM1O@VE6Y?1;GL1vw-ngIQpam?z`)uc?C z+l23SvP<)S*;sSZtU*sAiA#VGKv9s?2m|1mUiCFx1OY;gr!^KCmuL1{KB*WBRAw_0U!RjI{}-eQ3=#7vfVD|BysJ( zHkD)LmMy2R4maJFK@|jyc<7Q5Q|~JAWUf;M0hW>4qbV^96bUw=RN$PUB^o|^N3`*9 zw_=y{cr1AF=;`<5IXz|Qh9sr~TBzr$EQ@i(nK@u-bH$BB5*)F36cY=2eK6dc`=Tf* zFqnl%CtFXfZez(=zg2C!l?9`Jb9y~!F=I<^JYd!ZvLGhqf;D4W$}*I2Ja+6adc$3A zsus04%xK@3_~PjN-Y=jVmWBFYD{7-{J&lh2pZV?E=OooWMQMznS<>qd%ISZ_`qrww zUJlB^_nQGGiTw@m=R4Na?7Ek#N?-m5#U6S(fWb^mEbNQ2wTmFzoqsA0+%XPY;1C1~ zMFS2QItr8~{+5s@+<&K^{)qt+A+Wdw#R7)-^Hz&RdD+p;b&YVi9f{c9pSZCO;zw#gRl;RKNP0vTNzb1fAVh{`B0*hgQE+NvTpt(iyzXFJcF*^) zIqP9CCsaj3#3A78c{_0Agg#xKr3elJ0WeL3Ed`&=+k}5Sy9Obr1;yru5#I%B6#yi? zLC>-hL?V`DfiZ@|M&-SI+JmpO#K`GB$uIx3wdRt*t3P_q z{@cX!ks>DC))GfUZ5-KosR>L*4$A-b`m?8<^Urryedyp^3NU@_Wqaeh?T>k!V&KH1M!%YD3qk-@1(M`t0RZwd z)jI~|n}t<1INK#SNQb?OO0cEzp7+V~!5>V zk%qFpBI?`ze0VR<X2JB8Svh?IPpCZA- z+!LZ&eB#=c+PnICb9&VqVXZVP@9_}@z2~QMu39L)k{g|wz5liPr`P;;&qPrWOs_+E z>BIr!?j`NS2s*Q%@3AtJL7=2g9HO7^SbfKiVDn`zj|+{>O>1YDj=CB^*Tex17}3-v zSz$dsYnTSk3ts-W)uy?yzOhz z*v>P(ul~XgE(TSQ5RFFA$CH6!nFZ}RIuzs&)b8$AkOZ5N0R}t79|rpK*9x;vxx>A2 zXT@bsyDh;ZEhK7z_XQz4#Smu(9=UNaY}^S51|%Yak|-zv1PCBp*!S!?o*>hPz(6Sj zp%$1$VG42d&dxw{YY@Lx*x;1oU@;Aniy~AV!>PxWLh8g5&D#H~ZPRi0)8FHjuWDfW zITWq{W)O;61eme3*bE6FyA3esiMq3z5P4x;RkSJ`))Fo%vVWrvGU6~`gIl5)HYDRm zi`uj58fwSdWEXY?B7-+?tsFgVZ0VP<3|$iKFqsC^GGH(VC=Wvv2sBNE)0KQM)q*B6 zvof|iJ-p$^Wm{+YoDLzXTDA07DXD%3Tm{(T(9l@;}(HseWQC zs`mCf4g9*gX1Zz#%VVK%nU~ri5!-OZ%4cg- z%5_-|^_P{~W;WK;eI0IYuJ!mm$n;AP6bquvx->!IfXYGQJ->&+XtcSuGFY)Q96nK! z?WhWBMNZikoG`x6vg|Ac9-l2`b2t=8UID60>ZzHB9o*-;Prk1>+a^SnsG;U&JK~$N zRDJEF!5;jurWu5wq}4FbaYz(`Kc%Q8tk`tZrq;&mMMV{&S`;Uam~`!wK106od%RE;r9H$1 zSQbyXI6H+gCOI9I*!Y2P7Szlkf z3mfYy;I}zpP!4J`n4CeP0z^sba9#HLblu{Ina43(ikk>Puf1dZkq7rLELmOO(u8%5 zdwbkF@@Do62yn+Ce**xry1sl?V>CQmqC$EuV$yLgi3ONpSva=uaQJM_gduFF_Ki`B zY$BtYN3prK27)MJUsI(xB`|ay4#fsbH*xsbNf_(O1%sJbb}@qVh#}HPZCeYzso4x0 z60Uhp_YjQefIvY_4ub+RC2LnVSG`S7nN2Eeac{ZB83Yysx6&(`>6}tcDMfvY4QC#a z52xY=Bmp8-5;vGQK!}`p7=MCmnot6P(1am}2twq9i-Ed8L<4`DH4r=yhGlXPRe=~b zQNwk#GE_*M5N?)&@Z&0@)xS!~_)-=w=Ws?S;ApCfXr030z=^1Y`^^ z6dHyX3Yaz454U}PGN&d*WNcscrtDn*JBA*M*<_bc*UFE0>*ECvAd#z_6o$c3vAtWe z2cDDTe(}sHgRTn%BOy^}Lu1H2>!v5>egq`1Js}Cvt7HgI>6>wd#)4ZTOoeI}oo{}( z<;h4y>(7itT&8oAxekF_9qc9m=a57R9+wR{es}Q2YYv_6VcIHF(&5g{v#qGsUJr#L zBP@$Spd3_4-5>xJp=NAvs_(XGgyF1{2LESNq5UnYMd6Vg&W{%?d#JvtZA3Z`Mm9wV z678{N`t4-{i|p^j3_CmyikH5vzk5kdXfSaXAuHPkOJw^zgDY_PAXz}fF!1f>)&7U) zfB8U=(Fq|cfHj9UOfMb&nBVEvm_X273s^cDjCi+gXCz>MY~I&**HCM^WoXcv8#i7$ z`Os?)Eb1Rq+)i}YB%9h^W19Lu1|V)4sEY>giV`x?PGy+7_FJ~c^B|I@0|ItMg-upK zDBY_u&Ji#)7K#}c`s*Viq4wpGL&=oUgu+i>})8OIg4 z{A+vKaDQN2elPsAWjTJ@vYh+a4U9Hg_|*Kc{QZSRf95jNL2%+A_h~=ITHa}E3(xVmoYKNgEtj{& z7kh6!?7%I=WOY^iD|4x4k$yT3kv-<;{P zNWzjxArJwgNIkG1r~Ypy(*W;p!?qZ>GOAQJ$;%3 zG-=|G3Vpd@aDhIK5e$w z?WzU3r-0Wr4ZMdKdsNr3q;mTii;Vg^icJ|IYVEpY>XBz<+1`L#yLU=>`LlTOIVK|vZA`|9$8k0#LSpB zJge~0sabuKXDM?In!@-7;!*!2OTT$n64bs_B9KGzx1T@tsx#3|NW`=(ls9!RE)_TR z-cQZ@^er_%Z<4BUgspgBs6F$P5xK?d;{OF^y(5Q=L1}jW?%#!aW!~ByJFovUOjTXL z0im4)D$DM|H3uJqJAQZ{jnN3)vJDnEWTQi9W=8WFMz5)RH%d(v~Y(~zvRy?73s|e|>fIAyt&N;kZ z6)u|u(r(HA%xX7XaBhK_iPe!qvXJQk49fr`iCBP5p>W%~Cc-ExP*CEBZfT&B1Y+&` zLn07hvIrQZ;1)r?pVz+f{(|r;?=L_{6aQohNxC?ozyHF4z3i`t!%;x8V@+l7)Z3qa z_X8wym6Iaa9LL&~-6y{0XF47ptrWi(l>gqfLDY$ksV}_u>l;Wj(IBFw?VX7KZDzsWE1P3F z7bV0D`>0=5);yTbhRoqk5H<9S@Yn&q%fq4da1aAPv?TyN7=am%b=wwiTsQsOt*bB2*F@CO zIC?w1j{{hq&N-%Od{NOR(!v6J-({kgn!KY40rtY#n-CMF_K6kOg*;h z`l(0XiXQS27H(hD)8+PlW7UFJX9CN20IlK|PBhE(_p_l1QvFO_-*+yX?~-98{5@ zC~{&otQn||wqcYr7yml+Z1`*r2>Yxqw12@khbc1H8QIm#m9eRpD+A&&hxZ16&p-aQ z^-&AlLs>_GZ1+gU>Y-@@Vj6?V2xQtp=<(MYVFCeEBH)xDW>Ca55t1yy0zo7a!KhLF z;c#>v`~<|&w^tUvT(J{5o-FY0vm<*r2MSR#!5Lu0O&oUUh@`T4buA{AuT4q@wLcLa z-p_Xfk>kepE%oQvoNilLIC|{!@BZ@a*~gE$8c5D-9E+ML-x@~AfRuc`x@z zxpw1$!;0@N&U3=;>)sX%f`o7yc|QYtXTEvF#F7JkS+ns{myjnc-WEQiaPFe_4jPuz zBV&|d35Xg!*VmtV)Rh0UyuaXw#*jGEZIiuEf3oynw`5J8q!Ui}<-2t8*qI1xaa2bF zqra)x^n^oHZDu%xnZ5eGJSa2&D;p;u@zevVX_{c^$*p;R3)SB06`dnv)Ix8?{nq&- zr@ssUZOv`nZs<@|II_GcKMyswU`1;^HdSsOx+2>AXc3d_OcG$1UWmc07n=q8J3|;7($ML$gdobPXY{ zAFHLrYx&jLSV>hzwE*#%ybh3}?zHKTi1CYMxb`M~jgOUV?0;2@XFfcNw z0Jlv$4)3r34f85DAtp$WZE}K7nE`}zaKl0d6A-ctXc7U}4cIuv*#pMljDZJ2r2=$; zLN!>5fZ2Z+v|V+=@Aa%+x^puJ08ybb05mvlw(5`&^FUAJocDx|RBz4`N5afpHdi&!9BXgGA{=&w`twb(MOTK|`GLkA`dE4-|sF63!y z3!UV5=1PlpwVY{vyp*1D^pO`Kh4M~oa}35hhTel6;Dmz^3#v@PZ33Jw1sRzZ6u0O6 zjdh`c4N?0fmkP(+HSFfT#nFZwhyP#bB=^)YY$v<3{fqqnSdlG_YK_;P=uiZyGAx`~ z7h-GNz)MKtE+-NPbpR}q^xa`o#}?gG-ViR_u+#Uq!u){n{@l%1*|?)D*JFRnmfMq8 zCqaW6>7nwaC|APqGY330e?jBHG+P=ZA>w&&?ylEH_VOR(a>;d4H?m}+2=vZ$^vLK0 zAoBcGhs`0Oozxa8NoblA(Ap(GK&R_f6Rm8FkUR6_- z`{;r%9}%6dT$d=DhE4e3hpY4LPc7uSBsu5O68Bl{{|sr2+*fBq6zoKRP}9J%x)Bl1RMc2_6bT z5&?^$k2eFiOgR#V)DFW7tLI@;a{~wg1W|+}2q2uJMPkql1FjG-HK!lWnlc-`RR;*? zV3a_zI4nun?^Q>;_2=7vx9IP6*X_j4UAB=pg=tw3+|p`$`@Iz-)rn&I(mw95mz1>* zmZWSD7Tkl|IQebuOf1bgM^T9n|Ne3KHu)4wD zwr*GBWp-7;wp#6!r(XXcT@yg`#)@a{IDrSKO+q{tINru zs69U$w@0mf@1KVrdge`Eu5vn*3`?N>KbgDZhQG}jeqBLk_i9KC0F9@$dI^l`tG>8+ zTjX}T-G+ED_}uChD?+MlfN~YwG(oJ?MvDssOygNJZVHCL=$otOKj!dzX6Pmdn6>f5 zkrOXMiiD*-;YdL~(HUAaer6N3PP5xou((!!_mQVxEQ?Z&L+akJ5<(!PHzqhfT>tCK zhC`ZTClp}j+?z+uxFppzP(gs0T80x9!RFg*^w>onF2I7d@ycOSPsbj{cTdPZ7f1?P z#BFtzw^it|3*835h_QZhPU&qXkX)#t9cy>?SVG?at<8&HC!#pfVFJNuc-MnRoplwn zto_SL+6^WYm7>2d7tLn!clF|-(;ollvbobJXqG?-Op=IaOG$Ev1Wpo_EA14$0tYxK zDCaOKAew+B5(u3qukH8TG);`jEynXRPe)MG&=?7$qOA!LQ-f()@cNu6@nj-LcEP2n zKnKqgAqk@^kiW$Ea&VYdA}vhh1aXf5k#P{3kWv&ou6qvj`ZdT!!%|5(0zYM2N>jh>qP*ud9vw{7!`t30M0ytop z*wGZh^Z(fln=XOa%-s_NNs^$66c4?#2HUo^;<~ekBj0aACU*GUCL-Z5G^Y=OpzU*{ zfD;ojLxRBk7*uL|f9jONZu^(?cH;F9_EsP(Epgzu8AEZ^J#S$8tXUvh3v&G`6h%Rh zF^ntqKx=A7UTy|*@-ne@t%aREhs|Q+M;6|qI&I-4Ybq~iiqlbJD6?PrV%5K{KYP+S zNWoua>Of;PMOH!b5SA)S_0QgN^bwc;y6qtf z6l#{Ia{BoEr@vXW;~tOGg*N` z(6tH`b|mXeMFC=Ju2p$m<&NtrwcuscVN+w8w)3#e{x`TpWmU4ylFOdT_}W+0@491K zJamPZ$Z`XT?3j|%_a23cUvwA9n!jr!lTULTVIGzOfk-2NxkfyA2}C1m|q`jr_Cd?Dme67_5klo1a^b*47Yg z87?rL?bTmq1dPS->FR1My(NrS@12CATn$c71U4xK2w5;0K*&ClkWc~>6p|K?jp*a~ ze%XQzJ#JE%<3u28BG<1#b*ku{kzQIq;UaZ<0mz9xRc<8OU!-EiKCXCMVFU?gB6V#Lv_SIWs);KJj3o&V5V>%MTQ_Fhg4 zzDGXY@~_f9y|xq;J2#@!w^39?aErq-x(q>qml3N z(c^~=tsZrtfP#|#d*6e0cTX~JZidgX?uLt|o$>I$SN}UppjlBlyVtv4Z+Y_Y1LU)0 zN6(_FSx!Hkw$xd(9k}t#srPNH2pm-3LS}efhV5S;ue^^K;V%Xc8QG(DaJIV$4yDJH zU(I$>$5QI3u_D+CI20=5S3IZPd?aPgdC_yzS!U_oy|P$7K>wJRi*3QZA+iFi*jDjh@-da{=9!i-oJY~KMszHc+v&uUTA4) z!@_Or&t0ZBKInI-(4(ASq?X5_Zfi|m1SrM2hiJ@fp{>C zxMm{DZ^wk<0kGR_=wtWegN=(3Orh<3?YKkJIUIU7mw#RxXdA>h2V;qFMR$)qA@Y+b zSKZK5gTYz(uuMIr2c%WJyFmM=@@uE4Z8zhfr(??Uo5SN58u}l zGX)uTgwPVVVaEBd;pGQUz~oX6NlGw8QHplsx$ie<&sno!7^rSzxZtLDP!V&%uE@}| z2o#}R;Jf3E-~?Wm2LT>ORj3)qUiJa5IQvkXd`Jd{^)5j}a~wpG_dQO}C?t`gPl@>L znI~m*E3VyvGf&FEH!EF;g(FzBy4!q>lo;G66WQlZ!;g!4PBa}gEc3Sf+|1@5moNFd z+g^nAyUaN^KJ=ddmUCv#K??U$8W?DmtgTdjtTB*Kft>0lkso z>Cyel&N*t-4fnnH?fW9l?5{fP1@C^h?(=(xj64!Raz%-D1mhfzG{T-G`Mz(5`OObk z1=#5xN#8BoMg;KgR*!-zgX<=!YC~Mt;ec4(SM_f%c@5x z75aezKGpHzg=1&l0=fv{XKvYbj`@=Ef;mz27{h@92L~Ng49=2jrE|`A*H9-YpDDiIz5!#hOHi1R0T>)Y zl4_YfLz{$&o|DCl=+*0;?9U3Lt*DZ~q+p{x0VB7-hAlzmqNE)K{28lzk z>=11_qR7Yf_szoQ5Sac3j#H&RS2z4@brYRuP+Ilt;#eQ|wMMsW#`1!e8o>DErp^>~P zAAR-9sTZCw;f0(GZ@1f8jH5N&{V{xAmvP&*$6R*KeP2w`7%!nnywd{Rd&KHA?(w)` zfKmc?#6(ag;Do%dQt`eXF9?8PnLXx-RW{UNb$#VUjnukWu_&lWHXf5ViZ>MqC7=uiSs7m)+<)lXPFYSmgCkVzE}lGSZM@|s zQC3DmpvZ8$UOH{~ln0cgNpl1mGhyi#n&Kfa3y2#UqVYJ|tk|628g|{|l59#NiD6u3 z(Wj%cdp+z+mOH=!ZZZ5+y#=iMa?E}|S8RGz_PHlCQXRP_S$)R%8CT|cGPbp~_8em} zOasJM1>4u-(n&}CkzM?@c-N-Sbi|JZPq0fRRWI7JS_TP5 ztnJ|je7^oSoHBkI@?~ct+_A^1v9kxIBa5Arc3ugR@PG**FenF*U``VfYCV6w)F9#D zEaCcI-&l>$miz*y${^sNQ~={Fp>He*?JHstmabz^R^H=B6b{{Mpcaog=HNYlU%6__ z^Pfj8evCvZn3*_;NJUs_@Mj8yz#ix>1%{3FZR$6C>Rz#Y=y5^3P4jr*5C&SyV>rkKsekVm5v%cU72laX4?YX=DL1iX_ zBx1a54^oUyQ8ca+0TySd7GlWO<+&G3oApG;hjlH@NJjlY2|>Oqb++@K*iu`0)OTg; z&Qu&uScVZfs9?}zlll(maR$gZ5Mvzn6okhnfVdVzV{@}(X=}wTswEC_i3%Ep_^+3Y zpK*SU;!HXbV-QjiwLmkCf;U(G{7PnK&ViJ3voREyH+#f^w;?I32>~Y*aXkh@(^1jd z0K?!2#Db`6X_>q+RCj>`iYLGgGgnk!IdQ=Fd*u{@6c%UrV%Hi7pm33}f{5zD|&Ron3KuGOg2+K?%zU_3z=aAk_WRPVUlu{Um0ZB^V2#aEZ#xcPFMqrr~#~#}6o+%@98(Z4C-?q9< zLqljk7qSB|VTU3+Ao>(A*8LZ0(zuepYgUo8-a#jiHOekN?LuI4|$qegpGSnqLB6z6mNN3{Zv&C_$h#>G~ZFCr%!6 z(n~*;&DRZUM1IcD{Lg+`_4>^5r3V8j@9rK6iU@nA6Vaxg2c~lMS9+~TkK@5i$B4>~-qAr|8pmXY`9#9pOu^|X=2fq2hzQvkr)mfBmI z!_hNErvqC84b_hfJL)_j>AV3JIt|==!|}$-pPzSo+y@%m0yp%X zoUkld{j^I;a9eu`{dCT#$=9MAYO{1rq| zgi6H(MJSM1IsLB$6Vd1@Vgw4+LIm(-9#v2qN**5O*;b^nCHc%e;WwD!-nEq4F`RL2d?F&N5UqopTG5}>E=2~-5J z?V543Z+m&o&tIv6?9tO)w#qz_m?kL-WR}qEH9E*Oc=zx2{{;wy!XyH?B*5ZG%r5tM zBnbi{fKif=KMaPeCrudto|)viiA?Akzc~7!AIL!`}w(O4fd#i8?r1bvDoY3HF9wg z;aD_0dCb_)d)g@gIK;Hd4#h1kH5Wuha<*x3*f=)adDI!#p*=p|ou7c}R*%XyQA0yz zpn1}(JC}Ww;c&w;Ok-xzfG6@)*LPG908SEesU09dSnulcG%SYdP^+}2y6oEOQ0p-^ zNku@9hRz!@<(8rO#j88_=iL}zgIPm9+OhUYhfb#GHfs69#@l0j1$QHb_r$O){CmSf zl(_wnh2(Bw)3W+~xaOC~44X8IKme<2ZoKm7ldddw`PU=X^&Xj)iQ2LrleqR9M289? zW~N=qGa#$r*8-boNwprHm9CaNV+JgmP?k~{g+wU~mY|_*4<06uC;uOTX6jHy39=}| zvP>A3g*{K05CRnxamrvYhH-g)-Y?0_PFj6H70S@LjTF8j7khBBA^+Gq%I2-4oiY+Sx{&U4to$Dmxdgdh%7rrmYpI1d_aT0$0fq& zBJkNM96SoQTf&b^t8x6Ti&0S{V!{9cHpK)HRZxm_$n?8jIHkL_dpmS|(*|Qu4I5gy z39n*X)~8SJS9{uIQ|li($IDi1X?p2~f34kg$uo<;LV_LY3IN_evJ(K%4IR-)2oREA z-@#M+K6J>?%=>~(RZzKv%}x3-kG=iPdjL|B=x$lvy_f9p*+U+gKFIS#bI61#Qk2(* zk9p|r1+M}~THiw%1!WwRab);JOc|4nIfs^D?6BfPm>wvX1r-jrn)Sjr%bx;}vdFqS z8`-ay|I2wVp*NNmrZOAz4r4M&rw`ofQsvDZSZ8n9$DQ0)u@-qr>)ftChl9lQB zMHOYZo!R(gQQ70@hJ(8U#~eI3k@VPoBZet~5e7~Oh^XyujFUYZwHSk#Oq1_V;Ma<+ za~3yM+=H+N=mw7KGx7qYNRHbRl5RodfJjKUZF5ceus1g@yv^tFz%&gMyL>O6Fnr=a zhZXgK>UKe85+ZS9cS~k`J5U!69KW!&>P|0Hea({9I45`TdBqvo^ON2YN5PcT)4B1vhtV@k)~5{iaFAwXgjln5|sYC=Uu1qcwJ5D`qE&?yr2!0oxX z|Cfy~04Sma4uY7WLFZONEsT;x*_&l0q*ED(jSC>L*!PqB4|&-yIgzZ1v3T;lhC?Q1 zKD_+3ien>rnOO=CfboQ&!5?w+0!SoBaDeVH1OEM|j=Z>zU-vH9252JdQ>0L+f=Hwq zr{3`m{(kjD96NF#KHsnvvbgUF2>S{u5X7Y@&}QKDQ%ByD?+b@lSEpVBa6tjYlpM<) z$p6nTWtYb#@2LwHFVB(`mpvXdVG*+*hlP1d!?20UmCfPCcL3an9^8IiKsf4}s*&Hf z7^vTC@X{s>_dQ9J1I)Q=x8LqlJoef^;FveR{_VNr4jFn4lEmIDi{aNFcVN_kMX)EA zS~R9l7wT_)K4N^_$&bu*6CTX7?l=0F1GHeOG+d9B?O6cz$>{?%nk@yJmf}X~m-jQ0!H5 zymgAb;Pt`9eLi$3Hi)8#J=bPffzq1E5K>s0Iq*KiFP8vQZT;k^SuTdECytlo^c z)$Lbu$Y&duJxgR|k`mJ)2z=8GV-G(e!{)4ycKSLr2AUDuwF^xC->CR-0$3u2n5HiL zz{1{Zrqv9-eNn@%`(!FY-~_~C;50co$6m!QNZRH9GOqwWT>Ie9m^CsNl-rPY?a+P%;dTUBt2I2w{^C&w70&CfuVxZ#Z|X6@CF|pFDqgDP z(IcEixv*&_I3utu6Ouq+8U*ePCjw@y-}a#W&eN~@aNMJ}9CxNve-D68sKfx02TG8as&$#>bbssBo$QQ8{mE82mH*cME=mCce8t4lbxJB5Vd*5GUujyU_g}F}Lf9p{I zaN+sa&+Xr&#tu~C{*0GC-|*<7Rr36U#`mcjF}Qnv`LnXhky@VdZB8&iSP66GCQZ>|6U~QmDS-AAKH)C0zBfW8g%6M?WNhPI!M~c-o zW2{Rp`L6mJ)EiOk2sLFbYuNdMUv?BV3l@3{t``RS^KZ?|&e`3!BT8Xe7A$7LGEG?E z;EchvOqiTI9-jZnzbVASnpFaaW(Ln0IsMiFIfW^++8g2#1iOhq8O$tww`|3WPO41u z7@}E=aLb*ek2tZ!leMXH-^!*sZ>y_P%EpOc-NhWW%TAwkN!9jHgusGL6?2ws4lMxCuiFa&;BvU&a`ZenW_i@t zGVE-n!~s>ZY&X9=|M}`bXh5G5A5yiuE}P!te)l(IQG(CqOW7J@0sLpns!RLWvqr{E z9Z_bM9hpDqOmvfg)PaCKz134oG<+#CJV!a=3^9?_-Zpd2tt0#N-|leO5v1l`O=D(v zp`x6hn|FScDL9LRmH`rqes|uOX%7xA?wW~CbPLgV1U2yxHdXAzvWhKOxM?lESo$-b z`{h4(NUHrPCW^33v+=xf2OrVjpSvv8K`VpJ_;gFkj{#up*A*L{^Xbwgs1lm>;7?=n zN`@3vtj?|5MBWwq22ydzaPj+_0cw*ArzVc1gf%J84a%>E@Sy`~I76)-K&x z9cVrz-JL~=i8eEaW-Z)f^Eh42*GxJ3UNxfcWMB{p-J9Ix|7no+gkx)WHaU$O%g-Ef z&{IO(LbvUt3ocI(j3jBYEF#nHT(^9C!#K-g#e2p|_iuzL`9*c0BTlPx0V35Pa4$?= z2MP9+{>Hx&!GIRH;mqOZA3S-`CMwvFsx4k0MqP6ptpPn{`+DJ~XWANK$JrH$8q|c& zDF`zX2?>+}R6xR{n9!*P5EX)DVP_K?Qn!7*mL-I zX?McZ4CsallLD|fHg0J~ey$U;EFuyQ!Llf#K?6Dmnp?w~7L3em3PmOwR4h~k!M>rg zarD3(WrystZF2eD@T&@lC_qtFFe-yv0D}k)2_luC$TBi~&IKM-$lOp?cc4R7No6oJ zjE3XlsKGglCAsT`cf6j->O-5Gt$MSmdhON_JIpSacE#cJwKawF4;kkW)6F%W2IV-~X$*%Xc0r6EV{z`)tkOK<`-x^!WrSR*p`)jIZW*%hg-bs$EJtv5ItdH)gO}I@A?7x#b1enxLawa zqe&(prueG2MM62>)@*v%7AMC<1yDlBuXi1C;_+@-4a%YfVUJb500Lq%#F>E@XNZNu z&|tyTP3(#^-cm))i{iTBG!0gNLf=sr6lZ3A@1$~4W~|ykGZs~Dh0ZNFLUepLT8h2je)Hh!ldszROkYx7h6VvN5^6xxkRnv=xBuyLKR8>YyC(+Z^C= z16GRUKqk`NwY93EKuna7IUoA&gZCQD*m)VM+eSgD%mj!U10@ueBnred-K&}_r({UB z=6-oaX;EBKfx==87GsI*`xO5XN}z~ReO!wN%K{DKVK5gZLbsuk|7Rc&=$4sClw1s5WuMpk*NO_q24Gy=WV_O9sI%8Jua}A9) z!!*brGQgBlNZf=$B#?NZ!vI4wOs%lcJ6AMfa#daRIKuo=Q(PZZTU*05}oBED?erL6IeR+;;RT%*5zHB@3!olzDeV;$z*CSDLr0ep;bZ z*p=Z|S6Lh!SkhiC+i%CT$wRlg!fk;c%bRC8gG{K>ZG%@WT`e^3 ztoR|fFax~`?8wY?!Rt}>YCf-utZWzBS|W*in!1IZT7AvJo#wIGq9tw*wGF7;ULPs# zlesVw(~zt+v_?_i5=k{7?$xG~vmG*pAfk3)f#*d+C(UI%L}Mg4@cH#iKK3ZKj5sku(|kqOPs;80AE5`sYAF&7o3uMsvvboe19449OEfh8 zy(Np^QA9aAAetEI%Dii6Uayy2&aSxqDKvn^hy8-p_o&|!do+PW5@wjijg{9ywe zi9|sxfxi6H*AF#{)>*O%m@);i7#QK;6ae9%oWo;M#2m7Bdt>dS$-M@CqENAw@Pv)* zwjn{gm=5ZLEvsANk-Uh=C%OzkmlG2nA__1$gOrLf>;H$?%{{>xh)4mGz@VtNo7Q^+ zvkG3$ae8~)hbW6#-F7JM4P4SYf7!fTa`Oj2?0UduSk5++z$KY~x$4CK1%&MyNQ5Cz z;Miek813)<=7pyp@Teko@BWTQqBw3+_lZ}xKe>9E+vCc&EUUftoVS-o^?Y6?ks;b_ z8Ov9dUyvpDe{x?v67ishxTqqp)8A)L>-B&)(;NQ$w=Ivjxr$va*3r*=v}*4C7aw*g zQgBDF+unpRgL0C61OTB&FF)bv^Y8d*0nf=Ua%*Al``<*KzI_;~0PL+OK@)jdyz5#t ze)^d+uCI7^Mc>+n^4UY3nRx2moeyuWst63s&;O`@|2`O$ySIy208crP%{*l6%atKV zpD)%gy3s>L)W+1ahXC~e9#3@<9mvo0z=(HW(|zpW(?74$e|d3fnQ~>OVPVzI;FSPA z2GFA>-CvDBAbKdv; zEm&LLZE4Wp56V`(AY^){_#zC9kPq*eeb%K8QQ4idp|>wyK3u;LK|PKFp~oc6l&EN` z?NuFZJ4g07K^cQ-mxw;yui)##xXz5{L{J%zkky@%tV zqQQ6G{=++iYhChepDre7Dh&oMQbb@v-R}Z{{~L59BwOI{#06A{F^u;XynNEY@pm|6 z1&Yvfh%{aL8|L#ko*7u=%v)C;yu8S7bA{q8Nvg~Ldk`!cGL50$;OOJke>i_D0}c}r~5{7FMIpT!=oR)H%B1jDd9_S#&VG_LPIYpd(BSCTyyv%lS}-aK+bY%PEvl5NldN2U$Ywm2-K+ss#M_T>JL{krno zqnWL5FM&kz&VS&mFRwm+*wk6m$9J)Q*PNS+^KR+U&g~bBFYKCd7HVn3=14O(x7Oa= z*PAmcWEpUB^222_j=d3p-V6qqsrjo5Y;rn7tAABv#a;O}@6@2o;54mySIj)_QnzYP z8dqkjknn(Yu;g*T0z=f)(GUxrw<+FwW{&KTLqdyNx3>~7VBwaA< zXsthUUZ~=pY%V!lpf?s%$4gEsy^`wWw+HI6V8RBNCd%7IgSbLyhqL(Jn3H5mcE?tACitJ$a3H6 zltlfPjm8{CJnkv9z8NzNx zu5=jP2$La6CZd)wczw8aux>`7@~&mJ+>}5Fhd>!95wLyU`lGdAj{T4+Lm$B&MmP|R zAQ}Z^$6ou0PMuJ4gXnD3R&T7m#+12z-LBfdz4(>sI_=UQm z0mn_ZIh;F_U0(<6UKNo*_tjtnd*@a>eA$fSu6cINT%TLW(yU&kn|HNdKMS}CNfP)j zK6N5qcxO?!`~0&gaQWa!GDw8t4OrJ)ea+Tb+uyVIz>LpZ%bqDT?Cv1fP!Pet>>ly%RL2Zyam?Md0cwhI&#=t#KQ(NB z+$-7-;EIS)IQGSetdgq{Hurju2muyVY{s^>df4~gm;1-^4fj;Uf){d|0+|sgdRJp* zwBMEv)bKVX219T^y$(Y@CB zo`<_~;FR;;SohoGyR^t0kIfDtX0_)K{lDQl?clr!G2IwO9Z#J-aN=F)hMqJTgwrm* zC9RHijjd>Di^C;hvBUzs>ov8%MB9sl{~v~F5wvl0?Ne7xKgMAr4Wb}IQROZ#cL$bl zsl!j}>Oo|+$0l(7dQlJ@lqP5`DG|UdfTXHm-vf-R;6#HW+Yk!GVT;R%@+b_`*sJM! z;tR?c0~G{NQN-GvfypG?sP`$(To~607%^e$KwDD~m9@3V$n?P}6A;OcXgG*5!%KgW z6kB}ry2v4-iy#;?`>xp3IDPDpoG&Ox)UW`XA_L5TX1YLl5Veg_^vd7c9c&R1p>Px$ zGpe#2B~2T))Qq*%u*c$#j30m6Jgv66?YWIxs?byyK%^lG4h?EF1R@%M6$3#W4!ec^ zy_}dlDzE0a$t82&onLjPU0@3LxqWL^ZX0vlv|(={i3@=M(8L%RF?TmX<|rz5V*Kbr zl=f0qf3>vsh1{=@qEZ{{V6pZ6`V?$tETOK|(Q4`fSh1lp*=~BZ>HKVmL?H;It~B4hI|=KL#(*E3 z{6`N-3L5R-sanpbFxvI$l%;SyO3vTeYNeMnXahX#DxRTx$~`;b2EiA51lju#eMTplK;DS zgaQY2GX|byV0Spg`Dahcxa|2w;n#}59nJB`$a%l6cxyn(%nLb7?e!p_fNn>yIkgea za`eHS=k$5tzJGl?Y@47T#{XGU=glyNYd2(T`v+V6+P9Svs!_HWh$1EQwJC*0 z7$ly^Cur59wKEF`K6&WC(f>qn-$?%VS-m(vgWfo@WN6u^tI8fDuCT+;eb9^!cj_M# zM)+S~w?r0xH^O<;jat$MLuHUdO3dXBzx(7h$6s3ATA$X7%3+~bKN-FH^`L^&j#odg z-xV^n-hvAwgET|Nd{$Ev_UtcAf4Vz zRgzGc@Bi@B1C7C-E@-|z!{w7URfSIf{Tw_vjl#)9X#ZEEnTiA>5`#;zLAOjO zA_WIUh{dIAP#CAyof= z)%XI~t!89d7AU14grJJ*P?-R&g)|QyjyG!?$*uSUK7Er%F=cX}w9jGTZ=r=t%3}wE z2%r#Pm2rVNQk4*PLR(X=+}q9V)oIOc%n&^g6@@nVFRbilud7u%rNlExE3Wx$@*y)imu+R)7k zqZd5!@rqZ)9LW}JijJ?W3mu#1bG^T3zZ=e;fNLJ@HV15<@wX9^y8LZT)y@kmtngW~ z-3HPU+<5+^+2<7b6V(w~H{KW@Bv>g{s?A0WwQVg}+f;+))!SZm5oMrEMTmrcKiXgT zNV07#O^4Q!R1FgVP_IYtw;Z;yqQTMH*0TAY!%sUc+ufD2oDu>gUyu|p3{?J8a40zf z1k^XyFT8lx@s}cn`d3Y;1z$F7LT>8RvayS5%N`%&E6&wIG5BTW-I0X_*P>IE0Jj)u za;3ChKi6!3KFj8v84?)cOkZ%-=oxp8>oahEU2E6(JQ*$>Jrk6WwSh=rp5k{;cWM;P zRD)L#VRm|U^`e1HO+vNGaAelNZ)$=)iKli&9ce=^PxqBGsnE-t_3VhE-kUyLv*_ZG zXdUO!bqJt{Nfh*taPj{)VVLkJcC=X<1cwSE9EHTle{LOf=%v2~%ag{6{s{h*0R~{@ zX1W)iaahr;`D??sl($AsB_vV2O^5}~8Axi4&HpJn0_c=dP?``pCwetNvesWdXXuS< zDmH!dNB6mQRRlG)>91VI4la4|*NtU!>|XyMlW|D0gt(zYq&+{DX2{5Ji%Ve|zoz+J z?Lh4Gqefo)@w{Ee(rw$$%X0gq^;>Jtqh^>4EzbTs_85$oE#C+sE}*2i7<-Jf+PKkq zFUO3q{Npb>?^K2Sx z<=v(I`>bNj+R$C?yM#C>={5tBj~JZ)-ryCLr<66<9qsb^#3x=`{?rwx_uDXY`oO)I z{0nj&sIKdt_VSP7;<1OoivRu~Yoe{FY;Bskv~I`kUYkQU!Wzc*9ejsVQJ40#FE0_h zT^$>oA!h3C)m1y6v;=V|6AeT)ZPh*Fj=e0`;YmDG9f1D32VU1x&UMvwH9P+v3`I_( zE>#v=L(2~vH1bZTYU@%9L3OutGJgk8xx?`&(p z+_IH`H>KNoLUB!_}-iStsKg(_@H5BgpGYS~qZOL*1h;U*=&} zCdrsZ|2HfW{+p;P9+qS~Mv z28y}uv(raS?vk*UE|{^;3o9!_am*c)QM{>%=w)jgs;+klHo#y=lXm*Q4nipmW`QUo zcpzFoE5G#CErGhv+_L(|M%@(HUzfdp_N1Z<<8kdZVp(ODVI|m62nQz&36^}?p1Abi zSQU4TLvv1dv+IChk2qjL6)6^tg?;kS4+}he&e-Akf7ti}KoiY{T+r{2wCWR%n)$dM z3q>r`0s(G!n)1tajx7IzjD)#w!6?t1!?={7WB#yA?@wXicTBX{~yB!RM+VH}F2Un=Fl3Hp{~W`RBU23x8Z(dj*n^2|IL_j9@2z z%>^f1svB~dYys5a&U)p8~&vAgYRsvr2qn)x>?ZdbDI;)aSVErFhA8J69&tj(wO8hK5MYESC+jA|Op zl9KR^lJ7GUL$TfX7GrL;|2~xc1A|LpJl-p zN?g%b2fW1}t(pI+DyT;xsKd)+^Cx!dd+~|KpRlwvd#|t9E{yBc8#YCOO;ON0zj$8P z^xVf|GTkA?Oh6PscncyI&LR7vU;=&}+o|^+Ln?cNKeksU(!F8ZDcy(Ma(HIhX)!&v zC@L_pX3n~nVUOLT_|B_1IB2=wUH|4S)td+i2q-7eM1q*E`yD#}=BOTn&goxN{yKnz zVtj#vXMllt4DtLcPVRMLo>Tcq3#;Hn0T0QL2nQ8I&`Atti=>X7G1!Ccs%941CFB5b zP-?)k8o^8p#F8Px4wwq4tUxCstVnF-$XD1l@*VK5zBx8b5A4!Qb*GY5azzgI`}@6{2TYYXw*brbgI z(7v0`A8^s&4(=CuI0%X9oJ`6*L-{ura*!0zz09Cx&Ol%o3BdN*^#6?13=Yv zCwD#GAMtKb%^-ApT2{?AOaah2S!XUP(5M{&y>;ta-W8{uIC|+D_a1$MK&&Ph9MqNB z_r^!3e){2;E3u)9gGVI@mYUF*DZtu$Ldm+3T|HNZLL3p%M12ho|M=5YSJ&4t=urwi zN^$(*osq~Rbztb8-fD1{zh1xOQIF&r!wm~gQJ6KcN8hWl42=`oDVFTEMSjAVVI(IB{~L0~2XW&(ze9cCB{t2g1L)zi;{iFYK?hA1`AS#doC zAi;%A34xT{_}V^MJmclYNc23}qNofvF1ft_sO!d+_n6iCz^yZ>V|1Av*?`ihvAD{%CYg*|lgxuEH$~KEE$v<5y-+>2cRDUo3Nq&hB2K zLyrc29aGrpUjTmF(?RzIXLTR;@Wjlr;n{A_vsyHaAd4X?SO^*sfLq%Jb?SV>4SmO) zj3o8)djk^%y!iVscxTB>{J3!`7S?Y)(9^X5eDv56r;a(Mtoy|d3m@ssK!6&M7$8^- zF<8(f4z38G2Vf(1PCz*40ONqkpm7T^Fld}XGvgB$YO_H!32b^?zr8``NQqh>oZffD zsh9K_buxf<$yxp=4*J61<5rjT>7IT;S+;RxDr{4ADU2}Th*&D@)Cqetdk|x6S0WTW z$i&iuNOr|_387%73{}X2AP`8B0Zk7gWa%(Nv9%Msd#=0hs!=iVHN_$suB9U=u_F_@+a0uExuATWwLp9|ce>&_nMIep~7 zvUd;Ue4C+Pd&$u^4eycmfT=e^5oO6IJC3caX72#VYSohvjOvsRQEc_B`0zstULHL> zXurAf7$p*=A*t*PF zA9)c#QY}GIqL5??#&KHl3O9k{E(A+HI>EYw*p=g}tY4TYInM zbSPmxjNwJ)w@m6f?6X62OQ5##IxuE|GlsUrn`YdF-DAD4_G&m4r_W}gznJmhH6xFE z^Ufj1;;4>&kZKB0A_ioGwYTz>zFM{5uCOGW4o-y-(|wm7GVbnNclvKmS%poMAQ1|> zGhvi)EUHLUxom;ns~c`<)P5r`lc=~)yv+LmOA^G5HxE1N+S7Xs>3m3P;jq3!>WCxL%lq9i z`lMcN)&7Jii2J;HTT)$t#oM;vi&cvN0yIU#@HMM}t*_aJ=s}<&w#jP1t=cD_(|_c3 zJ=5|oOk?ugprOGKDeMs84g*qzBPNP*uNULH+P>0E6YOTK0wv%Ag^h`@6BUpoNQw$k z=P*MWLJCkTX~A?!m^#p&cHF7mhFp;1a8AX3*7xo!{w&XX7{HW=ZXGajaMvz3@upBE zHRNzmi@|bg04PLJMqKZAr{m$^fiV+|nc$qn>nlYIy3K^f9f)YM6^lk1^WE&ZvySX` z?8G5mo&vCauRCoAoC8Z%SD~>fh8^20A;+2^FdtT|SdC?Kr^DOeg`u_UdfkQ29aCQ^ zNzq0ZrCP5wMFMqAv1ph$oY8<~>J1t~UVpT)K(2VA@)}fxP9p7oiOx) z()6^KBfQSAQ%P-N@>yGU=#K+P$hOFK+uNFbeQ5sCG! z1(4o$djMFzx(UlxwR=w*26T2_9nk%2EZxR(B+2#fFIGMO{hUoFELc^AH5FcLt!YA2 zC~kn6VM3xD66Hv-6O@#sqkqq$nP(kUcAw8HYE6P4UXvaA&ZleM0FX3GN>%__;Shwx z)}u?_3;jx6Uj?J}$h6y(*%jL^udNT9fjzvmluB?r3P1!A5Zi6$kU@o4sFJ?b;x5Qp zM&=`ve|~A+{Ecp}kHG6AIOT{Q?HyvjV3!pf+jH=)|Mo>f6PAW*Z?IVeF^Tw2D<61O zuj~%XJ9skUl6*;;!AyjOy;oXjmRa`2hTor41*L;VxG9HY-<;Tc$a6?CS>&7{7EPWr zp;>0fPqwf4k4)r#HU?8Qt&b;^^mqzw$x8$Z*pfb0`r+z%H~wC^`Ic;33IbLvd{j~Q ztA}>z@{LPLEQ~|Ud9FH3VupaSxwpjp{U=LcxEm7fb#G);0 zF=OLOEUVduW!u|VJJY#^Y3r6A_}Ru$-8CiWwPCrXV}=%Xo}@AT!!XzCg9?WM279b^ z&JLw?-!vcJg3r8>t=t`V<&=oQv=?46w;SUh4p#-)!E-dJGWP#l?Ax(9Bg?%7i zIuQKXp>NisJoE9h$M^1eRKJXg*$&~$`bIZQ(}ZCdyH>x99b9TMLeSzN0ZgNS4-ox3 zRv$CaeN*QStb2KB`n8C^qz8mxSi_Gql7^B10N;Q39qP6%z^tFAV$JUf3S@1u^~ncL z|JTrd{kv1m?E2yboqD`_S&!Z#w65LDrEVn!Dc1m4b)e^*1krnLJ?@IpX=GI`|oP>O>o!HpB z%ypPzHZF-V3uURYZQKJ#&k9{d-H(jxO&mo%w-{i+N4dte+_4-dgBR z|8Z~oF!wE8)A8o~pI=ln(?@Wf!vXP=a|a%FI@*yhjJ9KZ0XUwY`@`!lVjCd|B5Wr6 z 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 literal 0 HcmV?d00001 diff --git a/web/src/views/system/home/index.vue b/web/src/views/system/home/index.vue index 6475fba..4f4810b 100644 --- a/web/src/views/system/home/index.vue +++ b/web/src/views/system/home/index.vue @@ -1,643 +1,22 @@ - diff --git a/web/src/views/system/user/crud.tsx b/web/src/views/system/user/crud.tsx index e5d4ea9..123edaf 100644 --- a/web/src/views/system/user/crud.tsx +++ b/web/src/views/system/user/crud.tsx @@ -204,6 +204,29 @@ export const createCrudOptions = function ({ crudExpose }: CreateCrudOptionsProp }, }, }, + description: { + title: '班次', + search: { + show: true, + }, + type: 'input', + column: { + minWidth: 100, //最小列宽 + }, + form: { + rules: [ + // 表单校验规则 + { + required: true, + message: '班次必填项', + }, + ], + component: { + span: 12, + placeholder: '请输入班次', + } + }, + }, dept: { title: '部门', search: {