From c91f8ec693f2d38ab64b3a1307c638dbf4d5c491 Mon Sep 17 00:00:00 2001 From: DXC Date: Tue, 14 Apr 2026 08:56:47 +0800 Subject: [PATCH] fix(auth): prevent AttributeError when querying permissions for users with no role --- deploy_patch.sh | 45 ++++++++ docker-compose.yml | 20 ++-- .../app/services/auth_service.py | 6 +- inventory-web/package.json | 4 +- sync_db.sh | 26 +++-- 库研操作/导入数据库.py | 102 ++++++++++++++++++ .../库存统计_20260413_094414.xlsx | Bin 0 -> 79957 bytes 库研操作/筛选.py | 29 +++++ 库研操作/筛选后的库存统计.xlsx | Bin 0 -> 13277 bytes 9 files changed, 209 insertions(+), 23 deletions(-) create mode 100644 deploy_patch.sh create mode 100644 库研操作/导入数据库.py create mode 100644 库研操作/库存统计_20260413_094414.xlsx create mode 100644 库研操作/筛选.py create mode 100644 库研操作/筛选后的库存统计.xlsx diff --git a/deploy_patch.sh b/deploy_patch.sh new file mode 100644 index 0000000..d386336 --- /dev/null +++ b/deploy_patch.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +# === 配置项 === +SERVER="dxc@172.16.0.198" +REMOTE_DIR="/opt/inventory-app" +TIMESTAMP=$(date +%Y%m%d_%H%M) + +# 核心魔法:只定义你要发布的具体文件列表! +FILES_TO_DEPLOY=( + "inventory-backend/app/api/v1/inbound/base.py" + "inventory-backend/app/services/inbound/base_service.py" + "inventory-web/src/api/material_base.ts" + "inventory-web/src/components/SpecHelper/index.vue" + "inventory-web/src/layout/index.vue" +) + +echo "===================================================" +echo "🚀 开始【局部补丁】部署 (仅覆盖特定的 ${#FILES_TO_DEPLOY[@]} 个文件)" +echo "===================================================" + +# 1. 本地精准打包 +echo "[1/3] 正在提取指定文件并打包..." +# tar 打包时会自动保留文件的原有目录结构 +tar -czf patch.tar.gz "${FILES_TO_DEPLOY[@]}" +if [ $? -ne 0 ]; then echo "❌ 打包失败,请检查文件列表中的路径是否正确!"; exit 1; fi + +# 2. 传输到生产环境的 /tmp 目录 +echo "[2/3] 正在传输补丁包到服务器..." +scp patch.tar.gz $SERVER:/tmp/patch.tar.gz + +# 3. 服务器执行覆盖与重启 +echo "[3/3] 正在服务器上覆盖指定文件并热更新 (可能需要输入密码)..." +# 注意:这里直接在 $REMOTE_DIR 解压,tar 会按照原路径精准覆盖那 5 个文件,绝对不碰别的! +ssh -t $SERVER "cd $REMOTE_DIR && \ + sudo tar -xzf /tmp/patch.tar.gz && \ + sudo docker compose -f docker-compose.prod.yml build backend frontend && \ + sudo docker compose -f docker-compose.prod.yml up -d backend frontend && \ + sudo rm /tmp/patch.tar.gz" + +# 清理本地临时压缩包 +rm patch.tar.gz + +echo "===================================================" +echo "✅ 局部部署完成!请刷新服务器网页查看最新规格连号助手。" +echo "===================================================" \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 80f4542..764ed1e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,6 @@ version: '3.8' services: - # --- 数据库服务 --- db: image: postgres:15-alpine container_name: inventory_db @@ -11,42 +10,35 @@ services: POSTGRES_PASSWORD: 1234 POSTGRES_DB: inventory_system volumes: - # 数据持久化 - ./pgdata_docker:/var/lib/postgresql/data ports: - - "5434:5432" + - "5435:5432" - # --- 后端 Flask 服务 --- backend: build: - context: ./inventory-backend # 指向你的新后端目录 + context: ./inventory-backend container_name: inventory_api restart: always ports: - "8000:8000" volumes: - - ./inventory-backend:/app # 挂载代码,实现热更新 - # 【核心修改】显式挂载 uploads 目录,确保图片持久化且宿主机可见 + - ./inventory-backend:/app - ./inventory-backend/uploads:/app/uploads command: gunicorn -c gunicorn.conf.py run:app --reload environment: - # Host 必须写 'db' DATABASE_URL: postgresql://test:1234@db:5432/inventory_system depends_on: - db - # --- 前端 Vue 开发服务 --- frontend: build: context: ./inventory-web container_name: inventory_ui restart: always - # 把本地代码挂载进去,实现“热更新” volumes: - ./inventory-web:/app - - /app/node_modules # 排除 node_modules,防止冲突 - # 开发模式端口通常是 5173 + - /app/node_modules ports: - - "5173:5173" + - "5175:5173" depends_on: - - backend \ No newline at end of file + - backend diff --git a/inventory-backend/app/services/auth_service.py b/inventory-backend/app/services/auth_service.py index 07c865b..cc426af 100644 --- a/inventory-backend/app/services/auth_service.py +++ b/inventory-backend/app/services/auth_service.py @@ -345,9 +345,13 @@ class AuthService: 'elements': ['inbound_buy:unit_price', ...] } """ + # 防御性编程:role_code 为空时直接返回空权限,避免后续 SQL 崩溃 + if not role_code: + return {'menus': [], 'elements': []} + # 超级管理员返回所有权限(通配符) from app.utils.constants import UserRole - if role_code and role_code.upper() == UserRole.SUPER_ADMIN: + if role_code.upper() == UserRole.SUPER_ADMIN: # 返回通配符,表示拥有所有菜单和元素权限 return { 'menus': ['*'], diff --git a/inventory-web/package.json b/inventory-web/package.json index e702802..d9af0e6 100644 --- a/inventory-web/package.json +++ b/inventory-web/package.json @@ -4,7 +4,7 @@ "version": "0.0.0", "type": "module", "scripts": { - "dev": "vite", + "dev": "vite --host", "build": "vite build", "preview": "vite preview" }, @@ -35,4 +35,4 @@ "overrides": { "vite": "npm:rolldown-vite@7.2.5" } -} +} \ No newline at end of file diff --git a/sync_db.sh b/sync_db.sh index 8334baa..489c628 100644 --- a/sync_db.sh +++ b/sync_db.sh @@ -1,21 +1,22 @@ #!/bin/bash # ========================================== -# 1. 本地 WSL 数据库配置 (根据你之前的数据) +# 1. 本地 WSL 数据库配置 # ========================================== LOCAL_CONTAINER="inventory_db" LOCAL_DB_USER="test" LOCAL_DB_NAME="inventory_system" # ========================================== -# 2. 远程服务器 SSH 配置 (根据你的截图) +# 2. 远程服务器 SSH 配置 # ========================================== REMOTE_USER="dxc" REMOTE_HOST="172.16.0.198" REMOTE_PORT="22" +REMOTE_DIR="/opt/inventory-app" # 用于存放备份 # ========================================== -# 3. 远程服务器 Docker 配置 (根据你的 docker-compose.prod.yml) +# 3. 远程服务器 Docker 配置 # ========================================== REMOTE_CONTAINER="inventory_db_prod" REMOTE_DB_USER="prod_user" @@ -26,14 +27,28 @@ REMOTE_DB_NAME="inventory_system" TIMESTAMP=$(date +%Y%m%d_%H%M%S) DUMP_FILE="db_sync_${TIMESTAMP}.sql.gz" LOCAL_DUMP_PATH="/tmp/${DUMP_FILE}" +REMOTE_BACKUP_FILE="${REMOTE_DIR}/data_copy/DB_BACKUP_${TIMESTAMP}.sql.gz" echo "========================================================" echo " 🔄 开始同步 WSL 数据库到远程服务器 (${REMOTE_HOST})" +echo " ⚠️ 注意:线上旧数据将被完全覆盖!" echo "========================================================" +# --- 新增:步骤 0: 远程服务器数据备份 --- +echo -e "\n[0/4] 🛡️ 正在备份线上服务器数据库..." +ssh -p ${REMOTE_PORT} ${REMOTE_USER}@${REMOTE_HOST} << EOF + mkdir -p ${REMOTE_DIR}/data_copy + # 导出线上数据作为备份 + docker exec -e PGPASSWORD="${REMOTE_DB_PASS}" ${REMOTE_CONTAINER} pg_dump -U ${REMOTE_DB_USER} -d ${REMOTE_DB_NAME} -O -x | gzip > ${REMOTE_BACKUP_FILE} + echo " -> 线上备份已保存至: ${REMOTE_BACKUP_FILE}" +EOF +if [ $? -ne 0 ]; then + echo "❌ 线上备份失败!为保证数据安全,同步已终止!" + exit 1 +fi + # --- 步骤 1: 本地导出 --- echo -e "\n[1/4] 📦 正在本地打包数据库..." -# 注意:这里使用 pg_dump 导出,为了兼容性,排除可能引起冲突的权限所有者信息 (-O -x) docker exec ${LOCAL_CONTAINER} pg_dump -U ${LOCAL_DB_USER} -d ${LOCAL_DB_NAME} -O -x | gzip > ${LOCAL_DUMP_PATH} if [ $? -ne 0 ]; then echo "❌ 本地数据库导出失败!请检查本地 inventory_db 容器是否正常运行。" @@ -57,7 +72,6 @@ ssh -p ${REMOTE_PORT} ${REMOTE_USER}@${REMOTE_HOST} << EOF docker cp /tmp/${DUMP_FILE} ${REMOTE_CONTAINER}:/tmp/${DUMP_FILE} echo " -> 危险操作:清空服务器旧数据环境..." - # 传入 PGPASSWORD 环境变量以防密码拦截 docker exec -e PGPASSWORD="${REMOTE_DB_PASS}" ${REMOTE_CONTAINER} psql -U ${REMOTE_DB_USER} -d ${REMOTE_DB_NAME} -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public; GRANT ALL ON SCHEMA public TO ${REMOTE_DB_USER};" echo " -> 正在导入最新数据..." @@ -74,4 +88,4 @@ rm ${LOCAL_DUMP_PATH} echo -e "\n========================================================" echo "🎉 数据库全量替换成功!快去刷新你的线上系统看看吧!" -echo "========================================================" +echo "========================================================" \ No newline at end of file diff --git a/库研操作/导入数据库.py b/库研操作/导入数据库.py new file mode 100644 index 0000000..0819646 --- /dev/null +++ b/库研操作/导入数据库.py @@ -0,0 +1,102 @@ +import pandas as pd +import psycopg2 + +# 1. 数据库配置 +DB_CONFIG = { + 'dbname': 'inventory_system', + 'user': 'test', + 'password': '1234', + 'host': 'localhost', + 'port': '5435' +} + +# 2. Excel 文件路径 +EXCEL_FILE = '筛选后的库存统计.xlsx' + + +def fix_category_data_no_nan(): + try: + print("正在读取 Excel 文件...") + + # 【修改点 1】:明确限制只读取到第四级 + possible_category_cols = ['类别一级', '类别二级', '类别三级', '类别四级'] + + df_header = pd.read_excel(EXCEL_FILE, nrows=0) + actual_category_cols = [col for col in possible_category_cols if col in df_header.columns] + + needed_columns = ['资产名称', '规格型号'] + actual_category_cols + + df = pd.read_excel(EXCEL_FILE, dtype=str, usecols=lambda x: x in needed_columns) + df = df.where(pd.notnull(df), None) + df = df.drop_duplicates(subset=['资产名称', '规格型号']) + + print(f"发现了 {len(df)} 种独立物料,准备修复类别并清除 'nan'...") + + conn = psycopg2.connect(**DB_CONFIG) + cur = conn.cursor() + + update_count = 0 + + for index, row in df.iterrows(): + name = row.get('资产名称') + spec_model = row.get('规格型号') + + # 清理规格型号,防止它也被 pandas 变成了 'nan' + clean_spec = None if pd.isna(spec_model) or str(spec_model).lower() == 'nan' else str(spec_model).strip() + + if not name or str(name).lower() == 'nan': + continue + + # --- 核心逻辑:只拼接前4级,并且严格过滤 nan --- + category_parts = [] + for col in actual_category_cols: + val = row.get(col) + if val is not None: + str_val = str(val).strip() + # 【修改点 2】:增加对 'nan' 和 'None' 字符串的拦截 + if str_val != '' and str_val.lower() != 'nan' and str_val.lower() != 'none': + category_parts.append(str_val) + + full_category = "/".join(category_parts) + + if not full_category: + continue + + prefixed_name = f"库研*{name}" + prefixed_spec = f"KY*{clean_spec}" if clean_spec else None + + # 执行更新操作 + update_query = """ + UPDATE material_base + SET category = %s + WHERE (name = %s OR name = %s) + AND ( + (spec_model = %s OR spec_model = %s) + OR (spec_model IS NULL AND %s IS NULL) + ) \ + """ + + cur.execute(update_query, ( + full_category, + name, prefixed_name, + clean_spec, prefixed_spec, clean_spec + )) + + update_count += cur.rowcount + + conn.commit() + print(f"✅ 完美修复!清除了讨厌的 'nan',共修正了 {update_count} 条记录。") + + except Exception as e: + print(f"❌ 发生错误: {e}") + if 'conn' in locals() and conn: + conn.rollback() + finally: + if 'cur' in locals() and cur: + cur.close() + if 'conn' in locals() and conn: + conn.close() + + +if __name__ == "__main__": + fix_category_data_no_nan() \ No newline at end of file diff --git a/库研操作/库存统计_20260413_094414.xlsx b/库研操作/库存统计_20260413_094414.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..c2f95ef469571b2763800df96ef415dd9968c915 GIT binary patch literal 79957 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

P73{K@tN-C+7{7=IpOQ5_t>YMo@ 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 X3h-tHMi&DEClJ~JOLj&xP%;4kb5TbY literal 0 HcmV?d00001 diff --git a/库研操作/筛选.py b/库研操作/筛选.py new file mode 100644 index 0000000..c6884f0 --- /dev/null +++ b/库研操作/筛选.py @@ -0,0 +1,29 @@ +import pandas as pd + +# 1. 读取您的Excel文件 +file_path = '库存统计_20260413_094414.xlsx' +df = pd.read_excel(file_path) + +# 指定要进行筛选的列名(根据您的截图,列名应为“仓库位置”) +col_name = '仓库位置' + +# 2. 数据清洗:确保该列都是字符串格式,并处理可能存在的空值(NaN) +# 这一步是为了防止后续字符串操作报错 +df[col_name] = df[col_name].astype(str) + +# 3. 进行筛选 +# 条件 A: str.count('/') == 2 (说明通过斜杠分割后只有3个部分,即3层) +# 条件 B: str.endswith('/1') (说明最后是以 /1 结尾的,即最后一层是1) +condition = (df[col_name].str.count('/') == 2) & (df[col_name].str.endswith('/1')) + +# 将满足条件的数据提取出来 +filtered_df = df[condition] + +# 4. 打印查看筛选后的前几行结果 +print("筛选出的符合要求的数据如下:") +print(filtered_df[[col_name]]) + +# 5. (可选)将筛选后的结果保存为新的 Excel 文件 +output_path = '筛选后的库存统计.xlsx' +filtered_df.to_excel(output_path, index=False) +print(f"\n筛选完成,结果已保存至:{output_path}") \ No newline at end of file diff --git a/库研操作/筛选后的库存统计.xlsx b/库研操作/筛选后的库存统计.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9b86047e0d6ae5c9c5f2266cc4ea874cbcca28a2 GIT binary patch literal 13277 zcmeHugc|HASAa18#-)=T5% z6na=uLr*1tgbm)zuEt`#mT?!BY#~?i3y@ktuX~$AMY!5QON6095CkLP-{$vYczIRe z?bku_>n)DbC@dg9Wxab@XwsddD*^+JQ=+(I>1Hpc+w9fsb&7y#c@N5ViMOwH9sZjqJB<$yVE@O}Y@q&a9I>a&_HZ1P; zPS!^D_SQe^R<7#0{SqsN-^bb~@){4c2pBXB%wkYvXsw*Z>Qa*QU~j00+|j7p?Wf|W z`*9>iIu>2Rz>E?4bzk?JjL#h_J1I3r($4fo!D)g{$&ysNM)*1F9sPE=yh|9uQZ#T; zQ;C)?ythA!IugG+GVkWV0A3H!aps2$DA3Z6MA!|3kLl-wHb| z7oqavPwj;|^;ksn84Ppsdu9!9HSgei1nF@j#&YuvdKPyEtm&JE(hH*!N*fAU@qZ;v zPz`x0OC7%OedsY!hb@^n79$ttxfBKayt0u}fr@6d_>@RIR@I7hl?pYcKMy84WfLfc z>T**ua7X9l>638$0+vUtn_OADzb>>vVRqYizBsSLD}3J|t@U^u6_Ps{_aNTD>8&|g zDu(Ww0?dA6f1=Bk!;-m>Wji$A20}MqZkwBa;tt|kyXGEqN%4?36jGMcy2?y0(MywE zFXr8=7riS<6Vlr!J-)doS>LFStlijP*AL7Sn_E9j`&sj)c{3O43=H-O68SGHJL~eE z@^V^6Yxz~c87sZIAHHRW>*qOgIXWurWRIFc%6T(pftqBUge|^?nfEmd)@t@7TzaM9 z`mEQ1V!4fh-ATp7xDcsN75k>*P5lP=4L=azWOAHkmL|J1wwSE_DJGoUIXfjIA=pF} z4+Wh`jyG@Ak6<$E-D95PEMj)QF6EcYHcB0gF-uv1bpCLa_FGfV`X?LI$N$RwK*0}5 z7ZAobL)cFMK!k!Y|Bnjsul)b3T0lV#ZxEFK+gGWQoJ=n(MjOgw7^{1l8xH283k$`O z>LEJfP%Zs34fzYd%XLDAW?hXr85S7(P|wq`0k<2@XIn7XS6$BwBe7t;ux(EH;q1pQ z#$XVQj>|~E5^&g9M_&(1j!~YaI%78p#t$-P0(tgs>8SC;a`GueFPo-AIjqK6UD>Ui zCy9q4*>a?IC*Uqv`KSzB+t5IkN^iFN)FiTe4gV4BNji0bk0d34<_VbkGDH6SwoB|9 z@muQ;Gda(3>#m$T)Lo(y8Ioeomp-8`WMP96r2h2r&b!$uEvl!RF0b#0={uIcF^*iG zn(Yh?%&tQ`{h!IwHMZsC5t1dT-2ebQ$UFW_md+NYrY_DbzZSNiSuq(_YP$RgKpYNp1?iJ?F*c1fO}v!Kmrh_jze-BDcAr8&5aDO_A4_H1a#0@-;!t z4#R5WBu4G>tM3ipw@vRmR@a}rlOBmp{9SJRcNU(OPFYCy4=~5gX0>P)l8#>mT{QYH zowRl=a4HHY_}L)qH`IS-K_8M~U#2-A6K+Yk+E1GOdK&GK;a8HDzjB1AIecKl|CEUu zpOiFm9rmH^`-ENW<%mnbJHk)5u7XPz^HU$^%LaBV?~Y9g%l&kyFDfRMT^4$RdR+1~ zOVVFG640b+F6A6dBDCc&p4wc+(?~tpFzppBOylUu`ky>LviYwF>et7-TPj;@7;~$; zy;6R~~oX6c&s=vA$|=uUG~9*GHa)Rd_k z{3oOSPZM}-+k@slCjC_tjYjXPDf;e1VFq@KAn z={P!!aA1xA5XP`VeV!c)M!3QU2(%b3Nss6L#_6{${sEl9M7OXA24{?Y5cyL03wvYd zg15jV18t!#FhmTMf4P$e9)zz^%2rYHS-Vy|Bco5%g-iL_CI>49&|>)$9wL8Bb7CAG z;=~phZ0;xwRi?KObO+(~8CIYmUpHqNR77o&jSz#l_mTxO`6Da0mvs zF^l&T`UrOs`an#v7rlR#p6#{T*-a7JW@ms66NSn+mpp$sfad)&s^kkqRygSyES#3Z zKbU1@SsQCy1&#cmAN_CX;P|x_D{I8)g_>}HM>dRhqikUdi@aj4^}p|4fk3c)Xp4a_ zjb6e7gbNgiiVCc(DY3?nfGluu{QL!t@fQ@1 zb5&M`8=4a?^mbCfL~-u9y6rJ@cw(gdvS;B>2yN8h3|$BjAj?m$@b_6HQra_7jF3lLlE_4`6nZ(T))BzlOE2e$f&MA|ZytM$S{I=FwTS@E};S6;Er z{cr12S~?@`aMO)>B4PRhdw5ig<0?ML^_H7ceN!BH{;WynyT*yjNw!W*N$SumEKXxc zDhm{7C^oB(t=y{$&z5&5a@A_+oP?=bWO6VHjDzc^&RRc9F%Q0Ba!tnN#E%eIIZNLUClK5}A|&Z>&aui5#pP7)d9e?BYS^oBS-9f(Ep>n* zl7x)!oy~142UMsY6{imyR%ZkbzNUc=^c~tqUh%gCddZG6XQRAbgsDOfXYa%vyk^d3 zucBu(F0TU$!wB>ozMw(Z;@i)BabUX7HIv4|$ob6sk+c@90cAQb#Lis-NrnYbLL%sShXJPPT5-P& z!vY?4wxWVI+>b*{c1A|yM1)1qGN$8U1b_7sXF!h-+9AgbPnCkTP+2RSl7cmI!3x}n zMHCJBlH2TcJrDKH2ooqL?Q`{YZFi-O6~>pui!P$mL7Z02#3axW=}Q#ZiyVRoA&o#P z=)LqU?C%h(bmeVSA{HOw7YR^7k2}K;97^x-QetKWdFF^0JOm`eMF=@a!Ww~Uq56>r zvR{LQr`m%1THKM?(ExZ}WKx~%T4jTS(A!v(NkV&Cobdr?s8Z0Qyg3g68@QU^u`6C~h+Vmt(tx#dHEVV8XA-`WO2v~?i=r7alRlACXg$<*Mb-q@IVuSe3K@$4sUvc7LE4!;SNE3yoc&L%^48By$AOR^4iejO} z)t3Iy)EJ^^x&%a1Fta99q^Mp1-dj;c-6=W@A}lCp5ALkU&;$LJu4@L2p7+SGVJc)i zxzKxOHB;#|9k^R`YtMj8s!D+n3y9?+N5#13 zt0BXjVU1KJ!GhXHYQFWDp>|4wj!RWFNbb5}4y+y$h*dG*?fa8sC0Rwv=?_F+y9z_> z5`{u>l5j>GO2TLr8Y*K98v>V3!Gk>vWEC1^_(ejaU}m_{0}+MQ;*{w;z;mJ~I#A#) zP7ACOY@+&+*w#ZVoHz(CDWDxO)vK?KK(A^8R(Azo2Fvd4tOXUAz^-brhhjs35qhr@ z(P{kAPf|1vv6oR2mUG33?Xz+-mO+RyW*^1bicu>md*`I7dKxrJx`x3YagbG{zEZM@ zgCZZ$!EH?lf$m7UQe4J5{g5x|giVIT>poRqQOEM>- ztG#r%P!h=-kwi@!u|G6KPEGAQI7KaPCpD7Cn4Hsyv#@3qr^K15j1rqIg&yx=FnCrH zaAd@G$EJ&Hwa{mEY^mPqsR3((8#U@fPj}bs!E>q`njyM@7eXSmC>_Sv8cV(-}dli zh@xgngR+@Wx7S)=Q&0h@FJn~{Wo7RFA{4|&=8*m4qsU`qS?YvwsN}>UTQ&AmpqD^) zkDLr~(7ZHhrYcKV2!zF50(V=&dHR_@XVG%^h0U3#pa&qyuqs_76f; zxKeWVi@krw6t}N(TBCjs4JbV;jNeeI`=(&lV&;<5213gde;~p-o>RK-#C!TutNhFg zL*x;-Z0t7n&HM^Olqdn0&!;^1%NYdqm8o#6Cxz5OEoItux0k>VRzxM+ z$VIRC-wE7k_gCUdvD1lfDJ%ZP+sPTclPFRiYJ66SL7`X;_->>;XMZ$fNDg2xG(?RO zV1!{0RRwApfj?8?7gEFYtw)Of$WNzi;@+Kcq{as_>G)VKQOByo^!)IJ)LnRS6O&(c zHzAv4h6Epa2d!k&(ps^HP|fp;5gC!4k8t5h#Kl zA^aH~qk`Sv%HBM%t*e|}cfGg&ICFcK?zi^UO;F~Q#W%~k6*E%96v499M=!Zo(JoB{ zrHLJ{YB}!>hUO3EcifsE`Sk6yScX2IP}0^Y1nYG8GMe6y-4D23HOriv*2%pxaJt!b zzH=;nTEMmz2oehhB~#>IFe{5Tky#4RpIqXp?mq9R?ZBuw`vGJ5`IoS`bA zz--GYnZPwKx+QqY0KMq~$Fyv@z}DAcJJMQODmJw6ceunhOgGyw+kL}_|;X2IEgiK2OHL*ID*?YAf*&p{Alnyf$}&X#k5B z`52pug;qxInr6O7T|;Y*#hU*1GURx0Vb$SMdpe10FbEEs=dp z%f4+XbDA;mXkKh7L%L1L`JDRB8ik#E`Pi*ZbI>S)Aof8^yR$-_psq|6!CnZYuirVp zq@5w((?uBD#|=7bdp;&U)<>w=ZNa4_WF229~uix#_?WV#&3<>e8A5+s#Tqhfh%=SLtkInu49@y@-54c%K{Wk|j z*dOOf1;6j^Pdo?>W;KbjwEKKpuAyaVzq`CSCGp%YV1D3+SQ8zKO>L&55=~nBW?5I&b;$JLkgG&si=u>r&yAdn7$6-E2eQukVOS zF}J2pNb=t4x?9pU?udk(yqW2rv5prc<_Y9juN6@~8|f{0(YRDKcA`78H(GGT#p@Cm zi;?UZe2Tr7e9lMmJpE4c+HrUoz9T|)3;UY^MK^o-a~uyon&=!m(cH`9CMKcv_|NtR zh3a|@r`1wlDMGR-NypNXFW8;ZV)&5cohwE;WQG^ecMx9#b6%GFoavsJh5Nz3+OR2V zIaS(fyuWy01dEIO@N~f~z-sj=PXWKQkBNLHy!FZ|{4%PgVIP3zrukCRo)RAk2Xiq$x? zQsJ8Vd;+$4ilP5y5M4r7HoLx+BkOkj$v2-5Q)PW|&g1LYgIMcql?*YS*F! ziwS7uj7h8ha^2CE7 zD$5!)TpXh%6tEg*p$?Q!R>Y%TZ;%%x{bA_m=E(6Lx#&CJm0J%vNWNBebF=JQd4nhP zM*6!3remzAghgk+5oyr9Yav(=Gr@u15OR|@poGKL_F|Z6Tx>dlr4n_#+&Gc8k*1-878{R#jxE6{tgD3T^7j%C%mT#m8pFs9o$l}B^dIR9pq@2_IhY$ zmF`c-yGUr>(9BJ;#{m|BhZ-Je!f-c3dmUt9cO7HAGCjGRvc6Uy`y~~5VpJ#)7lW!z zvQL3Vvs*{iRGPwrqAF54DcV&CJF%7R<$-9v^$2uB(9`33Bn}Lq8OoU>IYkm$dl{tWxB>V zX1-N?{lRJO1D6TQBTeVMYGioxDzZSb?R^TeiB`M-bBuTx_axAdd5f;`W5ZW=YyjFBk^cI6|DNftvaIT7U zs?0g@Q4Z$vg%|x$Js2pL#t8D1%Je>ILYFA0+pv&v?fVd2<-cVpYMSpvqt52nAeq4? zonek`vT!lBsuB`y$TS#l;cJ3+ zLTY?#bquUKfjP30l<&|Arn zrcqtYaT!iiR1)F*V|?udY4bUE?o(qKr-?>_>a=AB(_xaYxr^eqnng zV5#JI2Hm`0OGao13hTimowv6b=Q46?yh^l9up~3`(dnpn-Ha(k4?lB-lY`N(onq`K zWihLuxrpL$=wGurLPg+kq1m)K3GTUA^vRTO?c{%&NwbKq+{pcZM6Jwerc>iB4F0eyWTX;3sdI)MB+#D z1BX=R*;}e5A}4G|#Pi;b!R=4Iq_*$cH54!Tf=#T*&OJ63B`MbSJTMjbPU@e2C|k3q zU**FWx<%#>h&)wPhe0wHTZE3=h3D_ALTsRX#_9MO*k$(5C4}paCWB+#1rg{A9 za0vnuJZYZbuDJaOm9(DOEjPpoY!QFKnENu~#XO!R?e`+bWkqg@#03LlscSh=yK3~a zYYZv(AhUEis|2jEvBNyd-~^h*es!(%yr_LQ*$F?R5&NrchEBww)dSr!fpT?ew8~)} ztmxeJCriUsRwSGR+ID-GDd&IXO(ZG9eMKXWf9#q zu2F)8Bi){?UKOh*1t8sCMZx%aXd0%eI!TIo5$;gE?0AN6@O;_E7SiXhi0MQKW+M6e zow$FXbNy>mZ@#mQtwLi?!oH=Q`nsl2z4n3m_UzJqx9z@=n*Jc7yPq(snT5aNRmUX< z4=^$~n~0^1BSp2DBXA?cRc%n1dMQwg#yI^XMe0@2qe49$7^v+z2!ongWFvU-4wxkeMM3{|6CUS|oD?~yZ1_emK z!i&(iw9l)hj{91z#jb8C3fkYZ&k3i^$#iXgjJW2xFYl))iH611+0XRFku$rZLz_#> zINvDuty18c>q=)6oOK+wJHvE?E9)X19XC(k+@2qOZIKA4;9Z4%N4BiSRVxjLcN9?C zs4L&pH^$ZzF_x8-HvDBFJp8st+CEo8CHD|#{#YPm(Z)h$GVHY|Nl{?dE7YXE*>$O- zc*C=JUuUU3S*(iyI+;1JkDK>y*8ZBWs-qW~nfz<5W}e591^@5j)6_kkE||P4hDp&y z?BrgL(Zu#-HRMs*jPO6c7@bdi?naK;a+^5hqpC3w%@x0Lce(dbq{#%y6C!&f26C*) z+h?#D-yajQPaUGdYV(DoQv?%=Eu7|PpIY!)6A>Sln956aBfaUzNq=SHjP2qmUXf{~ zZb74^0s@JxqS76!bu%^C)7xcxycx~Hc4GLH=m|IR(LunJcFNuSU|y^&os(w0isI`b z8IgDlBbAVV*DV^R7Q3 zTGf4fO$Ry%*UGch!CCC)3d8sTKG1m*R+ey~*ybo333$4L=IC zA6AJeVIQ%=`;VOBGEWp6@cb-PQ;ExxlD4XbWzT)WsBg_h?)@Rv;6Kk(3kX+YQjkib z4>?m|LZ(Sf?2Q$j>>Zq0jP0FF|C|8+-w+AJbkXr+KPO;=PbFJLcD%QEijXy=7@)ou zCB)Kg?VBwwb5Xc4E>n*!Z&TSy!Xdm{OL=f}+qH50pn3+^pIA4H8DRtr*s7zOWtLz` zGxdmqK1{|cEymd?go^_8U8(kS?$!m;DqFLb!xDPLSARGpI?nhEG#yxdRvh1^K4kbleMg9}#N#UuCYg%-^NUH7MOfXay%MP{5p zT#T`eP|xjPum%j`!{ec!yS=y&pZNHZ=^4m5Z3ZLzoY}ZXco@rJX}^Dr-Hr3*>XNyX z=&qA#TTnC;c{NN^6M27^I>w}s>|l3abVB%S_(h>iatROFVw}<~tGc9ZvZFpwyr*j3 z-PvKV;j>Fj4|LaVti9@UkvZOXRzE5%Ph5L&D+)#;1M+xE8LVqxH|Mpo^4)$xk(CD# zly3OG!B~a8)Mah_P_*%&CR&Ba)CG2VI1L$k!(w4!)YHEKya+w+LsI=qv0ljl|=*u$?EPg8JUZdQm+LThU4=^=!Nh32DNQbr;$eBzMjCV@{3SlI}`gJ!`UOr~c1h{e9$yf@XpoumAfO zDgJWVU+aJQT7{y_zXSaH$oF4@Ki4D}NN)aT0Q`5s-^XD85p9L^Zhsq!{ayIqCkg)% z1pw-iehL47<_dqu`F*_XAEX16zm@opVYA;+es4JcgF;O73+4Cr^X~w^w+8+JsHOM? z@K2-QchTQJHT@$xL;Z*7@1LQ5NBH+T`j0#S0Lusf{6|&&UHsqE;J=CoGyjYDpGi?s V1`gs~000^C697q^5^O)8{Xa!qncn~a literal 0 HcmV?d00001