From eb3b53946c791f3e0ba8604702f40287e0616fa7 Mon Sep 17 00:00:00 2001 From: laoyang Date: Tue, 27 Oct 2026 14:56:34 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=80=E5=8E=86=E6=A6=82=E8=BF=B0=E7=9A=84?= =?UTF-8?q?=E6=88=90=E6=9E=9C=E6=95=B0=E5=AD=97=E6=94=B9=E4=B8=BA=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E7=BB=9F=E8=AE=A1=EF=BC=88=E5=88=97=E5=87=A0=E6=9D=A1?= =?UTF-8?q?=E7=AE=97=E5=87=A0=E6=9D=A1=EF=BC=89=20#14?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 概述原来手写「论文 40 余篇、专利 20 余项」,每次增删条目都要回头改。 改为正文标记、概述取数: \item ...论文... \cvtagcount{SCI} % 显示 SCI 并计数 \item ...软著... \cvmark{软著} % 只计数 概述:论文 \cvnum*{SCI,EI,核心} 篇(SCI \cvnum{SCI} 篇) 共注册 11 类:SCI/EI/核心/专利/第一发明人/软著/科研项目/主持/负责/转化/教研。 关键技术:不用 aux,改独立数据文件 \jobname.cvnum。 中文键经 aux 往返后 \ifcsname 全部失效(xeCJK 把汉字设为活动字符, 键的 token 形态不一致;ASCII 键正常);独立文件里中文键完全正常。 累加与显示分离(cvacc@ 每遍从 0 起 / cvnum@ 读自上一遍), 否则概述在正文之前会让上一遍的值被本遍叠加,数字翻倍。 踩坑:\cvmark 不能放 \experience 的关键词参数(会被 \foreach 拆开, 报 Misplaced \omit),必须放描述参数内;也不能放 longtable 单元格之外。 验证:0 error / 0 Overfull / 0 Underfull,3 页;加标记后版面与基线 逐行一致;连续 5 次编译数字稳定;增删条目后数字自动跟随。 ⚠️ 口径变化:自动统计只数列出来的条目。示例原来写「40 余篇」但正文 只列 9 篇代表作,改成自动后变「9 篇」。README 已写明这两种口径的区别。 项目总经费仍手填(\experience 无经费字段)。 --- .gitignore | 4 + 简历/README.md | 85 +++++++++++++++++++- 简历/awesome-source-cv.cls | 132 +++++++++++++++++++++++++++++++ 简历/section_01_headline.tex | 26 +++++- 简历/section_04_publications.tex | 24 +++--- 简历/section_05_patents.tex | 29 ++++--- 简历/section_06_software.tex | 13 +-- 简历/section_07_project.tex | 12 +++ 简历/section_08_zhuanhua.tex | 9 ++- 简历/section_09_jiaoyan.tex | 11 ++- 简历/简历.pdf | Bin 573565 -> 574618 bytes 11 files changed, 309 insertions(+), 36 deletions(-) diff --git a/.gitignore b/.gitignore index f3980d8..a856743 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,10 @@ *.snm *.vrb +# 简历成果统计的自动生成文件(每次编译重写,不要提交) +# 见 简历/awesome-source-cv.cls 的「成果统计」一节 +*.cvnum + # 编辑器 .vscode/ .idea/ diff --git a/简历/README.md b/简历/README.md index 2070e73..4a8fbf0 100644 --- a/简历/README.md +++ b/简历/README.md @@ -24,9 +24,13 @@ ```bash cd 简历 xelatex 简历.tex -xelatex 简历.tex # 跑两遍:第一遍写 .aux,第二遍才能取到正确的页码与交叉引用 +xelatex 简历.tex # 必须跑两遍,原因有二: + # ① 页码与交叉引用 + # ② 概述的成果数字读自 简历.cvnum,第一遍是空的 ``` +用 `latexmk -xelatex 简历.tex` 也行,它自己会跑够遍数。 + 编译结果:3 页,日志零 error、零 Underfull、零 Overfull。嵌入字体只有 7 个,全部来自本仓库: | 字体 | 用途 | @@ -194,6 +198,85 @@ Pagella / XCharter 宽 7~11%,会把全库的断行推着变。 28mm ≈ 660px,约 3.6 倍冗余)。保留原图是为了将来放大不糊;真要瘦身, 把 png 缩到 700px 宽即可。 +## 概述里的成果数字自动统计 + +第一段概述通常要写「发表论文 N 篇、授权专利 M 项、转化 K 项……」。这些数字如果 +手写,每增删一条论文就得回头改概述,非常容易漏改。本模板让它们**自动从正文条目 +数出来**。 + +### 怎么用 + +两步: + +```latex +% ① 在每个条目末尾标类别(不产生任何可见输出) +\item ...论文信息... \cvtagcount{SCI} % 显示 SCI,同时 SCI +1 +\item ...论文信息... \cvmark{软著} % 只计数,不显示 + +% ② 概述里取数 +发表论文 \cvnum*{SCI,EI,核心} 篇(SCI \cvnum{SCI} 篇、EI \cvnum{EI} 篇), +登记软件著作权 \cvnum{软著} 项 +``` + +`\cvnum{A,B}`(带星号)是多类求和;`\cvnum{A}`(不带星号)是单类取数。 +**列几条就算几条**,不需要额外声明的总数。 + +空类别返回 `0` 而不是报错,所以可以先写 `\cvnum{EI}`,等真有了 EI 论文再加 +`\cvtagcount{EI}`,中间不会有编译问题。 + +### 两个命令的分工 + +| 命令 | 显示 | 计数 | 用在哪 | +|---|---|---|---| +| `\cvmark{类别}` | 不显示 | +1 | 软著、专利、项目、转化、教研这类本来就靠字段表达类别的条目 | +| `\cvtagcount{类别}` | 显示(加粗,与正文同号) | +1 | 论文的 SCI/EI/核心——原本就用 `\textbf{SCI}` 缀在末尾,一步到位 | + +`\cvtagcount` 就是为论文设计的:显示和计数合成一个动作,不会出现「改了显示忘了 +计数」的情况。 + +### 现有类别一览 + +| 类别 | 标记位置 | 概述里的用法 | +|---|---|---| +| `SCI` `EI` `核心` | `section_04` 各条目末尾 `\cvtagcount{}` | `\cvnum*{SCI,EI,核心}` | +| `专利` `第一发明人` | `section_05` 各条目末尾 `\cvmark{}` | `\cvnum{专利}` / `\cvnum{第一发明人}` | +| `软著` | `section_06` | `\cvnum{软著}` | +| `科研项目` `主持` `负责` | `section_07` 描述块内 | `\cvnum{主持}` / `\cvnum{负责}` | +| `转化` | `section_08` | `\cvnum{转化}` | +| `教研` | `section_09` | `\cvnum{教研}` | + +⚠️ 增删条目时**标记要跟着走**。删掉一条论文但留下 `\cvtagcount{SCI}`,数字就会 +多算一个——这是这套机制唯一的代价,但比每次回头数一遍要可靠得多。 + +### 三条必须知道的限制 + +1. **必须编译两遍**(`latexmk` 会自动跑够)。第一遍概述读到的是上一遍的统计, + 首次编译会显示 `0`。日志末尾有 `CVSTATS:` 一行提示。 +2. **`\jobname.cvnum` 是生成文件**,每次编译重写,已加进 `.gitignore`。 + 不要手改、不要提交。删掉它只会让数字从 0 重算一遍,下一遍即恢复。 +3. **为什么不用 LaTeX 的 aux**:实测中文键经 aux 往返后 `\ifcsname` 全部匹配不上 + (xeCJK 把汉字设为活动字符,键的 token 形态与写入时不一致;ASCII 键正常、 + 中文键失效)。所以改用独立的 `.cvnum` 文件,键原样保留。 + +### 为什么项目总经费仍是手填 + +`\experience` 的参数里没有经费字段,无法从条目自动求和。若真要做到自动,得给 +`\experience` 增加一个经费参数(`{120万}` 之类),再由 `\cvnum` 累加。改动面较大, +超出本次范围,故保留手填 `1200 余万元`。 + +### ⚠️ 一个必须注意的语义变化 + +自动统计只数**你列出来的条目**,不数你没列的。示例简历原来写「论文 40 余篇、 +专利 20 余项」,但正文只列了 9 篇代表作、9 项专利——改成自动统计后会变成 +「论文 9 篇、专利 9 项」。 + +**这不是 bug,是两种口径**: +- 简历惯例是**只列代表作**,概述写总量(40 余篇)——此时总数不能从条目数出来 +- 若你的正文就是全部成果,自动统计的数字才是真实总量 + +用之前先想清楚自己属于哪种。要保留「40 余篇」这种总量表述,就把那处数字改回 +手写,只在真正列全的章节(转化、教研这类)用 `\cvnum`。 + ## 写的时候容易踩的三个坑 1. **`\newExperience` 的参数顺序是「结束在前、开始在后」** —— 上游定义就是先印 diff --git a/简历/awesome-source-cv.cls b/简历/awesome-source-cv.cls index fea0f5c..47e1107 100644 --- a/简历/awesome-source-cv.cls +++ b/简历/awesome-source-cv.cls @@ -632,3 +632,135 @@ \newcommand\emptySeparator{\multicolumn{2}{c}{}\\} + +%====================================================================== +% 成果统计:让概述里的数字自动来自后面章节的条目 +% +% 问题:简历第一段概述通常写「发表论文 40 余篇、授权专利 12 项、成果转化 +% 3 项……」。这些数字若手写,每增删一条论文就得回头改概述,极易漏改。 +% +% 思路:给每条加一个**类别标记** \cvmark, 正文里自动累加计数,概述用 +% \cvnum 取数。**列几条就算几条**,不去猜总数——你不列出来的成果 +% 本来也不该出现在概述里。 +% +% 用法(两步): +% ① 每个条目末尾标类别: +% \item ...论文信息... \cvmark{SCI} +% \item ...论文信息... \cvmark{EI} +% \cvmark 不产生任何可见输出(就是个计数动作),放条目首尾都行。 +% 一条属于两类就标两次;同名类别重复标会自动累加。 +% +% ② 概述里取数: +% \cvnum{SCI} 篇、\cvnum{EI} 篇、合计 \cvnum*{SCI,EI} 篇 +% \cvnum* 是「多类求和」,逗号分隔(注意:是英文逗号)。 +% +% ③ 空类别返回 0,不会出现 ??。所以可以先写 \cvnum{EI}, +% 等真有了 EI 论文再加 \cvmark{EI},中间不会编译报错。 +% +% ⚠️ 为什么用独立数据文件而不是 LaTeX 的 aux: +% 实测中文键经 aux 往返后 \ifcsname 全部匹配不上(xeCJK 把汉字设为 +% 活动字符,键的 token 形态与写入时不一致;ASCII 键正常,中文键失效)。 +% 故改用独立文件 \jobname.cvnum,导言区末尾 \input,键原样保留。 +% +% ⚠️ 必须编译两遍(或直接用 latexmk): +% 第一遍边累加边写 \jobname.cvnum,此时概述读到的是**上一遍**的值, +% 首次编译会显示 0;第二遍才是正确数字。日志末尾有 CVSTATS 一行提示。 +% +% ⚠️ \jobname.cvnum 是**生成文件**,不要手改、不要提交 git(已在 +% .gitignore 里挡住)。删掉它只会让数字从 0 重新算一遍,下一遍即恢复。 +% +% ⚠️ 类别名限制: +% · 不要含英文逗号(, 是 \cvnum* 的分隔符) +% · 不要含 @ % # \ { } 这些特殊字符 +% · 中文、英文、汉字混排都可以 +%====================================================================== +\makeatletter + +% ---- 数据文件 ------------------------------------------------------ +\newwrite\cv@statsout + +% 读:导言区末尾把上一遍写入的数字读进来。 +% 此时正文尚未开始,不会和本遍的累加互相干扰。 +\AtBeginDocument{\InputIfFileExists{\jobname.cvnum}{}{}} + +% ---- 内部:类别 -> 计数器名 ---------------------------------------- +% 累加值存在 \cvacc@<类别>(TeX 整数寄存器,不用 LaTeX counter, +% 既省事又避开 \the\csname...\endcsname 的展开陷阱)。 +% 显示值存在 \cvnum@<类别>(\def 出来的宏,内容就是数字字符串)。 +\newcommand\cv@accname[1]{cvacc@#1} + +% 保证某类别的累加器存在 +\newcommand\cv@ensureacc[1]{% + \@ifundefined{\cv@accname{#1}}% + {\expandafter\newcount\csname\cv@accname{#1}\endcsname}% + {}% +} + +% ---- 标记 ---------------------------------------------------------- +% \cvmark{<类别>}:把该类别的累加器 +1,无可见输出。 +\newcommand\cvmark[1]{% + \cv@ensureacc{#1}% + \global\advance\csname\cv@accname{#1}\endcsname\@ne + % 顺便登记该类别的名字,收尾时按登记顺序写文件 + \@ifundefined{cv@seen@\detokenize{#1}}% + {\expandafter\gdef\csname cv@seen@\detokenize{#1}\endcsname{1}% + \g@addto@macro\cv@taglist{\cv@writeone{#1}}}% + {}% +} + +% ---- 输出 ---------------------------------------------------------- +% \cvnum{SCI} 单类取数 +% \cvnum*{SCI,EI} 多类求和 +\newcommand\cvnum{\@ifstar\cv@numsum\cv@numone} + +% ---- 带计数的标签:显示 + 计数一步完成 ------------------------------ +% \cvtagcount{<显示文字>}[<类别>] +% 显示「显示文字」(与正文同号加粗,和原来的 \textbf{SCI} 完全一样), +% 同时给类别 +1。省略类别时用显示文字本身当类别。 +% +% 为什么需要它:论文的收录类型本来就写成 \textbf{SCI} 显示在条目末尾, +% 若再单独写一个 \cvmark{SCI},一是啰嗦,二是迟早会漏标。 +% 用 \cvtagcount{SCI} 一次到位,显示与计数永远同步。 +% +% 用法: +% \cvtagcount{SCI} % 显示 SCI,类别也叫 SCI +% \cvtagcount{核心}[中文核心] % 显示「核心」,类别记为「中文核心」 +\newcommand\cvtagcount[2][\relax]{% + \textbf{#2}% + \ifx\relax#1\relax\cvmark{#2}\else\cvmark{#1}\fi} + +\newcommand\cv@numone[1]{% + \@ifundefined{cvnum@#1}{0}{\csname cvnum@#1\endcsname}} + +\newcommand\cv@numsum[1]{% + \begingroup + \count@\z@ + \@for\cv@k:=#1\do{% + \@ifundefined{cvnum@\cv@k}{}{\advance\count@\csname cvnum@\cv@k\endcsname\relax}% + }% + \the\count@ + \endgroup} + +% ---- 收尾:写数据文件 ---------------------------------------------- +% 用独立的 write 流,与 aux 完全无关,因此不受 aux 读入时机影响。 +\newcommand\cv@taglist{} + +\newcommand\cv@writeone[1]{% + \immediate\write\cv@statsout{% + \string\cvSetNum{\detokenize{#1}}{\the\csname\cv@accname{#1}\endcsname}}% +} + +\AtEndDocument{% + \immediate\openout\cv@statsout=\jobname.cvnum\relax + \cv@taglist + \immediate\closeout\cv@statsout + % 日志提示:本遍写入了多少类 + \typeout{CVSTATS: 已写入 \jobname.cvnum(若概述数字为 0,请再编译一遍)}% +} + +% 数据文件里调用的设置命令。 +% ⚠️ 不能含 @:读回时若 @ 不是字母,命令名会被拆断。 +\newcommand\cvSetNum[2]{% + \expandafter\def\csname cvnum@#1\endcsname{#2}} + +\makeatother \ No newline at end of file diff --git a/简历/section_01_headline.tex b/简历/section_01_headline.tex index be0dbc3..1e8fa36 100644 --- a/简历/section_01_headline.tex +++ b/简历/section_01_headline.tex @@ -6,13 +6,33 @@ % 写法要点:\par{...} 包住,段首的 \textbf{姓名,} 与正文连排。 % 这段是整份简历最长的连续文字,行距与断行在这里最能看出问题, % 改动字号 / 行距后先看这一段。 +% +% ⚠️⚠️ 成果数字全部用 \cvnum 取,**不要手写**。 +% \cvnum{类别} = 该类在正文里被 \cvmark / \cvtagcount 标记了几次 +% \cvnum*{A,B} = 多类求和 +% 增删一条论文/专利/项目,这里的数字自动跟着变,不用回来改。 +% 类别与标记位置的对应关系: +% SCI / EI / 核心 ← section_04 的 \cvtagcount{...} +% 专利 / 第一发明人 ← section_05 的 \cvmark{...} +% 软著 ← section_06 +% 科研项目 / 主持 / 负责 ← section_07 +% 转化 ← section_08 +% 教研 ← section_09 +% ⚠️ 编译要跑两遍,第一遍概述会显示 0(读到的是上一遍的统计)。 +% +% ⚠️ 例外:项目总经费**仍是手写**。\experience 的参数里没有经费字段, +% 没法从条目里自动求和。若想自动,得给 \experience 加一个经费参数, +% 改动较大,故这里保留手填。 \par{ {\textbf{张远航,}} 男,1985 年 3 月生,山东青岛人。工学博士,中国海洋大学信息科学与工程学部 计算机科学与技术学院教授、博士生导师。主要研究方向为海洋遥感信息处理、 机器学习与海洋大数据、多源观测数据同化及海洋数值模式智能订正,发表相关论文 -40 余篇,申请专利 20 余项,授权 12 项,完成专利成果转化 3 项,申请软件著作权 -8 项,主持各级科研项目 9 项,参与相关项目 11 项,项目总经费 1200 余万元, -主持教研项目 4 项。 +\cvnum*{SCI,EI,核心} 篇(SCI \cvnum{SCI} 篇、EI \cvnum{EI} 篇、 +中文核心 \cvnum{核心} 篇),获授权发明专利 \cvnum{专利} 项 +(第一发明人 \cvnum{第一发明人} 项),完成专利成果转化 \cvnum{转化} 项, +登记软件著作权 \cvnum{软著} 项,主持各级科研项目 \cvnum{主持} 项、 +作为负责人承担 \cvnum{负责} 项,项目总经费 1200 余万元, +主持教研项目 \cvnum{教研} 项。 } \ No newline at end of file diff --git a/简历/section_04_publications.tex b/简历/section_04_publications.tex index 60bd741..5fbef56 100644 --- a/简历/section_04_publications.tex +++ b/简历/section_04_publications.tex @@ -6,8 +6,10 @@ % % 版式:itemize,每条一个 \item。要点: % · 自己的名字用 \textbf{...},通讯作者再加 *(原件就是 **姓名***) -% · 收录类型(SCI / EI / 核心)用 \textbf{} 缀在末尾,字体与正文同号, -% 不会喧宾夺主 +% · 收录类型(SCI / EI / 核心)用 \cvtagcount{} 缀在末尾,字体与正文同号, +% 不会喧宾夺主。\cvtagcount 除了显示,还会给该类别 +1, +% 概述里的「论文 \cvnum*{SCI,EI,核心} 篇」就是数出来的。 +% ⚠️ 不要写回 \textbf{SCI}——那样只显示不计数,概述会少算。 % · 条目里出现 & 必须写 \&(如 "Neural Comput \& Applic") % · 网址长的可以在前面加 \\ 手动断行,避免溢出到页边 @@ -17,37 +19,37 @@ \item \textbf{张远航}, 李文博, 陈思远, and 王海涛. 2024. 融合注意力机制的 多尺度卷积网络用于近岸叶绿素浓度反演. \textit{IEEE Transactions on Geoscience and Remote Sensing}, 62, 1, (2024), 1--15. - DOI: 10.9999/TGRS.2024.0000001.\textbf{SCI} + DOI: 10.9999/TGRS.2024.0000001.\cvtagcount{SCI} \item \textbf{张远航}, 刘洋, 赵明轩. 2023. 基于图神经网络的多源海洋观测数据 时空插值方法. 2023 IEEE International Geoscience and Remote Sensing Symposium (IGARSS), 412--415. - 中国青岛: IEEE, 2023. \\ https://doi.org/10.9999/IGARSS.2023.0000002.\textbf{EI} + 中国青岛: IEEE, 2023. \\ https://doi.org/10.9999/IGARSS.2023.0000002.\cvtagcount{EI} \item \textbf{张远航}, 孙悦, 周建华, 吴晓峰, 郑凯. 2023. 一种面向海洋浮标 观测序列的异常检测与修复框架. 2023 IEEE 18th Annual Conference on Industrial Electronics and Applications (ICIEA), 88--93. - 中国青岛, 中国: IEEE, 2023. https://doi.org/10.9999/ICIEA.2023.0000003.\textbf{EI} + 中国青岛, 中国: IEEE, 2023. https://doi.org/10.9999/ICIEA.2023.0000003.\cvtagcount{EI} \item 李文博, \textbf{张远航*}, 陈思远, 王海涛, 刘洋. 2022. 基于物理约束 深度学习的长江口溶解氧短期预测. \textit{Environmental Modelling \& Software}, 155, 105--118 (2022). - https://doi.org/10.9999/envsoft.2022.0000004.\textbf{SCI} + https://doi.org/10.9999/envsoft.2022.0000004.\cvtagcount{SCI} \item 赵明轩, 孙悦, 周建华, 吴晓峰, \textbf{张远航*}. 2022. 海表温度再分析产品的多尺度误差分解与订正. \textit{海洋学报}, 44 (6): 1--12. - \\ https://doi.org/10.9999/actaoce.2022.0000005.\textbf{核心} + \\ https://doi.org/10.9999/actaoce.2022.0000005.\cvtagcount{核心} \item 陈思远, 王海涛, \textbf{张远航*}, 李文博, 郑凯. 2021. "基于时序注意力 机制的赤潮发生概率预报模型." \textit{Journal of Marine Systems} 218 (5): 103--115. - https://doi.org/10.9999/jmarsys.2021.0000006.\textbf{SCI} + https://doi.org/10.9999/jmarsys.2021.0000006.\cvtagcount{SCI} \item 王海涛, 刘洋, and \textbf{张远航*}. 2021. "A Hybrid Data Assimilation Scheme Coupling Ensemble Kalman Filter with Deep Learning." In 2021 IEEE 17th International Conference on Computational Intelligence and Security (CIS), 201--206. - 中国北京, 中国: IEEE. https://doi.org/10.9999/CIS.2021.0000007.\textbf{EI} + 中国北京, 中国: IEEE. https://doi.org/10.9999/CIS.2021.0000007.\cvtagcount{EI} \item 刘洋, 赵明轩, and \textbf{张远航*}. 2020. "Spatiotemporal Fusion of Satellite and In-situ Observations for Coastal Water Quality Mapping." \textit{IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing} 13 (4): 1120--1133. - \\ https://doi.org/10.9999/jstars.2020.0000008.\textbf{SCI} + \\ https://doi.org/10.9999/jstars.2020.0000008.\cvtagcount{SCI} \item 孙悦, 周建华, and \textbf{张远航*}. 2019. "Transfer Learning for Cross-Region Chlorophyll Prediction with Limited Labels." In \textit{Advances in Neural Information Processing Systems Workshops}. 中国青岛: 44--51. Lecture Notes in Computer Science. - Cham: Springer International Publishing. \textbf{EI} + Cham: Springer International Publishing. \cvtagcount{EI} \end{itemize} \ No newline at end of file diff --git a/简历/section_05_patents.tex b/简历/section_05_patents.tex index 980dc91..a6f6bc1 100644 --- a/简历/section_05_patents.tex +++ b/简历/section_05_patents.tex @@ -9,28 +9,39 @@ % 明显不同,混在一起排是浪费。 % 专利号格式:ZL + 年份 + 序号 + . + 校验位(示例统一用 9999 段, % 一眼可辨是假号)。 +% +% ⚠️ 每条末尾的 \cvmark{专利} 是计数标记,不产生可见输出。 +% 第一发明人的条目额外加 \cvmark{第一发明人},概述里的 +% 「授权发明专利 \cvnum{专利} 项(第一发明人 \cvnum{第一发明人} 项)」 +% 就是这么数出来的。增删条目时**标记要跟着走**,否则数字会不对。 \sectionTitle{发明专利}{\faWpforms} \begin{itemize} \item \textbf{张远航}, 李文博, 陈思远, 王海涛. 一种基于注意力机制的海表 - 叶绿素浓度反演方法. ZL209999000001.9. 2024-05-14. + 叶绿素浓度反演方法. ZL209999000001.9. 2024-05-14.\cvmark{专利} + \cvmark{第一发明人} \item \textbf{张远航}, 刘洋, 赵明轩, 孙悦. 多源海洋观测数据时空融合插值 - 装置及方法. ZL209999000002.6. 2023-11-07. + 装置及方法. ZL209999000002.6. 2023-11-07.\cvmark{专利} + \cvmark{第一发明人} \item \textbf{张远航}, 陈思远, 王海涛, 周建华, 吴晓峰. 一种海洋浮标观测 - 序列异常检测与自动修复方法. ZL209999000003.3. 2023-06-20. + 序列异常检测与自动修复方法. ZL209999000003.3. 2023-06-20.\cvmark{专利} + \cvmark{第一发明人} \item \textbf{张远航}, 孙悦, 周建华. 基于物理约束神经网络的水质参数短期 - 预测方法及系统. ZL209999000004.0. 2022-09-13. + 预测方法及系统. ZL209999000004.0. 2022-09-13.\cvmark{专利} + \cvmark{第一发明人} \item \textbf{张远航}, 吴晓峰, 郑凯. 一种赤潮发生概率的时序预报方法. ZL209999000005.8. 2022-03-29. - 该方法以多源遥感与水文要素为输入。 + 该方法以多源遥感与水文要素为输入。\cvmark{专利} + \cvmark{第一发明人} \item \textbf{张远航}, 李文博, 刘洋. 面向近岸海域的遥感影像云检测与重建 - 方法. ZL209999000006.5. 2021-08-17. + 方法. ZL209999000006.5. 2021-08-17.\cvmark{专利} + \cvmark{第一发明人} \item 李文博, 陈思远, \textbf{张远航}. 一种海表温度再分析产品误差订正 - 方法. ZL209999000007.2. 2021-04-06. + 方法. ZL209999000007.2. 2021-04-06.\cvmark{专利} \item 赵明轩, 王海涛, \textbf{张远航}. 多尺度卷积特征融合的海洋要素 - 预报后处理装置. ZL209999000008.9. 2020-12-15. + 预报后处理装置. ZL209999000008.9. 2020-12-15.\cvmark{专利} \item 周建华, 孙悦, \textbf{张远航}. 一种适用于稀疏站点的海洋数据 - 质量控制方法. ZL209999000009.7. 2020-07-21. + 质量控制方法. ZL209999000009.7. 2020-07-21.\cvmark{专利} \end{itemize} \ No newline at end of file diff --git a/简历/section_06_software.tex b/简历/section_06_software.tex index 34beb63..388f2a9 100644 --- a/简历/section_06_software.tex +++ b/简历/section_06_software.tex @@ -7,15 +7,18 @@ % 登记号格式:YYYY SR NNNNNNN(前 4 位是年份),后面跟「软著登字第 NNNNNNN 号」。 % 示例统一用 999999 段,一眼可辨是假号。 % 开发人员多于 6 人时可以考虑只列前几位加「等」,避免单条过长折行。 +% +% ⚠️ 每条末尾的 \cvmark{软著} 是计数标记,不产生可见输出, +% 供概述的 \cvnum{软著} 取数。增删条目时标记要跟着走。 \sectionTitle{软件著作权}{\faTv} \begin{itemize} \item \textbf{张远航}, 李文博, 陈思远, 王海涛, 刘洋, 赵明轩, 孙悦, 周建华. - 近岸海域叶绿素浓度遥感反演系统. 2024. 2024SR9999901. 软著登字第 9999901 号. + 近岸海域叶绿素浓度遥感反演系统. 2024. 2024SR9999901. 软著登字第 9999901 号.\cvmark{软著} \item \textbf{张远航}, 陈思远, 王海涛, 李文博, 吴晓峰, 郑凯. - 多源海洋观测数据融合与质量控制检索系统. 2023. 2023SR9999902. 软著登字第 9999902 号. - \item \textbf{张远航}, 刘洋, 赵明轩. 海洋要素智能订正与预报后处理平台. 2023. 2023SR9999903. 软著登字第 9999903 号. - \item 李文博, \textbf{张远航}, 孙悦. 浮标观测序列异常检测与修复系统. 2022. 2022SR9999904. 软著登字第 9999904 号. - \item \textbf{张远航}, 周建华. 海洋卫星遥感影像云检测预处理系统. 2021. 2021SR9999905. 软著登字第 9999905 号. + 多源海洋观测数据融合与质量控制检索系统. 2023. 2023SR9999902. 软著登字第 9999902 号.\cvmark{软著} + \item \textbf{张远航}, 刘洋, 赵明轩. 海洋要素智能订正与预报后处理平台. 2023. 2023SR9999903. 软著登字第 9999903 号.\cvmark{软著} + \item 李文博, \textbf{张远航}, 孙悦. 浮标观测序列异常检测与修复系统. 2022. 2022SR9999904. 软著登字第 9999904 号.\cvmark{软著} + \item \textbf{张远航}, 周建华. 海洋卫星遥感影像云检测预处理系统. 2021. 2021SR9999905. 软著登字第 9999905 号.\cvmark{软著} \end{itemize} \ No newline at end of file diff --git a/简历/section_07_project.tex b/简历/section_07_project.tex index 48e3b5e..5d5a04d 100644 --- a/简历/section_07_project.tex +++ b/简历/section_07_project.tex @@ -19,6 +19,13 @@ % ⚠️ 项目名称 / 内容越写越长会撞到右栏宽度。右栏宽由 cls 的 % \rightcolumnlength 按版心反算(\linewidth − 左栏 − 4\tabcolsep), % 改完记住看日志有没有 Overfull。 +% +% ⚠️ 每条描述块(\end{itemize} 之后、minipage 之内)的 \cvmark 是计数标记, +% 不产生可见输出。\cvmark{科研项目} 每条都有;\cvmark{主持} 仅当第 4 参数 +% 是「主持」;\cvmark{负责} 对应子课题负责人/课题负责人/单位负责人。 +% 概述里「主持 \cvnum{主持} 项、作为负责人承担 \cvnum{负责} 项」由此而来。 +% ⚠️ 标记必须放在**描述参数**里(minipage 内),不能放关键词参数里—— +% 关键词会被 \foreach 拆成单个标签,标记不但不生效还会报错。 \sectionTitle{项目经验}{\faCode} @@ -30,6 +37,7 @@ \item 建立卫星、浮标、岸基站三类观测的统一时空基准与质量控制流程 \item 提出物理约束的深度学习同化方案,近岸水质要素反演精度提升约 18\% \end{itemize} + \cvmark{科研项目}\cvmark{主持} } {多源数据融合, 深度学习, 数据同化, 近岸水质} \emptySeparator @@ -40,6 +48,7 @@ \item 面向企业需求搭建浮标数据接入、异常识别与分级预警的完整链路 \item 平台在 3 处海洋牧场部署运行,日均处理观测记录约 12 万条 \end{itemize} + \cvmark{科研项目}\cvmark{主持} } {在线监测, 异常检测, 预警平台, 边缘计算, 时序数据库} \emptySeparator @@ -50,6 +59,7 @@ \item 负责生态健康风险滚动预警模型的构建与业务化对接 \item 耦合物理模式输出与机器学习订正模块,预警时效由 3 天延至 7 天 \end{itemize} + \cvmark{科研项目}\cvmark{负责} } {生态健康, 滚动预警, 模式订正, 机器学习} \emptySeparator @@ -60,6 +70,7 @@ \item 制定近岸水质遥感监测的技术方案与业务规范 \item 完成两期业务人员培训并交付监测产品生成工具 \end{itemize} + \cvmark{科研项目}\cvmark{负责} } {遥感监测, 业务规范, 技术培训} \emptySeparator @@ -70,6 +81,7 @@ \item 研究稀疏标签条件下的跨区域迁移学习方法 \item 构建面向近岸水质的公开基准数据集与评测协议 \end{itemize} + \cvmark{科研项目}\cvmark{负责} } {迁移学习, 小样本, 基准数据集, 海洋大数据} \end{experiences} \ No newline at end of file diff --git a/简历/section_08_zhuanhua.tex b/简历/section_08_zhuanhua.tex index 6240458..d188390 100644 --- a/简历/section_08_zhuanhua.tex +++ b/简历/section_08_zhuanhua.tex @@ -7,14 +7,17 @@ % 每条格式:发明人. 专利名称. 转化方式. 受让单位. 时间. % 转化方式写清「专利权实施普通许可 / 转让 / 作价入股」,评职称时这一栏 % 比金额更被看重。 +% +% ⚠️ 每条末尾的 \cvmark{转化} 是计数标记,不产生可见输出, +% 供概述的 \cvnum{转化} 取数。增删条目时标记要跟着走。 \sectionTitle{成果转化}{\faAmericanSignLanguageInterpreting} \begin{itemize} \item \textbf{张远航}. 一种赤潮发生概率的时序预报方法. 专利权实施普通许可. - 青岛蓝湾海洋科技有限公司(示例). 2023年06月. + 青岛蓝湾海洋科技有限公司(示例). 2023年06月.\cvmark{转化} \item \textbf{张远航}. 基于物理约束神经网络的水质参数短期预测方法及系统. 专利权实施普通许可. - 山东海慧信息技术有限公司(示例). 2022年11月. + 山东海慧信息技术有限公司(示例). 2022年11月.\cvmark{转化} \item \textbf{张远航}. 面向近岸海域的遥感影像云检测与重建方法. 专利权实施普通许可. - 青岛海图数据科技股份有限公司(示例). 2022年04月. + 青岛海图数据科技股份有限公司(示例). 2022年04月.\cvmark{转化} \end{itemize} \ No newline at end of file diff --git a/简历/section_09_jiaoyan.tex b/简历/section_09_jiaoyan.tex index e27dcef..21766cd 100644 --- a/简历/section_09_jiaoyan.tex +++ b/简历/section_09_jiaoyan.tex @@ -5,14 +5,17 @@ % % 每条格式:项目名称. 立项单位 + 项目类别. 起止时间. 本人角色. % 「主持 / 参与」不要省 —— 教学类项目主持人身份是评教学奖的硬指标。 +% +% ⚠️ 每条末尾的 \cvmark{教研} 是计数标记,不产生可见输出, +% 供概述的 \cvnum{教研} 取数。增删条目时标记要跟着走。 \sectionTitle{教研项目}{\faGroup} \begin{itemize} \item 海洋大数据分析案例库建设. 中国海洋大学研究生科研创新能力提升计划 - 专业学位研究生教学案例库建设项目. 2023.06 至今. 主持. - \item 机器学习与海洋应用. 中国海洋大学 2022 年度教材建设基金重点项目. 2022.03 至今. 主持. + 专业学位研究生教学案例库建设项目. 2023.06 至今. 主持.\cvmark{教研} + \item 机器学习与海洋应用. 中国海洋大学 2022 年度教材建设基金重点项目. 2022.03 至今. 主持.\cvmark{教研} \item 面向新工科的海洋信息类课程混合式教学模式改革. 中国海洋大学本科 - 教育教学研究一般项目. 2021.09 至 2023.08. 主持. - \item 数据科学与海洋情怀. 信息科学与工程学部课程思政建设项目. 2021.03 至 2022.12. 主持. + 教育教学研究一般项目. 2021.09 至 2023.08. 主持.\cvmark{教研} + \item 数据科学与海洋情怀. 信息科学与工程学部课程思政建设项目. 2021.03 至 2022.12. 主持.\cvmark{教研} \end{itemize} \ No newline at end of file diff --git a/简历/简历.pdf b/简历/简历.pdf index 96895633ec3ea14742d908dc0cdc28e311a4bb5d..aae011a181818dedb9f9fb5d02f849cbedc067a7 100644 GIT binary patch delta 112720 zcmY(IQ*ho7w6)VTjcuo~ZQHhO+xWGyoxHJa8;zYbjcwab&i|Y5=A4Utzh=)fd)8X} z;}>a01nIBfZ^7Wf--987e>6cFIs#lAoB{%{u5K>o#`dsYt5bSoHRoI|8*j9?P&FB% zPT&kKvvr-@j};f-T~_xZGSVDIpqSGbU<(C4k%XM4)U$F^w7aUZXmlH$kC}zB*I-|K z8@Sz_A6j90c543!{2{n=B>3;B^wjsw)AlpJAMBH4z^I54wb#I;TI+%Y5+LYmf8Pp; zyz51B$ow3n0K7wQH#~N4k0uPiLIDfASG0hRpcEfyM23Ix<70frgr~JwSdbUN4fPGE zLC6ecdrY6#Gri#xf}f0!-46k!6aII-MPL7Vzoe1O34_=&7N>mPdzlY!YX#k5zdmKA z1V8;=26FesJA|dbgL0Sn02)E)69&N<-~$4IV%_5Gpu^zn@h+F~>)tgBOn%33d=5|_ zP<#F+?2j|U&q>~{8
aal=NCi&j+^uq6ITt9vTR2%gMr
zf BcT!KrR43?o848zolZfIpxRfHPoR9fC=q@8zufBP{%;#}w
z7emvC&antt3Pw|y6@q%P^r2$&*yMz5)I+xZ_zXqTrvtwt(X%4DxOTUWv_GZ>W{R*>
zrJ-Oo2BJ0SxDs_PYbq*fCVq4QiNIRKw<`PhHDziSAhJn(N(ZIP_FXiCjx6?9A)%d<
zhE&(r!d=DCt;X@gr!Kncew;D-C<0Q#Q^pLK$?j!%+CKZc`13&QlNp5KU>f`;&z@EC&dF{@T
z&i;}jA{&Hz7HzbD-LjN6tTASsACWb+_we3Bdo2vctx495+Kq4;Vo)n0IlTSp EDkn2h3X(0X5g
>u;?lm*<@!c)zF zo_|@0JMz`>E>L$*<2|@Naj`^SrsU8ZXfL3-!fy zrPU=2e{@r58rqMN$Du!0XM{-jG3O!kH7th6ij+K@!#VUxympXw(8}WS;*w%!6mP** z2{##9C0RBejl`+TctV&f1;|QyqvM%vow%dXUV&FufE6j@i+83 z4h>L?Mw}QEH_^smN6GOH_?QYpho&P}bQVoE0)EFnhwW8xREs>nK{22~;}y;2*$wHW zgSQQ=?7(X$tY`QU#LuZxZT%Y8;2pMUxrlv?PEu^2;$h0;)bIKMzWhQhs5F+mYv BNlKxr|{jCC6rjq5{#@sb~f|g;+u={1`s`73NjL zfoinm5!!|yhE+6_W!DS!o3l8;8US QY8Woi6%D4`&>&NOWG!QfYyVF;5# zJwTIT#5kDYn_gW}T#o}O37T1mmfoBNA2V;;Uj1s g$`N4f~ti z6~0|Q=W$lGytVeE1gfaXXcihW25nnRQsEOlFygO2!Lc+oJ5`}{?2_! ^~ zs>_oVX##KHH;H+m*Mhh*unwl 6+SVi%6wNKJSiX+cuG5lhDpRp9=8z z@%7oiOfEr#4KoGNO+=AYL_$KyA!I?SD*nY0bbEp(o-|fh7ZZM_j1cCfN?qGw1+lzs z|DnM7;@tuQ*kZxA3m-=1#^mv(|Cm{ktmS)Cqr^XEIWjX%y(uyFf7Sugfm^TGv4f3! ztk31|ap8%V5R3C4B^n}qH0LZFMaSSO;{_=~Q%Wl#jS4w}XwuPS|M)0 Gjt6f_Eza`x3BXt@h=SdQM6=E;8i6X%)@;2 U&q!;g7cgR1wZ5ECi6j>?i zUvEgzN&2WjXk|{GjeY!|Zn{;Eb4VE~g!x%Xo(-PRFyiNgY-GDugcEdp_tI1&rf=TE zggn??bpRxL{v)=!-!%fuuYJwlI(VlOEN*VSDK4AL+6TgRe|--Z9oM}5+%n~6Y$>i_ zrSkcTVeNOrp*$`+zQMb3ajKEOcocH`o?+R*(}qJFTNY?%m`~v3{50fARyp_(vLYpS z-@pj^N_=%(A%5tpz&!lW83Z(
R!O>B{Sx3}I>eI@LG{seCllvI`XexZiA&<}ib)4i()s42AdZNa1#oPyy zt=kB3%GK6uoeixe$JKJeP{xnb+=uyu(s_bre>L1Df27W*_(l3}@fK|IZ(f(_F1_tS z+5@+@GyHP&t1t-T6RPr3>BameoS$N)u& R`f1Batx8C>25xnIUc+2b52b+`23mLXnTUgQ3W2LvFj`{_AgzwFcmz>gEYSlCd zubhcr*$Z#@Q*VY+$Mcg45(*jk#8A)G-#GQ4@h$_$sC{ dHTCksp1v~wJv0x3@f~Cj_PYJPLFT9Bbdr>S{Ff4`_-uh`c$MV=9 zdgChe5oJ)3Xsi#CqSO(ji}dQ#vtU~Yix{v+S16bKqYrJsoPt@^YHfCc;)vY#7}yb} zf0nh;8{@*0WJ$-OlbJ}r jUAJfj-e@%?8U-Dsze}GRSpv>Eo-A^uz}1<<4me zS6fIXgvI{_$ssHVi(w6%{7;!!fS(@Hf*R%xui5+OTiM*Zx#n~6F*Ej>+5aXRf4Sik zE;hDpckk*_cj*^9nqeeLYGb~J(OgVyi~kMhQXlD^oy|Cc4LQe50O|i UIkg4u~@3Xsh0~xmBqlK~B00 nj-OLWejnSCOGeSo7nQf6MwY)8_AH z;*NzLJ7HD-nKE6ekmpEYcOI-M1vanfV1AJ5$Q_>=n1FJAWZ2S-=-Aqz=3O;@QnWD^ zt%^s~@uw}nbzVJJLWp4%o2n&nyC2eiJ!7B7wE-u|-5JOcJ>b|cGDcx(3_(4@5!V$o z)-Y4xd;j;_2_qX$rC7PHe HdEfBzSWqJpVh7`9RO zGFI=}xFZ<*7U3c8WF4wcEz4urpEZRQr@F25W2rcQnQv?m-ksHD&8JGVg(+%moEF?A zz3J?)Z$?wcbB~cH;O`?VZretYAxl`IqtuLr=)* 3KLyS5ON7C}Bl#r{*_3EP1j;q-)ay5K t3G zngHNEk3Rl>4M-o?JZ$c$D~?m(D1G(~$@ $f4H1#E^nx))-X_Gs&efW zy0a`6Jc`fdTQomwzpk;=hY;3?Ha>#);9_EWoNFf*Y?SJpufY-&`jX+T!HwItTC^Xw zQ$mnM2rbYt)FB+HoHb}jNO9ya`iR6qM~~7S37Xgf98t98MGH~TA4&q@ aVrOs&B9Aq_OL~gVMsP7*G)dPbXmR2p#acP=*^U_+d3O={5 z!}n4fnAL))^feBkQspYgTf(WtJ)!Q^M} _qK~zI1!<7P$>J_< z?{v&_mVV*Z1~X7XACt-}IsPyjVmM4WfjfsD(JQKBfVF{89QQnjj Nz2wp zB9?s>O&whm?JEn9mn9?yA7_pS%uXI=jpOavahavIKl6vT5*VRyRJPJsdL~eyoxUQ& zHVQw)e}Y;O`~EZjieWi7JWIqXp4l0G6hih#C_)$`6oiJ7U~c2HqxALo+E_A1Nc}9| zI7SEtWM$Xl5Hu1(=zfmojYgUy#N4Lvg|R3Vgc^Ur)5JV|My(~k=W{ktKZ(E1MaI7v zjWgY;`Dn28*`f|eM6ci=W0;o7?L{9iK#T3re>+)txvYNu5k6~$_sfqfGjT8m1EGOq z8{cT@u=w~RHf&%ZvJo<|>v7e>kd(%PXhm4sAqLFV*^So-*@TIv!-99xLLT1b-rcKp zd{D3W0s8>F^;sM`P9vYgXg3;x9BguAA}r$tFsvCo6yU&sKUIU4JwaYjk3Lp3mZ=+r zf7u@$K&rv>cfc$LjytO;g0;c|zGH$`81b#_1A{whZ{(X-b12VnkWRTOg6%Yp%b#dq ziuRQT25Deal_fab`m!7LcmMOxZK59&WM<#$3UuN~nRuWb8(j &`Url*_K z73H=kPv^q;Oh_;Kuc9x$jo|^6a#?hXPuryI*B5saYG#fRIu=UJtrOisejJSA)6gi| z;DDMr)UF~>$4uK!*zYAEM97($7oD3*cpn#ElKAftAs=eFR@9C5b1((=qbamSf1DPk zYG88JD-+oW-aSwEYhVUmo;kg3-Qdv!9=+>(#6R?j2iUQ+o&LN&hC?$9w_%2WbjzlZ zXEa_ibF|PVPbPvHFkcOcu-dAbzwMSq7uA_?HHAjFv4E>Fv{LixL~LUp{~^+HXeioD zFRK+9Qpoe?$!*W^{woPKojgB3e}*7CNt;@afU|a^*ynw(=#n(KKrXx3kjx=pm QyrTtc%>&K;hjTRhzgd56!&UsM*4R3H zrh|{Vqk6!p8_asd-oawC!8p-_gS>$QYyK&+rrF15&=(sx_F2ey>`Tqje+0oOj= }RP@?^~VXpYD81cQBtIWaR>4Y1a;sK}Qr2mD0#N3LU~1SZ$LR^YiN#kQ4zY zl^-Bg`fw^TA^t$9O}m4MQt9!zuUlKn5_2VMj;soHk6^H!8cg3nYv6;?uz7>BrkL>4 zWA`wyaAN(Uj?Su^4X4VAf8$9daNcE!|L!%LT)f>+?r00_><0&?_BSNqSnz$Yh8g{c z2!V>&YlCPFmhapLH2dA$k~D=P6}$VF!VABHoM`sR%rA)?im~%aQ8Vo05EzFFIpl;d z p qLyG^iCZ@)B)snIN2E zH942G`1&8Sf5T*n56R55Q28G+EtAttz+YQFyK?vHy{k}gO-!4y-^zHzw{cMk8n4=A z@-5OUuB5lq@egLALCi(VzTF7#jX32fy%A9M6xsiJx%b}BO;<}ui LPr2t5`Y z{} Nsigl~*}?F_34WffK}LLusaj?wJD`d~3_>=`A8wR=zkjV}XI8ei1JZUuMVe8<5d z(2+uyD$UlvmSp#y8?YCEiI8pro$jk~ZxjG_e+CcX#5^2LL}!IhO(>DDG2%5htl_`l z&?*{PN28Gw(0ex7(IOZLv>N+o)(VE{J%w8kJ0g@=H;4>BQ1fd=7Jb^^w9hpcOt_F! zGP9aM?Ukwyt>xV-pI_5m1yz^$$x9Yq>c{J^bEAs)+pk3yi InQt(yNf_r-qAikbN_Om>$iSC1j#E43WOHI$@x>X4ks_4Z|SJLUY4RxlPi|? zNW6VT*fQsoWtXeUm~urret$Fo*>i 6Hx&1ye+`l3H*loXf_V+B+*W_WYKMnt+H+XnUwf_e ztUF=l;~^S lx(oZbNh&OJ+9^)N|7aTZ`5D%}!Sph$eduK}KTA|#8rCvNMHDbx zP{8WtnQ2OSW|s7E$)oaX1 =Gjj*_mq!_VxqcP)(4=+(R(5Kt zvLq|h_IsNB r{w3PTYU%PO;aEC*N~o8-wmR*e^NLZ&q~P|uaqD=H1bdE zvz1w?ITMr;_SZ)l$O?IKQ}FiNe@d^%0(dFV#iwRZ#R9ORS7QPEhVQ+aV14lG<4tMU zhF?GNV3bYu3VEthfnWbY@%^$(`ONq%y0}!0Umsr-zkeyAIUru^QO2!>Tm-c)&?hX? zhJE=k!+rNjj}{HX{_-%RvM{IdSS!PSM8)ol@{2i~gEQ2UlP626NQSD&e_Z^z#Mf7Z z-`?3Un1UlKxsj^l?#H(#dP&h-!4gfN4xwRAh(a4jsY4}@_}eWQR1OmeEkG=q9cF*< zh^aF>bX7+BF5Bd=+Qf!9!ZH$@9ua2M*g)usPS%%#xe7K2v7g+rQ$PTZr_yWF>Qd`V zjT_h^L!+m(1IXNrj?;C*e*j8``u{K|qk26BPfeI4 _@0-8lZx2uZ Ptxfx7w~w z66&^Z#eNUQa8P(K93}h3`^D~LkXASY%%P&akNSlBGN{Ki-FGD#HX0|?wi5}6>)q}j zzx@0MhJBbGDT4LL2mL4vMA-dy9L*LZz8M984}|pNV+1x>0>YsvO>^0)k`{(P{`TyP zG#y#MASL{!1sfdfe=gC%p_?my1=n8jzu3R|vE y&isp?jBHSV(6 BZQ;jl*9pf50M(pQ!oEWJg)Nhfmg8 zzPRyA*Kb{fF>XYc*rfwD>NjxX@RmBAMVD4&D{c93S_qbKoIC{v5nfQkOq{#yLbH%P z`ViZ2SP9HoSey!8Qhu slhq8UCK}|mQDpEH zOlvHfgg&7x{J)CBNuK5}4OkMVIkLv`GJJ9%KfEeNm)#TA^=Hp&9Zcv^>%?utWjHuD zW9LmUgG2gWoVB0a)3P?hO?uPq3J%9TuQ8qm?5pZXe_IIQ>O2aE(RtFWRFq*0B{bVM zK?V_M0u_~*5Ppa(3VU>d*-`pTVnqyziSW-jr6;fRlOn73f)$K55p2!q5~d&p{YA0! zrklYeKP6RcOf_ecJ{G)w3yiRrR|4!MUrARGv|1I6vZu+zqWwfq*aZqR81_2{mi$0u zNmuZjf4D nWJ(ic4?2>n1xfR%Xh5Vagbr>e`rR^ zD5_xLd-dVEwDJN*Q&e^C7CDHH-V^Q<8JH6%sV{G9si-bA9=Lr$&QH-6>U?AC`I`Eo zV>lgD;Si-&!%xr*fW}^Umo%Ka>Zfp#31^nJe 4pdcXl4B9-rpsoc&HZpeK5 zvYZ%6*LB^q3r~xW3!^aJB*Di*FQ1uVft}HOiyuZC=i=@Xl-Omp2-WZt z0Q%?R)|kE(ICUbluvR+&_TPe_TVfv0>tAqd(d?0E()h{hXvw3?Uww7+7Y4%6TI5H~ zf2|dv^Jp =|E1WA3C!CJU&s^09X+kn3% zL(zlqiWb!uG?W}y3oPdE7+!EF2wxzGvVbo%5Q|fa>$jG}d*E?P{G5FND*YE+bo>R6 z>+@8rq@TOC!(hpHka zp#13yj8niAoZK0Pn_h(<1PN~miU?aZAt)LQvCz-Fw5OVs>c{}D^;Ad4m78@PCCOQe z3^ju$8N4}^T1deGNTn_2-%H4Wn;ICB-J!jMt(;XaJk>e ?+q |yYe z?5 K2FJit09Dgs}Mm4`}l7@f8vi7`D{(kmD(m_ZQJ3F#0UTRZ-R$7kFJnC9C8E= zB*&4_W|4GTLRDNYVcRpyiIE>ATUeQmx3C4+XkjRJel^vayH81t!%oMW^@{JZ_jzCa zV=RH%pp%}tyQF ^leXzo2jRTgTa(A zZJCgJp_#~;uI#A0t?6NS2dck@
m2nrAcZfj(ynsa1W%UogA;y0=ye^G+G>s zR*yr&g;g2}!&Kl4v#lUSe}Bky7`w+fa4c90mbvY@a4{P!@$R480~2~-V6Qlv58^L# z5ea7}pGUSy!=#@txdE }`S+xRv#A`!hK{d`ducq2auVPGme=VD@;_q4Ce z_mtk=einux|4R(N1l{3~d2;|7xe_I;L<^;cc|y6tk9s>l({wVqe}sApvmV2))9?x2 zbfghF3=VK^t3-xxNxK|6gOx8DEgO!83C(!p!B!34Fw+V`^jrVKc2D?*!m}V%^Hd8T zl4IaR({aF0%Wsilf}IYQcEjEtanNJ-kH`FG{f}Hse0{)am)srF+dk*vQ{-94@YClA z)nely-)0)Eh(Vjif1ydjq1Ff(ufiK@o)sL_@1{-Rg`o9liXo9REFvoT6;;3Z{D$k> zMmnRxK4|EH%y0=zEduK%7 zzNI%Mo0oDsH@dm6*}kH2Q|pdSh8^hej33IejKk aNJ)H zd%Z{l4S~};!b;QWZ$P!1k>+vsU5XuOS7svfX6y)ote9M9?_C;Sy`L6rvNz6xI1YV? z_QHp>#e%Qm@?Ziu1ZaQN{H(pycmj)YNH6s0oW6t!I&ncCJE8G^5hPk@(BVB*bFg_^ z&K_y^jy8B7f32%w_+KHE+wCse^8=Nenk`SyTyjOSXP1bz=|fX43FQWY=`ZNRNfG}U z_1}ht*rL~hEh4KDYh0CF J0?d#pVyX{a91Ecq6 zQ6`=OD;Q{+%7cY>xWb22=!W#64tMTnm@|$>bM|vEXAGJ{S-9z<)nKoMcuktNf1qd% zj`>t_e@lK-Cs_7~H63D0Gq$1QUt{%Y+`?O _kPo3SJD!0u%bl!Lp;=mZEmblY0dcsNRRXJ5-{ z%_)n?7Y4-MHjLwr#?_2yT5x`Ybk|DP^~*i5e;0dj>S}w-b!Ir2!GuE)+z#)YXtiej zJ5s9hiZmGv+uV^&C$B`7C)Qh|J!owH*LJp7eysdE9|jhusM6%hrCk!g9ip++$-9?d zYkNvliZYbSg*OGfn2WH8Yp8vTH{1EGh)Oz|5S!5HCaEeH!8=s+$l!6?r!!a*?iY64 zf7<&aW8p$%H(C2i`;#VE` $GI!Nc$%E5Z$+SGXzhS~b2y2IdC(c{5A(PW8bBf7(oNvVM;beS|efT}Tv$MVQ zL&fV{Fe^z>lK1E)Ejr{qF1^<1N>Yk&fBw4QmSiW+?KTK*YXyD}7vVi3<6{$UxJxu; z xYP)nS4OIl@uKLk2TPV zL%D0WAoZ5`rT(tIU6`$IT*&?CG!=>pg-A$6#iQl!XbjqcJ|O62)$1$ZpdiC3(+t~5 zD1^gEeibN8Pqw#a3z^=xMuf&fe %c9~(yNyR{ z){<_{qgSuKR{qUEJ}SkFM&O!|0+A-~j^AQW4GCl|mb`*LwXj4Bi|Yn}RtLWSm^sPJ z#NPVV`iop_?3uu8Zl!+Gf4;pMkRbmu28}A`7NsrDSY~6$6ymZIR2eF`jSj+0#Gc*R zxxc(dm6eni&|CoHB~hu-z9Am6gVLDLgye`^H0tlQurn0G7`W7rAgU%No223!sibSi zucutYX{9<<%^1FabDBFhPm!)vkS-;cn_z$W)v3gM2?}-=K^rVLf9Vlk&Xd9kBKk@= zbXtyd)Wkyz!o1=bi#R3xp?W5e3R-9^c|RRYy|b!Ee3pF!%lU~o6lwSCT~@SNde`eT zj6q2{M!y`yoV&AVC8dV4f>cGCTp@M5vBytjC>FAnLMj1Shz#)p Bz6EtE!8OD>715k`WDPz~vcFZ#LX+J>5`}ph#CJXSPfBZd oefBj+ShU )#{`O%FgRzv zVOK0mkQ9dH`X>iuBxM{+KhB^k0f%<3|J(yK0m4bsOi*x+sQNCA63pwMdb^S?(q@wl zwx4V;(i3?@;1bUhde-leCVQOp_n3bH)ebcKI4}`qe{vI1*>f7^p)WY_{BtY0g0MyH zOx-Gru1NfMi;#+1r4gYB1&z&Nrfv1#$b*hfN{T$XH2s84Bwd$S7_W*^#iWI&gfsW$ zS@msJ7CSWj2bxEwde;r?o(F)V4i 2kf=ChXI{Pp*%zdpNsvxKnN zsTc<|f05fZVjLPZc5GI(q_ytcsnactVV^Lbnv^_`(0OE 9+E&sP9-(u*)3Fq6bWn$VnAXtCJ8$UFZKT4Hn zs01?fJw5z06JY(b`qw&sv=K)*nP0BI!$rk)e=U1}1{Tkfe!cDjEJIot&-kHLWR8O2 zHNCPb>=zptLBaM@>iV2`#X$noTPBL4j?Ru;9vhMvlb9Hh%p42$Om?zHL#d51s&ZTY z5-q^BvKd~4KE{gkbZiqElRs5@)3Fx