From dba117d48612590da7ea3f54353016d23bb896d1 Mon Sep 17 00:00:00 2001 From: dunwu Date: Thu, 13 May 2021 16:40:01 +0800 Subject: [PATCH 01/23] =?UTF-8?q?refactor:=20=E9=A1=B9=E7=9B=AE=E6=95=B4?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +- docs/.vuepress/config.js | 187 +++++++++++++----- docs/README.md | 5 +- docs/javaee/javaee-filter-listener.md | 2 +- docs/javatool/build/maven/maven-action.md | 8 +- docs/javatool/build/maven/maven-deploy.md | 8 +- docs/javatool/build/maven/maven-quickstart.md | 22 +-- docs/javatool/monitor/cat.md | 4 +- docs/javatool/monitor/monitor-summary.md | 6 +- docs/javatool/monitor/skywalking.md | 6 +- docs/javatool/monitor/zipkin.md | 6 +- docs/package.json | 17 +- 12 files changed, 183 insertions(+), 91 deletions(-) diff --git a/README.md b/README.md index 0841d736..c3f25c8e 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,12 @@

- logo + logo

license + build

JavaTutorial

diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index 5d3766dc..8ed2745b 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -2,62 +2,147 @@ * @see https://vuepress.vuejs.org/zh/ */ module.exports = { - port: "4000", - dest: "dist", - base: "/java-tutorial/", - title: "JAVA-TUTORIAL", - description: "Java 教程", - head: [["link", {rel: "icon", href: `/favicon.ico`}]], + port: '4000', + dest: 'dist', + base: '/java-tutorial/', + title: 'JAVA-TUTORIAL', + description: 'Java 教程', + head: [['link', { rel: 'icon', href: `/favicon.ico` }]], markdown: { externalLinks: { - target: "_blank", rel: "noopener noreferrer" - } + target: '_blank', + rel: 'noopener noreferrer', + }, }, themeConfig: { - logo: "images/dunwu-logo-100.png", - repo: "dunwu/java-tutorial", - repoLabel: "Github", - docsDir: "docs", - docsBranch: "master", + logo: 'https://raw.githubusercontent.com/dunwu/images/dev/common/dunwu-logo-200.png', + repo: 'dunwu/java-tutorial', + repoLabel: 'Github', + docsDir: 'docs', + docsBranch: 'master', editLinks: true, smoothScroll: true, locales: { - "/": { - label: "简体中文", selectText: "Languages", editLinkText: "帮助我们改善此页面!", lastUpdated: "上次更新", nav: [{ - text: "工具", link: "/javatool/", items: [{ - text: "构建", link: "/javatool/build/" - }, { - text: "IDE", link: "/javatool/ide/" - }, { - text: "监控", link: "/javatool/monitor/" - }] - }, { - text: "JavaEE", link: "/javaee/" - }, { - text: "✨ Java系列", ariaLabel: "Java", items: [{ - text: "Java 教程 📚", link: "https://dunwu.github.io/java-tutorial/", target: "_blank", rel: "" - }, { - text: "JavaCore 教程 📚", link: "https://dunwu.github.io/javacore/", target: "_blank", rel: "" - }, { - text: "JavaTech 教程 📚", link: "https://dunwu.github.io/javatech/", target: "_blank", rel: "" - }, { - text: "Spring 教程 📚", link: "https://dunwu.github.io/spring-tutorial/", target: "_blank", rel: "" - }, { - text: "Spring Boot 教程 📚", link: "https://dunwu.github.io/spring-boot-tutorial/", target: "_blank", rel: "" - }] - }, { - text: "🎯 博客", link: "https://github.com/dunwu/blog", target: "_blank", rel: "" - }], sidebar: "auto", sidebarDepth: 2 - } - } + '/': { + label: '简体中文', + selectText: 'Languages', + editLinkText: '帮助我们改善此页面!', + lastUpdated: '上次更新', + nav: [ + { + text: '工具', + link: '/javatool/', + items: [ + { + text: '构建', + link: '/javatool/build/', + }, + { + text: 'IDE', + link: '/javatool/ide/', + }, + { + text: '监控', + link: '/javatool/monitor/', + }, + ], + }, + { + text: 'JavaEE', + link: '/javaee/', + }, + { + text: '✨ Java系列', + ariaLabel: 'Java', + items: [ + { + text: 'Java 教程 📚', + link: 'https://dunwu.github.io/java-tutorial/', + target: '_blank', + rel: '', + }, + { + text: 'JavaCore 教程 📚', + link: 'https://dunwu.github.io/javacore/', + target: '_blank', + rel: '', + }, + { + text: 'JavaTech 教程 📚', + link: 'https://dunwu.github.io/javatech/', + target: '_blank', + rel: '', + }, + { + text: 'Spring 教程 📚', + link: 'https://dunwu.github.io/spring-tutorial/', + target: '_blank', + rel: '', + }, + { + text: 'Spring Boot 教程 📚', + link: 'https://dunwu.github.io/spring-boot-tutorial/', + target: '_blank', + rel: '', + }, + ], + }, + { + text: '🎯 博客', + link: 'https://github.com/dunwu/blog', + target: '_blank', + rel: '', + }, + ], + sidebar: 'auto', + sidebarDepth: 2, + }, + }, }, - plugins: [["@vuepress/active-header-links", { - sidebarLinkSelector: ".sidebar-link", headerAnchorSelector: ".header-anchor" - }], ["@vuepress/back-to-top", true], ["@vuepress/pwa", { - serviceWorker: true, updatePopup: true - }], ["@vuepress/medium-zoom", true], ["container", { - type: "vue", before: '
', after: "
" - }], ["container", { - type: "upgrade", before: info => ``, after: "" - }], ["flowchart"]] -}; + plugins: [ + [ + '@vuepress/active-header-links', + { + sidebarLinkSelector: '.sidebar-link', + headerAnchorSelector: '.header-anchor', + }, + ], + ['@vuepress/back-to-top', true], + [ + '@vuepress/pwa', + { + serviceWorker: true, + updatePopup: true, + }, + ], + [ + '@vuepress/last-updated', + { + transformer: (timestamp, lang) => { + // 不要忘了安装 moment + const moment = require('moment') + moment.locale(lang) + return moment(timestamp).fromNow() + }, + }, + ], + ['@vuepress/medium-zoom', true], + [ + 'container', + { + type: 'vue', + before: '
',
+        after: '
', + }, + ], + [ + 'container', + { + type: 'upgrade', + before: (info) => ``, + after: '', + }, + ], + ['flowchart'], + ], +} diff --git a/docs/README.md b/docs/README.md index d73c10ce..01306570 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,12 +1,15 @@ --- home: true -heroImage: http://dunwu.test.upcdn.net/common/logo/dunwu-logo.png +heroImage: https://raw.githubusercontent.com/dunwu/images/dev/common/dunwu-logo-200.png heroText: JAVA-TUTORIAL tagline: ☕ java-tutorial 是一个 Java 教程,汇集一个老司机在 Java 领域的十年积累。 actionLink: / footer: CC-BY-SA-4.0 Licensed | Copyright © 2018-Now Dunwu --- +![license](https://badgen.net/github/license/dunwu/java-tutorial) +![build](https://travis-ci.com/dunwu/java-tutorial.svg?branch=master) + > ☕ **java-tutorial** 是一个 Java 教程,汇集一个老司机在 Java 领域的十年积累。 > > - 🔁 项目同步维护:[Github](https://github.com/dunwu/java-tutorial/) | [Gitee](https://gitee.com/turnon/java-tutorial/) diff --git a/docs/javaee/javaee-filter-listener.md b/docs/javaee/javaee-filter-listener.md index 250fd9a0..0abf6400 100644 --- a/docs/javaee/javaee-filter-listener.md +++ b/docs/javaee/javaee-filter-listener.md @@ -24,7 +24,7 @@ Filter 提供了过滤链(Filter Chain)的概念,一个过滤链包括多个 Filter。客户端请求 request 在抵达 Servlet 之前会经过过滤链的所有 Filter,服务器响应 response 从 Servlet 抵达客户端浏览器之前也会经过过滤链的所有 FIlter。 -![img](http://dunwu.test.upcdn.net/snap/1559054413341.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/1559054413341.png) ### 1.1. 过滤器方法 diff --git a/docs/javatool/build/maven/maven-action.md b/docs/javatool/build/maven/maven-action.md index c010a1cf..82d16c3b 100644 --- a/docs/javatool/build/maven/maven-action.md +++ b/docs/javatool/build/maven/maven-action.md @@ -53,21 +53,21 @@ maven 的 JDK 源与指定的 JDK 编译版本不符。 Project SDK 是否正确 -![img](http://dunwu.test.upcdn.net/snap/20181127203324.png!zp) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20181127203324.png) SDK 路径是否正确 -![img](http://dunwu.test.upcdn.net/snap/20181127203427.png!zp) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20181127203427.png) - **查看 Settings > Maven 的配置** JDK for importer 是否正确 -![img](http://dunwu.test.upcdn.net/snap/20181127203408.png!zp) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20181127203408.png) Runner 是否正确 -![img](http://dunwu.test.upcdn.net/snap/20181127203439.png!zp) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20181127203439.png) ### 重复引入依赖 diff --git a/docs/javatool/build/maven/maven-deploy.md b/docs/javatool/build/maven/maven-deploy.md index ba18d389..e4fece0e 100644 --- a/docs/javatool/build/maven/maven-deploy.md +++ b/docs/javatool/build/maven/maven-deploy.md @@ -33,7 +33,7 @@ 注册账号成功后,根据你 Java 包的功能分别写上`Summary`、`Description`、`Group Id`、`SCM url`以及`Project URL`等必要信息,可以参见我之前创建的 Issue:[OSSRH-36187](https://issues.sonatype.org/browse/OSSRH-36187)。 -![img](http://dunwu.test.upcdn.net/snap/20181106143734.png!zp) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20181106143734.png) 创建完之后需要等待 Sonatype 的工作人员审核处理,审核时间还是很快的,我的审核差不多等待了两小时。当 Issue 的 Status 变为`RESOLVED`后,就可以进行下一步操作了。 @@ -309,7 +309,7 @@ gpg: unchanged: 1 进入[官方下载地址](https://www.sonatype.com/download-oss-sonatype),选择合适版本下载。 -![img](http://dunwu.test.upcdn.net/snap/20181127203029.png!zp) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20181127203029.png) 本人希望将 Nexus 部署在 Linux 机器,所以选用的是 Unix 版本。 @@ -341,13 +341,13 @@ Usage: ./nexus {start|stop|run|run-redirect|status|restart|force-reload} 启动成功后,在浏览器中访问 `http://:8081`,欢迎页面如下图所示: -![img](http://dunwu.test.upcdn.net/snap/20181127203131.png!zp) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20181127203131.png) 点击右上角 Sign in 登录,默认用户名/密码为:admin/admin123。 有必要提一下的是,在 Nexus 的 Repositories 管理页面,展示了可用的 maven 仓库,如下图所示: -![img](http://dunwu.test.upcdn.net/snap/20181127203156.png!zp) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20181127203156.png) > 说明: > diff --git a/docs/javatool/build/maven/maven-quickstart.md b/docs/javatool/build/maven/maven-quickstart.md index 63e69fcf..8e455d21 100644 --- a/docs/javatool/build/maven/maven-quickstart.md +++ b/docs/javatool/build/maven/maven-quickstart.md @@ -150,9 +150,9 @@ export PATH=$MAVEN_HOME/bin:$PATH 右键 "计算机",选择 "属性",之后点击 "高级系统设置",点击"环境变量",来设置环境变量,有以下系统变量需要配置: -![img](http://dunwu.test.upcdn.net/snap/20200108143017.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200108143017.png) -![img](http://dunwu.test.upcdn.net/snap/20200108143038.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200108143038.png) ### 检测安装成功 @@ -280,15 +280,15 @@ java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App 依次点击 File -> New -> Project 打开创建工程对话框,选择 Maven 工程。 -![img](http://dunwu.test.upcdn.net/snap/1555414103572.png!zp) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/1555414103572.png) (2)输入项目信息 -![img](http://dunwu.test.upcdn.net/snap/1555415549748.png!zp) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/1555415549748.png) (3)点击 Intellij 侧边栏中的 Maven 工具界面,有几个可以直接使用的 maven 命令,可以帮助你进行构建。 -![img](http://dunwu.test.upcdn.net/snap/1555415806237.png!zp) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/1555415806237.png) ### 在 Eclipse 中创建 Maven 工程 @@ -300,7 +300,7 @@ java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App 点击 Help -> Eclipse Marketplace,搜索 maven 关键字,选择安装红框对应的 Maven 插件。 -![img](http://dunwu.test.upcdn.net/snap/20181127195117.png!zp) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20181127195117.png) (2)Maven 环境配置 @@ -308,7 +308,7 @@ java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App 如下图所示,配置 settings.xml 文件的位置 -![img](http://dunwu.test.upcdn.net/snap/20181127195128.png!zp) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20181127195128.png) (3)创建 Maven 工程 @@ -316,7 +316,7 @@ File -> New -> Maven Project -> Next,在接下来的窗口中会看到一大 接下来设置项目的参数,如下: -![img](http://dunwu.test.upcdn.net/snap/20181127195151.png!zp) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20181127195151.png) **groupId**是项目组织唯一的标识符,实际对应 JAVA 的包的结构,是 main 目录里 java 的目录结构。 @@ -330,11 +330,11 @@ Eclipse 中构建方式: 在 Elipse 项目上右击 -> Run As 就能看到很多 Maven 操作。这些操作和 maven 命令是等效的。例如 Maven clean,等同于 mvn clean 命令。 -![img](http://dunwu.test.upcdn.net/snap/20181127195208.png!zp) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20181127195208.png) 你也可以点击 Maven build,输入组合命令,并保存下来。如下图: -![img](http://dunwu.test.upcdn.net/snap/20181127195219.png!zp) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20181127195219.png) Maven 命令构建方式: @@ -342,7 +342,7 @@ Maven 命令构建方式: 进入工程所在目录,输入 maven 命令就可以了。 -![img](http://dunwu.test.upcdn.net/snap/20181127195243.png!zp) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20181127195243.png) ## 四、使用说明 diff --git a/docs/javatool/monitor/cat.md b/docs/javatool/monitor/cat.md index 3769221d..59a129e1 100644 --- a/docs/javatool/monitor/cat.md +++ b/docs/javatool/monitor/cat.md @@ -22,7 +22,7 @@ CAT监控系统将每次URL、Service的请求内部执行情况都封装为一 - **Heartbeat** 表示程序内定期产生的统计信息, 如 CPU 利用率, 内存利用率, 连接池状态, 系统负载等 - **Metric** 用于记录业务指标、指标可能包含对一个指标记录次数、记录平均值、记录总和,业务指标最低统计粒度为 1 分钟 -![img](http://dunwu.test.upcdn.net/snap/20200211174235.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200211174235.png) ## CAT 部署 @@ -57,7 +57,7 @@ CAT 主要分为三个模块: 在实际开发和部署中,cat-consumer 和 cat-home 是部署在一个 jvm 内部,每个 CAT 服务端都可以作为 consumer 也可以作为 home,这样既能减少整个 CAT 层级结构,也可以增加整个系统稳定性。 -![img](http://dunwu.test.upcdn.net/snap/20200211174001.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200211174001.png) 上图是 CAT 目前多机房的整体结构图: diff --git a/docs/javatool/monitor/monitor-summary.md b/docs/javatool/monitor/monitor-summary.md index 1b5b809e..3149c6de 100644 --- a/docs/javatool/monitor/monitor-summary.md +++ b/docs/javatool/monitor/monitor-summary.md @@ -2,17 +2,17 @@ ## 监控工具发展史 -![img](http://dunwu.test.upcdn.net/snap/20200211165813.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200211165813.png) ## 监控工具比对 ### 特性对比 -![img](http://dunwu.test.upcdn.net/snap/20200211171551.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200211171551.png) ### 生态对比 -![img](http://dunwu.test.upcdn.net/snap/20200211172631.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200211172631.png) ## 技术选型 diff --git a/docs/javatool/monitor/skywalking.md b/docs/javatool/monitor/skywalking.md index 50aa54d1..f8012e0b 100644 --- a/docs/javatool/monitor/skywalking.md +++ b/docs/javatool/monitor/skywalking.md @@ -8,7 +8,7 @@ SkyWalking 是观察性分析平台和应用性能管理系统。 提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。 -![img](http://dunwu.test.upcdn.net/snap/20200211152235.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200211152235.png) ### SkyWalking 特性 @@ -29,7 +29,7 @@ SkyWalking 是观察性分析平台和应用性能管理系统。 从逻辑上讲,SkyWalking 分为四个部分:探针(Probes),平台后端,存储和 UI。 -![SkyWalking 架构](http://dunwu.test.upcdn.net/snap/20200211153516.png) +![SkyWalking 架构](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200211153516.png) - **探针(Probes)** - 探针是指集成到目标系统中的代理或SDK库。它们负责收集数据(包括跟踪数据和统计数据)并将其按照 SkyWalking 的要求重新格式化为。 - **平台后端** - 平台后端是一个提供后端服务的集群。它用于聚合、分析和驱动从探针到 UI 的流程。它还为传入格式(如 Zipkin 的格式),存储实现程序和集群管理提供可插入功能。 您甚至可以使用 Observability Analysis Language 自定义聚合和分析。 @@ -40,7 +40,7 @@ SkyWalking 是观察性分析平台和应用性能管理系统。 进入 [Apache SkyWalking 官方下载页面](http://skywalking.apache.org/downloads/),选择安装版本,下载解压到本地。 -![SkyWalking 组件](http://dunwu.test.upcdn.net/snap/20200211154612.png) +![SkyWalking 组件](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200211154612.png) 安装分为三个部分: diff --git a/docs/javatool/monitor/zipkin.md b/docs/javatool/monitor/zipkin.md index e7c76a94..0b9792b2 100644 --- a/docs/javatool/monitor/zipkin.md +++ b/docs/javatool/monitor/zipkin.md @@ -14,7 +14,7 @@ Zipkin 基于 Google Dapper 的论文设计而来,由 Twitter 公司开发贡 Zipkin UI 还提供了一个依赖关系图,该关系图显示了每个应用程序中跟踪了多少个请求。这对于识别聚合行为(包括错误路径或对不赞成使用的服务的调用)很有帮助。 -![Zipkin UI](http://dunwu.test.upcdn.net/snap/20200211161706.png) +![Zipkin UI](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200211161706.png) ### 多平台 @@ -32,7 +32,7 @@ Zipkin 服务器捆绑了用于采集和存储数据的扩展。 数据以 json 形式存储,可以参考:[Zipkin 官方的 Swagger API](https://zipkin.io/zipkin-api/#/default/post_spans) -![Zipkin Swagger API](http://dunwu.test.upcdn.net/snap/20200211162055.png) +![Zipkin Swagger API](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200211162055.png) ## 二、Zipkin 安装 @@ -78,7 +78,7 @@ ZipKin 可以分为两部分, 架构如下: -![Zipkin 架构](http://dunwu.test.upcdn.net/snap/20200211155836.png) +![Zipkin 架构](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200211155836.png) ### Zipkin Server diff --git a/docs/package.json b/docs/package.json index a5efdc14..fec8bc57 100644 --- a/docs/package.json +++ b/docs/package.json @@ -12,16 +12,19 @@ "view-info": "vuepress view-info ./ --temp .temp" }, "devDependencies": { - "@vuepress/plugin-active-header-links": "^1.5.2", - "@vuepress/plugin-back-to-top": "^1.5.0", - "@vuepress/plugin-medium-zoom": "^1.5.0", - "@vuepress/plugin-pwa": "^1.5.0", - "@vuepress/theme-vue": "^1.5.0", - "markdownlint-cli": "^0.23.1", + "@vuepress/plugin-active-header-links": "^1.8.2", + "@vuepress/plugin-back-to-top": "^1.8.2", + "@vuepress/plugin-medium-zoom": "^1.8.2", + "@vuepress/plugin-pwa": "^1.8.2", + "@vuepress/theme-vue": "^1.8.2", + "markdownlint-cli": "^0.25.0", "markdownlint-rule-emphasis-style": "^1.0.1", "rimraf": "^3.0.1", "vue-toasted": "^1.1.25", - "vuepress": "^1.5.0", + "vuepress": "^1.8.2", "vuepress-plugin-flowchart": "^1.4.2" + }, + "dependencies": { + "moment": "^2.29.1" } } From ee4ee3ff826dc2ea975b562e1e963c5a2ac35fe0 Mon Sep 17 00:00:00 2001 From: dunwu Date: Thu, 17 Feb 2022 22:34:30 +0800 Subject: [PATCH 02/23] =?UTF-8?q?feat:=20=E5=B0=86=20javatech=20=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E8=BF=81=E7=A7=BB=E8=87=B3=20java-tutorial=20?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .editorconfig | 2 +- .travis.yml | 2 +- README.md | 221 +- assets/framework/mybatis.eddx | Bin 0 -> 164252 bytes assets/framework/mybatis.xmind | Bin 0 -> 281632 bytes assets/javaweb.eddx | Bin 0 -> 21817 bytes assets/microservice/Dubbo.xmind | Bin 0 -> 218878 bytes assets/mq/RocketMQ.xmind | Bin 0 -> 517596 bytes assets/server/tomcat/Lifecycle.uml | 27 + assets/server/tomcat/ProtocolHandler.uml | 76 + ...3\344\275\223\347\261\273\345\233\276.uml" | 133 + assets/server/tomcat/jetty.xmind | Bin 0 -> 112346 bytes assets/server/tomcat/tomcat.eddx | Bin 0 -> 60395 bytes assets/server/tomcat/tomcat.xmind | Bin 0 -> 118795 bytes assets/shiro.xmind | Bin 0 -> 131886 bytes assets/test.eddx | Bin 0 -> 16894 bytes assets/tomcat.eddx | Bin 21668 -> 0 bytes ...\346\216\247\345\267\245\345\205\267.eddx" | Bin ...\345\205\267\346\257\224\345\257\271.xlsx" | Bin codes/javatech/javatech-cache/pom.xml | 76 + .../SpringBootDataCacheApplication.java | 87 + .../dunwu/javatech/cache/CaffeineDemo.java | 23 + .../dunwu/javatech/cache/GuavaCacheDemo.java | 55 + .../github/dunwu/javatech/cache/LRUCache.java | 60 + .../dunwu/javatech/cache/MemcachedDemo.java | 294 ++ .../io/github/dunwu/javatech/data/User.java | 38 + .../github/dunwu/javatech/data/UserDao.java | 33 + .../dunwu/javatech/data/UserDaoImpl.java | 105 + .../src/main/resources/application.properties | 15 + .../src/main/resources/banner.txt | 12 + .../src/main/resources/logback.xml | 15 + .../src/main/resources/sql/data.sql | 8 + .../src/main/resources/sql/schema.sql | 13 + .../dunwu/javatech/cache/EhcacheApiTest.java | 235 + .../dunwu/javatech/cache/LRUCacheTest.java | 25 + .../cache/spring/SpringCacheDemo.java | 142 + .../cache/spring/SpringCaffeineCacheTest.java | 72 + .../SpringConcurrentHashMapCacheTest.java | 72 + .../cache/spring/SpringEhcacheCacheTest.java | 72 + .../javatech/cache/spring/UserService.java | 87 + .../javatech/cache/spring/package-info.java | 7 + .../src/test/resources/ehcache/ehcache.xml | 42 + .../src/test/resources/ehcache/ehcache1.xml | 26 + .../src/test/resources/ehcache/ehcache2.xml | 26 + .../test/resources/spring/spring-caffeine.xml | 19 + .../test/resources/spring/spring-ehcache.xml | 25 + .../test/resources/spring/spring-hashmap.xml | 26 + .../javatech-io/javatech-bean/README.md | 373 ++ .../javatech-io/javatech-bean/pom.xml | 53 + .../javatech/bean/lombok/BuilderDemo01.java | 28 + .../javatech/bean/lombok/BuilderDemo02.java | 33 + .../dunwu/javatech/bean/lombok/DataDemo.java | 25 + .../bean/lombok/EqualsAndHashCodeDemo.java | 55 + .../bean/lombok/GetterAndSetterDemo.java | 23 + .../javatech/bean/lombok/NonNullDemo.java | 23 + .../dunwu/javatech/bean/lombok/Person.java | 26 + .../javatech/bean/lombok/ToStringDemo.java | 24 + .../dunwu/javatech/bean/lombok/User.java | 24 + .../javatech/bean/lombok/package-info.java | 8 + .../dunwu/javatech/bean/BeanConvertTest.java | 103 + .../javatech/bean/lombok/LombokTest.java | 142 + .../javatech-io/javatech-file-parser/pom.xml | 100 + .../dunwu/javatech/excel/ExcelUtil.java | 100 + .../github/dunwu/javatech/word/WordUtil.java | 263 + .../dunwu/javatech/excel/ExcelTest.java | 128 + .../java/JavaParserCommentReporterTest.java | 72 + .../JavaParserLexicalPreservationTest.java | 57 + .../java/JavaParserModifyingVisitorTest.java | 67 + .../java/JavaParserPerttyPrintTest.java | 45 + .../dunwu/javatech/java/JavaParserTest.java | 222 + .../java/JavaParserVoidVisitorTest.java | 68 + .../github/dunwu/javatech/java/samples/A.java | 11 + .../dunwu/javatech/java/samples/Bar.java | 14 + .../java/samples/CaptchaTypeEnum.java | 40 + .../javatech/java/samples/CodeBiEnum.java | 30 + .../dunwu/javatech/java/samples/CodeEnum.java | 40 + .../java/samples/CommentGenerator.java | 57 + .../javatech/java/samples/CommentRemover.java | 30 + .../dunwu/javatech/java/samples/Foo.java | 7 + .../java/samples/LexicalPreservation.java | 9 + .../java/samples/ReversePolishNotation.java | 81 + .../java/samples/WebSocketMsgType.java | 15 + .../javatech/pinyin/PinyinParserTest.java | 52 + .../dunwu/javatech/word/WordUtilTest.java | 112 + .../javatech-io/javatech-json/pom.xml | 58 + .../json/fastjson/FastjsonAnnotationBean.java | 175 + .../json/fastjson/FastjsonCaseTests.java | 59 + .../fastjson/FastjsonPerformanceTests.java | 50 + .../json/gson/GsonAnnotationBean.java | 52 + .../javatech/json/gson/GsonCaseTests.java | 80 + .../json/gson/GsonPerformanceTests.java | 53 + .../javatech/json/gson/VersionedClass.java | 21 + .../json/jackson/JacksonAnnotationBean.java | 55 + .../json/jackson/JacksonPerformanceTests.java | 53 + .../javatech/json/jackson/JacksonTests.java | 101 + .../dunwu/javatech/json/util/BeanUtils.java | 68 + .../dunwu/javatech/json/util/DateUtil.java | 120 + .../dunwu/javatech/json/util/Group.java | 42 + .../dunwu/javatech/json/util/Person.java | 42 + .../dunwu/javatech/json/util/TestBean.java | 59 + .../dunwu/javatech/json/util/TestBean2.java | 50 + .../github/dunwu/javatech/json/util/User.java | 35 + .../javatech-io/javatech-serialize/pom.xml | 56 + .../io/github/dunwu/javatech/io/FstDemo.java | 73 + .../dunwu/javatech/io/JdkSerializeDemo.java | 78 + .../io/github/dunwu/javatech/io/KryoDemo.java | 114 + .../dunwu/javatech/io/util/BeanUtils.java | 68 + .../dunwu/javatech/io/util/DateUtil.java | 120 + .../github/dunwu/javatech/io/util/Group.java | 42 + .../github/dunwu/javatech/io/util/Person.java | 42 + .../dunwu/javatech/io/util/TestBean.java | 59 + .../dunwu/javatech/io/util/TestBean2.java | 50 + .../github/dunwu/javatech/io/util/User.java | 35 + .../javatech/io/SerializePerformanceTest.java | 63 + codes/javatech/javatech-io/pom.xml | 19 + codes/javatech/javatech-lib/pom.xml | 47 + .../reflections/ClasspathHelperTest.java | 41 + .../reflections/CombinedTestModel.java | 77 + .../reflections/ConfigurationBuilderTest.java | 51 + .../reflections/FilterBuilderTest.java | 54 + .../reflections/JavaCodeSerializerTest.java | 31 + .../dunwu/javatech/reflections/JdkTests.java | 273 + .../dunwu/javatech/reflections/MoreTests.java | 110 + .../javatech/reflections/MoreTestsModel.java | 107 + .../reflections/MyTestModelStore.java | 106 + .../javatech/reflections/NameHelperTest.java | 73 + .../reflections/ReflectionUtilsQueryTest.java | 245 + .../reflections/ReflectionUtilsTest.java | 165 + .../ReflectionsExpandSupertypesTest.java | 103 + .../reflections/ReflectionsQueryTest.java | 339 ++ .../javatech/reflections/ReflectionsTest.java | 343 ++ .../dunwu/javatech/reflections/TestModel.java | 115 + .../javatech/reflections/UsageTestModel.java | 32 + .../dunwu/javatech/reflections/VfsTest.java | 132 + .../inner/resource2-reflections.xml | 13 + .../reflections/resource1-reflections.xml | 16 + .../saved-testModel-reflections.json | 200 + .../saved-testModel-reflections.xml | 317 ++ .../reflections/testModel-reflections.json | 200 + .../reflections/testModel-reflections.xml | 317 ++ .../javatech-log/javatech-log4j/pom.xml | 50 + .../github/dunwu/javatech/log/Log4jDemo.java | 27 + .../src/main/resources/log4j.xml | 44 + .../javatech-log/javatech-log4j2/pom.xml | 49 + .../github/dunwu/javatech/log/Log4j2Demo.java | 27 + .../src/main/resources/log4j2.xml | 45 + .../javatech-log/javatech-logback/pom.xml | 45 + .../dunwu/javatech/log/LogbackDemo.java | 27 + .../src/main/resources/logback.xml | 95 + .../javatech-log/javatech-logstash/pom.xml | 33 + .../io/github/dunwu/javatech/ElasticDemo.java | 39 + .../src/main/resources/logback.xml | 66 + codes/javatech/javatech-log/pom.xml | 19 + .../javatech-kafka-springboot/pom.xml | 58 + .../github/dunwu/javatech/KafkaConsumer.java | 24 + .../github/dunwu/javatech/KafkaProducer.java | 37 + .../javatech/KafkaProducerController.java | 28 + .../dunwu/javatech/MsgKafkaApplication.java | 13 + .../javatech/config/KafkaConsumerConfig.java | 62 + .../javatech/config/KafkaProducerConfig.java | 61 + .../src/main/resources/application.properties | 13 + .../src/main/resources/logback.xml | 15 + .../dunwu/javatech/KafkaProducerTest.java | 26 + .../javatech-mq/javatech-kafka/pom.xml | 40 + .../dunwu/javatech/kafka/ConsumerAOC.java | 44 + .../dunwu/javatech/kafka/ConsumerManual.java | 48 + .../kafka/ConsumerManualPartition.java | 49 + .../dunwu/javatech/kafka/ProducerDemo.java | 49 + .../javatech/kafka/ProducerInTransaction.java | 143 + .../dunwu/javatech/kafka/StreamDemo.java | 46 + .../src/main/resources/logback.xml | 50 + .../javatech-mq/javatech-rocketmq/pom.xml | 38 + .../javatech/rocketmq/AsyncProducer.java | 45 + .../javatech/rocketmq/BatchProducer.java | 94 + .../javatech/rocketmq/BroadcastConsumer.java | 44 + .../javatech/rocketmq/BroadcastProducer.java | 29 + .../javatech/rocketmq/OnewayProducer.java | 32 + .../javatech/rocketmq/OrderedConsumer.java | 56 + .../javatech/rocketmq/OrderedProducer.java | 47 + .../dunwu/javatech/rocketmq/RocketConfig.java | 10 + .../rocketmq/ScheduledMessageConsumer.java | 40 + .../rocketmq/ScheduledMessageProducer.java | 31 + .../dunwu/javatech/rocketmq/SyncProducer.java | 34 + .../src/main/resources/logback.xml | 51 + codes/javatech/javatech-mq/pom.xml | 18 + .../javatech-others/javatech-cli/pom.xml | 75 + .../io/github/dunwu/javatech/AnsiSystem.java | 244 + .../io/github/dunwu/javatech/CliDemo.java | 56 + .../io/github/dunwu/javatech/CliUtil.java | 28 + .../github/dunwu/javatech/SystemInfoUtil.java | 265 + .../dunwu/javatech/constant/AnsiBgColor.java | 44 + .../dunwu/javatech/constant/AnsiColor.java | 44 + .../dunwu/javatech/constant/AnsiElement.java | 11 + .../dunwu/javatech/constant/AnsiSgr.java | 42 + .../github/dunwu/javatech/constant/Color.java | 36 + .../github/dunwu/javatech/CliUtilTests.java | 17 + .../github/dunwu/javatech/SystemInfoTest.java | 320 ++ .../javatech-ruleengine/README.md | 3 + .../javatech-ruleengine/pom.xml | 71 + .../javatech/rule/eazyrules/Launcher.java | 25 + .../javatech/rule/eazyrules/WeatherRule.java | 24 + .../dunwu/javatech/rule/mvel/BasicRule.java | 128 + .../javatech/rule/mvel/DefaultRuleEngine.java | 163 + .../dunwu/javatech/rule/mvel/MvelRule.java | 34 + .../dunwu/javatech/rule/mvel/MvelRuleSet.java | 34 + .../github/dunwu/javatech/rule/mvel/Rule.java | 61 + .../javatech/rule/mvel/RuleConstant.java | 33 + .../dunwu/javatech/rule/mvel/RuleContext.java | 8 + .../dunwu/javatech/rule/mvel/RuleEngine.java | 54 + .../javatech/rule/mvel/RuleEngineBuilder.java | 45 + .../javatech/rule/mvel/RuleEngineParams.java | 93 + .../src/main/resources/logback.xml | 95 + .../src/main/resources/weather-rule.yml | 5 + .../rule/eazyrules/EazyRulesTest.java | 85 + .../dunwu/javatech/rule/mvel/ClassTests.java | 44 + .../javatech/rule/mvel/SalaryRuleTest.java | 77 + .../github/dunwu/javatech/rule/mvel/demo.mvel | 56 + .../src/test/resources/SalaryRule.json | 51 + .../javatech-zookeeper/pom.xml | 40 + .../dunwu/javatech/zk/dlock/Callback.java | 12 + .../javatech/zk/dlock/DLockTemplate.java | 16 + .../javatech/zk/dlock/DistributedLock.java | 19 + .../javatech/zk/dlock/TimeoutHandler.java | 11 + .../javatech/zk/dlock/ZkDLockTemplate.java | 51 + .../zk/dlock/ZkReentrantLockCleanerTask.java | 83 + .../ZookeeperReentrantDistributedLock.java | 112 + .../zk/example/ZooKeeperConnection.java | 56 + .../javatech/zk/example/ZooKeeperCreate.java | 50 + .../javatech/zk/example/ZooKeeperDelete.java | 41 + .../javatech/zk/example/ZooKeeperExists.java | 44 + .../zk/example/ZooKeeperGetChildren.java | 55 + .../javatech/zk/example/ZooKeeperGetData.java | 78 + .../javatech/zk/example/ZooKeeperSetData.java | 42 + .../javatech/zk/example/package-info.java | 7 + .../zk/sequence/DistributedSequence.java | 9 + .../zk/sequence/ZkDistributedSequence.java | 64 + .../zk/dlock/ZkReentrantLockTemplateTest.java | 83 + .../src/test/resources/logback.xml | 62 + codes/javatech/javatech-others/pom.xml | 18 + codes/javatech/javatech-server/README.md | 50 + codes/javatech/javatech-server/pom.xml | 81 + .../javatech/controller/HelloController.java | 56 + .../javatech/controller/IndexController.java | 31 + .../javatech/server/SimpleTomcatServer.java | 41 + .../dunwu/javatech/server/TomcatServer.java | 135 + .../src/main/resources/logback.xml | 47 + .../properties/application-develop.properties | 11 + .../properties/application-test.properties | 11 + .../main/resources/spring/spring-servlet.xml | 22 + .../src/main/resources/tomcat/conf/server.xml | 37 + .../src/main/resources/tomcat/conf/web.xml | 4703 +++++++++++++++++ .../src/main/webapp/META-INF/MANIFEST.MF | 3 + .../src/main/webapp/WEB-INF/web.xml | 47 + .../src/main/webapp/views/jsp/hello.jsp | 16 + .../src/main/webapp/views/jsp/index.jsp | 28 + codes/javatech/javatech-test/pom.xml | 68 + .../jmh/JMHSample_34_SafeLooping.java | 162 + .../dunwu/javatech/jmh/JmhQuickStart.java | 43 + .../javatech/jmh/StringBuilderBenchmark.java | 45 + .../dunwu/javatech/lombok/Calculator.java | 9 + .../github/dunwu/javatech/lombok/Person.java | 34 + .../src/main/resources/logback.xml | 15 + .../dunwu/javatech/junit4/JUnitTest.java | 71 + .../javatech/junit5/AssertionsTests.java | 151 + .../javatech/junit5/AssumptionsTests.java | 43 + .../javatech/junit5/DisplayNameTests.java | 32 + .../dunwu/javatech/junit5/DynamicTests.java | 120 + .../dunwu/javatech/junit5/NestedTests.java | 87 + .../javatech/junit5/ParameterizedTests.java | 32 + .../dunwu/javatech/junit5/RepeatedTests.java | 46 + .../dunwu/javatech/junit5/StandardTests.java | 52 + .../dunwu/javatech/mockito/MockitoTest.java | 225 + codes/javatech/pom.xml | 23 + docs/.vuepress/config.js | 54 +- docs/README.md | 219 +- docs/cache/README.md | 36 + docs/cache/cache-framework.md | 341 ++ docs/cache/cache-interview.md | 571 ++ docs/cache/cache-libs.md | 186 + docs/cache/ehcache.md | 542 ++ docs/cache/http-cache.md | 76 + docs/cache/memcached.md | 76 + docs/framework/README.md | 27 + .../Mybatis\345\216\237\347\220\206.md" | 877 +++ ...24\347\224\250\346\214\207\345\215\227.md" | 400 ++ docs/framework/mybatis/README.md | 34 + docs/framework/netty.md | 131 + docs/lib/README.md | 23 + docs/lib/bean/dozer.md | 793 +++ docs/lib/bean/lombok.md | 542 ++ docs/lib/javalib-log.md | 762 +++ docs/lib/javalib-util.md | 7 + docs/lib/javamail.md | 466 ++ docs/lib/jsoup.md | 461 ++ docs/lib/reflections.md | 100 + docs/lib/serialized/README.md | 23 + docs/lib/serialized/javalib-binary.md | 338 ++ docs/lib/serialized/javalib-json.md | 495 ++ docs/lib/template/README.md | 43 + docs/lib/template/freemark.md | 160 + docs/lib/template/thymeleaf.md | 469 ++ docs/lib/template/velocity.md | 316 ++ docs/lib/thumbnailator.md | 244 + docs/lib/zxing.md | 93 + docs/limiting/hystrix.md | 537 ++ docs/microservice/README.md | 12 + docs/microservice/dubbo.md | 874 +++ docs/mq/README.md | 48 + docs/mq/activemq.md | 295 ++ docs/mq/rocketmq.md | 511 ++ ...72\346\234\254\345\216\237\347\220\206.md" | 597 +++ ...37\345\210\227\351\235\242\350\257\225.md" | 361 ++ docs/security/README.md | 12 + docs/security/shiro.md | 425 ++ docs/security/spring-security.md | 221 + docs/server/README.md | 24 + .../server/Tomcat\344\274\230\345\214\226.md" | 154 + .../server/Tomcat\345\256\271\345\231\250.md" | 733 +++ ...24\347\224\250\346\214\207\345\215\227.md" | 895 ++++ ...at\350\277\236\346\216\245\345\231\250.md" | 529 ++ docs/server/jetty.md | 679 +++ docs/server/tomcat-and-jetty.md | 17 + docs/test/README.md | 14 + docs/test/jmeter.md | 204 + docs/test/jmh.md | 340 ++ docs/test/junit.md | 582 ++ docs/test/mockito.md | 562 ++ docs/{javatool => tool}/README.md | 0 docs/{javatool => tool}/build/README.md | 0 docs/{javatool => tool}/build/ant.md | 0 docs/{javatool => tool}/build/maven/README.md | 0 docs/{javatool => tool}/build/maven/book.json | 0 docs/{javatool => tool}/build/maven/cover.jpg | Bin .../build/maven/maven-action.md | 0 .../build/maven/maven-checkstyle-plugin.md | 0 .../build/maven/maven-deploy.md | 0 .../build/maven/maven-pom.md | 0 .../build/maven/maven-quickstart.md | 0 .../build/maven/maven-settings.md | 0 .../build/maven/package.json | 0 .../{javatool => tool}/build/maven/sidebar.md | 0 docs/{javatool => tool}/ide/README.md | 0 docs/{javatool => tool}/ide/eclipse.md | 0 docs/{javatool => tool}/ide/intellij-idea.md | 0 docs/{javatool => tool}/ide/vscode.md | 0 docs/{javatool => tool}/monitor/README.md | 0 docs/{javatool => tool}/monitor/arthas.md | 0 docs/{javatool => tool}/monitor/cat.md | 0 .../monitor/monitor-summary.md | 0 docs/{javatool => tool}/monitor/skywalking.md | 0 docs/{javatool => tool}/monitor/zipkin.md | 0 351 files changed, 39492 insertions(+), 111 deletions(-) create mode 100644 assets/framework/mybatis.eddx create mode 100644 assets/framework/mybatis.xmind create mode 100644 assets/javaweb.eddx create mode 100644 assets/microservice/Dubbo.xmind create mode 100644 assets/mq/RocketMQ.xmind create mode 100644 assets/server/tomcat/Lifecycle.uml create mode 100644 assets/server/tomcat/ProtocolHandler.uml create mode 100644 "assets/server/tomcat/Tomcat\347\224\237\345\221\250\346\234\237\347\256\241\347\220\206\346\200\273\344\275\223\347\261\273\345\233\276.uml" create mode 100644 assets/server/tomcat/jetty.xmind create mode 100644 assets/server/tomcat/tomcat.eddx create mode 100644 assets/server/tomcat/tomcat.xmind create mode 100644 assets/shiro.xmind create mode 100644 assets/test.eddx delete mode 100644 assets/tomcat.eddx rename "assets/javatool/monitor/\347\233\221\346\216\247\345\267\245\345\205\267.eddx" => "assets/tool/monitor/\347\233\221\346\216\247\345\267\245\345\205\267.eddx" (100%) rename "assets/javatool/monitor/\347\233\221\346\216\247\345\267\245\345\205\267\346\257\224\345\257\271.xlsx" => "assets/tool/monitor/\347\233\221\346\216\247\345\267\245\345\205\267\346\257\224\345\257\271.xlsx" (100%) create mode 100644 codes/javatech/javatech-cache/pom.xml create mode 100644 codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/SpringBootDataCacheApplication.java create mode 100644 codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/cache/CaffeineDemo.java create mode 100644 codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/cache/GuavaCacheDemo.java create mode 100644 codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/cache/LRUCache.java create mode 100644 codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/cache/MemcachedDemo.java create mode 100644 codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/data/User.java create mode 100644 codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/data/UserDao.java create mode 100644 codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/data/UserDaoImpl.java create mode 100644 codes/javatech/javatech-cache/src/main/resources/application.properties create mode 100644 codes/javatech/javatech-cache/src/main/resources/banner.txt create mode 100644 codes/javatech/javatech-cache/src/main/resources/logback.xml create mode 100644 codes/javatech/javatech-cache/src/main/resources/sql/data.sql create mode 100644 codes/javatech/javatech-cache/src/main/resources/sql/schema.sql create mode 100644 codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/EhcacheApiTest.java create mode 100644 codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/LRUCacheTest.java create mode 100644 codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/spring/SpringCacheDemo.java create mode 100644 codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/spring/SpringCaffeineCacheTest.java create mode 100644 codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/spring/SpringConcurrentHashMapCacheTest.java create mode 100644 codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/spring/SpringEhcacheCacheTest.java create mode 100644 codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/spring/UserService.java create mode 100644 codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/spring/package-info.java create mode 100644 codes/javatech/javatech-cache/src/test/resources/ehcache/ehcache.xml create mode 100644 codes/javatech/javatech-cache/src/test/resources/ehcache/ehcache1.xml create mode 100644 codes/javatech/javatech-cache/src/test/resources/ehcache/ehcache2.xml create mode 100644 codes/javatech/javatech-cache/src/test/resources/spring/spring-caffeine.xml create mode 100644 codes/javatech/javatech-cache/src/test/resources/spring/spring-ehcache.xml create mode 100644 codes/javatech/javatech-cache/src/test/resources/spring/spring-hashmap.xml create mode 100644 codes/javatech/javatech-io/javatech-bean/README.md create mode 100644 codes/javatech/javatech-io/javatech-bean/pom.xml create mode 100644 codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/BuilderDemo01.java create mode 100644 codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/BuilderDemo02.java create mode 100644 codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/DataDemo.java create mode 100644 codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/EqualsAndHashCodeDemo.java create mode 100644 codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/GetterAndSetterDemo.java create mode 100644 codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/NonNullDemo.java create mode 100644 codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/Person.java create mode 100644 codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/ToStringDemo.java create mode 100644 codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/User.java create mode 100644 codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/package-info.java create mode 100644 codes/javatech/javatech-io/javatech-bean/src/test/java/io/github/dunwu/javatech/bean/BeanConvertTest.java create mode 100644 codes/javatech/javatech-io/javatech-bean/src/test/java/io/github/dunwu/javatech/bean/lombok/LombokTest.java create mode 100644 codes/javatech/javatech-io/javatech-file-parser/pom.xml create mode 100644 codes/javatech/javatech-io/javatech-file-parser/src/main/java/io/github/dunwu/javatech/excel/ExcelUtil.java create mode 100644 codes/javatech/javatech-io/javatech-file-parser/src/main/java/io/github/dunwu/javatech/word/WordUtil.java create mode 100644 codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/excel/ExcelTest.java create mode 100644 codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/JavaParserCommentReporterTest.java create mode 100644 codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/JavaParserLexicalPreservationTest.java create mode 100644 codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/JavaParserModifyingVisitorTest.java create mode 100644 codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/JavaParserPerttyPrintTest.java create mode 100644 codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/JavaParserTest.java create mode 100644 codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/JavaParserVoidVisitorTest.java create mode 100644 codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/A.java create mode 100644 codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/Bar.java create mode 100644 codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/CaptchaTypeEnum.java create mode 100644 codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/CodeBiEnum.java create mode 100644 codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/CodeEnum.java create mode 100644 codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/CommentGenerator.java create mode 100644 codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/CommentRemover.java create mode 100644 codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/Foo.java create mode 100644 codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/LexicalPreservation.java create mode 100644 codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/ReversePolishNotation.java create mode 100644 codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/WebSocketMsgType.java create mode 100644 codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/pinyin/PinyinParserTest.java create mode 100644 codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/word/WordUtilTest.java create mode 100644 codes/javatech/javatech-io/javatech-json/pom.xml create mode 100644 codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/fastjson/FastjsonAnnotationBean.java create mode 100644 codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/fastjson/FastjsonCaseTests.java create mode 100644 codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/fastjson/FastjsonPerformanceTests.java create mode 100644 codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/gson/GsonAnnotationBean.java create mode 100644 codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/gson/GsonCaseTests.java create mode 100644 codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/gson/GsonPerformanceTests.java create mode 100644 codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/gson/VersionedClass.java create mode 100644 codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/jackson/JacksonAnnotationBean.java create mode 100644 codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/jackson/JacksonPerformanceTests.java create mode 100644 codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/jackson/JacksonTests.java create mode 100644 codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/BeanUtils.java create mode 100644 codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/DateUtil.java create mode 100644 codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/Group.java create mode 100644 codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/Person.java create mode 100644 codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/TestBean.java create mode 100644 codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/TestBean2.java create mode 100644 codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/User.java create mode 100644 codes/javatech/javatech-io/javatech-serialize/pom.xml create mode 100644 codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/FstDemo.java create mode 100644 codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/JdkSerializeDemo.java create mode 100644 codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/KryoDemo.java create mode 100644 codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/BeanUtils.java create mode 100644 codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/DateUtil.java create mode 100644 codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/Group.java create mode 100644 codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/Person.java create mode 100644 codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/TestBean.java create mode 100644 codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/TestBean2.java create mode 100644 codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/User.java create mode 100644 codes/javatech/javatech-io/javatech-serialize/src/test/java/io/github/dunwu/javatech/io/SerializePerformanceTest.java create mode 100644 codes/javatech/javatech-io/pom.xml create mode 100644 codes/javatech/javatech-lib/pom.xml create mode 100644 codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ClasspathHelperTest.java create mode 100644 codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/CombinedTestModel.java create mode 100644 codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ConfigurationBuilderTest.java create mode 100644 codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/FilterBuilderTest.java create mode 100644 codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/JavaCodeSerializerTest.java create mode 100644 codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/JdkTests.java create mode 100644 codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/MoreTests.java create mode 100644 codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/MoreTestsModel.java create mode 100644 codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/MyTestModelStore.java create mode 100644 codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/NameHelperTest.java create mode 100644 codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ReflectionUtilsQueryTest.java create mode 100644 codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ReflectionUtilsTest.java create mode 100644 codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ReflectionsExpandSupertypesTest.java create mode 100644 codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ReflectionsQueryTest.java create mode 100644 codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ReflectionsTest.java create mode 100644 codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/TestModel.java create mode 100644 codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/UsageTestModel.java create mode 100644 codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/VfsTest.java create mode 100644 codes/javatech/javatech-lib/src/test/resources/META-INF/reflections/inner/resource2-reflections.xml create mode 100644 codes/javatech/javatech-lib/src/test/resources/META-INF/reflections/resource1-reflections.xml create mode 100644 codes/javatech/javatech-lib/src/test/resources/META-INF/reflections/saved-testModel-reflections.json create mode 100644 codes/javatech/javatech-lib/src/test/resources/META-INF/reflections/saved-testModel-reflections.xml create mode 100644 codes/javatech/javatech-lib/src/test/resources/META-INF/reflections/testModel-reflections.json create mode 100644 codes/javatech/javatech-lib/src/test/resources/META-INF/reflections/testModel-reflections.xml create mode 100644 codes/javatech/javatech-log/javatech-log4j/pom.xml create mode 100644 codes/javatech/javatech-log/javatech-log4j/src/main/java/io/github/dunwu/javatech/log/Log4jDemo.java create mode 100644 codes/javatech/javatech-log/javatech-log4j/src/main/resources/log4j.xml create mode 100644 codes/javatech/javatech-log/javatech-log4j2/pom.xml create mode 100644 codes/javatech/javatech-log/javatech-log4j2/src/main/java/io/github/dunwu/javatech/log/Log4j2Demo.java create mode 100644 codes/javatech/javatech-log/javatech-log4j2/src/main/resources/log4j2.xml create mode 100644 codes/javatech/javatech-log/javatech-logback/pom.xml create mode 100644 codes/javatech/javatech-log/javatech-logback/src/main/java/io/github/dunwu/javatech/log/LogbackDemo.java create mode 100644 codes/javatech/javatech-log/javatech-logback/src/main/resources/logback.xml create mode 100644 codes/javatech/javatech-log/javatech-logstash/pom.xml create mode 100644 codes/javatech/javatech-log/javatech-logstash/src/main/java/io/github/dunwu/javatech/ElasticDemo.java create mode 100644 codes/javatech/javatech-log/javatech-logstash/src/main/resources/logback.xml create mode 100644 codes/javatech/javatech-log/pom.xml create mode 100644 codes/javatech/javatech-mq/javatech-kafka-springboot/pom.xml create mode 100644 codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/java/io/github/dunwu/javatech/KafkaConsumer.java create mode 100644 codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/java/io/github/dunwu/javatech/KafkaProducer.java create mode 100644 codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/java/io/github/dunwu/javatech/KafkaProducerController.java create mode 100644 codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/java/io/github/dunwu/javatech/MsgKafkaApplication.java create mode 100644 codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/java/io/github/dunwu/javatech/config/KafkaConsumerConfig.java create mode 100644 codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/java/io/github/dunwu/javatech/config/KafkaProducerConfig.java create mode 100644 codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/resources/application.properties create mode 100644 codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/resources/logback.xml create mode 100644 codes/javatech/javatech-mq/javatech-kafka-springboot/src/test/java/io/github/dunwu/javatech/KafkaProducerTest.java create mode 100644 codes/javatech/javatech-mq/javatech-kafka/pom.xml create mode 100644 codes/javatech/javatech-mq/javatech-kafka/src/main/java/io/github/dunwu/javatech/kafka/ConsumerAOC.java create mode 100644 codes/javatech/javatech-mq/javatech-kafka/src/main/java/io/github/dunwu/javatech/kafka/ConsumerManual.java create mode 100644 codes/javatech/javatech-mq/javatech-kafka/src/main/java/io/github/dunwu/javatech/kafka/ConsumerManualPartition.java create mode 100644 codes/javatech/javatech-mq/javatech-kafka/src/main/java/io/github/dunwu/javatech/kafka/ProducerDemo.java create mode 100644 codes/javatech/javatech-mq/javatech-kafka/src/main/java/io/github/dunwu/javatech/kafka/ProducerInTransaction.java create mode 100644 codes/javatech/javatech-mq/javatech-kafka/src/main/java/io/github/dunwu/javatech/kafka/StreamDemo.java create mode 100644 codes/javatech/javatech-mq/javatech-kafka/src/main/resources/logback.xml create mode 100644 codes/javatech/javatech-mq/javatech-rocketmq/pom.xml create mode 100644 codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/AsyncProducer.java create mode 100644 codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/BatchProducer.java create mode 100644 codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/BroadcastConsumer.java create mode 100644 codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/BroadcastProducer.java create mode 100644 codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/OnewayProducer.java create mode 100644 codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/OrderedConsumer.java create mode 100644 codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/OrderedProducer.java create mode 100644 codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/RocketConfig.java create mode 100644 codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/ScheduledMessageConsumer.java create mode 100644 codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/ScheduledMessageProducer.java create mode 100644 codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/SyncProducer.java create mode 100644 codes/javatech/javatech-mq/javatech-rocketmq/src/main/resources/logback.xml create mode 100644 codes/javatech/javatech-mq/pom.xml create mode 100644 codes/javatech/javatech-others/javatech-cli/pom.xml create mode 100644 codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/AnsiSystem.java create mode 100644 codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/CliDemo.java create mode 100644 codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/CliUtil.java create mode 100644 codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/SystemInfoUtil.java create mode 100644 codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/constant/AnsiBgColor.java create mode 100644 codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/constant/AnsiColor.java create mode 100644 codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/constant/AnsiElement.java create mode 100644 codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/constant/AnsiSgr.java create mode 100644 codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/constant/Color.java create mode 100644 codes/javatech/javatech-others/javatech-cli/src/test/java/io/github/dunwu/javatech/CliUtilTests.java create mode 100644 codes/javatech/javatech-others/javatech-cli/src/test/java/io/github/dunwu/javatech/SystemInfoTest.java create mode 100644 codes/javatech/javatech-others/javatech-ruleengine/README.md create mode 100644 codes/javatech/javatech-others/javatech-ruleengine/pom.xml create mode 100644 codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/eazyrules/Launcher.java create mode 100644 codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/eazyrules/WeatherRule.java create mode 100644 codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/BasicRule.java create mode 100644 codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/DefaultRuleEngine.java create mode 100644 codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/MvelRule.java create mode 100644 codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/MvelRuleSet.java create mode 100644 codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/Rule.java create mode 100644 codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/RuleConstant.java create mode 100644 codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/RuleContext.java create mode 100644 codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/RuleEngine.java create mode 100644 codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/RuleEngineBuilder.java create mode 100644 codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/RuleEngineParams.java create mode 100644 codes/javatech/javatech-others/javatech-ruleengine/src/main/resources/logback.xml create mode 100644 codes/javatech/javatech-others/javatech-ruleengine/src/main/resources/weather-rule.yml create mode 100644 codes/javatech/javatech-others/javatech-ruleengine/src/test/java/io/github/dunwu/javatech/rule/eazyrules/EazyRulesTest.java create mode 100644 codes/javatech/javatech-others/javatech-ruleengine/src/test/java/io/github/dunwu/javatech/rule/mvel/ClassTests.java create mode 100644 codes/javatech/javatech-others/javatech-ruleengine/src/test/java/io/github/dunwu/javatech/rule/mvel/SalaryRuleTest.java create mode 100644 codes/javatech/javatech-others/javatech-ruleengine/src/test/java/io/github/dunwu/javatech/rule/mvel/demo.mvel create mode 100644 codes/javatech/javatech-others/javatech-ruleengine/src/test/resources/SalaryRule.json create mode 100644 codes/javatech/javatech-others/javatech-zookeeper/pom.xml create mode 100644 codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/Callback.java create mode 100644 codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/DLockTemplate.java create mode 100644 codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/DistributedLock.java create mode 100644 codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/TimeoutHandler.java create mode 100644 codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/ZkDLockTemplate.java create mode 100644 codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/ZkReentrantLockCleanerTask.java create mode 100644 codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/ZookeeperReentrantDistributedLock.java create mode 100644 codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperConnection.java create mode 100644 codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperCreate.java create mode 100644 codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperDelete.java create mode 100644 codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperExists.java create mode 100644 codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperGetChildren.java create mode 100644 codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperGetData.java create mode 100644 codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperSetData.java create mode 100644 codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/package-info.java create mode 100644 codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/sequence/DistributedSequence.java create mode 100644 codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/sequence/ZkDistributedSequence.java create mode 100644 codes/javatech/javatech-others/javatech-zookeeper/src/test/java/io/github/dunwu/javatech/zk/dlock/ZkReentrantLockTemplateTest.java create mode 100644 codes/javatech/javatech-others/javatech-zookeeper/src/test/resources/logback.xml create mode 100644 codes/javatech/javatech-others/pom.xml create mode 100644 codes/javatech/javatech-server/README.md create mode 100644 codes/javatech/javatech-server/pom.xml create mode 100644 codes/javatech/javatech-server/src/main/java/io/github/dunwu/javatech/controller/HelloController.java create mode 100644 codes/javatech/javatech-server/src/main/java/io/github/dunwu/javatech/controller/IndexController.java create mode 100644 codes/javatech/javatech-server/src/main/java/io/github/dunwu/javatech/server/SimpleTomcatServer.java create mode 100644 codes/javatech/javatech-server/src/main/java/io/github/dunwu/javatech/server/TomcatServer.java create mode 100644 codes/javatech/javatech-server/src/main/resources/logback.xml create mode 100644 codes/javatech/javatech-server/src/main/resources/properties/application-develop.properties create mode 100644 codes/javatech/javatech-server/src/main/resources/properties/application-test.properties create mode 100644 codes/javatech/javatech-server/src/main/resources/spring/spring-servlet.xml create mode 100644 codes/javatech/javatech-server/src/main/resources/tomcat/conf/server.xml create mode 100644 codes/javatech/javatech-server/src/main/resources/tomcat/conf/web.xml create mode 100644 codes/javatech/javatech-server/src/main/webapp/META-INF/MANIFEST.MF create mode 100644 codes/javatech/javatech-server/src/main/webapp/WEB-INF/web.xml create mode 100644 codes/javatech/javatech-server/src/main/webapp/views/jsp/hello.jsp create mode 100644 codes/javatech/javatech-server/src/main/webapp/views/jsp/index.jsp create mode 100644 codes/javatech/javatech-test/pom.xml create mode 100644 codes/javatech/javatech-test/src/main/java/io/github/dunwu/javatech/jmh/JMHSample_34_SafeLooping.java create mode 100644 codes/javatech/javatech-test/src/main/java/io/github/dunwu/javatech/jmh/JmhQuickStart.java create mode 100644 codes/javatech/javatech-test/src/main/java/io/github/dunwu/javatech/jmh/StringBuilderBenchmark.java create mode 100644 codes/javatech/javatech-test/src/main/java/io/github/dunwu/javatech/lombok/Calculator.java create mode 100644 codes/javatech/javatech-test/src/main/java/io/github/dunwu/javatech/lombok/Person.java create mode 100644 codes/javatech/javatech-test/src/main/resources/logback.xml create mode 100644 codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit4/JUnitTest.java create mode 100644 codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/AssertionsTests.java create mode 100644 codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/AssumptionsTests.java create mode 100644 codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/DisplayNameTests.java create mode 100644 codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/DynamicTests.java create mode 100644 codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/NestedTests.java create mode 100644 codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/ParameterizedTests.java create mode 100644 codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/RepeatedTests.java create mode 100644 codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/StandardTests.java create mode 100644 codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/mockito/MockitoTest.java create mode 100644 codes/javatech/pom.xml create mode 100644 docs/cache/README.md create mode 100644 docs/cache/cache-framework.md create mode 100644 docs/cache/cache-interview.md create mode 100644 docs/cache/cache-libs.md create mode 100644 docs/cache/ehcache.md create mode 100644 docs/cache/http-cache.md create mode 100644 docs/cache/memcached.md create mode 100644 docs/framework/README.md create mode 100644 "docs/framework/mybatis/Mybatis\345\216\237\347\220\206.md" create mode 100644 "docs/framework/mybatis/Mybatis\345\272\224\347\224\250\346\214\207\345\215\227.md" create mode 100644 docs/framework/mybatis/README.md create mode 100644 docs/framework/netty.md create mode 100644 docs/lib/README.md create mode 100644 docs/lib/bean/dozer.md create mode 100644 docs/lib/bean/lombok.md create mode 100644 docs/lib/javalib-log.md create mode 100644 docs/lib/javalib-util.md create mode 100644 docs/lib/javamail.md create mode 100644 docs/lib/jsoup.md create mode 100644 docs/lib/reflections.md create mode 100644 docs/lib/serialized/README.md create mode 100644 docs/lib/serialized/javalib-binary.md create mode 100644 docs/lib/serialized/javalib-json.md create mode 100644 docs/lib/template/README.md create mode 100644 docs/lib/template/freemark.md create mode 100644 docs/lib/template/thymeleaf.md create mode 100644 docs/lib/template/velocity.md create mode 100644 docs/lib/thumbnailator.md create mode 100644 docs/lib/zxing.md create mode 100644 docs/limiting/hystrix.md create mode 100644 docs/microservice/README.md create mode 100644 docs/microservice/dubbo.md create mode 100644 docs/mq/README.md create mode 100644 docs/mq/activemq.md create mode 100644 docs/mq/rocketmq.md create mode 100644 "docs/mq/\346\266\210\346\201\257\351\230\237\345\210\227\345\237\272\346\234\254\345\216\237\347\220\206.md" create mode 100644 "docs/mq/\346\266\210\346\201\257\351\230\237\345\210\227\351\235\242\350\257\225.md" create mode 100644 docs/security/README.md create mode 100644 docs/security/shiro.md create mode 100644 docs/security/spring-security.md create mode 100644 docs/server/README.md create mode 100644 "docs/server/Tomcat\344\274\230\345\214\226.md" create mode 100644 "docs/server/Tomcat\345\256\271\345\231\250.md" create mode 100644 "docs/server/Tomcat\345\272\224\347\224\250\346\214\207\345\215\227.md" create mode 100644 "docs/server/Tomcat\350\277\236\346\216\245\345\231\250.md" create mode 100644 docs/server/jetty.md create mode 100644 docs/server/tomcat-and-jetty.md create mode 100644 docs/test/README.md create mode 100644 docs/test/jmeter.md create mode 100644 docs/test/jmh.md create mode 100644 docs/test/junit.md create mode 100644 docs/test/mockito.md rename docs/{javatool => tool}/README.md (100%) rename docs/{javatool => tool}/build/README.md (100%) rename docs/{javatool => tool}/build/ant.md (100%) rename docs/{javatool => tool}/build/maven/README.md (100%) rename docs/{javatool => tool}/build/maven/book.json (100%) rename docs/{javatool => tool}/build/maven/cover.jpg (100%) rename docs/{javatool => tool}/build/maven/maven-action.md (100%) rename docs/{javatool => tool}/build/maven/maven-checkstyle-plugin.md (100%) rename docs/{javatool => tool}/build/maven/maven-deploy.md (100%) rename docs/{javatool => tool}/build/maven/maven-pom.md (100%) rename docs/{javatool => tool}/build/maven/maven-quickstart.md (100%) rename docs/{javatool => tool}/build/maven/maven-settings.md (100%) rename docs/{javatool => tool}/build/maven/package.json (100%) rename docs/{javatool => tool}/build/maven/sidebar.md (100%) rename docs/{javatool => tool}/ide/README.md (100%) rename docs/{javatool => tool}/ide/eclipse.md (100%) rename docs/{javatool => tool}/ide/intellij-idea.md (100%) rename docs/{javatool => tool}/ide/vscode.md (100%) rename docs/{javatool => tool}/monitor/README.md (100%) rename docs/{javatool => tool}/monitor/arthas.md (100%) rename docs/{javatool => tool}/monitor/cat.md (100%) rename docs/{javatool => tool}/monitor/monitor-summary.md (100%) rename docs/{javatool => tool}/monitor/skywalking.md (100%) rename docs/{javatool => tool}/monitor/zipkin.md (100%) diff --git a/.editorconfig b/.editorconfig index d72a75ea..ee762040 100644 --- a/.editorconfig +++ b/.editorconfig @@ -19,7 +19,7 @@ insert_final_newline = true [*.{bat, cmd}] end_of_line = crlf -[*.{java, gradle, groovy, kt, sh}] +[*.{java, gradle, groovy, kt, sh, xml}] indent_size = 4 [*.md] diff --git a/.travis.yml b/.travis.yml index 7f7498fb..47463f91 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,7 @@ language: node_js sudo: required -node_js: stable +node_js: '16.13.0' branches: only: diff --git a/README.md b/README.md index c3f25c8e..99fa8c21 100644 --- a/README.md +++ b/README.md @@ -15,14 +15,21 @@ > > - 🔁 项目同步维护:[Github](https://github.com/dunwu/java-tutorial/) | [Gitee](https://gitee.com/turnon/java-tutorial/) > - 📖 电子书阅读:[Github Pages](https://dunwu.github.io/java-tutorial/) | [Gitee Pages](https://turnon.gitee.io/java-tutorial/) +> +> 说明: +> +> - 下面的内容清单中,凡是有 📚 标记的技术,都已整理成详细的教程。 +> - 部分技术因为可以应用于不同领域,所以可能会同时出现在不同的类别下。 -## javacore +## 📖 内容 + +### JavaSE > 📚 [javacore](https://dunwu.github.io/javacore/) 是一个 Java 核心技术教程。内容包含:Java 基础特性、Java 高级特性、Java 并发、JVM、Java IO 等。 -## javaee +### JavaEE -> [☕ JavaEE](docs/javaee/README.md) 技术是 Java Web 的基石 +> [☕ JavaEE](javaee/README.md) 技术是 Java Web 的基石 - [JavaEE 面经](docs/javaee/javaee-interview.md) - [JavaEE 之 Servlet 指南](docs/javaee/javaee-servlet.md) @@ -30,71 +37,174 @@ - [JavaEE 之 Filter 和 Listener](docs/javaee/javaee-filter-listener.md) - [JavaEE 之 Cookie 和 Session](docs/javaee/javaee-cookie-sesion.md) -## javatech +### Java 工具 -> 📚 [javatech](https://dunwu.github.io/javatech/) 是一个 Java 应用技术教程。内容包含 Java 开发中常见应用技术,如:框架、缓存、消息队列、存储、安全、微服务、测试、服务器等。 +#### 构建 -## spring-tutorial +> Java 项目需要通过 [**构建工具**](docs/tool/build) 来管理项目依赖,完成编译、打包、发布、生成 JavaDoc 等任务。 +> +> - 目前最主流的构建工具是 Maven,它的功能非常强大。 +> - Gradle 号称是要替代 Maven 等构件工具,它的版本管理确实简洁,但是需要学习 Groovy,学习成本比 Maven 高。 +> - Ant 功能比 Maven 和 Gradle 要弱,现代 Java 项目基本不用了,但也有一些传统的 Java 项目还在使用。 -> 📚 [spring-tutorial](https://dunwu.github.io/spring-tutorial/) 是一个 Spring 实战教程。 +- [Maven](docs/tool/build/maven) 📚 + - [Maven 入门指南](docs/tool/build/maven/maven-quickstart.md) + - [Maven 教程之 pom.xml 详解](docs/tool/build/maven/maven-pom.md) + - [Maven 教程之 settings.xml 详解](docs/tool/build/maven/maven-settings.md) + - [Maven 实战问题和最佳实践](docs/tool/build/maven/maven-action.md) + - [Maven 教程之发布 jar 到私服或中央仓库](docs/tool/build/maven/maven-deploy.md) + - [Maven 插件之代码检查](docs/tool/build/maven/maven-checkstyle-plugin.md) +- [Ant 简易教程](docs/tool/build/ant.md) -## spring-boot-tutorial +#### IDE -> 📚 [Spring Boot 教程](https://dunwu.github.io/spring-boot-tutorial/) 是一个 Spring Boot 实战教程。 +> 自从有了 [**IDE**](docs/tool/ide),写代码从此就告别了刀耕火种的蛮荒时代。 +> +> - [Eclipse](docs/tool/ide/eclipse.md) 是久负盛名的开源 Java IDE,我的学生时代一直使用它写 Java。 +> - 曾经抗拒从转 [Intellij Idea](docs/tool/ide/intellij-idea.md) ,但后来发现真香,不得不说,确实是目前最优秀的 Java IDE。 +> - 你可以在 [vscode](docs/tool/ide/vscode.md) 中写各种语言,只要安装相应插件即可。如果你的项目中使用了很多种编程语言,又懒得在多个 IDE 之间切换,那么就用 vscode 来一网打尽吧。 -## javatool +- [Intellij Idea](docs/tool/ide/intellij-idea.md) +- [Eclipse](docs/tool/ide/eclipse.md) +- [vscode](docs/tool/ide/vscode.md) -### 构建 +#### 监控/诊断 -> Java 项目需要通过 [**构建工具**](docs/javatool/build) 来管理项目依赖,完成编译、打包、发布、生成 JavaDoc 等任务。 -> -> - 目前最主流的构建工具是 Maven,它的功能非常强大。 -> - Gradle 号称是要替代 Maven 等构件工具,它的版本管理确实简洁,但是需要学习 Groovy,学习成本比 Maven 高。 -> - Ant 功能比 Maven 和 Gradle 要弱,现代 Java 项目基本不用了,但也有一些传统的 Java 项目还在使用。 +> [监控/诊断](docs/tool/monitor) 工具主要用于 Java 应用的运维。通过采集、分析、存储、可视化应用的有效数据,帮助开发者、使用者快速定位问题,找到性能瓶颈。 -- [Maven](docs/javatool/build/maven) 📚 - - [Maven 入门指南](docs/javatool/build/maven/maven-quickstart.md) - - [Maven 教程之 pom.xml 详解](docs/javatool/build/maven/maven-pom.md) - - [Maven 教程之 settings.xml 详解](docs/javatool/build/maven/maven-settings.md) - - [Maven 实战问题和最佳实践](docs/javatool/build/maven/maven-action.md) - - [Maven 教程之发布 jar 到私服或中央仓库](docs/javatool/build/maven/maven-deploy.md) - - [Maven 插件之代码检查](docs/javatool/build/maven/maven-checkstyle-plugin.md) -- [Ant 简易教程](docs/javatool/build/ant.md) +- [监控工具对比](docs/tool/monitor/monitor-summary.md) +- [CAT](docs/tool/monitor/cat.md) +- [Zipkin](docs/tool/monitor/zipkin.md) +- [SkyWalking](docs/tool/monitor/skywalking.md) +- [Arthas](docs/tool/monitor/arthas.md) -### IDE +### [框架](framework) -> 自从有了 [**IDE**](docs/javatool/ide),写代码从此就告别了刀耕火种的蛮荒时代。 -> -> - [Eclipse](docs/javatool/ide/eclipse.md) 是久负盛名的开源 Java IDE,我的学生时代一直使用它写 Java。 -> - 曾经抗拒从转 [Intellij Idea](docs/javatool/ide/intellij-idea.md) ,但后来发现真香,不得不说,确实是目前最优秀的 Java IDE。 -> - 你可以在 [vscode](docs/javatool/ide/vscode.md) 中写各种语言,只要安装相应插件即可。如果你的项目中使用了很多种编程语言,又懒得在多个 IDE 之间切换,那么就用 vscode 来一网打尽吧。 +#### Spring -- [Intellij Idea](docs/javatool/ide/intellij-idea.md) -- [Eclipse](docs/javatool/ide/eclipse.md) -- [vscode](docs/javatool/ide/vscode.md) +📚 [spring-tutorial](https://dunwu.github.io/spring-tutorial/) 是一个 Spring 实战教程。 -### 监控/诊断 +#### Spring Boot -> [监控/诊断](docs/javatool/monitor) 工具主要用于 Java 应用的运维。通过采集、分析、存储、可视化应用的有效数据,帮助开发者、使用者快速定位问题,找到性能瓶颈。 +📚 [Spring Boot 教程](https://dunwu.github.io/spring-boot-tutorial/) 是一个 Spring Boot 实战教程。 -- [监控工具对比](docs/javatool/monitor/monitor-summary.md) -- [CAT](docs/javatool/monitor/cat.md) -- [Zipkin](docs/javatool/monitor/zipkin.md) -- [SkyWalking](docs/javatool/monitor/skywalking.md) -- [Arthas](docs/javatool/monitor/arthas.md) +#### 其他 ---- +- [Spring Cloud](https://github.com/dunwu/spring-cloud-tutorial) 📚 +- [MyBatis](docs/framework/mybatis) + - [Mybatis 应用指南](docs/framework/mybatis/Mybatis应用指南.md) + - [Mybatis 原理](docs/framework/mybatis/Mybatis原理.md) +- [Netty](docs/framework/netty.md) -## 其他技术栈 +### [消息队列](docs/mq) -- [db-tutorial](https://dunwu.github.io/db-tutorial/) - 是对数据库领域开发经验的总结。内容包含:关系型数据库和 Nosql 理论、Mysql、Redis 等。 -- [algorithm-tutorial](https://dunwu.github.io/algorithm-tutorial/) - 是对数据结构和算法的总结。内容包含:一些基本的数据结构、算法。 -- [linux-tutorial](https://github.com/dunwu/linux-tutorial) - 是对 Linux 操作系统的经验总结。内容包含:Linux 常用命令;各种常见软件的 Linux 环境安装配置;运维、部署脚本;Shell、Python 语法教程;Git、Docker 教程。 -- [frontend-tutorial](https://github.com/dunwu/frontend-tutorial) - 前端教程 +> 消息队列(Message Queue,简称 MQ)技术是分布式应用间交换信息的一种技术。 +> +> 消息队列主要解决应用耦合,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。 +> +> 如果想深入学习各种消息队列产品,建议先了解一下 [消息队列基本原理](https://github.com/dunwu/blog/blob/master/source/_posts/theory/mq.md) ,有助于理解消息队列特性的实现和设计思路。 ---- +- [消息队列基本原理](docs/mq/消息队列基本原理.md) +- [消息队列面试题](docs/mq/消息队列面试.md) 💯 +- [Kafka](https://dunwu.github.io/bigdata-tutorial/kafka) 📚 +- [RocketMQ](docs/mq/rocketmq.md) +- [ActiveMQ](docs/mq/activemq.md) -## 学习资源 +### [缓存](docs/cache) + +> 缓存可以说是优化系统性能的第一手段,在各种技术中都会有缓存的应用。 +> +> 如果想深入学习缓存,建议先了解一下 [缓存基本原理](https://github.com/dunwu/blog/blob/master/source/_posts/theory/cache.md),有助于理解缓存的特性、原理,使用缓存常见的问题及解决方案。 + +- [缓存面试题](docs/cache/cache-interview.md) 💯 +- [缓存基本原理](https://github.com/dunwu/blog/blob/master/source/_posts/theory/cache.md) +- [Java 缓存框架](docs/cache/cache-framework.md) - 关键词:Spring Cache、J2Cache、JetCache +- [Redis 教程](https://dunwu.github.io/db-tutorial/nosql/redis/) 📚 +- [Memcached 应用指南](docs/cache/memcached.md) +- [Java 缓存库](docs/cache/cache-libs.md) - 关键词:ConcurrentHashMap、LRUHashMap、Guava Cache、Caffeine、Ehcache +- [Ehcache 应用指南](docs/cache/ehcache.md) +- [Http 缓存](docs/cache/http-cache.md) + +### [微服务](docs/microservice) + +- [Dubbo](docs/microservice/dubbo.md) +- [**Spring Cloud**](https://github.com/dunwu/spring-cloud-tutorial) 📚 + - Eureka + - Consul + - Nacos + - Zuul + - Gateway +- 通信 + - [Netty](docs/framework/netty.md) + +### 搜索引擎 + +- [ElasticSearch](https://dunwu.github.io/db-tutorial/nosql/elasticsearch/) 📚 +- Solr +- Lucene + +### [安全](docs/security) + +> Java 领域比较流行的安全框架就是 shiro 和 spring-security。 +> +> shiro 更为简单、轻便,容易理解,能满足大多数基本安全场景下的需要。 +> +> spring-security 功能更丰富,也比 shiro 更复杂。值得一提的是由于 spring-security 是 spring 团队开发,所以集成 spring 和 spring-boot 框架更容易。 + +- [Shiro](docs/security/shiro.md) +- [Spring Security](docs/security/spring-security.md) + +### [测试](docs/test) + +- [Junit](docs/test/junit.md) +- [Mockito](docs/test/mockito.md) +- [JMH](docs/test/jmh.md) +- [Jmeter](docs/test/jmeter.md) + +### [服务器](docs/server) + +> Tomcat 和 Jetty 都是 Java 比较流行的轻量级服务器。 +> +> Nginx 是目前最流行的反向代理服务器,也常用于负载均衡。 + +- [Tomcat 应用指南](docs/server/Tomcat应用指南.md) +- [Tomcat 连接器](docs/server/Tomcat连接器.md) +- [Tomcat 容器](docs/server/Tomcat容器.md) +- [Tomcat 优化](docs/server/Tomcat优化.md) +- [Jetty](docs/server/jetty.md) +- [Nginx](https://github.com/dunwu/nginx-tutorial) 📚 + +### [大数据](https://dunwu.github.io/bigdata-tutorial) + +> 大数据技术点以归档在:[bigdata-tutorial](https://dunwu.github.io/bigdata-tutorial) + +- [Hdfs](https://dunwu.github.io/bigdata-tutorial/hdfs) 📚 +- [Hbase](https://dunwu.github.io/bigdata-tutorial/hbase) 📚 +- [Hive](https://dunwu.github.io/bigdata-tutorial/hive) 📚 +- [MapReduce](https://dunwu.github.io/bigdata-tutorial/mapreduce) +- [Yarn](https://dunwu.github.io/bigdata-tutorial/yarn) +- [ZooKeeper](https://dunwu.github.io/bigdata-tutorial/zookeeper) 📚 +- [Kafka](https://dunwu.github.io/bigdata-tutorial/kafka) 📚 +- Spark +- Storm +- [Flink](https://dunwu.github.io/bigdata-tutorial/tree/master/docs/flink) + +### [LIB](docs/lib) + +- [日志](docs/lib/javalib-log.md) - [log4j2](https://logging.apache.org/log4j/2.x/)、[logback](https://logback.qos.ch/)、log4j、[Slf4j](http://www.slf4j.org/) +- [序列化](docs/lib/serialized/) + - [JSON](docs/lib/serialized/javalib-json.md) - [fastjson](https://github.com/alibaba/fastjson)、[Jackson](https://github.com/FasterXML/jackson)、[Gson](https://github.com/google/gson) + - [二进制](docs/lib/serialized/javalib-binary.md) - [Protobuf](https://developers.google.com/protocol-buffers)、[Thrift](https://thrift.apache.org/)、[Hessian](http://hessian.caucho.com/)、[Kryo](https://github.com/EsotericSoftware/kryo)、[FST](https://github.com/RuedigerMoeller/fast-serialization) +- [模板引擎](docs/lib/template) - [Freemark](docs/lib/template/freemark.md)、[Velocity](lib/template/velocity.md)、[Thymeleaf](docs/lib/template/thymeleaf.md) +- JavaBean - [Lombok](docs/lib/bean/lombok.md)、[Dozer](docs/lib/bean/dozer.md) +- 工具包 + - [apache common](https://commons.apache.org/) - 老牌 Java 工具集 + - [guava](https://github.com/google/guava) - Google Java 工具包 + - [hutool](https://github.com/dromara/hutool) - Hutool 是一个小而全的 Java 工具类库,且中文文档、注释比较齐备 +- 辅助 + - [swagger](https://swagger.io/) - 自动生成 API 文档(半侵入式) + +## 📚 资料 - Java 经典书籍 - [《Effective Java 中文版》](https://item.jd.com/12507084.html) - 本书介绍了在 Java 编程中 78 条极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。同推荐《重构 : 改善既有代码的设计》、《代码整洁之道》、《代码大全》,有一定的内容重叠。 @@ -108,3 +218,18 @@ - [《HTTP 权威指南》](https://item.jd.com/11056556.html) - 本书尝试着将 HTTP 中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节,对 HTTP 各方面的特性进行了介绍。纵观全书,对 HTTP“为什么”这样做进行了详细的解释,而不仅仅停留在它是“怎么做”的。 - [《TCP/IP 详解 系列》](https://item.jd.com/11966296.html) - 完整而详细的 TCP/IP 协议指南。针对任何希望理解 TCP/IP 协议是如何实现的读者设计。 - [《剑指 Offer:名企面试官精讲典型编程题》](https://item.jd.com/12163054.html) - 剖析了 80 个典型的编程面试题,系统整理基础知识、代码质量、解题思路、优化效率和综合能力这 5 个面试要点。 + +## 🚪 传送 + +◾ 🏠 [JAVA-TUTORIAL 首页](https://github.com/dunwu/java-tutorial) ◾ 🎯 [我的博客](https://github.com/dunwu/blog) ◾ + +> 你可能会感兴趣: + +- [Java 教程](https://github.com/dunwu/java-tutorial) 📚 +- [JavaCore 教程](https://dunwu.github.io/javacore/) 📚 +- [Spring 教程](https://dunwu.github.io/spring-tutorial/) 📚 +- [Spring Boot 教程](https://dunwu.github.io/spring-boot-tutorial/) 📚 +- [数据库教程](https://dunwu.github.io/db-tutorial/) 📚 +- [数据结构和算法教程](https://dunwu.github.io/algorithm-tutorial/) 📚 +- [Linux 教程](https://dunwu.github.io/linux-tutorial/) 📚 +- [Nginx 教程](https://github.com/dunwu/nginx-tutorial/) 📚 diff --git a/assets/framework/mybatis.eddx b/assets/framework/mybatis.eddx new file mode 100644 index 0000000000000000000000000000000000000000..0aaa599d67f9b39e99c6b322848a1ebbd5c5db89 GIT binary patch literal 164252 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�(i(^{iuL2}m_V?%CA$ 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

A?=H{gd`)}qu}d! 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 z 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

sG5{X1?NNmE6Sw@_zCnsti45EBtOH4 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 Nf&c)Xyg)x6{V(69Bn|)o literal 0 HcmV?d00001 diff --git a/assets/framework/mybatis.xmind b/assets/framework/mybatis.xmind new file mode 100644 index 0000000000000000000000000000000000000000..64ed4a93217cae48765c3e16661a0657ff66b211 GIT binary patch literal 281632 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 z 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 literal 0 HcmV?d00001 diff --git a/assets/javaweb.eddx b/assets/javaweb.eddx new file mode 100644 index 0000000000000000000000000000000000000000..e86cfc8b2ad03fa8898dffe8a3759908bdfcf99f GIT binary patch literal 21817 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 literal 0 HcmV?d00001 diff --git a/assets/microservice/Dubbo.xmind b/assets/microservice/Dubbo.xmind new file mode 100644 index 0000000000000000000000000000000000000000..36b6e597023313c9abac81a5feae209a0894eac2 GIT binary patch literal 218878 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≪`;*6Z!oXbrT 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 literal 0 HcmV?d00001 diff --git a/assets/mq/RocketMQ.xmind b/assets/mq/RocketMQ.xmind new file mode 100644 index 0000000000000000000000000000000000000000..fdf8105a7b6b60e7e434cd89a86349c272baec0a GIT binary patch literal 517596 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 literal 0 HcmV?d00001 diff --git a/assets/server/tomcat/Lifecycle.uml b/assets/server/tomcat/Lifecycle.uml new file mode 100644 index 00000000..19d6433a --- /dev/null +++ b/assets/server/tomcat/Lifecycle.uml @@ -0,0 +1,27 @@ + + + JAVA + org.apache.catalina.Lifecycle + + org.apache.catalina.Lifecycle + org.apache.catalina.LifecycleState + org.apache.catalina.util.LifecycleBase + + + + + + + + + + + + Methods + Properties + Fields + + All + public + + diff --git a/assets/server/tomcat/ProtocolHandler.uml b/assets/server/tomcat/ProtocolHandler.uml new file mode 100644 index 00000000..8210b959 --- /dev/null +++ b/assets/server/tomcat/ProtocolHandler.uml @@ -0,0 +1,76 @@ + + + JAVA + org.apache.coyote.ajp.AjpAprProtocol + + org.apache.coyote.ajp.AjpNioProtocol + org.apache.coyote.ajp.AbstractAjpProtocol + org.apache.coyote.http11.Http11NioProtocol + org.apache.coyote.ajp.AjpAprProtocol + org.apache.coyote.ProtocolHandler + org.apache.coyote.http11.Http11AprProtocol + org.apache.coyote.http11.AbstractHttp11Protocol + org.apache.coyote.http11.Http11Nio2Protocol + org.apache.coyote.AbstractProtocol + org.apache.coyote.ajp.AjpNio2Protocol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + org.apache.coyote.ProtocolHandler + + + All + private + + diff --git "a/assets/server/tomcat/Tomcat\347\224\237\345\221\250\346\234\237\347\256\241\347\220\206\346\200\273\344\275\223\347\261\273\345\233\276.uml" "b/assets/server/tomcat/Tomcat\347\224\237\345\221\250\346\234\237\347\256\241\347\220\206\346\200\273\344\275\223\347\261\273\345\233\276.uml" new file mode 100644 index 00000000..ee728d8c --- /dev/null +++ "b/assets/server/tomcat/Tomcat\347\224\237\345\221\250\346\234\237\347\256\241\347\220\206\346\200\273\344\275\223\347\261\273\345\233\276.uml" @@ -0,0 +1,133 @@ + + + JAVA + org.apache.catalina.Lifecycle + + org.apache.catalina.core.StandardEngine + org.apache.catalina.core.ContainerBase + org.apache.catalina.Container + org.apache.catalina.Lifecycle + org.apache.catalina.core.StandardWrapper + org.apache.catalina.connector.Connector + org.apache.catalina.util.LifecycleBase + org.apache.catalina.core.StandardContext + org.apache.catalina.core.StandardHost + org.apache.catalina.core.StandardServer + org.apache.catalina.core.StandardService + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + All + public + + diff --git a/assets/server/tomcat/jetty.xmind b/assets/server/tomcat/jetty.xmind new file mode 100644 index 0000000000000000000000000000000000000000..6164e864d5efffecad60ac52f9540f0055d49127 GIT binary patch literal 112346 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μ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 literal 0 HcmV?d00001 diff --git a/assets/server/tomcat/tomcat.eddx b/assets/server/tomcat/tomcat.eddx new file mode 100644 index 0000000000000000000000000000000000000000..455deb4331b5c5111c1a8cbd5b21b68627ec3a90 GIT binary patch literal 60395 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 literal 0 HcmV?d00001 diff --git a/assets/server/tomcat/tomcat.xmind b/assets/server/tomcat/tomcat.xmind new file mode 100644 index 0000000000000000000000000000000000000000..04cf12f8033de140ee95d60c65a5db7904c735fe GIT binary patch literal 118795 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 L(wg^$UFZD&aQ#$@ literal 0 HcmV?d00001 diff --git a/assets/shiro.xmind b/assets/shiro.xmind new file mode 100644 index 0000000000000000000000000000000000000000..014d8b3e51757b7419290af23a5570c54a79c224 GIT binary patch literal 131886 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

(O_dKkjlpBe1zN6D${?eFFH54PbA%ce z7x1or@3})`QfVZ>k!7|Zzu0D)q}99*n*Rh)d}olG#FU+(>=H;(l2{Zmiz1U~Xc8@8 z3J3F^Lu2!*yW}v*Rxa)@mq7DdtEN-wfL23I(kkf`SgHZKR7i(}N}5VauVhbNL!AnY zat35&Irk8tYM#)qmmw}bFKq!X>@~A%X#%O1rRBnM1xL<;MFZz50Fn`$tyEP^;vyfI{NKLb)7-s8`ess|Z$WMFb@KfTh{8E%DIrh|_Ics*BFH zG_yLJLK3L3K(69**kD3S6&yrPQ8R@MU_n+~@iP5SgGs=Gv>1@UVPH(R<0_Q$jSIHG zMArq9B>``QHOB}THgM*LA@PIN$O{jjW|m7$gQC64NM%RwbjMC?uA_DsXQ1{YQ;LB~`|B zyL_P`Fi5|4asKYjH5y2=SR)2!uvCRg1-wOw5YmDZaxsO$uFgEB!DJ>(0gfd<5MC;F z6(|v2sWeF_$Pgivv7BXy+6Ax(U`dJ8hzrX}rQvV@_cu=?aRRP5C%msg#Jv-ceMDkj zfNX~z5c@cI*d%qTS;>~3s>*`#^_gv)$r>hbw+X~lDaseISTrdjmhrf374*M9=d>PI zdFWE(bs?#i=2vINLx@n00LsutFL;bKM%|86 zB1kWN#12FF3fye2*@{VG1J-e|mZIS@SWFfQp)i{cDJdYyMaAtXqq*oX*oj-6Y-J=A zuO=`@L6#M;VZ<#)KMwiGZQI^hTf%sp#;41@2ObfR_BNm4Lm0zO-yVFFfq zu@>;JsrVwTK*OnI$jfvU4J6k9){l8IdjRLWy%!*Xvj|~1@6`ZO7AZ-}<*1bs!2C{< zN@2iiDu63Fx~cK12sXPm9^xTB1F)e<+YW{Rs3iUJRkj(n%vCL~|EqG(l(uVi2G~g3 zgIr@~WBKcdsF({aJ-2tWvx@^i6-V(_6A=Zn8k*1$fKU)35r`;|IMTR+m0G-PvkV&V z0#UZc@&3~gQQ(LWoV^f;sDEw_Kmrj}1$%)k;IkCK{8y;t0FtL5D=9*mkPiS=;P|i1 z62rjQ9c+$`2t*Wth_YHS1R|=+n_bLEBoI*!)$*$lh$zf$R()t7fru(EK`?=c!Z29` zBC4F-IDv?=?(wT{9@4D14g-OR0_!}1h$0YCY>;WnzY>HGoj^oY_jsB>L>Y745r`-m zfKOmyCY1u<2}Bfuhyrm41R{z+L=lK60ucp+w9}=bSOg-fT8OCX?+fWxpfiDpsuJ_z z_eVt4VAL!zU1gvbIsy?@1FV%5i%^Bbg390z)^is+frvs(1cBBqw$+7Iy+Z~95k(-P z2t<^L%g0FeK4Jg+Uf&%NMYkZLm{bM>M?@{?Hjm(l`WGXj7&HEQ&BilsgP3~{JT4WRY_G-@HDvb_dq z(&|8q2}Bfuh?2^|k(3dQN+&p?FtR9uBdR)~L_lZ=jwpLmTC?(iB?L!Qd5{W%Bg(Yh zw{F`Bjwp=Isx-?3!4YNkU=SQp|45Fg>ibX$L==d^HXYI%gRu!j6oH5$5K$ItRDvU_ zG!mKMh_dd{363a&BZ}aNA~>QfQT<;~=a@;MOk9cPKM9Vg%6R<=jwrx}Sthvm|0_h) zw{t>Oa~}w}IjmH*1SeG0bH9EY2UK-O$#{fm;^QL_PXq^4wR7DN98k8N9)bgk;DEAj zX6Ya!(Z7KMitS{-V-etgTJSwNpcp2^6BCB13@U8ofU4E&(={S1o`Vg|;J=9j3XCL) zN+CF)v_gUd%HiLf6|b5`GQj~=`Z$Z=fU<%b2o5L{&ZBCf8w3Xw!2xAOe3W&`5n1ud z^a+s_&&XeFlU~OHnj*5|VOhtCtaxRhhToPIulnX8fp{ViPefL{|6^J4%ByHU zfvOXSL?E92=ZGiUgt4aU*?3-aIzz)^2@#NKQNs{G5J;ZPhp1#Zr;>y}6+xA$R0)b8 zkU%9O)A%a624p~1Yc&F`1|)X=V(un+h)eCqh^7nyU%plWWd5{Pqe_s$t z&q3txgB2{0iKUFj`UmIl!~A3V7XzdTmsFD9 zyi8XyAsPc@KC!^qN~f^3lGRj<4POmDWiWy8Q+ zSqW+u-`LgfO;9Qze~XXHu2OXezW6K=L;-O^HGz zl3I$;$U;6@1NPqnDo<5$f~W6jDbT(#@ja21(i{i=1r-{Rl`?b#P(f9i992q2Wr_6o zwk(v@^urK{!y06v#BiYm;!ujH)GRA*hsZkVKya)9kATw`L3;$p8j*F9$U140&{L?E zARhTO$U3<;ee|fGdfD040zcm^>m<{RI3!U(N_4sracJM`9)URg*K({eL27Xl4dm!1 zIMxV`H3D&{U!82(q*dqm38u)He1VL{lEO5tg29r*OqvYVz+6Sejti@;19QlTSVZE{ zl`xIZ#Az7lu!)-1I=!LdegtN{<5NuVri zfY}*mg(DLjYXrxdu#$7CijE^FG`bQIvP4t`3DJj8gGai7M zgwe&sEn{!~TO*gCEC3IaAeF4V5F}!fP!3PVRnq7Zk&=Um1X`Iy1_PXp6y*we<@l4! zR?rk-X;ZD@~vdt#QFMJ$oQ{4$A}e|BrbN znIxFZfXNoE^o0f&plXnw*Rtm_{aL>LE^pqLT``s2v-(E~Kq6#aOu;U|PoS1cT!m7; zk^4`82>AlFy8{LA;MtM^k^qyVJ^rXl$#Hk^W651v##}G}8n0Hl&;c@q5?8pOxda8`zm@`# z0+H!d0+2{hAYySd)h0`(TLVJzv(EfIYxCE{TaJ~g1L}iBA{s)cD4AL{L!uPGT&ft6 zYn4J$CDDjhd!bsfRZKEOf?=x@PQN)#mlK4yphk87F9H&cb*ED;+fO_swpU(S#OVAuy!iN+2#pAcll$xl$>h0eT*^I&K(Dj>)9&LNY<4N_i}mTEvsm z)qIJP&*Q4eDy>v5kW|Ah#DJMFxzvHrAfXyR&+|dFhy<0Jtc<8&oDZX7q6yQKwEvP) zF?6v$e2XqLWdx`!qQr}{VRIm;7;WQ*D*{GZ6#qYD5%_m4R8+A-i3->%twP9`F%*D_ zh0UTc1r(aL8dHVNB-6+wy2T8%a6Z`DvOx735*Fp9rR&!x=Y5xCy#KV3w<^T{B4E|1 zHmTNgX+w61ZpqGX*gnvxT)Bh|Gr1(Cma34-c{I6F#Nug5U}Ihp*3P>1sa8A_R(Fbx ziX{N6rj-I8zPz+01+id#SfpE=u8)lerVKDm3Id~aX=%Fj)rRDFUCa(V{KXI$q9-Ua zt4Wb*j(@emgZ{$+tJw6QGc0QL8)&x(z$yV)tukQspSG_4yDX~zB4;SJeo|q`q99CU zY`w66$TX7+v1T!m1b~+S@Dc!C0>G=GNwgf5h(={{Xlx!&S@9O2?COFkCz~v_-(bCb zAJR|)z>8|sU(lQq0A73R-n9k<<7H_>3FAp4Wg|+!V`WBwxVc#R1bk|_2JX7D-u3?? zjVfk5(QM95aByrdLtK1b+5&t7UNhT?CXi}bS}rVCaO5mlgiuk6MhvlpqUw3W=`<2# z-TPTwYWb^o0AD~}PLgh0IPOojI17N;mmiS=+yrb5zw$#2NWl{cS+G#V(Td12L@8A9 z)Dnr9Os-ZHO>hnK{yBg3CJcVOa)&-<6Yz!SWklHewaay8;LXU-h}6e!!p>z@L}14> zi^A~}8ADFAsf1O_O1a#>(m0ufO%_X(kc*=a~N1SfsQeAYm<%qC4uo9At#t_I=d=8r;lSmaDL{3pN zg$#sU9YP-(OoIP;Ky!-}|3i*pY@G303WY&p@F6jcf@oDT8j3<<8LXl*Dz;{=MnSc) zJamd>Lv9Q6rvli&hi>^oLtv18?c)61n`RRu#iB_Ov5d!Ms~~Y@vZ>T?)EXt?#F4O6Dt8A|$p`3Hp^WRS5jsmyzL4XL zCyKYRZL1HbW55=_k}fq~7m`{dfrSvUhJy%bES8EZmvQ+LaHK92GMQqK0^{qaN!0@0 zW2)LV7HTZ20YnkwlnByGAF;y_z9KIx2Ut%vGwMieGEXMfQZ!r!i^)PE6lT*QC55UH zRNRg-Mg<+FGssj+zm`!Ccs27^EczEQ0sqtHomKCX6bzYw&lYHyRIOC3r7OU~E7A%y zoJvHm%#aa`#AbDCHS;robJ-r?ZPyoXk!AMLn5?9}1 zAp!t6#-xix0Dw|S6A4jRMj}%*5DgJ2$l40BuF-)DkZLt`%a~*qzneaN1qKyPkHn!j z7RI?0E@MSg6cAq&8d4`G<()tmCt6Y?XHbz6ce z_hu0R07i?>Y=!)@H+@#)lL!ECsMh9<0YMCiVu|3YcpicsTwZ#FeqB6(nIz0NjkuQYRUHZvB1Y|A+v9Dlt}LE?Xi10O#ihW(+to zCjtQE_~C!$yCR5!s1QDiYGfRNmI-quauo#<69E8n#N7cW4@0=v@r@-}ED-=e1OSw= z`*Ds{dYRPM|1@jm-(^t|0RYw9`cq-B^|wIXD&G3zVGa5{TXmVs^TR?x#9Q9srMj^2 z!pu-z`2H`V_)Vxd(*t3clOQ_~{8tbYXxP5M;8VcrCHFwfYUqL=f@=(lD6sh#Q_adur8@!%X$;2wKT_wODQ`aQ%;8u zf%632f+*Z~so%Ufe^2&Txge?m-?ucu^k$o~rHGP`*gp)6l%Y;MUg-wfJVr2hm&#*r zCaC{1-3MVj{aXS6C@>QuTgl6a001HYKq_~4fGHr&F8m#t)opg+s8~ybXlf3ZifEK5 ziNj`-NlX!iR~`H}(}a>S1G2s)uny%2X*4Z~$)gI%A_ZL}XOcAx29qJH2C9)srIJZj z``x2-W(*MG0YYj(L<(+@SA0fdOHThKQxaYX9w+i&UQcbSWwRJoeL1b50GrhmHkIpW zua5~dH7|5?!G>-4SMiRsc{dvzr*H)JPF#E2vdbLLmA7lIFcAhxBI5GZ2#hKu5(cE= zlQk?g3b2wKdBu`Y(Wy@L;^<7${N*xg#!8ph3Sx=~gA2+#d@Ropk+PIxLW~3V?O1WLBG1Q+YCCzK2K4YG3M;M%b0zuk)MvW4{CI2j$krE{3-Y?t=ZE zb_~S(SMlp^Zo&+oSR;zj9Zu(a%1{-{XED0iDPuv zrd$~zTQl*Xy7rZ+6SQ}Rue&^8pXIP14F?uYzGUx8AOIQ81D;-DO_~GP` zdedDuMQuC43~hI2@8#&*^M%uYC-+v3>Dg;wE&m_(HXm{5opeg($LXz49k{)+uUL{W zI^N~4eTUfZ!$Y?BJ@?@5l$R44uIsq#xL06gQ=oDCotW?tx|lfi@sZzyJzlsW!Xba} zjchxSqYVBu>9Lb2b7%T*$`*}}4_r)RHGj6Skz-N&6Q|Q1_uuV5TEe{M_qvc87CpFt z)@=3Z>oa!^A2H!hY@7N4=?m|ug92*BIDkH5c#!h_4n&Ump>5-q2G2)F2lsR?Vs)ao z2pU;$c}~Jeu2-C>+AD_A-J94w#_9mb?8Qr#IP1(joZf*E| z+ZI7vhobfIcczbS<@Pyj)Zz9!?gmfE_%OUf^5nMuBh|^WC(fe`yG2d<>?rBitXSIG z#k1XQrXnlHzLC>FZSU1n+t2R4x5xA!9UH;#1v%&E7Q42ee|F15UBj&OQvdGxZIAr zr@o=Bekp6lNb2k|$Z$=!QP}zb5;t+lx^ZKfoquNv&TS&So!%iXxvuxp+C9U9LOi_o zHCgrdjIiANaf933T9W(jR6VbzJ?nurwfOZ%-SOz>^SJK|BkwUM)-Q1%mG#@|h26LB z>ig_`{-YNDSLhEnwrz8DU*)KRA^P3dO6u&s>{9C$S-Qrdm4Ez|DPw>CtC!1+EhSLSPqTgmO?IFC zY>%%j?a|S$GySt>MaO)2ws-1>>Dy*!U5yBtalw&%z3)=?mEh;QrzWN@SVniseA_Zf zzkk^uJwPWv9OQK6*Zq!#&qDhSX5RD57#-{R%ZtJ~d4tn>rMHgr4Z0c7)x)WE@%7CM z>c6&g0v1A1UdyIVLm$2TdF4(=4Z3Ij=+zY4O4bkl_~6{Y;dkcEbEhEn& zT-mztp$5LdTJ*f9cf$Zy)_{eZ7ro?N9*`QK?hvv6(;v4naz zk6j-1UJ&wmfVxRm>XC~jb=X~*D#M%x0i$2GsO4{G_|;HrbI-1SUyhCL$zEE}zl0VU zvfh`yWYA~+Xe5FgMGBmqJLKhpS1(wX-;shnIHywH@P2+bb5h%5%Tk-go&W3LsYNG- zZGZN6PQPdmk7f0@U(Rok)#*s}mE>z{ zSMi$!-QL`^XS+JJ2CR&m72Bn`KUHvNm|@Q4=pl?+{c@b!yvb%q^8+tw=Bs=T%&t1Ep^(^MCdfP1S-u=Vd{DK;te>D4O{)0LTa%=xOYDtI(|Etc{WiB5*{+`Zkx;>wDE+a~XM1(-=H+ScbKB0o>BiKM$e+BLrcn2JEjZf7 zv1PGK%$&E|GrCSr|1hY~b}r`&ZG05-X8O$X>#_|J%N~gyR24lmsuT)<}Nt4Bly$W zp66T|e~LPPZBxdJy)N_iPpO4jy6tL%`q4r&8+)f`|NZjB+jsL9);-USdfrmRo_Mt5 z(~mtLk`8=&@i?Pv`m?)za?<^s?mPN=j4N^Ni`5JIshNM^v>9`r#3sAFzUVY6Ci#<- zb7qUlH|9xa4K>8>`8ZMP=T#VTE9=Iahb5hs9?qCBBly!(RonUb3wp|8JTou9%bEY+ z;HHmvPG8B<-8+qby0$p`gG*t_Zltl%9Ou}@)%}yb^VPN3!=E3`3~(E3SbiHiobYBy zTa3px+r_&xHgZy_s;Y$4p~0`%}ddb zSjn>*fr`{`lAQhF=+wd+P;+?tAO2UVa@o73gF6f=ZgY5;de^lHpWc=%4=6d@aNS+M z*L&N}{8W-0u>9Htu=iNjIJk@b(G$n}bp3QYAf#j1rq=K3+@3Qa>+=f{OgyjT%Z4Z z&>yj>L!X~-+dp_-QuaYoGo^3c?1ZT<2O8;Lqd>4sgHtCUWS-pr)1)hJ!Bn2LB{3=C z1ii2C!nAu0H-jBew|3#Vw?-X%9?FiJIP=_A$A-I#vQJ-L_-=vg@^*RKZblnk*E@Q8 zP~8EAcMxPppM+L_B&Pmc_@vvD1aba^Ig?$^qQkek3Li>R3x-D{cLXEkK?B7bPspO) zxL@{pIP|~?w_85_$1I4F9lnqk-g1*x{TS4t#WEkmhqHnAehC_6KwR=Bi=d5R4FWEC zYh(G_ma6*w7?wG ztTt_reQKSdeNaF2#lT>XgbVs6b`ynEA&=hM{qC$B+3*Gd=UyBN-O}i2eIV$AQ&e$X z{q!H?eRm_1nYDYgYhAnQ0@! zgR^@_w_ZDZ${^WoRmMe-?Fp)7h&|{tD>*1iR*7hScfTw)n!Uy35^q-<=Z~)S|cQ-shIhiy>~#?BMMD zp!ykY{D;iw1?wocB62@0+I4d%SWZt&JAFKwGka3}aKp9p7k87d=pB2HYNBv|*X_#e zQImMV^Gc4Qtm2ph#W|Bb3VTkHwm-1hwg2e!H!IZ@Z5hh}c2N4P6?WL`+8&nkL* z_3G4K4_L1jwo zC5>#hXa4!9IeR95hDRj6>9IHM&8|Q7=R!POd*1Qb=+NrsM?0UP2I{r(9>I^6Irlv4 zoR{=?$%|oG>)*F19Cu~o{ADpgT=e1RPXicU_2^4Sy`MOFX1$*TyGEYgo$Lh1O&m#i zbUU(n@vM^_>jgySUq9kCf2hZmtIdls#SVIX)T^T1In$>3#TUN=w$R^y)vlkV7ln7< z;k)A*V_oaNN7fH$w(F^EMTTdA_=l9UF1O zBYO&(DWa4+9RFUZHE@6LxN3t}^0dKcj;d4k&*Cj__h;di9LAW>o7{LanxEYr+~Lgm zopl&1F-_O3nALuuA!vPK$KS?=csR~XYS^WFh{u8X6DPTzCc94fuppHk=gY6>b9&<0 z($tXcZ+4_# z)6B@pJ=LsObbmkUS*J^vuCL$c_aDh?$E@f6>kq;6CbjDMSM%Z{H!cfa|KxRVd)&yz z&HFhu_utyJ^RI>{JDWu`8iWdZb?8lAnO5T2XywrMBZ6lnW7M|$$xK(QV(fi{B?MCMujh)rcD<`~OKr?nP#Su&#D`C|e06V*?yO4k0l*(+_z)em-bj;~kO zTl-TR?jPY3ks#02$4&bDAw6P$@ZIdD)TN)U3a+PT&BngfeJDP?BX>A#qIS!`{B8@!5)Q@ zzye^mboaHBYtkX5Z^Hx}xPQp24|{C0;zq&S^lN%u?cs3pQg~Cb|JQTq z=z+7@?F!OGLk(v~MEw3fZsh$jzrdPXe+le{UNT$|M7zE36Lujq=J&1V6@|~&u6H^& zb8IW0j>3ukGew1Dn8hc)%#>7bN0M!cwv~Bes}Asrb8v4UdXSj zI*86*(EXX*!Eub>$~{PPeURbc%29Xg{Bln+D)8tsT1pgo&Gv~=126Rv9XNZx-&J;I zfzQ?7oO*3;9`|m)xftXG@n?p=amTz25Bo z<$`*lBSLEhJ_7sq!A2|b$a-L1wlEr85D$L|Fq4+GH%c|;^W*@ZXf+>QR)5}sE_S~H zvkZ);@44c-z2|)P+Wtz z(7k~}Z*9BulrkFb__3RC&A!2#@5ZirKWV^@#Ca6zwSsG&DIF%?*g0ye*GKQ|-MioP zNqv;^OfVvG%I@jcxADdedmBf4ef#4!MVfNO(TCpq;po_>r0(>%l(z#0)LA?y(w*Pp zsnePG3x;I}9~9x$TUx((f8!4^4~qR--{|e{-$pRm9`#!Js7ZdC?!OFsBYUh#A3xr= z)!Kwad-r(<_vJj+Kh_&YN3P%xe|x{Xznc7Pu$1$p!40B zxyf1o6aKZ|4W5Gh<$Ae)*1>0go{IVtX&Tq{+Nl|d7iD3)b6TJ7dV9n1-3#fD-}wp} z2BiEFBQo}X0K8??$PI|O}_3p|i z$=VjhZzIW*+WD|n3*x%`+Bd}+g*aQ8%YCDN6?(`wK`#sl_t9DJrj zH^~YjBX)JOGfU2g<%*S$L!@iMa{D~FwB^Xzx#2f%&RcyX>(Dxrz2a( zCv+E%mBn;;T=+VuegI?Rt(HyCwL9tYZtX1j^;ui+<&GWWF?rzAF~vLH4@z9#Ha1<@ zsCNB;UdS8ulF1!W&BMpxy`~&rBU(CZ!mpH+J0o_;W6sQ03>m1t9_5u)ux(nvU*RN_ z+kC#u)~ME3?p|!^#ol*d1$mUiSlKJIRh@TkANz;TzrH2GJKFQ}PrrSNTMJ8`9jQy6 z-{#zqsrMR%b_jUNU4CbC{U>umBeU)}NL>8$j_g>v>x!h+^Dcu8x+BS*1)-vj9 zAP2&d2uh2wt$kNzJX_S<-#hxDSJy>@vO?pwK0QsnHr7KlZ0hW6r=o#jKg_vn|8($UUpt$+O12=kYhV5TfYGuicSrt0x-sFW7(P7F$0cvKPmP*x~JowW%b;HO&#mwl2`ZnnclRw6Q+jdW*EG>78%03uXlbn zckeZ~*@9=#dTqDirw?kGKQ*Ae8+-lr3`!R+Y5f7m9K-H9tk$O$p*@OvKWic%KObl*Pj+4glFm#_BiI-QNMVlsb!e&_d*Z-bR+J{KL; z6o!%qF&~FLO8x!qf$N5d@khHSoQ}P>>sG(ODfBtbay5R$+&?OGj?s6V_<=v?umNPvXNJZ?vs)_?RE2= z5|ZnSGJe)>NE++@dSi^FS=>ANFQeBz2)WyD;myto!{gp%H+DQWe%O>z!gotH1nk)A z<+&U6t3#K?#PSa=Fr1pP=C3^s-~Eyj5_xC(iLPBT$X9RIi5c4LQGsZ?zr1xjuk|NJ zi;LVc8)-P%_JUu7yVSv}+%7)hjnmyVq&*z*`~mrlV2=YE-3J`p=CM2V{GBnyGy8FB zk>}5w+-bI8sP6GfL*A_dlJo`bNaWh>b)FB)C^@pnH^u+&%*2ytL$Z6X>2&vZ)x;h} zQ;v-75^2x8;k8hGtWny@n{RGBPxEsUy0o+Bb`tIRwSVy4-jnB^5jOUT?3tk%hTQ5o zXZp5TPOsarChng;^3Em6@qUw<%xl479^>t4l+w(<87=@Vhs@YK@%D%pw09c!Wn02V zFP+zL=HYAT(+SOYX)g{qD1Fz#yPxFN`?-)8JapFvztA@FCZy3%?IxuN6-d6XcrJ!jEq{4;P`I}7tC z);FHhwlkSOz>N6=oZy0O8E|?9!kF^|cq6Qj1`3Z2JDkw;WJ=e|w+deOja6*EWrPDIWZCU2?x$i(KwZxVvQIro2B>X2d!VqekyO z(P_Ki)o4$qdh)V|?Yd~jcbVUL{?5S(^ZriUe)1OQCwIKX!pE$ zJg3mbIa3Kde&;=WUxM9kd&V2h$$dF9^>?46kFI;x+B$3en0d}UG=_`4JRNi;zm9lu zYh+yO4u{YG-F(8!*IS#jRz$^pP8W@%E9Z~jbv9DK-?Dzgt~J}=?f&SiG_XDYSRJrk zI866o@4P=Gt52q!n;JRyxA)JxtXVlhZMR~j_ni6X8gTZ|89lIdwPU@kj|WdTPLwU3 z@b{x($@kb zE>oIJZ!@}2BN6vc2(>SIe)H8&OJ|OFm8uN7cP{+nE^(_-GblR?CS3nj^f5*<$dIZr zu)SQ~B~hNfsW*3~_|;#tE&?x$xTx_GuU=j6KP z{@a-x1U4pGc! zsTVs>G`!I~xiqXJW4E^}62G$3@fC>+Hl!B1X9Qm5yHDGA`{nv4jU(!V#qsE&;Jaa$ zgQv4od|pO7FL?9r&dF7MUIO>+hoFX@IeL|D;>6^Bs?YoGpNN0^o2w*#)4Jxnw?j$w z|3J^3JRQBR;bFfY7LROo@j&pl)=PpTdV9I#j1SJ9;hvwgWK1Le>p#Pz_tejtJ{HdJ za5Sz@^Wyur-lp{4$*rF?*ni^5-(rDlMY6Cv^&++TGoE#ieHHrf zK&i|J+ABH+}8E87@o1x=T|+iZn4p4|b=X zdNuUrnqAP)g7EJ2(A=)6xlOf(zktH`zH??V{m_{O`?x1h{?^+6{L?+Xymv)pZAol- z^Bqs$>*VM?-92gdd*nPi)U+R_E>c<*-~0P^K-a7%Px;xO#~tlB%O`PY6cU*0dZVLH z;%^;BjrMsRlzMmTK*Rjc;(H&C9ptq{IwRo%s#w>Ll05flJ3;+ z`z=|8&3h-W?vOA*GQ==o(Li5A@gT#AwXgD; z_Z*Zi^Yv?Vr8oUelgy<9=d3&HzhG?(MbjszcTQ7uoV6y&Rlj7!gqy-!i(@g9eo})H z&x|+E*%@zK={e+aP8V+skDi_4)F-px`5gGVASI)J>M(hN;oaZO*Ql0Kx8?30`N(C-$mOeqx(BNV4jwUfW!CdZ zzsdE3vro@}PO!%HCeM<*Y0ui;vT|1t@g(B@#;ElcT`lX2d^G;woG}O z|9a)+j!#=)lWUCO^QnYF*UVzs4c=bCnmhY9OqHH)ur5C1K}6j<`D~Z0m-_J6i*sI` z88*9q-ikdJ*&WXhh>>Ss%JBcx>D~~}xUPk9s<0m~tNS#%yp7aI7Z5a~3st=I$MBNg zZAi;ySE9T&wM!TBcb zz!dVM5xPlMw$4*loyk6JT)BoCy<+tDG7P|la`xu?)$HO1G1iT#6f5@e6<8MZWBa?lS z`Py02^M1MWrl@ss=Pv2<_K!IB|5$s=xTxYT-q%1W>5^6ukVd+Zkr0rQZUF(MyF+Pd zq}u`MlFk98n*pR@kRG~*8W^~H^m*<%FYdjcd+#|fsm_x97(_`#T8OEJIl2*4Wfdt9PQaznNRFW7PdnVwxM|A`4KXK9jxbq z*E1K^tJ*N<>hHZzg7ogM=wjS`e-cg|LtF-D`4dycagHZ5%vV^}_@SXjS780}`iQ=n z8GHS8@ZFoA`$@lz^0=FL_7IQj1->Q!fIP;?6HHhoLE24HzX6I@Po!1BVKIR}QY~9c zG!oAR{FrZclkxVw1`X&o@Db^Tz3rQAZq^!tNcw0_!n7f1uJRK0drb$cEuVYNQZIJD ztE_@;C?{T!_D9Co53K_+wv{;Hqq(kVwsQY^LkAupL;#c=iQR{w_vV3=SQBC9SS7b&h|6+H(O9xycXuKPglM|^N3@iCkzk-goo@4yIsKc9;D)pRSU2boPkX}g2 zrPKErlL-&eJRRwO6qi2S(erP@uT2EQjFHELF7PZZt4L3GZMOC|FnV;h@!yA|k6VqJ zOp%2vg-B{gFoP;F7R%Qlknf=k;lRa!8ai6A=H<2OJ`ix|=+6u5B**nr2|Z18sTo7j zk|Bo@fdG%~pI)F^tMfaxW4rCD;A;PZ0r4x=xSIhXdob}^h;$Xxya=k?(~G!!=jT7A z>zw(zX*xV5w4Kog3vwA$GXQf5ksK=KM1)A0?KsRV*!G1(bq-E)=!Gkf&+9*0ZEkL0 z0K>@kcNqOiWKt#RK9HMw8+q55Pd*^%W;4gofV=dPIComo{5U(DbXb-PF}^*TwVn@2 zkYYFo;!$87O2dVEw07Rx&SypC7F(bBrhMP2AE}6@Nk7Qkg5Xb-RTHgPd)IbpZ|Ev)HWTqK9KevoD+Prs1 zh4=64pySmWTA8aiqysNpXm9O}5|l~ceUB@xm3cc@IfQ!XGhC&|_e)uKPq@$fG{3$< ze8;$AlBIBG(ULCi^w;2=f=b<1^jppzwuBXf(zgo|rNjEgXGnGnZi%tjkgV%y*&IwEx(0ENZ|3y&bb}>_T)(SMM#dK<%cO@0XOBIDQx?`ybl>&f?*$7%VUwXpn{}7DHdEODMlnc{jf33X7s7zZEi~G% zL&ZHE=uCEm)chbd#>Q(|v@x1$wzs+46RZ3lQ=Fi!wmvXmTW&u1<-k+SjgWYLCR_N5;GNYvn&O zRO6fGXqJOsPby*6Y|11(gTzZ;k?m4`H1e6-8lN;Ij9o&I#_3?JB1%un$;7K)m(|5X z8$_1`kB~2apB5ZES>@9IC14Y@8%z3kCn8{Tn9-MwfVyr)nM7sE!47WjR~w!1)1|6ThWZ`Tdt22q8$3cy8q9>G z^?5R9_rWH#+kLeUIDOgjPVKL3VuD=m7b5Op>iv!^?fO3dMqmf&^asp<5RsRqQLZ{y zmer_#cK)GJ=+RuBsijtZ^RVR>HKpA-g~YaMNNv zi{@LJK(A+VPq=;4xrc(!TTNS}f7G=^T7u(0^z(f`x=!6*QNG(B70B`m)`Rl%LCxB> zr}>&{P{(?Rp9-cpX5Ry=@`p_#2U`zDH*2h0yc?&eO0Iebil>MI{DfyG4IgnHOp#`4 z?uStz^|a`{^%wU8s~Q@vqPdxNFg8rTc;m+feO4Rf(HKX)lVupT{FdyQ+K5PZ%l)@? z5Hc2g-(PiTiYPpn+6L`C^eNRTfqR%-7!~@{zs!kc6NOb=FK)x^?sFd4J)Ydv=gYZx zG!_CAA%vY^v8HkL1rkwlrIgMD#ZOL+ZT!}OCuw#Rzp6+X7>gtan-mg`ka1Ih+;G>G zTn5595s;Yr8I!5xa->+z%go|6Y8y)297X$FN)vL13hkqfvc*E@@!6A+%fm;4 zm3l1yjv;~fgNm{r&4NyN&1sL4}p>y>9S zo%oS!l@!C@FNK?v%a1)ih7-rAQvhwi&Fy?r=b-(4 zHbvn69{rn~FCsv`_Nw#jZ`PEb&!j=czFep~&a(PQ*r!0aiglR~J04jau0%@8@QD^y zF;KOBioOU*bVs^EqBBQYBnMdN?5nz_6xpf0BFp(lCUJbQ$<*mek=Vod&el|)SVMgN z^#Wzk+Qh_inv<$^G2-fTS~85mzcz+2L*+vbs0RZdr2KU zkVHimmQkS|Q$6=zL@_E&AC-uPBkH2F2E(DHJHh?@Ue)vA7tGxA3|ERBJ052Zxt0%2 z7e64$Ltw+jb1^~bd@R^WR-Hd8YVp% zG&P%#gv#^6ksijB;~*1K@Hsb*{;4GnWIj1)_H^%duoaI8tTVWqrJk$%3y);;M#d06 zamuaJ5X!Dk)cLLIhF?LC>-~<4+#5@Y>4rxP#r#W?z3$nB$njrexsagsp;vPTk$$-$ zY+^d?15N+g4^bg)Kj`U0vq9}Ymhy?)b)=ZG+kG$oL+o5Fk1n1cRZ6y93%|@QR$yFQ z_^dZ@%5K$yOKlw0f%DNPQv=WR~^~2Ld~({U>GsJ zy2DL0ZYg09HiYaZsnC`1guq4yUq!al-JQ!|;R&d+HX>-!kSq;109ORXcJWQINT5T2 zk35EE$lKP2%NBcOE-MGO(q3lar?umpQTE0?vW3x!04nz9=GK9+Gc7KkaSnp*o**oM zIe`JpiElYjrOJvNUs3z&tKid!D{W6zpOk~&jhn?3744|cl~Nwd9RUC*$>x|^ObfVMr z%*KdUTDnxFh3uD&hkGpM%wen6a>2%wZ$yJgo%n+`zNX$1_oqdOL{(KfOZyC_iRIgW zuq>V}l86}?<~cv)oNHKsZz)YGZ|0T`altCfS2-ek#)G~H??dW;&uZ|KTc7X}$hG}4 z!as-0x3*uWy9J{6G6XTQ3gd1>u)m+)^@LK*j^Sqk=;bIf`MiCwq z-oS*ovGOohYr%DJ4!S+Q+d!(nkt;?*X8vr)KDVt=nii|8(bLny>&H#$eA~r1H%ynR zl^x*#@jJcFpAJ~9Ip@^5SOP>TRf#j9jtwaQ@TmaU#~u~nCfu>ndKN3qF;-1+n8J-j8xl^gLvbPEAaSUi`Z9i)L~=g zyxBk-NhyI9_Q#eVA+Uf=g$#Xtc=;3GVkj_SoB?U1`&AVnl0dGH0nN5wA|CZPX( zx^E$~aY@>y2==yHzrL=K@;jy21QPKp6RDco%csT$*mun3RG^U|ICq%QmHt1Ut!@Fz z5INEj-BsEmE=0zSYs{rV|3YG$E+Sf-FrCm_D?*2F)rxQDd|-ZfP3iL@DiT`;8%z*+ z0GZHl6`A*zx#;ss2_OJV>EHhN%|fToA#npBk=H@;*)$A-l@>DXM}LOZ^dDDt?%%dG z99lRH(6IQdk9F86KN}PJz_e7;Ce5dmPa9CGa~yIpz>SfwUn|O9+5e@EM~`xQegVaD zVQqkxlsg>^S!<33gH#7x@gZo+FG%1^jitTZgWM^Y(HkjO;s&uOa zZ3YNInhdvzOFWZe9UnGl|4OOEU)MQ`n53wd`j4dyXX&*Lh# zK2MMLz9kBlQ-ZQKqHm?SGq@4*>xxtP@Yc_@KDLaH zAxvuf+u;VnEpg%3pGTUXW`&zbj^ObR-aR-hRIi6_E;2hhENMv@u{aoPPZ#@wNBhE3 ztk&s16UB2&F)S7s*D`HBw>!-hE@tQILcf$uaWH-5D1}UcM~r8bt|SQ|1%?t%7hX(Y zo+d6Nq15u~NfzDmeEg6o7YUN&daxIpVWjET7n5g*{<-q>d>_t|j31fb3g7sDX~P;M z+>!}B4r${sYVwW+M8Urg_Uj7?GQMvX=T@>&)WfZnwEJlWUNs{^UJr9%q*GtNlv16D zae!%TkNTu*P8k&uXS_;fSjV`@@@YOKx5(|z^pa7Evyq3XI>j6}eW}Ku?KQ}(nSRwS zMYDFoYFP&3a$-GP9GvGk7cRoLsQ*LnkE9R2-(tb4k4sO6USsU;rVJeSz!oF6iRQgB zW3?JC9c666DE1~rV^Dz&zlFu870x4Eo-B5tDg`VXl{n~Np-S(k>EfvOnep<{G`w(8 z3K5VA++=)ZyZnCSYkZknKRLsR1it|57%3UC)KLoMhi1oSsPw9vP$pDAjukBach-N*Gd>yC z8S0Bc$-(Z7d<>1o+qYNYowbxC(8gCBH-K}-xk+wE-86H9`?kX2z zU(KcM9!A>^#G8tO0zm&#h<6iwpqz{9r%R6#jasO!dM!^jScJ{P`yTc_MfiKR8hn@8 zS;r#|culM1`$`7NQ_O-Xc_F>mf1v! z1R@@2VupQ?{YQn7W;Z)66RE+4@}%X(Wqq@kWjKC4ub+b6d+Q@I9ozd-R|=Tot1y`V zMc0@aGQW9UH7@OjzTz5uNZZLrdaf=IKg-9wiOh}U< zIPck|-Fp)~fIanT*AM*yrI+!S5_eMRvs_>FIk9ppF3e52jz3W=dx0}dZ_?rUpHWHJ zT#X)}Uf%9tW!EQ;C`5eeotwW9Q_o%7l3l6lI5RkB`ic!c5KJs67q?*5j&GSR=xmWP z&%{Zu4>>;GO>Ag(_@fnW5NYYJ*)jG_D6vo4!TNIe{c8Z$d{$kO;B3_JAmMOFR^cEy zgT2>3l~pMI0aC3K|C{`&=%<%k5}>HjHdGYnvdTezxyBW&ZL?ELgc;V&E- za7hOAj~%zA;if)ii}M}`GjOGE+Z9a56Kw*xqauMNVH=$^sx+%jBh@T3(m>=N3z$8A z9#y9vMXK?7sj{y ze^ULOT&_4GX~;eGCQRk`%4V-6^Azjy&kew*4Rao-tqGdnf!!1(WSZI(`D;F3%f>!D z%oT~=5XuHex$evj=uPNB%JjFpOWD+gJSf&0yf+6uErhmMhn-Kg?3HGI$0u;+GS0-l zb+eZJ0{O@u&IpmpDGf80sG0Lk3wvAoeUdIIeXxk2=NUS0u772IxEH3_H5hDsbU716 z>%-umzR6ARkEp0Y8z_KE^v$30bKl*_C11edRU%7`CH5J^a6EM#;$pQkKtN6V=fmg3{ARizJu@(t~aV(dE~id{^;rn9Jg zT#6bTu#wt~A!}YkIaQV!+7vCQ!lNBXf{MRZk-xzJo=5uIiSlE}YdE`~M_U=@!ysJL zI8h~#Qqdb;T-Jr66Dz<><9c*BFjfF+$IscNFcz~IvhV~8<%%-C9{Mvz!R-gH_elx+ zD6)e5S-5|_<}qUAcYuo4!1ET+*!#^jMe02}NI(YG@m?OPk3X|3=C8Nen3kn9ZN6EK z8%SW)u>j>fbvUhWQa`soXk|M^AzV5hn(aHkqR_B=M8|2cAuYlO~nT#?6G% zu|F#?pRyr-spLahPF9&Jf%-2f4ccO*-SYN(^lx@XL?I9_g|bBDHPo2l&_x)9Z7y;r zo$KJgSl(NL$EjFgr>gV^UioP&!<-} z;j*$wYy=6CO94WpeQufjipeRaEG2^YlAZ`T0qofZ?<6LSCK0}1hiTikM;l8tc#H_Z zA=#+eX+wpcbQA=YwhRb+mi2SGWAC|&Ws`<1$2XIh*1Q{MX8r^q3_B8zQ=vR;>hPJILg(XvTzNcASjy>yB*|{F1Qpvo*&#+ zG)^8_kjV<>{&>1L0QO?LyRnc#HUgiDhSGcX+m1)QXD989XoN-v@3J0mIq67&9c+rJ zR-X6DCWF}>esF;TkT2mZqd+33RDL-_(S8Y@-$wznYhk+`fIGk(E=ug@Zekt-%BZu; zr9B#diPv%aZD~*wVB(?Ez#XC6+43ccfYa>&T&K$N(qf1P9YVUoQ_tst)D|QtrB}kstOG9f|+*f@{Qfb zS{(Os@?xO!k>9um#b}u1xvTe)PD4B(lkx3EygX3lbix=N;?inZz&>EfE;auVGh$oj zX?yXGya7%8>C%5p=SWK)8t>nf>eQ8@Qy>kyRD;uYg9Y%HV;~XDs}fEGbP>G zGd(K5CTL`I>1fsa_iX!{eRRB==fXtbnV6_?3%8k36UpnshU-gA2UH|_UsyLWZrWKw zDT}QjuPBTS=)MKq^aiNYM&4cnwPoR(HxiPi&%;Efc$l>3bW<1n1?oJ*MKqQhCy--#JKM(TP6sehNfe~IsUT1o}Lvy88L zWDy0OnpXv^y!lbwDy9mbZ{M3_4<$rKhUp{=P>#Sq-2a&bO=02a(*2@O@C0Ga-JAw3 ztzWJnM?e`~l$VC@iTwgn&Y@8$YWxN+6R#@(j7Z3c02K)iKa1e;Xj1=p>xt1YxEG>F zitVTPBR9ezAWw8u8(4;UN1(I_XbSApb28)y5y8iTdM%^6oD2wWyRxYfQty^Y3Lt{o zuqvt(TxaHxX;%cG%hd+`ZL#Dk>0}0kKgM@m_`H&X@bQ=nFxrxYNQGm-nM1wrsn*Kn z_vU$JUU93q3qESJ?RuSFU~A3x`E#x7QQzC*C7(m=>8+G%&(-T?wyt>%_@2M}@Fx)c z7h*hCgjVdzgS8l0c#8S-Qrm5n8aySr-4(T3h@b`Aw=s&z&?}Z; zXX%}Q!|SJ!WvjqFDb>Ak)M)y59==;*vjh&#;7(`A=|P+4$ml?mI>$88|no~`_=$& zrmvTwVaDyRkeqpRA7PZi_N!^Z@?+YL~1+bKj$aT462%NR9OjN zg_&@{Pst^J;5JqotWvK5S`r)x>Z{#&X=Fx(RE~&udY3d-?bLQ@)5C}WD$TRo^OjYH zjI0QiHZhIqkyB1wKMv~(EWf>;#jhpU`@NgA5$+{>rP)4{vI{~G7MknJk(k8xdq(q(=m-`H!IDAb~`bY zzVcD7kH$ex@X5#UuN%NwN{Oa_~iU zpmCTlL(0*bv;Ia~K@-f4aLH$C6g32%dl&H1KYm3UBC?+jcIU;w6m9+d%vnF`^|KFf z=LK+C4YXkR`LF0dyhV5cSq5d&#pUVKbDuTbe*F;m{FwRC+uGhQGHqv{CYh$;;Qftb!|01-f)a(&bVzGJJ&EOT-^XLb)GD7X*&9x!ibcY9skyXIO4 z=|7@bfID{p4-d(GFhRoKum11{K~a|ddq2^fmk6i#B!1YM`uBTJ+V@~nPJ};Aky2CkRM#Uwv zL4TApw7EG$C_lNpjNglg;ElrzUfldmz4FvI&Zr;XIVg83s<+C`9Y`vp>dS88xk?*d zLu*u794>Es!5bz02(yiYDG5*H=iTk$zSj+3GG02bJ95Ws*D5M=2w1C;KlkF#bWMaH zo-XWpW9G_b`bMqb++q5gry}FW-0-E(%MgMpIwi%QCuEzlVy0dtvE_b^e=nbHWj-R; z)VjJPJQF0=iSxnyE74T35Xy5Fl_n91E4_u*w1i zPUl%C9KY;HE$ULy4_JPdt@9klzL`Hp+UZ*H6Gng||I(zutoD~U0O3_n6pOf?2Aq0p zV$=-Ru_7)7xg#66WI*tfxA+m}nVP3+J?u_s*R@efwmK@rKSk%xbF|AE7)wki`u4U} zn0rBuEa7{^E5-4c;pfY7MBbbwWL1~n-}kFoY9CooT2F^#JU~4f+VHMQqMCCHh9y`z z7!^<2@x5RdlU!!(vv56==dfdSzPh^FXWO>_EjvKI4|Nx@7Zxt!D@tZLc)XsYGFe@} z0{EyIg}&0;T`WrCGAjVfh;eUFq0gj7pY!pD5Ak6%&F;(f6Ureo+0GUwFiwHRgoSw{=p?ywr$&AEnFx1%Hwf;rZ2k=Z%@~#}L{dva}fn)|k zBpi{uixS6snXySpG@g`Lwm&NU@^RlW)p2F^-82{Pj#^$N=VV|=+nTh7r0j<N(tX@o1skf z@|yD<80Pw)ZZ%TT>&&udjZs%6U`qvFu9GkqC!Z6;I+x>hViv(0Zz2wG8I+IoK-}UZ zPTzH7TKZrwWZ@7k!<0TEDI@sF=J%PC+#!WYcI-#?Jp46|f@up$k4tGUiFIjTq3&D? z7(-#rSbk;Ti^ywQ*^sv4>Gv;9-ixq<4rus^5{34sDEABmi`P%B-BfBD`nqVN_G3$o z8olu5!NP0?{J}Q|-&UY{~tu%bedB!49@1RO^Ozx_;pQ&%VX{GSGg7>PsKd{WR zGcBWT9ZTj5REPDML(VDq-GH)A%Fd*_=Yvl`!yoiM=&5^->v9`yUl15h4IjZSOYUES|5TEDP+Fb%8cLd=D#C_$6CZCC|} z2C(|%6cbz`Wn(`#H>jlFC!wt^ut%<~f$c~w%|3tHtZ(4D^)G^zD9oM>`Bp~ON0?e+ z`SFA>zgREmkCmF1wdu43svrorC(JEgX-Rc$sUmrM7bW?mGVorP|MO=14n;AyJdKyA z9?P^uzgQQ5uh$(24m*cJGg`Kc#JB8?5kIiWDtx#8Jef(*!cQ~d9F7i=3`tU8pW4z2 zZD$dS%{F3pClND_7hF~TR6-vXO*Rr!5c*)q`c-^oU@(pN|aBTD6M)@p(cN z79_PlFR|RfFN8C9)Q%^Os~5x#a7APGTDvLD;#3isHSd%-tSgddkjQ0csq6& zi(Z7M%5rdm=B=*1W@$F?=yYkSv{Sng9`AaOLjUMDLJrd=n0NinIiWYT2+xpMmUfcJ zPC@SjQ)dgAb*|VHCRO<9_q}cgD9pe3(IazEWjTqZusewY8S+AxJG$th-Qg#wDh(Ph zzzT*PB|d$devv=9zh4^|0&a)$bhy?8OWNB!JS9ra(8D+UwRcJaa-dLEEEB4EWn*&R zb#u-#S6n?18I290N%q|F#?Aj7QuD0CRwh!!UJC{DsnV3ddg%IGl@u8f8;|ff2ggh` zU3~o()ksoSI~P{^y(DngwKh+ihq+S(lfH6>N?R@2Ej;K2I85?Xw}od^4N-fHkAHo@ z%@3EcW<;6aUj`48A_EPDry3Q4VM* z_l(srAYfA?juw>??d6T_KGEF7-gTCflZiI@H;Mhf&MNNwP)2VR0Z5^Mc2ZLz>O0oDRP8g7! z3<0OjUqWHCu=2+2($7f?=qB?C?Hl|?hK%()%0L(8yF+wJ0=7~ic}JheGC=L1XlP`^ zJ)as-_p3y+m>;c1l}lId_EZh*p2f7ntAV6wp+RTqrvE_v@M8Rr$rZuv#qsEk`RT!M zfUni%aKKf-O-l(g{cTuI!|Cje7{J~4pylRoXh~fS8+9BjZ_48IbTP-Q_ z_DGc;Es@+5UUuH1HrvOitga5S3yu3`9{~ST6TO@0gSllI>!Hh^gN?mPgFKrRy%bq} zZ-xo_*$F;>YptZlFjM+$DspX&&>qB!j3e z_of)P-<)CkJ1%cl3@-@>c!nRgX5Q&4jfwR#&S!cQQ$`XDllANd3aSRwk_(LsS(aw@{9;hA6Tdp@ z@*a4U4RLJJNZk3P!1Dkcu)a%=QVQb>$Y|eM%HFCW`=mqw7NV!0gi&c+_I8}(-iC>j z1UlSSD9XSE^fbkJdCQ)^V?6@u0*F~&6=XwJB7Iq+0O@6S@@p@HgZ;BVxBKzJlA#k} zQb8_`?;c?$F|0*9G~dniE&O=MFDnJssn^`88?>LmXrVuF4iKF1D)2!SvLgKP$Y~Y= z^Dyu5JW#2IM(*9fcgcP4soeFWj|ka|i)o6ScD2Oy3#BWST8DcVaziV;w56ugUyGZ6 z4JQTW$U+PhGb}H`?9`?(E*570uev%VxeC5 zr$04fLwwO=*h}b}dk(U7*x;_tQ4W!G)ROv?#fo71eEa8oCy8FpJ!mN!I@-x9q(w$m zu_p_sJ<_)6p+c0`&mw?aCn`RH10e%9B_u>1#Yq6j2T1^|WEND(y<^sEZ*3RTebS-; z*5QTC)^j69gm{0_wvIiQZj5xFc(;Y;B69f}auY6s-~nO~tbYFwPSix+!}Tp5_z%2&pBcU7+fi8!YL|f}VnIA( zrs93#Wu$}K8lda~sqBcFOIs6-!*FQtzD}@By&jjSH-OVe<&bb8?qmc(V`C78t{%hX zqhM9l29>hPkG>U9p_;L*;-$re-|C;~-@udD#&I*Fp!66HMo93Ea%=CQjW8^RuIKCL8AxbC=nY6IF3 zFmR;mjqlgso`U&t-hZFL+Ww2r*4X_!kEO&YyiIrJd_4e)#>%*k^7w`d_VVST@C#{q z$@hcsl|&#%_@ZB%JHWcB`2Ne5dcRAY<()Y%lL*gg70CNGwT%@Y#*nWfh`rFZsOeGv zh>rK-Dm=T18SbTrb^;8b1ISXLN8duur|(0;5pwW7^kndNXGNqxu_-9Sf>aelcZk8~ z9xE*02}GgD2_U7WGyFXK1)6bS;G|)z{rUkMRgQREDF$*p(^}H}uvD;eAYWD_2Pd%+ zBU<0)Ufj&%c8dykU5gLN6hRy{9lnL5UVVLW10UG*r6d(%1UaCW+EEQ3ICjq05I!n* zEo!#+0xadS5nJ~DEv4PpKeVDOiB>&d0( zp<+?cd36_?rKHaXEj4Q=n_~G`r^ckGAMp2nE06B42^)@v6lHMWZ_wW33|9G+h zj`)?%EVHS~^`9qj!hvwlw2&cJb~_XR2?VXV)YOO|gOt>a8`rxJ=;$Pm6uD03<={|1<0kkA{;sWEoYeZf(eS-{#?F1+ zvGN)fC7Q`e4+b);d59Yyp^30k?di0M%@SU?HnCMdk097up+oB{ON>^E_oTgyzg8J< zon8T?JV~$)X_t*TzAZMmc-Q@6ERuGq9iCc4D>a1MC}m( z!9_qLq9gs7j(jAXb4Y3ksTF5ym)_bi5T%PVGgir$@^ zU2v$;vY8@K4FJa~*d+8YWV;pRn2;jrg`+At(^+_SwAe#C34S; zA=s$tS);HE(jh(~n6(Xs-j7Pa%toCnfp38lrIO${t?hfwv`luRDI}F-4v3OLJmAu? z_&~?s?KHjfc-75nzunU_KcG3DntIHK4yGUfMZhfwE>dNm7o*wL+`=gfH@EX01RZ!3 zU)7{pymY&%e)M#FDg%Y*ChEzEokzC{2^f2E5(3Lv5ir2G(wR^hMp80n8+qqDr!+FT zM2(Bk1_f?r`*`KyIOyEGFo|J1+f!0>XM8Q(BwT+9%F$>$tO$K;v6xiiKppvBc0t6o z*LHYMtK1hEZ4b80hRMH}Do7us7iW15E2-I!nW_=S=+Dq}z-K)oVr`Yt6iV z2hPle@9GmkUE|HSSS=yj)RgV6m2dZu@oOkUz3wuPXFhR1$kTasS_T?<{)>!OJOHXx zS6{-&i_5i2GG&8a?}0?_G6gRB!MB72miQFmFj3ggaWjMI!P<>o!P4!6kjD?bw1}j> zG&?`6BRO z4C3Z!z-XFLwm|iY*MzC4)$ON+fZ62uV9bR(qYz79S$4dgq;n}ln?~J;Og+lyi|O}Q zf-Dfr@&`8~K%Zg)ZZqj0<{O#WMihj*NvuM5@(PKOK+x`rmcC;=fd&Jm0g<>>Dai#L zjj+>S=NXoVQUv)s?<7rvKZa*4-}EB4cVV1~cc0Go3lrg-d+&xeyx-MO_1`caK1~XY zINtfmsc3xR(+z+mgZB~K_K;097VdO$_Kzt(UcFSRyzQ|%FsL|em$+U7!e-UE`*Sz! zlufg>i@BmLawG+7-EA;6tUm83b4A&Tas(D#zJr#h=^LwiarCf9J)hc~doZ5M!&_)i zId0>Aee_~z+%$uiJ8__*%WZ;5B@mU2_dlLQ6d1RT>(qKOh8sGQ&UMrVU~H!d2$!%| zz!&(c&8NVR4YhdLH+;gCkM&)%o)$h83$PBFhXGw<+&bcoilI6zN*bgp(Pb*||Z|L;xlAkr3hFLh$~|%{2h!_-N!8)9LA3JSkuL ztWIdx_sDP{UphNOWATx>^@B4$OOvtRrP9X{$saI8QZlb!twtBElzR44E9sqrqS*GR)$wc}f|MHA1Qw|LfZ$pmsSqNRro|dP3yA%0H<{j$i#MA{aIr zN+m{`64jLr38ikyEvBgKBIBIIayG{rdsAxjIIlht+6x%6rf~({FWk&t$NPmR9XCE? ztGtlDD@5eYQpO1oW~CAdw~!ommq%<5L6*VBu93@rYO`hMkpA;wyTpAed7wvbl^za3ILtnHKf}*PA=u5RdI_Vnf`H*vXLF;29wGcenHZYaVDn zn-ZJtmw8R6RQ!hb{J15X2#H9Memm!pu`Juxz=7ENx}OOkw`Ps%n-hNAvP@!_Q=e&M z;AAVqEaicKDK8^S6Qh3ENa%yIysZUeP34CmTtDhn7)ioYLnIKDnpn4dp>x@+rt)&I zq^caNAI=k78F;YNZ-&E3kL#n7tW*C8eEy-7@36qJOKMX*t6zVKQ+K;8MtT)Mb?CJ#an;L=_B)+~_`IsVk$vK6iJ_Ls zhiJlMrz*=0x32&a9iY(L{vFM!)7lY#Vu?aoDUiEd^E*%QIy}{DYUtYSKd-{Y?hmjX!kv)v`id z!2U-{MOv2t+Vc;;IbRen47zn$?o)0)40O#oZ&Q?qYe6_mYEq$M25YfaQLR0}lDfU@ z$&FZ^%eYmhT0xQDr0t|M0s8G3oCz_IC8=74GOnw8a?3id9|fU~N$+lv^L-}PXb4Vu z>NejRxRaUgoBFDO<>>0URfE=wJ@a+Z>!SzgmMfP)Dh^-(j+YLXy)Uc0Zr{0GPV~Gx z-C^1oSZ{p-q8AP%JC6#(2mIGD^0g0l1z|dH3wcV3jWo~_T-EW0v)O}GF4Bh~xQ$Du z02;Q$)v-y2a?$-eUlC-SFf85>V`GKZj)9Q=#@hCvYZui)t?SgvKsNX4t&G5B@BJ@S z#wT?dPhrckI1nMl7&AFI$_;T=L>EFsUWMta3?_KUf74ca*5t2O@zv9)d%2$}R}3;h z^4B>c1Ul%~TdOD_mO-?+PfvPxyvv7P9S0j54|IN(&Zx0hXSfuU_Yci-*8Xa0UCtFE zCeL>uM@OdY2zmQ;3*#pGU8&HIV9A-hGouDSdyanFRY-_&0oBei`M%6O+PyXBZdkE; zO{?Brxa6~SuFt|cH4mAjOG=tcKVH^xOz~8FIO|qIy-j@WfI$hWG-7l8b=*PPA8&ry z#KKD7Wx}LX68t+C`LM89C;V`1b~|*(NuD9>;SU=$yh-o143_J#{XbQ(f>X;rB|wP_d8~| z53F=MD8fZ?ej!L8)ZY3i*U5_oSAI-Ap`H62F;Zd<^emHM?#K|{mdUX9S5ERftp}UL z1C6prUcwuOrWn4d#bo9Hid@iFDUD*F+daDa!Gn9b;|*s7%+k#NwD4a?_M^m^KyW|v zA4?!QRrvqjN%8-^`?|B({KYDT@7?;LZI&7Dfm=(W8*OinTuYb>3<9xj$G1qlgL4-wgnF38n8)Wq@C9>t{ARDF$|DI!o|M86ak zuIuajIc+CEiJHQ$Zl61IaL-Jz&Bg&*s70#+^((KlHi^{;$>1;eniC5Mt!N`$ud(mt zTspA#-{>qMk9ylKhQ~#9CXz4tsta9FTNS>TWQ_t~RmI4LI%dQo4k|>lT>P{?%{-3l zRS)PDJb`|mA&jly{cz<%!W45JsiN)3wl$yafPFR|C1(%W)~@(7LQu}a2zwCvudyU9 z(6h+@@YtsPY^w#`ETmtq_^LMVCEnW*>9I+nnh<>k#z1}N+dlw!iSCaM#A3!LO{XoJ z=*Bu04~~n(EI6s-Wz7J*K)-4cXQ2cd`TN?BHU-L3AS4XRu{Mn;vyy|GdzFQ553aIK zmulnSyZqSuVw0fW!AO<->r$@$)cnB?(0C!)PpG`BnMpPE1L(lvAm<5|1Oh#a(Z;Fv z%L-uEJOnh-QP^|0SJUa3JHesikhq-z1SIY&qVQ~_O}E7At-paAYHrT`smp;CHyXCN z>~y$3)c=`eVuS+7H!l^Op8e@7q5J-Ops^Hk*>!id&nPQAiXn_GOMdx+AEa1*yo2i? zla60zrXyKn!IF>U8;v1piZGd_86O4KZhd3#@zFYIfO%b92iH2A;XL!h7rrYm~OS#yuE@3O^hWJ-2LbolWiynYS>tt$Pr~M{t zv;7QSGueK7FsqZSa%-}5)@_l+eTyQvoxWYv_PII$I^XB@TaAl;W|Nl41<#lN97_E^ z+Pm(krn0Rcic%CA3rI&1!4Z)XNCHT=3?RjVNR5;vfRF$ILXU`wih@d$5{iW)AOg|} zQ4x?HK)_I?2SOPjv{3S0X5JKi&U`a(z4`B5*3P=zb0r=d;NLsdvO(;Lu9r zxz~zyy=K55na`NEB0w2StC{38?KJh#v}7|Nx?At~*DHV_YdHizaUZJb zF|K=Qt)Hk^sIl(bNxRNIl6DCyJlNSd&Bvqi>?(OkC#39pHG}5=L z%%x#%#~Gb>v3T>=sGHtC~pnaxKGY<61${*{|;6I-^)zy{se zc=E>9hy+|=fk1SR$^%7mNy2;Xah<*LlPKPL}ytINnoVq$$<% z#>s0ob*DxyT`OwYlL}wab~V4tQ2CV1xaiXfVFN3I6p38$p?R8wq{6vX#;8VD*w`pusGbI%LP8IGVjaBACoz- zYB|@kc7}D|87WX&u}p%Il-9O(MF+=f%e}e-_IAJ1R?ER{gxw>KI`!}g+iEBR}Ka_o5!hEdWm%?Cuu(W%GS7DS9wG`8LGK;zi8U#s{zS zgTQ?ny{2`P2MOkfQm@pW(#eHRrNu-p7bRkybMLe@q}o_Joqem)v6XFLYEBf+)_2jf z9B~;QV2j;Inkph1$=^O)bEALKtVzIC;3Bu*=XL#V#csnH(>NtAj zJLL57f(+-utn0^23-wTj63=pcqP}l9)!dN;B1|K8Y*-0qz7N^RA4@0)M&x% zY|iM5dheR0m>oocc*dPwj(}jPU5%GdP2djm1WBYe)9kjF+Mr3RC_P-Qf31IdAM52jNc|1GY z#2+UkhxA{SNoKu!l=t(Et?)wv!Q@sIOgPgX7^>-q!P zMlDKwDDBv+yGXTFYu-ykk5lwi>`jX$vpNuII);4J!1-DyOQYubK3Hqdy_5C7lo@`) zCXW!CZK-uZQhjyiN8f0q=LPfODmU)mD~Q_knhY@MZ2&|C zSO&8f5nLP&`HqT7ZjkLGCX^}^-Iv{Q!&CEPfuBDqdoXr0>0}b$ELJ8BGq+vTKD0^| z>}z;)QR?E|3zx0m(sH}?vnsiT3z>#K87S~5wYYpodqHzfhEBuH`ueffX@2&&h?&`w zR))4)Cn9n&c5IZXx#i9yPe8Qssc@%9MGdCOh-2~J{mb-qdCPgANiL99Jd2;IN-m!T zjziiqVbqHcixZ#D(eMfkxVpU#WShc5xcDh`&>L5ys7oDn2K*X|5723CO=Ce%Urt&_ z7fYn_decxA;hy5->hrG@m(EyaIk{s zMv#V?#^kN%gzL zYgd}9TfGb1=|xP*g>32FiWiRGA>))Mj#vPvvpBpviq1W_Tvi>nK+b~7+1hpw4Q~gp zRrj4d7oTz~TJ6%4i_^)1K3yuPlcLt8M|5U)5IwN@&97sTbR%t2Is{Y%90IoGv`?C& ztZ4v&@3u_nfr;0cYm`Z5$ZF%X+Vc9YS9`;KyPQ-5Z>Yvz>QKRl2hK z6!+UBgx7iouO4M6xC&ixP3M1Y!^)*(C95YJDQsxaE|uqc@6wmTK;>0hPE$7w=?r15IS$wnbYuXV>B!)~fSWn`$;na}zLK1`E=-(zRga;SYrwS6x^ zX1){G$UD|$BUzoynASAk+-bztQp!=z(@V6~GWRIhzzKG?A1;{geCu$fG0!y+-$DdJ zzaq1uY7d*MigWHXPkdNC$1DxiSbayBtyo-&*j&lOcdu70F_!no1!2SEHLH>dhVg1q z(e1wP$L^r-8AC9uUE({kyPTtD8WU6D5qq|GE1xNi42kM>fhzkr_B06`DgAya?r^hr zN^%F0D#x{XLlE^YHkk?Ti1Qf%_01ZAUd1s^3#H`U>@ zYFJ0t#@tdc*=hM?D zKCsTB_b5Q6TD|*$UEC;W$fkpg2@);4Rm3wrm3E;LjPhXJbtWZrx7s$wpl8`x3-iG` zvEa($1Wzn&VByh?C%uQWdIfjT38pn{fwO^VbjoZ8S(84xUt_-7G7@^B_+Z279QNq` zrORU>5A{0HrS7wD!#tmO>`k@^u5_W-9VCq+>qTfpLaMm0o4UQ9cMP1dp`}^s@BcA9 z;?vU+q>sVgoJppTjGV-VQ}kK6`Po1x>(nms^3r2F(#AwbXUe8Eck6N>Q$~;r98Scu zMLjc#dVZjnT_TJULsF}o39I_OPv4Vyn_Kr`hkI6g`}EP<$0OR-+Rd9YUs&IDdh<|g z!16iT)QJA0( z?*>dEs#?gra%!pH4WoTSo(WS?UKp3_LAU~E-|((`i~#G-Q}$V-odc5a=0+UNIDhu~ z^t2rQm5Q9rKn&%jNfL2-d)i0x^2<&yMh5Ibc@3l0?3pp0J=<;^sTKK~) zvWV>NnwkKeyu>(RPP$oJ!n^A8qwf*(o}2yUeW#a-PP`s(KI$71v-~WJlgx=$V`n^% z?O*9nw^^?_RE(AjiX(YT37Z_AZZ5OPai7w{R|?uX7)+UX6!cS~RMt-WeoWNTRMbSE=ssCl-{aw<{L9mBpp|q| zI6!E{pE!cv7)p_=ID^GNC3Qf@JP3GNL*uk~53&1!K1=PT+TPIO1@$`o#F^z6q~ZN~3P6*zw+1DsK<5GfoBIf1E=Z12MUE;X#AzH+#f` z7&5cW6%^cW*uNZ;cei*yYSFflzrO1OGn&vf+)NhNAV(ZGof%`8$ckIFbU{P6QFPN$ zC_w6Zly|Kq;FqNIXVoNS^_bB-w&CsE*H(e{DCVSxUDm`9{2vwKbyznz!~(}MV@a#S z?+L~I<_-*s^kHlVnf9sFarzy^Pc}J&|M;YQx366P&J8;m#FLpu_2eYD5)H}UV`y>d z6kYEyl=v=YCdIjvl91N%J}XB~tg?G4?M_{11eyDqHPB&Z9$FUThvRaaEf6a_fr5T! zbB-#p=0-~dm!rb`B*}A6&9Vs6^^wkVHIWUX>Dn&f-0pavrn~y8_q*xS9_7eA?%f2D zrOf@LxzzMZ`f$C(5dOzI4iNwcO=bGPnz7K>JQEqB6Uwq`rsla@+?^76SR0EkFjoq zL};#|;P}NMOJ?P|V4|2<9opCVCI5g?MXnB3O|=k74dWdfWmec!i0pO<))=rjuloS7 z*U2#Dw#bRg?wTICmfN@5oEtQ@V_dG+Msfx3KRn%K!`z%7CoXT&$~9M7TY~734cNK$ ztXxcU!`L{HxjHc8U93jhWlxJ69~ma>*9$E;K#VtTHqsFsPy1xM={>Y_&7S7XND-IJqa{H0bA!^*al}Fa46bWQN=TdaHZs~_0@2IAaG>ojmG-b%QEJ9IxK%$Y^hGL31Dc*b z0Xr7wfw8)93e#;L>~PoLE$ZQvmzpP)gW)oK2!%;)^Xb#7glwVsvBC# zwOJDH(`{eaygC*s*zKy(19vDpUDwp-H|?Q=D>=8JH9#AAHL(6pbMvhk{DlG9CU7CA zj}&->c5t+9`!XzceFqK z=y<81G2P4qJU-R*O6ZIvn4UhZeQ|+}E!6qv_Gnnzd*ftTw9`HDK9(2*?Hqxh8$JNS)L44Q>n)0_WBOgY7kd^KMzXd890qRT5kZL;Rl?3 zOr0O)e&V51+(pmz1*u$487Qjs8h_R?;Rgxw9V95ftTk1#F_rXU3-khXTyT(4wvAju z2botSG_K1ekd5uL7P}uTZJj^pX~5xj5!Mmr8Dkk&KJ9}&DCs*nNkW;aE#3*Sy>wya zJyc;r;tU{(ak)(6qskU<&WGj&Nf_)Jx%Vi+ODs_lHE_Ed%ewJK{oy)$$7=CqWv(=u z!IFpM+LKGH}a4lYF?GM%K=a!0x zL%}%A$9wauYmVJJ1NT5_b)yc|%{w>lX$|OKr`0~XY>q~HO1Aak;!PJ4RPVRgDm7Fb z?}WP-Y}C}x>K(UUbdq8B`&`2ASE8UA`Ks0c z6q$Y;>#uzDbP~x7lG??hk{`CVzW9)K@H&iFGI zMyX4fUOX)elQ@9&v_(7Ex?s=^LQ~_!FMJLFsnJ+<2`>+{s*kG^+5z~rbpw8Y zr>eiar1}$AH(M+ghw*Tbb#y{|s!K>{oIpCcAY>6}PY>S%NG}%`SvOlxM|BB%4B8WT zxRpbR1Fi@MCtF!hUpD~R6XD}2xAj!+kCOgc%r6uEg#^E3^*=#%MR?l&C+W^3yq&gc z9V_=&v-?{LMK`3P(^X}J9Tw%~Y43@EplwlTC9H~**MFCp2f|xcK~_Oo5vHW509J-U z73KfEsDE6)e<{OT7%%_>s-mQ%428m=^5B00u_EU8$D9b7+LFE+`U@))}L=o~|&+^YGkY7=tU`2Vwe+UKoD~gIT z4E9f<0Nv-O8dFhFP=+Zh{6l3?`2|H$NnQ~Q{bx`V<$pm@l2?K$DE~t!z@YxQ#*`r{ zDv*DqkNy1thxPPzL16z*i7z^Ox!R#^om~F95dB>e&tFm>cSEDT6v9rfwkU+$)?+~1 z{HiuJw$$$R_FI`sfC-r#Kqdw(touN}Dc*P2=vCJNpO-*@fJ0=yx_;3VU#GG9 zx6A`~ams(4|F<;T*Co-dl^2Ht&0+!2mq<5Ye*@_o`t56^#MZrs!j@Yb@Afy(?|Nplt%^ODxohzlHS;74tRL@4sLKzUcGM vF)W}zlGI;w`Mp5i`r7&JnpkA{_P39T!8RZ^Jg^J_{FMOS?N>GcK@0jnjao`_ literal 0 HcmV?d00001 diff --git a/assets/test.eddx b/assets/test.eddx new file mode 100644 index 0000000000000000000000000000000000000000..a5f0d00c7a4f4ee495a002e823dd33372c25a450 GIT binary patch literal 16894 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 DVHwZ; diff --git "a/assets/javatool/monitor/\347\233\221\346\216\247\345\267\245\345\205\267.eddx" "b/assets/tool/monitor/\347\233\221\346\216\247\345\267\245\345\205\267.eddx" similarity index 100% rename from "assets/javatool/monitor/\347\233\221\346\216\247\345\267\245\345\205\267.eddx" rename to "assets/tool/monitor/\347\233\221\346\216\247\345\267\245\345\205\267.eddx" diff --git "a/assets/javatool/monitor/\347\233\221\346\216\247\345\267\245\345\205\267\346\257\224\345\257\271.xlsx" "b/assets/tool/monitor/\347\233\221\346\216\247\345\267\245\345\205\267\346\257\224\345\257\271.xlsx" similarity index 100% rename from "assets/javatool/monitor/\347\233\221\346\216\247\345\267\245\345\205\267\346\257\224\345\257\271.xlsx" rename to "assets/tool/monitor/\347\233\221\346\216\247\345\267\245\345\205\267\346\257\224\345\257\271.xlsx" diff --git a/codes/javatech/javatech-cache/pom.xml b/codes/javatech/javatech-cache/pom.xml new file mode 100644 index 00000000..c6b35c9a --- /dev/null +++ b/codes/javatech/javatech-cache/pom.xml @@ -0,0 +1,76 @@ + + + 4.0.0 + + + org.springframework.boot + spring-boot-starter-parent + 2.2.1.RELEASE + + + io.github.dunwu.javatech + javatech-cache + 1.0.0 + jar + Java 缓存 + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.boot + spring-boot-starter-data-redis + + + org.springframework.boot + spring-boot-starter-cache + + + net.sf.ehcache + ehcache + + + com.github.ben-manes.caffeine + caffeine + + + net.spy + spymemcached + 2.12.2 + + + com.google.guava + guava + 29.0-jre + + + org.springframework.boot + spring-boot-starter-test + + + org.projectlombok + lombok + + + mysql + mysql-connector-java + + + com.h2database + h2 + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/SpringBootDataCacheApplication.java b/codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/SpringBootDataCacheApplication.java new file mode 100644 index 00000000..4a5220d3 --- /dev/null +++ b/codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/SpringBootDataCacheApplication.java @@ -0,0 +1,87 @@ +package io.github.dunwu.javatech; + +import io.github.dunwu.javatech.data.User; +import io.github.dunwu.javatech.data.UserDao; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.jdbc.core.JdbcTemplate; + +import java.sql.Connection; +import java.sql.SQLException; +import javax.sql.DataSource; + +/** + * @author Zhang Peng + * @since 2019-10-14 + */ +@EnableCaching +@SpringBootApplication +public class SpringBootDataCacheApplication implements CommandLineRunner { + + private final Logger log = LoggerFactory.getLogger(this.getClass()); + + private final UserDao userDao; + + public SpringBootDataCacheApplication(UserDao userDao) { + this.userDao = userDao; + } + + public static void main(String[] args) { + SpringApplication.run(SpringBootDataCacheApplication.class, args); + } + + @Override + public void run(String... args) throws Exception { + + if (userDao != null) { + printDataSourceInfo(userDao.getJdbcTemplate()); + log.info("连接数据源成功!"); + } else { + log.error("连接数据源失败!"); + return; + } + + for (int i = 1; i <= 3; i++) { + User user = userDao.queryByName("张三"); + log.info("第 {} 次查询 name = {}", i, user.toString()); + } + + for (int i = 1; i <= 3; i++) { + User user = userDao.queryByName("李四"); + log.info("第 {} 次查询 name = {}", i, user.toString()); + } + + User result = userDao.queryByName("张三"); + result.setAddress("深圳"); + userDao.update(result); + + for (int i = 1; i <= 3; i++) { + User user = userDao.queryByName("张三"); + log.info("第 {} 次查询 name = {}", i, user.toString()); + } + } + + public void printDataSourceInfo(JdbcTemplate jdbcTemplate) throws SQLException { + + DataSource dataSource = jdbcTemplate.getDataSource(); + + Connection connection; + if (dataSource != null) { + connection = dataSource.getConnection(); + } else { + log.error("获取 DataSource 失败"); + return; + } + + if (connection != null) { + log.info("DB URL: {}", connection.getMetaData().getURL()); + } else { + log.error("获取 Connection 失败"); + } + } + +} diff --git a/codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/cache/CaffeineDemo.java b/codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/cache/CaffeineDemo.java new file mode 100644 index 00000000..484259a6 --- /dev/null +++ b/codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/cache/CaffeineDemo.java @@ -0,0 +1,23 @@ +package io.github.dunwu.javatech.cache; + +import com.github.benmanes.caffeine.cache.Cache; +import com.github.benmanes.caffeine.cache.Caffeine; + +import java.util.concurrent.TimeUnit; + +/** + * @author Zhang Peng + * @since 2020-07-09 + */ +public class CaffeineDemo { + + public static void main(String[] args) { + Cache cache = Caffeine.newBuilder() + .expireAfterWrite(1, TimeUnit.SECONDS) + .expireAfterAccess(1, TimeUnit.SECONDS) + .maximumSize(10) + .build(); + cache.put("hello", "hello"); + } + +} diff --git a/codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/cache/GuavaCacheDemo.java b/codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/cache/GuavaCacheDemo.java new file mode 100644 index 00000000..1cdb585e --- /dev/null +++ b/codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/cache/GuavaCacheDemo.java @@ -0,0 +1,55 @@ +package io.github.dunwu.javatech.cache; + +import com.google.common.cache.*; + +import java.util.concurrent.TimeUnit; + +/** + * @author Zhang Peng + * @since 2020-07-09 + */ +public class GuavaCacheDemo { + + public static void main(String[] args) { + CacheLoader loader = new CacheLoader() { + @Override + public String load(String key) throws Exception { + Thread.sleep(1000); + if ("key".equals(key)) { + return null; + } + System.out.println(key + " is loaded from a cacheLoader!"); + return key + "'s value"; + } + }; + + RemovalListener removalListener = new RemovalListener() { + @Override + public void onRemoval(RemovalNotification removal) { + System.out.println("[" + removal.getKey() + ":" + removal.getValue() + "] is evicted!"); + } + }; + + LoadingCache testCache = CacheBuilder.newBuilder() + .maximumSize(7) + .expireAfterWrite(10, TimeUnit.MINUTES) + .removalListener(removalListener) + .build(loader); + + for (int i = 0; i < 10; i++) { + String key = "key" + i; + String value = "value" + i; + testCache.put(key, value); + System.out.println("[" + key + ":" + value + "] is put into cache!"); + } + + System.out.println(testCache.getIfPresent("key6")); + + try { + System.out.println(testCache.get("key")); + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/cache/LRUCache.java b/codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/cache/LRUCache.java new file mode 100644 index 00000000..3d38eae3 --- /dev/null +++ b/codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/cache/LRUCache.java @@ -0,0 +1,60 @@ +package io.github.dunwu.javatech.cache; + +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * 通过继承 LinkedHashMap 来实现一个简单的 LRUHashMap + * + * 核心思想就是:LRU (最近最少使用)算法 + * + * @author Zhang Peng + * @since 2020-01-18 + */ +class LRUCache extends LinkedHashMap { + + private final int max; + private Object lock; + + public LRUCache(int max) { + //无需扩容 + super((int) (max * 1.4f), 0.75f, true); + this.max = max; + this.lock = new Object(); + } + + /** + * 重写LinkedHashMap的removeEldestEntry方法即可 在Put的时候判断,如果为true,就会删除最老的 + * + * @param eldest + * @return + */ + @Override + protected boolean removeEldestEntry(Map.Entry eldest) { + return size() > max; + } + + public Object getValue(Object key) { + synchronized (lock) { + return get(key); + } + } + + public void putValue(Object key, Object value) { + synchronized (lock) { + put(key, value); + } + } + + public boolean removeValue(Object key) { + synchronized (lock) { + return remove(key) != null; + } + } + + public boolean removeAll() { + clear(); + return true; + } + +} diff --git a/codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/cache/MemcachedDemo.java b/codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/cache/MemcachedDemo.java new file mode 100644 index 00000000..9399b12d --- /dev/null +++ b/codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/cache/MemcachedDemo.java @@ -0,0 +1,294 @@ +package io.github.dunwu.javatech.cache; + +import net.spy.memcached.CASResponse; +import net.spy.memcached.CASValue; +import net.spy.memcached.MemcachedClient; + +import java.net.InetSocketAddress; +import java.util.concurrent.Future; + +/** + * Memcached 客户端连接示例 + * + * @author Zhang Peng + * @since 2020-07-10 + */ +public class MemcachedDemo { + + public static final String URL = "127.0.0.1"; + public static final int PORT = 11211; + + public static void main(String[] args) { + add(); + remove(); + append(); + prepend(); + cas(); + get(); + delete(); + incrAndDecr(); + } + + public static void add() { + try { + + // 连接本地的 Memcached 服务 + MemcachedClient mcc = new MemcachedClient(new InetSocketAddress(URL, PORT)); + System.out.println("Connection to server sucessful."); + + // 添加数据 + Future fo = mcc.set("MyKey", 900, "Free Education"); + + // 打印状态 + System.out.println("set status:" + fo.get()); + + // 输出 + System.out.println("MyKey value in cache - " + mcc.get("MyKey")); + + // 添加 + fo = mcc.add("MyKey", 900, "memcached"); + + // 打印状态 + System.out.println("add status:" + fo.get()); + + // 添加新key + fo = mcc.add("codingground", 900, "All Free Compilers"); + + // 打印状态 + System.out.println("add status:" + fo.get()); + + // 输出 + System.out.println("codingground value in cache - " + mcc.get("codingground")); + + // 关闭连接 + mcc.shutdown(); + } catch (Exception ex) { + System.out.println(ex.getMessage()); + } + } + + public static void remove() { + + try { + //连接本地的 Memcached 服务 + MemcachedClient mcc = new MemcachedClient(new InetSocketAddress(URL, PORT)); + System.out.println("Connection to server sucessful."); + + // 添加第一个 key=》value 对 + Future fo = mcc.set("MyKey", 900, "Free Education"); + + // 输出执行 add 方法后的状态 + System.out.println("add status:" + fo.get()); + + // 获取键对应的值 + System.out.println("MyKey value in cache - " + mcc.get("MyKey")); + + // 添加新的 key + fo = mcc.replace("MyKey", 900, "Largest Tutorials' Library"); + + // 输出执行 set 方法后的状态 + System.out.println("replace status:" + fo.get()); + + // 获取键对应的值 + System.out.println("MyKey value in cache - " + mcc.get("MyKey")); + + // 关闭连接 + mcc.shutdown(); + } catch (Exception ex) { + System.out.println(ex.getMessage()); + } + } + + public static void append() { + + try { + + // 连接本地的 Memcached 服务 + MemcachedClient mcc = new MemcachedClient(new InetSocketAddress(URL, PORT)); + System.out.println("Connection to server sucessful."); + + // 添加数据 + Future fo = mcc.set("MyKey", 900, "Free Education"); + + // 输出执行 set 方法后的状态 + System.out.println("set status:" + fo.get()); + + // 获取键对应的值 + System.out.println("MyKey value in cache - " + mcc.get("MyKey")); + + // 对存在的key进行数据添加操作 + fo = mcc.append(900, "MyKey", " for All"); + + // 输出执行 set 方法后的状态 + System.out.println("append status:" + fo.get()); + + // 获取键对应的值 + System.out.println("MyKey value in cache - " + mcc.get("codingground")); + + // 关闭连接 + mcc.shutdown(); + } catch (Exception ex) { + System.out.println(ex.getMessage()); + } + } + + public static void prepend() { + + try { + + // 连接本地的 Memcached 服务 + MemcachedClient mcc = new MemcachedClient(new InetSocketAddress(URL, PORT)); + System.out.println("Connection to server sucessful."); + + // 添加数据 + Future fo = mcc.set("MyKey", 900, "Education for All"); + + // 输出执行 set 方法后的状态 + System.out.println("set status:" + fo.get()); + + // 获取键对应的值 + System.out.println("MyKey value in cache - " + mcc.get("MyKey")); + + // 对存在的key进行数据添加操作 + fo = mcc.prepend(900, "MyKey", "Free "); + + // 输出执行 set 方法后的状态 + System.out.println("prepend status:" + fo.get()); + + // 获取键对应的值 + System.out.println("MyKey value in cache - " + mcc.get("codingground")); + + // 关闭连接 + mcc.shutdown(); + } catch (Exception ex) { + System.out.println(ex.getMessage()); + } + } + + public static void cas() { + + try { + + // 连接本地的 Memcached 服务 + MemcachedClient mcc = new MemcachedClient(new InetSocketAddress(URL, PORT)); + System.out.println("Connection to server sucessful."); + + // 添加数据 + Future fo = mcc.set("MyKey", 900, "Free Education"); + + // 输出执行 set 方法后的状态 + System.out.println("set status:" + fo.get()); + + // 使用 get 方法获取数据 + System.out.println("MyKey value in cache - " + mcc.get("MyKey")); + + // 通过 gets 方法获取 CAS token(令牌) + CASValue casValue = mcc.gets("MyKey"); + + // 输出 CAS token(令牌) 值 + System.out.println("CAS token - " + casValue); + + // 尝试使用cas方法来更新数据 + CASResponse casresp = mcc.cas("MyKey", casValue.getCas(), 900, "Largest Tutorials-Library"); + + // 输出 CAS 响应信息 + System.out.println("CAS Response - " + casresp); + + // 输出值 + System.out.println("MyKey value in cache - " + mcc.get("MyKey")); + + // 关闭连接 + mcc.shutdown(); + } catch (Exception ex) { + System.out.println(ex.getMessage()); + } + } + + public static void get() { + + try { + + // 连接本地的 Memcached 服务 + MemcachedClient mcc = new MemcachedClient(new InetSocketAddress(URL, PORT)); + System.out.println("Connection to server sucessful."); + + // 添加数据 + Future fo = mcc.set("MyKey", 900, "Free Education"); + + // 输出执行 set 方法后的状态 + System.out.println("set status:" + fo.get()); + + // 使用 get 方法获取数据 + System.out.println("MyKey value in cache - " + mcc.get("MyKey")); + + // 关闭连接 + mcc.shutdown(); + } catch (Exception ex) { + System.out.println(ex.getMessage()); + } + } + + public static void delete() { + + try { + + // 连接本地的 Memcached 服务 + MemcachedClient mcc = new MemcachedClient(new InetSocketAddress(URL, PORT)); + System.out.println("Connection to server sucessful."); + + // 添加数据 + Future fo = mcc.set("MyKey", 900, "World's largest online tutorials library"); + + // 输出执行 set 方法后的状态 + System.out.println("set status:" + fo.get()); + + // 获取键对应的值 + System.out.println("MyKey value in cache - " + mcc.get("MyKey")); + + // 对存在的key进行数据添加操作 + fo = mcc.delete("MyKey"); + + // 输出执行 delete 方法后的状态 + System.out.println("delete status:" + fo.get()); + + // 获取键对应的值 + System.out.println("MyKey value in cache - " + mcc.get("codingground")); + + // 关闭连接 + mcc.shutdown(); + } catch (Exception ex) { + System.out.println(ex.getMessage()); + } + } + + public static void incrAndDecr() { + + try { + + // 连接本地的 Memcached 服务 + MemcachedClient mcc = new MemcachedClient(new InetSocketAddress(URL, PORT)); + System.out.println("Connection to server sucessful."); + + // 添加数字值 + Future fo = mcc.set("number", 900, "1000"); + + // 输出执行 set 方法后的状态 + System.out.println("set status:" + fo.get()); + + // 获取键对应的值 + System.out.println("value in cache - " + mcc.get("number")); + + // 自增并输出 + System.out.println("value in cache after increment - " + mcc.incr("number", 111)); + + // 自减并输出 + System.out.println("value in cache after decrement - " + mcc.decr("number", 112)); + + // 关闭连接 + mcc.shutdown(); + } catch (Exception ex) { + System.out.println(ex.getMessage()); + } + } + +} diff --git a/codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/data/User.java b/codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/data/User.java new file mode 100644 index 00000000..758e3c9a --- /dev/null +++ b/codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/data/User.java @@ -0,0 +1,38 @@ +package io.github.dunwu.javatech.data; + +import lombok.Data; +import lombok.ToString; + +import java.io.Serializable; + +@Data +@ToString +public class User implements Serializable { + + private static final long serialVersionUID = 4142994984277644695L; + + private Long id; + + private String name; + + private Integer age; + + private String address; + + private String email; + + public User() {} + + public User(Long id, String name) { + this.id = id; + this.name = name; + } + + public User(String name, Integer age, String address, String email) { + this.name = name; + this.age = age; + this.address = address; + this.email = email; + } + +} diff --git a/codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/data/UserDao.java b/codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/data/UserDao.java new file mode 100644 index 00000000..370147cd --- /dev/null +++ b/codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/data/UserDao.java @@ -0,0 +1,33 @@ +package io.github.dunwu.javatech.data; + +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.jdbc.core.JdbcTemplate; + +import java.util.List; + +public interface UserDao { + + void batchInsert(List users); + + Integer count(); + + @CacheEvict(value = "dunwu:users", key = "#name") + int deleteByName(String name); + + void insert(User user); + + List list(); + + @Cacheable(value = "dunwu:users", key = "#name") + User queryByName(String name); + + void recreateTable(); + + @CachePut(value = "dunwu:users", key = "#user.name") + User update(User user); + + JdbcTemplate getJdbcTemplate(); + +} diff --git a/codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/data/UserDaoImpl.java b/codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/data/UserDaoImpl.java new file mode 100644 index 00000000..a69ec012 --- /dev/null +++ b/codes/javatech/javatech-cache/src/main/java/io/github/dunwu/javatech/data/UserDaoImpl.java @@ -0,0 +1,105 @@ +package io.github.dunwu.javatech.data; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.dao.EmptyResultDataAccessException; +import org.springframework.jdbc.core.BeanPropertyRowMapper; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class UserDaoImpl implements UserDao { + + private final Logger log = LoggerFactory.getLogger(this.getClass()); + + private final JdbcTemplate jdbcTemplate; + + public UserDaoImpl(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void batchInsert(List users) { + String sql = "INSERT INTO user(name, age, address, email) VALUES(?, ?, ?, ?)"; + + List params = new ArrayList<>(); + + users.forEach(item -> { + params.add(new Object[] { item.getName(), item.getAge(), item.getAddress(), item.getEmail() }); + }); + jdbcTemplate.batchUpdate(sql, params); + } + + @Override + public Integer count() { + try { + return jdbcTemplate.queryForObject("SELECT COUNT(*) FROM user", Integer.class); + } catch (EmptyResultDataAccessException e) { + return null; + } + } + + @Override + public int deleteByName(String name) { + int result = jdbcTemplate.update("DELETE FROM user WHERE name = ?", name); + log.info("[Delete] name = {}", name); + return result; + } + + @Override + public void insert(User user) { + jdbcTemplate.update("INSERT INTO user(name, age, address, email) VALUES(?, ?, ?, ?)", user.getName(), + user.getAge(), user.getAddress(), user.getEmail()); + } + + @Override + public List list() { + return jdbcTemplate.query("select * from USER", new BeanPropertyRowMapper(User.class)); + } + + @Override + public User queryByName(String name) { + + try { + User user = jdbcTemplate.queryForObject("SELECT * FROM user WHERE name = ?", + new BeanPropertyRowMapper<>(User.class), name); + log.info("[Query] name = {}, result = {}", name, user); + return user; + } catch (EmptyResultDataAccessException e) { + return null; + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void recreateTable() { + jdbcTemplate.execute("DROP TABLE IF EXISTS user"); + + String sqlStatement = + "CREATE TABLE user (\n" + " id BIGINT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Id',\n" + + " name VARCHAR(10) NOT NULL DEFAULT '' COMMENT '用户名',\n" + + " age TINYINT(3) NOT NULL DEFAULT 0 COMMENT '年龄',\n" + + " address VARCHAR(32) NOT NULL DEFAULT '' COMMENT '地址',\n" + + " email VARCHAR(32) NOT NULL DEFAULT '' COMMENT '邮件',\n" + " PRIMARY KEY (id)\n" + + ") COMMENT = '用户表';"; + jdbcTemplate.execute(sqlStatement); + } + + @Override + public User update(User user) { + jdbcTemplate.update("UPDATE USER SET name=?, age=?, address=?, email=? WHERE id=?", user.getName(), + user.getAge(), user.getAddress(), user.getEmail(), user.getId()); + return user; + } + + @Override + public JdbcTemplate getJdbcTemplate() { + return jdbcTemplate; + } + +} diff --git a/codes/javatech/javatech-cache/src/main/resources/application.properties b/codes/javatech/javatech-cache/src/main/resources/application.properties new file mode 100644 index 00000000..63306cc8 --- /dev/null +++ b/codes/javatech/javatech-cache/src/main/resources/application.properties @@ -0,0 +1,15 @@ +spring.datasource.url = jdbc:mysql://localhost:3306/spring_boot_tutorial?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false +spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver +spring.datasource.username = root +spring.datasource.password = root +# 强制每次启动使用 sql 初始化数据,本项目仅为了演示方便,真实环境应避免这种模式 +spring.datasource.initialization-mode = ALWAYS +spring.datasource.schema = classpath:sql/schema.sql +spring.datasource.data = classpath:sql/data.sql +#spring.redis.database = 0 +#spring.redis.host = localhost +#spring.redis.port = 6379 +#spring.redis.password = +spring.cache.type = simple +spring.cache.cache-names = dunwu +spring.cache.redis.time-to-live = 60s diff --git a/codes/javatech/javatech-cache/src/main/resources/banner.txt b/codes/javatech/javatech-cache/src/main/resources/banner.txt new file mode 100644 index 00000000..449413d5 --- /dev/null +++ b/codes/javatech/javatech-cache/src/main/resources/banner.txt @@ -0,0 +1,12 @@ +${AnsiColor.BRIGHT_YELLOW}${AnsiStyle.BOLD} + ________ ___ ___ ________ ___ __ ___ ___ +|\ ___ \|\ \|\ \|\ ___ \|\ \ |\ \|\ \|\ \ +\ \ \_|\ \ \ \\\ \ \ \\ \ \ \ \ \ \ \ \ \\\ \ + \ \ \ \\ \ \ \\\ \ \ \\ \ \ \ \ __\ \ \ \ \\\ \ + \ \ \_\\ \ \ \\\ \ \ \\ \ \ \ \|\__\_\ \ \ \\\ \ + \ \_______\ \_______\ \__\\ \__\ \____________\ \_______\ + \|_______|\|_______|\|__| \|__|\|____________|\|_______| +${AnsiColor.CYAN}${AnsiStyle.BOLD} +:: Java :: (v${java.version}) +:: Spring Boot :: (v${spring-boot.version}) +${AnsiStyle.NORMAL} diff --git a/codes/javatech/javatech-cache/src/main/resources/logback.xml b/codes/javatech/javatech-cache/src/main/resources/logback.xml new file mode 100644 index 00000000..240ee4c6 --- /dev/null +++ b/codes/javatech/javatech-cache/src/main/resources/logback.xml @@ -0,0 +1,15 @@ + + + + + %d{HH:mm:ss.SSS} [%boldYellow(%thread)] [%highlight(%-5level)] %boldGreen(%c{36}.%M) - %boldBlue(%m%n) + + + + + + + + + + diff --git a/codes/javatech/javatech-cache/src/main/resources/sql/data.sql b/codes/javatech/javatech-cache/src/main/resources/sql/data.sql new file mode 100644 index 00000000..694c3472 --- /dev/null +++ b/codes/javatech/javatech-cache/src/main/resources/sql/data.sql @@ -0,0 +1,8 @@ +-- ------------------------------------------- +-- 运行本项目的 DML 脚本 +-- ------------------------------------------- + +INSERT INTO user (name, age, address, email) +VALUES ('张三', 18, '北京', 'xxx@163.com'); +INSERT INTO user (name, age, address, email) +VALUES ('李四', 19, '上海', 'xxx@163.com'); diff --git a/codes/javatech/javatech-cache/src/main/resources/sql/schema.sql b/codes/javatech/javatech-cache/src/main/resources/sql/schema.sql new file mode 100644 index 00000000..247bdc1e --- /dev/null +++ b/codes/javatech/javatech-cache/src/main/resources/sql/schema.sql @@ -0,0 +1,13 @@ +-- ------------------------------------------- +-- 运行本项目的 DDL 脚本 +-- ------------------------------------------- + +-- 创建数据表 user +CREATE TABLE IF NOT EXISTS user ( + id BIGINT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Id', + name VARCHAR(10) NOT NULL DEFAULT '' COMMENT '用户名', + age TINYINT(3) NOT NULL DEFAULT 0 COMMENT '年龄', + address VARCHAR(32) NOT NULL DEFAULT '' COMMENT '地址', + email VARCHAR(32) NOT NULL DEFAULT '' COMMENT '邮件', + PRIMARY KEY (id) +) COMMENT = '用户表'; diff --git a/codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/EhcacheApiTest.java b/codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/EhcacheApiTest.java new file mode 100644 index 00000000..d8d2a356 --- /dev/null +++ b/codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/EhcacheApiTest.java @@ -0,0 +1,235 @@ +package io.github.dunwu.javatech.cache; + +import net.sf.ehcache.Cache; +import net.sf.ehcache.CacheManager; +import net.sf.ehcache.Element; +import net.sf.ehcache.config.CacheConfiguration; +import net.sf.ehcache.config.PersistenceConfiguration; +import net.sf.ehcache.store.MemoryStoreEvictionPolicy; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import java.net.URL; + +/** + * Ehcache API 测试(没有和任何框架集成的情况) + * + * @author Zhang Peng + * @since 2019-09-04 + */ +public class EhcacheApiTest { + + /** + * 使用Ehcache默认配置(classpath下的ehcache.xml)获取单例的CacheManager实例 + */ + @Test + public void operation() { + CacheManager manager = CacheManager.newInstance("src/test/resources/ehcache/ehcache.xml"); + + // 获得Cache的引用 + Cache cache = manager.getCache("users"); + + // 将一个Element添加到Cache + cache.put(new Element("key1", "value1")); + + // 获取Element,Element类支持序列化,所以下面两种方法都可以用 + Element element1 = cache.get("key1"); + // 获取非序列化的值 + System.out.println("key=" + element1.getObjectKey() + ", value=" + element1.getObjectValue()); + // 获取序列化的值 + System.out.println("key=" + element1.getKey() + ", value=" + element1.getValue()); + + // 更新Cache中的Element + cache.put(new Element("key1", "value2")); + Element element2 = cache.get("key1"); + System.out.println("key=" + element2.getObjectKey() + ", value=" + element2.getObjectValue()); + + // 获取Cache的元素数 + System.out.println("cache size:" + cache.getSize()); + + // 获取MemoryStore的元素数 + System.out.println("MemoryStoreSize:" + cache.getMemoryStoreSize()); + + // 获取DiskStore的元素数 + System.out.println("DiskStoreSize:" + cache.getDiskStoreSize()); + + // 移除Element + cache.remove("key1"); + System.out.println("cache size:" + cache.getSize()); + + // 关闭当前CacheManager对象 + manager.shutdown(); + + // 关闭CacheManager单例实例 + CacheManager.getInstance().shutdown(); + } + + /** + * 使用Ehcache默认配置(classpath下的ehcache.xml)获取单例的CacheManager实例 + */ + @Test + public void create01() { + CacheManager cacheManager = CacheManager.create(); + + String[] cacheNames = cacheManager.getCacheNames(); + for (String name : cacheNames) { + System.out.println("name:" + name); + } + + cacheManager.shutdown(); + } + + /** + * 使用Ehcache默认配置(classpath下的ehcache.xml)新建一个单例的CacheManager实例 + */ + @Test + public void create02() { + CacheManager.newInstance(); + + String[] cacheNames = CacheManager.getInstance().getCacheNames(); + for (String name : cacheNames) { + System.out.println("name:" + name); + } + + // 关闭CacheManager单例实例 + CacheManager.getInstance().shutdown(); + } + + /** + * 使用不同的配置文件分别创建一个CacheManager实例 + */ + @Test + public void create03() { + CacheManager manager1 = CacheManager.newInstance("src/test/resources/ehcache/ehcache1.xml"); + CacheManager manager2 = CacheManager.newInstance("src/test/resources/ehcache/ehcache1.xml"); + String[] cacheNamesForManager1 = manager1.getCacheNames(); + String[] cacheNamesForManager2 = manager2.getCacheNames(); + + for (String name : cacheNamesForManager1) { + System.out.println("[ehcache1.xml]name:" + name); + } + + for (String name : cacheNamesForManager2) { + System.out.println("[ehcache2.xml]name:" + name); + } + + manager1.shutdown(); + manager2.shutdown(); + } + + /** + * 基于classpath下的配置文件创建CacheManager实例 + */ + @Test + public void create04() { + URL url = getClass().getResource("/ehcache/ehcache.xml"); + CacheManager manager = CacheManager.newInstance(url); + String[] cacheNames = manager.getCacheNames(); + + for (String name : cacheNames) { + System.out.println("[ehcache.xml]name:" + name); + } + + manager.shutdown(); + } + + /** + * 基于IO流得到配置文件,并创建CacheManager实例 + */ + @Test + public void create05() throws Exception { + InputStream fis = new FileInputStream(new File("src/test/resources/ehcache/ehcache.xml").getAbsolutePath()); + CacheManager manager = CacheManager.newInstance(fis); + fis.close(); + String[] cacheNames = manager.getCacheNames(); + + for (String name : cacheNames) { + System.out.println("[ehcache.xml]name:" + name); + } + + manager.shutdown(); + } + + /** + * 使用默认配置(classpath下的ehcache.xml)添加缓存 + */ + @Test + public void addAndRemove01() { + CacheManager singletonManager = CacheManager.create(); + + // 添加缓存 + singletonManager.addCache("testCache"); + + // 打印配置信息和状态 + Cache test = singletonManager.getCache("testCache"); + System.out.println("cache name:" + test.getCacheConfiguration().getName()); + System.out.println("cache status:" + test.getStatus().toString()); + System.out.println("maxElementsInMemory:" + test.getCacheConfiguration().getMaxElementsInMemory()); + System.out.println("timeToIdleSeconds:" + test.getCacheConfiguration().getTimeToIdleSeconds()); + System.out.println("timeToLiveSeconds:" + test.getCacheConfiguration().getTimeToLiveSeconds()); + + // 删除缓存 + singletonManager.removeCache("testCache"); + System.out.println("cache status:" + test.getStatus().toString()); + + singletonManager.shutdown(); + } + + /** + * 使用自定义配置添加缓存,注意缓存未添加进CacheManager之前并不可用 + */ + @Test + public void addAndRemove02() { + CacheManager singletonManager = CacheManager.create(); + + // 添加缓存 + Cache memoryOnlyCache = new Cache("testCache2", 5000, false, false, 5, 2); + singletonManager.addCache(memoryOnlyCache); + + // 打印配置信息和状态 + Cache test = singletonManager.getCache("testCache2"); + System.out.println("cache name:" + test.getCacheConfiguration().getName()); + System.out.println("cache status:" + test.getStatus().toString()); + System.out.println("maxElementsInMemory:" + test.getCacheConfiguration().getMaxElementsInMemory()); + System.out.println("timeToIdleSeconds:" + test.getCacheConfiguration().getTimeToIdleSeconds()); + System.out.println("timeToLiveSeconds:" + test.getCacheConfiguration().getTimeToLiveSeconds()); + + // 删除缓存 + singletonManager.removeCache("testCache2"); + System.out.println("cache status:" + test.getStatus().toString()); + + singletonManager.shutdown(); + } + + /** + * 使用特定的配置添加缓存 + */ + @Test + public void addAndRemove03() { + CacheManager manager = CacheManager.create(); + + // 添加缓存 + Cache testCache = new Cache(new CacheConfiguration("testCache3", 5000) + .memoryStoreEvictionPolicy(MemoryStoreEvictionPolicy.LFU).eternal(false).timeToLiveSeconds(60) + .timeToIdleSeconds(30).diskExpiryThreadIntervalSeconds(0) + .persistence(new PersistenceConfiguration().strategy(PersistenceConfiguration.Strategy.LOCALTEMPSWAP))); + manager.addCache(testCache); + + // 打印配置信息和状态 + Cache test = manager.getCache("testCache3"); + System.out.println("cache name:" + test.getCacheConfiguration().getName()); + System.out.println("cache status:" + test.getStatus().toString()); + System.out.println("maxElementsInMemory:" + test.getCacheConfiguration().getMaxElementsInMemory()); + System.out.println("timeToIdleSeconds:" + test.getCacheConfiguration().getTimeToIdleSeconds()); + System.out.println("timeToLiveSeconds:" + test.getCacheConfiguration().getTimeToLiveSeconds()); + + // 删除缓存 + manager.removeCache("testCache3"); + System.out.println("cache status:" + test.getStatus().toString()); + + manager.shutdown(); + } + +} diff --git a/codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/LRUCacheTest.java b/codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/LRUCacheTest.java new file mode 100644 index 00000000..21bfbc81 --- /dev/null +++ b/codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/LRUCacheTest.java @@ -0,0 +1,25 @@ +package io.github.dunwu.javatech.cache; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +/** + * @author Zhang Peng + * @since 2020-01-18 + */ +public class LRUCacheTest { + + @Test + public void test() { + LRUCache cache = new LRUCache(2); + Assertions.assertNull(cache.get(2)); + cache.put(2, "B"); + Assertions.assertNull(cache.get(1)); + cache.put(1, "A"); + cache.put(3, "C"); + Assertions.assertEquals("A", cache.get(1)); + Assertions.assertEquals(null, cache.get(2)); + Assertions.assertEquals("C", cache.get(3)); + } + +} diff --git a/codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/spring/SpringCacheDemo.java b/codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/spring/SpringCacheDemo.java new file mode 100644 index 00000000..837744ab --- /dev/null +++ b/codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/spring/SpringCacheDemo.java @@ -0,0 +1,142 @@ +package io.github.dunwu.javatech.cache.spring; + +import io.github.dunwu.javatech.data.User; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.CacheManager; +import org.springframework.stereotype.Component; + +/** + * Spring 缓存接口测试类 + * + * @author Zhang Peng + * @since 2019-09-04 + */ +@Component +public class SpringCacheDemo { + + @Autowired + private UserService userService; + + @Autowired + private CacheManager cacheManager; + + /** + * 测试当前真实工作的 CacheManager 是什么 + */ + public void getCacheManager() { + System.out.println("当前 CacheManager 类:" + cacheManager.getClass()); + System.out.println(cacheManager.getCacheNames()); + } + + /** + * 测试@Cacheable + */ + public void testFindUser() throws InterruptedException { + // 设置查询条件 + User user1 = new User(1L, null); + User user2 = new User(2L, null); + User user3 = new User(3L, null); + User user4 = new User(3L, null); + + System.out.println("第一次查询"); + System.out.println(userService.findUser(user1)); + System.out.println(userService.findUser(user2)); + System.out.println(userService.findUser(user3)); + System.out.println(userService.findUser(user4)); + + // 如果缓存有效,应该不会打印 查找数据库 id = %d 成功 这样的信息 + System.out.println("\n第二次查询"); + System.out.println(userService.findUser(user1)); + System.out.println(userService.findUser(user2)); + System.out.println(userService.findUser(user3)); + System.out.println(userService.findUser(user4)); + + // 在classpath:ehcache/ehcache.xml中,设置了userCache的缓存时间为3000 ms, 这里设置等待 + Thread.sleep(3000); + + System.out.println("\n缓存过期,再次查询"); + System.out.println(userService.findUser(user1)); + System.out.println(userService.findUser(user2)); + System.out.println(userService.findUser(user3)); + } + + /** + * 测试@Cacheable设置Spring SpEL条件限制 + */ + public void testFindUserInLimit() throws InterruptedException { + // 设置查询条件 + User user1 = new User(1L, null); + User user2 = new User(2L, null); + User user3 = new User(3L, null); + + System.out.println("第一次查询user info"); + System.out.println(userService.findUserInLimit(user1)); + System.out.println(userService.findUserInLimit(user2)); + System.out.println(userService.findUserInLimit(user3)); + + System.out.println("\n第二次查询user info"); + System.out.println(userService.findUserInLimit(user1)); + System.out.println(userService.findUserInLimit(user2)); + System.out.println(userService.findUserInLimit(user3)); // 超过限制条件,不会从缓存中读数据 + + // 在classpath:ehcache/ehcache.xml中,设置了userCache的缓存时间为3000 ms, 这里设置等待 + Thread.sleep(3000); + + System.out.println("\n缓存过期,再次查询"); + System.out.println(userService.findUserInLimit(user1)); + System.out.println(userService.findUserInLimit(user2)); + System.out.println(userService.findUserInLimit(user3)); + } + + /** + * 测试@CachePut + */ + public void testUpdateUser() { + // 设置查询条件 + User user1 = new User(2L, null); + User user2 = new User(2L, null); + + System.out.println(userService.findUser(user1)); + System.out.println(userService.findUser(user2)); + userService.updateUser(new User(2L, "尼古拉斯.赵四")); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + System.out.println(userService.findUser(user1)); + System.out.println(userService.findUser(user2)); + } + + /** + * 测试@CacheEvict删除指定缓存 + */ + public void testRemoveUser() { + // 设置查询条件 + User user1 = new User(1L, null); + + System.out.println("数据删除前:"); + System.out.println(userService.findUser(user1)); + + userService.removeUser(user1); + System.out.println("数据删除后:"); + System.out.println(userService.findUser(user1)); + } + + /** + * 测试@CacheEvict删除所有缓存 + */ + public void testClear() { + System.out.println("数据清空前:"); + System.out.println(userService.findUser(new User(1L, null))); + System.out.println(userService.findUser(new User(2L, null))); + System.out.println(userService.findUser(new User(3L, null))); + + userService.clear(); + System.out.println("\n数据清空后:"); + System.out.println(userService.findUser(new User(1L, null))); + System.out.println(userService.findUser(new User(2L, null))); + System.out.println(userService.findUser(new User(3L, null))); + } + +} diff --git a/codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/spring/SpringCaffeineCacheTest.java b/codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/spring/SpringCaffeineCacheTest.java new file mode 100644 index 00000000..ba1445ee --- /dev/null +++ b/codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/spring/SpringCaffeineCacheTest.java @@ -0,0 +1,72 @@ +package io.github.dunwu.javatech.cache.spring; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +/** + * 使用 Caffeine 作为 Spring 缓存测试 + *

+ * 配置内容见:spring/spring-caffeine.xml + * + * @author Zhang Peng + * @since 2019-09-04 + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations = { "classpath:spring/spring-caffeine.xml" }) +public class SpringCaffeineCacheTest { + + @Autowired + private SpringCacheDemo springCacheDemo; + + /** + * 测试当前真实工作的 CacheManager 是什么 + */ + @Test + public void getCacheManager() { + springCacheDemo.getCacheManager(); + } + + /** + * 测试@Cacheable + */ + @Test + public void testFindUser() throws InterruptedException { + springCacheDemo.testFindUser(); + } + + /** + * 测试@Cacheable设置Spring SpEL条件限制 + */ + @Test + public void testFindUserInLimit() throws InterruptedException { + springCacheDemo.testFindUserInLimit(); + } + + /** + * 测试@CachePut + */ + @Test + public void testUpdateUser() { + springCacheDemo.testUpdateUser(); + } + + /** + * 测试@CacheEvict删除指定缓存 + */ + @Test + public void testRemoveUser() { + springCacheDemo.testRemoveUser(); + } + + /** + * 测试@CacheEvict删除所有缓存 + */ + @Test + public void testClear() { + springCacheDemo.testClear(); + } + +} diff --git a/codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/spring/SpringConcurrentHashMapCacheTest.java b/codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/spring/SpringConcurrentHashMapCacheTest.java new file mode 100644 index 00000000..d63d03d1 --- /dev/null +++ b/codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/spring/SpringConcurrentHashMapCacheTest.java @@ -0,0 +1,72 @@ +package io.github.dunwu.javatech.cache.spring; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +/** + * 使用 ConcurrentHashMap 作为 Spring 缓存测试 + *

+ * 配置内容见:spring/spring-hashmap.xml + * + * @author Zhang Peng + * @since 2019-09-04 + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations = { "classpath:spring/spring-hashmap.xml" }) +public class SpringConcurrentHashMapCacheTest { + + @Autowired + private SpringCacheDemo springCacheDemo; + + /** + * 测试当前真实工作的 CacheManager 是什么 + */ + @Test + public void getCacheManager() { + springCacheDemo.getCacheManager(); + } + + /** + * 测试@Cacheable + */ + @Test + public void testFindUser() throws InterruptedException { + springCacheDemo.testFindUser(); + } + + /** + * 测试@Cacheable设置Spring SpEL条件限制 + */ + @Test + public void testFindUserInLimit() throws InterruptedException { + springCacheDemo.testFindUserInLimit(); + } + + /** + * 测试@CachePut + */ + @Test + public void testUpdateUser() { + springCacheDemo.testUpdateUser(); + } + + /** + * 测试@CacheEvict删除指定缓存 + */ + @Test + public void testRemoveUser() { + springCacheDemo.testRemoveUser(); + } + + /** + * 测试@CacheEvict删除所有缓存 + */ + @Test + public void testClear() { + springCacheDemo.testClear(); + } + +} diff --git a/codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/spring/SpringEhcacheCacheTest.java b/codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/spring/SpringEhcacheCacheTest.java new file mode 100644 index 00000000..d39e9d86 --- /dev/null +++ b/codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/spring/SpringEhcacheCacheTest.java @@ -0,0 +1,72 @@ +package io.github.dunwu.javatech.cache.spring; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +/** + * 使用 Ehcache 作为 Spring 缓存测试 + *

+ * 配置内容见:spring/spring-ehcache.xml + * + * @author Zhang Peng + * @since 2019-09-04 + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations = { "classpath:spring/spring-ehcache.xml" }) +public class SpringEhcacheCacheTest { + + @Autowired + private SpringCacheDemo springCacheDemo; + + /** + * 测试当前真实工作的 CacheManager 是什么 + */ + @Test + public void getCacheManager() { + springCacheDemo.getCacheManager(); + } + + /** + * 测试@Cacheable + */ + @Test + public void testFindUser() throws InterruptedException { + springCacheDemo.testFindUser(); + } + + /** + * 测试@Cacheable设置Spring SpEL条件限制 + */ + @Test + public void testFindUserInLimit() throws InterruptedException { + springCacheDemo.testFindUserInLimit(); + } + + /** + * 测试@CachePut + */ + @Test + public void testUpdateUser() { + springCacheDemo.testUpdateUser(); + } + + /** + * 测试@CacheEvict删除指定缓存 + */ + @Test + public void testRemoveUser() { + springCacheDemo.testRemoveUser(); + } + + /** + * 测试@CacheEvict删除所有缓存 + */ + @Test + public void testClear() { + springCacheDemo.testClear(); + } + +} diff --git a/codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/spring/UserService.java b/codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/spring/UserService.java new file mode 100644 index 00000000..588b6d27 --- /dev/null +++ b/codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/spring/UserService.java @@ -0,0 +1,87 @@ +package io.github.dunwu.javatech.cache.spring; + +import io.github.dunwu.javatech.data.User; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; + +import java.util.concurrent.ConcurrentHashMap; + +@Service +public class UserService { + + private ConcurrentHashMap map; + + public UserService() { + // 模拟应用启动时加载缓存 + map = new ConcurrentHashMap<>(); + User user1 = new User(1L, "张三"); + User user2 = new User(2L, "赵四"); + User user3 = new User(3L, "王五"); + map.put(user1.getId(), user1); + map.put(user2.getId(), user2); + map.put(user3.getId(), user3); + } + + @Cacheable(value = "users", key = "#user.id") + public User findUser(User user) { + return findUserInDb(user.getId()); + } + + /** + * 模拟数据库查询操作 + */ + private User findUserInDb(Long id) { + User user = map.get(id); + if (user != null) { + System.out.println("查找数据库 id = " + id + " 成功"); + return user; + } + return null; + } + + @Cacheable(value = "users", condition = "#user.getId() <= 2") + public User findUserInLimit(User user) { + return findUserInDb(user.getId()); + } + + @CachePut(value = "users", key = "#user.getId()") + public void updateUser(User user) { + updateUserInDb(user); + } + + /** + * 模拟数据库更新操作 + */ + private void updateUserInDb(User user) { + User old = map.get(user.getId()); + if (old != null) { + System.out.println("更新数据库" + old + " -> " + user); + old.setName(user.getName()); + } + } + + @CacheEvict(value = "users", key = "#user.getId()") + public void removeUser(User user) { + removeUserInDb(user.getId()); + } + + /** + * 模拟数据库删除操作 + */ + private void removeUserInDb(Long id) { + map.remove(id); + System.out.println("从数据库移除 id = " + id + " 的数据"); + } + + @CacheEvict(value = "users", allEntries = true) + public void clear() { + removeAllInDb(); + } + + private void removeAllInDb() { + map.clear(); + } + +} diff --git a/codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/spring/package-info.java b/codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/spring/package-info.java new file mode 100644 index 00000000..21c5686c --- /dev/null +++ b/codes/javatech/javatech-cache/src/test/java/io/github/dunwu/javatech/cache/spring/package-info.java @@ -0,0 +1,7 @@ +/** + * Spring 集成各类缓存库测试 + * + * @author Zhang Peng + * @since 2020-07-10 + */ +package io.github.dunwu.javatech.cache.spring; diff --git a/codes/javatech/javatech-cache/src/test/resources/ehcache/ehcache.xml b/codes/javatech/javatech-cache/src/test/resources/ehcache/ehcache.xml new file mode 100644 index 00000000..9bf4c661 --- /dev/null +++ b/codes/javatech/javatech-cache/src/test/resources/ehcache/ehcache.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + diff --git a/codes/javatech/javatech-cache/src/test/resources/ehcache/ehcache1.xml b/codes/javatech/javatech-cache/src/test/resources/ehcache/ehcache1.xml new file mode 100644 index 00000000..690eebbd --- /dev/null +++ b/codes/javatech/javatech-cache/src/test/resources/ehcache/ehcache1.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + diff --git a/codes/javatech/javatech-cache/src/test/resources/ehcache/ehcache2.xml b/codes/javatech/javatech-cache/src/test/resources/ehcache/ehcache2.xml new file mode 100644 index 00000000..bb41206a --- /dev/null +++ b/codes/javatech/javatech-cache/src/test/resources/ehcache/ehcache2.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + diff --git a/codes/javatech/javatech-cache/src/test/resources/spring/spring-caffeine.xml b/codes/javatech/javatech-cache/src/test/resources/spring/spring-caffeine.xml new file mode 100644 index 00000000..1570bba2 --- /dev/null +++ b/codes/javatech/javatech-cache/src/test/resources/spring/spring-caffeine.xml @@ -0,0 +1,19 @@ + + + + 使用 Caffeine 作为 Spring 缓存 + + + + + + + + + diff --git a/codes/javatech/javatech-cache/src/test/resources/spring/spring-ehcache.xml b/codes/javatech/javatech-cache/src/test/resources/spring/spring-ehcache.xml new file mode 100644 index 00000000..81af38dd --- /dev/null +++ b/codes/javatech/javatech-cache/src/test/resources/spring/spring-ehcache.xml @@ -0,0 +1,25 @@ + + + + 使用 EhCache 作为 Spring 缓存 + + + + + + + + + + + + + + + diff --git a/codes/javatech/javatech-cache/src/test/resources/spring/spring-hashmap.xml b/codes/javatech/javatech-cache/src/test/resources/spring/spring-hashmap.xml new file mode 100644 index 00000000..1620e0fe --- /dev/null +++ b/codes/javatech/javatech-cache/src/test/resources/spring/spring-hashmap.xml @@ -0,0 +1,26 @@ + + + + 使用 ConcurrentHashMap 作为 Spring 缓存 + + + + + + + + + + + + + + + + diff --git a/codes/javatech/javatech-io/javatech-bean/README.md b/codes/javatech/javatech-io/javatech-bean/README.md new file mode 100644 index 00000000..3b9709fa --- /dev/null +++ b/codes/javatech/javatech-io/javatech-bean/README.md @@ -0,0 +1,373 @@ +# Lombok 应用指南 + + + +- [1. Lombok 简介](#1-lombok-简介) +- [2. Lombok 安装](#2-lombok-安装) +- [3. Lombok 使用](#3-lombok-使用) + - [3.1. @Getter and @Setter](#31-getter-and-setter) + - [3.2. @NonNull](#32-nonnull) + - [3.3. @ToString](#33-tostring) + - [3.4. @EqualsAndHashCode](#34-equalsandhashcode) + - [3.5. @Data](#35-data) + - [3.6. @Cleanup](#36-cleanup) + - [3.7. @Synchronized](#37-synchronized) + - [3.8. @SneakyThrows](#38-sneakythrows) + - [3.9. 示例源码](#39-示例源码) +- [4. 参考资料](#4-参考资料) + + + +## 1. Lombok 简介 + +Lombok 是一种 Java 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注释实现这一目的。通过在开发环境中实现 Lombok,开发人员可以节省构建诸如 `hashCode()` 和 `equals()` 、`getter / setter` 这样的方法以及以往用来分类各种 accessor 和 mutator 的大量时间。 + +## 2. Lombok 安装 + +使 IntelliJ IDEA 支持 Lombok 方式如下: + +- **Intellij 设置支持注解处理** + - 点击 File > Settings > Build > Annotation Processors + - 勾选 Enable annotation processing +- **安装插件** + - 点击 Settings > Plugins > Browse repositories + - 查找 Lombok Plugin 并进行安装 + - 重启 IntelliJ IDEA +- **将 lombok 添加到 pom 文件** + +```xml + + org.projectlombok + lombok + 1.16.8 + +``` + +## 3. Lombok 使用 + +Lombok 提供注解 API 来修饰指定的类: + +### 3.1. @Getter and @Setter + +[@Getter and @Setter](http://jnb.ociweb.com/jnb/jnbJan2010.html#gettersetter) Lombok 代码: + +```java +@Getter @Setter private boolean employed = true; +@Setter(AccessLevel.PROTECTED) private String name; +``` + +等价于 Java 源码: + +```java +private boolean employed = true; +private String name; + +public boolean isEmployed() { + return employed; +} + +public void setEmployed(final boolean employed) { + this.employed = employed; +} + +protected void setName(final String name) { + this.name = name; +} +``` + +### 3.2. @NonNull + +[@NonNull](http://jnb.ociweb.com/jnb/jnbJan2010.html#nonnull) Lombok 代码: + +```java +@Getter @Setter @NonNull +private List members; +``` + +等价于 Java 源码: + +```java +@NonNull +private List members; + +public Family(@NonNull final List members) { + if (members == null) throw new java.lang.NullPointerException("members"); + this.members = members; +} + +@NonNull +public List getMembers() { + return members; +} + +public void setMembers(@NonNull final List members) { + if (members == null) throw new java.lang.NullPointerException("members"); + this.members = members; +} +``` + +### 3.3. @ToString + +[@ToString](http://jnb.ociweb.com/jnb/jnbJan2010.html#tostring) Lombok 代码: + +```java +@ToString(callSuper=true,exclude="someExcludedField") +public class Foo extends Bar { + private boolean someBoolean = true; + private String someStringField; + private float someExcludedField; +} +``` + +等价于 Java 源码: + +```java +public class Foo extends Bar { + private boolean someBoolean = true; + private String someStringField; + private float someExcludedField; + + @java.lang.Override + public java.lang.String toString() { + return "Foo(super=" + super.toString() + + ", someBoolean=" + someBoolean + + ", someStringField=" + someStringField + ")"; + } +} +``` + +### 3.4. @EqualsAndHashCode + +[@EqualsAndHashCode](http://jnb.ociweb.com/jnb/jnbJan2010.html#equals) Lombok 代码: + +```java +@EqualsAndHashCode(callSuper=true,exclude={"address","city","state","zip"}) +public class Person extends SentientBeing { + enum Gender { Male, Female } + + @NonNull private String name; + @NonNull private Gender gender; + + private String ssn; + private String address; + private String city; + private String state; + private String zip; +} +``` + +等价于 Java 源码: + +```java +public class Person extends SentientBeing { + + enum Gender { + /*public static final*/ Male /* = new Gender() */, + /*public static final*/ Female /* = new Gender() */; + } + @NonNull + private String name; + @NonNull + private Gender gender; + private String ssn; + private String address; + private String city; + private String state; + private String zip; + + @java.lang.Override + public boolean equals(final java.lang.Object o) { + if (o == this) return true; + if (o == null) return false; + if (o.getClass() != this.getClass()) return false; + if (!super.equals(o)) return false; + final Person other = (Person)o; + if (this.name == null ? other.name != null : !this.name.equals(other.name)) return false; + if (this.gender == null ? other.gender != null : !this.gender.equals(other.gender)) return false; + if (this.ssn == null ? other.ssn != null : !this.ssn.equals(other.ssn)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + final int PRIME = 31; + int result = 1; + result = result * PRIME + super.hashCode(); + result = result * PRIME + (this.name == null ? 0 : this.name.hashCode()); + result = result * PRIME + (this.gender == null ? 0 : this.gender.hashCode()); + result = result * PRIME + (this.ssn == null ? 0 : this.ssn.hashCode()); + return result; + } +} +``` + +### 3.5. @Data + +[@Data](http://jnb.ociweb.com/jnb/jnbJan2010.html#data) Lombok 代码: + +```java +@Data(staticConstructor="of") +public class Company { + private final Person founder; + private String name; + private List employees; +} +``` + +等价于 Java 源码: + +```java +public class Company { + private final Person founder; + private String name; + private List employees; + + private Company(final Person founder) { + this.founder = founder; + } + + public static Company of(final Person founder) { + return new Company(founder); + } + + public Person getFounder() { + return founder; + } + + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } + + public List getEmployees() { + return employees; + } + + public void setEmployees(final List employees) { + this.employees = employees; + } + + @java.lang.Override + public boolean equals(final java.lang.Object o) { + if (o == this) return true; + if (o == null) return false; + if (o.getClass() != this.getClass()) return false; + final Company other = (Company)o; + if (this.founder == null ? other.founder != null : !this.founder.equals(other.founder)) return false; + if (this.name == null ? other.name != null : !this.name.equals(other.name)) return false; + if (this.employees == null ? other.employees != null : !this.employees.equals(other.employees)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + final int PRIME = 31; + int result = 1; + result = result * PRIME + (this.founder == null ? 0 : this.founder.hashCode()); + result = result * PRIME + (this.name == null ? 0 : this.name.hashCode()); + result = result * PRIME + (this.employees == null ? 0 : this.employees.hashCode()); + return result; + } + + @java.lang.Override + public java.lang.String toString() { + return "Company(founder=" + founder + ", name=" + name + ", employees=" + employees + ")"; + } +} +``` + +### 3.6. @Cleanup + +[@Cleanup](http://jnb.ociweb.com/jnb/jnbJan2010.html#cleanup) Lombok 代码: + +```java +public void testCleanUp() { + try { + @Cleanup ByteArrayOutputStream baos = new ByteArrayOutputStream(); + baos.write(new byte[] {'Y','e','s'}); + System.out.println(baos.toString()); + } catch (IOException e) { + e.printStackTrace(); + } +} +``` + +等价于 Java 源码: + +```java +public void testCleanUp() { + try { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try { + baos.write(new byte[]{'Y', 'e', 's'}); + System.out.println(baos.toString()); + } finally { + baos.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } +} +``` + +### 3.7. @Synchronized + +[@Synchronized](http://jnb.ociweb.com/jnb/jnbJan2010.html#synchronized) Lombok 代码: + +```java +private DateFormat format = new SimpleDateFormat("MM-dd-YYYY"); + +@Synchronized +public String synchronizedFormat(Date date) { + return format.format(date); +} +``` + +等价于 Java 源码: + +```java +private final java.lang.Object $lock = new java.lang.Object[0]; +private DateFormat format = new SimpleDateFormat("MM-dd-YYYY"); + +public String synchronizedFormat(Date date) { + synchronized ($lock) { + return format.format(date); + } +} +``` + +### 3.8. @SneakyThrows + +[@SneakyThrows](http://jnb.ociweb.com/jnb/jnbJan2010.html#sneaky) Lombok 代码: + +```java +@SneakyThrows +public void testSneakyThrows() { + throw new IllegalAccessException(); +} +``` + +等价于 Java 源码: + +```java +public void testSneakyThrows() { + try { + throw new IllegalAccessException(); + } catch (java.lang.Throwable $ex) { + throw lombok.Lombok.sneakyThrow($ex); + } +} +``` + +### 3.9. 示例源码 + +> 示例源码:[javalib-bean](https://github.com/dunwu/java-tutorial/tree/master/javalib-bean) + +## 4. 参考资料 + +- [Lombok 官网](https://projectlombok.org/) +- [Lombok Github](https://github.com/rzwitserloot/lombok) +- [IntelliJ IDEA - Lombok Plugin](http://plugins.jetbrains.com/plugin/6317-lombok-plugin) diff --git a/codes/javatech/javatech-io/javatech-bean/pom.xml b/codes/javatech/javatech-io/javatech-bean/pom.xml new file mode 100644 index 00000000..63f2dbe8 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-bean/pom.xml @@ -0,0 +1,53 @@ + + + 4.0.0 + + + io.github.dunwu + dunwu-parent + 1.0.7 + + + io.github.dunwu.javatech + javatech-bean + 1.0.0 + jar + Java IO Bean 操作示例 + + + + cn.hutool + hutool-all + + + org.projectlombok + lombok + + + com.fasterxml.jackson.core + jackson-databind + + + ch.qos.logback + logback-classic + + + org.junit.jupiter + junit-jupiter + test + + + org.assertj + assertj-core + test + + + org.mockito + mockito-core + test + + + + diff --git a/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/BuilderDemo01.java b/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/BuilderDemo01.java new file mode 100644 index 00000000..9e4104fe --- /dev/null +++ b/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/BuilderDemo01.java @@ -0,0 +1,28 @@ +package io.github.dunwu.javatech.bean.lombok; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.Builder; +import lombok.Data; + +/** + * 使用 @Builder 不当导致 json 反序列化失败 + * + * @author Zhang Peng + * @date 2020/12/3 + */ +@Data +@Builder +public class BuilderDemo01 { + + private String name; + + public static void main(String[] args) throws JsonProcessingException { + BuilderDemo01 demo01 = BuilderDemo01.builder().name("demo01").build(); + ObjectMapper mapper = new ObjectMapper(); + String json = mapper.writeValueAsString(demo01); + BuilderDemo01 expectDemo01 = mapper.readValue(json, BuilderDemo01.class); + System.out.println(expectDemo01.toString()); + } + +} diff --git a/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/BuilderDemo02.java b/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/BuilderDemo02.java new file mode 100644 index 00000000..0820b063 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/BuilderDemo02.java @@ -0,0 +1,33 @@ +package io.github.dunwu.javatech.bean.lombok; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 修正 {@link BuilderDemo01} 使用不当的问题 + * + * @author Zhang Peng + * @date 2020/12/3 + * @see BuilderDemo01 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BuilderDemo02 { + + private String name; + + public static void main(String[] args) throws JsonProcessingException { + BuilderDemo02 demo02 = BuilderDemo02.builder().name("demo01").build(); + ObjectMapper mapper = new ObjectMapper(); + String json = mapper.writeValueAsString(demo02); + BuilderDemo02 expectDemo02 = mapper.readValue(json, BuilderDemo02.class); + System.out.println(expectDemo02.toString()); + } + +} diff --git a/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/DataDemo.java b/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/DataDemo.java new file mode 100644 index 00000000..a35811c0 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/DataDemo.java @@ -0,0 +1,25 @@ +package io.github.dunwu.javatech.bean.lombok; + +import lombok.Data; +import lombok.ToString; + +import java.util.List; + +/** + * @Data 示例 + * + * @author Zhang Peng + * @see @Data + * @since 2019-11-22 + */ +@Data(staticConstructor = "of") +@ToString +public class DataDemo { + + private final Person founder; + + protected List employees; + + private String name; + +} diff --git a/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/EqualsAndHashCodeDemo.java b/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/EqualsAndHashCodeDemo.java new file mode 100644 index 00000000..c342ab4d --- /dev/null +++ b/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/EqualsAndHashCodeDemo.java @@ -0,0 +1,55 @@ +package io.github.dunwu.javatech.bean.lombok; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NonNull; + +/** + * @EqualsAndHashCode 示例 + * + * @author Zhang Peng + * @see @EqualsAndHashCode + * @since 2019-11-22 + */ +@Data +@EqualsAndHashCode(callSuper = true, exclude = { "address", "city", "state", "zip" }) +public class EqualsAndHashCodeDemo extends Person { + + @NonNull + private String name; + + @NonNull + private Gender gender; + + private String ssn; + + private String address; + + private String city; + + private String state; + + private String zip; + + public EqualsAndHashCodeDemo(@NonNull String name, @NonNull Gender gender) { + this.name = name; + this.gender = gender; + } + + public EqualsAndHashCodeDemo(@NonNull String name, @NonNull Gender gender, + String ssn, String address, String city, String state, String zip) { + this.name = name; + this.gender = gender; + this.ssn = ssn; + this.address = address; + this.city = city; + this.state = state; + this.zip = zip; + } + + public enum Gender { + Male, + Female + } + +} diff --git a/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/GetterAndSetterDemo.java b/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/GetterAndSetterDemo.java new file mode 100644 index 00000000..e4365b6e --- /dev/null +++ b/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/GetterAndSetterDemo.java @@ -0,0 +1,23 @@ +package io.github.dunwu.javatech.bean.lombok; + +import lombok.AccessLevel; +import lombok.Getter; +import lombok.Setter; + +/** + * @Getter@Setter 示例 + * + * @author Zhang Peng + * @see @Getter and @Setter + * @since 2019-11-22 + */ +public class GetterAndSetterDemo { + + @Getter + @Setter + private boolean employed = true; + + @Setter(AccessLevel.PROTECTED) + private String name; + +} diff --git a/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/NonNullDemo.java b/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/NonNullDemo.java new file mode 100644 index 00000000..266e3ad8 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/NonNullDemo.java @@ -0,0 +1,23 @@ +package io.github.dunwu.javatech.bean.lombok; + +import lombok.Getter; +import lombok.NonNull; +import lombok.Setter; + +import java.util.List; + +/** + * @NonNull 示例 + * + * @author Zhang Peng + * @see @NonNull + * @since 2019-11-22 + */ +public class NonNullDemo { + + @Getter + @Setter + @NonNull + private List members; + +} diff --git a/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/Person.java b/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/Person.java new file mode 100644 index 00000000..30f1519c --- /dev/null +++ b/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/Person.java @@ -0,0 +1,26 @@ +package io.github.dunwu.javatech.bean.lombok; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +/** + * @Data@ToString@EqualsAndHashCode 示例 + * + * @author Zhang Peng + * @see @Data + * 、@ToString@EqualsAndHashCode + * @since 2019-11-22 + */ +@Data +@ToString(exclude = "age") +@EqualsAndHashCode(exclude = { "age", "sex" }) +public class Person { + + protected String name; + + protected Integer age; + + protected String sex; + +} diff --git a/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/ToStringDemo.java b/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/ToStringDemo.java new file mode 100644 index 00000000..bd083e91 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/ToStringDemo.java @@ -0,0 +1,24 @@ +package io.github.dunwu.javatech.bean.lombok; + +import lombok.ToString; + +/** + * @author Zhang Peng + * @since 2019-11-22 + */ +@ToString(callSuper = true, exclude = "someExcludedField") +public class ToStringDemo { + + private boolean someBoolean = true; + + private String someStringField; + + private float someExcludedField; + + public ToStringDemo(boolean someBoolean, String someStringField, float someExcludedField) { + this.someBoolean = someBoolean; + this.someStringField = someStringField; + this.someExcludedField = someExcludedField; + } + +} diff --git a/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/User.java b/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/User.java new file mode 100644 index 00000000..093b010a --- /dev/null +++ b/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/User.java @@ -0,0 +1,24 @@ +package io.github.dunwu.javatech.bean.lombok; + +import lombok.Data; +import lombok.ToString; + +/** + * @Data@ToString@EqualsAndHashCode 示例 + * + * @author Zhang Peng + * @see @Data + * 、@ToString@EqualsAndHashCode + * @since 2019-11-22 + */ +@Data +@ToString +public class User { + + private String name; + + private Integer age; + + private String sex; + +} diff --git a/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/package-info.java b/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/package-info.java new file mode 100644 index 00000000..c0f2a966 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-bean/src/main/java/io/github/dunwu/javatech/bean/lombok/package-info.java @@ -0,0 +1,8 @@ +/** + * 本 package 下所有代码均为 Lombok 示例 + * + * @author Zhang Peng + * @see Reducing Boilerplate Code with Project Lombok + * @since 2019-11-22 + */ +package io.github.dunwu.javatech.bean.lombok; diff --git a/codes/javatech/javatech-io/javatech-bean/src/test/java/io/github/dunwu/javatech/bean/BeanConvertTest.java b/codes/javatech/javatech-io/javatech-bean/src/test/java/io/github/dunwu/javatech/bean/BeanConvertTest.java new file mode 100644 index 00000000..e1bc3fd7 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-bean/src/test/java/io/github/dunwu/javatech/bean/BeanConvertTest.java @@ -0,0 +1,103 @@ +package io.github.dunwu.javatech.bean; + +import cn.hutool.core.bean.BeanUtil; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +/** + * @author Zhang Peng + * @since 2020-05-15 + */ +public class BeanConvertTest { + + @Test + public void convertTest() { + Person person = new Person(); + person.setName("Jack").setAge(20).setSex(Sex.MALE); + // Bean 转换 + User user = BeanUtil.toBean(person, User.class); + Assertions.assertEquals(person.getName(), user.getName()); + Assertions.assertEquals(person.getAge(), user.getAge()); + Assertions.assertEquals(person.getSex().name(), user.getSex()); + } + + public enum Sex { + MALE, + FEMALE + } + + static class User { + + private String name; + + private Integer age; + + private String sex; + + public String getName() { + return name; + } + + public User setName(String name) { + this.name = name; + return this; + } + + public Integer getAge() { + return age; + } + + public User setAge(Integer age) { + this.age = age; + return this; + } + + public String getSex() { + return sex; + } + + public User setSex(String sex) { + this.sex = sex; + return this; + } + + } + + static class Person { + + private String name; + + private Integer age; + + private Sex sex; + + public String getName() { + return name; + } + + public Person setName(String name) { + this.name = name; + return this; + } + + public Integer getAge() { + return age; + } + + public Person setAge(Integer age) { + this.age = age; + return this; + } + + public Sex getSex() { + return sex; + } + + public Person setSex(Sex sex) { + this.sex = sex; + return this; + } + + } + +} diff --git a/codes/javatech/javatech-io/javatech-bean/src/test/java/io/github/dunwu/javatech/bean/lombok/LombokTest.java b/codes/javatech/javatech-io/javatech-bean/src/test/java/io/github/dunwu/javatech/bean/lombok/LombokTest.java new file mode 100644 index 00000000..f0988e7f --- /dev/null +++ b/codes/javatech/javatech-io/javatech-bean/src/test/java/io/github/dunwu/javatech/bean/lombok/LombokTest.java @@ -0,0 +1,142 @@ +package io.github.dunwu.javatech.bean.lombok; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.Cleanup; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * Lombok 单元测试 + * + * @author Zhang Peng + * @see Reducing Boilerplate Code with Project Lombok + */ +public class LombokTest { + + @Test + @DisplayName("测试 @Getter / @Setter") + public void testGetterAndSetterDemo() { + GetterAndSetterDemo demo = new GetterAndSetterDemo(); + demo.setEmployed(true); + demo.setName("xxx"); + Assertions.assertTrue(demo.isEmployed()); + } + + @Test + @DisplayName("测试 @ToString") + public void testToStringDemo() { + ToStringDemo demo = new ToStringDemo(true, "abc", 0.5f); + System.out.println(demo.toString()); + + String str = demo.toString(); + Assertions.assertTrue(str.contains("someBoolean=true, someStringField=abc")); + + Person person = new Person(); + person.setName("张三"); + person.setAge(20); + person.setSex("男"); + System.out.println(person.toString()); + Assertions.assertEquals("Person(name=张三, sex=男)", person.toString()); + } + + @Test + @DisplayName("测试 @EqualsAndHashCode") + public void testEqualsAndHashCodeDemo() { + EqualsAndHashCodeDemo demo1 = + new EqualsAndHashCodeDemo("name1", EqualsAndHashCodeDemo.Gender.Female, "ssn", "xxx", "xxx", "xxx", "xxx"); + EqualsAndHashCodeDemo demo2 = + new EqualsAndHashCodeDemo("name1", EqualsAndHashCodeDemo.Gender.Female, "ssn", "ooo", "ooo", "ooo", "ooo"); + Assertions.assertEquals(demo1, demo2); + + Person person = new Person(); + person.setName("张三"); + person.setAge(20); + person.setSex("男"); + + Person person2 = new Person(); + person2.setName("张三"); + person2.setAge(18); + person2.setSex("男"); + + Person person3 = new Person(); + person3.setName("李四"); + person3.setAge(20); + person3.setSex("男"); + + Assertions.assertEquals(person2, person); + Assertions.assertNotEquals(person3, person); + } + + @Test + @DisplayName("测试 @Data") + public void testDataDemo() { + Person huangshiren = new Person(); + huangshiren.setName("黄世仁"); + huangshiren.setAge(30); + huangshiren.setSex("男"); + Person yangbailao = new Person(); + yangbailao.setName("杨白劳"); + yangbailao.setAge(50); + yangbailao.setSex("男"); + Person xiaobaicai = new Person(); + xiaobaicai.setName("小白菜"); + xiaobaicai.setAge(20); + xiaobaicai.setSex("女"); + + List personList = new ArrayList<>(); + personList.add(yangbailao); + personList.add(xiaobaicai); + + DataDemo demo = DataDemo.of(huangshiren); + demo.setName("黑心农产品公司"); + demo.setEmployees(personList); + Assertions.assertEquals("黑心农产品公司", demo.getName()); + Assertions.assertEquals(huangshiren, demo.getFounder()); + + System.out.println("公司名:" + demo.getName()); + System.out.println("创始人:" + demo.getFounder()); + System.out.println("员工信息"); + + List employees = demo.getEmployees(); + Assertions.assertTrue(employees.containsAll(Arrays.asList(yangbailao, xiaobaicai))); + demo.getEmployees().forEach(person -> { + System.out.println(person.toString()); + }); + } + + @Test + @DisplayName("测试 @Cleanup") + public void testCleanUp() { + try { + @Cleanup + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + baos.write(new byte[] { 'Y', 'e', 's' }); + System.out.println(baos.toString()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Test + @DisplayName("测试 @Builder") + public void testBuilder() { + BuilderDemo01 demo01 = BuilderDemo01.builder().name("demo01").build(); + ObjectMapper mapper = new ObjectMapper(); + String json = null; + try { + json = mapper.writeValueAsString(demo01); + BuilderDemo01 expectDemo01 = mapper.readValue(json, BuilderDemo01.class); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + } + +} diff --git a/codes/javatech/javatech-io/javatech-file-parser/pom.xml b/codes/javatech/javatech-io/javatech-file-parser/pom.xml new file mode 100644 index 00000000..5dbe3e7f --- /dev/null +++ b/codes/javatech/javatech-io/javatech-file-parser/pom.xml @@ -0,0 +1,100 @@ + + + 4.0.0 + + + io.github.dunwu + dunwu-parent + 1.0.7 + + + io.github.dunwu.javatech + javatech-file-parser + 1.0.0 + jar + Java IO 文件解析 + + + 4.0.0 + + + + + + org.apache.poi + poi + ${poi.version} + + + org.apache.poi + poi-ooxml + ${poi.version} + + + org.apache.poi + poi-scratchpad + ${poi.version} + + + + + + com.github.promeg + tinypinyin + 2.0.3 + + + com.github.promeg + tinypinyin-lexicons-java-cncity + 2.0.3 + + + + + com.github.javaparser + javaparser-symbol-solver-core + 3.24.0 + + + + cn.hutool + hutool-all + + + org.projectlombok + lombok + + + com.alibaba + easyexcel + 2.2.6 + + + com.alibaba + fastjson + + + org.hibernate.validator + hibernate-validator + 6.0.20.Final + + + + + org.junit.jupiter + junit-jupiter + test + + + junit + junit + test + + + org.assertj + assertj-core + test + + + diff --git a/codes/javatech/javatech-io/javatech-file-parser/src/main/java/io/github/dunwu/javatech/excel/ExcelUtil.java b/codes/javatech/javatech-io/javatech-file-parser/src/main/java/io/github/dunwu/javatech/excel/ExcelUtil.java new file mode 100644 index 00000000..d20095f9 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-file-parser/src/main/java/io/github/dunwu/javatech/excel/ExcelUtil.java @@ -0,0 +1,100 @@ +package io.github.dunwu.javatech.excel; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.alibaba.excel.event.SyncReadListener; +import com.alibaba.excel.read.listener.ReadListener; +import com.alibaba.fastjson.JSON; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author Zhang Peng + * @since 2020-07-01 + */ +public class ExcelUtil { + + private static final Logger LOGGER = LoggerFactory.getLogger(ExcelUtil.class); + + public static List> readAsync(InputStream inputStream) { + List> list = new ArrayList<>(); + EasyExcel.read(inputStream, new NoModelDataListener(list)).sheet().doRead(); + return list; + } + + /** + * 异步方式,根据 InputStream 读取 Excel 内容。 + *

+ * 返回结果为指定的 Class 类型列表 + *

+ * 需要指定读取结束后,负责处理数据的监听器 + *

+ * 注意:Class 类型中不能使用枚举类型 + */ + public static void readAsync(InputStream inputStream, Class clazz, ReadListener listener) { + EasyExcel.read(inputStream, clazz, listener).sheet().doRead(); + } + + /** + * 同步方式,根据 InputStream 读取 Excel 内容。 + *

+ * 返回结果为指定的 Class 类型列表 + *

+ * 注意:Class 类型中不能使用枚举类型 + */ + public static List readSync(InputStream inputStream, Class clazz) { + SyncReadListener listener = new SyncReadListener(); + EasyExcel.read(inputStream, clazz, listener).sheet().doRead(); + List list = listener.getList(); + List dtoList = list.stream().map(i -> (T) i).collect(Collectors.toList()); + System.out.println(dtoList); + return dtoList; + } + + static class NoModelDataListener extends AnalysisEventListener> { + + /** + * 每隔5条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收 + */ + private static final int BATCH_COUNT = 1000; + + List> list; + + public NoModelDataListener(List> list) { + this.list = list; + } + + @Override + public void invoke(Map data, AnalysisContext context) { + LOGGER.info("解析到一条数据:{}", JSON.toJSONString(data)); + list.add(data); + if (list.size() >= BATCH_COUNT) { + saveData(); + list.clear(); + } + } + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + saveData(); + LOGGER.info("所有数据解析完成!"); + } + + /** + * 加上存储数据库 + */ + private void saveData() { + LOGGER.info("{}条数据,开始存储数据库!", list.size()); + LOGGER.info("存储数据库成功!"); + } + + } + +} diff --git a/codes/javatech/javatech-io/javatech-file-parser/src/main/java/io/github/dunwu/javatech/word/WordUtil.java b/codes/javatech/javatech-io/javatech-file-parser/src/main/java/io/github/dunwu/javatech/word/WordUtil.java new file mode 100644 index 00000000..f40a2364 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-file-parser/src/main/java/io/github/dunwu/javatech/word/WordUtil.java @@ -0,0 +1,263 @@ +package io.github.dunwu.javatech.word; + +import org.apache.poi.hpsf.DocumentSummaryInformation; +import org.apache.poi.hpsf.SummaryInformation; +import org.apache.poi.hwpf.HWPFDocument; +import org.apache.poi.ooxml.POIXMLProperties; +import org.apache.poi.xwpf.extractor.XWPFWordExtractor; +import org.apache.poi.xwpf.usermodel.*; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; + +/** + * @author Zhang Peng + * @see https://poi.apache.org/ + * @see https://www.w3cschool.cn/apache_poi_word/apache_poi_word_overview.html + * @since 2018-11-08 + */ +public class WordUtil { + + /** + * 创建空白文档 + * + * @param filename + * @throws IOException + */ + public static void create(String filename) throws IOException { + // Blank Document + XWPFDocument document = new XWPFDocument(); + // Write the Document in file system + FileOutputStream out = new FileOutputStream(new File(filename)); + document.write(out); + out.close(); + System.out.printf("create %s written successully\n", filename); + } + + /** + * 创建 *.docx 文档,包含 content 内容 + * + * @param filename + * @throws IOException + */ + public static void create(String filename, String content) throws IOException { + // Blank Document + XWPFDocument document = new XWPFDocument(); + // Write the Document in file system + FileOutputStream out = new FileOutputStream(new File(filename)); + + // create Paragraph + XWPFParagraph paragraph = document.createParagraph(); + XWPFRun run = paragraph.createRun(); + run.setText(content); + document.write(out); + out.close(); + System.out.printf("create %s written successully\n", filename); + } + + /** + * 创建 *.docx 文档,包含 content 内容,content 内容置于边框中 + * + * @param filename + * @throws IOException + */ + public static void createWithBorders(String filename, String content) throws IOException { + // Blank Document + XWPFDocument document = new XWPFDocument(); + + // Write the Document in file system + FileOutputStream out = new FileOutputStream(new File(filename)); + + // create paragraph + XWPFParagraph paragraph = document.createParagraph(); + + // Set bottom border to paragraph + paragraph.setBorderBottom(Borders.BASIC_BLACK_DASHES); + + // Set left border to paragraph + paragraph.setBorderLeft(Borders.BASIC_BLACK_DASHES); + + // Set right border to paragraph + paragraph.setBorderRight(Borders.BASIC_BLACK_DASHES); + + // Set top border to paragraph + paragraph.setBorderTop(Borders.BASIC_BLACK_DASHES); + + XWPFRun run = paragraph.createRun(); + run.setText(content); + + document.write(out); + out.close(); + System.out.printf("create %s written successully\n", filename); + } + + /** + * 表格 + * + * @param filename + * @throws IOException + */ + public static void createWithTable(String filename) throws IOException { + // Blank Document + XWPFDocument document = new XWPFDocument(); + + // Write the Document in file system + FileOutputStream out = new FileOutputStream(new File(filename)); + + // create table + XWPFTable table = document.createTable(); + // create first row + XWPFTableRow tableRowOne = table.getRow(0); + tableRowOne.getCell(0).setText("col one, row one"); + tableRowOne.addNewTableCell().setText("col two, row one"); + tableRowOne.addNewTableCell().setText("col three, row one"); + // create second row + XWPFTableRow tableRowTwo = table.createRow(); + tableRowTwo.getCell(0).setText("col one, row two"); + tableRowTwo.getCell(1).setText("col two, row two"); + tableRowTwo.getCell(2).setText("col three, row two"); + // create third row + XWPFTableRow tableRowThree = table.createRow(); + tableRowThree.getCell(0).setText("col one, row three"); + tableRowThree.getCell(1).setText("col two, row three"); + tableRowThree.getCell(2).setText("col three, row three"); + + document.write(out); + out.close(); + System.out.printf("create %s written successully\n", filename); + } + + /** + * 字体样式 + * + * @param filename + * @throws IOException + */ + public static void createWithFontStyle(String filename) throws IOException { + // Blank Document + XWPFDocument document = new XWPFDocument(); + + // Write the Document in file system + FileOutputStream out = new FileOutputStream(new File(filename)); + + // create paragraph + XWPFParagraph paragraph = document.createParagraph(); + + // Set Bold an Italic + XWPFRun paragraphOneRunOne = paragraph.createRun(); + paragraphOneRunOne.setBold(true); + paragraphOneRunOne.setItalic(true); + paragraphOneRunOne.setText("Font Style"); + paragraphOneRunOne.addBreak(); + + // Set text Position + XWPFRun paragraphOneRunTwo = paragraph.createRun(); + paragraphOneRunTwo.setText("Font Style two"); + paragraphOneRunTwo.setTextPosition(100); + + // Set Strike through and Font Size and Subscript + XWPFRun paragraphOneRunThree = paragraph.createRun(); + paragraphOneRunThree.setStrike(true); + paragraphOneRunThree.setFontSize(20); + paragraphOneRunThree.setSubscript(VerticalAlign.SUBSCRIPT); + paragraphOneRunThree.setText(" Different Font Styles"); + + document.write(out); + out.close(); + System.out.printf("create %s written successully\n", filename); + } + + /** + * 对齐方式 + * + * @param filename + * @throws IOException + */ + public static void createWithAlign(String filename) throws IOException { + // Blank Document + XWPFDocument document = new XWPFDocument(); + + // Write the Document in file system + FileOutputStream out = new FileOutputStream(new File(filename)); + + // create paragraph + XWPFParagraph paragraph = document.createParagraph(); + + // Set alignment paragraph to RIGHT + paragraph.setAlignment(ParagraphAlignment.RIGHT); + XWPFRun run = paragraph.createRun(); + run.setText("At tutorialspoint.com, we strive hard to " + "provide quality tutorials for self-learning " + + "purpose in the domains of Academics, Information " + + "Technology, Management and Computer Programming " + "Languages."); + + // Create Another paragraph + paragraph = document.createParagraph(); + + // Set alignment paragraph to CENTER + paragraph.setAlignment(ParagraphAlignment.CENTER); + run = paragraph.createRun(); + run.setText("The endeavour started by Mohtashim, an AMU " + + "alumni, who is the founder and the managing director " + + "of Tutorials Point (I) Pvt. Ltd. He came up with the " + + "website tutorialspoint.com in year 2006 with the help" + + "of handpicked freelancers, with an array of tutorials" + " for computer programming languages. "); + document.write(out); + out.close(); + System.out.printf("create %s written successully\n", filename); + } + + /** + * 文本提取 + * + * @param filename + * @throws IOException + */ + public static void extractor(String filename) throws IOException { + XWPFDocument docx = new XWPFDocument(new FileInputStream(filename)); + // using XWPFWordExtractor Class + XWPFWordExtractor we = new XWPFWordExtractor(docx); + System.out.println(we.getText()); + } + + public static void setDocxProperties(String filename) throws IOException { + FileInputStream fis = new FileInputStream(new File(filename)); + XWPFDocument doc = new XWPFDocument(fis); + + POIXMLProperties properties = doc.getProperties(); + POIXMLProperties.CoreProperties coreProperties = properties.getCoreProperties(); + coreProperties.setCreator("星环信息科技有限公司"); + coreProperties.setLastModifiedByUser("星环信息科技有限公司"); + POIXMLProperties.ExtendedProperties extendedProperties = properties.getExtendedProperties(); + extendedProperties.getUnderlyingProperties().setCompany("星环信息科技有限公司"); + + FileOutputStream fos = new FileOutputStream(new File(filename)); + doc.write(fos); + + fos.close(); + doc.close(); + fis.close(); + } + + public static void setDocProperties(String filename) throws IOException { + System.out.println("filename = [" + filename + "]"); + FileInputStream fis = new FileInputStream(new File(filename)); + HWPFDocument doc = new HWPFDocument(fis); + + SummaryInformation summaryInformation = doc.getSummaryInformation(); + summaryInformation.setAuthor("张鹏"); + summaryInformation.setLastAuthor("张鹏"); + DocumentSummaryInformation documentSummaryInformation = doc.getDocumentSummaryInformation(); + documentSummaryInformation.setCompany("张鹏"); + documentSummaryInformation.setDocumentVersion("1"); + + FileOutputStream fos = new FileOutputStream(new File(filename)); + doc.write(fos); + + fos.close(); + doc.close(); + fis.close(); + } + +} diff --git a/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/excel/ExcelTest.java b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/excel/ExcelTest.java new file mode 100644 index 00000000..1a894a9d --- /dev/null +++ b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/excel/ExcelTest.java @@ -0,0 +1,128 @@ +package io.github.dunwu.javatech.excel; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; +import lombok.experimental.Accessors; +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import javax.validation.constraints.NotBlank; + +/** + * @author Zhang Peng + * @since 2020-07-01 + */ +public class ExcelTest { + + private static final Logger LOGGER = LoggerFactory.getLogger(ExcelTest.class); + + public static final String OUT_FILE = "d:\\temp-" + System.currentTimeMillis() + ".xlsx"; + public static final String IN_FILE = "d:\\属性列表模板.xlsx"; + + @Test + public void simpleWrite() { + // 这里 需要指定写用哪个class去读,然后写到第一个sheet,名字为模板 然后文件流会自动关闭 + // 如果这里想使用03 则 传入excelType参数即可 + BeanDemo demo = new BeanDemo(); + demo.setA("分析维度1"); + demo.setB("分析维度2"); + demo.setC("分析维度3"); + demo.setD("分析维度4"); + EasyExcel.write(OUT_FILE, BeanDemo.class).sheet("模板").doWrite(Collections.singletonList(demo)); + } + + /** + * 动态头,实时生成头写入 + *

+ * 思路是这样子的,先创建List头格式的sheet仅仅写入头,然后通过table 不写入头的方式 去写入数据 + * + *

+ * 1. 创建excel对应的实体对象 + *

+ * 2. 然后写入table即可 + */ + @Test + public void dynamicHeadWrite() { + BeanDemo demo = new BeanDemo(); + demo.setA("分析维度1"); + demo.setB("分析维度2"); + demo.setC("分析维度3"); + demo.setD("分析维度4"); + + EasyExcel.write(OUT_FILE) + // 这里放入动态头 + .head(head()).sheet("模板") + // 当然这里数据也可以用 List> 去传入 + .doWrite(Collections.singletonList(demo)); + } + + private List> head() { + List> list = new ArrayList>(); + List head0 = new ArrayList(); + head0.add("是否分析维度"); + List head1 = new ArrayList(); + head1.add("默认值"); + List head2 = new ArrayList(); + head2.add("校验规则"); + List head3 = new ArrayList(); + head3.add("衍生函数名称"); + list.add(head0); + list.add(head1); + list.add(head2); + list.add(head3); + return list; + } + + @Data + @Accessors(chain = true) + public static class BeanDemo { + + @ExcelProperty("是否分析维度") + private String a; + @ExcelProperty("默认值") + private String b; + @ExcelProperty("校验规则") + private String c; + @ExcelProperty("衍生函数名称") + private String d; + @NotBlank + @ExcelProperty("衍生函数实例参数") + private String e; + @ExcelProperty("参数配置示例") + private String f; + + } + + @Test + public void syncRead() throws FileNotFoundException { + File file = new File(IN_FILE); + InputStream inputStream = new FileInputStream(file); + List eventAttrDefExcelDTOS = ExcelUtil.readSync(inputStream, BeanDemo.class); + System.out.println(eventAttrDefExcelDTOS); + } + + @Test + public void syncRead2() throws FileNotFoundException { + File file = new File("d:\\temp-1595405363178.xlsx"); + InputStream inputStream = new FileInputStream(file); + List list = ExcelUtil.readSync(inputStream, BeanDemo.class); + System.out.println(list); + } + + @Test + public void asyncReadByCustom() throws FileNotFoundException { + File file = new File("d:\\temp-1595405363178.xlsx"); + InputStream inputStream = new FileInputStream(file); + List list = ExcelUtil.readSync(inputStream, BeanDemo.class); + System.out.println(list); + } +} diff --git a/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/JavaParserCommentReporterTest.java b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/JavaParserCommentReporterTest.java new file mode 100644 index 00000000..be288dbf --- /dev/null +++ b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/JavaParserCommentReporterTest.java @@ -0,0 +1,72 @@ +package io.github.dunwu.javatech.java; + +import com.github.javaparser.StaticJavaParser; +import com.github.javaparser.ast.CompilationUnit; +import com.github.javaparser.ast.comments.Comment; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.util.List; +import java.util.stream.Collectors; + +/** + * JavaParser 解析java文件中的注释 + * + * @author Zhang Peng + * @date 2022-02-10 + */ +public class JavaParserCommentReporterTest { + + private static final String FILE_PATH = + "src/test/java/io/github/dunwu/javatech/java/samples/ReversePolishNotation.java"; + + @Test + @DisplayName("解析java文件中的注释 - 测试一") + public void commentReporterStarter() throws FileNotFoundException { + CompilationUnit cu = StaticJavaParser.parse(new FileInputStream(FILE_PATH)); + List comments = cu.getAllContainedComments(); + comments.forEach(System.out::println); + } + + @Test + @DisplayName("解析java文件中的注释 - 测试二") + public void commentReporterComplete() throws FileNotFoundException { + + CompilationUnit cu = StaticJavaParser.parse(new File(FILE_PATH)); + + List comments = cu.getAllContainedComments() + .stream() + .map(p -> new CommentReportEntry(p.getClass().getSimpleName(), + p.getContent(), + p.getRange().map(r -> r.begin.line).orElse(-1), + !p.getCommentedNode().isPresent())) + .collect(Collectors.toList()); + + comments.forEach(System.out::println); + } + + private static class CommentReportEntry { + + private String type; + private String text; + private int lineNumber; + private boolean isOrphan; + + CommentReportEntry(String type, String text, int lineNumber, boolean isOrphan) { + this.type = type; + this.text = text; + this.lineNumber = lineNumber; + this.isOrphan = isOrphan; + } + + @Override + public String toString() { + return lineNumber + "|" + type + "|" + isOrphan + "|" + text.replaceAll("\\n", "").trim(); + } + + } + +} diff --git a/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/JavaParserLexicalPreservationTest.java b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/JavaParserLexicalPreservationTest.java new file mode 100644 index 00000000..75729ab0 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/JavaParserLexicalPreservationTest.java @@ -0,0 +1,57 @@ +package io.github.dunwu.javatech.java; + +import com.github.javaparser.StaticJavaParser; +import com.github.javaparser.ast.CompilationUnit; +import com.github.javaparser.ast.Modifier; +import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration; +import com.github.javaparser.printer.lexicalpreservation.LexicalPreservingPrinter; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +/** + * @author Zhang Peng + * @date 2022-02-10 + */ +public class JavaParserLexicalPreservationTest { + + @Test + @DisplayName("JavaParser 词汇保存1") + public void lexicalPreservationStarter() { + String code = "class A { }"; + CompilationUnit cu = StaticJavaParser.parse(code); + LexicalPreservingPrinter.setup(cu); + System.out.println(LexicalPreservingPrinter.print(cu)); + } + + @Test + @DisplayName("JavaParser 词汇保存2") + public void lexicalPreservationComplete() { + String code = "// Hey, this is a comment\n\n\n// Another one\n\nclass A { }"; + CompilationUnit cu = StaticJavaParser.parse(code); + LexicalPreservingPrinter.setup(cu); + + System.out.println(LexicalPreservingPrinter.print(cu)); + + System.out.println("----------------"); + + ClassOrInterfaceDeclaration myClass = cu.getClassByName("A").get(); + myClass.setName("MyNewClassName"); + System.out.println(LexicalPreservingPrinter.print(cu)); + + System.out.println("----------------"); + + myClass = cu.getClassByName("MyNewClassName").get(); + myClass.setName("MyNewClassName"); + myClass.addModifier(Modifier.Keyword.PUBLIC); + System.out.println(LexicalPreservingPrinter.print(cu)); + + System.out.println("----------------"); + + myClass = cu.getClassByName("MyNewClassName").get(); + myClass.setName("MyNewClassName"); + myClass.addModifier(Modifier.Keyword.PUBLIC); + cu.setPackageDeclaration("io.github.dunwu.javatech.java.samples"); + System.out.println(LexicalPreservingPrinter.print(cu)); + } + +} diff --git a/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/JavaParserModifyingVisitorTest.java b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/JavaParserModifyingVisitorTest.java new file mode 100644 index 00000000..0e6430a6 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/JavaParserModifyingVisitorTest.java @@ -0,0 +1,67 @@ +package io.github.dunwu.javatech.java; + +import com.github.javaparser.StaticJavaParser; +import com.github.javaparser.ast.CompilationUnit; +import com.github.javaparser.ast.body.FieldDeclaration; +import com.github.javaparser.ast.visitor.ModifierVisitor; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.util.regex.Pattern; + +/** + * JavaParser 美化打印测试 + * + * @author Zhang Peng + * @date 2022-02-07 + */ +public class JavaParserModifyingVisitorTest { + + private static final String FILE_PATH = + "src/test/java/io/github/dunwu/javatech/java/samples/ReversePolishNotation.java"; + private static final Pattern LOOK_AHEAD_THREE = Pattern.compile("(\\d)(?=(\\d{3})+$)"); + + @Test + @DisplayName("JavaParser VoidVisitor 测试 1") + public void voidVisitorStarter() throws FileNotFoundException { + CompilationUnit cu = StaticJavaParser.parse(new FileInputStream(FILE_PATH)); + System.out.println(cu.toString()); + } + + @Test + @DisplayName("JavaParser VoidVisitor 测试 2") + public void prettyPrintComplete() throws FileNotFoundException { + + CompilationUnit cu = StaticJavaParser.parse(new FileInputStream(FILE_PATH)); + + ModifierVisitor numericLiteralVisitor = new IntegerLiteralModifier(); + numericLiteralVisitor.visit(cu, null); + + System.out.println(cu.toString()); + } + + private static class IntegerLiteralModifier extends ModifierVisitor { + + @Override + public FieldDeclaration visit(FieldDeclaration fd, Void arg) { + super.visit(fd, arg); + fd.getVariables().forEach(v -> + v.getInitializer().ifPresent(i -> + i.ifIntegerLiteralExpr(il -> + v.setInitializer(formatWithUnderscores(il.getValue())) + ) + ) + ); + return fd; + } + + } + + static String formatWithUnderscores(String value) { + String withoutUnderscores = value.replaceAll("_", ""); + return LOOK_AHEAD_THREE.matcher(withoutUnderscores).replaceAll("$1_"); + } + +} diff --git a/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/JavaParserPerttyPrintTest.java b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/JavaParserPerttyPrintTest.java new file mode 100644 index 00000000..de1540cf --- /dev/null +++ b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/JavaParserPerttyPrintTest.java @@ -0,0 +1,45 @@ +package io.github.dunwu.javatech.java; + +import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration; +import com.github.javaparser.ast.comments.LineComment; +import com.github.javaparser.printer.PrettyPrinter; +import com.github.javaparser.printer.configuration.Indentation; +import com.github.javaparser.printer.configuration.PrettyPrinterConfiguration; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +/** + * JavaParser 美化打印测试 + * + * @author Zhang Peng + * @date 2022-02-07 + */ +public class JavaParserPerttyPrintTest { + + @Test + @DisplayName("JavaParser 美化打印1") + public void prettyPrintStarter() { + ClassOrInterfaceDeclaration myClass = new ClassOrInterfaceDeclaration(); + myClass.setComment(new LineComment("A very cool class!")); + myClass.setName("MyClass"); + myClass.addField("String", "foo"); + System.out.println(myClass); + } + + @Test + @DisplayName("JavaParser 美化打印2") + public void prettyPrintComplete() { + ClassOrInterfaceDeclaration myClass = new ClassOrInterfaceDeclaration(); + myClass.setComment(new LineComment("A very cool class!")); + myClass.setName("MyClass"); + myClass.addField("String", "foo"); + + PrettyPrinterConfiguration conf = new PrettyPrinterConfiguration(); + conf.setIndentSize(1); + conf.setIndentType(Indentation.IndentType.SPACES); + conf.setPrintComments(false); + PrettyPrinter prettyPrinter = new PrettyPrinter(conf); + System.out.println(prettyPrinter.print(myClass)); + } + +} diff --git a/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/JavaParserTest.java b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/JavaParserTest.java new file mode 100644 index 00000000..8e5766e0 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/JavaParserTest.java @@ -0,0 +1,222 @@ +package io.github.dunwu.javatech.java; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.github.javaparser.StaticJavaParser; +import com.github.javaparser.ast.CompilationUnit; +import com.github.javaparser.ast.NodeList; +import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration; +import com.github.javaparser.ast.body.EnumDeclaration; +import com.github.javaparser.ast.comments.JavadocComment; +import com.github.javaparser.ast.comments.LineComment; +import com.github.javaparser.ast.expr.AssignExpr; +import com.github.javaparser.ast.expr.Expression; +import com.github.javaparser.ast.expr.MethodCallExpr; +import com.github.javaparser.ast.type.ClassOrInterfaceType; +import com.github.javaparser.printer.PrettyPrinter; +import com.github.javaparser.printer.configuration.Indentation; +import com.github.javaparser.printer.configuration.PrettyPrinterConfiguration; +import com.github.javaparser.resolution.declarations.ResolvedReferenceTypeDeclaration; +import com.github.javaparser.resolution.types.ResolvedType; +import com.github.javaparser.symbolsolver.JavaSymbolSolver; +import com.github.javaparser.symbolsolver.model.resolution.TypeSolver; +import com.github.javaparser.symbolsolver.resolution.typesolvers.CombinedTypeSolver; +import com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; + +import java.io.File; +import java.io.FileNotFoundException; +import java.util.List; + +/** + * @author Zhang Peng + * @date 2022-02-07 + */ +public class JavaParserTest { + + final String FILE_PATH = "src/test/java/io/github/dunwu/javatech/java/samples/ReversePolishNotation.java"; + + @Test + @DisplayName("获得 import") + public void testGetImports() { + try { + CompilationUnit compilationUnit = StaticJavaParser.parse(new File(FILE_PATH)); + Assertions.assertThat(CollectionUtil.isEmpty(compilationUnit.getImports())); + compilationUnit.getImports().forEach(i -> { + System.out.println(i.getName()); + }); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + } + + @Test + @DisplayName("获得类型") + public void testGetTypes() { + try { + CompilationUnit compilationUnit = StaticJavaParser.parse(new File(FILE_PATH)); + Assertions.assertThat(CollectionUtil.isEmpty(compilationUnit.getImports())); + compilationUnit.findAll(ClassOrInterfaceDeclaration.class).stream() + .filter(c -> !c.isInterface() && !c.isAbstract()) + .forEach(c -> { + System.out.println(c.getFullyQualifiedName().get()); + NodeList eList = c.getExtendedTypes(); + for (ClassOrInterfaceType e : eList) { + System.out.println("\t" + e.asString()); + } + }); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + } + + @DisplayName("获得枚举属性") + @ParameterizedTest(name = "{0}") + @CsvSource({ "src/test/java/io/github/dunwu/javatech/java/samples/CodeEnum.java", + "src/test/java/io/github/dunwu/javatech/java/samples/WebSocketMsgType.java", + "src/test/java/io/github/dunwu/javatech/java/samples/CaptchaTypeEnum.java", + "src/test/java/io/github/dunwu/javatech/java/samples/CodeBiEnum.java" }) + void testGetEnums(String path) { + File file = new File(path); + try { + CompilationUnit compilationUnit = StaticJavaParser.parse(file); + Assertions.assertThat(CollectionUtil.isEmpty(compilationUnit.getImports())); + compilationUnit.findAll(EnumDeclaration.class) + .forEach(c -> { + c.getFullyQualifiedName().ifPresent(i -> { + System.out.printf("枚举类型:%s, ", i); + }); + c.getJavadocComment().ifPresent(i -> { + System.out.printf("枚举类型注释:%s", getFilteredCommentString(i)); + }); + System.out.println(); + + c.getEntries().forEach(e -> { + System.out.printf("枚举 Entry:%s, ", e.getName()); + e.getJavadocComment().ifPresent(i -> { + System.out.printf("枚举 Entry 注释:%s", getFilteredCommentString(i)); + }); + System.out.println(); + + NodeList arguments = e.getArguments(); + if (CollectionUtil.isNotEmpty(arguments)) { + for (int i = 0; i < arguments.size(); i++) { + System.out.printf("\t参数 %d:%s", i + 1, + arguments.get(i).asLiteralStringValueExpr().getValue()); + } + System.out.println(); + } + }); + }); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + } + + public static String getFilteredCommentString(JavadocComment comment) { + + if (comment == null) { + return null; + } + + List lines = StrUtil.split(comment.getContent(), '\n'); + if (CollectionUtil.isEmpty(lines)) { + return null; + } + + String[] finalCommentLines = lines.stream() + .map(line -> { + if (StrUtil.isBlank(line)) { + return line; + } + // 去除所有 html 标签 + line = line.replaceAll("<[^>]*>", ""); + line = line.trim(); + if (line.startsWith("*")) { + line = line.substring(1).trim(); + } + return line; + }) + .filter(StrUtil::isNotBlank) + .filter(line -> !line.startsWith("@")) + .toArray(String[]::new); + return StrUtil.concat(false, finalCommentLines); + } + + @Test + public void testGenerateSimpleClass() { + ClassOrInterfaceDeclaration myClass = new ClassOrInterfaceDeclaration(); + myClass.setComment(new LineComment("A very cool class!")); + myClass.setName("MyClass"); + myClass.addField("String", "foo"); + + PrettyPrinterConfiguration conf = new PrettyPrinterConfiguration(); + conf.setIndentSize(1); + conf.setIndentType(Indentation.IndentType.SPACES); + conf.setPrintComments(false); + PrettyPrinter prettyPrinter = new PrettyPrinter(conf); + System.out.println(prettyPrinter.print(myClass)); + } + + @Test + public void getTypeOfReference() throws FileNotFoundException { + final String FILE_PATH = "src/test/java/io/github/dunwu/javatech/java/samples/Bar.java"; + + TypeSolver typeSolver = new CombinedTypeSolver(); + + JavaSymbolSolver symbolSolver = new JavaSymbolSolver(typeSolver); + StaticJavaParser + .getConfiguration() + .setSymbolResolver(symbolSolver); + + CompilationUnit cu = StaticJavaParser.parse(new File(FILE_PATH)); + + cu.findAll(AssignExpr.class).forEach(ae -> { + ResolvedType resolvedType = ae.calculateResolvedType(); + System.out.println(ae.toString() + " is a: " + resolvedType); + }); + } + + @Test + public void resolveMethodCalls() throws FileNotFoundException { + final String FILE_PATH = "src/test/java/io/github/dunwu/javatech/java/samples/A.java"; + TypeSolver typeSolver = new ReflectionTypeSolver(); + + JavaSymbolSolver symbolSolver = new JavaSymbolSolver(typeSolver); + StaticJavaParser + .getConfiguration() + .setSymbolResolver(symbolSolver); + + CompilationUnit cu = StaticJavaParser.parse(new File(FILE_PATH)); + + cu.findAll(MethodCallExpr.class).forEach(mce -> + System.out.println(mce.resolve().getQualifiedSignature())); + } + + @Test + public void usingTypeSolver() { + TypeSolver typeSolver = new ReflectionTypeSolver(); + + showReferenceTypeDeclaration(typeSolver.solveType("java.lang.Object")); + showReferenceTypeDeclaration(typeSolver.solveType("java.lang.String")); + showReferenceTypeDeclaration(typeSolver.solveType("java.util.List")); + } + + private static void showReferenceTypeDeclaration( + ResolvedReferenceTypeDeclaration resolvedReferenceTypeDeclaration) { + + System.out.println(String.format("== %s ==", resolvedReferenceTypeDeclaration.getQualifiedName())); + System.out.println(" fields:"); + resolvedReferenceTypeDeclaration.getAllFields() + .forEach(f -> System.out.println(String.format(" %s %s", f.getType(), f.getName()))); + System.out.println(" methods:"); + resolvedReferenceTypeDeclaration.getAllMethods() + .forEach(m -> System.out.println(String.format(" %s", m.getQualifiedSignature()))); + System.out.println(); + } + +} diff --git a/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/JavaParserVoidVisitorTest.java b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/JavaParserVoidVisitorTest.java new file mode 100644 index 00000000..6824e3d9 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/JavaParserVoidVisitorTest.java @@ -0,0 +1,68 @@ +package io.github.dunwu.javatech.java; + +import com.github.javaparser.StaticJavaParser; +import com.github.javaparser.ast.CompilationUnit; +import com.github.javaparser.ast.body.MethodDeclaration; +import com.github.javaparser.ast.visitor.VoidVisitor; +import com.github.javaparser.ast.visitor.VoidVisitorAdapter; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.util.ArrayList; +import java.util.List; + +/** + * JavaParser 美化打印测试 + * + * @author Zhang Peng + * @date 2022-02-07 + */ +public class JavaParserVoidVisitorTest { + + private static final String FILE_PATH = + "src/test/java/io/github/dunwu/javatech/java/samples/ReversePolishNotation.java"; + + @Test + @DisplayName("JavaParser VoidVisitor 测试 1") + public void voidVisitorStarter() throws FileNotFoundException { + CompilationUnit cu = StaticJavaParser.parse(new FileInputStream(FILE_PATH)); + System.out.println(cu.toString()); + } + + @Test + @DisplayName("JavaParser VoidVisitor 测试 2") + public void prettyPrintComplete() throws FileNotFoundException { + + CompilationUnit cu = StaticJavaParser.parse(new FileInputStream(FILE_PATH)); + + VoidVisitor methodNameVisitor = new MethodNamePrinter(); + methodNameVisitor.visit(cu, null); + List methodNames = new ArrayList<>(); + VoidVisitor> methodNameCollector = new MethodNameCollector(); + methodNameCollector.visit(cu, methodNames); + methodNames.forEach(n -> System.out.println("Method Name Collected: " + n)); + } + + private static class MethodNamePrinter extends VoidVisitorAdapter { + + @Override + public void visit(MethodDeclaration md, Void arg) { + super.visit(md, arg); + System.out.println("Method Name Printed: " + md.getName()); + } + + } + + private static class MethodNameCollector extends VoidVisitorAdapter> { + + @Override + public void visit(MethodDeclaration md, List collector) { + super.visit(md, collector); + collector.add(md.getNameAsString()); + } + + } + +} diff --git a/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/A.java b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/A.java new file mode 100644 index 00000000..ffa79bf7 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/A.java @@ -0,0 +1,11 @@ +package io.github.dunwu.javatech.java.samples; + +class A { + + public void foo(Object param) { + System.out.println(1); + System.out.println("hi"); + System.out.println(param); + } + +} diff --git a/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/Bar.java b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/Bar.java new file mode 100644 index 00000000..0debe513 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/Bar.java @@ -0,0 +1,14 @@ +package io.github.dunwu.javatech.java.samples; + +class Bar { + + private String a; + + void aMethod() { + while (true) { + int a = 0; + a = a + 1; + } + } + +} diff --git a/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/CaptchaTypeEnum.java b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/CaptchaTypeEnum.java new file mode 100644 index 00000000..8771804c --- /dev/null +++ b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/CaptchaTypeEnum.java @@ -0,0 +1,40 @@ +package io.github.dunwu.javatech.java.samples; + +/** + * 验证码类型枚举 + * + * @author peng.zhang + * @date 2021-09-24 + */ +public enum CaptchaTypeEnum { + /** + * 算数 + */ + ARITHMETIC(1), + /** + * 中文 + */ + CHINESE(2), + /** + * 中文闪图 + */ + CHINESE_GIF(3), + /** + * 闪图 + */ + GIF(4), + /** + * 数字大写字母 + */ + SPEC(5); + + private final int code; + + CaptchaTypeEnum(int code) { + this.code = code; + } + + public int getCode() { + return code; + } +} diff --git a/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/CodeBiEnum.java b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/CodeBiEnum.java new file mode 100644 index 00000000..f1defc63 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/CodeBiEnum.java @@ -0,0 +1,30 @@ +package io.github.dunwu.javatech.java.samples; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 验证码业务场景 + */ +@Getter +@AllArgsConstructor +public enum CodeBiEnum { + + /* 旧邮箱修改邮箱 */ + ONE(1, "旧邮箱修改邮箱"), + + /* 通过邮箱修改密码 */ + TWO(2, "通过邮箱修改密码"); + + private final Integer code; + private final String description; + + public static CodeBiEnum find(Integer code) { + for (CodeBiEnum value : CodeBiEnum.values()) { + if (code.equals(value.getCode())) { + return value; + } + } + return null; + } +} diff --git a/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/CodeEnum.java b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/CodeEnum.java new file mode 100644 index 00000000..fa5ef2e9 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/CodeEnum.java @@ -0,0 +1,40 @@ +package io.github.dunwu.javatech.java.samples; + +/** + *

+ * 验证码业务场景对应的 Redis 中的 key + *

+ * + * @author Zheng Jie + * @date 2020-05-02 + */ +public enum CodeEnum { + + /* 通过手机号码重置邮箱 */ + PHONE_RESET_EMAIL_CODE("phone_reset_email_code_", "通过手机号码重置邮箱"), + + /* 通过旧邮箱重置邮箱 */ + EMAIL_RESET_EMAIL_CODE("email_reset_email_code_", "通过旧邮箱重置邮箱"), + + /* 通过手机号码重置密码 */ + PHONE_RESET_PWD_CODE("phone_reset_pwd_code_", "通过手机号码重置密码"), + + /* 通过邮箱重置密码 */ + EMAIL_RESET_PWD_CODE("email_reset_pwd_code_", "通过邮箱重置密码"); + + private final String key; + private final String description; + + CodeEnum(String key, String description) { + this.key = key; + this.description = description; + } + + public String getKey() { + return key; + } + + public String getDescription() { + return description; + } +} diff --git a/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/CommentGenerator.java b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/CommentGenerator.java new file mode 100644 index 00000000..139c7b03 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/CommentGenerator.java @@ -0,0 +1,57 @@ +package io.github.dunwu.javatech.java.samples; + +import com.github.javaparser.StaticJavaParser; +import com.github.javaparser.ast.CompilationUnit; +import com.github.javaparser.ast.body.MethodDeclaration; +import com.github.javaparser.ast.visitor.VoidVisitorAdapter; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Pattern; + +public class CommentGenerator { + + private static final String FILE_PATH = + "src/test/java/io/github/dunwu/javatech/java/samples/ReversePolishNotation.java"; + + private static final Pattern FIND_UPPERCASE = Pattern.compile("(.)(\\p{Upper})"); + + public static void main(String[] args) throws Exception { + + CompilationUnit cu = StaticJavaParser.parse(new File(FILE_PATH)); + + List methodDeclarations = new ArrayList<>(); + VoidVisitorAdapter> unDocumentedMethodCollector = new UnDocumentedMethodCollector(); + unDocumentedMethodCollector.visit(cu, methodDeclarations); + + cu.findAll(MethodDeclaration.class).stream() + .filter(md -> !md.getJavadoc().isPresent()) + .forEach(md -> md.setJavadocComment(generateJavaDoc(md))); + + System.out.println(cu.toString()); + } + + private static class UnDocumentedMethodCollector extends VoidVisitorAdapter> { + + @Override + public void visit(MethodDeclaration md, List collector) { + super.visit(md, collector); + // value == null + if (!md.getJavadoc().isPresent()) { + collector.add(md); + } + } + + } + + private static String generateJavaDoc(MethodDeclaration md) { + return " " + camelCaseToTitleFormat(md.getNameAsString()) + " "; + } + + private static String camelCaseToTitleFormat(String text) { + String split = FIND_UPPERCASE.matcher(text).replaceAll("$1 $2"); + return split.substring(0, 1).toUpperCase() + split.substring(1); + } + +} diff --git a/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/CommentRemover.java b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/CommentRemover.java new file mode 100644 index 00000000..cd6989dd --- /dev/null +++ b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/CommentRemover.java @@ -0,0 +1,30 @@ +package io.github.dunwu.javatech.java.samples; + +import com.github.javaparser.StaticJavaParser; +import com.github.javaparser.ast.CompilationUnit; +import com.github.javaparser.ast.Node; +import com.github.javaparser.ast.comments.Comment; + +import java.io.File; +import java.util.List; +import java.util.stream.Collectors; + +public class CommentRemover { + + private static final String FILE_PATH = + "src/test/java/io/github/dunwu/javatech/java/samples/ReversePolishNotation.java"; + + public static void main(String[] args) throws Exception { + CompilationUnit cu = StaticJavaParser.parse(new File(FILE_PATH)); + + List comments = cu.getAllContainedComments(); + List unwantedComments = comments + .stream() + .filter(p -> !p.getCommentedNode().isPresent() || p.isLineComment()) + .collect(Collectors.toList()); + unwantedComments.forEach(Node::remove); + + System.out.println(cu.toString()); + } + +} diff --git a/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/Foo.java b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/Foo.java new file mode 100644 index 00000000..3670c4f5 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/Foo.java @@ -0,0 +1,7 @@ +package io.github.dunwu.javatech.java.samples; + +class Foo { + + Bar bar; + +} diff --git a/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/LexicalPreservation.java b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/LexicalPreservation.java new file mode 100644 index 00000000..252a115a --- /dev/null +++ b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/LexicalPreservation.java @@ -0,0 +1,9 @@ +package io.github.dunwu.javatech.java.samples; + +// Hey, this is a comment + +// Another one +public class LexicalPreservation { + + +} diff --git a/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/ReversePolishNotation.java b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/ReversePolishNotation.java new file mode 100644 index 00000000..d7701672 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/ReversePolishNotation.java @@ -0,0 +1,81 @@ +package io.github.dunwu.javatech.java.samples; + +import java.util.Stack; +import java.util.stream.Stream; + + +/** + * A Simple Reverse Polish Notation calculator with memory function. + */ +public class ReversePolishNotation { + + // What does this do? + public static int ONE_BILLION = 1000000000; + + private double memory = 0; + + /** + * Takes reverse polish notation style string and returns the resulting calculation. + * + * @param input mathematical expression in the reverse Polish notation format + * @return the calculation result + */ + public Double calc(String input) { + + String[] tokens = input.split(" "); + Stack numbers = new Stack<>(); + + Stream.of(tokens).forEach(t -> { + double a; + double b; + switch(t){ + case "+": + b = numbers.pop(); + a = numbers.pop(); + numbers.push(a + b); + break; + case "/": + b = numbers.pop(); + a = numbers.pop(); + numbers.push(a / b); + break; + case "-": + b = numbers.pop(); + a = numbers.pop(); + numbers.push(a - b); + break; + case "*": + b = numbers.pop(); + a = numbers.pop(); + numbers.push(a * b); + break; + default: + numbers.push(Double.valueOf(t)); + } + }); + return numbers.pop(); + } + + /** + * Memory Recall uses the number in stored memory, defaulting to 0. + * + * @return the double + */ + public double memoryRecall(){ + return memory; + } + + /** + * Memory Clear sets the memory to 0. + */ + public void memoryClear(){ + memory = 0; + } + + + public void memoryStore(double value){ + memory = value; + } + +} +/* EOF */ diff --git a/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/WebSocketMsgType.java b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/WebSocketMsgType.java new file mode 100644 index 00000000..afa3c059 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/java/samples/WebSocketMsgType.java @@ -0,0 +1,15 @@ +package io.github.dunwu.javatech.java.samples; + +/** + * WebSocket 消息类型 + */ +public enum WebSocketMsgType { + /** 连接 */ + CONNECT, + /** 关闭 */ + CLOSE, + /** 信息 */ + INFO, + /** 错误 */ + ERROR +} diff --git a/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/pinyin/PinyinParserTest.java b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/pinyin/PinyinParserTest.java new file mode 100644 index 00000000..43b0a8d8 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/pinyin/PinyinParserTest.java @@ -0,0 +1,52 @@ +package io.github.dunwu.javatech.pinyin; + +import com.github.promeg.pinyinhelper.Pinyin; +import com.github.promeg.pinyinhelper.PinyinMapDict; +import com.github.promeg.tinypinyin.lexicons.java.cncity.CnCityDict; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.util.HashMap; +import java.util.Map; + +/** + * 汉字转拼音解析测试 + * + * @author Zhang Peng + * @date 2022-02-07 + */ +public class PinyinParserTest { + + @Test + @DisplayName("测试一段文本") + public void testText() { + String text = "测试一段文本"; + String content = Pinyin.toPinyin(text, " "); + System.out.println(content); + Assertions.assertEquals("CE SHI YI DUAN WEN BEN", content); + } + + @Test + @DisplayName("测试中文城市词典拼音") + public void testCityDict() { + // 添加中文城市词典 + Pinyin.init(Pinyin.newConfig().with(CnCityDict.getInstance())); + + // 添加自定义词典 + Pinyin.init(Pinyin.newConfig() + .with(new PinyinMapDict() { + @Override + public Map mapping() { + HashMap map = new HashMap<>(); + map.put("重庆", new String[] { "CONG", "QIN" }); + return map; + } + })); + + String content = Pinyin.toPinyin("欢迎来重庆", " "); + System.out.println(content); + Assertions.assertEquals("HUAN YING LAI CONG QIN", content); + } + +} diff --git a/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/word/WordUtilTest.java b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/word/WordUtilTest.java new file mode 100644 index 00000000..781e5ea2 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-file-parser/src/test/java/io/github/dunwu/javatech/word/WordUtilTest.java @@ -0,0 +1,112 @@ +package io.github.dunwu.javatech.word; + +import io.github.dunwu.javatech.word.WordUtil; +import org.junit.Test; + +import java.io.IOException; + +/** + * @author Zhang Peng + * @since 2018-11-08 + */ +public class WordUtilTest { + + @Test + public void testCreateDocx() { + try { + WordUtil.create("d://temp.docx"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Test + public void testCreateDocxWithContent() { + StringBuilder sb = new StringBuilder(); + sb.append("At tutorialspoint.com, we strive hard to "); + sb.append("provide quality tutorials for self-learning "); + sb.append("purpose in the domains of Academics, Information "); + sb.append("Technology, Management and Computer Programming Languages."); + + try { + WordUtil.create("d://temp2.docx", sb.toString()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Test + public void testCreateDocxWithBorder() { + StringBuilder sb = new StringBuilder(); + sb.append("At tutorialspoint.com, we strive hard to "); + sb.append("provide quality tutorials for self-learning "); + sb.append("purpose in the domains of Academics, Information "); + sb.append("Technology, Management and Computer Programming Languages."); + + try { + WordUtil.createWithBorders("d://temp3.docx", sb.toString()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Test + public void testCreateDocxWithTable() { + try { + WordUtil.createWithTable("d://temp4.docx"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Test + public void testCreateDocxWithFontStyle() { + try { + WordUtil.createWithFontStyle("d://temp5.docx"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Test + public void testCreateDocxWithAlign() { + try { + WordUtil.createWithAlign("d://temp6.docx"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Test + public void testExtractor() { + try { + WordUtil.extractor("d://temp6.docx"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Test + public void test() { + try { + WordUtil.setDocxProperties("d://temp6.docx"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + // @Test + // public void test2() { + // File dir = new File("D:\\Docs\\ZP\\notes\\软件工程\\软件工程文档标准模板"); + // File[] files = dir.listFiles(); + // for (File file : files) { + // if (!file.isDirectory()) { + // try { + // WordUtil.setDocProperties(file.getAbsolutePath()); + // } catch (IOException e) { + // e.printStackTrace(); + // } + // } + // } + // } +} diff --git a/codes/javatech/javatech-io/javatech-json/pom.xml b/codes/javatech/javatech-io/javatech-json/pom.xml new file mode 100644 index 00000000..9f836e2a --- /dev/null +++ b/codes/javatech/javatech-io/javatech-json/pom.xml @@ -0,0 +1,58 @@ + + + 4.0.0 + + + io.github.dunwu + dunwu-parent + 1.0.7 + + + io.github.dunwu.javatech + javatech-json + 1.0.0 + jar + Java IO JSON 示例 + + + + com.alibaba + fastjson + + + com.fasterxml.jackson.core + jackson-databind + + + com.google.code.gson + gson + + + cn.hutool + hutool-all + + + org.projectlombok + lombok + + + + + org.junit.jupiter + junit-jupiter + test + + + junit + junit + test + + + org.assertj + assertj-core + test + + + + diff --git a/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/fastjson/FastjsonAnnotationBean.java b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/fastjson/FastjsonAnnotationBean.java new file mode 100644 index 00000000..8de7a863 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/fastjson/FastjsonAnnotationBean.java @@ -0,0 +1,175 @@ +package io.github.dunwu.javatech.json.fastjson; + +import com.alibaba.fastjson.annotation.JSONField; +import com.fasterxml.jackson.annotation.JsonIgnore; + +import java.io.Serializable; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.Objects; + +/** + * @JSONField 的使用 + *

+ * @JSONField 可以配置在 getter/setter 方法上 + *

+ * @JSONField 可以配置在字段上,但是要求字段必须是 public + * + * @author Zhang Peng + * @see @JSONField + * @since 2019-03-18 + */ +public class FastjsonAnnotationBean implements Serializable { + + private int id; + + // 配置date序列化和反序列使用yyyyMMdd日期格式 + @JSONField(format = "yyyy-MM-dd") + private Date date1; + + @JsonIgnore + private Date date2; + + // 不序列化 + @JSONField(serialize = false, format = "yyyy-MM-dd hh:mm:ss") + private LocalDate date3; + + // 不反序列化 + @JSONField(deserialize = false, format = "yyyy-MM-dd") + private LocalDateTime date4; + + @JSONField(ordinal = 1) + private Double d1; + + // 按ordinal排序 + @JSONField(ordinal = 2) + private float f1; + + @JSONField(ordinal = 1) + private int f2; + + public FastjsonAnnotationBean() { + } + + public FastjsonAnnotationBean(int id, Date date1, Date date2, LocalDate date3, LocalDateTime date4, Double d1, + float f1, + int f2) { + this.id = id; + this.date1 = date1; + this.date2 = date2; + this.date3 = date3; + this.date4 = date4; + this.d1 = d1; + this.f1 = f1; + this.f2 = f2; + } + + @Override + public int hashCode() { + return Objects.hash(id, date1, date2, date3, date4, d1, f1, f2); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof FastjsonAnnotationBean)) return false; + FastjsonAnnotationBean that = (FastjsonAnnotationBean) o; + return id == that.id && + Float.compare(that.f1, f1) == 0 && + f2 == that.f2 && + Objects.equals(date1, that.date1) && + Objects.equals(date2, that.date2) && + Objects.equals(date3, that.date3) && + Objects.equals(date4, that.date4) && + Objects.equals(d1, that.d1); + } + + @Override + public String toString() { + return "FastjsonAnnotationBean{" + + "id=" + id + + ", date1=" + date1 + + ", date2=" + date2 + + ", date3=" + date3 + + ", date4=" + date4 + + ", d1=" + d1 + + ", f1=" + f1 + + ", f2=" + f2 + + '}'; + } + + @JSONField(name = "ID") + public int getId() { + return id; + } + + public FastjsonAnnotationBean setId(int id) { + this.id = id; + return this; + } + + public Date getDate1() { + return date1; + } + + public FastjsonAnnotationBean setDate1(Date date1) { + this.date1 = date1; + return this; + } + + public Date getDate2() { + return date2; + } + + public FastjsonAnnotationBean setDate2(Date date2) { + this.date2 = date2; + return this; + } + + public LocalDate getDate3() { + return date3; + } + + public FastjsonAnnotationBean setDate3(LocalDate date3) { + this.date3 = date3; + return this; + } + + public LocalDateTime getDate4() { + return date4; + } + + public FastjsonAnnotationBean setDate4(LocalDateTime date4) { + this.date4 = date4; + return this; + } + + public Double getD1() { + return d1; + } + + public FastjsonAnnotationBean setD1(Double d1) { + this.d1 = d1; + return this; + } + + public float getF1() { + return f1; + } + + public FastjsonAnnotationBean setF1(float f1) { + this.f1 = f1; + return this; + } + + public int getF2() { + return f2; + } + + public FastjsonAnnotationBean setF2(int f2) { + this.f2 = f2; + return this; + } + +} diff --git a/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/fastjson/FastjsonCaseTests.java b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/fastjson/FastjsonCaseTests.java new file mode 100644 index 00000000..7257b48e --- /dev/null +++ b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/fastjson/FastjsonCaseTests.java @@ -0,0 +1,59 @@ +package io.github.dunwu.javatech.json.fastjson; + +import com.alibaba.fastjson.JSON; +import io.github.dunwu.javatech.json.util.Group; +import io.github.dunwu.javatech.json.util.DateUtil; +import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.DisplayName; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.Date; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * @author Zhang Peng + * @since 2019-11-22 + */ +public class FastjsonCaseTests { + + @Test + @DisplayName("测试 Fastjson 默认序列化、反序列化") + public void defaultTest() { + Group oldGroup = new Group(); + String jsonString = JSON.toJSONString(oldGroup); + + System.out.println(jsonString); + + Group newGroup = JSON.parseObject(jsonString, Group.class); + assertThat(newGroup).isNotNull(); + } + + /** + * 序列化测试 + */ + @Test + @DisplayName("测试 JavaBean 上使用 @JSONField 注解后的序列化、反序列化") + public void serializeTest() { + LocalDate localDate = LocalDate.of(1949, 10, 1); + LocalDateTime localDateTime = LocalDateTime.of(2000, 1, 1, 12, 0, 0); + Date date = DateUtil.toDate(localDateTime); + + FastjsonAnnotationBean originBean = + new FastjsonAnnotationBean(1, date, date, localDate, localDateTime, 100.0, 0.5f, 1000); + final String expectJson = + "{\"ID\":1,\"date1\":\"2000-01-01\",\"date2\":946699200000,\"date4\":\"2000-01-01\",\"d1\":100.0,\"f2\":1000,\"f1\":0.5}"; + String json = JSON.toJSONString(originBean); + Assertions.assertEquals(expectJson, json); + System.out.println("json = [" + json + "]"); + + FastjsonAnnotationBean targetBean = JSON.parseObject(json, FastjsonAnnotationBean.class); + FastjsonAnnotationBean expectBean = new FastjsonAnnotationBean(); + expectBean.setId(1).setDate1(date).setDate4(localDateTime).setD1(100.0).setF1(0.5f); + System.out.printf("deserialize result: %s", targetBean.toString()); + Assertions.assertNotEquals(originBean, targetBean); + } + +} diff --git a/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/fastjson/FastjsonPerformanceTests.java b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/fastjson/FastjsonPerformanceTests.java new file mode 100644 index 00000000..54243c13 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/fastjson/FastjsonPerformanceTests.java @@ -0,0 +1,50 @@ +package io.github.dunwu.javatech.json.fastjson; + +import com.alibaba.fastjson.JSON; +import io.github.dunwu.javatech.json.util.TestBean2; +import io.github.dunwu.javatech.json.util.BeanUtils; +import org.junit.Test; + +import java.util.concurrent.TimeUnit; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Fastjson 性能测试 + * + * @author Zhang Peng + * @since 2019-03-18 + */ +public class FastjsonPerformanceTests { + + private static final int BATCH_SIZE = 100000; + + /** + * 测试十次,每次序列化、反序列化 100000 条数据,平均耗时约 380 ms + */ + @Test + public void testPerformance() { + long time = 0L; + for (int i = 0; i < 10; i++) { + time += donSerializeAndDeserialize(); + } + System.out.println(String.format("time: %d ms", TimeUnit.NANOSECONDS.toMillis(time / 10))); + } + + /** + * 循环序列化、反序列 {@link #BATCH_SIZE} 条数据,测试性能 + */ + private long donSerializeAndDeserialize() { + TestBean2 bean = BeanUtils.initNotJdk8Bean(); + long begin = System.nanoTime(); + for (int i = 0; i < BATCH_SIZE; i++) { + String json = JSON.toJSONString(bean); + assertThat(json).isNotBlank(); + TestBean2 newBean = JSON.parseObject(json, TestBean2.class); + assertThat(newBean).isNotNull(); + } + long end = System.nanoTime(); + return (end - begin); + } + +} diff --git a/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/gson/GsonAnnotationBean.java b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/gson/GsonAnnotationBean.java new file mode 100644 index 00000000..f8b81504 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/gson/GsonAnnotationBean.java @@ -0,0 +1,52 @@ +package io.github.dunwu.javatech.json.gson; + +import com.google.gson.annotations.SerializedName; + +import java.util.Objects; + +/** + * @author Zhang Peng + * @since 2019-11-24 + */ +public class GsonAnnotationBean { + + @SerializedName("custom_naming") + private String someField; + + private String someOtherField; + + @Override + public int hashCode() { + return Objects.hash(someField, someOtherField); + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof GsonAnnotationBean)) { + return false; + } + GsonAnnotationBean that = (GsonAnnotationBean) o; + return Objects.equals(someField, that.someField) && + Objects.equals(someOtherField, that.someOtherField); + } + + public String getSomeField() { + return someField; + } + + public void setSomeField(String someField) { + this.someField = someField; + } + + public String getSomeOtherField() { + return someOtherField; + } + + public void setSomeOtherField(String someOtherField) { + this.someOtherField = someOtherField; + } + +} diff --git a/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/gson/GsonCaseTests.java b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/gson/GsonCaseTests.java new file mode 100644 index 00000000..ab6c1494 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/gson/GsonCaseTests.java @@ -0,0 +1,80 @@ +package io.github.dunwu.javatech.json.gson; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import org.junit.Test; + +import java.lang.reflect.Modifier; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * @author Zhang Peng + * @since 2019-11-24 + */ +public class GsonCaseTests { + + private Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create(); + + private Gson gson2 = new GsonBuilder() + .setVersion(1.0) + .setPrettyPrinting() + .setDateFormat("yyyy-MM-dd HH:mm:ss") + .excludeFieldsWithModifiers(Modifier.STATIC, Modifier.TRANSIENT, Modifier.VOLATILE) + .create(); + + @Test + public void test() { + // Serialization + Gson gson = new Gson(); + gson.toJson(1); // ==> 1 + gson.toJson("abcd"); // ==> "abcd" + gson.toJson(10L); // ==> 10 + int[] values = { 1 }; + gson.toJson(values); // ==> [1] + + // Deserialization + int i1 = gson.fromJson("1", int.class); + Integer i2 = gson.fromJson("1", Integer.class); + Long l1 = gson.fromJson("1", Long.class); + Boolean b1 = gson.fromJson("false", Boolean.class); + String str = gson.fromJson("\"abc\"", String.class); + String[] anotherStr = gson.fromJson("[\"abc\"]", String[].class); + + assertThat(i1).isEqualTo(1); + assertThat(i2).isEqualTo(1); + assertThat(l1).isEqualTo(1L); + assertThat(b1).isFalse(); + assertThat(str).isEqualTo("abc"); + } + + @Test + public void testAnnotation() { + GsonAnnotationBean oldBean = new GsonAnnotationBean(); + oldBean.setSomeField("hello"); + oldBean.setSomeOtherField("world"); + + String expectStr = "{\"custom_naming\":\"hello\",\"someOtherField\":\"world\"}"; + String json = gson.toJson(oldBean); + assertThat(json).isEqualTo(expectStr); + + GsonAnnotationBean newBean = gson.fromJson(expectStr, GsonAnnotationBean.class); + assertThat(newBean).isEqualTo(oldBean); + } + + @Test + public void testVersionedClass() { + VersionedClass versionedObject = new VersionedClass(); + String jsonOutput = gson2.toJson(versionedObject); + System.out.println(jsonOutput); + assertThat(jsonOutput).isEqualTo("{\n" + + " \"newField\": \"new\",\n" + + " \"field\": \"old\"\n" + + "}"); + + jsonOutput = gson.toJson(versionedObject); + System.out.println(jsonOutput); + assertThat(jsonOutput).isEqualTo("{\"newerField\":\"newer\",\"newField\":\"new\",\"field\":\"old\"}"); + } + +} diff --git a/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/gson/GsonPerformanceTests.java b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/gson/GsonPerformanceTests.java new file mode 100644 index 00000000..4a43e6f5 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/gson/GsonPerformanceTests.java @@ -0,0 +1,53 @@ +package io.github.dunwu.javatech.json.gson; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import io.github.dunwu.javatech.json.util.TestBean2; +import io.github.dunwu.javatech.json.util.BeanUtils; +import org.junit.Test; + +import java.util.concurrent.TimeUnit; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Gson 性能测试 + * + * @author Zhang Peng + * @since 2019-11-22 + */ +public class GsonPerformanceTests { + + private static final int BATCH_SIZE = 100000; + + private Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create(); + + /** + * 测试十次,每次序列化、反序列化 100000 条数据,平均耗时约 704 ms + */ + @Test + public void testPerformance() { + long time = 0L; + for (int i = 0; i < 10; i++) { + time += donSerializeAndDeserialize(); + } + System.out.println(String.format("time: %d ms", TimeUnit.NANOSECONDS.toMillis(time / 10))); + } + + /** + * 循环序列化、反序列 {@link #BATCH_SIZE} 条数据,测试性能 + */ + private long donSerializeAndDeserialize() { + TestBean2 bean = BeanUtils.initNotJdk8Bean(); + long begin = System.nanoTime(); + for (int i = 0; i < BATCH_SIZE; i++) { + String json = gson.toJson(bean); + assertThat(json).isNotBlank(); + TestBean2 newBean = gson.fromJson(json, TestBean2.class); + assertThat(newBean).isNotNull(); + } + long end = System.nanoTime(); + return (end - begin); + } + +} diff --git a/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/gson/VersionedClass.java b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/gson/VersionedClass.java new file mode 100644 index 00000000..14e79f1d --- /dev/null +++ b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/gson/VersionedClass.java @@ -0,0 +1,21 @@ +package io.github.dunwu.javatech.json.gson; + +import com.google.gson.annotations.Since; + +public class VersionedClass { + + @Since(1.1) + private final String newerField; + + @Since(1.0) + private final String newField; + + private final String field; + + public VersionedClass() { + this.newerField = "newer"; + this.newField = "new"; + this.field = "old"; + } + +} diff --git a/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/jackson/JacksonAnnotationBean.java b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/jackson/JacksonAnnotationBean.java new file mode 100644 index 00000000..bf5f6f0f --- /dev/null +++ b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/jackson/JacksonAnnotationBean.java @@ -0,0 +1,55 @@ +package io.github.dunwu.javatech.json.jackson; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +/** + * @author Zhang Peng + * @since 2019-03-18 + */ +@JsonPropertyOrder(alphabetic = true) +public class JacksonAnnotationBean { + + private String Name; + + private int Age; + + @JsonIgnore + private String Sex; + + public JacksonAnnotationBean() { + } + + public JacksonAnnotationBean(String name, int age, String sex) { + Name = name; + Age = age; + Sex = sex; + } + + @JsonProperty("username") + public String getName() { + return Name; + } + + public void setName(String name) { + Name = name; + } + + public int getAge() { + return Age; + } + + public void setAge(int age) { + Age = age; + } + + public String getSex() { + return Sex; + } + + public void setSex(String sex) { + Sex = sex; + } + +} diff --git a/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/jackson/JacksonPerformanceTests.java b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/jackson/JacksonPerformanceTests.java new file mode 100644 index 00000000..ed0054f2 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/jackson/JacksonPerformanceTests.java @@ -0,0 +1,53 @@ +package io.github.dunwu.javatech.json.jackson; + +import com.fasterxml.jackson.databind.ObjectMapper; +import io.github.dunwu.javatech.json.util.TestBean2; +import io.github.dunwu.javatech.json.util.BeanUtils; +import org.junit.Test; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Jackson 性能测试 + * + * @author Zhang Peng + * @since 2019-03-18 + */ +public class JacksonPerformanceTests { + + private static final int BATCH_SIZE = 100000; + + private final ObjectMapper mapper = new ObjectMapper(); + + /** + * 测试十次,每次序列化、反序列化 100000 条数据,平均耗时约 334 ms + */ + @Test + public void testPerformance() throws IOException { + long time = 0L; + for (int i = 0; i < 10; i++) { + time += donSerializeAndDeserialize(); + } + System.out.println(String.format("time: %d ms", TimeUnit.NANOSECONDS.toMillis(time / 10))); + } + + /** + * 循环序列化、反序列 {@link #BATCH_SIZE} 条数据,测试性能 + */ + private long donSerializeAndDeserialize() throws IOException { + TestBean2 bean = BeanUtils.initNotJdk8Bean(); + long begin = System.nanoTime(); + for (int i = 0; i < BATCH_SIZE; i++) { + String json = mapper.writeValueAsString(bean); + assertThat(json).isNotBlank(); + TestBean2 newBean = mapper.readValue(json, TestBean2.class); + assertThat(newBean).isNotNull(); + } + long end = System.nanoTime(); + return (end - begin); + } + +} diff --git a/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/jackson/JacksonTests.java b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/jackson/JacksonTests.java new file mode 100644 index 00000000..84104588 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/jackson/JacksonTests.java @@ -0,0 +1,101 @@ +package io.github.dunwu.javatech.json.jackson; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import io.github.dunwu.javatech.json.util.Person; +import org.junit.Assert; +import org.junit.Test; + +import java.io.IOException; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +/** + * Jackson 使用示例 + * + * @author Zhang Peng + * @since 2019-03-18 + */ +public class JacksonTests { + + final ObjectMapper mapper = new ObjectMapper(); + + /** + * 序列化测试 + */ + @Test + public void serialize() { + Person p = new Person("Tom", 20); + String json = null; + try { + json = mapper.writeValueAsString(p); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + Assert.assertNotNull(json); + System.out.println("json = [" + json + "]"); + } + + /** + * 反序列化测试 + */ + @Test + public void deserialize() { + final String json = "{\"age\":20,\"name\":\"Tom\"}"; + Person p = null; + try { + p = mapper.readValue(json, Person.class); + } catch (IOException e) { + e.printStackTrace(); + } + Assert.assertNotNull(p); + System.out.println("p = [" + p + "]"); + } + + /** + * 序列化测试 + */ + @Test + public void serialize2() { + Person p = new Person("Tom", 20); + Person p2 = new Person("Jack", 22); + Person p3 = new Person("Mary", 18); + + List persons = new LinkedList<>(); + persons.add(p); + persons.add(p2); + persons.add(p3); + + Map map = new HashMap<>(); + map.put("persons", persons); + + String json = null; + try { + json = mapper.writeValueAsString(map); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + + Assert.assertNotNull(json); + System.out.println("json = [" + json + "]"); + } + + /** + * 序列化测试 + */ + @Test + public void serialize3() { + JacksonAnnotationBean jacksonAnnotationBean = new JacksonAnnotationBean("jack", 19, "男"); + String json = null; + try { + json = mapper.writeValueAsString(jacksonAnnotationBean); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + Assert.assertNotNull(json); + System.out.println("json = [" + json + "]"); + } + +} diff --git a/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/BeanUtils.java b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/BeanUtils.java new file mode 100644 index 00000000..11411834 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/BeanUtils.java @@ -0,0 +1,68 @@ +package io.github.dunwu.javatech.json.util; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.*; + +/** + * @author Zhang Peng + * @since 2019-11-22 + */ +public class BeanUtils { + + public static Group initGroupBean() { + Group group = new Group(); + group.setId(0L); + group.setName("admin"); + + User guestUser = new User(); + guestUser.setId(2L); + guestUser.setName("guest"); + + User rootUser = new User(); + rootUser.setId(3L); + rootUser.setName("root"); + + group.addUser(guestUser); + group.addUser(rootUser); + + return group; + } + + public static TestBean initJdk8Bean() { + String[] strArray = { "a", "b", "c" }; + Integer[] intArray = { 1, 2, 3, 4, 5 }; + List intList = new ArrayList<>(); + intList.addAll(Arrays.asList(intArray)); + Map map = new HashMap<>(); + map.put("name", "jack"); + map.put("age", 18); + map.put("length", 175.3f); + TestBean bean = new TestBean(); + java.sql.Date date = java.sql.Date.valueOf("2019-11-22"); + LocalDateTime localDateTime = LocalDateTime.of(2000, 1, 1, 12, 0, 0); + LocalDate localDate = LocalDate.of(1949, 10, 1); + bean.setI1(10).setI2(1024).setF1(0.5f).setD1(100.0) + .setDate1(date).setDate2(localDateTime).setDate3(localDate) + .setColor(TestBean.Color.BLUE).setStrArray(strArray).setIntList(intList).setMap(map); + return bean; + } + + public static TestBean2 initNotJdk8Bean() { + String[] strArray = { "a", "b", "c" }; + Integer[] intArray = { 1, 2, 3, 4, 5 }; + List intList = new ArrayList<>(); + intList.addAll(Arrays.asList(intArray)); + Map map = new HashMap<>(); + map.put("name", "jack"); + map.put("age", 18); + map.put("length", 175.3f); + TestBean2 bean = new TestBean2(); + java.sql.Date date = java.sql.Date.valueOf("2019-11-22"); + bean.setI1(10).setI2(1024).setF1(0.5f).setD1(100.0) + .setDate1(date) + .setColor(TestBean2.Color.BLUE).setStrArray(strArray).setIntList(intList).setMap(map); + return bean; + } + +} diff --git a/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/DateUtil.java b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/DateUtil.java new file mode 100644 index 00000000..ce95f6ce --- /dev/null +++ b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/DateUtil.java @@ -0,0 +1,120 @@ +package io.github.dunwu.javatech.json.util; + +import java.time.Duration; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.util.Calendar; +import java.util.Date; + +/** + * @author Zhang Peng + * @since 2020-04-08 + */ +public class DateUtil extends cn.hutool.core.date.DateUtil { + + /** + * 将 {@link Calendar} 转化为 {@link Date} + * + * @param calendar {@link Calendar} + * @return {@link Date} + */ + public static Date toDate(final Calendar calendar) { + return calendar.getTime(); + } + + /** + * 将 {@link LocalDateTime} 转化为 {@link Date} + * + * @param localDateTime {@link LocalDateTime} + * @return {@link Date} + */ + public static Date toDate(final LocalDateTime localDateTime) { + ZoneId zoneId = ZoneId.systemDefault(); + ZonedDateTime zdt = localDateTime.atZone(zoneId); + return Date.from(zdt.toInstant()); + } + + public static String formatDurationString(Duration duration) { + Duration temp = duration; + StringBuilder sb = new StringBuilder(); + + long days = temp.toDays(); + if (days > 0) { + sb.append(days + "d "); + } + temp = temp.minusDays(days); + + long hours = temp.toHours(); + if (hours > 0) { + sb.append(hours + "h "); + } + temp = temp.minusHours(hours); + + long minutes = temp.toMinutes(); + if (minutes > 0) { + sb.append(minutes + "m "); + } + temp = temp.minusMinutes(minutes); + + long seconds = temp.getSeconds(); + if (seconds > 0) { + sb.append(minutes + "s "); + } + temp = temp.minusSeconds(seconds); + + long millis = temp.toMillis(); + if (millis > 0) { + sb.append(millis + "ms "); + } + temp = temp.minusMillis(millis); + + long nanos = temp.toNanos(); + if (nanos > 0) { + sb.append(nanos + "ns "); + } + return sb.toString(); + } + + public static String formatDurationChineseString(Duration duration) { + Duration temp = duration; + StringBuilder sb = new StringBuilder(); + + long days = temp.toDays(); + if (days > 0) { + sb.append(days + "天 "); + } + temp = temp.minusDays(days); + + long hours = temp.toHours(); + if (hours > 0) { + sb.append(hours + "时 "); + } + temp = temp.minusHours(hours); + + long minutes = temp.toMinutes(); + if (minutes > 0) { + sb.append(minutes + "分 "); + } + temp = temp.minusMinutes(minutes); + + long seconds = temp.getSeconds(); + if (seconds > 0) { + sb.append(minutes + "秒 "); + } + temp = temp.minusSeconds(seconds); + + long millis = temp.toMillis(); + if (millis > 0) { + sb.append(millis + "毫秒 "); + } + temp = temp.minusMillis(millis); + + long nanos = temp.toNanos(); + if (nanos > 0) { + sb.append(nanos + "纳秒 "); + } + return sb.toString(); + } + +} diff --git a/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/Group.java b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/Group.java new file mode 100644 index 00000000..5e985bf8 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/Group.java @@ -0,0 +1,42 @@ +package io.github.dunwu.javatech.json.util; + +import java.util.ArrayList; +import java.util.List; + +public class Group { + + private Long id; + + private String name; + + private List users = new ArrayList<>(); + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List getUsers() { + return users; + } + + public void setUsers(List users) { + this.users = users; + } + + public void addUser(User user) { + this.users.add(user); + } + +} diff --git a/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/Person.java b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/Person.java new file mode 100644 index 00000000..ed356a1a --- /dev/null +++ b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/Person.java @@ -0,0 +1,42 @@ +package io.github.dunwu.javatech.json.util; + +import java.io.Serializable; + +public class Person implements Serializable { + + private static final long serialVersionUID = -210388541252854256L; + + private String name; + + private int age; + + public Person() { + } + + public Person(String name, int age) { + this.name = name; + this.age = age; + } + + @Override + public String toString() { + return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + +} diff --git a/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/TestBean.java b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/TestBean.java new file mode 100644 index 00000000..dc597764 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/TestBean.java @@ -0,0 +1,59 @@ +package io.github.dunwu.javatech.json.util; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * 定义一个满足大多数情况的 Bean 结构(含 JDK8 数据类型),使得各种 Json 库测试性能时能相对公平 + * + * @author Zhang Peng + * @since 2019-11-22 + */ +@Data +@ToString +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +public class TestBean implements Serializable { + + private static final long serialVersionUID = -6473181683996762084L; + + private int i1; + + private Integer i2; + + private float f1; + + private Double d1; + + private Date date1; + + private LocalDateTime date2; + + private LocalDate date3; + + private Color color; + + private String[] strArray; + + private List intList; + + private Map map; + + public static enum Color { + RED, + YELLOW, + BLUE + } + +} diff --git a/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/TestBean2.java b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/TestBean2.java new file mode 100644 index 00000000..ea1cfe88 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/TestBean2.java @@ -0,0 +1,50 @@ +package io.github.dunwu.javatech.json.util; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * 定义一个满足大多数情况的 Bean 结构(不含 JDK8 数据类型),使得各种 Json 库测试性能时能相对公平 + * + * @author Zhang Peng + * @since 2019-11-22 + */ +@Data +@ToString +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +public class TestBean2 { + + private int i1; + + private Integer i2; + + private float f1; + + private Double d1; + + private Date date1; + + private Color color; + + private String[] strArray; + + private List intList; + + private Map map; + + public static enum Color { + RED, + YELLOW, + BLUE + } + +} diff --git a/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/User.java b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/User.java new file mode 100644 index 00000000..758293e3 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-json/src/test/java/io/github/dunwu/javatech/json/util/User.java @@ -0,0 +1,35 @@ +package io.github.dunwu.javatech.json.util; + +public class User { + + private Long id; + + private String name; + + public User() { + } + + public User(Long id, String name) { + this.id = id; + this.name = name; + } + + public Long getId() { + return id; + } + + public User setId(Long id) { + this.id = id; + return this; + } + + public String getName() { + return name; + } + + public User setName(String name) { + this.name = name; + return this; + } + +} diff --git a/codes/javatech/javatech-io/javatech-serialize/pom.xml b/codes/javatech/javatech-io/javatech-serialize/pom.xml new file mode 100644 index 00000000..6203d0b2 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-serialize/pom.xml @@ -0,0 +1,56 @@ + + + 4.0.0 + + + io.github.dunwu + dunwu-parent + 1.0.7 + + + io.github.dunwu.javatech + javatech-serialize + 1.0.0 + jar + Java IO 序列化示例 + + + + + + + + de.ruedigermoeller + fst + 2.56 + + + com.esotericsoftware + kryo + 5.0.0-RC4 + + + cn.hutool + hutool-all + + + org.projectlombok + lombok + + + + + junit + junit + test + + + org.assertj + assertj-core + test + + + + diff --git a/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/FstDemo.java b/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/FstDemo.java new file mode 100644 index 00000000..0ea4cc52 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/FstDemo.java @@ -0,0 +1,73 @@ +package io.github.dunwu.javatech.io; + +import org.nustaq.serialization.FSTConfiguration; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.Base64; + +/** + * FST 序列化/反序列化示例 + * + * @author Zhang Peng + * @see FST + * @since 2019-11-22 + */ +public class FstDemo { + + private static FSTConfiguration DEFAULT_CONFIG = FSTConfiguration.createDefaultConfiguration(); + + /** + * 将字符串反序列化为原对象,先使用 Base64 解码 + * + * @param str {@link #writeToString} 方法序列化后的字符串 + * @param clazz 原对象的类型 + * @param 原对象的类型 + * @return 原对象 + */ + public static T readFromString(String str, Class clazz) throws IOException { + byte[] bytes = str.getBytes(StandardCharsets.UTF_8); + return readFromBytes(Base64.getDecoder().decode(bytes), clazz); + } + + /** + * 将 byte 数组反序列化为原对象 + * + * @param bytes {@link #writeToBytes} 方法序列化后的 byte 数组 + * @param clazz 原对象的类型 + * @param 原对象的类型 + * @return 原对象 + */ + public static T readFromBytes(byte[] bytes, Class clazz) throws IOException { + Object obj = DEFAULT_CONFIG.asObject(bytes); + if (clazz.isInstance(obj)) { + return (T) obj; + } else { + throw new IOException("derialize failed"); + } + } + + /** + * 将对象序列化为 byte 数组后,再使用 Base64 编码 + * + * @param obj 任意对象 + * @param 对象的类型 + * @return 序列化后的字符串 + */ + public static String writeToString(T obj) { + byte[] bytes = writeToBytes(obj); + return new String(Base64.getEncoder().encode(bytes), StandardCharsets.UTF_8); + } + + /** + * 将对象序列化为 byte 数组 + * + * @param obj 任意对象 + * @param 对象的类型 + * @return 序列化后的 byte 数组 + */ + public static byte[] writeToBytes(T obj) { + return DEFAULT_CONFIG.asByteArray(obj); + } + +} diff --git a/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/JdkSerializeDemo.java b/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/JdkSerializeDemo.java new file mode 100644 index 00000000..7c86ae32 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/JdkSerializeDemo.java @@ -0,0 +1,78 @@ +package io.github.dunwu.javatech.io; + +import java.io.*; +import java.nio.charset.StandardCharsets; +import java.util.Base64; + +/** + * JDK 默认序列化、反序列化机制示例 + * + * @author Zhang Peng + * @since 2019-11-22 + */ +public class JdkSerializeDemo { + + /** + * 将字符串反序列化为原对象,先使用 Base64 解码 + * + * @param str {@link #writeToString} 方法序列化后的字符串 + * @param clazz 原对象的类型 + * @param 原对象的类型 + * @return 原对象 + */ + public static T readFromString(String str, Class clazz) throws IOException, ClassNotFoundException { + byte[] bytes = str.getBytes(StandardCharsets.UTF_8); + return readFromBytes(Base64.getDecoder().decode(bytes), clazz); + } + + /** + * 将 byte 数组反序列化为原对象 + * + * @param bytes {@link #writeToBytes} 方法序列化后的 byte 数组 + * @param clazz 原对象的类型 + * @param 原对象的类型 + * @return 原对象 + */ + public static T readFromBytes(byte[] bytes, Class clazz) throws IOException, ClassNotFoundException { + ByteArrayInputStream bais = new ByteArrayInputStream(bytes); + ObjectInputStream ois = new ObjectInputStream(bais); + Object obj = ois.readObject(); + bais.close(); + ois.close(); + if (clazz.isInstance(obj)) { + return (T) obj; + } else { + throw new IOException("derialize failed"); + } + } + + /** + * 将对象序列化为 byte 数组后,再使用 Base64 编码 + * + * @param obj 任意对象 + * @param 对象的类型 + * @return 序列化后的字符串 + */ + public static String writeToString(T obj) throws IOException { + byte[] bytes = writeToBytes(obj); + return new String(Base64.getEncoder().encode(bytes), StandardCharsets.UTF_8); + } + + /** + * 将对象序列化为 byte 数组 + * + * @param obj 任意对象 + * @param 对象的类型 + * @return 序列化后的 byte 数组 + */ + public static byte[] writeToBytes(T obj) throws IOException { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ObjectOutputStream oos = new ObjectOutputStream(baos); + oos.writeObject(obj); + byte[] bytes = baos.toByteArray(); + baos.close(); + oos.close(); + return bytes; + } + +} diff --git a/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/KryoDemo.java b/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/KryoDemo.java new file mode 100644 index 00000000..bf333215 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/KryoDemo.java @@ -0,0 +1,114 @@ +package io.github.dunwu.javatech.io; + +import com.esotericsoftware.kryo.Kryo; +import com.esotericsoftware.kryo.io.Input; +import com.esotericsoftware.kryo.io.Output; +import com.esotericsoftware.kryo.util.DefaultInstantiatorStrategy; +import org.objenesis.strategy.StdInstantiatorStrategy; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.nio.charset.StandardCharsets; +import java.util.Base64; + +/** + * Kyro 序列化/反序列化示例 + * + * @author Zhang Peng + * @author Kryo 应用指南 + * @since 2019-11-26 + */ +public class KryoDemo { + + // 每个线程的 Kryo 实例 + private static final ThreadLocal kryoLocal = ThreadLocal.withInitial(() -> { + Kryo kryo = new Kryo(); + + /** + * 不要轻易改变这里的配置!更改之后,序列化的格式就会发生变化, + * 上线的同时就必须清除 Redis 里的所有缓存, + * 否则那些缓存再回来反序列化的时候,就会报错 + */ + //支持对象循环引用(否则会栈溢出) + kryo.setReferences(true); //默认值就是 true,添加此行的目的是为了提醒维护者,不要改变这个配置 + + //不强制要求注册类(注册行为无法保证多个 JVM 内同一个类的注册编号相同;而且业务系统中大量的 Class 也难以一一注册) + kryo.setRegistrationRequired(false); //默认值就是 false,添加此行的目的是为了提醒维护者,不要改变这个配置 + + //Fix the NPE bug when deserializing Collections. + ((DefaultInstantiatorStrategy) kryo.getInstantiatorStrategy()) + .setFallbackInstantiatorStrategy(new StdInstantiatorStrategy()); + + return kryo; + }); + + /** + * 将字符串反序列化为原对象,先使用 Base64 解码 + * + * @param str {@link #writeToString} 方法序列化后的字符串 + * @param clazz 原对象的类型 + * @param 原对象的类型 + * @return 原对象 + */ + public static T readFromString(String str, Class clazz) { + byte[] bytes = str.getBytes(StandardCharsets.UTF_8); + return readFromBytes(Base64.getDecoder().decode(bytes), clazz); + } + + /** + * 将 byte 数组反序列化为原对象 + * + * @param bytes {@link #writeToBytes} 方法序列化后的 byte 数组 + * @param clazz 原对象的类型 + * @param 原对象的类型 + * @return 原对象 + */ + @SuppressWarnings("unchecked") + public static T readFromBytes(byte[] bytes, Class clazz) { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); + Input input = new Input(byteArrayInputStream); + + Kryo kryo = getInstance(); + return (T) kryo.readObject(input, clazz); + } + + /** + * 获得当前线程的 Kryo 实例 + * + * @return 当前线程的 Kryo 实例 + */ + public static Kryo getInstance() { + return kryoLocal.get(); + } + + /** + * 将对象序列化为 byte 数组后,再使用 Base64 编码 + * + * @param obj 任意对象 + * @param 对象的类型 + * @return 序列化后的字符串 + */ + public static String writeToString(T obj) { + byte[] bytes = writeToBytes(obj); + return new String(Base64.getEncoder().encode(bytes), StandardCharsets.UTF_8); + } + + /** + * 将对象序列化为 byte 数组 + * + * @param obj 任意对象 + * @param 对象的类型 + * @return 序列化后的 byte 数组 + */ + public static byte[] writeToBytes(T obj) { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + Output output = new Output(byteArrayOutputStream); + + Kryo kryo = getInstance(); + kryo.writeObject(output, obj); + output.flush(); + + return byteArrayOutputStream.toByteArray(); + } + +} diff --git a/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/BeanUtils.java b/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/BeanUtils.java new file mode 100644 index 00000000..06d6fe5f --- /dev/null +++ b/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/BeanUtils.java @@ -0,0 +1,68 @@ +package io.github.dunwu.javatech.io.util; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.*; + +/** + * @author Zhang Peng + * @since 2019-11-22 + */ +public class BeanUtils { + + public static Group initGroupBean() { + Group group = new Group(); + group.setId(0L); + group.setName("admin"); + + User guestUser = new User(); + guestUser.setId(2L); + guestUser.setName("guest"); + + User rootUser = new User(); + rootUser.setId(3L); + rootUser.setName("root"); + + group.addUser(guestUser); + group.addUser(rootUser); + + return group; + } + + public static TestBean initJdk8Bean() { + String[] strArray = { "a", "b", "c" }; + Integer[] intArray = { 1, 2, 3, 4, 5 }; + List intList = new ArrayList<>(); + intList.addAll(Arrays.asList(intArray)); + Map map = new HashMap<>(); + map.put("name", "jack"); + map.put("age", 18); + map.put("length", 175.3f); + TestBean bean = new TestBean(); + java.sql.Date date = java.sql.Date.valueOf("2019-11-22"); + LocalDateTime localDateTime = LocalDateTime.of(2000, 1, 1, 12, 0, 0); + LocalDate localDate = LocalDate.of(1949, 10, 1); + bean.setI1(10).setI2(1024).setF1(0.5f).setD1(100.0) + .setDate1(date).setDate2(localDateTime).setDate3(localDate) + .setColor(TestBean.Color.BLUE).setStrArray(strArray).setIntList(intList).setMap(map); + return bean; + } + + public static TestBean2 initNotJdk8Bean() { + String[] strArray = { "a", "b", "c" }; + Integer[] intArray = { 1, 2, 3, 4, 5 }; + List intList = new ArrayList<>(); + intList.addAll(Arrays.asList(intArray)); + Map map = new HashMap<>(); + map.put("name", "jack"); + map.put("age", 18); + map.put("length", 175.3f); + TestBean2 bean = new TestBean2(); + java.sql.Date date = java.sql.Date.valueOf("2019-11-22"); + bean.setI1(10).setI2(1024).setF1(0.5f).setD1(100.0) + .setDate1(date) + .setColor(TestBean2.Color.BLUE).setStrArray(strArray).setIntList(intList).setMap(map); + return bean; + } + +} diff --git a/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/DateUtil.java b/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/DateUtil.java new file mode 100644 index 00000000..5e8554e7 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/DateUtil.java @@ -0,0 +1,120 @@ +package io.github.dunwu.javatech.io.util; + +import java.time.Duration; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.util.Calendar; +import java.util.Date; + +/** + * @author Zhang Peng + * @since 2020-04-08 + */ +public class DateUtil extends cn.hutool.core.date.DateUtil { + + /** + * 将 {@link Calendar} 转化为 {@link Date} + * + * @param calendar {@link Calendar} + * @return {@link Date} + */ + public static Date toDate(final Calendar calendar) { + return calendar.getTime(); + } + + /** + * 将 {@link LocalDateTime} 转化为 {@link Date} + * + * @param localDateTime {@link LocalDateTime} + * @return {@link Date} + */ + public static Date toDate(final LocalDateTime localDateTime) { + ZoneId zoneId = ZoneId.systemDefault(); + ZonedDateTime zdt = localDateTime.atZone(zoneId); + return Date.from(zdt.toInstant()); + } + + public static String formatDurationString(Duration duration) { + Duration temp = duration; + StringBuilder sb = new StringBuilder(); + + long days = temp.toDays(); + if (days > 0) { + sb.append(days + "d "); + } + temp = temp.minusDays(days); + + long hours = temp.toHours(); + if (hours > 0) { + sb.append(hours + "h "); + } + temp = temp.minusHours(hours); + + long minutes = temp.toMinutes(); + if (minutes > 0) { + sb.append(minutes + "m "); + } + temp = temp.minusMinutes(minutes); + + long seconds = temp.getSeconds(); + if (seconds > 0) { + sb.append(minutes + "s "); + } + temp = temp.minusSeconds(seconds); + + long millis = temp.toMillis(); + if (millis > 0) { + sb.append(millis + "ms "); + } + temp = temp.minusMillis(millis); + + long nanos = temp.toNanos(); + if (nanos > 0) { + sb.append(nanos + "ns "); + } + return sb.toString(); + } + + public static String formatDurationChineseString(Duration duration) { + Duration temp = duration; + StringBuilder sb = new StringBuilder(); + + long days = temp.toDays(); + if (days > 0) { + sb.append(days + "天 "); + } + temp = temp.minusDays(days); + + long hours = temp.toHours(); + if (hours > 0) { + sb.append(hours + "时 "); + } + temp = temp.minusHours(hours); + + long minutes = temp.toMinutes(); + if (minutes > 0) { + sb.append(minutes + "分 "); + } + temp = temp.minusMinutes(minutes); + + long seconds = temp.getSeconds(); + if (seconds > 0) { + sb.append(minutes + "秒 "); + } + temp = temp.minusSeconds(seconds); + + long millis = temp.toMillis(); + if (millis > 0) { + sb.append(millis + "毫秒 "); + } + temp = temp.minusMillis(millis); + + long nanos = temp.toNanos(); + if (nanos > 0) { + sb.append(nanos + "纳秒 "); + } + return sb.toString(); + } + +} diff --git a/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/Group.java b/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/Group.java new file mode 100644 index 00000000..aee30634 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/Group.java @@ -0,0 +1,42 @@ +package io.github.dunwu.javatech.io.util; + +import java.util.ArrayList; +import java.util.List; + +public class Group { + + private Long id; + + private String name; + + private List users = new ArrayList<>(); + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List getUsers() { + return users; + } + + public void setUsers(List users) { + this.users = users; + } + + public void addUser(User user) { + this.users.add(user); + } + +} diff --git a/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/Person.java b/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/Person.java new file mode 100644 index 00000000..9fb539b8 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/Person.java @@ -0,0 +1,42 @@ +package io.github.dunwu.javatech.io.util; + +import java.io.Serializable; + +public class Person implements Serializable { + + private static final long serialVersionUID = -210388541252854256L; + + private String name; + + private int age; + + public Person() { + } + + public Person(String name, int age) { + this.name = name; + this.age = age; + } + + @Override + public String toString() { + return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + +} diff --git a/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/TestBean.java b/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/TestBean.java new file mode 100644 index 00000000..61600f3f --- /dev/null +++ b/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/TestBean.java @@ -0,0 +1,59 @@ +package io.github.dunwu.javatech.io.util; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * 定义一个满足大多数情况的 Bean 结构(含 JDK8 数据类型),使得各种 Json 库测试性能时能相对公平 + * + * @author Zhang Peng + * @since 2019-11-22 + */ +@Data +@ToString +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +public class TestBean implements Serializable { + + private static final long serialVersionUID = -6473181683996762084L; + + private int i1; + + private Integer i2; + + private float f1; + + private Double d1; + + private Date date1; + + private LocalDateTime date2; + + private LocalDate date3; + + private Color color; + + private String[] strArray; + + private List intList; + + private Map map; + + public static enum Color { + RED, + YELLOW, + BLUE + } + +} diff --git a/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/TestBean2.java b/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/TestBean2.java new file mode 100644 index 00000000..5ee6e62c --- /dev/null +++ b/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/TestBean2.java @@ -0,0 +1,50 @@ +package io.github.dunwu.javatech.io.util; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * 定义一个满足大多数情况的 Bean 结构(不含 JDK8 数据类型),使得各种 Json 库测试性能时能相对公平 + * + * @author Zhang Peng + * @since 2019-11-22 + */ +@Data +@ToString +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +public class TestBean2 { + + private int i1; + + private Integer i2; + + private float f1; + + private Double d1; + + private Date date1; + + private Color color; + + private String[] strArray; + + private List intList; + + private Map map; + + public static enum Color { + RED, + YELLOW, + BLUE + } + +} diff --git a/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/User.java b/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/User.java new file mode 100644 index 00000000..987441b7 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-serialize/src/main/java/io/github/dunwu/javatech/io/util/User.java @@ -0,0 +1,35 @@ +package io.github.dunwu.javatech.io.util; + +public class User { + + private Long id; + + private String name; + + public User() { + } + + public User(Long id, String name) { + this.id = id; + this.name = name; + } + + public Long getId() { + return id; + } + + public User setId(Long id) { + this.id = id; + return this; + } + + public String getName() { + return name; + } + + public User setName(String name) { + this.name = name; + return this; + } + +} diff --git a/codes/javatech/javatech-io/javatech-serialize/src/test/java/io/github/dunwu/javatech/io/SerializePerformanceTest.java b/codes/javatech/javatech-io/javatech-serialize/src/test/java/io/github/dunwu/javatech/io/SerializePerformanceTest.java new file mode 100644 index 00000000..7c551739 --- /dev/null +++ b/codes/javatech/javatech-io/javatech-serialize/src/test/java/io/github/dunwu/javatech/io/SerializePerformanceTest.java @@ -0,0 +1,63 @@ +package io.github.dunwu.javatech.io; + +import io.github.dunwu.javatech.io.util.BeanUtils; +import io.github.dunwu.javatech.io.util.TestBean; +import org.junit.Test; + +import java.io.IOException; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * 序列化、反序列化性能测试 + * + * @author Zhang Peng + * @since 2019-11-22 + */ +public class SerializePerformanceTest { + + private static final int BATCH_SIZE = 100000; + + @Test + public void testJdkSerialize() throws IOException, ClassNotFoundException { + long begin = System.currentTimeMillis(); + for (int i = 0; i < BATCH_SIZE; i++) { + TestBean oldBean = BeanUtils.initJdk8Bean(); + byte[] bytes = JdkSerializeDemo.writeToBytes(oldBean); + assertThat(bytes).isNotEmpty(); + TestBean newBean = JdkSerializeDemo.readFromBytes(bytes, TestBean.class); + assertThat(newBean).isNotNull(); + } + long end = System.currentTimeMillis(); + System.out.printf("JDK 默认序列化/反序列化耗时:%s", (end - begin)); + } + + @Test + public void testFst() throws IOException { + long begin = System.currentTimeMillis(); + for (int i = 0; i < BATCH_SIZE; i++) { + TestBean oldBean = BeanUtils.initJdk8Bean(); + byte[] bytes = FstDemo.writeToBytes(oldBean); + assertThat(bytes).isNotEmpty(); + TestBean newBean = FstDemo.readFromBytes(bytes, TestBean.class); + assertThat(newBean).isNotNull(); + } + long end = System.currentTimeMillis(); + System.out.printf("FST 序列化/反序列化耗时:%s", (end - begin)); + } + + @Test + public void testKryo() throws IOException { + long begin = System.currentTimeMillis(); + for (int i = 0; i < BATCH_SIZE; i++) { + TestBean oldBean = BeanUtils.initJdk8Bean(); + byte[] bytes = KryoDemo.writeToBytes(oldBean); + assertThat(bytes).isNotEmpty(); + TestBean newBean = KryoDemo.readFromBytes(bytes, TestBean.class); + assertThat(newBean).isNotNull(); + } + long end = System.currentTimeMillis(); + System.out.printf("Kryo 序列化/反序列化耗时:%s", (end - begin)); + } + +} diff --git a/codes/javatech/javatech-io/pom.xml b/codes/javatech/javatech-io/pom.xml new file mode 100644 index 00000000..ed8b3f0c --- /dev/null +++ b/codes/javatech/javatech-io/pom.xml @@ -0,0 +1,19 @@ + + + 4.0.0 + + io.github.dunwu.javatech + javatech-io + 1.0.0 + pom + Java IO + + + javatech-bean + javatech-json + javatech-serialize + javatech-file-parser + + diff --git a/codes/javatech/javatech-lib/pom.xml b/codes/javatech/javatech-lib/pom.xml new file mode 100644 index 00000000..d500e8c9 --- /dev/null +++ b/codes/javatech/javatech-lib/pom.xml @@ -0,0 +1,47 @@ + + + 4.0.0 + + + io.github.dunwu + dunwu-parent + 1.0.7 + + + io.github.dunwu.javatech + javatech-lib + 1.0.0 + + + + org.reflections + reflections + 0.10.2 + + + org.dom4j + dom4j + 2.1.3 + + + + + org.junit.jupiter + junit-jupiter + test + + + junit + junit + test + + + org.assertj + assertj-core + test + + + + diff --git a/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ClasspathHelperTest.java b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ClasspathHelperTest.java new file mode 100644 index 00000000..3cf0c169 --- /dev/null +++ b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ClasspathHelperTest.java @@ -0,0 +1,41 @@ +package io.github.dunwu.javatech.reflections; + +import org.junit.jupiter.api.Test; +import org.reflections.util.ClasspathHelper; + +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; + +/** + * Test ClasspathHelper utility class + */ +public final class ClasspathHelperTest { + + @Test + public void testForClassLoaderShouldntReorderUrls() throws MalformedURLException { + // testing same URL set with different order to not fall into the case when HashSet orders elements in the same order as we do + final URL[] urls1 = { new URL("file", "foo", 1111, "foo"), new URL("file", "bar", 1111, "bar"), + new URL("file", "baz", 1111, "baz") }; + final List urlsList2 = Arrays.asList(urls1); + Collections.reverse(urlsList2); + final URL[] urls2 = urlsList2.toArray(new URL[0]); + + final URLClassLoader urlClassLoader1 = new URLClassLoader(urls1, null); + final URLClassLoader urlClassLoader2 = new URLClassLoader(urls2, null); + final Collection resultUrls1 = ClasspathHelper.forClassLoader(urlClassLoader1); + final Collection resultUrls2 = ClasspathHelper.forClassLoader(urlClassLoader2); + + assertArrayEquals(urls1, resultUrls1.toArray(), + "URLs returned from forClassLoader should be in the same order as source URLs"); + assertArrayEquals(urls2, resultUrls2.toArray(), + "URLs returned from forClassLoader should be in the same order as source URLs"); + } + +} diff --git a/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/CombinedTestModel.java b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/CombinedTestModel.java new file mode 100644 index 00000000..10b0fc93 --- /dev/null +++ b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/CombinedTestModel.java @@ -0,0 +1,77 @@ +package io.github.dunwu.javatech.reflections; + +import java.lang.annotation.Repeatable; +import java.lang.annotation.Retention; + +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +interface CombinedTestModel { + + @Retention(RUNTIME) + @interface Alias { + + String value(); + + } + + @Retention(RUNTIME) + @interface Requests { + + Request[] value(); + + } + + @Retention(RUNTIME) + @Repeatable(Requests.class) + @interface Request { + + @Alias("path") String value() default ""; + + String method() default ""; + + } + + @Retention(RUNTIME) + @Request(method = "Get") + @interface Get { + + String value(); + + } + + @Retention(RUNTIME) + @Request(method = "Post") + @interface Post { + + String value(); + + } + + @Request("/base") + interface Controller { + + @Get("/get") + void get(); + + @Post("/post") + void post(Object object); + + } + + abstract class Abstract implements Controller { + + @Override + public void get() {} + + } + + class Impl extends Abstract { + + @Requests({ @Request(method = "PUT", value = "/another"), + @Request(method = "PATCH", value = "/another") }) + @Override + public void post(Object object) {} + + } + +} diff --git a/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ConfigurationBuilderTest.java b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ConfigurationBuilderTest.java new file mode 100644 index 00000000..ebf09531 --- /dev/null +++ b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ConfigurationBuilderTest.java @@ -0,0 +1,51 @@ +package io.github.dunwu.javatech.reflections; + +import org.junit.jupiter.api.Test; +import org.reflections.ReflectionsException; +import org.reflections.scanners.Scanners; +import org.reflections.util.ClasspathHelper; +import org.reflections.util.ConfigurationBuilder; +import org.reflections.util.FilterBuilder; + +import java.net.URL; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashSet; +import java.util.function.Predicate; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class ConfigurationBuilderTest { + + @Test + public void buildForConfig() { + assertConfig(ConfigurationBuilder.build("io.github.dunwu.javatech.reflections"), + ClasspathHelper.forPackage("io.github.dunwu.javatech.reflections"), + new FilterBuilder().includePackage("io.github.dunwu.javatech.reflections")); + + assertConfig(ConfigurationBuilder.build("io"), + ClasspathHelper.forPackage("io"), + new FilterBuilder().includePackage("io")); + } + + @Test + public void buildFor() { + assertThrows(ReflectionsException.class, () -> ConfigurationBuilder.build("")); + + assertConfig(ConfigurationBuilder.build(), + ClasspathHelper.forClassLoader(), + new FilterBuilder()); + + assertConfig(ConfigurationBuilder.build("not.exist"), + ClasspathHelper.forClassLoader(), + new FilterBuilder().includePackage("not.exist")); + } + + private void assertConfig(ConfigurationBuilder config, Collection urls, Predicate inputsFilter) { + assertEquals(config.getUrls(), new HashSet<>(urls)); + assertEquals(config.getInputsFilter(), inputsFilter); + assertEquals(config.getScanners(), new HashSet<>(Arrays.asList(Scanners.SubTypes, Scanners.TypesAnnotated))); + } + +} diff --git a/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/FilterBuilderTest.java b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/FilterBuilderTest.java new file mode 100644 index 00000000..a8276f51 --- /dev/null +++ b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/FilterBuilderTest.java @@ -0,0 +1,54 @@ +package io.github.dunwu.javatech.reflections; + +import org.junit.jupiter.api.Test; +import org.reflections.util.FilterBuilder; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class FilterBuilderTest { + + @Test + public void includeExcludePackage() { + FilterBuilder filter = new FilterBuilder() + .includePackage("io.github.dunwu.javatech.reflections") + .excludePackage("io.github.dunwu.javatech.reflections.exclude") + .includePackage("io.foo"); + + doAssert(filter); + } + + @Test + public void parsePackages() { + FilterBuilder filter = FilterBuilder + .parsePackages("+io.github.dunwu.javatech.reflections , -io.github.dunwu.javatech.reflections.exclude,+io.foo"); // not trimmed + + doAssert(filter); + } + + @Test + public void includeExcludePattern() { + FilterBuilder filter = new FilterBuilder() + .includePattern("io\\.github\\.dunwu\\.javatech\\.reflections\\..*") + .excludePattern("io\\.github\\.dunwu\\.javatech\\.reflections\\.exclude\\..*") + .includePattern("io\\.foo\\..*"); + + doAssert(filter); + } + + private void doAssert(FilterBuilder filter) { + assertFalse(filter.test("")); + assertFalse(filter.test("io")); + assertFalse(filter.test("io.")); + assertFalse(filter.test("io.github.dunwu.javatech.reflections")); + assertTrue(filter.test("io.github.dunwu.javatech.reflections.")); + assertTrue(filter.test("io.github.dunwu.javatech.reflections.Reflections")); + assertTrue(filter.test("io.github.dunwu.javatech.reflections.foo.Reflections")); + assertFalse(filter.test("io.github.dunwu.javatech.reflections.exclude.it")); + assertFalse(filter.test("io.foo")); + assertTrue(filter.test("io.foo.")); + assertTrue(filter.test("io.foo.bar")); + assertFalse(filter.test("io.bar.Reflections")); + } + +} diff --git a/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/JavaCodeSerializerTest.java b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/JavaCodeSerializerTest.java new file mode 100644 index 00000000..7da8c666 --- /dev/null +++ b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/JavaCodeSerializerTest.java @@ -0,0 +1,31 @@ +package io.github.dunwu.javatech.reflections; + +import org.junit.jupiter.api.Test; +import org.reflections.Reflections; +import org.reflections.scanners.TypeElementsScanner; +import org.reflections.serializers.JavaCodeSerializer; +import org.reflections.util.FilterBuilder; +import org.reflections.util.NameHelper; + +public class JavaCodeSerializerTest implements NameHelper { + + public JavaCodeSerializerTest() { + FilterBuilder filterBuilder = new FilterBuilder().includePattern("io\\.github\\.dunwu\\.javatech\\.reflections\\.TestModel\\$.*"); + Reflections reflections = new Reflections( + TestModel.class, + new TypeElementsScanner().filterResultsBy(filterBuilder), + filterBuilder); + + String filename = ReflectionsTest.getUserDir() + "/src/test/java/io.github.dunwu.javatech.reflections.MyTestModelStore"; + reflections.save(filename, new JavaCodeSerializer()); + } + + @Test + public void check() { + // MyTestModelStore contains TestModel type elements + Class c1 = MyTestModelStore.io.github.dunwu.javatech.reflections.TestModel$C1.class; + Class ac1 = MyTestModelStore.io.github.dunwu.javatech.reflections.TestModel$C1.annotations.io_github_dunwu_javatech_reflections_TestModel$AC1.class; + Class f1 = MyTestModelStore.io.github.dunwu.javatech.reflections.TestModel$C4.fields.f1.class; + Class m1 = MyTestModelStore.io.github.dunwu.javatech.reflections.TestModel$C4.methods.m1.class; + } +} diff --git a/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/JdkTests.java b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/JdkTests.java new file mode 100644 index 00000000..4f4cb69e --- /dev/null +++ b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/JdkTests.java @@ -0,0 +1,273 @@ +package io.github.dunwu.javatech.reflections; + +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.reflections.ReflectionUtils; +import org.reflections.Reflections; +import org.reflections.ReflectionsException; +import org.reflections.scanners.Scanner; +import org.reflections.scanners.Scanners; +import org.reflections.util.ClasspathHelper; +import org.reflections.util.ConfigurationBuilder; +import org.reflections.util.UtilQueryBuilder; +import org.reflections.vfs.Vfs; + +import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.AnnotatedElement; +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.net.URI; +import java.net.URL; +import java.nio.file.FileSystems; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.*; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.reflections.ReflectionUtils.get; + +/** + * test reflection symmetry between jrt scanned metadata (Scanners) and java reflection accessibility (ReflectionUtils + * functions). + *

except for known differences per jdk version, these pairs should access similar metadata: + * SubTypes/SuperTypes, TypesAnnotated/AnnotatedTypes, MethodsAnnotated/AnnotatedTypes, Resources etc... + *

tested with AdoptOpenJDK + */ +@SuppressWarnings({ "ArraysAsListWithZeroOrOneArgument" }) +public class JdkTests { + + private static Reflections reflections; + + @BeforeAll + static void init() { + if (!Vfs.getDefaultUrlTypes().get(0).getClass().equals(JrtUrlType.class)) { + Vfs.addDefaultURLTypes(new JrtUrlType()); + } + URL urls = ClasspathHelper.forClass(Object.class); + measure("before"); + + reflections = new Reflections( + new ConfigurationBuilder() + .addUrls(urls) + .setScanners(Scanners.values())); + + measure("scan"); + } + + @AfterAll + static void cleanup() { + if (Vfs.getDefaultUrlTypes().get(0).getClass().equals(JrtUrlType.class)) { + Vfs.getDefaultUrlTypes().remove(0); + } + reflections.getStore().clear(); + measure("cleanup"); + } + + @Test + public void checkSubTypes() { + Map> diff = reflect( + Scanners.SubTypes, + ReflectionUtils.SuperTypes, + Class.class); + + assertEquals(diff, Collections.emptyMap()); + } + + @Test + public void checkTypesAnnotated() { + Map> diff = reflect( + Scanners.TypesAnnotated, + ReflectionUtils.AnnotationTypes, + Class.class); + + Arrays.asList("jdk.internal.PreviewFeature", // jdk 15 + "jdk.internal.javac.PreviewFeature") // jdk 17 + .forEach(diff::remove); + assertEquals(diff, Collections.emptyMap()); + } + + @Test + public void checkMethodsAnnotated() { + Map> diff = reflect( + Scanners.MethodsAnnotated, + ReflectionUtils.AnnotationTypes, + Method.class); + + // todo fix differences @A2 such as - @A1 public @A2 result method(...) + Arrays.asList("com.sun.istack.internal.NotNull", // jdk 8 + "com.sun.istack.internal.Nullable", + "sun.reflect.CallerSensitive", + "java.lang.invoke.LambdaForm$Hidden", + "jdk.internal.reflect.CallerSensitive", // jdk 11, 13, 15 + "jdk.internal.PreviewFeature") // jdk 15 + .forEach(diff::remove); + assertEquals(diff, Collections.emptyMap()); + } + + @Test + public void checkConstructorsAnnotated() { + Map> diff = reflect( + Scanners.ConstructorsAnnotated, + ReflectionUtils.AnnotationTypes, + Constructor.class); + + assertEquals(diff, Collections.emptyMap()); + } + + @Test + public void checkFieldsAnnotated() { + Map> diff = reflect( + Scanners.FieldsAnnotated, + ReflectionUtils.AnnotationTypes, + Field.class); + + Arrays.asList("com.sun.istack.internal.NotNull", // jdk 8 + "com.sun.istack.internal.Nullable", + "jdk.internal.PreviewFeature", // jdk 15 + "jdk.internal.vm.annotation.Stable") // jdk 17 + .forEach(diff::remove); + assertEquals(diff, Collections.emptyMap()); + } + + @Test + public void checkResources() { + Set diff = new HashSet<>(); + Map> mmap = reflections.getStore().get(Scanners.Resources.index()); + mmap.values().forEach(resources -> + resources.forEach(resource -> { + Set urls = get(ReflectionUtils.Resources.get(resource)); + // if (urls == null || urls.isEmpty()) diff.add(resource); + for (URL url : urls) { + try { if (!Files.exists(JrtUrlType.getJrtRealPath(url))) diff.add(resource); } catch (Exception e) { + diff.add(resource); + } + } + })); + System.out.println(Scanners.Resources.index() + + ": " + + mmap.values().stream().mapToInt(Set::size).sum() + + ", missing: " + + diff.size()); + + Arrays.asList("META-INF/MANIFEST.MF") // jdk 8 + .forEach(diff::remove); + assertEquals(diff, Collections.emptySet()); + } + + @Test + public void checkMethodsSignature() { + // Map> diffMethodSignature = + // findDiff(reflections, Scanners.MethodsSignature, ReflectionUtils.MethodSignature, Field.class); + // assertEquals(diffMethodSignature, Collections.emptyMap()); } + } + + private Map> reflect( + Scanner scanner, UtilQueryBuilder utilQueryBuilder, Class resultType) { + Map> mmap = reflections.getStore().get(scanner.index()); + Map> missing = new HashMap<>(); + mmap.forEach((key, strings) -> + strings.forEach(string -> { + //noinspection unchecked + F element = (F) reflections.forName(string, resultType); + if (element == null || !reflections.toNames(get(utilQueryBuilder.get(element))).contains(key)) { + missing.computeIfAbsent(key, k -> new HashSet<>()).add(string); + } + })); + System.out.println( + scanner.index() + ": " + mmap.values().stream().mapToInt(Set::size).sum() + ", missing: " + missing.values() + .stream() + .mapToInt( + Set::size) + .sum()); + return missing; + } + + private static void measure(String s) { + System.out.printf("-> %s %s ", s, mb(mem())); + gc(); + System.out.printf("(gc -> %s)%n", mb(mem())); + } + + private static void gc() { + for (int i = 0; i < 3; i++) { + Runtime.getRuntime().gc(); + System.runFinalization(); + try { + Thread.sleep(100); + } catch (InterruptedException e) { /*java sucks*/ } + } + } + + private static long mem() { + return Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory(); + } + + private static String mb(long mem2) { + return (mem2 / 1024 / 1024) + "mb"; + } + + public static class JrtUrlType implements Vfs.UrlType { + + @Override + public boolean matches(URL url) throws Exception { + return url.getProtocol().equals("jrt"); + } + + @Override + public Vfs.Dir createDir(URL url) throws Exception { + final Path realPath = getJrtRealPath(url); + return new Vfs.Dir() { + @Override + public String getPath() { + return url.getPath(); + } + + @Override + public Iterable getFiles() { + return () -> { + try { + return Files.walk(realPath) + .filter(Files::isRegularFile) + .map(p -> (Vfs.File) new Vfs.File() { + @Override + public String getName() { + return p.toString(); + } + + @Override + public String getRelativePath() { + return p.startsWith(realPath) ? p.toString() + .substring( + realPath.toString().length()) + : p.toString(); + } + + @Override + public InputStream openInputStream() throws IOException { + return Files.newInputStream(p); + } + }) + .iterator(); + } catch (Exception e) { + throw new ReflectionsException(e); + } + }; + } + }; + } + + /** + * jdk 11 workaround for {@code Paths.get().toRealPath()} + */ + public static Path getJrtRealPath(URL url) throws IOException { + // jdk 11 workaround + return FileSystems.getFileSystem(URI.create("jrt:/")).getPath("modules", url.getPath()) + .toRealPath(); + } + + } + +} diff --git a/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/MoreTests.java b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/MoreTests.java new file mode 100644 index 00000000..5c4596b8 --- /dev/null +++ b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/MoreTests.java @@ -0,0 +1,110 @@ +package io.github.dunwu.javatech.reflections; + +import org.junit.jupiter.api.Test; +import org.reflections.ReflectionUtils; +import org.reflections.Reflections; +import org.reflections.scanners.MethodParameterNamesScanner; +import org.reflections.scanners.Scanners; +import org.reflections.util.ClasspathHelper; +import org.reflections.util.ConfigurationBuilder; + +import java.lang.annotation.Annotation; +import java.util.Collection; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import static io.github.dunwu.javatech.reflections.MoreTestsModel.*; +import static io.github.dunwu.javatech.reflections.ReflectionsTest.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.reflections.ReflectionUtils.Annotations; +import static org.reflections.scanners.Scanners.Resources; +import static org.reflections.scanners.Scanners.SubTypes; + +public class MoreTests { + + @Test + public void test_cyclic_annotation() { + Reflections reflections = new Reflections(MoreTestsModel.class); + assertThat(reflections.getTypesAnnotatedWith(CyclicAnnotation.class), + equalTo(CyclicAnnotation.class)); + } + + @Test + public void no_exception_when_configured_scanner_store_is_empty() { + Reflections reflections = new Reflections( + new ConfigurationBuilder() + .setUrls(ClasspathHelper.forClass(TestModel.class)) + .setScanners()); + + assertNull(reflections.getStore().get(SubTypes.index())); + assertTrue(reflections.getSubTypesOf(TestModel.C1.class).isEmpty()); + assertTrue(reflections.get(SubTypes.of(TestModel.C1.class)).isEmpty()); + assertTrue(reflections.get(Resources.with(".*")).isEmpty()); + } + + @Test + public void getAllAnnotated_returns_meta_annotations() { + Reflections reflections = new Reflections(MoreTestsModel.class); + for (Class type : reflections.getTypesAnnotatedWith(Meta.class)) { + Set allAnnotations = ReflectionUtils.get(Annotations.of(type)); + List> collect = + allAnnotations.stream().map(Annotation::annotationType).collect(Collectors.toList()); + assertTrue(collect.contains(Meta.class)); + } + + Meta meta = new Meta() { + @Override + public String value() { return "a"; } + + @Override + public Class annotationType() { return Meta.class; } + }; + for (Class type : reflections.getTypesAnnotatedWith(meta)) { + Set allAnnotations = ReflectionUtils.get(Annotations.of(type)); + List> collect = + allAnnotations.stream().map(Annotation::annotationType).collect(Collectors.toList()); + assertTrue(collect.contains(Meta.class)); + } + } + + @Test + public void resources_scanner_filters_classes() { + Reflections reflections = new Reflections(Scanners.Resources); + Collection resources = reflections.getResources(".*"); + assertTrue(resources.stream().noneMatch(res -> res.endsWith(".class"))); + } + + @Test + public void test_repeatable() { + Reflections ref = new Reflections(MoreTestsModel.class); + Collection> clazzes = ref.getTypesAnnotatedWith(Name.class); + assertTrue(clazzes.contains(SingleName.class)); + assertFalse(clazzes.contains(MultiName.class)); + + clazzes = ref.getTypesAnnotatedWith(Names.class); + assertFalse(clazzes.contains(SingleName.class)); + assertTrue(clazzes.contains(MultiName.class)); + } + + @Test + public void test_method_param_names_not_local_vars() throws NoSuchMethodException { + Reflections reflections = new Reflections(MoreTestsModel.class, new MethodParameterNamesScanner()); + + Class clazz = ParamNames.class; + assertEquals(reflections.getMemberParameterNames(clazz.getConstructor(String.class)).toString(), + "[param1]"); + assertEquals( + reflections.getMemberParameterNames(clazz.getMethod("test", String.class, String.class)).toString(), + "[testParam1, testParam2]"); + assertEquals(reflections.getMemberParameterNames(clazz.getMethod("test", String.class)).toString(), + "[testParam]"); + assertEquals(reflections.getMemberParameterNames(clazz.getMethod("test2", String.class)).toString(), + "[testParam]"); + } + +} diff --git a/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/MoreTestsModel.java b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/MoreTestsModel.java new file mode 100644 index 00000000..1897218c --- /dev/null +++ b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/MoreTestsModel.java @@ -0,0 +1,107 @@ +package io.github.dunwu.javatech.reflections; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Repeatable; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +public class MoreTestsModel { + + @CyclicAnnotation + @Retention(RUNTIME) + public @interface CyclicAnnotation {} + + @Target(ElementType.TYPE) + @Retention(RUNTIME) + @interface Meta { + + String value(); + + } + + @Meta("a") + @Retention(RUNTIME) + @interface A {} + + @Meta("b") + @Retention(RUNTIME) + @interface B {} + + @A + class A1 {} + + @B + class B1 {} + + @A + class A2 {} + + @Retention(RUNTIME) + public @interface TestAnnotation { + + String value(); + + } + + @TestAnnotation("foo foo foo") + public class ActualFunctionalityClass { + + @TestAnnotation("bar bar bar") + class Thing {} + + } + + // repeatable + @Repeatable(Names.class) + @Retention(RUNTIME) + @Target({ ElementType.TYPE }) + public @interface Name { + + String name(); + + } + + @Name(name = "foo") + @Name(name = "bar") + public static class MultiName {} + + @Retention(RUNTIME) + @Target({ ElementType.TYPE }) + public @interface Names { + + Name[] value() default {}; + + } + + @Name(name = "foo") + public static class SingleName {} + + // + public static class ParamNames { + + public ParamNames() { + String testLocal = "local"; + } + + public ParamNames(String param1) { + String testLocal = "local"; + } + + public void test(String testParam) { + String testLocal = "local"; + } + + public void test(String testParam1, String testParam2) { + String testLocal1 = "local"; + String testLocal2 = "local"; + } + + public static void test2(String testParam) { + String testLocal = "local"; + } + + } + +} diff --git a/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/MyTestModelStore.java b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/MyTestModelStore.java new file mode 100644 index 00000000..0e56d110 --- /dev/null +++ b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/MyTestModelStore.java @@ -0,0 +1,106 @@ +//generated using Reflections JavaCodeSerializer [Tue Jan 25 15:26:09 CST 2022] +package io.github.dunwu.javatech.reflections; + +public interface MyTestModelStore { + + interface io { + interface github { + interface dunwu { + interface javatech { + interface reflections { + interface TestModel$AC1 { + } + interface TestModel$AC1n { + } + interface TestModel$AC2 { + interface methods { + interface value {} + } + } + interface TestModel$AC3 { + interface annotations { + interface io_github_dunwu_javatech_reflections_TestModel$AC2 {} + } + } + interface TestModel$AF1 { + interface methods { + interface value {} + } + } + interface TestModel$AI1 { + interface annotations { + interface io_github_dunwu_javatech_reflections_TestModel$MAI1 {} + } + } + interface TestModel$AI2 { + } + interface TestModel$AM1 { + interface methods { + interface value {} + } + } + interface TestModel$AM2 { + } + interface TestModel$C1 { + interface annotations { + interface io_github_dunwu_javatech_reflections_TestModel$AC1 {} + interface io_github_dunwu_javatech_reflections_TestModel$AC1n {} + } + } + interface TestModel$C2 { + interface annotations { + interface io_github_dunwu_javatech_reflections_TestModel$AC2 {} + } + } + interface TestModel$C3 { + interface annotations { + interface io_github_dunwu_javatech_reflections_TestModel$AC2 {} + } + } + interface TestModel$C4 { + interface fields { + interface f1 {} + interface f2 {} + interface f3 {} + } + interface methods { + interface add {} + interface c2toC3 {} + interface m1 {} + interface m1_int$$$$__java_lang_String$$$$ {} + interface m3 {} + interface m4 {} + } + } + interface TestModel$C5 { + } + interface TestModel$C6 { + } + interface TestModel$C7 { + interface annotations { + interface io_github_dunwu_javatech_reflections_TestModel$AC3 {} + } + } + interface TestModel$I1 { + interface annotations { + interface io_github_dunwu_javatech_reflections_TestModel$AI1 {} + } + } + interface TestModel$I2 { + interface annotations { + interface io_github_dunwu_javatech_reflections_TestModel$AI2 {} + } + } + interface TestModel$I3 { + interface annotations { + interface io_github_dunwu_javatech_reflections_TestModel$AC2 {} + } + } + interface TestModel$MAI1 { + } + } + } + } + } + } +} diff --git a/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/NameHelperTest.java b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/NameHelperTest.java new file mode 100644 index 00000000..51c7dc5b --- /dev/null +++ b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/NameHelperTest.java @@ -0,0 +1,73 @@ +package io.github.dunwu.javatech.reflections; + +import org.junit.jupiter.api.Test; +import org.reflections.util.NameHelper; + +import java.lang.reflect.AnnotatedElement; +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.Member; +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; +import java.util.function.Function; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + +@SuppressWarnings({"unchecked"}) +public class NameHelperTest implements NameHelper { + + @Test + public void testClass() { + assertToFor(String.class, this::toName, this::forClass); + assertToFor(String[].class, this::toName, this::forClass); + assertToFor(boolean.class, this::toName, this::forClass); + assertNull(forClass("no.exist")); + } + + @Test + public void testConstructor() throws NoSuchMethodException { + assertToFor(String.class.getDeclaredConstructor(), this::toName, this::forConstructor); + assertToFor(String.class.getDeclaredConstructor(String.class), this::toName, this::forConstructor); + } + + @Test + public void testMethod() throws NoSuchMethodException { + assertToFor(String.class.getDeclaredMethod("length"), this::toName, this::forMethod); + assertToFor(String.class.getDeclaredMethod("charAt", int.class), this::toName, this::forMethod); + } + + @Test + public void testField() throws NoSuchFieldException { + assertToFor(String.class.getDeclaredField("value"), this::toName, this::forField); + } + + @Test + public void testToForNames() throws NoSuchFieldException, NoSuchMethodException { + Class CLASS = String.class; + Constructor CONST = CLASS.getDeclaredConstructor(); + Method METHOD = CLASS.getDeclaredMethod("length"); + Field FIELD = CLASS.getDeclaredField("value"); + + Set elements = set(CLASS, CONST, METHOD, FIELD); + Collection names = toNames(elements); + + assertEquals(set(CLASS), forNames(names)); + assertEquals(set(CLASS), forNames(names, Class.class)); + assertEquals(set(CONST), forNames(names, Constructor.class)); + assertEquals(set(METHOD), forNames(names, Method.class)); + assertEquals(set(FIELD), forNames(names, Field.class)); + assertEquals(set(CONST, METHOD, FIELD), forNames(names, Member.class)); + } + + void assertToFor(T type, Function toName, Function forName) { + assertEquals(forName.apply(toName.apply(type)), type); + } + + private Set set(T... ts) { + return new HashSet<>(Arrays.asList(ts)); + } +} diff --git a/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ReflectionUtilsQueryTest.java b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ReflectionUtilsQueryTest.java new file mode 100644 index 00000000..0bda92a1 --- /dev/null +++ b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ReflectionUtilsQueryTest.java @@ -0,0 +1,245 @@ +package io.github.dunwu.javatech.reflections; + +import org.junit.jupiter.api.Test; +import org.reflections.ReflectionUtils; +import org.reflections.Reflections; +import org.reflections.Store; +import org.reflections.scanners.Scanners; +import org.reflections.util.AnnotationMergeCollector; +import org.reflections.util.QueryFunction; + +import java.lang.annotation.*; +import java.lang.reflect.Method; +import java.util.LinkedHashSet; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +import static io.github.dunwu.javatech.reflections.ReflectionsQueryTest.equalTo; +import static io.github.dunwu.javatech.reflections.TestModel.*; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.reflections.ReflectionUtils.*; +import static org.reflections.scanners.Scanners.MethodsAnnotated; +import static org.reflections.scanners.Scanners.TypesAnnotated; + +public class ReflectionUtilsQueryTest { + + @Test + public void testTypes() throws NoSuchMethodException { + assertThat( + get(SuperTypes.of(C3.class)), + equalTo(C1.class, I2.class, I1.class)); + + assertThat( + get(SuperTypes.of(C3.class) + .filter(withAnnotation(AI1.class))), + equalTo(I1.class)); + + assertThat( + get(Interfaces.get(C1.class)), + equalTo(I2.class)); + + assertThat( + get(Interfaces.of(C3.class)), + equalTo(I2.class, I1.class)); + + assertThat( + get(SuperClass.of(C5.class)), + equalTo(C3.class, C1.class)); + + assertThat( + get(Annotations.of(C3.class) + .map(Annotation::annotationType)), + equalTo( + Retention.class, Target.class, Documented.class, Inherited.class, + AC1.class, AC1n.class, AC2.class, AI1.class, AI2.class, MAI1.class)); + + assertThat( + get(AnnotationTypes.of(C3.class) + .filter(a -> !a.getName().startsWith("java."))), + equalTo( + AC1.class, AC1n.class, AC2.class, AI1.class, AI2.class, MAI1.class)); + + assertThat( + get(Annotations.of(C4.class.getDeclaredMethod("m4", String.class)) + .map(Annotation::annotationType)), + equalTo()); + } + + @Test + public void testMembers() throws NoSuchMethodException, NoSuchFieldException { + assertThat( + get(Methods.of(C4.class, withName("m4"))), + equalTo(C4.class.getDeclaredMethod("m4", String.class))); + + assertThat( + get(Methods.of(C4.class, withParameters(String.class))), + equalTo(C4.class.getDeclaredMethod("m4", String.class))); + + assertThat( + get(Methods.of(C4.class) + .filter(withPattern("public.*.void .*")) + .map(Method::getName)), + equalTo("m1")); + + assertThat( + get(Methods.of(C4.class, withAnyParameterAnnotation(AM1.class))), + equalTo(C4.class.getDeclaredMethod("m4", String.class))); + + assertThat( + get(Methods.of(Class.class) + .filter(withReturnType(Method.class).and(withPublic())) + .map(Method::getName)), + equalTo("getMethod", "getDeclaredMethod", "getEnclosingMethod")); + + assertThat( + get(Fields.of(C4.class, withAnnotation(AF1.class))), + equalTo(C4.class.getDeclaredField("f1"), + C4.class.getDeclaredField("f2"))); + + AF1 af12 = new AF1() { + public String value() { return "2"; } + + public Class annotationType() { return AF1.class; } + }; + assertThat( + get(Fields.of(C4.class) + .filter(withAnnotation(af12))), + equalTo(C4.class.getDeclaredField("f2"))); + + assertThat( + get(Fields.of(C4.class) + .filter(withTypeAssignableTo(String.class))), + equalTo(C4.class.getDeclaredField("f1"), + C4.class.getDeclaredField("f2"), + C4.class.getDeclaredField("f3"))); + + assertThat( + get(Constructors.of(C4.class) + .filter(withParametersCount(0))), + equalTo(C4.class.getDeclaredConstructor())); + } + + @Test + public void nestedQuery() { + Set> annotations = + get(AnnotationTypes.of( + Methods.of(C4.class)) + .filter(withNamePrefix("io.github.dunwu.javatech.reflections"))); + + assertThat(annotations, + equalTo(AM1.class)); + } + + @Test + public void addQuery() { + Set> annotations = + get(AnnotationTypes.of(C1.class) + .add(AnnotationTypes.of(C2.class))); + + assertThat(annotations, + equalTo( + Retention.class, Target.class, Documented.class, Inherited.class, + AC1.class, AC2.class, AC1n.class, AI2.class, AI1.class, MAI1.class)); + } + + @Test + public void singleQuery() { + QueryFunction> single = + QueryFunction.single(CombinedTestModel.Impl.class); + assertThat(single.apply(null), + equalTo(CombinedTestModel.Impl.class)); + + QueryFunction> second = + single.add( + QueryFunction.single(CombinedTestModel.Controller.class)); + assertThat(second.apply(null), + equalTo(CombinedTestModel.Impl.class, CombinedTestModel.Controller.class)); + } + + @Test + public void getAllQuery() { + QueryFunction> single = + QueryFunction.single(CombinedTestModel.Impl.class); + + QueryFunction> allIncluding = + single.add( + single.getAll(SuperTypes::get)); + assertThat(allIncluding.apply(null), + equalTo(CombinedTestModel.Impl.class, CombinedTestModel.Abstract.class, + CombinedTestModel.Controller.class)); + } + + @Test + public void flatMapQuery() throws NoSuchMethodException { + Set query = + get(Annotations.of( + Methods.of(CombinedTestModel.Impl.class)) + .flatMap(annotation -> + Methods.of(annotation.annotationType()))); + + Set query1 = + get(AnnotationTypes.of(Methods.of(CombinedTestModel.Impl.class)).flatMap(Methods::of)); + + assertThat(query, + equalTo( + CombinedTestModel.Post.class.getDeclaredMethod("value"), + CombinedTestModel.Requests.class.getDeclaredMethod("value"), + CombinedTestModel.Get.class.getDeclaredMethod("value"))); + + assertEquals(query, query1); + } + + @Test + public void annotationToMap() { + Set> valueMaps = + get(Annotations.of( + Methods.of(CombinedTestModel.Impl.class)) + .filter(withNamePrefix("io.github.dunwu.javatech.reflections")) + .map(ReflectionUtils::toMap)); + + // todo proper assert + Set collect = + valueMaps.stream().map(Object::toString).sorted().collect(Collectors.toCollection(LinkedHashSet::new)); + assertThat(collect, + equalTo( + "{value=/get}", + "{value=/post}", + "{value=[" + + "{method=PUT, value=/another}, " + + "{method=PATCH, value=/another}]}" + )); + } + + @Test + public void mergedAnnotations() { + Class metaAnnotation = CombinedTestModel.Request.class; + + Reflections reflections = new Reflections(metaAnnotation, Scanners.values()); + + Set> metaAnnotations = + reflections.get(TypesAnnotated.getAllIncluding(metaAnnotation.getName()).asClass()); + + QueryFunction mergedAnnotations = + MethodsAnnotated.with(metaAnnotations) + .as(Method.class) + .map(method -> + get(Annotations.of(method.getDeclaringClass()) + .add(Annotations.of(method)) + .filter(a -> metaAnnotations.contains(a.annotationType()))) + .stream() + .collect(new AnnotationMergeCollector(method))) + .map(map -> ReflectionUtils.toAnnotation(map, metaAnnotation)); + + assertThat( + reflections.get(mergedAnnotations.map(CombinedTestModel.Request::value)), + equalTo("/base/post", "/base/get")); + + assertThat( + reflections.get(mergedAnnotations.map(CombinedTestModel.Request::method)), + equalTo("Post", "Get")); + } + +} + diff --git a/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ReflectionUtilsTest.java b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ReflectionUtilsTest.java new file mode 100644 index 00000000..39116de1 --- /dev/null +++ b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ReflectionUtilsTest.java @@ -0,0 +1,165 @@ +package io.github.dunwu.javatech.reflections; + +import org.hamcrest.BaseMatcher; +import org.hamcrest.Description; +import org.junit.jupiter.api.Test; +import org.reflections.Reflections; +import org.reflections.scanners.Scanners; + +import java.lang.annotation.*; +import java.lang.reflect.Field; +import java.lang.reflect.Member; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.*; +import java.util.stream.Collectors; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.reflections.ReflectionUtils.*; +import static io.github.dunwu.javatech.reflections.ReflectionsTest.equalTo; + +@SuppressWarnings("unchecked") +public class ReflectionUtilsTest { + + @Test + public void getAllTest() { + assertThat(getAllSuperTypes(TestModel.C3.class, withAnnotation(TestModel.AI1.class)), + equalTo(TestModel.I1.class)); + + Set allMethods = + getAllMethods(TestModel.C4.class, withModifier(Modifier.PUBLIC), withReturnType(void.class)); + Set allMethods1 = getAllMethods(TestModel.C4.class, withPattern("public.*.void .*")); + + assertTrue(allMethods.containsAll(allMethods1) && allMethods1.containsAll(allMethods)); + assertThat(allMethods1, names("m1")); + + assertThat(getAllMethods(TestModel.C4.class, withAnyParameterAnnotation(TestModel.AM1.class)), names("m4")); + + assertThat(getAllFields(TestModel.C4.class, withAnnotation(TestModel.AF1.class)), names("f1", "f2")); + + assertThat(getAllFields(TestModel.C4.class, withAnnotation(new TestModel.AF1() { + public String value() {return "2";} + + public Class annotationType() {return TestModel.AF1.class;} + })), + names("f2")); + + assertThat(getAllFields(TestModel.C4.class, withTypeAssignableTo(String.class)), names("f1", "f2", "f3")); + + assertThat(getAllConstructors(TestModel.C4.class, withParametersCount(0)), names(TestModel.C4.class.getName())); + + Set allAnnotations = getAllAnnotations(TestModel.C3.class); + assertThat(allAnnotations.stream().map(Annotation::annotationType).collect(Collectors.toSet()), + equalTo(Documented.class, Inherited.class, Retention.class, Target.class, + TestModel.MAI1.class, TestModel.AI1.class, TestModel.AI2.class, + TestModel.AC1.class, TestModel.AC1n.class, TestModel.AC2.class)); + + Method m4 = getMethods(TestModel.C4.class, withName("m4")).iterator().next(); + assertEquals(m4.getName(), "m4"); + assertTrue(getAnnotations(m4).isEmpty()); + } + + @Test + public void withParameter() throws Exception { + Class target = Collections.class; + Object arg1 = Arrays.asList(1, 2, 3); + + Set allMethods = new HashSet<>(); + for (Class type : getAllSuperTypes(arg1.getClass())) { + allMethods.addAll(getAllMethods(target, withModifier(Modifier.STATIC), withParameters(type))); + } + + Set allMethods1 = + getAllMethods(target, withModifier(Modifier.STATIC), withParametersAssignableTo(arg1.getClass())); + + assertEquals(allMethods, allMethods1); + + for (Method method : allMethods) { //effectively invokable + //noinspection UnusedDeclaration + Object invoke = method.invoke(null, arg1); + } + } + + @Test + public void withParametersAssignableFromTest() throws Exception { + //Check for null safe + getAllMethods(Collections.class, withModifier(Modifier.STATIC), withParametersAssignableFrom()); + + Class target = Collections.class; + Object arg1 = Arrays.asList(1, 2, 3); + + Set allMethods = new HashSet<>(); + for (Class type : getAllSuperTypes(arg1.getClass())) { + allMethods.addAll(getAllMethods(target, withModifier(Modifier.STATIC), withParameters(type))); + } + + Set allMethods1 = + getAllMethods(target, withModifier(Modifier.STATIC), withParametersAssignableFrom(Iterable.class), + withParametersAssignableTo(arg1.getClass())); + + assertEquals(allMethods, allMethods1); + + for (Method method : allMethods) { //effectively invokable + //noinspection UnusedDeclaration + Object invoke = method.invoke(null, arg1); + } + } + + @Test + public void withReturn() { + Set returnMember = getAllMethods(Class.class, withReturnTypeAssignableFrom(Member.class)); + Set returnsAssignableToMember = getAllMethods(Class.class, withReturnType(Method.class)); + + assertTrue(returnMember.containsAll(returnsAssignableToMember)); + assertFalse(returnsAssignableToMember.containsAll(returnMember)); + + returnsAssignableToMember = getAllMethods(Class.class, withReturnType(Field.class)); + assertTrue(returnMember.containsAll(returnsAssignableToMember)); + assertFalse(returnsAssignableToMember.containsAll(returnMember)); + } + + @Test + public void getAllAndReflections() { + Reflections reflections = new Reflections(TestModel.class, Scanners.FieldsAnnotated); + + Set allFields = reflections.getFieldsAnnotatedWith(TestModel.AF1.class) + .stream() + .filter(withModifier(Modifier.PROTECTED)) + .collect(Collectors.toSet()); + assertEquals(1, allFields.size()); + assertThat(allFields, names("f2")); + } + + private Set names(Set o) { + return o.stream().map(Member::getName).collect(Collectors.toSet()); + } + + private BaseMatcher> names(final String... namesArray) { + return new BaseMatcher>() { + + public boolean matches(Object o) { + Collection transform = names((Set) o); + final Collection names = Arrays.asList(namesArray); + return transform.containsAll(names) && names.containsAll(transform); + } + + public void describeTo(Description description) { + } + }; + } + + public static String toStringSorted(Collection set) { + return set.stream() + .map(o -> o.toString() + .replace("[", "") + .replace("]", "") + .replace("{", "") + .replace("}", "") + .replace("\"", "")) + .sorted().collect(Collectors.toList()).toString(); + } + +} diff --git a/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ReflectionsExpandSupertypesTest.java b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ReflectionsExpandSupertypesTest.java new file mode 100644 index 00000000..eb1f4930 --- /dev/null +++ b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ReflectionsExpandSupertypesTest.java @@ -0,0 +1,103 @@ +package io.github.dunwu.javatech.reflections; + +import org.junit.jupiter.api.Test; +import org.reflections.Reflections; +import org.reflections.util.ConfigurationBuilder; +import org.reflections.util.FilterBuilder; + +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +import static io.github.dunwu.javatech.reflections.ReflectionsQueryTest.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.reflections.scanners.Scanners.SubTypes; + +public class ReflectionsExpandSupertypesTest { + + private final FilterBuilder inputsFilter = new FilterBuilder() + .includePattern("io\\.github\\.dunwu\\.javatech\\.reflections\\.ReflectionsExpandSupertypesTest\\$ExpandTestModel\\$Scanned\\$.*"); + + @SuppressWarnings("unused") + public interface ExpandTestModel { + + interface NotScanned { + + @Retention(RetentionPolicy.RUNTIME) + @interface MetaAnnotation {} // outside of scanned scope + + @Retention(RetentionPolicy.RUNTIME) + @Inherited + @MetaAnnotation + @interface TestAnnotation {} // outside of scanned scope, but immediate annotation + + interface BaseInterface {} // outside of scanned scope + + @TestAnnotation + class BaseClass implements BaseInterface {} // outside of scanned scope, but immediate supertype + + } + + interface Scanned { + + class ChildrenClass extends NotScanned.BaseClass {} + + } + + } + + @Test + public void testExpandSupertypes() { + ConfigurationBuilder configuration = new ConfigurationBuilder() + .forPackage("io.github.dunwu.javatech.reflections") + .filterInputsBy(inputsFilter); + + Reflections reflections = new Reflections(configuration); + assertThat(reflections.get(SubTypes.of(ExpandTestModel.NotScanned.BaseInterface.class).asClass()), + equalTo( + ExpandTestModel.NotScanned.BaseClass.class, + ExpandTestModel.Scanned.ChildrenClass.class)); + + Reflections refNoExpand = new Reflections(configuration.setExpandSuperTypes(false)); + assertThat(refNoExpand.get(SubTypes.of(ExpandTestModel.NotScanned.BaseInterface.class).asClass()), + equalTo()); + } + + @Test + void testDetectInheritedAnnotations() { + ConfigurationBuilder configuration = new ConfigurationBuilder() + .forPackage("io.github.dunwu.javatech.reflections") + .filterInputsBy(inputsFilter); + + Reflections reflections = new Reflections(configuration); + assertThat(reflections.getTypesAnnotatedWith(ExpandTestModel.NotScanned.TestAnnotation.class), + equalTo( + ExpandTestModel.NotScanned.BaseClass.class, + ExpandTestModel.Scanned.ChildrenClass.class)); + + Reflections refNoExpand = new Reflections(configuration.setExpandSuperTypes(false)); + assertThat(refNoExpand.getTypesAnnotatedWith(ExpandTestModel.NotScanned.TestAnnotation.class), + equalTo()); + } + + @Test + void testExpandMetaAnnotations() { + ConfigurationBuilder configuration = new ConfigurationBuilder() + .forPackage("io.github.dunwu.javatech.reflections") + .filterInputsBy(inputsFilter); + + Reflections reflections = new Reflections(configuration); + assertThat(reflections.getTypesAnnotatedWith(ExpandTestModel.NotScanned.MetaAnnotation.class), + equalTo()); + // todo fix, support expansion of meta annotations outside of scanned scope + // equalTo( + // NotScanned.TestAnnotation.class, + // NotScanned.BaseClass.class, + // Scanned.ChildrenClass.class)); + + Reflections refNoExpand = new Reflections(configuration.setExpandSuperTypes(false)); + assertThat(refNoExpand.getTypesAnnotatedWith(ExpandTestModel.NotScanned.MetaAnnotation.class), + equalTo()); + } + +} diff --git a/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ReflectionsQueryTest.java b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ReflectionsQueryTest.java new file mode 100644 index 00000000..a787e6bc --- /dev/null +++ b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ReflectionsQueryTest.java @@ -0,0 +1,339 @@ +package io.github.dunwu.javatech.reflections; + +import org.hamcrest.Matcher; +import org.hamcrest.core.IsEqual; +import org.junit.jupiter.api.Test; +import org.reflections.Reflections; +import org.reflections.scanners.Scanners; +import org.reflections.util.ConfigurationBuilder; +import org.reflections.util.FilterBuilder; +import org.reflections.util.NameHelper; + +import java.lang.annotation.Annotation; +import java.lang.reflect.AnnotatedElement; +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.Collection; +import java.util.LinkedHashSet; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.reflections.ReflectionUtils.withAnnotation; +import static org.reflections.ReflectionUtils.withAnyParameterAnnotation; +import static io.github.dunwu.javatech.reflections.TestModel.*; +import static org.reflections.scanners.Scanners.*; + +public class ReflectionsQueryTest implements NameHelper { + static Reflections reflections; + + public ReflectionsQueryTest() { + reflections = new Reflections( + new ConfigurationBuilder() + .forPackage("io.github.dunwu.javatech.reflections") + .filterInputsBy(new FilterBuilder() + .includePattern("io\\.github\\.dunwu\\.javatech\\.reflections\\.TestModel\\$.*") + .or(s -> s.endsWith(".xml"))) + .setScanners(Scanners.values())); + } + + @Test + public void testSubTypes() { + assertThat("direct subtypes of interface", + reflections.get(SubTypes.get(I1.class)), + equalToNames(I2.class)); + + assertThat("direct subtypes of class", + reflections.get(SubTypes.get(C1.class).asClass()), + equalTo(C2.class, C3.class)); + + assertThat("transitive subtypes of interface", + reflections.get(SubTypes.of(I1.class)), + equalToNames(I2.class, C1.class, C2.class, C3.class, C5.class)); + + assertThat("transitive subtypes of class", + reflections.get(SubTypes.of(C1.class).asClass()), + equalTo(C2.class, C3.class, C5.class)); + } + + @Test + public void testTypesAnnotated() { + assertThat("direct types annotated with meta annotation", + reflections.get(TypesAnnotated.get(MAI1.class).asClass()), + equalTo(AI1.class)); + + assertThat("transitive types annotated with meta annotation", + reflections.get(TypesAnnotated.of(MAI1.class).asClass()), + equalTo(AI1.class, I1.class)); + + assertThat("transitive subtypes of types annotated with meta annotation, including", + reflections.get(SubTypes.of(TypesAnnotated.with(MAI1.class)).asClass()), + equalTo(AI1.class, I1.class, I2.class, C1.class, C2.class, C3.class, C5.class)); + + assertThat("direct types annotated with annotation", + reflections.get(TypesAnnotated.get(AI1.class)), + equalToNames(I1.class)); + + assertThat("transitive types annotated with annotation", + reflections.get(TypesAnnotated.of(AI1.class)), + equalToNames(I1.class)); + + assertThat("transitive subtypes of types annotated with annotation", + reflections.get(SubTypes.of(TypesAnnotated.with(AI1.class))), + equalToNames(I1.class, I2.class, C1.class, C2.class, C3.class, C5.class)); + } + + @Test + public void testTypesAnnotatedWithMemberMatching() { + assertThat("direct types annotated with annotation", + reflections.get(TypesAnnotated.get(AC2.class).asClass()), + equalTo(C2.class, C3.class, I3.class, AC3.class)); + + assertThat("transitive types annotated with annotation", + reflections.get(TypesAnnotated.with(AC2.class).asClass()), + equalTo(C2.class, C3.class, I3.class, AC3.class, C7.class)); + + assertThat("direct types annotated with annotation with Retention(CLASS)", + reflections.get(TypesAnnotated.get(AC3.class).asClass()), + equalTo(C7.class)); + + assertThat("transitive subtypes of types annotated with annotation", + reflections.get(SubTypes.of(TypesAnnotated.with(AC2.class)).asClass()), + equalTo(C2.class, C3.class, I3.class, AC3.class, C7.class, C5.class, C6.class)); + + AC2 ac2 = new AC2() { + public String value() { return "ac2"; } + public Class annotationType() { return AC2.class; } + }; + + assertThat("transitive types annotated with annotation filter by member matching", + reflections.get(TypesAnnotated.with(AC2.class).asClass().filter(withAnnotation(ac2))), + equalTo(C3.class, I3.class, AC3.class)); + + assertThat("transitive subtypes of types annotated with annotation filter by member matching", + reflections.get(SubTypes.of(TypesAnnotated.with(AC2.class).filter(a -> withAnnotation(ac2).test(forClass(a))))), + equalToNames(C3.class, I3.class, AC3.class, C5.class, C6.class)); + } + + @Test + public void testMethodsAnnotated() throws NoSuchMethodException { + assertThat("methods annotated with annotation", + reflections.get(MethodsAnnotated.with(AM1.class)), + equalToNames( + C4.class.getDeclaredMethod("m1"), + C4.class.getDeclaredMethod("m1", int.class, String[].class), + C4.class.getDeclaredMethod("m1", int[][].class, String[][].class), + C4.class.getDeclaredMethod("m3"))); + + AM1 am11 = new AM1() { + public String value() { + return "1"; + } + public Class annotationType() { + return AM1.class; + } + }; + + assertThat("methods annotated with annotation filter by member matching", + reflections.get(MethodsAnnotated.with(AM1.class).as(Method.class).filter(withAnnotation(am11))), + equalTo( + C4.class.getDeclaredMethod("m1"), + C4.class.getDeclaredMethod("m1", int.class, String[].class), + C4.class.getDeclaredMethod("m1", int[][].class, String[][].class))); + } + + @Test + public void testConstructorsAnnotated() throws NoSuchMethodException { + assertThat("constructors annotated with annotation", + reflections.get(ConstructorsAnnotated.with(AM1.class)), + equalToNames(C4.class.getDeclaredConstructor(String.class))); + + AM1 am12 = new AM1() { + public String value() { + return "2"; + } + public Class annotationType() { + return AM1.class; + } + }; + + assertThat("constructors annotated with annotation filter by member matching", + reflections.get(ConstructorsAnnotated.with(AM1.class) + .as(Constructor.class).filter(withAnnotation(am12))), + equalTo()); + } + + @Test + public void testFieldsAnnotated() throws NoSuchFieldException { + assertThat("fields annotated with annotation", + reflections.get(FieldsAnnotated.with(AF1.class)), + equalToNames( + C4.class.getDeclaredField("f1"), + C4.class.getDeclaredField("f2"))); + + AF1 af12 = new AF1() { + public String value() { + return "2"; + } + public Class annotationType() { + return AF1.class; + } + }; + + assertThat("fields annotated with annotation filter by member matching", + reflections.get(FieldsAnnotated.with(AF1.class) + .as(Field.class).filter(withAnnotation(af12))), + equalTo(C4.class.getDeclaredField("f2"))); + } + + @Test + public void testMethods() throws NoSuchMethodException { + assertThat("methods with any parameter", + reflections.get(MethodsParameter.with(String.class)), + equalToNames(C4.class.getDeclaredMethod("m4", String.class))); + + assertThat("methods with any parameter", + reflections.get(MethodsParameter.with(int.class)), + equalToNames( + C4.class.getDeclaredMethod("m1", int.class, String[].class), + C4.class.getDeclaredMethod("add", int.class, int.class))); + + assertThat("methods with signature single parameter", + reflections.get(MethodsSignature.with(String.class)), + equalToNames(C4.class.getDeclaredMethod("m4", String.class))); + + assertThat("methods with signature", + reflections.get(MethodsSignature.with(int.class, String[].class)), + equalToNames(C4.class.getDeclaredMethod("m1", int.class, String[].class))); + + assertThat("methods with signature no parameters", + reflections.get(MethodsSignature.with()), + equalToNames( + C4.class.getDeclaredMethod("m1"), + C4.class.getDeclaredMethod("m3"), + AC2.class.getMethod("value"), + AF1.class.getMethod("value"), + AM1.class.getMethod("value"))); + + assertThat("methods with return type", + reflections.get(MethodsReturn.of(String.class)), + equalToNames( + C4.class.getDeclaredMethod("m3"), + C4.class.getDeclaredMethod("m4", String.class), + AC2.class.getMethod("value"), + AF1.class.getMethod("value"), + AM1.class.getMethod("value"))); + + assertThat("methods with return type void", + reflections.get(MethodsReturn.of(void.class)), + equalToNames( + C4.class.getDeclaredMethod("m1"), + C4.class.getDeclaredMethod("m1", int.class, String[].class), + C4.class.getDeclaredMethod("m1", int[][].class, String[][].class))); + + assertThat("methods with parameter annotation", + reflections.get(MethodsParameter.with(AM1.class)), + equalToNames(C4.class.getDeclaredMethod("m4", String.class))); + + AM1 am1 = new AM1() { + public String value() { + return "2"; + } + public Class annotationType() { + return AM1.class; + } + }; + + assertThat("methods with parameter annotation filter by member matching", + reflections.get(MethodsParameter.with(AM1.class).as(Method.class).filter(withAnyParameterAnnotation(am1))), + equalTo(C4.class.getDeclaredMethod("m4", String.class))); + + assertThat("methods with parameter annotation visible/invisible", + reflections.get(MethodsParameter.with(AM2.class)), + equalToNames( + C4.class.getDeclaredMethod("m4", String.class), + C4.class.getDeclaredMethod("m1", int.class, String[].class))); + } + + @Test + public void testConstructorParameter() throws NoSuchMethodException { + assertThat("constructors with parameter", + reflections.get(ConstructorsParameter.with(String.class)), + equalToNames(C4.class.getDeclaredConstructor(String.class))); + + assertThat("constructors with signature no parameters", + reflections.get(ConstructorsSignature.with()), + equalToNames( + C1.class.getDeclaredConstructor(), + C2.class.getDeclaredConstructor(), + C3.class.getDeclaredConstructor(), + C4.class.getDeclaredConstructor(), + C5.class.getDeclaredConstructor(), + C6.class.getDeclaredConstructor(), + C7.class.getDeclaredConstructor())); + + assertThat("constructors with parameter annotation", + reflections.get(ConstructorsParameter.with(AM1.class)), + equalToNames(C4.class.getDeclaredConstructor(String.class))); + + AM1 am1 = new AM1() { + public String value() { + return "1"; + } + public Class annotationType() { + return AM1.class; + } + }; + + assertThat("constructors with parameter annotation filter by member values", + reflections.get(ConstructorsParameter.with(AM1.class) + .as(Constructor.class) + .filter(withAnnotation(am1))), + equalTo(C4.class.getDeclaredConstructor(String.class))); + } + + @Test + public void testResourcesScanner() { + assertThat("resources matching pattern", + reflections.get(Resources.with(".*resource1-reflections\\.xml")), + equalTo("META-INF/reflections/resource1-reflections.xml")); + + assertThat("resources matching pattern any", + reflections.get(Resources.with(".*")), + equalTo( + "META-INF/reflections/testModel-reflections.xml", + "META-INF/reflections/saved-testModel-reflections.xml", + "META-INF/reflections/resource1-reflections.xml", + "META-INF/reflections/inner/resource2-reflections.xml")); + } + + @Test + public void testGetAll() { + reflections = new Reflections( + new ConfigurationBuilder() + .forPackage("io.github.dunwu.javatech.reflections") + .filterInputsBy(new FilterBuilder().includePattern("io\\.github\\.dunwu\\.javatech\\.reflections\\.TestModel\\$.*")) + .setScanners(Scanners.SubTypes.filterResultsBy(t -> true))); + + assertThat("all (sub) types", + reflections.getAll(SubTypes), + equalTo("java.lang.Object", "java.lang.annotation.Annotation", + "io.github.dunwu.javatech.reflections.TestModel$MAI1", "io.github.dunwu.javatech.reflections.TestModel$AI1", "io.github.dunwu.javatech.reflections.TestModel$AI2", + "io.github.dunwu.javatech.reflections.TestModel$I1", "io.github.dunwu.javatech.reflections.TestModel$I2", "io.github.dunwu.javatech.reflections.TestModel$I3", + "io.github.dunwu.javatech.reflections.TestModel$AF1", "io.github.dunwu.javatech.reflections.TestModel$AM1", "io.github.dunwu.javatech.reflections.TestModel$AM2", + "io.github.dunwu.javatech.reflections.TestModel$AC1", "io.github.dunwu.javatech.reflections.TestModel$AC1n", "io.github.dunwu.javatech.reflections.TestModel$AC2", "io.github.dunwu.javatech.reflections.TestModel$AC3", + "io.github.dunwu.javatech.reflections.TestModel$C1", "io.github.dunwu.javatech.reflections.TestModel$C2", "io.github.dunwu.javatech.reflections.TestModel$C3", "io.github.dunwu.javatech.reflections.TestModel$C4", + "io.github.dunwu.javatech.reflections.TestModel$C5", "io.github.dunwu.javatech.reflections.TestModel$C6", "io.github.dunwu.javatech.reflections.TestModel$C7")); + } + + // + @SafeVarargs + public static Matcher> equalTo(T... operand) { + return IsEqual.equalTo(new LinkedHashSet<>(Arrays.asList(operand))); + } + + @SafeVarargs + public final Matcher> equalToNames(T... operand) { + return IsEqual.equalTo(new LinkedHashSet<>(toNames(operand))); + } +} diff --git a/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ReflectionsTest.java b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ReflectionsTest.java new file mode 100644 index 00000000..f39a8c44 --- /dev/null +++ b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/ReflectionsTest.java @@ -0,0 +1,343 @@ +package io.github.dunwu.javatech.reflections; + +import org.hamcrest.BaseMatcher; +import org.hamcrest.Description; +import org.hamcrest.Matcher; +import org.hamcrest.core.IsEqual; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.reflections.Reflections; +import org.reflections.scanners.*; +import org.reflections.util.ClasspathHelper; +import org.reflections.util.ConfigurationBuilder; +import org.reflections.util.FilterBuilder; +import org.reflections.util.NameHelper; + +import java.io.File; +import java.lang.annotation.Annotation; +import java.util.*; +import java.util.function.Predicate; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static io.github.dunwu.javatech.reflections.TestModel.*; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +@SuppressWarnings("unchecked") +public class ReflectionsTest implements NameHelper { + + private static final FilterBuilder TestModelFilter = new FilterBuilder() + .includePattern("io\\.github\\.dunwu\\.javatech\\.reflections\\.TestModel\\$.*") + .includePattern("io\\.github\\.dunwu\\.javatech\\.reflections\\.UsageTestModel\\$.*"); + + static Reflections reflections; + + @BeforeAll + public static void init() { + //noinspection deprecation + reflections = new Reflections(new ConfigurationBuilder() + .setUrls(Collections.singletonList(ClasspathHelper.forClass(TestModel.class))) + .filterInputsBy(TestModelFilter) + .setScanners( + new SubTypesScanner(), + new TypeAnnotationsScanner(), + new MethodAnnotationsScanner(), + new FieldAnnotationsScanner(), + Scanners.ConstructorsAnnotated, + Scanners.MethodsParameter, + Scanners.MethodsSignature, + Scanners.MethodsReturn, + Scanners.ConstructorsParameter, + Scanners.ConstructorsSignature, + new ResourcesScanner(), + new MethodParameterNamesScanner(), + new MemberUsageScanner())); + } + + @Test + public void testSubTypesOf() { + assertThat(reflections.getSubTypesOf(I1.class), are(I2.class, C1.class, C2.class, C3.class, C5.class)); + assertThat(reflections.getSubTypesOf(C1.class), are(C2.class, C3.class, C5.class)); + + assertFalse(reflections.getAllTypes().isEmpty(), + "getAllTypes should not be empty when Reflections is configured with SubTypesScanner(false)"); + } + + @Test + public void testTypesAnnotatedWith() { + assertThat(reflections.getTypesAnnotatedWith(MAI1.class, true), are(AI1.class)); + assertThat(reflections.getTypesAnnotatedWith(MAI1.class, true), annotatedWith(MAI1.class)); + + assertThat(reflections.getTypesAnnotatedWith(AI2.class, true), are(I2.class)); + assertThat(reflections.getTypesAnnotatedWith(AI2.class, true), annotatedWith(AI2.class)); + + assertThat(reflections.getTypesAnnotatedWith(AC1.class, true), are(C1.class, C2.class, C3.class, C5.class)); + assertThat(reflections.getTypesAnnotatedWith(AC1.class, true), annotatedWith(AC1.class)); + + assertThat(reflections.getTypesAnnotatedWith(AC1n.class, true), are(C1.class)); + assertThat(reflections.getTypesAnnotatedWith(AC1n.class, true), annotatedWith(AC1n.class)); + assertThat(reflections.getTypesAnnotatedWith(MAI1.class), + are(AI1.class, I1.class, I2.class, C1.class, C2.class, C3.class, C5.class)); + assertThat(reflections.getTypesAnnotatedWith(AI1.class), + are(I1.class, I2.class, C1.class, C2.class, C3.class, C5.class)); + assertThat(reflections.getTypesAnnotatedWith(AI2.class), are(I2.class, C1.class, C2.class, C3.class, C5.class)); + + assertThat(reflections.getTypesAnnotatedWith(AM1.class), isEmpty); + + //annotation member value matching + AC2 ac2 = new AC2() { + public String value() {return "ac2";} + + public Class annotationType() {return AC2.class;} + }; + + assertThat(reflections.getTypesAnnotatedWith(ac2), + are(C3.class, C5.class, I3.class, C6.class, AC3.class, C7.class)); + + assertThat(reflections.getTypesAnnotatedWith(ac2, true), are(C3.class, I3.class, AC3.class)); + } + + @Test + public void testMethodsAnnotatedWith() throws NoSuchMethodException { + assertThat(reflections.getMethodsAnnotatedWith(AM1.class), + are(C4.class.getDeclaredMethod("m1"), + C4.class.getDeclaredMethod("m1", int.class, String[].class), + C4.class.getDeclaredMethod("m1", int[][].class, String[][].class), + C4.class.getDeclaredMethod("m3"))); + + AM1 am1 = new AM1() { + public String value() {return "1";} + + public Class annotationType() {return AM1.class;} + }; + assertThat(reflections.getMethodsAnnotatedWith(am1), + are(C4.class.getDeclaredMethod("m1"), + C4.class.getDeclaredMethod("m1", int.class, String[].class), + C4.class.getDeclaredMethod("m1", int[][].class, String[][].class))); + } + + @Test + public void testConstructorsAnnotatedWith() throws NoSuchMethodException { + assertThat(reflections.getConstructorsAnnotatedWith(AM1.class), + are(C4.class.getDeclaredConstructor(String.class))); + + AM1 am1 = new AM1() { + public String value() {return "1";} + + public Class annotationType() {return AM1.class;} + }; + assertThat(reflections.getConstructorsAnnotatedWith(am1), + are(C4.class.getDeclaredConstructor(String.class))); + } + + @Test + public void testFieldsAnnotatedWith() throws NoSuchFieldException { + assertThat(reflections.getFieldsAnnotatedWith(AF1.class), + are(C4.class.getDeclaredField("f1"), + C4.class.getDeclaredField("f2") + )); + + assertThat(reflections.getFieldsAnnotatedWith(new AF1() { + public String value() {return "2";} + + public Class annotationType() {return AF1.class;} + }), + are(C4.class.getDeclaredField("f2"))); + } + + @Test + public void testMethodParameter() throws NoSuchMethodException { + assertThat(reflections.getMethodsWithParameter(String.class), + are(C4.class.getDeclaredMethod("m4", String.class), + UsageTestModel.C1.class.getDeclaredMethod("method", String.class))); + + assertThat(reflections.getMethodsWithSignature(), + are(C4.class.getDeclaredMethod("m1"), C4.class.getDeclaredMethod("m3"), + AC2.class.getMethod("value"), AF1.class.getMethod("value"), AM1.class.getMethod("value"), + UsageTestModel.C1.class.getDeclaredMethod("method"), + UsageTestModel.C2.class.getDeclaredMethod("method"))); + + assertThat(reflections.getMethodsWithSignature(int[][].class, String[][].class), + are(C4.class.getDeclaredMethod("m1", int[][].class, String[][].class))); + + assertThat(reflections.getMethodsReturn(int.class), + are(C4.class.getDeclaredMethod("add", int.class, int.class))); + + assertThat(reflections.getMethodsReturn(String.class), + are(C4.class.getDeclaredMethod("m3"), C4.class.getDeclaredMethod("m4", String.class), + AC2.class.getMethod("value"), AF1.class.getMethod("value"), AM1.class.getMethod("value"))); + + assertThat(reflections.getMethodsReturn(void.class), + are(C4.class.getDeclaredMethod("m1"), C4.class.getDeclaredMethod("m1", int.class, String[].class), + C4.class.getDeclaredMethod("m1", int[][].class, String[][].class), + UsageTestModel.C1.class.getDeclaredMethod("method"), + UsageTestModel.C1.class.getDeclaredMethod("method", String.class), + UsageTestModel.C2.class.getDeclaredMethod("method"))); + + assertThat(reflections.getMethodsWithParameter(AM1.class), + are(C4.class.getDeclaredMethod("m4", String.class))); + + assertThat(reflections.getMethodsWithParameter(AM2.class), + are(C4.class.getDeclaredMethod("m4", String.class), + C4.class.getDeclaredMethod("m1", int.class, String[].class))); + } + + @Test + public void testConstructorParameter() throws NoSuchMethodException { + assertThat(reflections.getConstructorsWithParameter(String.class), + are(C4.class.getDeclaredConstructor(String.class))); + + assertThat(reflections.getConstructorsWithSignature(), + are(C1.class.getDeclaredConstructor(), C2.class.getDeclaredConstructor(), C3.class.getDeclaredConstructor(), + C4.class.getDeclaredConstructor(), C5.class.getDeclaredConstructor(), C6.class.getDeclaredConstructor(), + C7.class.getDeclaredConstructor(), UsageTestModel.C1.class.getDeclaredConstructor(), + UsageTestModel.C2.class.getDeclaredConstructor())); + + assertThat(reflections.getConstructorsWithParameter(AM1.class), + are(C4.class.getDeclaredConstructor(String.class))); + } + + @Test + public void testResourcesScanner() { + Predicate filter = + new FilterBuilder().includePattern(".*\\.xml").excludePattern(".*testModel-reflections\\.xml"); + Reflections reflections = new Reflections(new ConfigurationBuilder() + .filterInputsBy(filter) + .setScanners(Scanners.Resources) + .setUrls(Collections.singletonList(ClasspathHelper.forClass(TestModel.class)))); + + Collection resolved = reflections.getResources(Pattern.compile(".*resource1-reflections\\.xml")); + assertThat(resolved, are("META-INF/reflections/resource1-reflections.xml")); + + Collection resources = reflections.getResources(".*"); + assertThat(resources, are("META-INF/reflections/resource1-reflections.xml", + "META-INF/reflections/inner/resource2-reflections.xml")); + } + + @Test + public void testMethodParameterNames() throws NoSuchMethodException { + assertEquals(reflections.getMemberParameterNames(C4.class.getDeclaredMethod("m3")), + Collections.emptyList()); + + assertEquals(reflections.getMemberParameterNames(C4.class.getDeclaredMethod("m4", String.class)), + Collections.singletonList("string")); + + assertEquals(reflections.getMemberParameterNames(C4.class.getDeclaredMethod("add", int.class, int.class)), + Arrays.asList("i1", "i2")); + + assertEquals(reflections.getMemberParameterNames(C4.class.getDeclaredConstructor(String.class)), + Collections.singletonList("f1")); + } + + @Test + public void testMemberUsageScanner() throws NoSuchFieldException, NoSuchMethodException { + //field usage + assertThat(reflections.getMemberUsage(UsageTestModel.C1.class.getDeclaredField("c2")), + are(UsageTestModel.C1.class.getDeclaredConstructor(), + UsageTestModel.C1.class.getDeclaredConstructor(UsageTestModel.C2.class), + UsageTestModel.C1.class.getDeclaredMethod("method"), + UsageTestModel.C1.class.getDeclaredMethod("method", String.class))); + + //method usage + assertThat(reflections.getMemberUsage(UsageTestModel.C1.class.getDeclaredMethod("method")), + are(UsageTestModel.C2.class.getDeclaredMethod("method"))); + + assertThat(reflections.getMemberUsage(UsageTestModel.C1.class.getDeclaredMethod("method", String.class)), + are(UsageTestModel.C2.class.getDeclaredMethod("method"))); + + //constructor usage + assertThat(reflections.getMemberUsage(UsageTestModel.C1.class.getDeclaredConstructor()), + are(UsageTestModel.C2.class.getDeclaredConstructor(), + UsageTestModel.C2.class.getDeclaredMethod("method"))); + + assertThat(reflections.getMemberUsage(UsageTestModel.C1.class.getDeclaredConstructor(UsageTestModel.C2.class)), + are(UsageTestModel.C2.class.getDeclaredMethod("method"))); + } + + @Test + public void testScannerNotConfigured() throws NoSuchMethodException { + Reflections reflections = new Reflections(new ConfigurationBuilder() + .setUrls(Collections.singletonList(ClasspathHelper.forClass(TestModel.class))) + .filterInputsBy(TestModelFilter.includePackage("io\\.github\\.dunwu\\.javatech\\.reflections\\.UsageTestModel\\$.*")) + .setScanners()); + + assertTrue(reflections.getSubTypesOf(C1.class).isEmpty()); + assertTrue(reflections.getTypesAnnotatedWith(AC1.class).isEmpty()); + assertTrue(reflections.getMethodsAnnotatedWith(AC1.class).isEmpty()); + assertTrue(reflections.getMethodsWithSignature().isEmpty()); + assertTrue(reflections.getMethodsWithParameter(String.class).isEmpty()); + assertTrue(reflections.getMethodsReturn(String.class).isEmpty()); + assertTrue(reflections.getConstructorsAnnotatedWith(AM1.class).isEmpty()); + assertTrue(reflections.getConstructorsWithSignature().isEmpty()); + assertTrue(reflections.getConstructorsWithParameter(String.class).isEmpty()); + assertTrue(reflections.getFieldsAnnotatedWith(AF1.class).isEmpty()); + assertTrue(reflections.getResources(".*").isEmpty()); + assertTrue(reflections.getMemberParameterNames(C4.class.getDeclaredMethod("m4", String.class)).isEmpty()); + assertTrue(reflections.getMemberUsage(UsageTestModel.C1.class.getDeclaredConstructor()).isEmpty()); + assertTrue(reflections.getAllTypes().isEmpty()); + } + + // + public static String getUserDir() { + File file = new File(System.getProperty("user.dir")); + //a hack to fix user.dir issue(?) in surfire + if (Arrays.asList(file.list()).contains("reflections")) { + file = new File(file, "reflections"); + } + return file.getAbsolutePath(); + } + + private final BaseMatcher>> isEmpty = new BaseMatcher>>() { + public boolean matches(Object o) { + return ((Collection) o).isEmpty(); + } + + public void describeTo(Description description) { + description.appendText("empty collection"); + } + }; + + private abstract static class Match extends BaseMatcher { + + public void describeTo(Description description) { } + + } + + public static Matcher> are(final T... ts) { + final Collection c1 = Arrays.asList(ts); + return new Match>() { + public boolean matches(Object o) { + Collection c2 = (Collection) o; + return c1.containsAll(c2) && c2.containsAll(c1); + } + + @Override + public void describeTo(Description description) { + description.appendText(Arrays.toString(ts)); + } + }; + } + + @SafeVarargs + public static Matcher> equalTo(T... operand) { + return IsEqual.equalTo(new HashSet<>(Arrays.asList(operand))); + } + + private Matcher>> annotatedWith(final Class annotation) { + return new Match>>() { + public boolean matches(Object o) { + for (Class c : (Iterable>) o) { + List> annotationTypes = + Stream.of(c.getAnnotations()).map(Annotation::annotationType).collect(Collectors.toList()); + if (!annotationTypes.contains(annotation)) return false; + } + return true; + } + }; + } + +} diff --git a/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/TestModel.java b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/TestModel.java new file mode 100644 index 00000000..3045b508 --- /dev/null +++ b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/TestModel.java @@ -0,0 +1,115 @@ +package io.github.dunwu.javatech.reflections; + +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; + +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +@SuppressWarnings({ "ALL" }) +public interface TestModel { + + public @Retention(RUNTIME) + @Inherited + @interface MAI1 {} + + public @Retention(RUNTIME) + @MAI1 + @interface AI1 {} + + public @AI1 + interface I1 {} + + public @Retention(RUNTIME) + @Inherited + @interface AI2 {} + + public @AI2 + interface I2 extends I1 {} + + public @Retention(RUNTIME) + @Inherited + @interface AC1 {} + + public @Retention(RUNTIME) + @interface AC1n {} + + public @AC1 + @AC1n + class C1 implements I2 {} + + public @Retention(RUNTIME) + @interface AC2 { + + public abstract String value(); + + } + + public @AC2("") + class C2 extends C1 {} + + public @AC2("ac2") + class C3 extends C1 {} + + public @Retention(RUNTIME) + @interface AM1 { + + public abstract String value(); + + } + + public @interface AM2 {} + + public @Retention(RUNTIME) + @interface AF1 { + + public abstract String value(); + + } + + public class C4 { + + @AF1("1") + private String f1; + @AF1("2") + protected String f2; + protected String f3; + + public C4() { } + + @AM1("1") + public C4(@AM1("1") String f1) { this.f1 = f1; } + + @AM1("1") + protected void m1() {} + + @AM1("1") + public void m1(int integer, @AM2 String... strings) {} + + @AM1("1") + public void m1(int[][] integer, String[][] strings) {} + + @AM1("2") + public String m3() {return null;} + + public String m4(@AM1("2") @AM2 String string) {return null;} + + public C3 c2toC3(C2 c2) {return null;} + + public int add(int i1, int i2) { return i1 + i2; } + + } + + public class C5 extends C3 {} + + public @AC2("ac2") + interface I3 {} + + public class C6 implements I3 {} + + public @AC2("ac2") + @interface AC3 {} // not @Retention(RUNTIME) + + public @AC3 + class C7 {} + +} diff --git a/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/UsageTestModel.java b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/UsageTestModel.java new file mode 100644 index 00000000..ae1bd5b0 --- /dev/null +++ b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/UsageTestModel.java @@ -0,0 +1,32 @@ +package io.github.dunwu.javatech.reflections; + +public interface UsageTestModel { + + class C1 { + + C2 c2 = new C2(); + + public C1() {} + + public C1(C2 c2) {this.c2 = c2;} + + public void method() {c2.method();} + + public void method(String string) {c2.method();} + + } + + class C2 { + + C1 c1 = new C1(); + + public void method() { + c1 = new C1(); + c1 = new C1(this); + c1.method(); + c1.method(""); + } + + } + +} diff --git a/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/VfsTest.java b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/VfsTest.java new file mode 100644 index 00000000..b3cf9e07 --- /dev/null +++ b/codes/javatech/javatech-lib/src/test/java/io/github/dunwu/javatech/reflections/VfsTest.java @@ -0,0 +1,132 @@ +package io.github.dunwu.javatech.reflections; + +import javassist.bytecode.ClassFile; +import org.junit.jupiter.api.Test; +import org.reflections.ReflectionsException; +import org.reflections.util.ClasspathHelper; +import org.reflections.vfs.SystemDir; +import org.reflections.vfs.Vfs; +import org.slf4j.Logger; + +import java.io.BufferedInputStream; +import java.io.DataInputStream; +import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; + +import static java.text.MessageFormat.format; +import static org.junit.jupiter.api.Assertions.*; + +public class VfsTest { + + @Test + public void testJarFile() throws Exception { + URL url = new URL(ClasspathHelper.forClass(Logger.class).toExternalForm().replace("jar:", "")); + assertTrue(url.toString().startsWith("file:")); + assertTrue(url.toString().contains(".jar")); + + assertTrue(Vfs.DefaultUrlTypes.jarFile.matches(url)); + assertFalse(Vfs.DefaultUrlTypes.jarUrl.matches(url)); + assertFalse(Vfs.DefaultUrlTypes.directory.matches(url)); + + Vfs.Dir dir = Vfs.DefaultUrlTypes.jarFile.createDir(url); + testVfsDir(dir); + } + + @Test + public void testJarUrl() throws Exception { + URL url = ClasspathHelper.forClass(Logger.class); + assertTrue(url.toString().startsWith("jar:file:")); + assertTrue(url.toString().contains(".jar!")); + + assertFalse(Vfs.DefaultUrlTypes.jarFile.matches(url)); + assertTrue(Vfs.DefaultUrlTypes.jarUrl.matches(url)); + assertFalse(Vfs.DefaultUrlTypes.directory.matches(url)); + + Vfs.Dir dir = Vfs.DefaultUrlTypes.jarUrl.createDir(url); + testVfsDir(dir); + } + + @Test + public void testDirectory() throws Exception { + URL url = ClasspathHelper.forClass(getClass()); + assertTrue(url.toString().startsWith("file:")); + assertFalse(url.toString().contains(".jar")); + + assertFalse(Vfs.DefaultUrlTypes.jarFile.matches(url)); + assertFalse(Vfs.DefaultUrlTypes.jarUrl.matches(url)); + assertTrue(Vfs.DefaultUrlTypes.directory.matches(url)); + + Vfs.Dir dir = Vfs.DefaultUrlTypes.directory.createDir(url); + testVfsDir(dir); + } + + @Test + public void testJarInputStream() throws Exception { + URL url = ClasspathHelper.forClass(Logger.class); + assertTrue(Vfs.DefaultUrlTypes.jarInputStream.matches(url)); + try { + testVfsDir(Vfs.DefaultUrlTypes.jarInputStream.createDir(url)); + fail(); + } catch (ReflectionsException e) { + // expected + } + + url = new URL( + ClasspathHelper.forClass(Logger.class).toExternalForm().replace("jar:", "").replace(".jar!", ".jar")); + assertTrue(Vfs.DefaultUrlTypes.jarInputStream.matches(url)); + testVfsDir(Vfs.DefaultUrlTypes.jarInputStream.createDir(url)); + + url = ClasspathHelper.forClass(getClass()); + assertFalse(Vfs.DefaultUrlTypes.jarInputStream.matches(url)); + try { + testVfsDir(Vfs.DefaultUrlTypes.jarInputStream.createDir(url)); + fail(); + } catch (AssertionError e) { + // expected + } + } + + @Test + public void dirWithSpaces() { + Collection urls = ClasspathHelper.forPackage("dir+with spaces"); + assertFalse(urls.isEmpty()); + for (URL url : urls) { + Vfs.Dir dir = Vfs.fromURL(url); + assertNotNull(dir); + assertNotNull(dir.getFiles().iterator().next()); + } + } + + @Test + public void vfsFromDirWithJarInName() throws MalformedURLException { + String tmpFolder = System.getProperty("java.io.tmpdir"); + tmpFolder = tmpFolder.endsWith(File.separator) ? tmpFolder : tmpFolder + File.separator; + String dirWithJarInName = tmpFolder + "tony.jarvis"; + File newDir = new File(dirWithJarInName); + newDir.mkdir(); + + try { + Vfs.Dir dir = Vfs.fromURL(new URL(format("file:{0}", dirWithJarInName))); + + assertEquals(dirWithJarInName.replace("\\", "/"), dir.getPath()); + assertEquals(SystemDir.class, dir.getClass()); + } finally { + newDir.delete(); + } + } + + private void testVfsDir(Vfs.Dir dir) { + List files = new ArrayList<>(); + for (Vfs.File file : dir.getFiles()) { + files.add(file); + } + assertFalse(files.isEmpty()); + } + +} diff --git a/codes/javatech/javatech-lib/src/test/resources/META-INF/reflections/inner/resource2-reflections.xml b/codes/javatech/javatech-lib/src/test/resources/META-INF/reflections/inner/resource2-reflections.xml new file mode 100644 index 00000000..919f565e --- /dev/null +++ b/codes/javatech/javatech-lib/src/test/resources/META-INF/reflections/inner/resource2-reflections.xml @@ -0,0 +1,13 @@ + + + + + + io.github.dunwu.javatech.reflections.TestModel$AF1 + + io.github.dunwu.javatech.reflections.TestModel$C4.f1 + io.github.dunwu.javatech.reflections.TestModel$C4.f2 + + + + diff --git a/codes/javatech/javatech-lib/src/test/resources/META-INF/reflections/resource1-reflections.xml b/codes/javatech/javatech-lib/src/test/resources/META-INF/reflections/resource1-reflections.xml new file mode 100644 index 00000000..e2154b4a --- /dev/null +++ b/codes/javatech/javatech-lib/src/test/resources/META-INF/reflections/resource1-reflections.xml @@ -0,0 +1,16 @@ + + + + + + io.github.dunwu.javatech.reflections.TestModel$AM1 + + io.github.dunwu.javatech.reflections.TestModel$C4.<init>(java.lang.String) + io.github.dunwu.javatech.reflections.TestModel$C4.m3() + io.github.dunwu.javatech.reflections.TestModel$C4.m1(int[][], java.lang.String[][]) + io.github.dunwu.javatech.reflections.TestModel$C4.m1(int, java.lang.String[]) + io.github.dunwu.javatech.reflections.TestModel$C4.m1() + + + + diff --git a/codes/javatech/javatech-lib/src/test/resources/META-INF/reflections/saved-testModel-reflections.json b/codes/javatech/javatech-lib/src/test/resources/META-INF/reflections/saved-testModel-reflections.json new file mode 100644 index 00000000..fa047d1c --- /dev/null +++ b/codes/javatech/javatech-lib/src/test/resources/META-INF/reflections/saved-testModel-reflections.json @@ -0,0 +1,200 @@ +{ + "store": { + "TypesAnnotated": { + "io.github.dunwu.javatech.reflections.TestModel$AC3": [ + "io.github.dunwu.javatech.reflections.TestModel$C7" + ], + "io.github.dunwu.javatech.reflections.TestModel$MAI1": [ + "io.github.dunwu.javatech.reflections.TestModel$AI1" + ], + "io.github.dunwu.javatech.reflections.TestModel$AC2": [ + "io.github.dunwu.javatech.reflections.TestModel$C3", + "io.github.dunwu.javatech.reflections.TestModel$C2", + "io.github.dunwu.javatech.reflections.TestModel$AC3", + "io.github.dunwu.javatech.reflections.TestModel$I3" + ], + "io.github.dunwu.javatech.reflections.TestModel$AC1n": [ + "io.github.dunwu.javatech.reflections.TestModel$C1" + ], + "io.github.dunwu.javatech.reflections.TestModel$AC1": [ + "io.github.dunwu.javatech.reflections.TestModel$C1" + ], + "io.github.dunwu.javatech.reflections.TestModel$AI2": [ + "io.github.dunwu.javatech.reflections.TestModel$I2" + ], + "java.lang.annotation.Inherited": [ + "io.github.dunwu.javatech.reflections.TestModel$MAI1", + "io.github.dunwu.javatech.reflections.TestModel$AC1", + "io.github.dunwu.javatech.reflections.TestModel$AI2" + ], + "io.github.dunwu.javatech.reflections.TestModel$AI1": [ + "io.github.dunwu.javatech.reflections.TestModel$I1" + ], + "java.lang.annotation.Retention": [ + "io.github.dunwu.javatech.reflections.TestModel$AC3", + "io.github.dunwu.javatech.reflections.TestModel$MAI1", + "io.github.dunwu.javatech.reflections.TestModel$AC1n", + "io.github.dunwu.javatech.reflections.TestModel$AC2", + "io.github.dunwu.javatech.reflections.TestModel$AC1", + "io.github.dunwu.javatech.reflections.TestModel$AI2", + "io.github.dunwu.javatech.reflections.TestModel$AI1", + "io.github.dunwu.javatech.reflections.TestModel$AF1", + "io.github.dunwu.javatech.reflections.TestModel$AM1" + ] + }, + "MethodsSignature": { + "[io.github.dunwu.javatech.reflections.TestModel$C2]": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.c2toC3(io.github.dunwu.javatech.reflections.TestModel$C2)" + ], + "[]": [ + "io.github.dunwu.javatech.reflections.TestModel$C7.\u003cinit\u003e()", + "io.github.dunwu.javatech.reflections.TestModel$AF1.value()", + "io.github.dunwu.javatech.reflections.TestModel$C4.m1()", + "io.github.dunwu.javatech.reflections.TestModel$C4.\u003cinit\u003e()", + "io.github.dunwu.javatech.reflections.TestModel$C2.\u003cinit\u003e()", + "io.github.dunwu.javatech.reflections.TestModel$C4.m3()", + "io.github.dunwu.javatech.reflections.TestModel$C3.\u003cinit\u003e()", + "io.github.dunwu.javatech.reflections.TestModel$C6.\u003cinit\u003e()", + "io.github.dunwu.javatech.reflections.TestModel$C5.\u003cinit\u003e()", + "io.github.dunwu.javatech.reflections.TestModel$AM1.value()", + "io.github.dunwu.javatech.reflections.TestModel$AC2.value()", + "io.github.dunwu.javatech.reflections.TestModel$C1.\u003cinit\u003e()" + ], + "[int, java.lang.String[]]": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.m1(int, java.lang.String[])" + ], + "[int, int]": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.add(int, int)" + ], + "[java.lang.String]": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.m4(java.lang.String)", + "io.github.dunwu.javatech.reflections.TestModel$C4.\u003cinit\u003e(java.lang.String)" + ], + "[int[][], java.lang.String[][]]": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.m1(int[][], java.lang.String[][])" + ] + }, + "MethodsParameter": { + "io.github.dunwu.javatech.reflections.TestModel$C2": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.c2toC3(io.github.dunwu.javatech.reflections.TestModel$C2)" + ], + "int[][]": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.m1(int[][], java.lang.String[][])" + ], + "java.lang.String[][]": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.m1(int[][], java.lang.String[][])" + ], + "java.lang.String": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.m4(java.lang.String)", + "io.github.dunwu.javatech.reflections.TestModel$C4.\u003cinit\u003e(java.lang.String)" + ], + "java.lang.String[]": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.m1(int, java.lang.String[])" + ], + "io.github.dunwu.javatech.reflections.TestModel$AM1": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.m4(java.lang.String)", + "io.github.dunwu.javatech.reflections.TestModel$C4.\u003cinit\u003e(java.lang.String)" + ], + "int": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.m1(int, java.lang.String[])", + "io.github.dunwu.javatech.reflections.TestModel$C4.add(int, int)" + ] + }, + "SubTypes": { + "io.github.dunwu.javatech.reflections.TestModel$C3": [ + "io.github.dunwu.javatech.reflections.TestModel$C5" + ], + "io.github.dunwu.javatech.reflections.TestModel$C1": [ + "io.github.dunwu.javatech.reflections.TestModel$C3", + "io.github.dunwu.javatech.reflections.TestModel$C2" + ], + "java.lang.annotation.Annotation": [ + "io.github.dunwu.javatech.reflections.TestModel$AC3", + "io.github.dunwu.javatech.reflections.TestModel$MAI1", + "io.github.dunwu.javatech.reflections.TestModel$AC2", + "io.github.dunwu.javatech.reflections.TestModel$AC1n", + "io.github.dunwu.javatech.reflections.TestModel$AC1", + "io.github.dunwu.javatech.reflections.TestModel$AI2", + "io.github.dunwu.javatech.reflections.TestModel$AI1", + "io.github.dunwu.javatech.reflections.TestModel$AF1", + "io.github.dunwu.javatech.reflections.TestModel$AM1" + ], + "io.github.dunwu.javatech.reflections.TestModel$I1": [ + "io.github.dunwu.javatech.reflections.TestModel$I2" + ], + "io.github.dunwu.javatech.reflections.TestModel$I3": [ + "io.github.dunwu.javatech.reflections.TestModel$C6" + ], + "java.lang.Object": [ + "io.github.dunwu.javatech.reflections.TestModel$AI2", + "io.github.dunwu.javatech.reflections.TestModel$AI1", + "io.github.dunwu.javatech.reflections.TestModel$AF1", + "io.github.dunwu.javatech.reflections.TestModel$C7", + "io.github.dunwu.javatech.reflections.TestModel$AM1", + "io.github.dunwu.javatech.reflections.TestModel$C6", + "io.github.dunwu.javatech.reflections.TestModel$AC3", + "io.github.dunwu.javatech.reflections.TestModel$C4", + "io.github.dunwu.javatech.reflections.TestModel$MAI1", + "io.github.dunwu.javatech.reflections.TestModel$AC2", + "io.github.dunwu.javatech.reflections.TestModel$C1", + "io.github.dunwu.javatech.reflections.TestModel$AC1n", + "io.github.dunwu.javatech.reflections.TestModel$AC1", + "io.github.dunwu.javatech.reflections.TestModel$I1", + "io.github.dunwu.javatech.reflections.TestModel$I3", + "io.github.dunwu.javatech.reflections.TestModel$I2" + ], + "io.github.dunwu.javatech.reflections.TestModel$I2": [ + "io.github.dunwu.javatech.reflections.TestModel$C1" + ] + }, + "MethodsReturn": { + "io.github.dunwu.javatech.reflections.TestModel$C3": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.c2toC3(io.github.dunwu.javatech.reflections.TestModel$C2)" + ], + "void": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.m1(int, java.lang.String[])", + "io.github.dunwu.javatech.reflections.TestModel$C4.m1()", + "io.github.dunwu.javatech.reflections.TestModel$C4.m1(int[][], java.lang.String[][])" + ], + "java.lang.String": [ + "io.github.dunwu.javatech.reflections.TestModel$AF1.value()", + "io.github.dunwu.javatech.reflections.TestModel$C4.m4(java.lang.String)", + "io.github.dunwu.javatech.reflections.TestModel$C4.m3()", + "io.github.dunwu.javatech.reflections.TestModel$AM1.value()", + "io.github.dunwu.javatech.reflections.TestModel$AC2.value()" + ], + "int": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.add(int, int)" + ] + }, + "MethodsAnnotated": { + "io.github.dunwu.javatech.reflections.TestModel$AM1": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.m1(int, java.lang.String[])", + "io.github.dunwu.javatech.reflections.TestModel$C4.m1()", + "io.github.dunwu.javatech.reflections.TestModel$C4.m3()", + "io.github.dunwu.javatech.reflections.TestModel$C4.m1(int[][], java.lang.String[][])", + "io.github.dunwu.javatech.reflections.TestModel$C4.\u003cinit\u003e(java.lang.String)" + ] + }, + "FieldsAnnotated": { + "io.github.dunwu.javatech.reflections.TestModel$AF1": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.f1", + "io.github.dunwu.javatech.reflections.TestModel$C4.f2" + ] + }, + "Resources": { + "resource1-reflections.xml": [ + "META-INF/reflections/resource1-reflections.xml" + ], + "saved-testModel-reflections.xml": [ + "META-INF/reflections/saved-testModel-reflections.xml" + ], + "resource2-reflections.xml": [ + "META-INF/reflections/inner/resource2-reflections.xml" + ], + "testModel-reflections.xml": [ + "META-INF/reflections/testModel-reflections.xml" + ] + } + } +} diff --git a/codes/javatech/javatech-lib/src/test/resources/META-INF/reflections/saved-testModel-reflections.xml b/codes/javatech/javatech-lib/src/test/resources/META-INF/reflections/saved-testModel-reflections.xml new file mode 100644 index 00000000..4acbc004 --- /dev/null +++ b/codes/javatech/javatech-lib/src/test/resources/META-INF/reflections/saved-testModel-reflections.xml @@ -0,0 +1,317 @@ + + + + + + io.github.dunwu.javatech.reflections.TestModel$AC3 + + io.github.dunwu.javatech.reflections.TestModel$C7 + + + + io.github.dunwu.javatech.reflections.TestModel$MAI1 + + io.github.dunwu.javatech.reflections.TestModel$AI1 + + + + io.github.dunwu.javatech.reflections.TestModel$AC2 + + io.github.dunwu.javatech.reflections.TestModel$C3 + io.github.dunwu.javatech.reflections.TestModel$C2 + io.github.dunwu.javatech.reflections.TestModel$AC3 + io.github.dunwu.javatech.reflections.TestModel$I3 + + + + io.github.dunwu.javatech.reflections.TestModel$AC1n + + io.github.dunwu.javatech.reflections.TestModel$C1 + + + + io.github.dunwu.javatech.reflections.TestModel$AC1 + + io.github.dunwu.javatech.reflections.TestModel$C1 + + + + io.github.dunwu.javatech.reflections.TestModel$AI2 + + io.github.dunwu.javatech.reflections.TestModel$I2 + + + + java.lang.annotation.Inherited + + io.github.dunwu.javatech.reflections.TestModel$MAI1 + io.github.dunwu.javatech.reflections.TestModel$AC1 + io.github.dunwu.javatech.reflections.TestModel$AI2 + + + + io.github.dunwu.javatech.reflections.TestModel$AI1 + + io.github.dunwu.javatech.reflections.TestModel$I1 + + + + java.lang.annotation.Retention + + io.github.dunwu.javatech.reflections.TestModel$AC3 + io.github.dunwu.javatech.reflections.TestModel$MAI1 + io.github.dunwu.javatech.reflections.TestModel$AC1n + io.github.dunwu.javatech.reflections.TestModel$AC2 + io.github.dunwu.javatech.reflections.TestModel$AC1 + io.github.dunwu.javatech.reflections.TestModel$AI2 + io.github.dunwu.javatech.reflections.TestModel$AI1 + io.github.dunwu.javatech.reflections.TestModel$AF1 + io.github.dunwu.javatech.reflections.TestModel$AM1 + + + + + + [io.github.dunwu.javatech.reflections.TestModel$C2] + + io.github.dunwu.javatech.reflections.TestModel$C4.c2toC3(io.github.dunwu.javatech.reflections.TestModel$C2) + + + + [] + + io.github.dunwu.javatech.reflections.TestModel$C7.<init>() + io.github.dunwu.javatech.reflections.TestModel$AF1.value() + io.github.dunwu.javatech.reflections.TestModel$C4.m1() + io.github.dunwu.javatech.reflections.TestModel$C4.<init>() + io.github.dunwu.javatech.reflections.TestModel$C2.<init>() + io.github.dunwu.javatech.reflections.TestModel$C4.m3() + io.github.dunwu.javatech.reflections.TestModel$C3.<init>() + io.github.dunwu.javatech.reflections.TestModel$C6.<init>() + io.github.dunwu.javatech.reflections.TestModel$C5.<init>() + io.github.dunwu.javatech.reflections.TestModel$AM1.value() + io.github.dunwu.javatech.reflections.TestModel$AC2.value() + io.github.dunwu.javatech.reflections.TestModel$C1.<init>() + + + + [int, java.lang.String[]] + + io.github.dunwu.javatech.reflections.TestModel$C4.m1(int, java.lang.String[]) + + + + [int, int] + + io.github.dunwu.javatech.reflections.TestModel$C4.add(int, int) + + + + [java.lang.String] + + io.github.dunwu.javatech.reflections.TestModel$C4.m4(java.lang.String) + io.github.dunwu.javatech.reflections.TestModel$C4.<init>(java.lang.String) + + + + [int[][], java.lang.String[][]] + + io.github.dunwu.javatech.reflections.TestModel$C4.m1(int[][], java.lang.String[][]) + + + + + + io.github.dunwu.javatech.reflections.TestModel$C2 + + io.github.dunwu.javatech.reflections.TestModel$C4.c2toC3(io.github.dunwu.javatech.reflections.TestModel$C2) + + + + int[][] + + io.github.dunwu.javatech.reflections.TestModel$C4.m1(int[][], java.lang.String[][]) + + + + java.lang.String[][] + + io.github.dunwu.javatech.reflections.TestModel$C4.m1(int[][], java.lang.String[][]) + + + + java.lang.String + + io.github.dunwu.javatech.reflections.TestModel$C4.m4(java.lang.String) + io.github.dunwu.javatech.reflections.TestModel$C4.<init>(java.lang.String) + + + + java.lang.String[] + + io.github.dunwu.javatech.reflections.TestModel$C4.m1(int, java.lang.String[]) + + + + io.github.dunwu.javatech.reflections.TestModel$AM1 + + io.github.dunwu.javatech.reflections.TestModel$C4.m4(java.lang.String) + io.github.dunwu.javatech.reflections.TestModel$C4.<init>(java.lang.String) + + + + int + + io.github.dunwu.javatech.reflections.TestModel$C4.m1(int, java.lang.String[]) + io.github.dunwu.javatech.reflections.TestModel$C4.add(int, int) + + + + + + io.github.dunwu.javatech.reflections.TestModel$C3 + + io.github.dunwu.javatech.reflections.TestModel$C5 + + + + io.github.dunwu.javatech.reflections.TestModel$C1 + + io.github.dunwu.javatech.reflections.TestModel$C3 + io.github.dunwu.javatech.reflections.TestModel$C2 + + + + java.lang.annotation.Annotation + + io.github.dunwu.javatech.reflections.TestModel$AC3 + io.github.dunwu.javatech.reflections.TestModel$MAI1 + io.github.dunwu.javatech.reflections.TestModel$AC2 + io.github.dunwu.javatech.reflections.TestModel$AC1n + io.github.dunwu.javatech.reflections.TestModel$AC1 + io.github.dunwu.javatech.reflections.TestModel$AI2 + io.github.dunwu.javatech.reflections.TestModel$AI1 + io.github.dunwu.javatech.reflections.TestModel$AF1 + io.github.dunwu.javatech.reflections.TestModel$AM1 + + + + io.github.dunwu.javatech.reflections.TestModel$I1 + + io.github.dunwu.javatech.reflections.TestModel$I2 + + + + io.github.dunwu.javatech.reflections.TestModel$I3 + + io.github.dunwu.javatech.reflections.TestModel$C6 + + + + java.lang.Object + + io.github.dunwu.javatech.reflections.TestModel$AI2 + io.github.dunwu.javatech.reflections.TestModel$AI1 + io.github.dunwu.javatech.reflections.TestModel$AF1 + io.github.dunwu.javatech.reflections.TestModel$C7 + io.github.dunwu.javatech.reflections.TestModel$AM1 + io.github.dunwu.javatech.reflections.TestModel$C6 + io.github.dunwu.javatech.reflections.TestModel$AC3 + io.github.dunwu.javatech.reflections.TestModel$C4 + io.github.dunwu.javatech.reflections.TestModel$MAI1 + io.github.dunwu.javatech.reflections.TestModel$AC2 + io.github.dunwu.javatech.reflections.TestModel$C1 + io.github.dunwu.javatech.reflections.TestModel$AC1n + io.github.dunwu.javatech.reflections.TestModel$AC1 + io.github.dunwu.javatech.reflections.TestModel$I1 + io.github.dunwu.javatech.reflections.TestModel$I3 + io.github.dunwu.javatech.reflections.TestModel$I2 + + + + io.github.dunwu.javatech.reflections.TestModel$I2 + + io.github.dunwu.javatech.reflections.TestModel$C1 + + + + + + io.github.dunwu.javatech.reflections.TestModel$C3 + + io.github.dunwu.javatech.reflections.TestModel$C4.c2toC3(io.github.dunwu.javatech.reflections.TestModel$C2) + + + + void + + io.github.dunwu.javatech.reflections.TestModel$C4.m1(int, java.lang.String[]) + io.github.dunwu.javatech.reflections.TestModel$C4.m1() + io.github.dunwu.javatech.reflections.TestModel$C4.m1(int[][], java.lang.String[][]) + + + + java.lang.String + + io.github.dunwu.javatech.reflections.TestModel$AF1.value() + io.github.dunwu.javatech.reflections.TestModel$C4.m4(java.lang.String) + io.github.dunwu.javatech.reflections.TestModel$C4.m3() + io.github.dunwu.javatech.reflections.TestModel$AM1.value() + io.github.dunwu.javatech.reflections.TestModel$AC2.value() + + + + int + + io.github.dunwu.javatech.reflections.TestModel$C4.add(int, int) + + + + + + io.github.dunwu.javatech.reflections.TestModel$AM1 + + io.github.dunwu.javatech.reflections.TestModel$C4.m1(int, java.lang.String[]) + io.github.dunwu.javatech.reflections.TestModel$C4.m1() + io.github.dunwu.javatech.reflections.TestModel$C4.m3() + io.github.dunwu.javatech.reflections.TestModel$C4.m1(int[][], java.lang.String[][]) + io.github.dunwu.javatech.reflections.TestModel$C4.<init>(java.lang.String) + + + + + + io.github.dunwu.javatech.reflections.TestModel$AF1 + + io.github.dunwu.javatech.reflections.TestModel$C4.f1 + io.github.dunwu.javatech.reflections.TestModel$C4.f2 + + + + + + resource1-reflections.xml + + META-INF/reflections/resource1-reflections.xml + + + + saved-testModel-reflections.xml + + META-INF/reflections/saved-testModel-reflections.xml + + + + resource2-reflections.xml + + META-INF/reflections/inner/resource2-reflections.xml + + + + testModel-reflections.xml + + META-INF/reflections/testModel-reflections.xml + + + + diff --git a/codes/javatech/javatech-lib/src/test/resources/META-INF/reflections/testModel-reflections.json b/codes/javatech/javatech-lib/src/test/resources/META-INF/reflections/testModel-reflections.json new file mode 100644 index 00000000..fa047d1c --- /dev/null +++ b/codes/javatech/javatech-lib/src/test/resources/META-INF/reflections/testModel-reflections.json @@ -0,0 +1,200 @@ +{ + "store": { + "TypesAnnotated": { + "io.github.dunwu.javatech.reflections.TestModel$AC3": [ + "io.github.dunwu.javatech.reflections.TestModel$C7" + ], + "io.github.dunwu.javatech.reflections.TestModel$MAI1": [ + "io.github.dunwu.javatech.reflections.TestModel$AI1" + ], + "io.github.dunwu.javatech.reflections.TestModel$AC2": [ + "io.github.dunwu.javatech.reflections.TestModel$C3", + "io.github.dunwu.javatech.reflections.TestModel$C2", + "io.github.dunwu.javatech.reflections.TestModel$AC3", + "io.github.dunwu.javatech.reflections.TestModel$I3" + ], + "io.github.dunwu.javatech.reflections.TestModel$AC1n": [ + "io.github.dunwu.javatech.reflections.TestModel$C1" + ], + "io.github.dunwu.javatech.reflections.TestModel$AC1": [ + "io.github.dunwu.javatech.reflections.TestModel$C1" + ], + "io.github.dunwu.javatech.reflections.TestModel$AI2": [ + "io.github.dunwu.javatech.reflections.TestModel$I2" + ], + "java.lang.annotation.Inherited": [ + "io.github.dunwu.javatech.reflections.TestModel$MAI1", + "io.github.dunwu.javatech.reflections.TestModel$AC1", + "io.github.dunwu.javatech.reflections.TestModel$AI2" + ], + "io.github.dunwu.javatech.reflections.TestModel$AI1": [ + "io.github.dunwu.javatech.reflections.TestModel$I1" + ], + "java.lang.annotation.Retention": [ + "io.github.dunwu.javatech.reflections.TestModel$AC3", + "io.github.dunwu.javatech.reflections.TestModel$MAI1", + "io.github.dunwu.javatech.reflections.TestModel$AC1n", + "io.github.dunwu.javatech.reflections.TestModel$AC2", + "io.github.dunwu.javatech.reflections.TestModel$AC1", + "io.github.dunwu.javatech.reflections.TestModel$AI2", + "io.github.dunwu.javatech.reflections.TestModel$AI1", + "io.github.dunwu.javatech.reflections.TestModel$AF1", + "io.github.dunwu.javatech.reflections.TestModel$AM1" + ] + }, + "MethodsSignature": { + "[io.github.dunwu.javatech.reflections.TestModel$C2]": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.c2toC3(io.github.dunwu.javatech.reflections.TestModel$C2)" + ], + "[]": [ + "io.github.dunwu.javatech.reflections.TestModel$C7.\u003cinit\u003e()", + "io.github.dunwu.javatech.reflections.TestModel$AF1.value()", + "io.github.dunwu.javatech.reflections.TestModel$C4.m1()", + "io.github.dunwu.javatech.reflections.TestModel$C4.\u003cinit\u003e()", + "io.github.dunwu.javatech.reflections.TestModel$C2.\u003cinit\u003e()", + "io.github.dunwu.javatech.reflections.TestModel$C4.m3()", + "io.github.dunwu.javatech.reflections.TestModel$C3.\u003cinit\u003e()", + "io.github.dunwu.javatech.reflections.TestModel$C6.\u003cinit\u003e()", + "io.github.dunwu.javatech.reflections.TestModel$C5.\u003cinit\u003e()", + "io.github.dunwu.javatech.reflections.TestModel$AM1.value()", + "io.github.dunwu.javatech.reflections.TestModel$AC2.value()", + "io.github.dunwu.javatech.reflections.TestModel$C1.\u003cinit\u003e()" + ], + "[int, java.lang.String[]]": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.m1(int, java.lang.String[])" + ], + "[int, int]": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.add(int, int)" + ], + "[java.lang.String]": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.m4(java.lang.String)", + "io.github.dunwu.javatech.reflections.TestModel$C4.\u003cinit\u003e(java.lang.String)" + ], + "[int[][], java.lang.String[][]]": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.m1(int[][], java.lang.String[][])" + ] + }, + "MethodsParameter": { + "io.github.dunwu.javatech.reflections.TestModel$C2": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.c2toC3(io.github.dunwu.javatech.reflections.TestModel$C2)" + ], + "int[][]": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.m1(int[][], java.lang.String[][])" + ], + "java.lang.String[][]": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.m1(int[][], java.lang.String[][])" + ], + "java.lang.String": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.m4(java.lang.String)", + "io.github.dunwu.javatech.reflections.TestModel$C4.\u003cinit\u003e(java.lang.String)" + ], + "java.lang.String[]": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.m1(int, java.lang.String[])" + ], + "io.github.dunwu.javatech.reflections.TestModel$AM1": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.m4(java.lang.String)", + "io.github.dunwu.javatech.reflections.TestModel$C4.\u003cinit\u003e(java.lang.String)" + ], + "int": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.m1(int, java.lang.String[])", + "io.github.dunwu.javatech.reflections.TestModel$C4.add(int, int)" + ] + }, + "SubTypes": { + "io.github.dunwu.javatech.reflections.TestModel$C3": [ + "io.github.dunwu.javatech.reflections.TestModel$C5" + ], + "io.github.dunwu.javatech.reflections.TestModel$C1": [ + "io.github.dunwu.javatech.reflections.TestModel$C3", + "io.github.dunwu.javatech.reflections.TestModel$C2" + ], + "java.lang.annotation.Annotation": [ + "io.github.dunwu.javatech.reflections.TestModel$AC3", + "io.github.dunwu.javatech.reflections.TestModel$MAI1", + "io.github.dunwu.javatech.reflections.TestModel$AC2", + "io.github.dunwu.javatech.reflections.TestModel$AC1n", + "io.github.dunwu.javatech.reflections.TestModel$AC1", + "io.github.dunwu.javatech.reflections.TestModel$AI2", + "io.github.dunwu.javatech.reflections.TestModel$AI1", + "io.github.dunwu.javatech.reflections.TestModel$AF1", + "io.github.dunwu.javatech.reflections.TestModel$AM1" + ], + "io.github.dunwu.javatech.reflections.TestModel$I1": [ + "io.github.dunwu.javatech.reflections.TestModel$I2" + ], + "io.github.dunwu.javatech.reflections.TestModel$I3": [ + "io.github.dunwu.javatech.reflections.TestModel$C6" + ], + "java.lang.Object": [ + "io.github.dunwu.javatech.reflections.TestModel$AI2", + "io.github.dunwu.javatech.reflections.TestModel$AI1", + "io.github.dunwu.javatech.reflections.TestModel$AF1", + "io.github.dunwu.javatech.reflections.TestModel$C7", + "io.github.dunwu.javatech.reflections.TestModel$AM1", + "io.github.dunwu.javatech.reflections.TestModel$C6", + "io.github.dunwu.javatech.reflections.TestModel$AC3", + "io.github.dunwu.javatech.reflections.TestModel$C4", + "io.github.dunwu.javatech.reflections.TestModel$MAI1", + "io.github.dunwu.javatech.reflections.TestModel$AC2", + "io.github.dunwu.javatech.reflections.TestModel$C1", + "io.github.dunwu.javatech.reflections.TestModel$AC1n", + "io.github.dunwu.javatech.reflections.TestModel$AC1", + "io.github.dunwu.javatech.reflections.TestModel$I1", + "io.github.dunwu.javatech.reflections.TestModel$I3", + "io.github.dunwu.javatech.reflections.TestModel$I2" + ], + "io.github.dunwu.javatech.reflections.TestModel$I2": [ + "io.github.dunwu.javatech.reflections.TestModel$C1" + ] + }, + "MethodsReturn": { + "io.github.dunwu.javatech.reflections.TestModel$C3": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.c2toC3(io.github.dunwu.javatech.reflections.TestModel$C2)" + ], + "void": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.m1(int, java.lang.String[])", + "io.github.dunwu.javatech.reflections.TestModel$C4.m1()", + "io.github.dunwu.javatech.reflections.TestModel$C4.m1(int[][], java.lang.String[][])" + ], + "java.lang.String": [ + "io.github.dunwu.javatech.reflections.TestModel$AF1.value()", + "io.github.dunwu.javatech.reflections.TestModel$C4.m4(java.lang.String)", + "io.github.dunwu.javatech.reflections.TestModel$C4.m3()", + "io.github.dunwu.javatech.reflections.TestModel$AM1.value()", + "io.github.dunwu.javatech.reflections.TestModel$AC2.value()" + ], + "int": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.add(int, int)" + ] + }, + "MethodsAnnotated": { + "io.github.dunwu.javatech.reflections.TestModel$AM1": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.m1(int, java.lang.String[])", + "io.github.dunwu.javatech.reflections.TestModel$C4.m1()", + "io.github.dunwu.javatech.reflections.TestModel$C4.m3()", + "io.github.dunwu.javatech.reflections.TestModel$C4.m1(int[][], java.lang.String[][])", + "io.github.dunwu.javatech.reflections.TestModel$C4.\u003cinit\u003e(java.lang.String)" + ] + }, + "FieldsAnnotated": { + "io.github.dunwu.javatech.reflections.TestModel$AF1": [ + "io.github.dunwu.javatech.reflections.TestModel$C4.f1", + "io.github.dunwu.javatech.reflections.TestModel$C4.f2" + ] + }, + "Resources": { + "resource1-reflections.xml": [ + "META-INF/reflections/resource1-reflections.xml" + ], + "saved-testModel-reflections.xml": [ + "META-INF/reflections/saved-testModel-reflections.xml" + ], + "resource2-reflections.xml": [ + "META-INF/reflections/inner/resource2-reflections.xml" + ], + "testModel-reflections.xml": [ + "META-INF/reflections/testModel-reflections.xml" + ] + } + } +} diff --git a/codes/javatech/javatech-lib/src/test/resources/META-INF/reflections/testModel-reflections.xml b/codes/javatech/javatech-lib/src/test/resources/META-INF/reflections/testModel-reflections.xml new file mode 100644 index 00000000..4acbc004 --- /dev/null +++ b/codes/javatech/javatech-lib/src/test/resources/META-INF/reflections/testModel-reflections.xml @@ -0,0 +1,317 @@ + + + + + + io.github.dunwu.javatech.reflections.TestModel$AC3 + + io.github.dunwu.javatech.reflections.TestModel$C7 + + + + io.github.dunwu.javatech.reflections.TestModel$MAI1 + + io.github.dunwu.javatech.reflections.TestModel$AI1 + + + + io.github.dunwu.javatech.reflections.TestModel$AC2 + + io.github.dunwu.javatech.reflections.TestModel$C3 + io.github.dunwu.javatech.reflections.TestModel$C2 + io.github.dunwu.javatech.reflections.TestModel$AC3 + io.github.dunwu.javatech.reflections.TestModel$I3 + + + + io.github.dunwu.javatech.reflections.TestModel$AC1n + + io.github.dunwu.javatech.reflections.TestModel$C1 + + + + io.github.dunwu.javatech.reflections.TestModel$AC1 + + io.github.dunwu.javatech.reflections.TestModel$C1 + + + + io.github.dunwu.javatech.reflections.TestModel$AI2 + + io.github.dunwu.javatech.reflections.TestModel$I2 + + + + java.lang.annotation.Inherited + + io.github.dunwu.javatech.reflections.TestModel$MAI1 + io.github.dunwu.javatech.reflections.TestModel$AC1 + io.github.dunwu.javatech.reflections.TestModel$AI2 + + + + io.github.dunwu.javatech.reflections.TestModel$AI1 + + io.github.dunwu.javatech.reflections.TestModel$I1 + + + + java.lang.annotation.Retention + + io.github.dunwu.javatech.reflections.TestModel$AC3 + io.github.dunwu.javatech.reflections.TestModel$MAI1 + io.github.dunwu.javatech.reflections.TestModel$AC1n + io.github.dunwu.javatech.reflections.TestModel$AC2 + io.github.dunwu.javatech.reflections.TestModel$AC1 + io.github.dunwu.javatech.reflections.TestModel$AI2 + io.github.dunwu.javatech.reflections.TestModel$AI1 + io.github.dunwu.javatech.reflections.TestModel$AF1 + io.github.dunwu.javatech.reflections.TestModel$AM1 + + + + + + [io.github.dunwu.javatech.reflections.TestModel$C2] + + io.github.dunwu.javatech.reflections.TestModel$C4.c2toC3(io.github.dunwu.javatech.reflections.TestModel$C2) + + + + [] + + io.github.dunwu.javatech.reflections.TestModel$C7.<init>() + io.github.dunwu.javatech.reflections.TestModel$AF1.value() + io.github.dunwu.javatech.reflections.TestModel$C4.m1() + io.github.dunwu.javatech.reflections.TestModel$C4.<init>() + io.github.dunwu.javatech.reflections.TestModel$C2.<init>() + io.github.dunwu.javatech.reflections.TestModel$C4.m3() + io.github.dunwu.javatech.reflections.TestModel$C3.<init>() + io.github.dunwu.javatech.reflections.TestModel$C6.<init>() + io.github.dunwu.javatech.reflections.TestModel$C5.<init>() + io.github.dunwu.javatech.reflections.TestModel$AM1.value() + io.github.dunwu.javatech.reflections.TestModel$AC2.value() + io.github.dunwu.javatech.reflections.TestModel$C1.<init>() + + + + [int, java.lang.String[]] + + io.github.dunwu.javatech.reflections.TestModel$C4.m1(int, java.lang.String[]) + + + + [int, int] + + io.github.dunwu.javatech.reflections.TestModel$C4.add(int, int) + + + + [java.lang.String] + + io.github.dunwu.javatech.reflections.TestModel$C4.m4(java.lang.String) + io.github.dunwu.javatech.reflections.TestModel$C4.<init>(java.lang.String) + + + + [int[][], java.lang.String[][]] + + io.github.dunwu.javatech.reflections.TestModel$C4.m1(int[][], java.lang.String[][]) + + + + + + io.github.dunwu.javatech.reflections.TestModel$C2 + + io.github.dunwu.javatech.reflections.TestModel$C4.c2toC3(io.github.dunwu.javatech.reflections.TestModel$C2) + + + + int[][] + + io.github.dunwu.javatech.reflections.TestModel$C4.m1(int[][], java.lang.String[][]) + + + + java.lang.String[][] + + io.github.dunwu.javatech.reflections.TestModel$C4.m1(int[][], java.lang.String[][]) + + + + java.lang.String + + io.github.dunwu.javatech.reflections.TestModel$C4.m4(java.lang.String) + io.github.dunwu.javatech.reflections.TestModel$C4.<init>(java.lang.String) + + + + java.lang.String[] + + io.github.dunwu.javatech.reflections.TestModel$C4.m1(int, java.lang.String[]) + + + + io.github.dunwu.javatech.reflections.TestModel$AM1 + + io.github.dunwu.javatech.reflections.TestModel$C4.m4(java.lang.String) + io.github.dunwu.javatech.reflections.TestModel$C4.<init>(java.lang.String) + + + + int + + io.github.dunwu.javatech.reflections.TestModel$C4.m1(int, java.lang.String[]) + io.github.dunwu.javatech.reflections.TestModel$C4.add(int, int) + + + + + + io.github.dunwu.javatech.reflections.TestModel$C3 + + io.github.dunwu.javatech.reflections.TestModel$C5 + + + + io.github.dunwu.javatech.reflections.TestModel$C1 + + io.github.dunwu.javatech.reflections.TestModel$C3 + io.github.dunwu.javatech.reflections.TestModel$C2 + + + + java.lang.annotation.Annotation + + io.github.dunwu.javatech.reflections.TestModel$AC3 + io.github.dunwu.javatech.reflections.TestModel$MAI1 + io.github.dunwu.javatech.reflections.TestModel$AC2 + io.github.dunwu.javatech.reflections.TestModel$AC1n + io.github.dunwu.javatech.reflections.TestModel$AC1 + io.github.dunwu.javatech.reflections.TestModel$AI2 + io.github.dunwu.javatech.reflections.TestModel$AI1 + io.github.dunwu.javatech.reflections.TestModel$AF1 + io.github.dunwu.javatech.reflections.TestModel$AM1 + + + + io.github.dunwu.javatech.reflections.TestModel$I1 + + io.github.dunwu.javatech.reflections.TestModel$I2 + + + + io.github.dunwu.javatech.reflections.TestModel$I3 + + io.github.dunwu.javatech.reflections.TestModel$C6 + + + + java.lang.Object + + io.github.dunwu.javatech.reflections.TestModel$AI2 + io.github.dunwu.javatech.reflections.TestModel$AI1 + io.github.dunwu.javatech.reflections.TestModel$AF1 + io.github.dunwu.javatech.reflections.TestModel$C7 + io.github.dunwu.javatech.reflections.TestModel$AM1 + io.github.dunwu.javatech.reflections.TestModel$C6 + io.github.dunwu.javatech.reflections.TestModel$AC3 + io.github.dunwu.javatech.reflections.TestModel$C4 + io.github.dunwu.javatech.reflections.TestModel$MAI1 + io.github.dunwu.javatech.reflections.TestModel$AC2 + io.github.dunwu.javatech.reflections.TestModel$C1 + io.github.dunwu.javatech.reflections.TestModel$AC1n + io.github.dunwu.javatech.reflections.TestModel$AC1 + io.github.dunwu.javatech.reflections.TestModel$I1 + io.github.dunwu.javatech.reflections.TestModel$I3 + io.github.dunwu.javatech.reflections.TestModel$I2 + + + + io.github.dunwu.javatech.reflections.TestModel$I2 + + io.github.dunwu.javatech.reflections.TestModel$C1 + + + + + + io.github.dunwu.javatech.reflections.TestModel$C3 + + io.github.dunwu.javatech.reflections.TestModel$C4.c2toC3(io.github.dunwu.javatech.reflections.TestModel$C2) + + + + void + + io.github.dunwu.javatech.reflections.TestModel$C4.m1(int, java.lang.String[]) + io.github.dunwu.javatech.reflections.TestModel$C4.m1() + io.github.dunwu.javatech.reflections.TestModel$C4.m1(int[][], java.lang.String[][]) + + + + java.lang.String + + io.github.dunwu.javatech.reflections.TestModel$AF1.value() + io.github.dunwu.javatech.reflections.TestModel$C4.m4(java.lang.String) + io.github.dunwu.javatech.reflections.TestModel$C4.m3() + io.github.dunwu.javatech.reflections.TestModel$AM1.value() + io.github.dunwu.javatech.reflections.TestModel$AC2.value() + + + + int + + io.github.dunwu.javatech.reflections.TestModel$C4.add(int, int) + + + + + + io.github.dunwu.javatech.reflections.TestModel$AM1 + + io.github.dunwu.javatech.reflections.TestModel$C4.m1(int, java.lang.String[]) + io.github.dunwu.javatech.reflections.TestModel$C4.m1() + io.github.dunwu.javatech.reflections.TestModel$C4.m3() + io.github.dunwu.javatech.reflections.TestModel$C4.m1(int[][], java.lang.String[][]) + io.github.dunwu.javatech.reflections.TestModel$C4.<init>(java.lang.String) + + + + + + io.github.dunwu.javatech.reflections.TestModel$AF1 + + io.github.dunwu.javatech.reflections.TestModel$C4.f1 + io.github.dunwu.javatech.reflections.TestModel$C4.f2 + + + + + + resource1-reflections.xml + + META-INF/reflections/resource1-reflections.xml + + + + saved-testModel-reflections.xml + + META-INF/reflections/saved-testModel-reflections.xml + + + + resource2-reflections.xml + + META-INF/reflections/inner/resource2-reflections.xml + + + + testModel-reflections.xml + + META-INF/reflections/testModel-reflections.xml + + + + diff --git a/codes/javatech/javatech-log/javatech-log4j/pom.xml b/codes/javatech/javatech-log/javatech-log4j/pom.xml new file mode 100644 index 00000000..92dd9e50 --- /dev/null +++ b/codes/javatech/javatech-log/javatech-log4j/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + + io.github.dunwu + dunwu-parent + 1.0.7 + + + io.github.dunwu.javatech + javatech-log4j + 1.0.0 + jar + Java 日志 Log4j + + + UTF-8 + 1.8 + ${java.version} + ${java.version} + + + + + + org.slf4j + slf4j-api + + + org.slf4j + slf4j-log4j12 + + + log4j + log4j + 1.2.17 + + + + + junit + junit + test + + + + diff --git a/codes/javatech/javatech-log/javatech-log4j/src/main/java/io/github/dunwu/javatech/log/Log4jDemo.java b/codes/javatech/javatech-log/javatech-log4j/src/main/java/io/github/dunwu/javatech/log/Log4jDemo.java new file mode 100644 index 00000000..575a9d0e --- /dev/null +++ b/codes/javatech/javatech-log/javatech-log4j/src/main/java/io/github/dunwu/javatech/log/Log4jDemo.java @@ -0,0 +1,27 @@ +package io.github.dunwu.javatech.log; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * log4j 示例 + * + * @author Zhang Peng + * @see log4j 官网 + * @since 2018/3/29 + */ +public class Log4jDemo { + + private static final Logger logger = LoggerFactory.getLogger(Log4jDemo.class); + + public static void main(String[] args) { + for (int i = 0; i < 10; i++) { + logger.trace("NO.{} 这是一条 {} 日志记录", i, "trace"); + logger.debug("NO.{} 这是一条 {} 日志记录", i, "debug"); + logger.info("NO.{} 这是一条 {} 日志记录", i, "info"); + logger.warn("NO.{} 这是一条 {} 日志记录", i, "warn"); + logger.error("NO.{} 这是一条 {} 日志记录", i, "error"); + } + } + +} diff --git a/codes/javatech/javatech-log/javatech-log4j/src/main/resources/log4j.xml b/codes/javatech/javatech-log/javatech-log4j/src/main/resources/log4j.xml new file mode 100644 index 00000000..e86941cd --- /dev/null +++ b/codes/javatech/javatech-log/javatech-log4j/src/main/resources/log4j.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/codes/javatech/javatech-log/javatech-log4j2/pom.xml b/codes/javatech/javatech-log/javatech-log4j2/pom.xml new file mode 100644 index 00000000..36f51efc --- /dev/null +++ b/codes/javatech/javatech-log/javatech-log4j2/pom.xml @@ -0,0 +1,49 @@ + + + 4.0.0 + + + io.github.dunwu + dunwu-parent + 1.0.7 + + + io.github.dunwu.javatech + javatech-log4j2 + 1.0.0 + jar + Java 日志 Log4j2 + + + UTF-8 + 1.8 + ${java.version} + ${java.version} + + + + + + org.slf4j + slf4j-api + + + org.apache.logging.log4j + log4j-slf4j-impl + + + org.apache.logging.log4j + log4j-core + + + + + junit + junit + test + + + + diff --git a/codes/javatech/javatech-log/javatech-log4j2/src/main/java/io/github/dunwu/javatech/log/Log4j2Demo.java b/codes/javatech/javatech-log/javatech-log4j2/src/main/java/io/github/dunwu/javatech/log/Log4j2Demo.java new file mode 100644 index 00000000..71e47b86 --- /dev/null +++ b/codes/javatech/javatech-log/javatech-log4j2/src/main/java/io/github/dunwu/javatech/log/Log4j2Demo.java @@ -0,0 +1,27 @@ +package io.github.dunwu.javatech.log; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Log4j2 示例 + * + * @author Zhang Peng + * @see Log4j2 官网 + * @since 2018/3/29 + */ +public class Log4j2Demo { + + private static final Logger logger = LoggerFactory.getLogger(Log4j2Demo.class); + + public static void main(String[] args) { + for (int i = 0; i < 10; i++) { + logger.trace("NO.{} 这是一条 {} 日志记录", i, "trace"); + logger.debug("NO.{} 这是一条 {} 日志记录", i, "debug"); + logger.info("NO.{} 这是一条 {} 日志记录", i, "info"); + logger.warn("NO.{} 这是一条 {} 日志记录", i, "warn"); + logger.error("NO.{} 这是一条 {} 日志记录", i, "error"); + } + } + +} diff --git a/codes/javatech/javatech-log/javatech-log4j2/src/main/resources/log4j2.xml b/codes/javatech/javatech-log/javatech-log4j2/src/main/resources/log4j2.xml new file mode 100644 index 00000000..12650afa --- /dev/null +++ b/codes/javatech/javatech-log/javatech-log4j2/src/main/resources/log4j2.xml @@ -0,0 +1,45 @@ + + + + ???? + + + + + + + + + + + + + + + ${PATTERN} + + + + + + + + + + + + + + + + + + + + + + diff --git a/codes/javatech/javatech-log/javatech-logback/pom.xml b/codes/javatech/javatech-log/javatech-logback/pom.xml new file mode 100644 index 00000000..ea94efb5 --- /dev/null +++ b/codes/javatech/javatech-log/javatech-logback/pom.xml @@ -0,0 +1,45 @@ + + + 4.0.0 + + + io.github.dunwu + dunwu-parent + 1.0.7 + + + io.github.dunwu.javatech + javatech-logback + 1.0.0 + jar + Java 日志 Logback + + + UTF-8 + 1.8 + ${java.version} + ${java.version} + + + + + + ch.qos.logback + logback-classic + + + + + + + + + junit + junit + test + + + + diff --git a/codes/javatech/javatech-log/javatech-logback/src/main/java/io/github/dunwu/javatech/log/LogbackDemo.java b/codes/javatech/javatech-log/javatech-logback/src/main/java/io/github/dunwu/javatech/log/LogbackDemo.java new file mode 100644 index 00000000..5db50a71 --- /dev/null +++ b/codes/javatech/javatech-log/javatech-logback/src/main/java/io/github/dunwu/javatech/log/LogbackDemo.java @@ -0,0 +1,27 @@ +package io.github.dunwu.javatech.log; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Logback 示例 + * + * @author Zhang Peng + * @see logback 官网 + * @since 2018/3/29 + */ +public class LogbackDemo { + + private static final Logger logger = LoggerFactory.getLogger(LogbackDemo.class); + + public static void main(String[] args) { + for (int i = 0; i < 10; i++) { + logger.trace("NO.{} 这是一条 {} 日志记录", i, "trace"); + logger.debug("NO.{} 这是一条 {} 日志记录", i, "debug"); + logger.info("NO.{} 这是一条 {} 日志记录", i, "info"); + logger.warn("NO.{} 这是一条 {} 日志记录", i, "warn"); + logger.error("NO.{} 这是一条 {} 日志记录", i, "error"); + } + } + +} diff --git a/codes/javatech/javatech-log/javatech-logback/src/main/resources/logback.xml b/codes/javatech/javatech-log/javatech-logback/src/main/resources/logback.xml new file mode 100644 index 00000000..8d3ec5a8 --- /dev/null +++ b/codes/javatech/javatech-log/javatech-logback/src/main/resources/logback.xml @@ -0,0 +1,95 @@ + + + + + + dunwu-admin + + + + + + + + + + + + + + + ${LOG_CHARSET} + ${LOG_COLOR_PATTERN} + + + + + + + + ${LOG_DIR}/%d{yyyy-MM,aux}/${APP_NAME}_debug.%d{yyyy-MM-dd}.%i.log + + ${LOG_MAX_HISTORY} + + ${LOG_MAX_FILE_SIZE} + + + + ${LOG_PATTERN} + + + + DEBUG + + + + + + + 0 + + ${LOG_MAX_QUEUE_SIZE} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/codes/javatech/javatech-log/javatech-logstash/pom.xml b/codes/javatech/javatech-log/javatech-logstash/pom.xml new file mode 100644 index 00000000..20f20855 --- /dev/null +++ b/codes/javatech/javatech-log/javatech-logstash/pom.xml @@ -0,0 +1,33 @@ + + + 4.0.0 + + + io.github.dunwu + dunwu-parent + 1.0.7 + + + io.github.dunwu.javatech + javatech-logstash + 1.0.0 + jar + Java 日志 Logstash + + + UTF-8 + 1.8 + ${java.version} + ${java.version} + + + + + ch.qos.logback + logback-classic + + + + diff --git a/codes/javatech/javatech-log/javatech-logstash/src/main/java/io/github/dunwu/javatech/ElasticDemo.java b/codes/javatech/javatech-log/javatech-logstash/src/main/java/io/github/dunwu/javatech/ElasticDemo.java new file mode 100644 index 00000000..6dbeafe2 --- /dev/null +++ b/codes/javatech/javatech-log/javatech-logstash/src/main/java/io/github/dunwu/javatech/ElasticDemo.java @@ -0,0 +1,39 @@ +package io.github.dunwu.javatech; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * 向 Elastic 日志中心传输日志 Logback logstash-logback-encoder jar 包会根据 logback 中的配置,将日志数据定向传输到 logstash 详见 + * src/main/resources/logback.xml appender 配置 使用 udp 方式传输时,有丢失日志的情况(ELK-UDP) 使用 tcp 方式传输时,不会丢失日志(ELK-TCP) Log4j 通过 + * org.apache.log4j.net.SocketAppender 发送 TCP 数据,Logstash 服务器使用 log4j input 插件 接收 + * + * @author Zhang Peng + */ +public class ElasticDemo { + + private static final Logger logger = LoggerFactory.getLogger(ElasticDemo.class); + + private static volatile int index = 0; + + public static void main(String[] args) { + // sendLog4jLog(); + sendLogbackLog(); + } + + private static void sendLogbackLog() { + ExecutorService executorService = Executors.newFixedThreadPool(100); + for (int i = 0; i < 10000; i++) { + executorService.submit(new Runnable() { + @Override + public void run() { + logger.info("这是第 {} 条日志", ++index); + } + }); + } + } + +} diff --git a/codes/javatech/javatech-log/javatech-logstash/src/main/resources/logback.xml b/codes/javatech/javatech-log/javatech-logstash/src/main/resources/logback.xml new file mode 100644 index 00000000..c917bd86 --- /dev/null +++ b/codes/javatech/javatech-log/javatech-logstash/src/main/resources/logback.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + %d{HH:mm:ss.SSS} [%thread] [%-5p] %c{36}.%M - %m%n + + + + + + + + ${user.dir}/logs/${FILE_NAME}-all.%d{yyyy-MM-dd}.log + 30 + + + + + 30MB + + + + %d{HH:mm:ss.SSS} [%thread] [%-5p] %c{36}.%M - %m%n + + + + 192.168.28.32 + 9250 + + + + 192.168.28.32:9251 + 5 minutes + 6 second + 16384 + + {"appname":"metis"} + {"subappname":"metis-vdisk"} + + + + + + + + + + + + + + + + + + + diff --git a/codes/javatech/javatech-log/pom.xml b/codes/javatech/javatech-log/pom.xml new file mode 100644 index 00000000..1ac991b2 --- /dev/null +++ b/codes/javatech/javatech-log/pom.xml @@ -0,0 +1,19 @@ + + + 4.0.0 + + io.github.dunwu.javatech + javatech-log + 1.0.0 + pom + Java 日志 + + + javatech-log4j + javatech-log4j2 + javatech-logback + javatech-logstash + + diff --git a/codes/javatech/javatech-mq/javatech-kafka-springboot/pom.xml b/codes/javatech/javatech-mq/javatech-kafka-springboot/pom.xml new file mode 100644 index 00000000..e4d7d44d --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-kafka-springboot/pom.xml @@ -0,0 +1,58 @@ + + + 4.0.0 + + + io.github.dunwu + dunwu-starter-parent + 0.5.6 + + + io.github.dunwu.javatech + javatech-kafka-springboot + 1.0.0 + jar + Java 消息队列 Kafka + Spring Boot + + + UTF-8 + UTF-8 + 1.8 + + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.springframework.kafka + spring-kafka + + + org.springframework.kafka + spring-kafka-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/java/io/github/dunwu/javatech/KafkaConsumer.java b/codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/java/io/github/dunwu/javatech/KafkaConsumer.java new file mode 100644 index 00000000..071b4247 --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/java/io/github/dunwu/javatech/KafkaConsumer.java @@ -0,0 +1,24 @@ +package io.github.dunwu.javatech; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.kafka.annotation.KafkaListener; +import org.springframework.stereotype.Component; + +/** + * Kafka 消费者 + * + * @author Zhang Peng + * @since 2018-11-28 + */ +@Component +public class KafkaConsumer { + + private final Logger log = LoggerFactory.getLogger(KafkaConsumer.class); + + @KafkaListener(topics = "test") + public void processMessage(String data) { + log.info("收到kafka消息:{}", data); + } + +} diff --git a/codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/java/io/github/dunwu/javatech/KafkaProducer.java b/codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/java/io/github/dunwu/javatech/KafkaProducer.java new file mode 100644 index 00000000..246104f2 --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/java/io/github/dunwu/javatech/KafkaProducer.java @@ -0,0 +1,37 @@ +package io.github.dunwu.javatech; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.kafka.core.KafkaTemplate; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +/** + * Kafka生产者 + * + * @author Zhang Peng + * @since 2018-11-29 + */ +@Component +public class KafkaProducer { + + private final Logger log = LoggerFactory.getLogger(KafkaProducer.class); + + @Autowired + private KafkaTemplate template; + + @Transactional(rollbackFor = RuntimeException.class) + public void sendTransactionMsg(String topic, String data) { + log.info("向kafka发送数据:[{}]", data); + template.executeInTransaction(t -> { + t.send(topic, "prepare"); + if ("error".equals(data)) { + throw new RuntimeException("failed"); + } + t.send(topic, "finish"); + return true; + }); + } + +} diff --git a/codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/java/io/github/dunwu/javatech/KafkaProducerController.java b/codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/java/io/github/dunwu/javatech/KafkaProducerController.java new file mode 100644 index 00000000..70aebb9f --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/java/io/github/dunwu/javatech/KafkaProducerController.java @@ -0,0 +1,28 @@ +package io.github.dunwu.javatech; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * spring-boot kafka 示例 + *

+ * 此 Controller 作为生产者,接受REST接口传入的消息,并写入到指定 Kafka Topic + *

+ * 访问方式:http://localhost:8080/kafka/send?topic=xxx&data=xxx + * + * @author Zhang Peng + */ +@RestController +@RequestMapping("kafka") +public class KafkaProducerController { + + @Autowired + private KafkaProducer kafkaProducer; + + @RequestMapping("sendTx") + public void send(String topic, String data) { + kafkaProducer.sendTransactionMsg(topic, data); + } + +} diff --git a/codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/java/io/github/dunwu/javatech/MsgKafkaApplication.java b/codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/java/io/github/dunwu/javatech/MsgKafkaApplication.java new file mode 100644 index 00000000..48144045 --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/java/io/github/dunwu/javatech/MsgKafkaApplication.java @@ -0,0 +1,13 @@ +package io.github.dunwu.javatech; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class MsgKafkaApplication { + + public static void main(String[] args) { + SpringApplication.run(MsgKafkaApplication.class, args); + } + +} diff --git a/codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/java/io/github/dunwu/javatech/config/KafkaConsumerConfig.java b/codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/java/io/github/dunwu/javatech/config/KafkaConsumerConfig.java new file mode 100644 index 00000000..4048934a --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/java/io/github/dunwu/javatech/config/KafkaConsumerConfig.java @@ -0,0 +1,62 @@ +package io.github.dunwu.javatech.config; + +import org.apache.kafka.clients.consumer.ConsumerConfig; +import org.apache.kafka.common.serialization.StringDeserializer; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.kafka.annotation.EnableKafka; +import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory; +import org.springframework.kafka.config.KafkaListenerContainerFactory; +import org.springframework.kafka.core.ConsumerFactory; +import org.springframework.kafka.core.DefaultKafkaConsumerFactory; +import org.springframework.kafka.listener.ConcurrentMessageListenerContainer; + +import java.util.HashMap; +import java.util.Map; + +@Configuration +@EnableKafka +public class KafkaConsumerConfig { + + @Value("${spring.kafka.bootstrap-servers}") + private String bootstrapServers; + + @Bean(name = "kafkaListenerContainerFactory") + public KafkaListenerContainerFactory> kafkaListenerContainerFactory() { + ConcurrentKafkaListenerContainerFactory factory = + new ConcurrentKafkaListenerContainerFactory<>(); + factory.setConsumerFactory(consumerFactory("groupA")); + factory.setConcurrency(3); + factory.getContainerProperties().setPollTimeout(3000); + return factory; + } + + public ConsumerFactory consumerFactory(String consumerGroupId) { + return new DefaultKafkaConsumerFactory<>(consumerConfig(consumerGroupId)); + } + + public Map consumerConfig(String consumerGroupId) { + Map props = new HashMap<>(); + props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); + props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false); + props.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, "100"); + props.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, "15000"); + props.put(ConsumerConfig.GROUP_ID_CONFIG, consumerGroupId); + props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest"); + props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); + props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); + return props; + } + + @Bean(name = "kafkaListenerContainerFactory1") + public KafkaListenerContainerFactory> kafkaListenerContainerFactory1() { + ConcurrentKafkaListenerContainerFactory factory = + new ConcurrentKafkaListenerContainerFactory<>(); + factory.setConsumerFactory(consumerFactory("groupB")); + factory.setConcurrency(3); + factory.getContainerProperties().setPollTimeout(3000); + return factory; + } + +} diff --git a/codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/java/io/github/dunwu/javatech/config/KafkaProducerConfig.java b/codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/java/io/github/dunwu/javatech/config/KafkaProducerConfig.java new file mode 100644 index 00000000..9cf3d03c --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/java/io/github/dunwu/javatech/config/KafkaProducerConfig.java @@ -0,0 +1,61 @@ +package io.github.dunwu.javatech.config; + +import org.apache.kafka.clients.producer.ProducerConfig; +import org.apache.kafka.common.serialization.StringSerializer; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.kafka.annotation.EnableKafka; +import org.springframework.kafka.core.DefaultKafkaProducerFactory; +import org.springframework.kafka.core.KafkaTemplate; +import org.springframework.kafka.core.ProducerFactory; +import org.springframework.kafka.transaction.KafkaTransactionManager; + +import java.util.HashMap; +import java.util.Map; + +@Configuration +@EnableKafka +public class KafkaProducerConfig { + + @Value("${spring.kafka.bootstrap-servers}") + private String bootstrapServers; + + @Value("${spring.kafka.producer.retries}") + private Integer retries; + + @Value("${spring.kafka.producer.batch-size}") + private Integer batchSize; + + @Bean + public KafkaTransactionManager transactionManager() { + KafkaTransactionManager manager = new KafkaTransactionManager(producerFactory()); + return manager; + } + + @Bean + public ProducerFactory producerFactory() { + DefaultKafkaProducerFactory producerFactory = new DefaultKafkaProducerFactory<>( + producerConfigs()); + producerFactory.transactionCapable(); + producerFactory.setTransactionIdPrefix("hous-"); + return producerFactory; + } + + @Bean + public Map producerConfigs() { + Map props = new HashMap<>(7); + props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); + props.put(ProducerConfig.RETRIES_CONFIG, retries); + props.put(ProducerConfig.BATCH_SIZE_CONFIG, batchSize); + props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class); + props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class); + return props; + } + + @Bean + public KafkaTemplate kafkaTemplate() { + return new KafkaTemplate<>(producerFactory()); + } + +} diff --git a/codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/resources/application.properties b/codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/resources/application.properties new file mode 100644 index 00000000..e25cabf2 --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/resources/application.properties @@ -0,0 +1,13 @@ +spring.kafka.bootstrap-servers=tdh60dev01:9092,tdh60dev02:9092,tdh60dev03:9092 +spring.kafka.producer.retries=3 +spring.kafka.producer.transaction-id-prefix=javaweb-kafka +# producer +spring.kafka.producer.batch-size=1000 +spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer +spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer +# consumer +spring.kafka.consumer.group-id=javaweb +spring.kafka.consumer.enable-auto-commit=true +spring.kafka.consumer.auto-commit-interval=1000 +spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer +spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer diff --git a/codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/resources/logback.xml b/codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/resources/logback.xml new file mode 100644 index 00000000..1946a29c --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-kafka-springboot/src/main/resources/logback.xml @@ -0,0 +1,15 @@ + + + + + %d{HH:mm:ss.SSS} [%boldYellow(%thread)] [%highlight(%-5level)] %boldGreen(%c{36}.%M) - %boldBlue(%m%n) + + + + + + + + + + diff --git a/codes/javatech/javatech-mq/javatech-kafka-springboot/src/test/java/io/github/dunwu/javatech/KafkaProducerTest.java b/codes/javatech/javatech-mq/javatech-kafka-springboot/src/test/java/io/github/dunwu/javatech/KafkaProducerTest.java new file mode 100644 index 00000000..e73fe65f --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-kafka-springboot/src/test/java/io/github/dunwu/javatech/KafkaProducerTest.java @@ -0,0 +1,26 @@ +package io.github.dunwu.javatech; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +/** + * @author Zhang Peng + * @since 2018-11-29 + */ +@RunWith(SpringRunner.class) +@SpringBootTest(classes = MsgKafkaApplication.class) +public class KafkaProducerTest { + + @Autowired + private KafkaProducer kafkaProducer; + + @Test + public void test() { + kafkaProducer.sendTransactionMsg("test", "上联:天王盖地虎"); + kafkaProducer.sendTransactionMsg("test", "下联:宝塔镇河妖"); + } + +} diff --git a/codes/javatech/javatech-mq/javatech-kafka/pom.xml b/codes/javatech/javatech-mq/javatech-kafka/pom.xml new file mode 100644 index 00000000..bee96913 --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-kafka/pom.xml @@ -0,0 +1,40 @@ + + + 4.0.0 + + + io.github.dunwu + dunwu-parent + 1.0.7 + + + io.github.dunwu.javatech + javatech-kafka + 1.0.0 + jar + Java 消息队列 Kafka + + + UTF-8 + 1.8 + ${java.version} + ${java.version} + + + + + org.apache.kafka + kafka-clients + + + org.apache.kafka + kafka-streams + + + ch.qos.logback + logback-classic + + + diff --git a/codes/javatech/javatech-mq/javatech-kafka/src/main/java/io/github/dunwu/javatech/kafka/ConsumerAOC.java b/codes/javatech/javatech-mq/javatech-kafka/src/main/java/io/github/dunwu/javatech/kafka/ConsumerAOC.java new file mode 100644 index 00000000..041a69e4 --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-kafka/src/main/java/io/github/dunwu/javatech/kafka/ConsumerAOC.java @@ -0,0 +1,44 @@ +package io.github.dunwu.javatech.kafka; + +import org.apache.kafka.clients.consumer.ConsumerConfig; +import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.apache.kafka.clients.consumer.KafkaConsumer; + +import java.util.Arrays; +import java.util.Properties; + +/** + * Kafka 消费者消费消息示例 消费者配置参考:https://kafka.apache.org/documentation/#consumerconfigs + */ +public class ConsumerAOC { + + private static final String HOST = "localhost:9092"; + + public static void main(String[] args) { + // 1. 指定消费者的配置 + final Properties props = new Properties(); + props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, HOST); + props.put(ConsumerConfig.GROUP_ID_CONFIG, "test"); + props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, "true"); + props.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, "1000"); + props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, + "org.apache.kafka.common.serialization.StringDeserializer"); + props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, + "org.apache.kafka.common.serialization.StringDeserializer"); + + // 2. 使用配置初始化 Kafka 消费者 + KafkaConsumer consumer = new KafkaConsumer<>(props); + + // 3. 消费者订阅 Topic + consumer.subscribe(Arrays.asList("t1")); + while (true) { + // 4. 消费消息 + ConsumerRecords records = consumer.poll(100); + for (ConsumerRecord record : records) { + System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value()); + } + } + } + +} diff --git a/codes/javatech/javatech-mq/javatech-kafka/src/main/java/io/github/dunwu/javatech/kafka/ConsumerManual.java b/codes/javatech/javatech-mq/javatech-kafka/src/main/java/io/github/dunwu/javatech/kafka/ConsumerManual.java new file mode 100644 index 00000000..2b6b2674 --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-kafka/src/main/java/io/github/dunwu/javatech/kafka/ConsumerManual.java @@ -0,0 +1,48 @@ +package io.github.dunwu.javatech.kafka; + +import org.apache.kafka.clients.consumer.ConsumerConfig; +import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.apache.kafka.clients.consumer.KafkaConsumer; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Properties; + +/** + * @author Zhang Peng + * @since 2018/7/12 + */ +public class ConsumerManual { + + private static final String HOST = "localhost:9092"; + + public static void main(String[] args) { + Properties props = new Properties(); + props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, HOST); + props.put(ConsumerConfig.GROUP_ID_CONFIG, "test"); + props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, "false"); + props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, + "org.apache.kafka.common.serialization.StringDeserializer"); + props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, + "org.apache.kafka.common.serialization.StringDeserializer"); + + KafkaConsumer consumer = new KafkaConsumer<>(props); + consumer.subscribe(Arrays.asList("t1", "t2")); + final int minBatchSize = 200; + List> buffer = new ArrayList<>(); + while (true) { + ConsumerRecords records = consumer.poll(100); + for (ConsumerRecord record : records) { + buffer.add(record); + } + if (buffer.size() >= minBatchSize) { + // 逻辑处理,例如保存到数据库 + consumer.commitSync(); + buffer.clear(); + } + } + } + +} diff --git a/codes/javatech/javatech-mq/javatech-kafka/src/main/java/io/github/dunwu/javatech/kafka/ConsumerManualPartition.java b/codes/javatech/javatech-mq/javatech-kafka/src/main/java/io/github/dunwu/javatech/kafka/ConsumerManualPartition.java new file mode 100644 index 00000000..7cc6c315 --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-kafka/src/main/java/io/github/dunwu/javatech/kafka/ConsumerManualPartition.java @@ -0,0 +1,49 @@ +package io.github.dunwu.javatech.kafka; + +import org.apache.kafka.clients.consumer.*; +import org.apache.kafka.common.TopicPartition; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Properties; + +/** + * @author Zhang Peng + * @since 2018/7/12 + */ +public class ConsumerManualPartition { + + private static final String HOST = "localhost:9092"; + + public static void main(String[] args) { + Properties props = new Properties(); + props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, HOST); + props.put(ConsumerConfig.GROUP_ID_CONFIG, "test2"); + props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, "false"); + props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, + "org.apache.kafka.common.serialization.StringDeserializer"); + props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, + "org.apache.kafka.common.serialization.StringDeserializer"); + + KafkaConsumer consumer = new KafkaConsumer<>(props); + consumer.subscribe(Arrays.asList("t1")); + + try { + while (true) { + ConsumerRecords records = consumer.poll(Long.MAX_VALUE); + for (TopicPartition partition : records.partitions()) { + List> partitionRecords = records.records(partition); + for (ConsumerRecord record : partitionRecords) { + System.out.println(partition.partition() + ": " + record.offset() + ": " + record.value()); + } + long lastOffset = partitionRecords.get(partitionRecords.size() - 1).offset(); + consumer.commitSync(Collections.singletonMap(partition, new OffsetAndMetadata(lastOffset + 1))); + } + } + } finally { + consumer.close(); + } + } + +} diff --git a/codes/javatech/javatech-mq/javatech-kafka/src/main/java/io/github/dunwu/javatech/kafka/ProducerDemo.java b/codes/javatech/javatech-mq/javatech-kafka/src/main/java/io/github/dunwu/javatech/kafka/ProducerDemo.java new file mode 100644 index 00000000..3cc377ee --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-kafka/src/main/java/io/github/dunwu/javatech/kafka/ProducerDemo.java @@ -0,0 +1,49 @@ +package io.github.dunwu.javatech.kafka; + +import org.apache.kafka.clients.producer.KafkaProducer; +import org.apache.kafka.clients.producer.Producer; +import org.apache.kafka.clients.producer.ProducerConfig; +import org.apache.kafka.clients.producer.ProducerRecord; + +import java.util.Properties; + +/** + * Kafka 生产者生产消息示例 生产者配置参考:https://kafka.apache.org/documentation/#producerconfigs + */ +public class ProducerDemo { + + private static final String HOST = "localhost:9092"; + + public static void main(String[] args) { + // 1. 指定生产者的配置 + Properties properties = new Properties(); + properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, HOST); + properties.put(ProducerConfig.ACKS_CONFIG, "all"); + properties.put(ProducerConfig.RETRIES_CONFIG, 0); + properties.put(ProducerConfig.BATCH_SIZE_CONFIG, 16384); + properties.put(ProducerConfig.LINGER_MS_CONFIG, 1); + properties.put(ProducerConfig.BUFFER_MEMORY_CONFIG, 33554432); + properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, + "org.apache.kafka.common.serialization.StringSerializer"); + properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, + "org.apache.kafka.common.serialization.StringSerializer"); + + // 2. 使用配置初始化 Kafka 生产者 + Producer producer = new KafkaProducer<>(properties); + + try { + // 3. 使用 send 方法发送异步消息 + for (int i = 0; i < 100; i++) { + String msg = "Message " + i; + producer.send(new ProducerRecord<>("HelloWorld", msg)); + System.out.println("Sent:" + msg); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + // 4. 关闭生产者 + producer.close(); + } + } + +} diff --git a/codes/javatech/javatech-mq/javatech-kafka/src/main/java/io/github/dunwu/javatech/kafka/ProducerInTransaction.java b/codes/javatech/javatech-mq/javatech-kafka/src/main/java/io/github/dunwu/javatech/kafka/ProducerInTransaction.java new file mode 100644 index 00000000..8105fc9e --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-kafka/src/main/java/io/github/dunwu/javatech/kafka/ProducerInTransaction.java @@ -0,0 +1,143 @@ +package io.github.dunwu.javatech.kafka; + +import org.apache.kafka.clients.consumer.*; +import org.apache.kafka.clients.producer.KafkaProducer; +import org.apache.kafka.clients.producer.Producer; +import org.apache.kafka.clients.producer.ProducerConfig; +import org.apache.kafka.clients.producer.ProducerRecord; +import org.apache.kafka.common.TopicPartition; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; + +/** + * @author Zhang Peng + */ +public class ProducerInTransaction { + + private static final String HOST = "192.168.28.32:9092"; + + public static void main(String[] args) { + onlyProduceInTransaction(); + consumeTransferProduce(); + } + + /** + * 在一个事务只有生产消息操作 + */ + public static void onlyProduceInTransaction() { + Producer producer = buildProducer(); + + // 1.初始化事务 + producer.initTransactions(); + + // 2.开启事务 + producer.beginTransaction(); + + try { + // 3.kafka写操作集合 + // 3.1 do业务逻辑 + + // 3.2 发送消息 + producer.send(new ProducerRecord("test", "transaction-data-1")); + producer.send(new ProducerRecord("test", "transaction-data-2")); + + // 3.3 do其他业务逻辑,还可以发送其他topic的消息。 + + // 4.事务提交 + producer.commitTransaction(); + } catch (Exception e) { + // 5.放弃事务 + producer.abortTransaction(); + } + } + + /** + * 在一个事务内,即有生产消息又有消费消息 + */ + public static void consumeTransferProduce() { + // 1.构建上产者 + Producer producer = buildProducer(); + // 2.初始化事务(生成productId),对于一个生产者,只能执行一次初始化事务操作 + producer.initTransactions(); + + // 3.构建消费者和订阅主题 + Consumer consumer = buildConsumer(); + consumer.subscribe(Arrays.asList("test")); + while (true) { + // 4.开启事务 + producer.beginTransaction(); + + // 5.1 接受消息 + ConsumerRecords records = consumer.poll(500); + + try { + // 5.2 do业务逻辑; + System.out.println("customer Message---"); + Map commits = new HashMap<>(); + for (ConsumerRecord record : records) { + // 5.2.1 读取消息,并处理消息。print the offset,key and value for the consumer + // records. + System.out.printf("offset = %d, key = %s, value = %s\n", record.offset(), record.key(), + record.value()); + + // 5.2.2 记录提交的偏移量 + commits.put(new TopicPartition(record.topic(), record.partition()), + new OffsetAndMetadata(record.offset())); + + // 6.生产新的消息。比如外卖订单状态的消息,如果订单成功,则需要发送跟商家结转消息或者派送员的提成消息 + producer.send(new ProducerRecord("test", "data2")); + } + + // 7.提交偏移量 + producer.sendOffsetsToTransaction(commits, "group0323"); + + // 8.事务提交 + producer.commitTransaction(); + } catch (Exception e) { + // 7.放弃事务 + producer.abortTransaction(); + } + } + } + + public static Producer buildProducer() { + // 1. 指定生产者的配置 + Properties properties = new Properties(); + properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, HOST); + properties.put(ProducerConfig.ACKS_CONFIG, "all"); + properties.put(ProducerConfig.RETRIES_CONFIG, 1); + properties.put(ProducerConfig.BATCH_SIZE_CONFIG, 16384); + properties.put(ProducerConfig.LINGER_MS_CONFIG, 1); + properties.put(ProducerConfig.BUFFER_MEMORY_CONFIG, 33554432); + properties.put(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "first-transactional"); + properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, + "org.apache.kafka.common.serialization.StringSerializer"); + properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, + "org.apache.kafka.common.serialization.StringSerializer"); + + // 2. 使用配置初始化 Kafka 生产者 + Producer producer = new KafkaProducer<>(properties); + return producer; + } + + public static Consumer buildConsumer() { + // 1. 指定消费者的配置 + final Properties props = new Properties(); + props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, HOST); + props.put(ConsumerConfig.GROUP_ID_CONFIG, "test"); + props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, "true"); + props.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, "1000"); + props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, + "org.apache.kafka.common.serialization.StringDeserializer"); + props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, + "org.apache.kafka.common.serialization.StringDeserializer"); + + // 2. 使用配置初始化 Kafka 消费者 + Consumer consumer = new KafkaConsumer<>(props); + return consumer; + } + +} diff --git a/codes/javatech/javatech-mq/javatech-kafka/src/main/java/io/github/dunwu/javatech/kafka/StreamDemo.java b/codes/javatech/javatech-mq/javatech-kafka/src/main/java/io/github/dunwu/javatech/kafka/StreamDemo.java new file mode 100644 index 00000000..34dc10bb --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-kafka/src/main/java/io/github/dunwu/javatech/kafka/StreamDemo.java @@ -0,0 +1,46 @@ +package io.github.dunwu.javatech.kafka; + +import org.apache.kafka.common.serialization.Serdes; +import org.apache.kafka.common.utils.Bytes; +import org.apache.kafka.streams.KafkaStreams; +import org.apache.kafka.streams.StreamsBuilder; +import org.apache.kafka.streams.StreamsConfig; +import org.apache.kafka.streams.kstream.KStream; +import org.apache.kafka.streams.kstream.KTable; +import org.apache.kafka.streams.kstream.Materialized; +import org.apache.kafka.streams.kstream.Produced; +import org.apache.kafka.streams.state.KeyValueStore; + +import java.util.Arrays; +import java.util.Properties; + +/** + * Kafka 流示例 消费者配置参考:https://kafka.apache.org/documentation/#streamsconfigs + */ +public class StreamDemo { + + private static final String HOST = "localhost:9092"; + + public static void main(String[] args) { + // 1. 指定流的配置 + Properties config = new Properties(); + config.put(StreamsConfig.APPLICATION_ID_CONFIG, "wordcount-application"); + config.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, HOST); + config.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass()); + config.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass()); + + // 设置流构造器 + StreamsBuilder builder = new StreamsBuilder(); + KStream textLines = builder.stream("TextLinesTopic"); + KTable wordCounts = textLines + .flatMapValues(textLine -> Arrays.asList(textLine.toLowerCase().split("\\W+"))) + .groupBy((key, word) -> word) + .count(Materialized.>as("counts-store")); + wordCounts.toStream().to("WordsWithCountsTopic", Produced.with(Serdes.String(), Serdes.Long())); + + // 根据流构造器和流配置初始化 Kafka 流 + KafkaStreams streams = new KafkaStreams(builder.build(), config); + streams.start(); + } + +} diff --git a/codes/javatech/javatech-mq/javatech-kafka/src/main/resources/logback.xml b/codes/javatech/javatech-mq/javatech-kafka/src/main/resources/logback.xml new file mode 100644 index 00000000..72b2ddb5 --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-kafka/src/main/resources/logback.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + 10 + 100 + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [javalib] [%thread] [%p] %c{36}#%M - %m%n + + + + + + ${LOG_PATH}/logs/${FILE_NAME}-error.%d{yyyy-MM-dd}.log + 30 + + + + + 10MB + + + + ERROR + ACCEPT + DENY + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [javalib] [%thread] [%p] %c{36}#%M - %m%n + + + + + + + + + + + diff --git a/codes/javatech/javatech-mq/javatech-rocketmq/pom.xml b/codes/javatech/javatech-mq/javatech-rocketmq/pom.xml new file mode 100644 index 00000000..2f2d5ca8 --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-rocketmq/pom.xml @@ -0,0 +1,38 @@ + + + 4.0.0 + + + io.github.dunwu + dunwu-parent + 1.0.7 + + + io.github.dunwu.javatech + javatech-rocketmq + 1.0.0 + jar + Java 消息队列 Rocketmq + + + UTF-8 + 1.8 + ${java.version} + ${java.version} + + + + + org.apache.rocketmq + rocketmq-client + 4.2.0 + + + ch.qos.logback + logback-classic + + + + diff --git a/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/AsyncProducer.java b/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/AsyncProducer.java new file mode 100644 index 00000000..75ee2eb6 --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/AsyncProducer.java @@ -0,0 +1,45 @@ +package io.github.dunwu.javatech.rocketmq; + +import org.apache.rocketmq.client.producer.DefaultMQProducer; +import org.apache.rocketmq.client.producer.SendCallback; +import org.apache.rocketmq.client.producer.SendResult; +import org.apache.rocketmq.common.message.Message; +import org.apache.rocketmq.remoting.common.RemotingHelper; + +/** + * 发送可靠的异步消息示例 异步传输通常用于响应时间敏感的业务场景。 + * + * @author Zhang Peng + */ +public class AsyncProducer { + + public static void main(String[] args) throws Exception { + // Instantiate with a producer group name. + DefaultMQProducer producer = new DefaultMQProducer("ExampleProducerGroup"); + producer.setNamesrvAddr(RocketConfig.HOST); + // Launch the instance. + producer.start(); + producer.setRetryTimesWhenSendAsyncFailed(0); + for (int i = 0; i < 100; i++) { + final int index = i; + // Create a message instance, specifying topic, tag and message body. + Message msg = new Message("TopicTest", "TagA", "OrderID188", + "Hello world".getBytes(RemotingHelper.DEFAULT_CHARSET)); + producer.send(msg, new SendCallback() { + @Override + public void onSuccess(SendResult sendResult) { + System.out.printf("%-10d OK %s %n", index, sendResult.getMsgId()); + } + + @Override + public void onException(Throwable e) { + System.out.printf("%-10d Exception %s %n", index, e); + e.printStackTrace(); + } + }); + } + // Shut down once the producer instance is not longer in use. + producer.shutdown(); + } + +} diff --git a/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/BatchProducer.java b/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/BatchProducer.java new file mode 100644 index 00000000..d75b0ff0 --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/BatchProducer.java @@ -0,0 +1,94 @@ +package io.github.dunwu.javatech.rocketmq; + +import org.apache.rocketmq.client.producer.DefaultMQProducer; +import org.apache.rocketmq.common.message.Message; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +/** + * 批量发送消息 + * + * @author Zhang Peng + */ +public class BatchProducer { + + public static void main(String[] args) throws Exception { + // Instantiate with a producer group name. + DefaultMQProducer producer = new DefaultMQProducer("ExampleProducerGroup"); + producer.setNamesrvAddr(RocketConfig.HOST); + producer.start(); + producer.setRetryTimesWhenSendAsyncFailed(0); + + String topic = "BatchTest"; + List messages = new ArrayList<>(); + messages.add(new Message(topic, "TagA", "OrderID001", "Hello world 0".getBytes())); + messages.add(new Message(topic, "TagA", "OrderID002", "Hello world 1".getBytes())); + messages.add(new Message(topic, "TagA", "OrderID003", "Hello world 2".getBytes())); + // then you could split the large list into small ones: + ListSplitter splitter = new ListSplitter(messages); + + while (splitter.hasNext()) { + List listItem = splitter.next(); + producer.send(listItem); + } + + // Shut down once the producer instance is not longer in use. + producer.shutdown(); + } + + public static class ListSplitter implements Iterator> { + + private final int SIZE_LIMIT = 1000 * 1000; + + private final List messages; + + private int currIndex; + + public ListSplitter(List messages) { + this.messages = messages; + } + + @Override + public boolean hasNext() { + return currIndex < messages.size(); + } + + @Override + public List next() { + int nextIndex = currIndex; + int totalSize = 0; + for (; nextIndex < messages.size(); nextIndex++) { + Message message = messages.get(nextIndex); + int tmpSize = message.getTopic().length() + message.getBody().length; + Map properties = message.getProperties(); + for (Map.Entry entry : properties.entrySet()) { + tmpSize += entry.getKey().length() + entry.getValue().length(); + } + tmpSize = tmpSize + 20; // for log overhead + if (tmpSize > SIZE_LIMIT) { + // it is unexpected that single message exceeds the SIZE_LIMIT + // here just let it go, otherwise it will block the splitting process + if (nextIndex - currIndex == 0) { + // if the next sublist has no element, add this one and then + // break, otherwise just break + nextIndex++; + } + break; + } + if (tmpSize + totalSize > SIZE_LIMIT) { + break; + } else { + totalSize += tmpSize; + } + } + List subList = messages.subList(currIndex, nextIndex); + currIndex = nextIndex; + return subList; + } + + } + +} diff --git a/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/BroadcastConsumer.java b/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/BroadcastConsumer.java new file mode 100644 index 00000000..f20e91da --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/BroadcastConsumer.java @@ -0,0 +1,44 @@ +package io.github.dunwu.javatech.rocketmq; + +import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer; +import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext; +import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus; +import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently; +import org.apache.rocketmq.common.consumer.ConsumeFromWhere; +import org.apache.rocketmq.common.message.MessageExt; +import org.apache.rocketmq.common.protocol.heartbeat.MessageModel; + +import java.util.List; + +/** + * 接收广播消息示例 + * + * @author Zhang Peng + */ +public class BroadcastConsumer { + + public static void main(String[] args) throws Exception { + DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("example_group_name"); + consumer.setNamesrvAddr(RocketConfig.HOST); + + consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET); + + // set to broadcast mode + consumer.setMessageModel(MessageModel.BROADCASTING); + + consumer.subscribe("TopicTest", "TagA || TagC || TagD"); + + consumer.registerMessageListener(new MessageListenerConcurrently() { + + @Override + public ConsumeConcurrentlyStatus consumeMessage(List msgs, ConsumeConcurrentlyContext context) { + System.out.printf(Thread.currentThread().getName() + " Receive New Messages: " + msgs + "%n"); + return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; + } + }); + + consumer.start(); + System.out.printf("Broadcast Consumer Started.%n"); + } + +} diff --git a/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/BroadcastProducer.java b/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/BroadcastProducer.java new file mode 100644 index 00000000..b35b37eb --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/BroadcastProducer.java @@ -0,0 +1,29 @@ +package io.github.dunwu.javatech.rocketmq; + +import org.apache.rocketmq.client.producer.DefaultMQProducer; +import org.apache.rocketmq.client.producer.SendResult; +import org.apache.rocketmq.common.message.Message; +import org.apache.rocketmq.remoting.common.RemotingHelper; + +/** + * 发送广播消息示例 + * + * @author Zhang Peng + */ +public class BroadcastProducer { + + public static void main(String[] args) throws Exception { + DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName"); + producer.setNamesrvAddr(RocketConfig.HOST); + producer.start(); + + for (int i = 0; i < 100; i++) { + Message msg = new Message("TopicTest", "TagA", "OrderID188", + "Hello world".getBytes(RemotingHelper.DEFAULT_CHARSET)); + SendResult sendResult = producer.send(msg); + System.out.printf("%s%n", sendResult); + } + producer.shutdown(); + } + +} diff --git a/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/OnewayProducer.java b/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/OnewayProducer.java new file mode 100644 index 00000000..b231aa5e --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/OnewayProducer.java @@ -0,0 +1,32 @@ +package io.github.dunwu.javatech.rocketmq; + +import org.apache.rocketmq.client.producer.DefaultMQProducer; +import org.apache.rocketmq.common.message.Message; +import org.apache.rocketmq.remoting.common.RemotingHelper; + +/** + * 单向传输示例 单向传输用于需要中等可靠性的情况,例如日志收集。 + * + * @author Zhang Peng + */ +public class OnewayProducer { + + public static void main(String[] args) throws Exception { + // Instantiate with a producer group name. + DefaultMQProducer producer = new DefaultMQProducer("ExampleProducerGroup"); + producer.setNamesrvAddr(RocketConfig.HOST); + // Launch the instance. + producer.start(); + for (int i = 0; i < 100; i++) { + // Create a message instance, specifying topic, tag and message body. + Message msg = new Message("TopicTest" /* Topic */, "TagA" /* Tag */, ("Hello RocketMQ " + i) + .getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */ + ); + // Call send message to deliver message to one of brokers. + producer.sendOneway(msg); + } + // Shut down once the producer instance is not longer in use. + producer.shutdown(); + } + +} diff --git a/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/OrderedConsumer.java b/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/OrderedConsumer.java new file mode 100644 index 00000000..c960cb9c --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/OrderedConsumer.java @@ -0,0 +1,56 @@ +package io.github.dunwu.javatech.rocketmq; + +import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer; +import org.apache.rocketmq.client.consumer.listener.ConsumeOrderlyContext; +import org.apache.rocketmq.client.consumer.listener.ConsumeOrderlyStatus; +import org.apache.rocketmq.client.consumer.listener.MessageListenerOrderly; +import org.apache.rocketmq.common.consumer.ConsumeFromWhere; +import org.apache.rocketmq.common.message.MessageExt; + +import java.util.List; +import java.util.concurrent.atomic.AtomicLong; + +/** + * 接收全局和分区排序的消息。 + * + * @author Zhang Peng + */ +public class OrderedConsumer { + + public static void main(String[] args) throws Exception { + DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("example_group_name"); + consumer.setNamesrvAddr(RocketConfig.HOST); + + consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET); + + consumer.subscribe("TopicTest", "TagA || TagC || TagD"); + + consumer.registerMessageListener(new MessageListenerOrderly() { + + AtomicLong consumeTimes = new AtomicLong(0); + + @Override + public ConsumeOrderlyStatus consumeMessage(List msgs, ConsumeOrderlyContext context) { + context.setAutoCommit(false); + System.out.printf(Thread.currentThread().getName() + " Receive New Messages: " + msgs + "%n"); + this.consumeTimes.incrementAndGet(); + if ((this.consumeTimes.get() % 2) == 0) { + return ConsumeOrderlyStatus.SUCCESS; + } else if ((this.consumeTimes.get() % 3) == 0) { + return ConsumeOrderlyStatus.ROLLBACK; + } else if ((this.consumeTimes.get() % 4) == 0) { + return ConsumeOrderlyStatus.COMMIT; + } else if ((this.consumeTimes.get() % 5) == 0) { + context.setSuspendCurrentQueueTimeMillis(3000); + return ConsumeOrderlyStatus.SUSPEND_CURRENT_QUEUE_A_MOMENT; + } + return ConsumeOrderlyStatus.SUCCESS; + } + }); + + consumer.start(); + + System.out.printf("Consumer Started.%n"); + } + +} diff --git a/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/OrderedProducer.java b/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/OrderedProducer.java new file mode 100644 index 00000000..e736448a --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/OrderedProducer.java @@ -0,0 +1,47 @@ +package io.github.dunwu.javatech.rocketmq; + +import org.apache.rocketmq.client.producer.DefaultMQProducer; +import org.apache.rocketmq.client.producer.MQProducer; +import org.apache.rocketmq.client.producer.MessageQueueSelector; +import org.apache.rocketmq.client.producer.SendResult; +import org.apache.rocketmq.common.message.Message; +import org.apache.rocketmq.common.message.MessageQueue; +import org.apache.rocketmq.remoting.common.RemotingHelper; + +import java.util.List; + +/** + * 发送全局和分区排序的消息。 + * + * @author Zhang Peng + */ +public class OrderedProducer { + + public static void main(String[] args) throws Exception { + // Instantiate with a producer group name. + MQProducer producer = new DefaultMQProducer("example_group_name"); + ((DefaultMQProducer) producer).setNamesrvAddr(RocketConfig.HOST); + // Launch the instance. + producer.start(); + String[] tags = new String[] { "TagA", "TagB", "TagC", "TagD", "TagE" }; + for (int i = 0; i < 100; i++) { + int orderId = i % 10; + // Create a message instance, specifying topic, tag and message body. + Message msg = new Message("TopicTestjjj", tags[i % tags.length], "KEY" + i, + ("Hello RocketMQ " + i).getBytes(RemotingHelper.DEFAULT_CHARSET)); + SendResult sendResult = producer.send(msg, new MessageQueueSelector() { + @Override + public MessageQueue select(List mqs, Message msg, Object arg) { + Integer id = (Integer) arg; + int index = id % mqs.size(); + return mqs.get(index); + } + }, orderId); + + System.out.printf("%s%n", sendResult); + } + // server shutdown + producer.shutdown(); + } + +} diff --git a/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/RocketConfig.java b/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/RocketConfig.java new file mode 100644 index 00000000..a9e00062 --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/RocketConfig.java @@ -0,0 +1,10 @@ +package io.github.dunwu.javatech.rocketmq; + +/** + * @author Zhang Peng + */ +public class RocketConfig { + + public static final String HOST = "192.168.28.32:9876"; + +} diff --git a/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/ScheduledMessageConsumer.java b/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/ScheduledMessageConsumer.java new file mode 100644 index 00000000..eb131b47 --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/ScheduledMessageConsumer.java @@ -0,0 +1,40 @@ +package io.github.dunwu.javatech.rocketmq; + +import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer; +import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext; +import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus; +import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently; +import org.apache.rocketmq.common.message.MessageExt; + +import java.util.List; + +/** + * 接收定时消息 + * + * @author Zhang Peng + */ +public class ScheduledMessageConsumer { + + public static void main(String[] args) throws Exception { + // Instantiate message consumer + DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("ExampleConsumer"); + // Subscribe topics + consumer.subscribe("TestTopic", "*"); + // Register message listener + consumer.registerMessageListener(new MessageListenerConcurrently() { + @Override + public ConsumeConcurrentlyStatus consumeMessage(List messages, + ConsumeConcurrentlyContext context) { + for (MessageExt message : messages) { + // Print approximate delay time period + System.out.println("Receive message[msgId=" + message.getMsgId() + "] " + + (System.currentTimeMillis() - message.getStoreTimestamp()) + "ms later"); + } + return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; + } + }); + // Launch consumer + consumer.start(); + } + +} diff --git a/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/ScheduledMessageProducer.java b/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/ScheduledMessageProducer.java new file mode 100644 index 00000000..9096412f --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/ScheduledMessageProducer.java @@ -0,0 +1,31 @@ +package io.github.dunwu.javatech.rocketmq; + +import org.apache.rocketmq.client.producer.DefaultMQProducer; +import org.apache.rocketmq.common.message.Message; + +/** + * 发送定时消息 + * + * @author Zhang Peng + */ +public class ScheduledMessageProducer { + + public static void main(String[] args) throws Exception { + // Instantiate a producer to send scheduled messages + DefaultMQProducer producer = new DefaultMQProducer("ExampleProducerGroup"); + // Launch producer + producer.start(); + int totalMessagesToSend = 100; + for (int i = 0; i < totalMessagesToSend; i++) { + Message message = new Message("TestTopic", ("Hello scheduled message " + i).getBytes()); + // This message will be delivered to consumer 10 seconds later. + message.setDelayTimeLevel(3); + // Send the message + producer.send(message); + } + + // Shutdown producer after use. + producer.shutdown(); + } + +} diff --git a/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/SyncProducer.java b/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/SyncProducer.java new file mode 100644 index 00000000..6d60e61f --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-rocketmq/src/main/java/io/github/dunwu/javatech/rocketmq/SyncProducer.java @@ -0,0 +1,34 @@ +package io.github.dunwu.javatech.rocketmq; + +import org.apache.rocketmq.client.producer.DefaultMQProducer; +import org.apache.rocketmq.client.producer.SendResult; +import org.apache.rocketmq.common.message.Message; +import org.apache.rocketmq.remoting.common.RemotingHelper; + +/** + * 发送可靠的同步消息示例 可靠的同步传输用于广泛的场景,如重要的通知消息,短信通知,短信营销系统等。 + * + * @author Zhang Peng + */ +public class SyncProducer { + + public static void main(String[] args) throws Exception { + // Instantiate with a producer group name. + DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name"); + producer.setNamesrvAddr(RocketConfig.HOST); + // Launch the instance. + producer.start(); + for (int i = 0; i < 100; i++) { + // Create a message instance, specifying topic, tag and message body. + Message msg = new Message("TopicTest" /* Topic */, "TagA" /* Tag */, ("Hello RocketMQ " + i) + .getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */ + ); + // Call send message to deliver message to one of brokers. + SendResult sendResult = producer.send(msg); + System.out.printf("%s%n", sendResult); + } + // Shut down once the producer instance is not longer in use. + producer.shutdown(); + } + +} diff --git a/codes/javatech/javatech-mq/javatech-rocketmq/src/main/resources/logback.xml b/codes/javatech/javatech-mq/javatech-rocketmq/src/main/resources/logback.xml new file mode 100644 index 00000000..3be789cb --- /dev/null +++ b/codes/javatech/javatech-mq/javatech-rocketmq/src/main/resources/logback.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + 10 + 100 + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%p] %c{36}#%M - %m%n + + + + + + ${LOG_PATH}/logs/${FILE_NAME}-error.%d{yyyy-MM-dd}.log + 30 + + + + + 10MB + + + + ERROR + ACCEPT + DENY + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%p] %c{36}#%M - %m%n + + + + + + + + + + + + diff --git a/codes/javatech/javatech-mq/pom.xml b/codes/javatech/javatech-mq/pom.xml new file mode 100644 index 00000000..1599ba76 --- /dev/null +++ b/codes/javatech/javatech-mq/pom.xml @@ -0,0 +1,18 @@ + + + 4.0.0 + + io.github.dunwu.javatech + javatech-mq + 1.0.0 + pom + Java 消息队列 + + + javatech-kafka + javatech-kafka-springboot + javatech-rocketmq + + diff --git a/codes/javatech/javatech-others/javatech-cli/pom.xml b/codes/javatech/javatech-others/javatech-cli/pom.xml new file mode 100644 index 00000000..51d3c2ef --- /dev/null +++ b/codes/javatech/javatech-others/javatech-cli/pom.xml @@ -0,0 +1,75 @@ + + + 4.0.0 + + + io.github.dunwu + dunwu-parent + 1.0.7 + + + io.github.dunwu.javatech + javatech-cli + 1.0.0 + jar + Java 其他 - 命令行 + + + UTF-8 + 1.8 + ${java.version} + ${java.version} + 5.4.0 + + + + + org.apache.commons + commons-lang3 + + + commons-cli + commons-cli + 1.4 + + + com.github.oshi + oshi-core + 4.1.0 + + + net.java.dev.jna + jna + + + net.java.dev.jna + jna-platform + + + + + net.java.dev.jna + jna + ${jna.version} + + + net.java.dev.jna + jna-platform + ${jna.version} + + + net.java.dev.jna + jna + + + + + junit + junit + test + + + + diff --git a/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/AnsiSystem.java b/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/AnsiSystem.java new file mode 100644 index 00000000..dd2df754 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/AnsiSystem.java @@ -0,0 +1,244 @@ +package io.github.dunwu.javatech; + +import io.github.dunwu.javatech.constant.AnsiBgColor; +import io.github.dunwu.javatech.constant.AnsiColor; +import io.github.dunwu.javatech.constant.AnsiSgr; +import io.github.dunwu.javatech.constant.Color; +import org.apache.commons.lang3.StringUtils; + +/** + * 以 Ansi 方式在控制台输出(输出彩色字体、粗体、斜体、下划线等) + * + * @author Zhang Peng + * @see ANSI escape code + * @since 2019/10/30 + */ +public class AnsiSystem { + + public static final AnsiSystem RED = new AnsiSystem("\033[;31m"); + + public static final AnsiSystem GREEN = new AnsiSystem("\033[;32m"); + + public static final AnsiSystem YELLOW = new AnsiSystem("\033[;33m"); + + public static final AnsiSystem BLUE = new AnsiSystem("\033[;34m"); + + public static final AnsiSystem MAGENTA = new AnsiSystem("\033[;35m"); + + public static final AnsiSystem CYAN = new AnsiSystem("\033[;36m"); + + public static final AnsiSystem WHITE = new AnsiSystem("\033[;37m"); + + private static final String ENCODE_JOIN = ";"; + + private static final String ENCODE_START = "\033["; + + private static final String ENCODE_END = "m"; + + private static final String RESET = "\033[0;m"; + + private String code; + + public AnsiSystem(String code) { + this.code = code; + } + + public AnsiSystem(AnsiConfig config) { + this.code = encode(config); + } + + private String encode(AnsiConfig config) { + StringBuilder sb = new StringBuilder(); + sb.append(ENCODE_START); + if (config.isBold()) { + sb.append(ENCODE_JOIN).append(AnsiSgr.BOLD.getCode()); + } + if (config.isItalic()) { + sb.append(ENCODE_JOIN).append(AnsiSgr.ITALIC.getCode()); + } + if (config.isUnderline()) { + sb.append(ENCODE_JOIN).append(AnsiSgr.UNDERLINE.getCode()); + } + if (config.isSlowBlink()) { + sb.append(ENCODE_JOIN).append(AnsiSgr.SLOW_BLINK.getCode()); + } else { + if (config.isRapidBlink()) { + sb.append(ENCODE_JOIN).append(AnsiSgr.RAPID_BLINK.getCode()); + } + } + if (config.isReverseVideo()) { + sb.append(ENCODE_JOIN).append(AnsiSgr.REVERSE_VIDEO.getCode()); + } + if (config.isCanceal()) { + sb.append(ENCODE_JOIN).append(AnsiSgr.CONCEAL.getCode()); + } + if (config.getColor() != null) { + AnsiColor color = AnsiColor.valueOf(config.getColor().name()); + if (StringUtils.isNotBlank(color.getCode())) { + sb.append(ENCODE_JOIN).append(color.getCode()); + } + } + if (config.getBgColor() != null) { + AnsiBgColor color = AnsiBgColor.valueOf(config.getBgColor().name()); + if (StringUtils.isNotBlank(color.getCode())) { + sb.append(ENCODE_JOIN).append(color.getCode()); + } + } + sb.append(ENCODE_END); + return sb.toString(); + } + + public void print(String message) { + System.out.print(code + message + RESET); + } + + public void println(String message) { + System.out.println(code + message + RESET); + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + /** + * Ansi 配置 + */ + public static class AnsiConfig { + + private boolean bold; + + private boolean italic; + + private boolean underline; + + private boolean slowBlink; + + private boolean rapidBlink; + + private boolean reverseVideo; + + private boolean canceal; + + private Color color; + + private Color bgColor; + + public AnsiConfig() { + this.bold = false; + this.italic = false; + this.underline = false; + this.slowBlink = false; + this.rapidBlink = false; + this.reverseVideo = false; + this.canceal = false; + this.color = Color.DEFAULT; + this.bgColor = Color.DEFAULT; + } + + public AnsiConfig(boolean bold, boolean italic, boolean underline, boolean slowBlink, boolean rapidBlink, + boolean reverseVideo, boolean canceal, Color color, Color bgColor) { + this.bold = bold; + this.italic = italic; + this.underline = underline; + this.slowBlink = slowBlink; + this.rapidBlink = rapidBlink; + this.reverseVideo = reverseVideo; + this.canceal = canceal; + this.color = color; + this.bgColor = bgColor; + } + + @Override + public String toString() { + return "AnsiParam{" + + "bold=" + bold + + ", italic=" + italic + + ", underline=" + underline + + ", slowBlink=" + slowBlink + + ", rapidBlink=" + rapidBlink + + ", reverseVideo=" + reverseVideo + + ", canceal=" + canceal + + ", color=" + color + + ", bgColor=" + bgColor + + '}'; + } + + public boolean isBold() { + return bold; + } + + public void setBold(boolean bold) { + this.bold = bold; + } + + public boolean isItalic() { + return italic; + } + + public void setItalic(boolean italic) { + this.italic = italic; + } + + public boolean isUnderline() { + return underline; + } + + public void setUnderline(boolean underline) { + this.underline = underline; + } + + public boolean isSlowBlink() { + return slowBlink; + } + + public void setSlowBlink(boolean slowBlink) { + this.slowBlink = slowBlink; + } + + public boolean isRapidBlink() { + return rapidBlink; + } + + public void setRapidBlink(boolean rapidBlink) { + this.rapidBlink = rapidBlink; + } + + public boolean isReverseVideo() { + return reverseVideo; + } + + public void setReverseVideo(boolean reverseVideo) { + this.reverseVideo = reverseVideo; + } + + public boolean isCanceal() { + return canceal; + } + + public void setCanceal(boolean canceal) { + this.canceal = canceal; + } + + public Color getColor() { + return color; + } + + public void setColor(Color color) { + this.color = color; + } + + public Color getBgColor() { + return bgColor; + } + + public void setBgColor(Color bgColor) { + this.bgColor = bgColor; + } + + } + +} diff --git a/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/CliDemo.java b/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/CliDemo.java new file mode 100644 index 00000000..a6037c7d --- /dev/null +++ b/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/CliDemo.java @@ -0,0 +1,56 @@ +package io.github.dunwu.javatech; + +import org.apache.commons.cli.ParseException; + +import java.util.Date; +import java.util.Properties; +import java.util.Scanner; + +/** + * @author Zhang Peng + * @since 2019/10/29 + */ +public class CliDemo { + + public static void main(String[] args) throws ParseException { + + while (true) { + Scanner scanner = new Scanner(System.in); + String param = ""; + if (scanner.hasNext()) { + param = scanner.next(); + } + + switch (param) { + case "date": + AnsiSystem.BLUE.println("date = " + new Date()); + break; + case "area": + AnsiSystem.BLUE.println("area = " + "China"); + break; + case "system": + Properties props = System.getProperties(); + System.out.println("Java的运行环境版本:" + props.getProperty("java.version")); + System.out.println("默认的临时文件路径:" + props.getProperty("java.io.tmpdir")); + System.out.println("操作系统的名称:" + props.getProperty("os.name")); + System.out.println("操作系统的构架:" + props.getProperty("os.arch")); + System.out.println("操作系统的版本:" + props.getProperty("os.version")); + System.out.println("用户的账户名称:" + props.getProperty("user.name")); + System.out.println("用户的主目录:" + props.getProperty("user.home")); + System.out.println("用户的当前工作目录:" + props.getProperty("user.dir")); + System.out.println("操作系统:" + props.getProperty("sun.desktop")); + System.out.println("CPU个数:" + Runtime.getRuntime().availableProcessors()); + System.out.println("虚拟机内存总量:" + Runtime.getRuntime().totalMemory()); + System.out.println("虚拟机空闲内存量:" + Runtime.getRuntime().freeMemory()); + System.out.println("虚拟机使用最大内存量:" + Runtime.getRuntime().maxMemory()); + break; + case "exit": + return; + default: + System.err.println("invalid param"); + break; + } + } + } + +} diff --git a/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/CliUtil.java b/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/CliUtil.java new file mode 100644 index 00000000..0878bdd6 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/CliUtil.java @@ -0,0 +1,28 @@ +package io.github.dunwu.javatech; + +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.CommandLineParser; +import org.apache.commons.cli.DefaultParser; +import org.apache.commons.cli.Options; + +public class CliUtil { + + public static void prepare(String[] args) throws Exception { + // commons-cli命令行参数,需要带参数值 + Options options = new Options(); + // sql文件路径 + options.addOption("sql", true, "sql config"); + // 任务名称 + options.addOption("name", true, "job name"); + + // 解析命令行参数 + CommandLineParser parser = new DefaultParser(); + CommandLine cl = parser.parse(options, args); + String sql = cl.getOptionValue("sql"); + String name = cl.getOptionValue("name"); + + System.out.println("sql : " + sql); + System.out.println("name : " + name); + } + +} diff --git a/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/SystemInfoUtil.java b/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/SystemInfoUtil.java new file mode 100644 index 00000000..58363700 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/SystemInfoUtil.java @@ -0,0 +1,265 @@ +package io.github.dunwu.javatech; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import oshi.SystemInfo; +import oshi.hardware.*; +import oshi.software.os.*; +import oshi.util.FormatUtil; +import oshi.util.Util; + +import java.util.Arrays; +import java.util.List; + +/** + * @author Zhang Peng + * @since 2019/10/30 + */ +public class SystemInfoUtil { + + private static Logger logger = LoggerFactory.getLogger(SystemInfoUtil.class); + + public static void main(String[] args) { + + logger.info("Initializing System..."); + SystemInfo systemInfo = new SystemInfo(); + HardwareAbstractionLayer hal = systemInfo.getHardware(); + logger.info("Checking computer system..."); + printComputerSystem(hal.getComputerSystem()); + logger.info("Checking Processor..."); + printProcessor(hal.getProcessor()); + logger.info("Checking Memory..."); + printMemory(hal.getMemory()); + logger.info("Checking CPU..."); + printCpu(hal.getProcessor()); + logger.info("Checking Sensors..."); + printSensors(hal.getSensors()); + logger.info("Checking Power sources..."); + printPowerSources(hal.getPowerSources()); + logger.info("Checking Disks..."); + printDisks(hal.getDiskStores()); + logger.info("Checking Network interfaces..."); + printNetworkInterfaces(hal.getNetworkIFs()); + // hardware: displays + logger.info("Checking Displays..."); + printDisplays(hal.getDisplays()); + // hardware: USB devices + logger.info("Checking USB Devices..."); + printUsbDevices(hal.getUsbDevices(true)); + OperatingSystem os = systemInfo.getOperatingSystem(); + System.out.println(os); + logger.info("Checking Processes..."); + printProcesses(os, hal.getMemory()); + logger.info("Checking File System..."); + printFileSystem(os.getFileSystem()); + logger.info("Checking Network parameterss..."); + printNetworkParameters(os.getNetworkParams()); + } + + public static void printComputerSystem(final ComputerSystem computerSystem) { + System.out.println("manufacturer: " + computerSystem.getManufacturer()); + System.out.println("model: " + computerSystem.getModel()); + System.out.println("serialnumber: " + computerSystem.getSerialNumber()); + final Firmware firmware = computerSystem.getFirmware(); + System.out.println("firmware:"); + System.out.println(" manufacturer: " + firmware.getManufacturer()); + System.out.println(" name: " + firmware.getName()); + System.out.println(" description: " + firmware.getDescription()); + System.out.println(" version: " + firmware.getVersion()); + System.out.println(" release date: " + (firmware.getReleaseDate() == null ? "unknown" + : firmware.getReleaseDate() == null ? "unknown" : firmware.getReleaseDate())); + final Baseboard baseboard = computerSystem.getBaseboard(); + System.out.println("baseboard:"); + System.out.println(" manufacturer: " + baseboard.getManufacturer()); + System.out.println(" model: " + baseboard.getModel()); + System.out.println(" version: " + baseboard.getVersion()); + System.out.println(" serialnumber: " + baseboard.getSerialNumber()); + } + + public static void printProcessor(CentralProcessor processor) { + System.out.println(processor); + System.out.println(" " + processor.getPhysicalProcessorCount() + " physical CPU(s)"); + System.out.println(" " + processor.getLogicalProcessorCount() + " logical CPU(s)"); + System.out.println("Identifier: " + processor.getIdentifier()); + System.out.println("ProcessorID: " + processor.getProcessorID()); + } + + public static void printMemory(GlobalMemory memory) { + System.out.println("以使用内存: " + FormatUtil.formatBytes(memory.getAvailable()) + "总共内存" + + FormatUtil.formatBytes(memory.getTotal())); + } + + public static void printCpu(CentralProcessor processor) { + long[] prevTicks = processor.getSystemCpuLoadTicks(); + System.out.println("CPU, IOWait, and IRQ ticks @ 0 sec:" + Arrays.toString(prevTicks)); + // Wait a second... + Util.sleep(1000); + long[] ticks = processor.getSystemCpuLoadTicks(); + System.out.println("CPU, IOWait, and IRQ ticks @ 1 sec:" + Arrays.toString(ticks)); + long user = + ticks[CentralProcessor.TickType.USER.getIndex()] - prevTicks[CentralProcessor.TickType.USER.getIndex()]; + long nice = + ticks[CentralProcessor.TickType.NICE.getIndex()] - prevTicks[CentralProcessor.TickType.NICE.getIndex()]; + long sys = + ticks[CentralProcessor.TickType.SYSTEM.getIndex()] - prevTicks[CentralProcessor.TickType.SYSTEM.getIndex()]; + long idle = + ticks[CentralProcessor.TickType.IDLE.getIndex()] - prevTicks[CentralProcessor.TickType.IDLE.getIndex()]; + long iowait = + ticks[CentralProcessor.TickType.IOWAIT.getIndex()] - prevTicks[CentralProcessor.TickType.IOWAIT.getIndex()]; + long irq = + ticks[CentralProcessor.TickType.IRQ.getIndex()] - prevTicks[CentralProcessor.TickType.IRQ.getIndex()]; + long softirq = ticks[CentralProcessor.TickType.SOFTIRQ.getIndex()] + - prevTicks[CentralProcessor.TickType.SOFTIRQ.getIndex()]; + long steal = + ticks[CentralProcessor.TickType.STEAL.getIndex()] - prevTicks[CentralProcessor.TickType.STEAL.getIndex()]; + long totalCpu = user + nice + sys + idle + iowait + irq + softirq + steal; + System.out.format( + "User: %.1f%% Nice: %.1f%% System: %.1f%% Idle: %.1f%% IOwait: %.1f%% IRQ: %.1f%% SoftIRQ: %.1f%% Steal: %.1f%%%n", + 100d * user / totalCpu, 100d * nice / totalCpu, 100d * sys / totalCpu, 100d * idle / totalCpu, + 100d * iowait / totalCpu, 100d * irq / totalCpu, 100d * softirq / totalCpu, 100d * steal / totalCpu); + // System.out.format("CPU load: %.1f%% (counting ticks)%n", processor.getSystemCpuLoadTicks() * 100); + // System.out.format("CPU load: %.1f%% (OS MXBean)%n", processor.getProcessorCpuLoadBetweenTicks() * 100); + double[] loadAverage = processor.getSystemLoadAverage(3); + System.out.println("CPU load averages:" + (loadAverage[0] < 0 ? " N/A" : String.format(" %.2f", loadAverage[0])) + + (loadAverage[1] < 0 ? " N/A" : String.format(" %.2f", loadAverage[1])) + + (loadAverage[2] < 0 ? " N/A" : String.format(" %.2f", loadAverage[2]))); + // per core CPU + StringBuilder procCpu = new StringBuilder("CPU load per processor:"); + double[] load = processor.getProcessorCpuLoadBetweenTicks(processor.getProcessorCpuLoadTicks()); + for (double avg : load) { + procCpu.append(String.format(" %.1f%%", avg * 100)); + } + System.out.println(procCpu.toString()); + } + + public static void printSensors(Sensors sensors) { + System.out.println("Sensors:"); + System.out.format(" CPU Temperature: %.1f°C%n", sensors.getCpuTemperature()); + System.out.println(" Fan Speeds: " + Arrays.toString(sensors.getFanSpeeds())); + System.out.format(" CPU Voltage: %.1fV%n", sensors.getCpuVoltage()); + } + + public static void printPowerSources(PowerSource[] powerSources) { + StringBuilder sb = new StringBuilder("Power: "); + if (powerSources.length == 0) { + sb.append("Unknown"); + } else { + double timeRemaining = powerSources[0].getTimeRemaining(); + if (timeRemaining < -1d) { + sb.append("Charging"); + } else if (timeRemaining < 0d) { + sb.append("Calculating time remaining"); + } else { + sb.append(String.format("%d:%02d remaining", (int) (timeRemaining / 3600), + (int) (timeRemaining / 60) % 60)); + } + } + for (PowerSource pSource : powerSources) { + sb.append(String.format("%n %s @ %.1f%%", pSource.getName(), pSource.getRemainingCapacity() * 100d)); + } + System.out.println(sb.toString()); + } + + public static void printDisks(HWDiskStore[] diskStores) { + System.out.println("Disks:"); + for (HWDiskStore disk : diskStores) { + boolean readwrite = disk.getReads() > 0 || disk.getWrites() > 0; + System.out.format(" %s: (model: %s - S/N: %s) size: %s, reads: %s (%s), writes: %s (%s), xfer: %s ms%n", + disk.getName(), disk.getModel(), disk.getSerial(), + disk.getSize() > 0 ? FormatUtil.formatBytesDecimal(disk.getSize()) : "?", + readwrite ? disk.getReads() : "?", readwrite ? FormatUtil.formatBytes(disk.getReadBytes()) : "?", + readwrite ? disk.getWrites() : "?", readwrite ? FormatUtil.formatBytes(disk.getWriteBytes()) : "?", + readwrite ? disk.getTransferTime() : "?"); + HWPartition[] partitions = disk.getPartitions(); + if (partitions == null) { + // TODO Remove when all OS's implemented + continue; + } + for (HWPartition part : partitions) { + System.out.format(" |-- %s: %s (%s) Maj:Min=%d:%d, size: %s%s%n", part.getIdentification(), + part.getName(), part.getType(), part.getMajor(), part.getMinor(), + FormatUtil.formatBytesDecimal(part.getSize()), + part.getMountPoint().isEmpty() ? "" : " @ " + part.getMountPoint()); + } + } + } + + public static void printNetworkInterfaces(NetworkIF[] networkIFs) { + System.out.println("Network interfaces:"); + for (NetworkIF net : networkIFs) { + System.out.format(" Name: %s (%s)%n", net.getName(), net.getDisplayName()); + System.out.format(" MAC Address: %s %n", net.getMacaddr()); + System.out.format(" MTU: %s, Speed: %s %n", net.getMTU(), FormatUtil.formatValue(net.getSpeed(), "bps")); + System.out.format(" IPv4: %s %n", Arrays.toString(net.getIPv4addr())); + System.out.format(" IPv6: %s %n", Arrays.toString(net.getIPv6addr())); + boolean hasData = net.getBytesRecv() > 0 || net.getBytesSent() > 0 || net.getPacketsRecv() > 0 + || net.getPacketsSent() > 0; + System.out.format(" Traffic: received %s/%s%s; transmitted %s/%s%s %n", + hasData ? net.getPacketsRecv() + " packets" : "?", + hasData ? FormatUtil.formatBytes(net.getBytesRecv()) : "?", + hasData ? " (" + net.getInErrors() + " err)" : "", + hasData ? net.getPacketsSent() + " packets" : "?", + hasData ? FormatUtil.formatBytes(net.getBytesSent()) : "?", + hasData ? " (" + net.getOutErrors() + " err)" : ""); + } + } + + public static void printDisplays(Display[] displays) { + System.out.println("Displays:"); + int i = 0; + for (Display display : displays) { + System.out.println(" Display " + i + ":"); + System.out.println(display.toString()); + i++; + } + } + + public static void printUsbDevices(UsbDevice[] usbDevices) { + System.out.println("USB Devices:"); + for (UsbDevice usbDevice : usbDevices) { + System.out.println(usbDevice.toString()); + } + } + + public static void printProcesses(OperatingSystem os, GlobalMemory memory) { + System.out.println("Processes: " + os.getProcessCount() + ", Threads: " + os.getThreadCount()); + // Sort by highest CPU + List procs = Arrays.asList(os.getProcesses(5, OperatingSystem.ProcessSort.CPU)); + System.out.println(" PID %CPU %MEM VSZ RSS Name"); + for (int i = 0; i < procs.size() && i < 5; i++) { + OSProcess p = procs.get(i); + System.out.format(" %5d %5.1f %4.1f %9s %9s %s%n", p.getProcessID(), + 100d * (p.getKernelTime() + p.getUserTime()) / p.getUpTime(), + 100d * p.getResidentSetSize() / memory.getTotal(), FormatUtil.formatBytes(p.getVirtualSize()), + FormatUtil.formatBytes(p.getResidentSetSize()), p.getName()); + } + } + + public static void printFileSystem(FileSystem fileSystem) { + System.out.println("File System:"); + System.out.format(" File Descriptors: %d/%d%n", fileSystem.getOpenFileDescriptors(), + fileSystem.getMaxFileDescriptors()); + OSFileStore[] fsArray = fileSystem.getFileStores(); + for (OSFileStore fs : fsArray) { + long usable = fs.getUsableSpace(); + long total = fs.getTotalSpace(); + System.out.format( + " %s (%s) [%s] %s of %s free (%.1f%%) is %s " + + (fs.getLogicalVolume() != null && fs.getLogicalVolume().length() > 0 ? "[%s]" : "%s") + + " and is mounted at %s%n", + fs.getName(), fs.getDescription().isEmpty() ? "file system" : fs.getDescription(), fs.getType(), + FormatUtil.formatBytes(usable), FormatUtil.formatBytes(fs.getTotalSpace()), 100d * usable / total, + fs.getVolume(), fs.getLogicalVolume(), fs.getMount()); + } + } + + public static void printNetworkParameters(NetworkParams networkParams) { + System.out.println("Network parameters:"); + System.out.format(" Host name: %s%n", networkParams.getHostName()); + System.out.format(" Domain name: %s%n", networkParams.getDomainName()); + System.out.format(" DNS servers: %s%n", Arrays.toString(networkParams.getDnsServers())); + System.out.format(" IPv4 Gateway: %s%n", networkParams.getIpv4DefaultGateway()); + System.out.format(" IPv6 Gateway: %s%n", networkParams.getIpv6DefaultGateway()); + } + +} diff --git a/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/constant/AnsiBgColor.java b/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/constant/AnsiBgColor.java new file mode 100644 index 00000000..86f99a0c --- /dev/null +++ b/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/constant/AnsiBgColor.java @@ -0,0 +1,44 @@ +package io.github.dunwu.javatech.constant; + +/** + * ANSI 背景显示颜色枚举 + * + * @author Zhang Peng + * @see ANSI Colors + * @since 2019/10/30 + */ +public enum AnsiBgColor implements AnsiElement { + + DEFAULT(""), + BLACK("40"), + RED("41"), + GREEN("42"), + YELLOW("43"), + BLUE("44"), + MAGENTA("45"), + CYAN("46"), + WHITE("47"), + BRIGHT_BLACK("100"), + BRIGHT_RED("101"), + BRIGHT_GREEN("102"), + BRIGHT_YELLOW("109"), + BRIGHT_BLUE("104"), + BRIGHT_MAGENTA("105"), + BRIGHT_CYAN("106"), + BRIGHT_WHITE("107"); + + private final String code; + + AnsiBgColor(String code) { + this.code = code; + } + + @Override + public String toString() { + return code; + } + + public String getCode() { + return code; + } +} diff --git a/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/constant/AnsiColor.java b/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/constant/AnsiColor.java new file mode 100644 index 00000000..38689728 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/constant/AnsiColor.java @@ -0,0 +1,44 @@ +package io.github.dunwu.javatech.constant; + +/** + * ANSI 字体显示颜色枚举 + * + * @author Zhang Peng + * @see ANSI Colors + * @since 2019/10/30 + */ +public enum AnsiColor implements AnsiElement { + + DEFAULT(""), + BLACK("30"), + RED("31"), + GREEN("32"), + YELLOW("33"), + BLUE("34"), + MAGENTA("35"), + CYAN("36"), + WHITE("37"), + BRIGHT_BLACK("90"), + BRIGHT_RED("91"), + BRIGHT_GREEN("92"), + BRIGHT_YELLOW("99"), + BRIGHT_BLUE("94"), + BRIGHT_MAGENTA("95"), + BRIGHT_CYAN("96"), + BRIGHT_WHITE("97"); + + private final String code; + + AnsiColor(String code) { + this.code = code; + } + + @Override + public String toString() { + return code; + } + + public String getCode() { + return code; + } +} diff --git a/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/constant/AnsiElement.java b/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/constant/AnsiElement.java new file mode 100644 index 00000000..0b24d5e4 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/constant/AnsiElement.java @@ -0,0 +1,11 @@ +package io.github.dunwu.javatech.constant; + +public interface AnsiElement { + + /** + * @return the ANSI escape code + */ + @Override + String toString(); + +} diff --git a/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/constant/AnsiSgr.java b/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/constant/AnsiSgr.java new file mode 100644 index 00000000..f4db6744 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/constant/AnsiSgr.java @@ -0,0 +1,42 @@ +package io.github.dunwu.javatech.constant; + +/** + * SGR (Select Graphic Rendition) 设置显示属性。 + *

+ * 可以按相同的顺序设置多个属性,并用分号隔开。 + *

+ * 每个显示属性一直有效,直到随后发生SGR重置它为止。 + *

+ * 如果未给出代码,则将CSI m视为CSI 0 m(重置/正常)。 + * + * @author Zhang Peng + * @see SGR + * @since 2019/10/30 + */ +public enum AnsiSgr implements AnsiElement { + + NORMAL("0"), + BOLD("1"), + FAINT("2"), + ITALIC("3"), + UNDERLINE("4"), + SLOW_BLINK("5"), + RAPID_BLINK("6"), + REVERSE_VIDEO("7"), + CONCEAL("8"); + + private final String code; + + AnsiSgr(String code) { + this.code = code; + } + + @Override + public String toString() { + return code; + } + + public String getCode() { + return code; + } +} diff --git a/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/constant/Color.java b/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/constant/Color.java new file mode 100644 index 00000000..31b58103 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-cli/src/main/java/io/github/dunwu/javatech/constant/Color.java @@ -0,0 +1,36 @@ +package io.github.dunwu.javatech.constant; + +/** + * @author Zhang Peng + * @since 2019/10/30 + */ +public enum Color { + + DEFAULT("默认"), + BLACK("黑色"), + RED("红色"), + GREEN("绿色"), + YELLOW("黄色"), + BLUE("蓝色"), + MAGENTA("紫色"), + CYAN("青色"), + WHITE("白色"), + BRIGHT_BLACK("亮黑色"), + BRIGHT_RED("亮红色"), + BRIGHT_GREEN("亮绿色"), + BRIGHT_YELLOW("亮黄色"), + BRIGHT_BLUE("亮蓝色"), + BRIGHT_MAGENTA("亮紫色"), + BRIGHT_CYAN("亮青色"), + BRIGHT_WHITE("亮白色"); + + private String desc; + + Color(String desc) { + this.desc = desc; + } + + public String getDesc() { + return desc; + } +} diff --git a/codes/javatech/javatech-others/javatech-cli/src/test/java/io/github/dunwu/javatech/CliUtilTests.java b/codes/javatech/javatech-others/javatech-cli/src/test/java/io/github/dunwu/javatech/CliUtilTests.java new file mode 100644 index 00000000..13286c15 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-cli/src/test/java/io/github/dunwu/javatech/CliUtilTests.java @@ -0,0 +1,17 @@ +package io.github.dunwu.javatech; + +import org.junit.Test; + +/** + * @author Zhang Peng + * @since 2019/10/29 + */ +public class CliUtilTests { + + @Test + public void prepare() throws Exception { + String[] args = { "-sql", "select * from aa", "-name", "测试" }; + CliUtil.prepare(args); + } + +} diff --git a/codes/javatech/javatech-others/javatech-cli/src/test/java/io/github/dunwu/javatech/SystemInfoTest.java b/codes/javatech/javatech-others/javatech-cli/src/test/java/io/github/dunwu/javatech/SystemInfoTest.java new file mode 100644 index 00000000..05e945a5 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-cli/src/test/java/io/github/dunwu/javatech/SystemInfoTest.java @@ -0,0 +1,320 @@ +package io.github.dunwu.javatech; + +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import oshi.PlatformEnum; +import oshi.SystemInfo; +import oshi.hardware.*; +import oshi.hardware.CentralProcessor.TickType; +import oshi.software.os.*; +import oshi.software.os.OperatingSystem.ProcessSort; +import oshi.util.FormatUtil; +import oshi.util.Util; + +import java.time.Instant; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static org.junit.Assert.assertFalse; + +/** + * A demonstration of access to many of OSHI's capabilities + */ +public class SystemInfoTest { + + private static final Logger logger = LoggerFactory.getLogger(SystemInfoTest.class); + + static List oshi = new ArrayList<>(); + + /** + * Test that this platform is implemented.. + */ + @Test + public void testPlatformEnum() { + assertFalse(PlatformEnum.UNKNOWN.equals(SystemInfo.getCurrentPlatformEnum())); + // Exercise the main method + main(null); + } + + /** + * The main method, demonstrating use of classes. + * + * @param args the arguments (unused) + */ + public static void main(String[] args) { + logger.info("Initializing System..."); + SystemInfo si = new SystemInfo(); + + HardwareAbstractionLayer hal = si.getHardware(); + OperatingSystem os = si.getOperatingSystem(); + + printOperatingSystem(os); + + logger.info("Checking computer system..."); + printComputerSystem(hal.getComputerSystem()); + + logger.info("Checking Processor..."); + printProcessor(hal.getProcessor()); + + logger.info("Checking Memory..."); + printMemory(hal.getMemory()); + + logger.info("Checking CPU..."); + printCpu(hal.getProcessor()); + + logger.info("Checking Processes..."); + printProcesses(os, hal.getMemory()); + + logger.info("Checking Services..."); + printServices(os); + + logger.info("Checking Sensors..."); + printSensors(hal.getSensors()); + + logger.info("Checking Power sources..."); + printPowerSources(hal.getPowerSources()); + + logger.info("Checking Disks..."); + printDisks(hal.getDiskStores()); + + logger.info("Checking File System..."); + printFileSystem(os.getFileSystem()); + + logger.info("Checking Network interfaces..."); + printNetworkInterfaces(hal.getNetworkIFs()); + + logger.info("Checking Network parameters..."); + printNetworkParameters(os.getNetworkParams()); + + // hardware: displays + logger.info("Checking Displays..."); + printDisplays(hal.getDisplays()); + + // hardware: USB devices + logger.info("Checking USB Devices..."); + printUsbDevices(hal.getUsbDevices(true)); + + logger.info("Checking Sound Cards..."); + printSoundCards(hal.getSoundCards()); + + StringBuilder output = new StringBuilder(); + for (int i = 0; i < oshi.size(); i++) { + output.append(oshi.get(i)); + if (oshi.get(i) != null && !oshi.get(i).endsWith("\n")) { + output.append('\n'); + } + } + logger.info("Printing Operating System and Hardware Info:{}{}", '\n', output); + } + + private static void printOperatingSystem(final OperatingSystem os) { + oshi.add(String.valueOf(os)); + oshi.add("Booted: " + Instant.ofEpochSecond(os.getSystemBootTime())); + oshi.add("Uptime: " + FormatUtil.formatElapsedSecs(os.getSystemUptime())); + oshi.add("Running with" + (os.isElevated() ? "" : "out") + " elevated permissions."); + } + + private static void printComputerSystem(final ComputerSystem computerSystem) { + oshi.add("system: " + computerSystem.toString()); + oshi.add(" firmware: " + computerSystem.getFirmware().toString()); + oshi.add(" baseboard: " + computerSystem.getBaseboard().toString()); + } + + private static void printProcessor(CentralProcessor processor) { + oshi.add(processor.toString()); + } + + private static void printMemory(GlobalMemory memory) { + oshi.add("Memory: \n " + memory.toString()); + VirtualMemory vm = memory.getVirtualMemory(); + oshi.add("Swap: \n " + vm.toString()); + PhysicalMemory[] pmArray = memory.getPhysicalMemory(); + if (pmArray.length > 0) { + oshi.add("Physical Memory: "); + for (PhysicalMemory pm : pmArray) { + oshi.add(" " + pm.toString()); + } + } + } + + private static void printCpu(CentralProcessor processor) { + oshi.add("Context Switches/Interrupts: " + processor.getContextSwitches() + " / " + processor.getInterrupts()); + + long[] prevTicks = processor.getSystemCpuLoadTicks(); + long[][] prevProcTicks = processor.getProcessorCpuLoadTicks(); + oshi.add("CPU, IOWait, and IRQ ticks @ 0 sec:" + Arrays.toString(prevTicks)); + // Wait a second... + Util.sleep(1000); + long[] ticks = processor.getSystemCpuLoadTicks(); + oshi.add("CPU, IOWait, and IRQ ticks @ 1 sec:" + Arrays.toString(ticks)); + long user = ticks[TickType.USER.getIndex()] - prevTicks[TickType.USER.getIndex()]; + long nice = ticks[TickType.NICE.getIndex()] - prevTicks[TickType.NICE.getIndex()]; + long sys = ticks[TickType.SYSTEM.getIndex()] - prevTicks[TickType.SYSTEM.getIndex()]; + long idle = ticks[TickType.IDLE.getIndex()] - prevTicks[TickType.IDLE.getIndex()]; + long iowait = ticks[TickType.IOWAIT.getIndex()] - prevTicks[TickType.IOWAIT.getIndex()]; + long irq = ticks[TickType.IRQ.getIndex()] - prevTicks[TickType.IRQ.getIndex()]; + long softirq = ticks[TickType.SOFTIRQ.getIndex()] - prevTicks[TickType.SOFTIRQ.getIndex()]; + long steal = ticks[TickType.STEAL.getIndex()] - prevTicks[TickType.STEAL.getIndex()]; + long totalCpu = user + nice + sys + idle + iowait + irq + softirq + steal; + + oshi.add(String.format( + "User: %.1f%% Nice: %.1f%% System: %.1f%% Idle: %.1f%% IOwait: %.1f%% IRQ: %.1f%% SoftIRQ: %.1f%% Steal: %.1f%%", + 100d * user / totalCpu, 100d * nice / totalCpu, 100d * sys / totalCpu, 100d * idle / totalCpu, + 100d * iowait / totalCpu, 100d * irq / totalCpu, 100d * softirq / totalCpu, 100d * steal / totalCpu)); + oshi.add(String.format("CPU load: %.1f%%", processor.getSystemCpuLoadBetweenTicks(prevTicks) * 100)); + double[] loadAverage = processor.getSystemLoadAverage(3); + oshi.add("CPU load averages:" + (loadAverage[0] < 0 ? " N/A" : String.format(" %.2f", loadAverage[0])) + + (loadAverage[1] < 0 ? " N/A" : String.format(" %.2f", loadAverage[1])) + + (loadAverage[2] < 0 ? " N/A" : String.format(" %.2f", loadAverage[2]))); + // per core CPU + StringBuilder procCpu = new StringBuilder("CPU load per processor:"); + double[] load = processor.getProcessorCpuLoadBetweenTicks(prevProcTicks); + for (double avg : load) { + procCpu.append(String.format(" %.1f%%", avg * 100)); + } + oshi.add(procCpu.toString()); + long freq = processor.getProcessorIdentifier().getVendorFreq(); + if (freq > 0) { + oshi.add("Vendor Frequency: " + FormatUtil.formatHertz(freq)); + } + freq = processor.getMaxFreq(); + if (freq > 0) { + oshi.add("Max Frequency: " + FormatUtil.formatHertz(freq)); + } + long[] freqs = processor.getCurrentFreq(); + if (freqs[0] > 0) { + StringBuilder sb = new StringBuilder("Current Frequencies: "); + for (int i = 0; i < freqs.length; i++) { + if (i > 0) { + sb.append(", "); + } + sb.append(FormatUtil.formatHertz(freqs[i])); + } + oshi.add(sb.toString()); + } + } + + private static void printProcesses(OperatingSystem os, GlobalMemory memory) { + oshi.add("Processes: " + os.getProcessCount() + ", Threads: " + os.getThreadCount()); + // Sort by highest CPU + List procs = Arrays.asList(os.getProcesses(5, ProcessSort.CPU)); + + oshi.add(" PID %CPU %MEM VSZ RSS Name"); + for (int i = 0; i < procs.size() && i < 5; i++) { + OSProcess p = procs.get(i); + oshi.add(String.format(" %5d %5.1f %4.1f %9s %9s %s", p.getProcessID(), + 100d * (p.getKernelTime() + p.getUserTime()) / p.getUpTime(), + 100d * p.getResidentSetSize() / memory.getTotal(), FormatUtil.formatBytes(p.getVirtualSize()), + FormatUtil.formatBytes(p.getResidentSetSize()), p.getName())); + } + } + + private static void printServices(OperatingSystem os) { + oshi.add("Services: "); + oshi.add(" PID State Name"); + // DO 5 each of running and stopped + int i = 0; + for (OSService s : os.getServices()) { + if (s.getState().equals(OSService.State.RUNNING) && i++ < 5) { + oshi.add(String.format(" %5d %7s %s", s.getProcessID(), s.getState(), s.getName())); + } + } + i = 0; + for (OSService s : os.getServices()) { + if (s.getState().equals(OSService.State.STOPPED) && i++ < 5) { + oshi.add(String.format(" %5d %7s %s", s.getProcessID(), s.getState(), s.getName())); + } + } + } + + private static void printSensors(Sensors sensors) { + oshi.add("Sensors: " + sensors.toString()); + } + + private static void printPowerSources(PowerSource[] powerSources) { + StringBuilder sb = new StringBuilder("Power Sources: "); + if (powerSources.length == 0) { + sb.append("Unknown"); + } + for (PowerSource powerSource : powerSources) { + sb.append("\n ").append(powerSource.toString()); + } + oshi.add(sb.toString()); + } + + private static void printDisks(HWDiskStore[] diskStores) { + oshi.add("Disks:"); + for (HWDiskStore disk : diskStores) { + oshi.add(" " + disk.toString()); + + HWPartition[] partitions = disk.getPartitions(); + for (HWPartition part : partitions) { + oshi.add(" |-- " + part.toString()); + } + } + } + + private static void printFileSystem(FileSystem fileSystem) { + oshi.add("File System:"); + + oshi.add(String.format(" File Descriptors: %d/%d", fileSystem.getOpenFileDescriptors(), + fileSystem.getMaxFileDescriptors())); + + OSFileStore[] fsArray = fileSystem.getFileStores(); + for (OSFileStore fs : fsArray) { + long usable = fs.getUsableSpace(); + long total = fs.getTotalSpace(); + oshi.add(String.format( + " %s (%s) [%s] %s of %s free (%.1f%%), %s of %s files free (%.1f%%) is %s " + + (fs.getLogicalVolume() != null && fs.getLogicalVolume().length() > 0 ? "[%s]" : "%s") + + " and is mounted at %s", + fs.getName(), fs.getDescription().isEmpty() ? "file system" : fs.getDescription(), fs.getType(), + FormatUtil.formatBytes(usable), FormatUtil.formatBytes(fs.getTotalSpace()), 100d * usable / total, + FormatUtil.formatValue(fs.getFreeInodes(), ""), FormatUtil.formatValue(fs.getTotalInodes(), ""), + 100d * fs.getFreeInodes() / fs.getTotalInodes(), fs.getVolume(), fs.getLogicalVolume(), + fs.getMount())); + } + } + + private static void printNetworkInterfaces(NetworkIF[] networkIFs) { + StringBuilder sb = new StringBuilder("Network Interfaces:"); + if (networkIFs.length == 0) { + sb.append(" Unknown"); + } + for (NetworkIF net : networkIFs) { + sb.append("\n ").append(net.toString()); + } + oshi.add(sb.toString()); + } + + private static void printNetworkParameters(NetworkParams networkParams) { + oshi.add("Network parameters:\n " + networkParams.toString()); + } + + private static void printDisplays(Display[] displays) { + oshi.add("Displays:"); + int i = 0; + for (Display display : displays) { + oshi.add(" Display " + i + ":"); + oshi.add(String.valueOf(display)); + i++; + } + } + + private static void printUsbDevices(UsbDevice[] usbDevices) { + oshi.add("USB Devices:"); + for (UsbDevice usbDevice : usbDevices) { + oshi.add(String.valueOf(usbDevice)); + } + } + + private static void printSoundCards(SoundCard[] cards) { + oshi.add("Sound Cards:"); + for (SoundCard card : cards) { + oshi.add(" " + String.valueOf(card)); + } + } + +} diff --git a/codes/javatech/javatech-others/javatech-ruleengine/README.md b/codes/javatech/javatech-others/javatech-ruleengine/README.md new file mode 100644 index 00000000..92bab0d2 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-ruleengine/README.md @@ -0,0 +1,3 @@ +# 规则引擎示例 + +- [easy-rules](https://github.com/j-easy/easy-rules) - 使用便捷简单:支持注解、Java API、MVEL 表达式 方式定义规则 \ No newline at end of file diff --git a/codes/javatech/javatech-others/javatech-ruleengine/pom.xml b/codes/javatech/javatech-others/javatech-ruleengine/pom.xml new file mode 100644 index 00000000..d1812974 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-ruleengine/pom.xml @@ -0,0 +1,71 @@ + + + + 4.0.0 + + + io.github.dunwu + dunwu-parent + 1.0.7 + + + io.github.dunwu.javatech + javatech-ruleengine + 1.0.0 + jar + Java 其他 - 规则引擎 + + + 3.4.0 + 2.4.3.Final + + + + + + org.jeasy + easy-rules-core + ${easy-rules.version} + + + org.jeasy + easy-rules-mvel + ${easy-rules.version} + + + org.jeasy + easy-rules-support + ${easy-rules.version} + + + cn.hutool + hutool-all + + + + com.alibaba + fastjson + + + ch.qos.logback + logback-classic + + + org.junit.jupiter + junit-jupiter + test + + + org.assertj + assertj-core + test + + + org.mockito + mockito-core + test + + + diff --git a/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/eazyrules/Launcher.java b/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/eazyrules/Launcher.java new file mode 100644 index 00000000..342a1039 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/eazyrules/Launcher.java @@ -0,0 +1,25 @@ +package io.github.dunwu.javatech.rule.eazyrules; + +import org.jeasy.rules.api.Facts; +import org.jeasy.rules.api.Rules; +import org.jeasy.rules.api.RulesEngine; +import org.jeasy.rules.core.DefaultRulesEngine; + +public class Launcher { + + public static void main(String[] args) { + // define facts + Facts facts = new Facts(); + facts.put("rain", true); + + // define rules + WeatherRule weatherRule = new WeatherRule(); + Rules rules = new Rules(); + rules.register(weatherRule); + + // fire rules on known facts + RulesEngine rulesEngine = new DefaultRulesEngine(); + rulesEngine.fire(rules, facts); + } + +} diff --git a/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/eazyrules/WeatherRule.java b/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/eazyrules/WeatherRule.java new file mode 100644 index 00000000..af802028 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/eazyrules/WeatherRule.java @@ -0,0 +1,24 @@ +package io.github.dunwu.javatech.rule.eazyrules; + +import org.jeasy.rules.annotation.Action; +import org.jeasy.rules.annotation.Condition; +import org.jeasy.rules.annotation.Fact; +import org.jeasy.rules.annotation.Rule; + +/** + * @author Zhang Peng + * @since 2020-05-15 + */ +@Rule(name = "weather rule", description = "if it rains then take an umbrella" ) +public class WeatherRule { + + @Condition + public boolean itRains(@Fact("rain") boolean rain) { + return rain; + } + + @Action + public void takeAnUmbrella() { + System.out.println("It rains, take an umbrella!"); + } +} diff --git a/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/BasicRule.java b/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/BasicRule.java new file mode 100644 index 00000000..d3045483 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/BasicRule.java @@ -0,0 +1,128 @@ +package io.github.dunwu.javatech.rule.mvel; + +public class BasicRule implements Rule, Comparable { + + protected String name; + + private String description; + + private int priority; + + private String condition; + + private String action; + + public BasicRule() { + } + + @Override + public int hashCode() { + int result = name.hashCode(); + result = 31 * result + (description != null ? description.hashCode() : 0); + result = 31 * result + priority; + return result; + } + + @Override + public boolean equals(final Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + BasicRule basicRule = (BasicRule) o; + + if (priority != basicRule.priority) { + return false; + } + if (!name.equals(basicRule.name)) { + return false; + } + return !(description != null ? !description.equals(basicRule.description) : basicRule.description != null); + } + + @Override + public String toString() { + return name; + } + + @Override + public int compareTo(Rule rule) { + if (priority < rule.getPriority()) { + return -1; + } else if (priority > rule.getPriority()) { + return 1; + } else { + return getName().compareTo(rule.getName()); + } + } + + @Override + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + @Override + public int getPriority() { + return priority; + } + + public void setPriority(int priority) { + this.priority = priority; + } + + @Override + public String getCondition() { + return condition; + } + + public void setCondition(String condition) { + this.condition = condition; + } + + @Override + public String getAction() { + return action; + } + + @Override + public boolean validate() { + if (condition == null || condition.length() == 0) { + throw new IllegalArgumentException("The rule condition must not be null or empty"); + } + if (action == null || action.length() == 0) { + throw new IllegalArgumentException("The rule action must not be null or empty"); + } + return true; + } + + @Override + public boolean evaluate(RuleContext ruleContext) { + return false; + } + + @Override + public void execute(RuleContext ruleContext) { + // do nothing + } + + public void setAction(String action) { + this.action = action; + } + +} diff --git a/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/DefaultRuleEngine.java b/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/DefaultRuleEngine.java new file mode 100644 index 00000000..27e24fdf --- /dev/null +++ b/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/DefaultRuleEngine.java @@ -0,0 +1,163 @@ +package io.github.dunwu.javatech.rule.mvel; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.HashMap; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; +import java.util.concurrent.ConcurrentHashMap; + +public class DefaultRuleEngine implements RuleEngine { + + protected Logger logger = LoggerFactory.getLogger(this.getClass()); + + /** + * The rules set. + */ + protected Set rules; + + /** + * The engine parameters + */ + protected RuleEngineParams params; + + /** + * The rule fact + */ + protected RuleContext fact; + + /** + * ruleSet Map + */ + private Map> ruleSetMap = new ConcurrentHashMap<>(); + + public DefaultRuleEngine(RuleEngineParams params) { + this.params = params; + this.rules = new TreeSet<>(); + if (params.isSilentMode()) { + // cancle log + } + } + + @Override + public RuleEngineParams getParams() { + return params; + } + + @Override + public void registerRule(Rule rule) { + // 检查规则 + if (rule.validate()) { + rules.add(rule); + } + } + + @Override + public void registerRule(MvelRuleSet ruleSet) { + ruleSet.getRules().forEach(rule -> registerRule(rule)); + logRegisteredRules(); + } + + private void logRegisteredRules() { + logger.info("Registered rules:"); + for (Rule rule : rules) { + logger.info("Rule { name = {}, description = {}, priority = {}}", rule.getName(), rule.getDescription(), + rule.getPriority()); + } + } + + @Override + public void unregisterRule(Rule rule) { + rules.remove(rule); + } + + @Override + public void clearRules() { + ruleSetMap.clear(); + } + + @Override + public Set getRules() { + return rules; + } + + @Override + public Map checkRules() { + logger.info("Checking rules"); + sortRules(); + Map result = new HashMap<>(); + for (Rule rule : rules) { + result.put(rule, rule.evaluate(fact)); + } + return result; + } + + @Override + public void launch(RuleContext fact) { + if (rules.isEmpty()) { + logger.warn("No rules registered! Nothing to apply"); + return; + } + + logEngineParams(); + sortRules(); + applyRules(fact); + } + + private void logEngineParams() { + logger.info("----- Params -----"); + logger.info("Engine name: {}", params.getName()); + logger.info("Rule priority threshold: {}", params.getPriorityThreshold()); + logger.info("Skip on first applied rule: {}", params.isSkipOnFirstAppliedRule()); + logger.info("Skip on first unapplied rule: {}", params.isSkipOnFirstUnAppliedRule()); + logger.info("Skip on first failed rule: {}", params.isSkipOnFirstFailedRule()); + } + + private void applyRules(RuleContext fact) { + logger.info("Rules evaluation started"); + + for (Rule rule : rules) { + final String name = rule.getName(); + final int priority = rule.getPriority(); + + if (priority > params.getPriorityThreshold()) { + logger.info( + "Rule priority threshold ({}) exceeded at rule {} with priority={}, next rules will be skipped", + new Object[] { params.getPriorityThreshold(), name, priority }); + break; + } + + if (rule.evaluate(fact)) { + logger.info("Rule [{}] triggered", name); + try { + rule.execute(fact); + logger.info("Rule {} performed successfully", name); + if (params.isSkipOnFirstAppliedRule()) { + logger.info("Next rules will be skipped since parameter skipOnFirstAppliedRule is set"); + break; + } + if (params.isSkipOnFirstUnAppliedRule()) { + logger.info("Next rules will be skipped since parameter skipOnFirstUnAppliedRule is set"); + break; + } + } catch (Exception exception) { + logger.error("Rule [{}] performed with error {}", name, exception); + + if (params.isSkipOnFirstFailedRule()) { + logger.info("Next rules will be skipped since parameter skipOnFirstFailedRule is set"); + break; + } + } + } else { + logger.info("Rule [{}] has been evaluated to false, it has not been executed", name); + } + } + } + + private void sortRules() { + rules = new TreeSet<>(rules); + } + +} diff --git a/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/MvelRule.java b/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/MvelRule.java new file mode 100644 index 00000000..491be301 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/MvelRule.java @@ -0,0 +1,34 @@ +package io.github.dunwu.javatech.rule.mvel; + +import org.mvel2.MVEL; + +import java.io.Serializable; + +public class MvelRule extends BasicRule { + + /** + * 判断条件是否匹配 + */ + @Override + public boolean evaluate(RuleContext ruleContext) { + try { + return (Boolean) MVEL.eval(getCondition(), ruleContext); + } catch (Exception e) { + throw new RuntimeException(String.format("条件[%s]匹配发生异常:", getCondition()), e); + } + } + + /** + * 执行条件匹配后的操作 + */ + @Override + public void execute(RuleContext ruleContext) { + try { + Serializable exp = MVEL.compileExpression(getAction(), ruleContext); + MVEL.executeExpression(exp, ruleContext); + } catch (Exception e) { + throw new RuntimeException(String.format("后续操作[%s]执行发生异常:", getAction()), e); + } + } + +} diff --git a/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/MvelRuleSet.java b/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/MvelRuleSet.java new file mode 100644 index 00000000..463746b0 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/MvelRuleSet.java @@ -0,0 +1,34 @@ +package io.github.dunwu.javatech.rule.mvel; + +import java.util.Set; +import java.util.TreeSet; + +public class MvelRuleSet { + + private String name; + + private TreeSet rules; + + public String getName() { + return name; + } + + public void setName(String name) { + if (name == null || name.length() == 0) { + name = RuleConstant.DEFAULT_RULE_NAME; + } + this.name = name; + } + + public Set getRules() { + if (rules == null) { + rules = new TreeSet<>(); + } + return rules; + } + + public void setRules(TreeSet rules) { + this.rules = rules; + } + +} diff --git a/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/Rule.java b/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/Rule.java new file mode 100644 index 00000000..4b19a291 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/Rule.java @@ -0,0 +1,61 @@ +package io.github.dunwu.javatech.rule.mvel; + +public interface Rule { + + /** + * Getter for rule name. + * + * @return the rule name + */ + String getName(); + + /** + * Getter for rule description. + * + * @return rule description + */ + String getDescription(); + + /** + * Getter for rule priority. + * + * @return rule priority + */ + int getPriority(); + + /** + * Getter for the rule condition + * + * @return rule condition + */ + String getCondition(); + + /** + * Getter for the rule action + * + * @return rule action + */ + String getAction(); + + /** + * validate + * + * @return boolean + */ + boolean validate(); + + /** + * Rule conditions abstraction : this method encapsulates the rule's conditions. + * + * @return true if the rule should be applied, false else + */ + boolean evaluate(RuleContext ruleContext); + + /** + * Rule actions abstraction : this method encapsulates the rule's actions. + * + * @throws Exception thrown if an exception occurs during actions performing + */ + void execute(RuleContext ruleContext) throws Exception; + +} diff --git a/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/RuleConstant.java b/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/RuleConstant.java new file mode 100644 index 00000000..03ba63d3 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/RuleConstant.java @@ -0,0 +1,33 @@ +package io.github.dunwu.javatech.rule.mvel; + +/** + * 规则常量 + */ +public final class RuleConstant { + + /** + * Default rule name. + */ + public static final String DEFAULT_RULE_NAME = "rule"; + + /** + * Default engine name. + */ + public static final String DEFAULT_ENGINE_NAME = "engine"; + + /** + * Default rule description. + */ + public static final String DEFAULT_RULE_DESCRIPTION = "description"; + + /** + * Default rule priority. + */ + public static final int DEFAULT_RULE_PRIORITY = Integer.MAX_VALUE - 1; + + /** + * Default rule priority threshold. + */ + public static final int DEFAULT_RULE_PRIORITY_THRESHOLD = Integer.MAX_VALUE; + +} diff --git a/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/RuleContext.java b/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/RuleContext.java new file mode 100644 index 00000000..acf04576 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/RuleContext.java @@ -0,0 +1,8 @@ +package io.github.dunwu.javatech.rule.mvel; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +public class RuleContext extends ConcurrentHashMap implements Map { + +} diff --git a/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/RuleEngine.java b/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/RuleEngine.java new file mode 100644 index 00000000..9d6321dc --- /dev/null +++ b/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/RuleEngine.java @@ -0,0 +1,54 @@ +package io.github.dunwu.javatech.rule.mvel; + +import java.util.Map; +import java.util.Set; + +public interface RuleEngine { + + /** + * 规则引擎 设置参数 + * + * @return The rules engine parameters + */ + RuleEngineParams getParams(); + + /** + * 注册rule + */ + void registerRule(Rule rule); + + /** + * 注册ruleSet + */ + void registerRule(MvelRuleSet ruleSet); + + /** + * 取消注册rule + */ + void unregisterRule(Rule rule); + + /** + * 清空规则列表 + */ + void clearRules(); + + /** + * Return the set of registered rules. + * + * @return the set of registered rules + */ + Set getRules(); + + /** + * Check rules without firing them. + * + * @return a map with the result of evaluation of each rule + */ + Map checkRules(); + + /** + * Launch all registered rules. + */ + void launch(RuleContext ruleContext); + +} diff --git a/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/RuleEngineBuilder.java b/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/RuleEngineBuilder.java new file mode 100644 index 00000000..870a76a5 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/RuleEngineBuilder.java @@ -0,0 +1,45 @@ +package io.github.dunwu.javatech.rule.mvel; + +public class RuleEngineBuilder { + + private RuleEngineParams params; + + private RuleEngineBuilder() { + params = new RuleEngineParams(RuleConstant.DEFAULT_ENGINE_NAME, false, false, false, + RuleConstant.DEFAULT_RULE_PRIORITY_THRESHOLD, false); + } + + public static RuleEngineBuilder newRuleEngine() { + return new RuleEngineBuilder(); + } + + public RuleEngine build() { + return new DefaultRuleEngine(params); + } + + public RuleEngineBuilder named(final String name) { + params.setName(name); + return this; + } + + public RuleEngineBuilder withSkipOnFirstAppliedRule(final boolean skipOnFirstAppliedRule) { + params.setSkipOnFirstAppliedRule(skipOnFirstAppliedRule); + return this; + } + + public RuleEngineBuilder withSkipOnFirstFailedRule(final boolean skipOnFirstFailedRule) { + params.setSkipOnFirstFailedRule(skipOnFirstFailedRule); + return this; + } + + public RuleEngineBuilder withRulePriorityThreshold(final int priorityThreshold) { + params.setPriorityThreshold(priorityThreshold); + return this; + } + + public RuleEngineBuilder withSilentMode(final boolean silentMode) { + params.setSilentMode(silentMode); + return this; + } + +} diff --git a/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/RuleEngineParams.java b/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/RuleEngineParams.java new file mode 100644 index 00000000..36757859 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-ruleengine/src/main/java/io/github/dunwu/javatech/rule/mvel/RuleEngineParams.java @@ -0,0 +1,93 @@ +package io.github.dunwu.javatech.rule.mvel; + +public class RuleEngineParams { + + /** + * The engine name. + */ + protected String name; + + /** + * 满足任意条件(即遇到第一个匹配规则时停止) Parameter to skip next applicable rules when a rule is applied. + */ + private boolean skipOnFirstAppliedRule; + + /** + * 满足所有条件(即遇到第第一个未匹配规则时停止) Parameter to skip next applicable rules when a rule has failed. + */ + private boolean skipOnFirstUnAppliedRule; + + /** + * Parameter to skip next applicable rules when a rule has failed. + */ + private boolean skipOnFirstFailedRule; + + /** + * Parameter to skip next rules if priority exceeds a user defined threshold. + */ + private int priorityThreshold; + + /** + * Parameter to mute loggers. + */ + private boolean silentMode; + + public RuleEngineParams(String name, boolean skipOnFirstAppliedRule, boolean skipOnFirstUnAppliedRule, + boolean skipOnFirstFailedRule, int priorityThreshold, boolean silentMode) { + this.name = name; + this.skipOnFirstAppliedRule = skipOnFirstAppliedRule; + this.skipOnFirstUnAppliedRule = skipOnFirstUnAppliedRule; + this.skipOnFirstFailedRule = skipOnFirstFailedRule; + this.priorityThreshold = priorityThreshold; + this.silentMode = silentMode; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getPriorityThreshold() { + return priorityThreshold; + } + + public void setPriorityThreshold(int priorityThreshold) { + this.priorityThreshold = priorityThreshold; + } + + public boolean isSilentMode() { + return silentMode; + } + + public void setSilentMode(boolean silentMode) { + this.silentMode = silentMode; + } + + public boolean isSkipOnFirstAppliedRule() { + return skipOnFirstAppliedRule; + } + + public void setSkipOnFirstAppliedRule(boolean skipOnFirstAppliedRule) { + this.skipOnFirstAppliedRule = skipOnFirstAppliedRule; + } + + public boolean isSkipOnFirstFailedRule() { + return skipOnFirstFailedRule; + } + + public void setSkipOnFirstFailedRule(boolean skipOnFirstFailedRule) { + this.skipOnFirstFailedRule = skipOnFirstFailedRule; + } + + public boolean isSkipOnFirstUnAppliedRule() { + return skipOnFirstUnAppliedRule; + } + + public void setSkipOnFirstUnAppliedRule(boolean skipOnFirstUnAppliedRule) { + this.skipOnFirstUnAppliedRule = skipOnFirstUnAppliedRule; + } + +} diff --git a/codes/javatech/javatech-others/javatech-ruleengine/src/main/resources/logback.xml b/codes/javatech/javatech-others/javatech-ruleengine/src/main/resources/logback.xml new file mode 100644 index 00000000..8d3ec5a8 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-ruleengine/src/main/resources/logback.xml @@ -0,0 +1,95 @@ + + + + + + dunwu-admin + + + + + + + + + + + + + + + ${LOG_CHARSET} + ${LOG_COLOR_PATTERN} + + + + + + + + ${LOG_DIR}/%d{yyyy-MM,aux}/${APP_NAME}_debug.%d{yyyy-MM-dd}.%i.log + + ${LOG_MAX_HISTORY} + + ${LOG_MAX_FILE_SIZE} + + + + ${LOG_PATTERN} + + + + DEBUG + + + + + + + 0 + + ${LOG_MAX_QUEUE_SIZE} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/codes/javatech/javatech-others/javatech-ruleengine/src/main/resources/weather-rule.yml b/codes/javatech/javatech-others/javatech-ruleengine/src/main/resources/weather-rule.yml new file mode 100644 index 00000000..77dddbb5 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-ruleengine/src/main/resources/weather-rule.yml @@ -0,0 +1,5 @@ +name: "weather rule" +description: "if it rains then take an umbrella" +condition: "rain == true" +actions: + - "System.out.println(\"It rains, take an umbrella!\");" diff --git a/codes/javatech/javatech-others/javatech-ruleengine/src/test/java/io/github/dunwu/javatech/rule/eazyrules/EazyRulesTest.java b/codes/javatech/javatech-others/javatech-ruleengine/src/test/java/io/github/dunwu/javatech/rule/eazyrules/EazyRulesTest.java new file mode 100644 index 00000000..1343c628 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-ruleengine/src/test/java/io/github/dunwu/javatech/rule/eazyrules/EazyRulesTest.java @@ -0,0 +1,85 @@ +package io.github.dunwu.javatech.rule.eazyrules; + +import cn.hutool.core.io.resource.ResourceUtil; +import org.jeasy.rules.api.Facts; +import org.jeasy.rules.api.Rule; +import org.jeasy.rules.api.Rules; +import org.jeasy.rules.api.RulesEngine; +import org.jeasy.rules.core.DefaultRulesEngine; +import org.jeasy.rules.core.RuleBuilder; +import org.jeasy.rules.mvel.MVELRule; +import org.jeasy.rules.mvel.MVELRuleFactory; +import org.jeasy.rules.support.YamlRuleDefinitionReader; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.io.FileReader; +import java.net.URL; + +/** + * Easy Rules 使用测试 + * + * @author Zhang Peng + * @since 2020-05-15 + */ +public class EazyRulesTest { + + @Test + @DisplayName("测试 easy-rules 注解方式") + public void testWeatherRule() { + WeatherRule rule = new WeatherRule(); + Rules rules = new Rules(); + rules.register(rule); + testRule(rules); + } + + @Test + @DisplayName("测试 Fluent API") + public void testFluentApi() { + Rule rule = new RuleBuilder() + .name("weather rule") + .description("if it rains then take an umbrella") + .when(facts -> facts.get("rain").equals(true)) + .then(facts -> System.out.println("It rains, take an umbrella!")) + .build(); + Rules rules = new Rules(); + rules.register(rule); + testRule(rules); + } + + @Test + @DisplayName("测试 MVEL Expression") + public void testExpression() { + Rule rule = new MVELRule() + .name("weather rule") + .description("if it rains then take an umbrella") + .when("rain == true") + .then("System.out.println(\"It rains, take an umbrella!\");"); + Rules rules = new Rules(); + rules.register(rule); + testRule(rules); + } + + @Test + @DisplayName("测试 Rule File") + public void testRuleFile() throws Exception { + MVELRuleFactory ruleFactory = new MVELRuleFactory(new YamlRuleDefinitionReader()); + URL url = ResourceUtil.getResource("weather-rule.yml"); + Rule rule = ruleFactory.createRule(new FileReader(url.getFile())); + Rules rules = new Rules(); + rules.register(rule); + testRule(rules); + } + + public void testRule(Rules rules) { + + // define facts + Facts facts = new Facts(); + facts.put("rain", true); + + // fire rules on known facts + RulesEngine rulesEngine = new DefaultRulesEngine(); + rulesEngine.fire(rules, facts); + } + +} diff --git a/codes/javatech/javatech-others/javatech-ruleengine/src/test/java/io/github/dunwu/javatech/rule/mvel/ClassTests.java b/codes/javatech/javatech-others/javatech-ruleengine/src/test/java/io/github/dunwu/javatech/rule/mvel/ClassTests.java new file mode 100644 index 00000000..f20ba568 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-ruleengine/src/test/java/io/github/dunwu/javatech/rule/mvel/ClassTests.java @@ -0,0 +1,44 @@ +package io.github.dunwu.javatech.rule.mvel; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.mvel2.MVEL; + +import java.io.File; +import java.io.IOException; +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +/** + * @author Mike Brock + */ +public class ClassTests { + + private final String dir = "src/test/java/" + getClass().getPackage().getName().replaceAll("\\.", "/"); + + @Test + public void testScript() throws IOException { + final Object o = MVEL.evalFile(new File(dir + "/demo.mvel"), new HashMap()); + } + + @Test + public void testEval() { + String expression = "foobar > 99"; + Map vars = new HashMap(); + vars.put("foobar", new Integer(100)); + Boolean result = (Boolean) MVEL.eval(expression, vars); + Assertions.assertEquals(true, result); + } + + @Test + public void testCompileExpression() { + String expression = "foobar > 99"; + Serializable compiled = MVEL.compileExpression(expression); + Map vars = new HashMap(); + vars.put("foobar", new Integer(100)); + Boolean result = (Boolean) MVEL.executeExpression(compiled, vars); + Assertions.assertEquals(true, result); + } + +} diff --git a/codes/javatech/javatech-others/javatech-ruleengine/src/test/java/io/github/dunwu/javatech/rule/mvel/SalaryRuleTest.java b/codes/javatech/javatech-others/javatech-ruleengine/src/test/java/io/github/dunwu/javatech/rule/mvel/SalaryRuleTest.java new file mode 100644 index 00000000..ae62d6ac --- /dev/null +++ b/codes/javatech/javatech-others/javatech-ruleengine/src/test/java/io/github/dunwu/javatech/rule/mvel/SalaryRuleTest.java @@ -0,0 +1,77 @@ +package io.github.dunwu.javatech.rule.mvel; + +import cn.hutool.core.io.FileUtil; +import com.alibaba.fastjson.JSON; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; + +public class SalaryRuleTest { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + private final String SALARY_RULE_PATH = System.getProperty("user.dir") + "\\src\\test\\resources\\SalaryRule.json"; + + private RuleEngine ruleEngine; + + @BeforeEach + public void before() { + logger.info("Begin"); + RuleEngineParams params = new RuleEngineParams("SalaryEngine", true, false, true, + RuleConstant.DEFAULT_RULE_PRIORITY_THRESHOLD, false); + ruleEngine = new DefaultRuleEngine(params); + + String json = FileUtil.readString(new File(SALARY_RULE_PATH), "utf-8"); + MvelRuleSet ruleSet = JSON.parseObject(json, MvelRuleSet.class); + ruleEngine.registerRule(ruleSet); + } + + @Test + public void test_salaryRule() { + RuleContext ruleContext = new RuleContext(); + ruleContext.put("fee", 0.0); + + ruleContext.put("salary", 1000); + ruleEngine.launch(ruleContext); + Assertions.assertEquals(0, ruleContext.get("fee")); + + ruleContext.put("salary", 4000); + ruleEngine.launch(ruleContext); + Assertions.assertEquals(15.0, ruleContext.get("fee")); + + ruleContext.put("salary", 7000); + ruleEngine.launch(ruleContext); + Assertions.assertEquals(245.0, ruleContext.get("fee")); + + ruleContext.put("salary", 10000); + ruleEngine.launch(ruleContext); + Assertions.assertEquals(745.0, ruleContext.get("fee")); + + ruleContext.put("salary", 18000); + ruleEngine.launch(ruleContext); + Assertions.assertEquals(2620.0, ruleContext.get("fee")); + + ruleContext.put("salary", 40005); + ruleEngine.launch(ruleContext); + Assertions.assertEquals(8196.50, ruleContext.get("fee")); + + ruleContext.put("salary", 70005); + ruleEngine.launch(ruleContext); + Assertions.assertEquals(17771.75, ruleContext.get("fee")); + + ruleContext.put("salary", 100000); + ruleEngine.launch(ruleContext); + Assertions.assertEquals(29920.00, ruleContext.get("fee")); + } + + @AfterEach + public void after() { + logger.info("End"); + } + +} diff --git a/codes/javatech/javatech-others/javatech-ruleengine/src/test/java/io/github/dunwu/javatech/rule/mvel/demo.mvel b/codes/javatech/javatech-others/javatech-ruleengine/src/test/java/io/github/dunwu/javatech/rule/mvel/demo.mvel new file mode 100644 index 00000000..ec1733ee --- /dev/null +++ b/codes/javatech/javatech-others/javatech-ruleengine/src/test/java/io/github/dunwu/javatech/rule/mvel/demo.mvel @@ -0,0 +1,56 @@ +/** + * This is an MVEL script. + */ + +def Person { + String name; + int age; + String color; + + def speak() { + System.out.println("My name is " + name + " and I am " + age + " years old. I like the color " + color + "."); + } + + def makeUpperCase() { + name = name.toUpperCase(); + } + + def sayName(amount) { + for (int i = 0; i < amount; i++) { + System.out.println((i + 1) + ". " + name); + } + } +} + +tm = System.currentTimeMillis; + +def print(str) { + System.out.println(str); +} + +var p = new Person(); + +p.{ + name = "Bob", + age = 5, + color = "blue" +}; + +p.speak(); +p.makeUpperCase(); +p.speak(); + +print("\n---------\n"); + +p.sayName(10); + +for (a : "gorkem") { + print("->" + a); +} + +var list = ["cow", "pig", "lion"]; +var blah = ($.toUpperCase() in list if $.length() == 3); + +print(blah); +print(tm()); + diff --git a/codes/javatech/javatech-others/javatech-ruleengine/src/test/resources/SalaryRule.json b/codes/javatech/javatech-others/javatech-ruleengine/src/test/resources/SalaryRule.json new file mode 100644 index 00000000..6a43150e --- /dev/null +++ b/codes/javatech/javatech-others/javatech-ruleengine/src/test/resources/SalaryRule.json @@ -0,0 +1,51 @@ +{ + "name": "salaryRule", + "rules": [ + { + "name": "step1", + "action": "fee=0", + "condition": "salary<=3500" + }, + { + "name": "step2", + "action": "fee=(salary-3500)*0.03", + "condition": "salary>3500 && salary<=5000" + }, + { + "name": "step3", + "action": "fee=(salary-3500)*0.1-105", + "condition": "salary>5000 && salary<=8000", + "priority": 3 + }, + { + "name": "step4", + "action": "fee=(salary-3500)*0.2-555", + "condition": "salary>8000 && salary<=12500", + "priority": 4 + }, + { + "name": "step5", + "action": "fee=(salary-3500)*0.25-1005", + "condition": "salary>12500 && salary<=38500", + "priority": 5 + }, + { + "name": "step6", + "action": "fee=(salary-3500)*0.3-2755", + "condition": "salary>38500 && salary<=58500", + "priority": 6 + }, + { + "name": "step7", + "action": "fee=(salary-3500)*0.35-5505", + "condition": "salary>58500 && salary<=83500", + "priority": 7 + }, + { + "name": "step8", + "action": "fee=(salary-3500)*0.45-13505", + "condition": "salary>83500", + "priority": 8 + } + ] +} diff --git a/codes/javatech/javatech-others/javatech-zookeeper/pom.xml b/codes/javatech/javatech-others/javatech-zookeeper/pom.xml new file mode 100644 index 00000000..cd59a365 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-zookeeper/pom.xml @@ -0,0 +1,40 @@ + + + 4.0.0 + + + io.github.dunwu + dunwu-parent + 1.0.7 + + + io.github.dunwu.javatech + javatech-zookeeper + 1.0.0 + jar + Java 其他 - Zookeeper + + + + org.apache.zookeeper + zookeeper + 3.5.6 + + + org.apache.curator + curator-recipes + 4.3.0 + + + cn.hutool + hutool-all + + + junit + junit + test + + + diff --git a/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/Callback.java b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/Callback.java new file mode 100644 index 00000000..4e4f1c79 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/Callback.java @@ -0,0 +1,12 @@ +package io.github.dunwu.javatech.zk.dlock; + +/** + * Created by sunyujia@aliyun.com on 2016/2/23. + */ +public interface Callback { + + V onGetLock() throws InterruptedException; + + V onTimeout() throws InterruptedException; + +} diff --git a/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/DLockTemplate.java b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/DLockTemplate.java new file mode 100644 index 00000000..d15f51ad --- /dev/null +++ b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/DLockTemplate.java @@ -0,0 +1,16 @@ +package io.github.dunwu.javatech.zk.dlock; + +/** + * 分布式锁模板类 Created by sunyujia@aliyun.com on 2016/2/23. + */ +public interface DLockTemplate { + + /** + * @param lockId 锁id(对应业务唯一ID) + * @param timeout 单位毫秒 + * @param callback 回调函数 + * @return + */ + V execute(String lockId, long timeout, Callback callback); + +} diff --git a/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/DistributedLock.java b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/DistributedLock.java new file mode 100644 index 00000000..2ac111e1 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/DistributedLock.java @@ -0,0 +1,19 @@ +package io.github.dunwu.javatech.zk.dlock; + +import java.util.concurrent.TimeUnit; + +/** + * 分布式锁接口 + * + * @author Zhang Peng + * @since 2020-01-14 + */ +public interface DistributedLock { + + void lock(); + + boolean tryLock(long timeout, TimeUnit unit); + + void unlock(); + +} diff --git a/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/TimeoutHandler.java b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/TimeoutHandler.java new file mode 100644 index 00000000..89205564 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/TimeoutHandler.java @@ -0,0 +1,11 @@ +package io.github.dunwu.javatech.zk.dlock; + +/** + * @author Zhang Peng + * @since 2020-01-14 + */ +public interface TimeoutHandler { + + V onTimeout() throws InterruptedException; + +} diff --git a/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/ZkDLockTemplate.java b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/ZkDLockTemplate.java new file mode 100644 index 00000000..ae18db85 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/ZkDLockTemplate.java @@ -0,0 +1,51 @@ +package io.github.dunwu.javatech.zk.dlock; + +import org.apache.curator.framework.CuratorFramework; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.concurrent.TimeUnit; + +/** + * Created by sunyujia@aliyun.com on 2016/2/26. + */ +public class ZkDLockTemplate implements DLockTemplate { + + private static final Logger log = LoggerFactory.getLogger(ZkDLockTemplate.class); + + private CuratorFramework client; + + public ZkDLockTemplate(CuratorFramework client) { + this.client = client; + } + + @Override + public V execute(String lockId, long timeout, Callback callback) { + ZookeeperReentrantDistributedLock distributedReentrantLock = null; + boolean getLock = false; + try { + distributedReentrantLock = new ZookeeperReentrantDistributedLock(client, lockId); + if (tryLock(distributedReentrantLock, timeout)) { + getLock = true; + return callback.onGetLock(); + } else { + return callback.onTimeout(); + } + } catch (InterruptedException ex) { + log.error(ex.getMessage(), ex); + Thread.currentThread().interrupt(); + } catch (Exception e) { + log.error(e.getMessage(), e); + } finally { + if (getLock) { + distributedReentrantLock.unlock(); + } + } + return null; + } + + private boolean tryLock(ZookeeperReentrantDistributedLock distributedReentrantLock, long timeout) { + return distributedReentrantLock.tryLock(timeout, TimeUnit.MILLISECONDS); + } + +} diff --git a/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/ZkReentrantLockCleanerTask.java b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/ZkReentrantLockCleanerTask.java new file mode 100644 index 00000000..17260096 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/ZkReentrantLockCleanerTask.java @@ -0,0 +1,83 @@ +package io.github.dunwu.javatech.zk.dlock; + +import org.apache.curator.RetryPolicy; +import org.apache.curator.framework.CuratorFramework; +import org.apache.curator.framework.CuratorFrameworkFactory; +import org.apache.curator.retry.ExponentialBackoffRetry; +import org.slf4j.LoggerFactory; + +import java.util.List; +import java.util.TimerTask; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; + +/** + * Created by sunyujia@aliyun.com on 2016/2/25. + */ +public class ZkReentrantLockCleanerTask extends TimerTask { + + private static final org.slf4j.Logger log = LoggerFactory.getLogger(ZkReentrantLockCleanerTask.class); + + private CuratorFramework client; + + private ScheduledExecutorService executorService = Executors.newScheduledThreadPool(3); + + /** + * 检查周期 + */ + private long period = 5000; + + /** + * Curator RetryPolicy maxRetries + */ + private int maxRetries = 3; + + /** + * Curator RetryPolicy baseSleepTimeMs + */ + private final int baseSleepTimeMs = 1000; + + public ZkReentrantLockCleanerTask(String zookeeperAddress) { + try { + RetryPolicy retryPolicy = new ExponentialBackoffRetry(baseSleepTimeMs, maxRetries); + client = CuratorFrameworkFactory.newClient(zookeeperAddress, retryPolicy); + client.start(); + } catch (Exception e) { + log.error(e.getMessage(), e); + } catch (Throwable ex) { + ex.printStackTrace(); + log.error(ex.getMessage(), ex); + } + } + + public void start() { + executorService.execute(this); + } + + private boolean isEmpty(List list) { + return list == null || list.isEmpty(); + } + + @Override + public void run() { + try { + List childrenPaths = this.client.getChildren().forPath(ZookeeperReentrantDistributedLock.ROOT_PATH); + for (String path : childrenPaths) { + cleanNode(path); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + private void cleanNode(String path) { + try { + if (isEmpty(this.client.getChildren().forPath(path))) { + this.client.delete().forPath(path);//利用存在子节点无法删除和zk的原子性这两个特性. + } + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/ZookeeperReentrantDistributedLock.java b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/ZookeeperReentrantDistributedLock.java new file mode 100644 index 00000000..e568e4c2 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/dlock/ZookeeperReentrantDistributedLock.java @@ -0,0 +1,112 @@ +package io.github.dunwu.javatech.zk.dlock; + +import cn.hutool.core.collection.CollectionUtil; +import org.apache.curator.framework.CuratorFramework; +import org.apache.curator.framework.recipes.locks.InterProcessMutex; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +/** + * 基于Zookeeper的可重入互斥锁(关于重入:仅限于持有zk锁的jvm内重入) Created by sunyujia@aliyun.com on 2016/2/24. + */ +public class ZookeeperReentrantDistributedLock implements DistributedLock { + + private static final Logger log = LoggerFactory.getLogger(ZookeeperReentrantDistributedLock.class); + + /** + * 线程池 + */ + private static final ScheduledExecutorService executorService = Executors.newScheduledThreadPool(3); + + /** + * 所有PERSISTENT锁节点的根位置 + */ + public static final String ROOT_PATH = "/distributed_lock/"; + + /** + * 每次延迟清理PERSISTENT节点的时间 Unit:MILLISECONDS + */ + private static final long DELAY_TIME_FOR_CLEAN = 1000; + + /** + * zk 共享锁实现 + */ + private InterProcessMutex interProcessMutex; + + /** + * 锁的ID,对应zk一个PERSISTENT节点,下挂EPHEMERAL节点. + */ + private String path; + + /** + * zk的客户端 + */ + private CuratorFramework client; + + public ZookeeperReentrantDistributedLock(CuratorFramework client, String lockId) { + this.client = client; + this.path = ROOT_PATH + lockId; + interProcessMutex = new InterProcessMutex(this.client, this.path); + } + + @Override + public void lock() { + try { + interProcessMutex.acquire(); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + } + + @Override + public boolean tryLock(long timeout, TimeUnit unit) { + try { + return interProcessMutex.acquire(timeout, unit); + } catch (Exception e) { + log.error(e.getMessage(), e); + return false; + } + } + + @Override + public void unlock() { + try { + interProcessMutex.release(); + } catch (Throwable e) { + log.error(e.getMessage(), e); + } finally { + executorService.schedule(new Cleaner(client, path), DELAY_TIME_FOR_CLEAN, TimeUnit.MILLISECONDS); + } + } + + static class Cleaner implements Runnable { + + private String path; + + private CuratorFramework client; + + public Cleaner(CuratorFramework client, String path) { + this.path = path; + this.client = client; + } + + @Override + public void run() { + try { + List list = client.getChildren().forPath(path); + if (CollectionUtil.isEmpty(list)) { + client.delete().forPath(path); + } + } catch (Exception e) { + log.error(e.getMessage(), e); + } + } + + } + +} diff --git a/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperConnection.java b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperConnection.java new file mode 100644 index 00000000..a82cb0ae --- /dev/null +++ b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperConnection.java @@ -0,0 +1,56 @@ +package io.github.dunwu.javatech.zk.example; + +import org.apache.zookeeper.WatchedEvent; +import org.apache.zookeeper.Watcher; +import org.apache.zookeeper.Watcher.Event.KeeperState; +import org.apache.zookeeper.ZooKeeper; +import org.apache.zookeeper.ZooKeeper.States; + +import java.io.IOException; +import java.util.concurrent.CountDownLatch; + +/** + * ZooKeeper 连接示例 + * + * @author Zhang Peng + * @since 2018-07-12 + */ +public class ZooKeeperConnection { + + private static final String HOST = "localhost"; + + final CountDownLatch connectedSignal = new CountDownLatch(1); + + // declare zookeeper instance to access ZooKeeper ensemble + private ZooKeeper zoo; + + public static void main(String[] args) throws IOException, InterruptedException { + ZooKeeperConnection zooKeeperConnection = new ZooKeeperConnection(); + ZooKeeper zk = zooKeeperConnection.connect(HOST); + States state = zk.getState(); + System.out.println("ZooKeeper isAlive:" + state.isAlive()); + zk.close(); + } + + // Method to connect zookeeper ensemble. + public ZooKeeper connect(String host) throws IOException, InterruptedException { + + zoo = new ZooKeeper(host, 5000, new Watcher() { + @Override + public void process(WatchedEvent we) { + if (we.getState() == KeeperState.SyncConnected) { + connectedSignal.countDown(); + } + } + }); + + connectedSignal.await(); + return zoo; + } + + // Method to disconnect from zookeeper server + public void close() throws InterruptedException { + zoo.close(); + } + +} diff --git a/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperCreate.java b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperCreate.java new file mode 100644 index 00000000..819c6ed8 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperCreate.java @@ -0,0 +1,50 @@ +package io.github.dunwu.javatech.zk.example; + +import org.apache.zookeeper.CreateMode; +import org.apache.zookeeper.KeeperException; +import org.apache.zookeeper.ZooDefs; +import org.apache.zookeeper.ZooKeeper; + +/** + * ZooKeeper 添加 Znode 示例 + * + * @author Zhang Peng + * @since 2018-07-12 + */ +public class ZooKeeperCreate { + + private static final String HOST = "localhost"; + + // create static instance for zookeeper class. + private static ZooKeeper zk; + + // create static instance for ZooKeeperConnection class. + private static ZooKeeperConnection conn; + + public static void main(String[] args) throws InterruptedException { + + // znode path + String path = "/MyFirstZnode"; // Assign path to znode + + // data in byte array + byte[] data = "My first zookeeper app".getBytes(); // Declare data + + try { + conn = new ZooKeeperConnection(); + zk = conn.connect(HOST); + create(path, data); // Create the data to the specified path + } catch (Exception e) { + System.out.println(e.getMessage()); // Catch error message + } finally { + if (conn != null) { + conn.close(); + } + } + } + + // Method to create znode in zookeeper ensemble + public static void create(String path, byte[] data) throws KeeperException, InterruptedException { + zk.create(path, data, ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); + } + +} diff --git a/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperDelete.java b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperDelete.java new file mode 100644 index 00000000..72630cb1 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperDelete.java @@ -0,0 +1,41 @@ +package io.github.dunwu.javatech.zk.example; + +import org.apache.zookeeper.KeeperException; +import org.apache.zookeeper.ZooKeeper; + +/** + * ZooKeeper 删除 Znode 示例 + * + * @author Zhang Peng + * @since 2018-07-12 + */ +public class ZooKeeperDelete { + + private static final String HOST = "localhost"; + + private static ZooKeeper zk; + + private static ZooKeeperConnection conn; + + public static void main(String[] args) throws InterruptedException, KeeperException { + String path = "/MyFirstZnode"; // Assign path to the znode + + try { + conn = new ZooKeeperConnection(); + zk = conn.connect(HOST); + delete(path); // delete the node with the specified path + } catch (Exception e) { + System.out.println(e.getMessage()); // catches error messages + } finally { + if (conn != null) { + conn.close(); + } + } + } + + // Method to check existence of znode and its status, if znode is available. + public static void delete(String path) throws KeeperException, InterruptedException { + zk.delete(path, zk.exists(path, true).getVersion()); + } + +} diff --git a/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperExists.java b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperExists.java new file mode 100644 index 00000000..846266ab --- /dev/null +++ b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperExists.java @@ -0,0 +1,44 @@ +package io.github.dunwu.javatech.zk.example; + +import org.apache.zookeeper.KeeperException; +import org.apache.zookeeper.ZooKeeper; +import org.apache.zookeeper.data.Stat; + +/** + * ZooKeeper 判断 Znode 是否存在示例 + * + * @author Zhang Peng + * @since 2018-07-12 + */ +public class ZooKeeperExists { + + private static final String HOST = "localhost"; + + private static ZooKeeper zk; + + private static ZooKeeperConnection conn; + + public static void main(String[] args) throws InterruptedException, KeeperException { + String path = "/MyFirstZnode"; // Assign znode to the specified path + + try { + conn = new ZooKeeperConnection(); + zk = conn.connect(HOST); + Stat stat = znodeExists(path); // Stat checks the path of the znode + + if (stat != null) { + System.out.println("Node exists and the node version is " + stat.getVersion()); + } else { + System.out.println("Node does not exists"); + } + } catch (Exception e) { + System.out.println(e.getMessage()); // Catches error messages + } + } + + // Method to check existence of znode and its status, if znode is available. + public static Stat znodeExists(String path) throws KeeperException, InterruptedException { + return zk.exists(path, true); + } + +} diff --git a/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperGetChildren.java b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperGetChildren.java new file mode 100644 index 00000000..34372a6e --- /dev/null +++ b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperGetChildren.java @@ -0,0 +1,55 @@ +package io.github.dunwu.javatech.zk.example; + +import org.apache.zookeeper.KeeperException; +import org.apache.zookeeper.ZooKeeper; +import org.apache.zookeeper.data.Stat; + +import java.util.List; + +/** + * ZooKeeper 获取 znode 的所有子节点示例 + * + * @author Zhang Peng + * @since 2018-07-12 + */ +public class ZooKeeperGetChildren { + + private static final String HOST = "localhost"; + + private static ZooKeeper zk; + + private static ZooKeeperConnection conn; + + public static void main(String[] args) throws InterruptedException, KeeperException { + String path = "/MyFirstZnode"; // Assign path to the znode + + try { + conn = new ZooKeeperConnection(); + zk = conn.connect(HOST); + Stat stat = znode_exists(path); // Stat checks the path + + if (stat != null) { + // getChildren method - get all the children of znode.It has two args, + // path and watch + List children = zk.getChildren(path, false); + for (int i = 0; i < children.size(); i++) { + System.out.println(children.get(i)); // Print children's + } + } else { + System.out.println("Node does not exists"); + } + } catch (Exception e) { + System.out.println(e.getMessage()); + } finally { + if (conn != null) { + conn.close(); + } + } + } + + // Method to check existence of znode and its status, if znode is available. + public static Stat znode_exists(String path) throws KeeperException, InterruptedException { + return zk.exists(path, true); + } + +} diff --git a/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperGetData.java b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperGetData.java new file mode 100644 index 00000000..d151b3b5 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperGetData.java @@ -0,0 +1,78 @@ +package io.github.dunwu.javatech.zk.example; + +import org.apache.zookeeper.KeeperException; +import org.apache.zookeeper.WatchedEvent; +import org.apache.zookeeper.Watcher; +import org.apache.zookeeper.ZooKeeper; +import org.apache.zookeeper.data.Stat; + +import java.util.concurrent.CountDownLatch; + +/** + * ZooKeeper 获取数据示例 + * + * @author Zhang Peng + * @since 2018-07-12 + */ +public class ZooKeeperGetData { + + private static final String HOST = "localhost"; + + private static ZooKeeper zk; + + private static ZooKeeperConnection conn; + + public static void main(String[] args) throws InterruptedException { + String path = "/MyFirstZnode"; + final CountDownLatch connectedSignal = new CountDownLatch(1); + + try { + conn = new ZooKeeperConnection(); + zk = conn.connect(HOST); + Stat stat = existsZnode(path); + + if (stat != null) { + byte[] b = zk.getData(path, new Watcher() { + public void process(WatchedEvent we) { + + if (we.getType() == Event.EventType.None) { + switch (we.getState()) { + case Expired: + connectedSignal.countDown(); + break; + } + } else { + String path = "/MyFirstZnode"; + + try { + byte[] bn = zk.getData(path, false, null); + String data = new String(bn, "UTF-8"); + System.out.println(data); + connectedSignal.countDown(); + } catch (Exception ex) { + System.out.println(ex.getMessage()); + } + } + } + }, null); + + String data = new String(b, "UTF-8"); + System.out.println(data); + connectedSignal.await(); + } else { + System.out.println("Node does not exists"); + } + } catch (Exception e) { + System.out.println(e.getMessage()); + } finally { + if (conn != null) { + conn.close(); + } + } + } + + public static Stat existsZnode(String path) throws KeeperException, InterruptedException { + return zk.exists(path, true); + } + +} diff --git a/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperSetData.java b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperSetData.java new file mode 100644 index 00000000..e4c3ac62 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/ZooKeeperSetData.java @@ -0,0 +1,42 @@ +package io.github.dunwu.javatech.zk.example; + +import org.apache.zookeeper.KeeperException; +import org.apache.zookeeper.ZooKeeper; + +/** + * ZooKeeper 设置数据示例 + * + * @author Zhang Peng + * @since 2018-07-12 + */ +public class ZooKeeperSetData { + + private static final String HOST = "localhost"; + + private static ZooKeeper zk; + + private static ZooKeeperConnection conn; + + public static void main(String[] args) throws InterruptedException { + String path = "/MyFirstZnode"; + byte[] data = "Success".getBytes(); // Assign data which is to be updated. + + try { + conn = new ZooKeeperConnection(); + zk = conn.connect(HOST); + update(path, data); // Update znode data to the specified path + } catch (Exception e) { + System.out.println(e.getMessage()); + } finally { + if (conn != null) { + conn.close(); + } + } + } + + // Method to update the data in a znode. Similar to getData but without watcher. + public static void update(String path, byte[] data) throws KeeperException, InterruptedException { + zk.setData(path, data, zk.exists(path, true).getVersion()); + } + +} diff --git a/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/package-info.java b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/package-info.java new file mode 100644 index 00000000..21f2ef05 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/example/package-info.java @@ -0,0 +1,7 @@ +/** + * ZooKeeper 最基本操作示例 + * + * @author Zhang Peng + * @since 2020-01-13 + */ +package io.github.dunwu.javatech.zk.example; diff --git a/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/sequence/DistributedSequence.java b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/sequence/DistributedSequence.java new file mode 100644 index 00000000..b7597338 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/sequence/DistributedSequence.java @@ -0,0 +1,9 @@ +package io.github.dunwu.javatech.zk.sequence; + +/** + * Created by sunyujia@aliyun.com on 2016/2/25. + */ +public interface DistributedSequence { + + public Long sequence(String sequenceName); +} diff --git a/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/sequence/ZkDistributedSequence.java b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/sequence/ZkDistributedSequence.java new file mode 100644 index 00000000..59cb174d --- /dev/null +++ b/codes/javatech/javatech-others/javatech-zookeeper/src/main/java/io/github/dunwu/javatech/zk/sequence/ZkDistributedSequence.java @@ -0,0 +1,64 @@ +package io.github.dunwu.javatech.zk.sequence; + +import io.github.dunwu.javatech.zk.dlock.ZkReentrantLockCleanerTask; +import org.apache.curator.RetryPolicy; +import org.apache.curator.framework.CuratorFramework; +import org.apache.curator.framework.CuratorFrameworkFactory; +import org.apache.curator.retry.ExponentialBackoffRetry; +import org.slf4j.LoggerFactory; + +/** + * Created by sunyujia@aliyun.com on 2016/2/25. + */ +public class ZkDistributedSequence implements DistributedSequence { + + private static final org.slf4j.Logger log = LoggerFactory.getLogger(ZkReentrantLockCleanerTask.class); + + private CuratorFramework client; + + /** + * Curator RetryPolicy maxRetries + */ + private int maxRetries = 3; + + /** + * Curator RetryPolicy baseSleepTimeMs + */ + private final int baseSleepTimeMs = 1000; + + public ZkDistributedSequence(String zookeeperAddress) { + try { + RetryPolicy retryPolicy = new ExponentialBackoffRetry(baseSleepTimeMs, maxRetries); + client = CuratorFrameworkFactory.newClient(zookeeperAddress, retryPolicy); + client.start(); + } catch (Exception e) { + log.error(e.getMessage(), e); + } catch (Throwable ex) { + ex.printStackTrace(); + log.error(ex.getMessage(), ex); + } + } + + public int getMaxRetries() { + return maxRetries; + } + + public void setMaxRetries(int maxRetries) { + this.maxRetries = maxRetries; + } + + public int getBaseSleepTimeMs() { + return baseSleepTimeMs; + } + + public Long sequence(String sequenceName) { + try { + int value = client.setData().withVersion(-1).forPath("/" + sequenceName, "".getBytes()).getVersion(); + return new Long(value); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + +} diff --git a/codes/javatech/javatech-others/javatech-zookeeper/src/test/java/io/github/dunwu/javatech/zk/dlock/ZkReentrantLockTemplateTest.java b/codes/javatech/javatech-others/javatech-zookeeper/src/test/java/io/github/dunwu/javatech/zk/dlock/ZkReentrantLockTemplateTest.java new file mode 100644 index 00000000..ba2bfb65 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-zookeeper/src/test/java/io/github/dunwu/javatech/zk/dlock/ZkReentrantLockTemplateTest.java @@ -0,0 +1,83 @@ +package io.github.dunwu.javatech.zk.dlock; + +import org.apache.curator.RetryPolicy; +import org.apache.curator.framework.CuratorFramework; +import org.apache.curator.framework.CuratorFrameworkFactory; +import org.apache.curator.retry.ExponentialBackoffRetry; +import org.junit.Test; + +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ThreadLocalRandom; + +/** + * Created by sunyujia@aliyun.com on 2016/2/24. + */ + +public class ZkReentrantLockTemplateTest { + + @Test + public void testTry() throws InterruptedException { + RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3); + CuratorFramework client = CuratorFrameworkFactory.newClient("127.0.0.1:2181", retryPolicy); + client.start(); + + final ZkDLockTemplate template = new ZkDLockTemplate(client); + int size = 100; + final CountDownLatch startCountDownLatch = new CountDownLatch(1); + final CountDownLatch endDownLatch = new CountDownLatch(size); + for (int i = 0; i < size; i++) { + new Thread(() -> { + try { + startCountDownLatch.await(); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + final int sleepTime = ThreadLocalRandom.current().nextInt(3) * 1000; + + template.execute("test", 3000, new Callback() { + @Override + public Object onGetLock() throws InterruptedException { + System.out.println(Thread.currentThread().getName() + " 获取锁"); + Thread.currentThread().sleep(sleepTime); + System.out.println(Thread.currentThread().getName() + ":sleeped:" + sleepTime); + endDownLatch.countDown(); + return null; + } + + @Override + public Object onTimeout() throws InterruptedException { + System.out.println(Thread.currentThread().getName() + " 获取锁"); + Thread.currentThread().sleep(sleepTime); + System.out.println(Thread.currentThread().getName() + ":sleeped:" + sleepTime); + endDownLatch.countDown(); + return null; + } + }); + }).start(); + } + startCountDownLatch.countDown(); + endDownLatch.await(); + } + + public static void main(String[] args) { + RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3); + CuratorFramework client = CuratorFrameworkFactory.newClient("127.0.0.1:2181", retryPolicy); + client.start(); + + final ZkDLockTemplate template = new ZkDLockTemplate(client);//本类多线程安全,可通过spring注入 + template.execute("订单流水号", 5000, new Callback() { + @Override + public Object onGetLock() throws InterruptedException { + //TODO 获得锁后要做的事 + return null; + } + + @Override + public Object onTimeout() throws InterruptedException { + //TODO 获得锁超时后要做的事 + return null; + } + }); + } + +} diff --git a/codes/javatech/javatech-others/javatech-zookeeper/src/test/resources/logback.xml b/codes/javatech/javatech-others/javatech-zookeeper/src/test/resources/logback.xml new file mode 100644 index 00000000..e94627b4 --- /dev/null +++ b/codes/javatech/javatech-others/javatech-zookeeper/src/test/resources/logback.xml @@ -0,0 +1,62 @@ + + + + + + + + ${LOG_MSG} + + + + + DEBUG + + ${USER_HOME}/debug.log + + ${LOG_DIR}/debug%i.log + + 20MB + + + + ${LOG_MSG} + + + + ${USER_HOME}/info.log + + INFO + + + ${LOG_DIR}/info%i.log + + 20MB + + + + ${LOG_MSG} + + + + ${USER_HOME}/error.log + + ERROR + + + ${LOG_DIR}/error%i.log + + 20MB + + + + ${LOG_MSG} + + + + + + + + + diff --git a/codes/javatech/javatech-others/pom.xml b/codes/javatech/javatech-others/pom.xml new file mode 100644 index 00000000..d5cb439f --- /dev/null +++ b/codes/javatech/javatech-others/pom.xml @@ -0,0 +1,18 @@ + + + 4.0.0 + + io.github.dunwu.javatech + javatech-others + 1.0.0 + pom + Java 其他 + + + javatech-cli + javatech-ruleengine + javatech-zookeeper + + diff --git a/codes/javatech/javatech-server/README.md b/codes/javatech/javatech-server/README.md new file mode 100644 index 00000000..3f574661 --- /dev/null +++ b/codes/javatech/javatech-server/README.md @@ -0,0 +1,50 @@ +# javatool-server + +> 本示例代码主要展示嵌入式服务器和 web 项目的集成。 +> +> 你可以在本项目中体验嵌入式 Tomcat 和嵌入式 Jetty 的启动方式。 +> + +**版本** + +* JDK:1.8 +* Tomcat:8.5.24 + +## Tomcat + +### Windows 启动 + +执行 `io.github.dunwu.javatech.server.SimpleTomcatServer#main` 方法。 + +或执行 `io.github.dunwu.javatech.server.TomcatServer.main` 方法。 + +启动后,访问 http://localhost:8080/javatool-server/ + +### 插件启动嵌入式 Tomcat + +由于插件很久没有更新(最新版本发布时间:2013-11-11),目前只能找到 Tomcat6 、Tomcat7 插件,所以弃用。 + +### 脚本启动 + +> 本项目添加了脚本启动范例。 +> +> 脚本代码全在 [`scripts`](https://github.com/dunwu/JavaStack/tree/master/scripts) 目录下。 + +* 初始化 + +```bash +wget https://raw.githubusercontent.com/dunwu/JavaStack/master/scripts/init.sh +chmod 777 init.sh +./init.sh +``` + +* 发布 + +``` +cd /home/zp/source/JavaStack/scripts +./javatool-server-release.sh master develop +``` + +## Jetty + +待添加。。。 diff --git a/codes/javatech/javatech-server/pom.xml b/codes/javatech/javatech-server/pom.xml new file mode 100644 index 00000000..576eab62 --- /dev/null +++ b/codes/javatech/javatech-server/pom.xml @@ -0,0 +1,81 @@ + + + 4.0.0 + + + io.github.dunwu + dunwu-parent + 1.0.7 + + + io.github.dunwu.javatech + javatech-server + 1.0.0 + war + Java 服务器 + + + [8.5.40,) + + + + + + ch.qos.logback + logback-classic + + + org.logback-extensions + logback-ext-spring + 0.1.2 + + + org.slf4j + jcl-over-slf4j + + + + + + javax.servlet + javax.servlet-api + provided + + + javax.servlet.jsp + jsp-api + 2.2 + provided + + + + + + org.apache.tomcat.embed + tomcat-embed-core + + + org.apache.tomcat.embed + tomcat-embed-el + + + org.apache.tomcat.embed + tomcat-embed-jasper + + + + + + org.springframework + spring-context-support + + + org.springframework + spring-webmvc + + + + + diff --git a/codes/javatech/javatech-server/src/main/java/io/github/dunwu/javatech/controller/HelloController.java b/codes/javatech/javatech-server/src/main/java/io/github/dunwu/javatech/controller/HelloController.java new file mode 100644 index 00000000..9588d2b0 --- /dev/null +++ b/codes/javatech/javatech-server/src/main/java/io/github/dunwu/javatech/controller/HelloController.java @@ -0,0 +1,56 @@ +package io.github.dunwu.javatech.controller; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; + +/** + * spring mvc 的第一个程序 + * + * @author Zhang Peng + * @since 2016.07.29 + */ +@Controller +@RequestMapping(value = "/hello") +public class HelloController { + + private final Logger log = LoggerFactory.getLogger(this.getClass()); + + /** + *

+ * 在本例中,Spring将会将数据传给 hello.jsp + *

+ * 访问形式:http://localhost:8080/hello?name=张三 + */ + @RequestMapping(value = "/name", method = RequestMethod.GET) + public ModelAndView hello(@RequestParam("name") String name) { + ModelAndView mav = new ModelAndView(); + mav.addObject("message", "你好," + name); + mav.setViewName("hello"); + return mav; + } + + /** + *

+ * 测试 logback 分级日志。配置项见src/main/resouces/logback.xml + *

+ * 访问形式:http://localhost:8080/log + */ + @ResponseBody + @RequestMapping(value = "/log", method = RequestMethod.GET) + public String log() { + String msg = "print log, current level: {}"; + log.trace(msg, "trace"); + log.debug(msg, "debug"); + log.info(msg, "info"); + log.warn(msg, "warn"); + log.error(msg, "error"); + return msg; + } + +} diff --git a/codes/javatech/javatech-server/src/main/java/io/github/dunwu/javatech/controller/IndexController.java b/codes/javatech/javatech-server/src/main/java/io/github/dunwu/javatech/controller/IndexController.java new file mode 100644 index 00000000..65549bb7 --- /dev/null +++ b/codes/javatech/javatech-server/src/main/java/io/github/dunwu/javatech/controller/IndexController.java @@ -0,0 +1,31 @@ +/** + * The Apache License 2.0 Copyright (c) 2016 Zhang Peng + */ +package io.github.dunwu.javatech.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.servlet.ModelAndView; + +/** + * @author Zhang Peng + * @since 2017/4/12. + */ +@Controller +public class IndexController { + + /** + *

+ * 返回 ModelAndView 对象到视图层。在本例中,视图解析器解析视图名为 index,会自动关联到 index.jsp。 + *

+ * 访问形式:http://localhost:8080/ + */ + @RequestMapping(value = "/", method = RequestMethod.GET) + public ModelAndView index() { + ModelAndView mav = new ModelAndView(); + mav.setViewName("index"); + return mav; + } + +} diff --git a/codes/javatech/javatech-server/src/main/java/io/github/dunwu/javatech/server/SimpleTomcatServer.java b/codes/javatech/javatech-server/src/main/java/io/github/dunwu/javatech/server/SimpleTomcatServer.java new file mode 100644 index 00000000..5741fc81 --- /dev/null +++ b/codes/javatech/javatech-server/src/main/java/io/github/dunwu/javatech/server/SimpleTomcatServer.java @@ -0,0 +1,41 @@ +package io.github.dunwu.javatech.server; + +import org.apache.catalina.startup.Tomcat; + +import java.util.Optional; + +/** + * 简单的嵌入式 Tomcat 启动类 启动后可访问 http://localhost:8080/javatool-server/ + * + * @author Zhang Peng + */ +public class SimpleTomcatServer { + + private static final int PORT = 8080; + + private static final String CONTEXT_PATH = "/javatool-server"; + + public static void main(String[] args) throws Exception { + // 设定 profile + Optional profile = Optional.ofNullable(System.getProperty("spring.profiles.active")); + System.setProperty("spring.profiles.active", profile.orElse("develop")); + + Tomcat tomcat = new Tomcat(); + tomcat.setPort(PORT); + tomcat.getHost().setAppBase("."); + tomcat.addWebapp(CONTEXT_PATH, getAbsolutePath() + "src/main/webapp"); + tomcat.start(); + tomcat.getServer().await(); + } + + private static String getAbsolutePath() { + String path = null; + String folderPath = SimpleTomcatServer.class.getProtectionDomain().getCodeSource().getLocation().getPath() + .substring(1); + if (folderPath.indexOf("target") > 0) { + path = folderPath.substring(0, folderPath.indexOf("target")); + } + return path; + } + +} diff --git a/codes/javatech/javatech-server/src/main/java/io/github/dunwu/javatech/server/TomcatServer.java b/codes/javatech/javatech-server/src/main/java/io/github/dunwu/javatech/server/TomcatServer.java new file mode 100644 index 00000000..a18bb192 --- /dev/null +++ b/codes/javatech/javatech-server/src/main/java/io/github/dunwu/javatech/server/TomcatServer.java @@ -0,0 +1,135 @@ +package io.github.dunwu.javatech.server; + +import org.apache.catalina.Server; +import org.apache.catalina.startup.Catalina; +import org.apache.catalina.startup.Tomcat; +import org.apache.tomcat.util.digester.Digester; +import org.apache.tomcat.util.scan.Constants; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.util.StringUtils; + +import java.io.File; + +public class TomcatServer { + + private static final Logger log = LoggerFactory.getLogger(TomcatServer.class); + + private static final String CONNECTOR_PORT = "8080"; + + private static final String RELATIVE_DEV_DUBBO_RESOVE_FILE = + "src/main/resources/properties/dubbo-resolve.properties"; + + private static final String RELATIVE_DUBBO_RESOVE_FILE = "WEB-INF/classes/properties/dubbo-resolve.properties"; + + // 以下设置轻易不要改动 + private static final String RELATIVE_DEV_BASE_DIR = "src/main/resources/tomcat/"; + + private static final String RELATIVE_BASE_DIR = "WEB-INF/classes/tomcat/"; + + private static final String RELATIVE_DEV_DOCBASE_DIR = "src/main/webapp"; + + private static final String RELATIVE_DOCBASE_DIR = "./"; + + public static void main(String[] args) throws Exception { + // 设定Spring的profile + if (StringUtils.isEmpty(System.getProperty("spring.profiles.active"))) { + System.setProperty("spring.profiles.active", "develop"); + } + + System.setProperty("tomcat.host.appBase", getAbsolutePath()); + File checkFile = new File(System.getProperty("tomcat.host.appBase") + "/WEB-INF"); + if (!checkFile.exists()) { + System.setProperty("catalina.base", getAbsolutePath() + RELATIVE_DEV_BASE_DIR); + System.setProperty("tomcat.context.docBase", RELATIVE_DEV_DOCBASE_DIR); + System.setProperty("dubbo.resolve.file", getAbsolutePath() + RELATIVE_DEV_DUBBO_RESOVE_FILE); + } else { + System.setProperty("catalina.base", getAbsolutePath() + RELATIVE_BASE_DIR); + System.setProperty("tomcat.context.docBase", RELATIVE_DOCBASE_DIR); + if ("develop".equalsIgnoreCase(System.getProperty("spring.profiles.active")) + || "test".equalsIgnoreCase("spring.profiles.active")) { + System.setProperty("dubbo.resolve.file", getAbsolutePath() + RELATIVE_DUBBO_RESOVE_FILE); + } + } + + if (StringUtils.isEmpty(System.getProperty("tomcat.connector.port"))) { + System.setProperty("tomcat.connector.port", CONNECTOR_PORT); + } + if (StringUtils.isEmpty(System.getProperty("tomcat.server.shutdownPort"))) { + System.setProperty("tomcat.server.shutdownPort", + String.valueOf(Integer.valueOf(System.getProperty("tomcat.connector.port")) + 10000)); + } + + log.info("====================ENV setting===================="); + log.info("spring.profiles.active:" + System.getProperty("spring.profiles.active")); + log.info("dubbo.resolve.file:" + System.getProperty("dubbo.resolve.file")); + log.info("catalina.base:" + System.getProperty("catalina.base")); + log.info("tomcat.host.appBase:" + System.getProperty("tomcat.host.appBase")); + log.info("tomcat.context.docBase:" + System.getProperty("tomcat.context.docBase")); + log.info("tomcat.connector.port:" + System.getProperty("tomcat.connector.port")); + log.info("tomcat.server.shutdownPort:" + System.getProperty("tomcat.server.shutdownPort")); + + ExtendedTomcat tomcat = new ExtendedTomcat(); + tomcat.start(); + tomcat.getServer().await(); + } + + private static String getAbsolutePath() { + String path = null; + String folderPath = TomcatServer.class.getProtectionDomain().getCodeSource().getLocation().getPath(); + if (folderPath.indexOf("WEB-INF") > 0) { + path = folderPath.substring(0, folderPath.indexOf("WEB-INF")); + } else if (folderPath.indexOf("target") > 0) { + path = folderPath.substring(0, folderPath.indexOf("target")); + } + return path; + } + + static class ExtendedTomcat extends Tomcat { + + private static final String RELATIVE_SERVERXML_PATH = "/conf/server.xml"; + + private Logger log = LoggerFactory.getLogger(this.getClass()); + + @Override + public Server getServer() { + if (server != null) { + return server; + } + // 默认不开启JNDI. 开启时, 注意maven必须添加tomcat-dbcp依赖 + System.setProperty("catalina.useNaming", "false"); + ExtendedCatalina extendedCatalina = new ExtendedCatalina(); + + // 覆盖默认的skip和scan jar包配置 + System.setProperty(Constants.SKIP_JARS_PROPERTY, ""); + System.setProperty(Constants.SCAN_JARS_PROPERTY, ""); + + Digester digester = extendedCatalina.createStartDigester(); + digester.push(extendedCatalina); + try { + server = ((ExtendedCatalina) digester + .parse(new File(System.getProperty("catalina.base") + RELATIVE_SERVERXML_PATH))).getServer(); + // 设置catalina.base和catalna.home + this.initBaseDir(); + return server; + } catch (Exception e) { + log.error("Error while parsing server.xml", e); + throw new RuntimeException("server未创建,请检查server.xml(路径:" + System.getProperty("catalina.base") + + RELATIVE_SERVERXML_PATH + ")配置是否正确"); + } + } + + private static class ExtendedCatalina extends Catalina { + + @Override + public Digester createStartDigester() { + return super.createStartDigester(); + } + + } + + } + +} + + diff --git a/codes/javatech/javatech-server/src/main/resources/logback.xml b/codes/javatech/javatech-server/src/main/resources/logback.xml new file mode 100644 index 00000000..9884e7be --- /dev/null +++ b/codes/javatech/javatech-server/src/main/resources/logback.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + %d{HH:mm:ss.SSS} [%thread] [%-5p] %c{36}.%M - %m%n + + + + + + + + ${user.dir}/logs/${FILE_NAME}-all.%d{yyyy-MM-dd}.log + 30 + + + + + 30MB + + + + %d{HH:mm:ss.SSS} [%thread] [%-5p] %c{36}.%M - %m%n + + + + + + + + + + + + + + + + + + diff --git a/codes/javatech/javatech-server/src/main/resources/properties/application-develop.properties b/codes/javatech/javatech-server/src/main/resources/properties/application-develop.properties new file mode 100644 index 00000000..25f09a35 --- /dev/null +++ b/codes/javatech/javatech-server/src/main/resources/properties/application-develop.properties @@ -0,0 +1,11 @@ +# jdbc +jdbc.driver = +jdbc.url = +jdbc.username = +jdbc.password = +# redis +redis.name = +redis.host = +redis.port = +redis.password = +redis.database = diff --git a/codes/javatech/javatech-server/src/main/resources/properties/application-test.properties b/codes/javatech/javatech-server/src/main/resources/properties/application-test.properties new file mode 100644 index 00000000..25f09a35 --- /dev/null +++ b/codes/javatech/javatech-server/src/main/resources/properties/application-test.properties @@ -0,0 +1,11 @@ +# jdbc +jdbc.driver = +jdbc.url = +jdbc.username = +jdbc.password = +# redis +redis.name = +redis.host = +redis.port = +redis.password = +redis.database = diff --git a/codes/javatech/javatech-server/src/main/resources/spring/spring-servlet.xml b/codes/javatech/javatech-server/src/main/resources/spring/spring-servlet.xml new file mode 100644 index 00000000..6c05fe85 --- /dev/null +++ b/codes/javatech/javatech-server/src/main/resources/spring/spring-servlet.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + diff --git a/codes/javatech/javatech-server/src/main/resources/tomcat/conf/server.xml b/codes/javatech/javatech-server/src/main/resources/tomcat/conf/server.xml new file mode 100644 index 00000000..77316698 --- /dev/null +++ b/codes/javatech/javatech-server/src/main/resources/tomcat/conf/server.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/codes/javatech/javatech-server/src/main/resources/tomcat/conf/web.xml b/codes/javatech/javatech-server/src/main/resources/tomcat/conf/web.xml new file mode 100644 index 00000000..7dc916a5 --- /dev/null +++ b/codes/javatech/javatech-server/src/main/resources/tomcat/conf/web.xml @@ -0,0 +1,4703 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + org.apache.catalina.servlets.DefaultServlet + + debug + 0 + + + listings + false + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jsp + org.apache.jasper.servlet.JspServlet + + fork + false + + + xpoweredBy + false + + + keepgenerated + false + + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + / + + + + + jsp + *.jsp + *.jspx + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 30 + + + + + + + + + + + + + 123 + application/vnd.lotus-1-2-3 + + + 3dml + text/vnd.in3d.3dml + + + 3ds + image/x-3ds + + + 3g2 + video/3gpp2 + + + 3gp + video/3gpp + + + 7z + application/x-7z-compressed + + + aab + application/x-authorware-bin + + + aac + audio/x-aac + + + aam + application/x-authorware-map + + + aas + application/x-authorware-seg + + + abs + audio/x-mpeg + + + abw + application/x-abiword + + + ac + application/pkix-attr-cert + + + acc + application/vnd.americandynamics.acc + + + ace + application/x-ace-compressed + + + acu + application/vnd.acucobol + + + acutc + application/vnd.acucorp + + + adp + audio/adpcm + + + aep + application/vnd.audiograph + + + afm + application/x-font-type1 + + + afp + application/vnd.ibm.modcap + + + ahead + application/vnd.ahead.space + + + ai + application/postscript + + + aif + audio/x-aiff + + + aifc + audio/x-aiff + + + aiff + audio/x-aiff + + + aim + application/x-aim + + + air + application/vnd.adobe.air-application-installer-package+zip + + + ait + application/vnd.dvb.ait + + + ami + application/vnd.amiga.ami + + + anx + application/annodex + + + apk + application/vnd.android.package-archive + + + appcache + text/cache-manifest + + + application + application/x-ms-application + + + apr + application/vnd.lotus-approach + + + arc + application/x-freearc + + + art + image/x-jg + + + asc + application/pgp-signature + + + asf + video/x-ms-asf + + + asm + text/x-asm + + + aso + application/vnd.accpac.simply.aso + + + asx + video/x-ms-asf + + + atc + application/vnd.acucorp + + + atom + application/atom+xml + + + atomcat + application/atomcat+xml + + + atomsvc + application/atomsvc+xml + + + atx + application/vnd.antix.game-component + + + au + audio/basic + + + avi + video/x-msvideo + + + avx + video/x-rad-screenplay + + + aw + application/applixware + + + axa + audio/annodex + + + axv + video/annodex + + + azf + application/vnd.airzip.filesecure.azf + + + azs + application/vnd.airzip.filesecure.azs + + + azw + application/vnd.amazon.ebook + + + bat + application/x-msdownload + + + bcpio + application/x-bcpio + + + bdf + application/x-font-bdf + + + bdm + application/vnd.syncml.dm+wbxml + + + bed + application/vnd.realvnc.bed + + + bh2 + application/vnd.fujitsu.oasysprs + + + bin + application/octet-stream + + + blb + application/x-blorb + + + blorb + application/x-blorb + + + bmi + application/vnd.bmi + + + bmp + image/bmp + + + body + text/html + + + book + application/vnd.framemaker + + + box + application/vnd.previewsystems.box + + + boz + application/x-bzip2 + + + bpk + application/octet-stream + + + btif + image/prs.btif + + + bz + application/x-bzip + + + bz2 + application/x-bzip2 + + + c + text/x-c + + + c11amc + application/vnd.cluetrust.cartomobile-config + + + c11amz + application/vnd.cluetrust.cartomobile-config-pkg + + + c4d + application/vnd.clonk.c4group + + + c4f + application/vnd.clonk.c4group + + + c4g + application/vnd.clonk.c4group + + + c4p + application/vnd.clonk.c4group + + + c4u + application/vnd.clonk.c4group + + + cab + application/vnd.ms-cab-compressed + + + caf + audio/x-caf + + + cap + application/vnd.tcpdump.pcap + + + car + application/vnd.curl.car + + + cat + application/vnd.ms-pki.seccat + + + cb7 + application/x-cbr + + + cba + application/x-cbr + + + cbr + application/x-cbr + + + cbt + application/x-cbr + + + cbz + application/x-cbr + + + cc + text/x-c + + + cct + application/x-director + + + ccxml + application/ccxml+xml + + + cdbcmsg + application/vnd.contact.cmsg + + + cdf + application/x-cdf + + + cdkey + application/vnd.mediastation.cdkey + + + cdmia + application/cdmi-capability + + + cdmic + application/cdmi-container + + + cdmid + application/cdmi-domain + + + cdmio + application/cdmi-object + + + cdmiq + application/cdmi-queue + + + cdx + chemical/x-cdx + + + cdxml + application/vnd.chemdraw+xml + + + cdy + application/vnd.cinderella + + + cer + application/pkix-cert + + + cfs + application/x-cfs-compressed + + + cgm + image/cgm + + + chat + application/x-chat + + + chm + application/vnd.ms-htmlhelp + + + chrt + application/vnd.kde.kchart + + + cif + chemical/x-cif + + + cii + application/vnd.anser-web-certificate-issue-initiation + + + cil + application/vnd.ms-artgalry + + + cla + application/vnd.claymore + + + class + application/java + + + clkk + application/vnd.crick.clicker.keyboard + + + clkp + application/vnd.crick.clicker.palette + + + clkt + application/vnd.crick.clicker.template + + + clkw + application/vnd.crick.clicker.wordbank + + + clkx + application/vnd.crick.clicker + + + clp + application/x-msclip + + + cmc + application/vnd.cosmocaller + + + cmdf + chemical/x-cmdf + + + cml + chemical/x-cml + + + cmp + application/vnd.yellowriver-custom-menu + + + cmx + image/x-cmx + + + cod + application/vnd.rim.cod + + + com + application/x-msdownload + + + conf + text/plain + + + cpio + application/x-cpio + + + cpp + text/x-c + + + cpt + application/mac-compactpro + + + crd + application/x-mscardfile + + + crl + application/pkix-crl + + + crt + application/x-x509-ca-cert + + + cryptonote + application/vnd.rig.cryptonote + + + csh + application/x-csh + + + csml + chemical/x-csml + + + csp + application/vnd.commonspace + + + css + text/css + + + cst + application/x-director + + + csv + text/csv + + + cu + application/cu-seeme + + + curl + text/vnd.curl + + + cww + application/prs.cww + + + cxt + application/x-director + + + cxx + text/x-c + + + dae + model/vnd.collada+xml + + + daf + application/vnd.mobius.daf + + + dart + application/vnd.dart + + + dataless + application/vnd.fdsn.seed + + + davmount + application/davmount+xml + + + dbk + application/docbook+xml + + + dcr + application/x-director + + + dcurl + text/vnd.curl.dcurl + + + dd2 + application/vnd.oma.dd2+xml + + + ddd + application/vnd.fujixerox.ddd + + + deb + application/x-debian-package + + + def + text/plain + + + deploy + application/octet-stream + + + der + application/x-x509-ca-cert + + + dfac + application/vnd.dreamfactory + + + dgc + application/x-dgc-compressed + + + dib + image/bmp + + + dic + text/x-c + + + dir + application/x-director + + + dis + application/vnd.mobius.dis + + + dist + application/octet-stream + + + distz + application/octet-stream + + + djv + image/vnd.djvu + + + djvu + image/vnd.djvu + + + dll + application/x-msdownload + + + dmg + application/x-apple-diskimage + + + dmp + application/vnd.tcpdump.pcap + + + dms + application/octet-stream + + + dna + application/vnd.dna + + + doc + application/msword + + + docm + application/vnd.ms-word.document.macroenabled.12 + + + docx + application/vnd.openxmlformats-officedocument.wordprocessingml.document + + + dot + application/msword + + + dotm + application/vnd.ms-word.template.macroenabled.12 + + + dotx + application/vnd.openxmlformats-officedocument.wordprocessingml.template + + + dp + application/vnd.osgi.dp + + + dpg + application/vnd.dpgraph + + + dra + audio/vnd.dra + + + dsc + text/prs.lines.tag + + + dssc + application/dssc+der + + + dtb + application/x-dtbook+xml + + + dtd + application/xml-dtd + + + dts + audio/vnd.dts + + + dtshd + audio/vnd.dts.hd + + + dump + application/octet-stream + + + dv + video/x-dv + + + dvb + video/vnd.dvb.file + + + dvi + application/x-dvi + + + dwf + model/vnd.dwf + + + dwg + image/vnd.dwg + + + dxf + image/vnd.dxf + + + dxp + application/vnd.spotfire.dxp + + + dxr + application/x-director + + + ecelp4800 + audio/vnd.nuera.ecelp4800 + + + ecelp7470 + audio/vnd.nuera.ecelp7470 + + + ecelp9600 + audio/vnd.nuera.ecelp9600 + + + ecma + application/ecmascript + + + edm + application/vnd.novadigm.edm + + + edx + application/vnd.novadigm.edx + + + efif + application/vnd.picsel + + + ei6 + application/vnd.pg.osasli + + + elc + application/octet-stream + + + emf + application/x-msmetafile + + + eml + message/rfc822 + + + emma + application/emma+xml + + + emz + application/x-msmetafile + + + eol + audio/vnd.digital-winds + + + eot + application/vnd.ms-fontobject + + + eps + application/postscript + + + epub + application/epub+zip + + + es3 + application/vnd.eszigno3+xml + + + esa + application/vnd.osgi.subsystem + + + esf + application/vnd.epson.esf + + + et3 + application/vnd.eszigno3+xml + + + etx + text/x-setext + + + eva + application/x-eva + + + evy + application/x-envoy + + + exe + application/octet-stream + + + exi + application/exi + + + ext + application/vnd.novadigm.ext + + + ez + application/andrew-inset + + + ez2 + application/vnd.ezpix-album + + + ez3 + application/vnd.ezpix-package + + + f + text/x-fortran + + + f4v + video/x-f4v + + + f77 + text/x-fortran + + + f90 + text/x-fortran + + + fbs + image/vnd.fastbidsheet + + + fcdt + application/vnd.adobe.formscentral.fcdt + + + fcs + application/vnd.isac.fcs + + + fdf + application/vnd.fdf + + + fe_launch + application/vnd.denovo.fcselayout-link + + + fg5 + application/vnd.fujitsu.oasysgp + + + fgd + application/x-director + + + fh + image/x-freehand + + + fh4 + image/x-freehand + + + fh5 + image/x-freehand + + + fh7 + image/x-freehand + + + fhc + image/x-freehand + + + fig + application/x-xfig + + + flac + audio/flac + + + fli + video/x-fli + + + flo + application/vnd.micrografx.flo + + + flv + video/x-flv + + + flw + application/vnd.kde.kivio + + + flx + text/vnd.fmi.flexstor + + + fly + text/vnd.fly + + + fm + application/vnd.framemaker + + + fnc + application/vnd.frogans.fnc + + + for + text/x-fortran + + + fpx + image/vnd.fpx + + + frame + application/vnd.framemaker + + + fsc + application/vnd.fsc.weblaunch + + + fst + image/vnd.fst + + + ftc + application/vnd.fluxtime.clip + + + fti + application/vnd.anser-web-funds-transfer-initiation + + + fvt + video/vnd.fvt + + + fxp + application/vnd.adobe.fxp + + + fxpl + application/vnd.adobe.fxp + + + fzs + application/vnd.fuzzysheet + + + g2w + application/vnd.geoplan + + + g3 + image/g3fax + + + g3w + application/vnd.geospace + + + gac + application/vnd.groove-account + + + gam + application/x-tads + + + gbr + application/rpki-ghostbusters + + + gca + application/x-gca-compressed + + + gdl + model/vnd.gdl + + + geo + application/vnd.dynageo + + + gex + application/vnd.geometry-explorer + + + ggb + application/vnd.geogebra.file + + + ggt + application/vnd.geogebra.tool + + + ghf + application/vnd.groove-help + + + gif + image/gif + + + gim + application/vnd.groove-identity-message + + + gml + application/gml+xml + + + gmx + application/vnd.gmx + + + gnumeric + application/x-gnumeric + + + gph + application/vnd.flographit + + + gpx + application/gpx+xml + + + gqf + application/vnd.grafeq + + + gqs + application/vnd.grafeq + + + gram + application/srgs + + + gramps + application/x-gramps-xml + + + gre + application/vnd.geometry-explorer + + + grv + application/vnd.groove-injector + + + grxml + application/srgs+xml + + + gsf + application/x-font-ghostscript + + + gtar + application/x-gtar + + + gtm + application/vnd.groove-tool-message + + + gtw + model/vnd.gtw + + + gv + text/vnd.graphviz + + + gxf + application/gxf + + + gxt + application/vnd.geonext + + + gz + application/x-gzip + + + h + text/x-c + + + h261 + video/h261 + + + h263 + video/h263 + + + h264 + video/h264 + + + hal + application/vnd.hal+xml + + + hbci + application/vnd.hbci + + + hdf + application/x-hdf + + + hh + text/x-c + + + hlp + application/winhlp + + + hpgl + application/vnd.hp-hpgl + + + hpid + application/vnd.hp-hpid + + + hps + application/vnd.hp-hps + + + hqx + application/mac-binhex40 + + + htc + text/x-component + + + htke + application/vnd.kenameaapp + + + htm + text/html + + + html + text/html + + + hvd + application/vnd.yamaha.hv-dic + + + hvp + application/vnd.yamaha.hv-voice + + + hvs + application/vnd.yamaha.hv-script + + + i2g + application/vnd.intergeo + + + icc + application/vnd.iccprofile + + + ice + x-conference/x-cooltalk + + + icm + application/vnd.iccprofile + + + ico + image/x-icon + + + ics + text/calendar + + + ief + image/ief + + + ifb + text/calendar + + + ifm + application/vnd.shana.informed.formdata + + + iges + model/iges + + + igl + application/vnd.igloader + + + igm + application/vnd.insors.igm + + + igs + model/iges + + + igx + application/vnd.micrografx.igx + + + iif + application/vnd.shana.informed.interchange + + + imp + application/vnd.accpac.simply.imp + + + ims + application/vnd.ms-ims + + + in + text/plain + + + ink + application/inkml+xml + + + inkml + application/inkml+xml + + + install + application/x-install-instructions + + + iota + application/vnd.astraea-software.iota + + + ipfix + application/ipfix + + + ipk + application/vnd.shana.informed.package + + + irm + application/vnd.ibm.rights-management + + + irp + application/vnd.irepository.package+xml + + + iso + application/x-iso9660-image + + + itp + application/vnd.shana.informed.formtemplate + + + ivp + application/vnd.immervision-ivp + + + ivu + application/vnd.immervision-ivu + + + jad + text/vnd.sun.j2me.app-descriptor + + + jam + application/vnd.jam + + + jar + application/java-archive + + + java + text/x-java-source + + + jisp + application/vnd.jisp + + + jlt + application/vnd.hp-jlyt + + + jnlp + application/x-java-jnlp-file + + + joda + application/vnd.joost.joda-archive + + + jpe + image/jpeg + + + jpeg + image/jpeg + + + jpg + image/jpeg + + + jpgm + video/jpm + + + jpgv + video/jpeg + + + jpm + video/jpm + + + js + application/javascript + + + jsf + text/plain + + + json + application/json + + + jsonml + application/jsonml+json + + + jspf + text/plain + + + kar + audio/midi + + + karbon + application/vnd.kde.karbon + + + kfo + application/vnd.kde.kformula + + + kia + application/vnd.kidspiration + + + kml + application/vnd.google-earth.kml+xml + + + kmz + application/vnd.google-earth.kmz + + + kne + application/vnd.kinar + + + knp + application/vnd.kinar + + + kon + application/vnd.kde.kontour + + + kpr + application/vnd.kde.kpresenter + + + kpt + application/vnd.kde.kpresenter + + + kpxx + application/vnd.ds-keypoint + + + ksp + application/vnd.kde.kspread + + + ktr + application/vnd.kahootz + + + ktx + image/ktx + + + ktz + application/vnd.kahootz + + + kwd + application/vnd.kde.kword + + + kwt + application/vnd.kde.kword + + + lasxml + application/vnd.las.las+xml + + + latex + application/x-latex + + + lbd + application/vnd.llamagraphics.life-balance.desktop + + + lbe + application/vnd.llamagraphics.life-balance.exchange+xml + + + les + application/vnd.hhe.lesson-player + + + lha + application/x-lzh-compressed + + + link66 + application/vnd.route66.link66+xml + + + list + text/plain + + + list3820 + application/vnd.ibm.modcap + + + listafp + application/vnd.ibm.modcap + + + lnk + application/x-ms-shortcut + + + log + text/plain + + + lostxml + application/lost+xml + + + lrf + application/octet-stream + + + lrm + application/vnd.ms-lrm + + + ltf + application/vnd.frogans.ltf + + + lvp + audio/vnd.lucent.voice + + + lwp + application/vnd.lotus-wordpro + + + lzh + application/x-lzh-compressed + + + m13 + application/x-msmediaview + + + m14 + application/x-msmediaview + + + m1v + video/mpeg + + + m21 + application/mp21 + + + m2a + audio/mpeg + + + m2v + video/mpeg + + + m3a + audio/mpeg + + + m3u + audio/x-mpegurl + + + m3u8 + application/vnd.apple.mpegurl + + + m4a + audio/mp4 + + + m4b + audio/mp4 + + + m4r + audio/mp4 + + + m4u + video/vnd.mpegurl + + + m4v + video/mp4 + + + ma + application/mathematica + + + mac + image/x-macpaint + + + mads + application/mads+xml + + + mag + application/vnd.ecowin.chart + + + maker + application/vnd.framemaker + + + man + text/troff + + + mar + application/octet-stream + + + mathml + application/mathml+xml + + + mb + application/mathematica + + + mbk + application/vnd.mobius.mbk + + + mbox + application/mbox + + + mc1 + application/vnd.medcalcdata + + + mcd + application/vnd.mcd + + + mcurl + text/vnd.curl.mcurl + + + mdb + application/x-msaccess + + + mdi + image/vnd.ms-modi + + + me + text/troff + + + mesh + model/mesh + + + meta4 + application/metalink4+xml + + + metalink + application/metalink+xml + + + mets + application/mets+xml + + + mfm + application/vnd.mfmp + + + mft + application/rpki-manifest + + + mgp + application/vnd.osgeo.mapguide.package + + + mgz + application/vnd.proteus.magazine + + + mid + audio/midi + + + midi + audio/midi + + + mie + application/x-mie + + + mif + application/x-mif + + + mime + message/rfc822 + + + mj2 + video/mj2 + + + mjp2 + video/mj2 + + + mk3d + video/x-matroska + + + mka + audio/x-matroska + + + mks + video/x-matroska + + + mkv + video/x-matroska + + + mlp + application/vnd.dolby.mlp + + + mmd + application/vnd.chipnuts.karaoke-mmd + + + mmf + application/vnd.smaf + + + mmr + image/vnd.fujixerox.edmics-mmr + + + mng + video/x-mng + + + mny + application/x-msmoney + + + mobi + application/x-mobipocket-ebook + + + mods + application/mods+xml + + + mov + video/quicktime + + + movie + video/x-sgi-movie + + + mp1 + audio/mpeg + + + mp2 + audio/mpeg + + + mp21 + application/mp21 + + + mp2a + audio/mpeg + + + mp3 + audio/mpeg + + + mp4 + video/mp4 + + + mp4a + audio/mp4 + + + mp4s + application/mp4 + + + mp4v + video/mp4 + + + mpa + audio/mpeg + + + mpc + application/vnd.mophun.certificate + + + mpe + video/mpeg + + + mpeg + video/mpeg + + + mpega + audio/x-mpeg + + + mpg + video/mpeg + + + mpg4 + video/mp4 + + + mpga + audio/mpeg + + + mpkg + application/vnd.apple.installer+xml + + + mpm + application/vnd.blueice.multipass + + + mpn + application/vnd.mophun.application + + + mpp + application/vnd.ms-project + + + mpt + application/vnd.ms-project + + + mpv2 + video/mpeg2 + + + mpy + application/vnd.ibm.minipay + + + mqy + application/vnd.mobius.mqy + + + mrc + application/marc + + + mrcx + application/marcxml+xml + + + ms + text/troff + + + mscml + application/mediaservercontrol+xml + + + mseed + application/vnd.fdsn.mseed + + + mseq + application/vnd.mseq + + + msf + application/vnd.epson.msf + + + msh + model/mesh + + + msi + application/x-msdownload + + + msl + application/vnd.mobius.msl + + + msty + application/vnd.muvee.style + + + mts + model/vnd.mts + + + mus + application/vnd.musician + + + musicxml + application/vnd.recordare.musicxml+xml + + + mvb + application/x-msmediaview + + + mwf + application/vnd.mfer + + + mxf + application/mxf + + + mxl + application/vnd.recordare.musicxml + + + mxml + application/xv+xml + + + mxs + application/vnd.triscape.mxs + + + mxu + video/vnd.mpegurl + + + n-gage + application/vnd.nokia.n-gage.symbian.install + + + n3 + text/n3 + + + nb + application/mathematica + + + nbp + application/vnd.wolfram.player + + + nc + application/x-netcdf + + + ncx + application/x-dtbncx+xml + + + nfo + text/x-nfo + + + ngdat + application/vnd.nokia.n-gage.data + + + nitf + application/vnd.nitf + + + nlu + application/vnd.neurolanguage.nlu + + + nml + application/vnd.enliven + + + nnd + application/vnd.noblenet-directory + + + nns + application/vnd.noblenet-sealer + + + nnw + application/vnd.noblenet-web + + + npx + image/vnd.net-fpx + + + nsc + application/x-conference + + + nsf + application/vnd.lotus-notes + + + ntf + application/vnd.nitf + + + nzb + application/x-nzb + + + oa2 + application/vnd.fujitsu.oasys2 + + + oa3 + application/vnd.fujitsu.oasys3 + + + oas + application/vnd.fujitsu.oasys + + + obd + application/x-msbinder + + + obj + application/x-tgif + + + oda + application/oda + + + + odb + application/vnd.oasis.opendocument.database + + + + odc + application/vnd.oasis.opendocument.chart + + + + odf + application/vnd.oasis.opendocument.formula + + + odft + application/vnd.oasis.opendocument.formula-template + + + + odg + application/vnd.oasis.opendocument.graphics + + + + odi + application/vnd.oasis.opendocument.image + + + + odm + application/vnd.oasis.opendocument.text-master + + + + odp + application/vnd.oasis.opendocument.presentation + + + + ods + application/vnd.oasis.opendocument.spreadsheet + + + + odt + application/vnd.oasis.opendocument.text + + + oga + audio/ogg + + + ogg + audio/ogg + + + ogv + video/ogg + + + + ogx + application/ogg + + + omdoc + application/omdoc+xml + + + onepkg + application/onenote + + + onetmp + application/onenote + + + onetoc + application/onenote + + + onetoc2 + application/onenote + + + opf + application/oebps-package+xml + + + opml + text/x-opml + + + oprc + application/vnd.palm + + + org + application/vnd.lotus-organizer + + + osf + application/vnd.yamaha.openscoreformat + + + osfpvg + application/vnd.yamaha.openscoreformat.osfpvg+xml + + + otc + application/vnd.oasis.opendocument.chart-template + + + otf + font/otf + + + + otg + application/vnd.oasis.opendocument.graphics-template + + + + oth + application/vnd.oasis.opendocument.text-web + + + oti + application/vnd.oasis.opendocument.image-template + + + + otp + application/vnd.oasis.opendocument.presentation-template + + + + ots + application/vnd.oasis.opendocument.spreadsheet-template + + + + ott + application/vnd.oasis.opendocument.text-template + + + oxps + application/oxps + + + oxt + application/vnd.openofficeorg.extension + + + p + text/x-pascal + + + p10 + application/pkcs10 + + + p12 + application/x-pkcs12 + + + p7b + application/x-pkcs7-certificates + + + p7c + application/pkcs7-mime + + + p7m + application/pkcs7-mime + + + p7r + application/x-pkcs7-certreqresp + + + p7s + application/pkcs7-signature + + + p8 + application/pkcs8 + + + pas + text/x-pascal + + + paw + application/vnd.pawaafile + + + pbd + application/vnd.powerbuilder6 + + + pbm + image/x-portable-bitmap + + + pcap + application/vnd.tcpdump.pcap + + + pcf + application/x-font-pcf + + + pcl + application/vnd.hp-pcl + + + pclxl + application/vnd.hp-pclxl + + + pct + image/pict + + + pcurl + application/vnd.curl.pcurl + + + pcx + image/x-pcx + + + pdb + application/vnd.palm + + + pdf + application/pdf + + + pfa + application/x-font-type1 + + + pfb + application/x-font-type1 + + + pfm + application/x-font-type1 + + + pfr + application/font-tdpfr + + + pfx + application/x-pkcs12 + + + pgm + image/x-portable-graymap + + + pgn + application/x-chess-pgn + + + pgp + application/pgp-encrypted + + + pic + image/pict + + + pict + image/pict + + + pkg + application/octet-stream + + + pki + application/pkixcmp + + + pkipath + application/pkix-pkipath + + + plb + application/vnd.3gpp.pic-bw-large + + + plc + application/vnd.mobius.plc + + + plf + application/vnd.pocketlearn + + + pls + audio/x-scpls + + + pml + application/vnd.ctc-posml + + + png + image/png + + + pnm + image/x-portable-anymap + + + pnt + image/x-macpaint + + + portpkg + application/vnd.macports.portpkg + + + pot + application/vnd.ms-powerpoint + + + potm + application/vnd.ms-powerpoint.template.macroenabled.12 + + + potx + application/vnd.openxmlformats-officedocument.presentationml.template + + + ppam + application/vnd.ms-powerpoint.addin.macroenabled.12 + + + ppd + application/vnd.cups-ppd + + + ppm + image/x-portable-pixmap + + + pps + application/vnd.ms-powerpoint + + + ppsm + application/vnd.ms-powerpoint.slideshow.macroenabled.12 + + + ppsx + application/vnd.openxmlformats-officedocument.presentationml.slideshow + + + ppt + application/vnd.ms-powerpoint + + + pptm + application/vnd.ms-powerpoint.presentation.macroenabled.12 + + + pptx + application/vnd.openxmlformats-officedocument.presentationml.presentation + + + pqa + application/vnd.palm + + + prc + application/x-mobipocket-ebook + + + pre + application/vnd.lotus-freelance + + + prf + application/pics-rules + + + ps + application/postscript + + + psb + application/vnd.3gpp.pic-bw-small + + + psd + image/vnd.adobe.photoshop + + + psf + application/x-font-linux-psf + + + pskcxml + application/pskc+xml + + + ptid + application/vnd.pvi.ptid1 + + + pub + application/x-mspublisher + + + pvb + application/vnd.3gpp.pic-bw-var + + + pwn + application/vnd.3m.post-it-notes + + + pya + audio/vnd.ms-playready.media.pya + + + pyv + video/vnd.ms-playready.media.pyv + + + qam + application/vnd.epson.quickanime + + + qbo + application/vnd.intu.qbo + + + qfx + application/vnd.intu.qfx + + + qps + application/vnd.publishare-delta-tree + + + qt + video/quicktime + + + qti + image/x-quicktime + + + qtif + image/x-quicktime + + + qwd + application/vnd.quark.quarkxpress + + + qwt + application/vnd.quark.quarkxpress + + + qxb + application/vnd.quark.quarkxpress + + + qxd + application/vnd.quark.quarkxpress + + + qxl + application/vnd.quark.quarkxpress + + + qxt + application/vnd.quark.quarkxpress + + + ra + audio/x-pn-realaudio + + + ram + audio/x-pn-realaudio + + + rar + application/x-rar-compressed + + + ras + image/x-cmu-raster + + + rcprofile + application/vnd.ipunplugged.rcprofile + + + rdf + application/rdf+xml + + + rdz + application/vnd.data-vision.rdz + + + rep + application/vnd.businessobjects + + + res + application/x-dtbresource+xml + + + rgb + image/x-rgb + + + rif + application/reginfo+xml + + + rip + audio/vnd.rip + + + ris + application/x-research-info-systems + + + rl + application/resource-lists+xml + + + rlc + image/vnd.fujixerox.edmics-rlc + + + rld + application/resource-lists-diff+xml + + + rm + application/vnd.rn-realmedia + + + rmi + audio/midi + + + rmp + audio/x-pn-realaudio-plugin + + + rms + application/vnd.jcp.javame.midlet-rms + + + rmvb + application/vnd.rn-realmedia-vbr + + + rnc + application/relax-ng-compact-syntax + + + roa + application/rpki-roa + + + roff + text/troff + + + rp9 + application/vnd.cloanto.rp9 + + + rpss + application/vnd.nokia.radio-presets + + + rpst + application/vnd.nokia.radio-preset + + + rq + application/sparql-query + + + rs + application/rls-services+xml + + + rsd + application/rsd+xml + + + rss + application/rss+xml + + + rtf + application/rtf + + + rtx + text/richtext + + + s + text/x-asm + + + s3m + audio/s3m + + + saf + application/vnd.yamaha.smaf-audio + + + sbml + application/sbml+xml + + + sc + application/vnd.ibm.secure-container + + + scd + application/x-msschedule + + + scm + application/vnd.lotus-screencam + + + scq + application/scvp-cv-request + + + scs + application/scvp-cv-response + + + scurl + text/vnd.curl.scurl + + + sda + application/vnd.stardivision.draw + + + sdc + application/vnd.stardivision.calc + + + sdd + application/vnd.stardivision.impress + + + sdkd + application/vnd.solent.sdkm+xml + + + sdkm + application/vnd.solent.sdkm+xml + + + sdp + application/sdp + + + sdw + application/vnd.stardivision.writer + + + see + application/vnd.seemail + + + seed + application/vnd.fdsn.seed + + + sema + application/vnd.sema + + + semd + application/vnd.semd + + + semf + application/vnd.semf + + + ser + application/java-serialized-object + + + setpay + application/set-payment-initiation + + + setreg + application/set-registration-initiation + + + sfd-hdstx + application/vnd.hydrostatix.sof-data + + + sfs + application/vnd.spotfire.sfs + + + sfv + text/x-sfv + + + sgi + image/sgi + + + sgl + application/vnd.stardivision.writer-global + + + sgm + text/sgml + + + sgml + text/sgml + + + sh + application/x-sh + + + shar + application/x-shar + + + shf + application/shf+xml + + + + sid + image/x-mrsid-image + + + sig + application/pgp-signature + + + sil + audio/silk + + + silo + model/mesh + + + sis + application/vnd.symbian.install + + + sisx + application/vnd.symbian.install + + + sit + application/x-stuffit + + + sitx + application/x-stuffitx + + + skd + application/vnd.koan + + + skm + application/vnd.koan + + + skp + application/vnd.koan + + + skt + application/vnd.koan + + + sldm + application/vnd.ms-powerpoint.slide.macroenabled.12 + + + sldx + application/vnd.openxmlformats-officedocument.presentationml.slide + + + slt + application/vnd.epson.salt + + + sm + application/vnd.stepmania.stepchart + + + smf + application/vnd.stardivision.math + + + smi + application/smil+xml + + + smil + application/smil+xml + + + smv + video/x-smv + + + smzip + application/vnd.stepmania.package + + + snd + audio/basic + + + snf + application/x-font-snf + + + so + application/octet-stream + + + spc + application/x-pkcs7-certificates + + + spf + application/vnd.yamaha.smaf-phrase + + + spl + application/x-futuresplash + + + spot + text/vnd.in3d.spot + + + spp + application/scvp-vp-response + + + spq + application/scvp-vp-request + + + spx + audio/ogg + + + sql + application/x-sql + + + src + application/x-wais-source + + + srt + application/x-subrip + + + sru + application/sru+xml + + + srx + application/sparql-results+xml + + + ssdl + application/ssdl+xml + + + sse + application/vnd.kodak-descriptor + + + ssf + application/vnd.epson.ssf + + + ssml + application/ssml+xml + + + st + application/vnd.sailingtracker.track + + + stc + application/vnd.sun.xml.calc.template + + + std + application/vnd.sun.xml.draw.template + + + stf + application/vnd.wt.stf + + + sti + application/vnd.sun.xml.impress.template + + + stk + application/hyperstudio + + + stl + application/vnd.ms-pki.stl + + + str + application/vnd.pg.format + + + stw + application/vnd.sun.xml.writer.template + + + sub + text/vnd.dvb.subtitle + + + sus + application/vnd.sus-calendar + + + susp + application/vnd.sus-calendar + + + sv4cpio + application/x-sv4cpio + + + sv4crc + application/x-sv4crc + + + svc + application/vnd.dvb.service + + + svd + application/vnd.svd + + + svg + image/svg+xml + + + svgz + image/svg+xml + + + swa + application/x-director + + + swf + application/x-shockwave-flash + + + swi + application/vnd.aristanetworks.swi + + + sxc + application/vnd.sun.xml.calc + + + sxd + application/vnd.sun.xml.draw + + + sxg + application/vnd.sun.xml.writer.global + + + sxi + application/vnd.sun.xml.impress + + + sxm + application/vnd.sun.xml.math + + + sxw + application/vnd.sun.xml.writer + + + t + text/troff + + + t3 + application/x-t3vm-image + + + taglet + application/vnd.mynfc + + + tao + application/vnd.tao.intent-module-archive + + + tar + application/x-tar + + + tcap + application/vnd.3gpp2.tcap + + + tcl + application/x-tcl + + + teacher + application/vnd.smart.teacher + + + tei + application/tei+xml + + + teicorpus + application/tei+xml + + + tex + application/x-tex + + + texi + application/x-texinfo + + + texinfo + application/x-texinfo + + + text + text/plain + + + tfi + application/thraud+xml + + + tfm + application/x-tex-tfm + + + tga + image/x-tga + + + thmx + application/vnd.ms-officetheme + + + tif + image/tiff + + + tiff + image/tiff + + + tmo + application/vnd.tmobile-livetv + + + torrent + application/x-bittorrent + + + tpl + application/vnd.groove-tool-template + + + tpt + application/vnd.trid.tpt + + + tr + text/troff + + + tra + application/vnd.trueapp + + + trm + application/x-msterminal + + + tsd + application/timestamped-data + + + tsv + text/tab-separated-values + + + ttc + font/collection + + + ttf + font/ttf + + + ttl + text/turtle + + + twd + application/vnd.simtech-mindmapper + + + twds + application/vnd.simtech-mindmapper + + + txd + application/vnd.genomatix.tuxedo + + + txf + application/vnd.mobius.txf + + + txt + text/plain + + + u32 + application/x-authorware-bin + + + udeb + application/x-debian-package + + + ufd + application/vnd.ufdl + + + ufdl + application/vnd.ufdl + + + ulw + audio/basic + + + ulx + application/x-glulx + + + umj + application/vnd.umajin + + + unityweb + application/vnd.unity + + + uoml + application/vnd.uoml+xml + + + uri + text/uri-list + + + uris + text/uri-list + + + urls + text/uri-list + + + ustar + application/x-ustar + + + utz + application/vnd.uiq.theme + + + uu + text/x-uuencode + + + uva + audio/vnd.dece.audio + + + uvd + application/vnd.dece.data + + + uvf + application/vnd.dece.data + + + uvg + image/vnd.dece.graphic + + + uvh + video/vnd.dece.hd + + + uvi + image/vnd.dece.graphic + + + uvm + video/vnd.dece.mobile + + + uvp + video/vnd.dece.pd + + + uvs + video/vnd.dece.sd + + + uvt + application/vnd.dece.ttml+xml + + + uvu + video/vnd.uvvu.mp4 + + + uvv + video/vnd.dece.video + + + uvva + audio/vnd.dece.audio + + + uvvd + application/vnd.dece.data + + + uvvf + application/vnd.dece.data + + + uvvg + image/vnd.dece.graphic + + + uvvh + video/vnd.dece.hd + + + uvvi + image/vnd.dece.graphic + + + uvvm + video/vnd.dece.mobile + + + uvvp + video/vnd.dece.pd + + + uvvs + video/vnd.dece.sd + + + uvvt + application/vnd.dece.ttml+xml + + + uvvu + video/vnd.uvvu.mp4 + + + uvvv + video/vnd.dece.video + + + uvvx + application/vnd.dece.unspecified + + + uvvz + application/vnd.dece.zip + + + uvx + application/vnd.dece.unspecified + + + uvz + application/vnd.dece.zip + + + vcard + text/vcard + + + vcd + application/x-cdlink + + + vcf + text/x-vcard + + + vcg + application/vnd.groove-vcard + + + vcs + text/x-vcalendar + + + vcx + application/vnd.vcx + + + vis + application/vnd.visionary + + + viv + video/vnd.vivo + + + vob + video/x-ms-vob + + + vor + application/vnd.stardivision.writer + + + vox + application/x-authorware-bin + + + vrml + model/vrml + + + vsd + application/vnd.visio + + + vsf + application/vnd.vsf + + + vss + application/vnd.visio + + + vst + application/vnd.visio + + + vsw + application/vnd.visio + + + vtu + model/vnd.vtu + + + vxml + application/voicexml+xml + + + w3d + application/x-director + + + wad + application/x-doom + + + wav + audio/x-wav + + + wax + audio/x-ms-wax + + + + wbmp + image/vnd.wap.wbmp + + + wbs + application/vnd.criticaltools.wbs+xml + + + wbxml + application/vnd.wap.wbxml + + + wcm + application/vnd.ms-works + + + wdb + application/vnd.ms-works + + + wdp + image/vnd.ms-photo + + + weba + audio/webm + + + webm + video/webm + + + webp + image/webp + + + wg + application/vnd.pmi.widget + + + wgt + application/widget + + + wks + application/vnd.ms-works + + + wm + video/x-ms-wm + + + wma + audio/x-ms-wma + + + wmd + application/x-ms-wmd + + + wmf + application/x-msmetafile + + + + wml + text/vnd.wap.wml + + + + wmlc + application/vnd.wap.wmlc + + + + wmls + text/vnd.wap.wmlscript + + + + wmlsc + application/vnd.wap.wmlscriptc + + + wmv + video/x-ms-wmv + + + wmx + video/x-ms-wmx + + + wmz + application/x-msmetafile + + + woff + font/woff + + + woff2 + font/woff2 + + + wpd + application/vnd.wordperfect + + + wpl + application/vnd.ms-wpl + + + wps + application/vnd.ms-works + + + wqd + application/vnd.wqd + + + wri + application/x-mswrite + + + wrl + model/vrml + + + wsdl + application/wsdl+xml + + + wspolicy + application/wspolicy+xml + + + wtb + application/vnd.webturbo + + + wvx + video/x-ms-wvx + + + x32 + application/x-authorware-bin + + + x3d + model/x3d+xml + + + x3db + model/x3d+binary + + + x3dbz + model/x3d+binary + + + x3dv + model/x3d+vrml + + + x3dvz + model/x3d+vrml + + + x3dz + model/x3d+xml + + + xaml + application/xaml+xml + + + xap + application/x-silverlight-app + + + xar + application/vnd.xara + + + xbap + application/x-ms-xbap + + + xbd + application/vnd.fujixerox.docuworks.binder + + + xbm + image/x-xbitmap + + + xdf + application/xcap-diff+xml + + + xdm + application/vnd.syncml.dm+xml + + + xdp + application/vnd.adobe.xdp+xml + + + xdssc + application/dssc+xml + + + xdw + application/vnd.fujixerox.docuworks + + + xenc + application/xenc+xml + + + xer + application/patch-ops-error+xml + + + xfdf + application/vnd.adobe.xfdf + + + xfdl + application/vnd.xfdl + + + xht + application/xhtml+xml + + + xhtml + application/xhtml+xml + + + xhvml + application/xv+xml + + + xif + image/vnd.xiff + + + xla + application/vnd.ms-excel + + + xlam + application/vnd.ms-excel.addin.macroenabled.12 + + + xlc + application/vnd.ms-excel + + + xlf + application/x-xliff+xml + + + xlm + application/vnd.ms-excel + + + xls + application/vnd.ms-excel + + + xlsb + application/vnd.ms-excel.sheet.binary.macroenabled.12 + + + xlsm + application/vnd.ms-excel.sheet.macroenabled.12 + + + xlsx + application/vnd.openxmlformats-officedocument.spreadsheetml.sheet + + + xlt + application/vnd.ms-excel + + + xltm + application/vnd.ms-excel.template.macroenabled.12 + + + xltx + application/vnd.openxmlformats-officedocument.spreadsheetml.template + + + xlw + application/vnd.ms-excel + + + xm + audio/xm + + + xml + application/xml + + + xo + application/vnd.olpc-sugar + + + xop + application/xop+xml + + + xpi + application/x-xpinstall + + + xpl + application/xproc+xml + + + xpm + image/x-xpixmap + + + xpr + application/vnd.is-xpr + + + xps + application/vnd.ms-xpsdocument + + + xpw + application/vnd.intercon.formnet + + + xpx + application/vnd.intercon.formnet + + + xsl + application/xml + + + xslt + application/xslt+xml + + + xsm + application/vnd.syncml+xml + + + xspf + application/xspf+xml + + + xul + application/vnd.mozilla.xul+xml + + + xvm + application/xv+xml + + + xvml + application/xv+xml + + + xwd + image/x-xwindowdump + + + xyz + chemical/x-xyz + + + xz + application/x-xz + + + yang + application/yang + + + yin + application/yin+xml + + + z + application/x-compress + + + Z + application/x-compress + + + z1 + application/x-zmachine + + + z2 + application/x-zmachine + + + z3 + application/x-zmachine + + + z4 + application/x-zmachine + + + z5 + application/x-zmachine + + + z6 + application/x-zmachine + + + z7 + application/x-zmachine + + + z8 + application/x-zmachine + + + zaz + application/vnd.zzazz.deck+xml + + + zip + application/zip + + + zir + application/vnd.zul + + + zirz + application/vnd.zul + + + zmm + application/vnd.handheld-entertainment+xml + + + + + + + + + + + + + + + + + + index.html + index.htm + index.jsp + + + diff --git a/codes/javatech/javatech-server/src/main/webapp/META-INF/MANIFEST.MF b/codes/javatech/javatech-server/src/main/webapp/META-INF/MANIFEST.MF new file mode 100644 index 00000000..254272e1 --- /dev/null +++ b/codes/javatech/javatech-server/src/main/webapp/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/codes/javatech/javatech-server/src/main/webapp/WEB-INF/web.xml b/codes/javatech/javatech-server/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 00000000..974a088b --- /dev/null +++ b/codes/javatech/javatech-server/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,47 @@ + + + javatool + + + + spring-servlet + org.springframework.web.servlet.DispatcherServlet + 1 + + contextConfigLocation + classpath:spring/spring-servlet.xml + + + + spring-servlet + / + + + + + + + encodingFilter + org.springframework.web.filter.CharacterEncodingFilter + + encoding + UTF-8 + + + forceEncoding + true + + + + encodingFilter + /* + REQUEST + FORWARD + + + + + /views/jsp/index.jsp + + diff --git a/codes/javatech/javatech-server/src/main/webapp/views/jsp/hello.jsp b/codes/javatech/javatech-server/src/main/webapp/views/jsp/hello.jsp new file mode 100644 index 00000000..774fc949 --- /dev/null +++ b/codes/javatech/javatech-server/src/main/webapp/views/jsp/hello.jsp @@ -0,0 +1,16 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> +<% + String path = request.getContextPath(); + String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; +%> + + + + + HelloController + + +

${message}

+回到首页
+ + diff --git a/codes/javatech/javatech-server/src/main/webapp/views/jsp/index.jsp b/codes/javatech/javatech-server/src/main/webapp/views/jsp/index.jsp new file mode 100644 index 00000000..763fee86 --- /dev/null +++ b/codes/javatech/javatech-server/src/main/webapp/views/jsp/index.jsp @@ -0,0 +1,28 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> +<% + String path = request.getContextPath(); + String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; +%> + + + + + javatool + + + +

javatool

+

<%out.print("Server Ip:" + basePath);%>

+
+

示例列表

+ +
+ + diff --git a/codes/javatech/javatech-test/pom.xml b/codes/javatech/javatech-test/pom.xml new file mode 100644 index 00000000..172c6722 --- /dev/null +++ b/codes/javatech/javatech-test/pom.xml @@ -0,0 +1,68 @@ + + + 4.0.0 + + + io.github.dunwu + dunwu-parent + 1.0.7 + + + io.github.dunwu.javatech + javatech-test + 1.0.0 + jar + Java 测试 + + + 1.22 + + + + + ch.qos.logback + logback-classic + + + + + org.junit.jupiter + junit-jupiter + test + + + + + junit + junit + test + + + + + org.assertj + assertj-core + test + + + org.mockito + mockito-core + test + + + + org.openjdk.jmh + jmh-core + ${jmh.version} + + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh.version} + provided + + + + diff --git a/codes/javatech/javatech-test/src/main/java/io/github/dunwu/javatech/jmh/JMHSample_34_SafeLooping.java b/codes/javatech/javatech-test/src/main/java/io/github/dunwu/javatech/jmh/JMHSample_34_SafeLooping.java new file mode 100644 index 00000000..2dff353e --- /dev/null +++ b/codes/javatech/javatech-test/src/main/java/io/github/dunwu/javatech/jmh/JMHSample_34_SafeLooping.java @@ -0,0 +1,162 @@ +package io.github.dunwu.javatech.jmh; + +import org.openjdk.jmh.annotations.*; +import org.openjdk.jmh.infra.Blackhole; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +import java.util.concurrent.TimeUnit; + +@State(Scope.Thread) +@Warmup(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS) +@Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS) +@Fork(3) +@BenchmarkMode(Mode.AverageTime) +@OutputTimeUnit(TimeUnit.NANOSECONDS) +public class JMHSample_34_SafeLooping { + + /* + * JMHSample_11_Loops warns about the dangers of using loops in @Benchmark methods. + * Sometimes, however, one needs to traverse through several elements in a dataset. + * This is hard to do without loops, and therefore we need to devise a scheme for + * safe looping. + */ + + /* + * Suppose we want to measure how much it takes to execute work() with different + * arguments. This mimics a frequent use case when multiple instances with the same + * implementation, but different data, is measured. + */ + + static final int BASE = 42; + + static int work(int x) { + return BASE + x; + } + + /* + * Every benchmark requires control. We do a trivial control for our benchmarks + * by checking the benchmark costs are growing linearly with increased task size. + * If it doesn't, then something wrong is happening. + */ + + @Param({ "1", "10", "100", "1000" }) + int size; + + int[] xs; + + @Setup + public void setup() { + xs = new int[size]; + for (int c = 0; c < size; c++) { + xs[c] = c; + } + } + + /* + * First, the obviously wrong way: "saving" the result into a local variable would not + * work. A sufficiently smart compiler will inline work(), and figure out only the last + * work() call needs to be evaluated. Indeed, if you run it with varying $size, the score + * will stay the same! + */ + + @Benchmark + public int measureWrong_1() { + int acc = 0; + for (int x : xs) { + acc = work(x); + } + return acc; + } + + /* + * Second, another wrong way: "accumulating" the result into a local variable. While + * it would force the computation of each work() method, there are software pipelining + * effects in action, that can merge the operations between two otherwise distinct work() + * bodies. This will obliterate the benchmark setup. + * + * In this example, HotSpot does the unrolled loop, merges the $BASE operands into a single + * addition to $acc, and then does a bunch of very tight stores of $x-s. The final performance + * depends on how much of the loop unrolling happened *and* how much data is available to make + * the large strides. + */ + + @Benchmark + public int measureWrong_2() { + int acc = 0; + for (int x : xs) { + acc += work(x); + } + return acc; + } + + /* + * Now, let's see how to measure these things properly. A very straight-forward way to + * break the merging is to sink each result to Blackhole. This will force runtime to compute + * every work() call in full. (We would normally like to care about several concurrent work() + * computations at once, but the memory effects from Blackhole.consume() prevent those optimization + * on most runtimes). + */ + + @Benchmark + public void measureRight_1(Blackhole bh) { + for (int x : xs) { + bh.consume(work(x)); + } + } + + /* + * DANGEROUS AREA, PLEASE READ THE DESCRIPTION BELOW. + * + * Sometimes, the cost of sinking the value into a Blackhole is dominating the nano-benchmark score. + * In these cases, one may try to do a make-shift "sinker" with non-inlineable method. This trick is + * *very* VM-specific, and can only be used if you are verifying the generated code (that's a good + * strategy when dealing with nano-benchmarks anyway). + * + * You SHOULD NOT use this trick in most cases. Apply only where needed. + */ + + @Benchmark + public void measureRight_2() { + for (int x : xs) { + sink(work(x)); + } + } + + @CompilerControl(CompilerControl.Mode.DONT_INLINE) + public static void sink(int v) { + // IT IS VERY IMPORTANT TO MATCH THE SIGNATURE TO AVOID AUTOBOXING. + // The method intentionally does nothing. + } + + + /* + * ============================== HOW TO RUN THIS TEST: ==================================== + * + * You might notice measureWrong_1 does not depend on $size, measureWrong_2 has troubles with + * linearity, and otherwise much faster than both measureRight_*. You can also see measureRight_2 + * is marginally faster than measureRight_1. + * + * You can run this test: + * + * a) Via the command line: + * $ mvn clean install + * $ java -jar target/benchmarks.jar JMHSample_34 + * + * b) Via the Java API: + * (see the JMH homepage for possible caveats when running from IDE: + * http://openjdk.java.net/projects/code-tools/jmh/) + */ + + public static void main(String[] args) throws RunnerException { + Options opt = new OptionsBuilder() + .include(JMHSample_34_SafeLooping.class.getSimpleName()) + .forks(3) + .build(); + + new Runner(opt).run(); + } + +} diff --git a/codes/javatech/javatech-test/src/main/java/io/github/dunwu/javatech/jmh/JmhQuickStart.java b/codes/javatech/javatech-test/src/main/java/io/github/dunwu/javatech/jmh/JmhQuickStart.java new file mode 100644 index 00000000..c00183d7 --- /dev/null +++ b/codes/javatech/javatech-test/src/main/java/io/github/dunwu/javatech/jmh/JmhQuickStart.java @@ -0,0 +1,43 @@ +package io.github.dunwu.javatech.jmh; + +import org.openjdk.jmh.annotations.*; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +import java.util.concurrent.TimeUnit; + +@BenchmarkMode(Mode.Throughput) +@Warmup(iterations = 3) +@Measurement(iterations = 10, time = 5, timeUnit = TimeUnit.SECONDS) +@OutputTimeUnit(TimeUnit.MILLISECONDS) +public class JmhQuickStart { + + public static void main(String[] args) throws RunnerException { + Options opt = new OptionsBuilder() + .include(JmhQuickStart.class.getSimpleName()) + .forks(1) + .build(); + new Runner(opt).run(); + } + + @Benchmark + public String testStringAdd() { + String a = ""; + for (int i = 0; i < 10; i++) { + a += i; + } + return a; + } + + @Benchmark + public String testStringBuilderAdd() { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < 10; i++) { + sb.append(i); + } + return sb.toString(); + } + +} diff --git a/codes/javatech/javatech-test/src/main/java/io/github/dunwu/javatech/jmh/StringBuilderBenchmark.java b/codes/javatech/javatech-test/src/main/java/io/github/dunwu/javatech/jmh/StringBuilderBenchmark.java new file mode 100644 index 00000000..c479c545 --- /dev/null +++ b/codes/javatech/javatech-test/src/main/java/io/github/dunwu/javatech/jmh/StringBuilderBenchmark.java @@ -0,0 +1,45 @@ +package io.github.dunwu.javatech.jmh; + +import org.openjdk.jmh.annotations.*; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +import java.util.concurrent.TimeUnit; + +@BenchmarkMode(Mode.Throughput) +@Warmup(iterations = 3) +@Measurement(iterations = 10, time = 5, timeUnit = TimeUnit.SECONDS) +@Threads(8) +@Fork(2) +@OutputTimeUnit(TimeUnit.MILLISECONDS) +public class StringBuilderBenchmark { + + public static void main(String[] args) throws RunnerException { + Options options = new OptionsBuilder() + .include(StringBuilderBenchmark.class.getSimpleName()) + .output("d:/Benchmark.log") + .build(); + new Runner(options).run(); + } + + @Benchmark + public void testStringAdd() { + String str = ""; + for (int i = 0; i < 10; i++) { + str += i; + } + System.out.println(str); + } + + @Benchmark + public void testStringBuilderAdd() { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < 10; i++) { + sb.append(i); + } + System.out.println(sb.toString()); + } + +} diff --git a/codes/javatech/javatech-test/src/main/java/io/github/dunwu/javatech/lombok/Calculator.java b/codes/javatech/javatech-test/src/main/java/io/github/dunwu/javatech/lombok/Calculator.java new file mode 100644 index 00000000..26c99915 --- /dev/null +++ b/codes/javatech/javatech-test/src/main/java/io/github/dunwu/javatech/lombok/Calculator.java @@ -0,0 +1,9 @@ +package io.github.dunwu.javatech.bean.lombok; + +public class Calculator { + + public int add(int a, int b) { + return a + b; + } + +} diff --git a/codes/javatech/javatech-test/src/main/java/io/github/dunwu/javatech/lombok/Person.java b/codes/javatech/javatech-test/src/main/java/io/github/dunwu/javatech/lombok/Person.java new file mode 100644 index 00000000..6ae9aa14 --- /dev/null +++ b/codes/javatech/javatech-test/src/main/java/io/github/dunwu/javatech/lombok/Person.java @@ -0,0 +1,34 @@ +package io.github.dunwu.javatech.bean.lombok; + +/** + * @author Zhang Peng + * @since 2018-11-29 + */ +public class Person { + + private String firstName; + + private String lastName; + + public Person(String firstName, String lastName) { + this.firstName = firstName; + this.lastName = lastName; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + +} diff --git a/codes/javatech/javatech-test/src/main/resources/logback.xml b/codes/javatech/javatech-test/src/main/resources/logback.xml new file mode 100644 index 00000000..240ee4c6 --- /dev/null +++ b/codes/javatech/javatech-test/src/main/resources/logback.xml @@ -0,0 +1,15 @@ + + + + + %d{HH:mm:ss.SSS} [%boldYellow(%thread)] [%highlight(%-5level)] %boldGreen(%c{36}.%M) - %boldBlue(%m%n) + + + + + + + + + + diff --git a/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit4/JUnitTest.java b/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit4/JUnitTest.java new file mode 100644 index 00000000..7f914913 --- /dev/null +++ b/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit4/JUnitTest.java @@ -0,0 +1,71 @@ +package io.github.dunwu.javatech.junit4; + +import org.junit.*; +import org.junit.runners.MethodSorters; + +/** + * JUnit 使用示例。 请注意各个方法的执行顺序。 + * + * @author Zhang Peng + */ +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class JUnitTest { + + /** + * @BeforeClass 注解指出这是附着在静态方法必须执行一次并在类的所有测试之前。 一般用于共享配置方法(如连接到数据库)。 + */ + @BeforeClass + public static void beforeClass() { + System.out.println("call @BeforeClass"); + } + + /** + * 当需要执行所有的测试在JUnit测试用例类后执行,@AfterClass 注解可以使用以清理建立方法,(从数据库如断开连接)。 注意:附有此批注(类似于BeforeClass)的方法必须定义为静态。 + */ + @AfterClass + public static void afterClass() { + System.out.println("call @AfterClass"); + } + + @Test + public void testA() { + System.out.println("call @Test testA"); + int sum = 1 + 2 + 3; + Assert.assertEquals(6, sum); + } + + @Test + public void testC() { + System.out.println("call @Test testC"); + } + + @Test + public void testB() { + System.out.println("call @Test testB"); + } + + /** + * @Before 注解修饰的方法必须在类中的每个测试之前执行,以便执行测试某些必要的先决条件。 + */ + @Before + public void before() { + System.out.println("call @Before"); + } + + /** + * @After 注解修饰的方法在执行每项测试后执行(如执行每一个测试后重置某些变量 , 删除临时变量等) + */ + @After + public void after() { + System.out.println("call @After"); + } + + /** + * 当想暂时禁用特定的测试执行可以使用忽略注释。每个被注解为 @Ignore 的方法将不被执行。 + */ + @Ignore + public void ignore() { + System.out.println("call @Ignore"); + } + +} diff --git a/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/AssertionsTests.java b/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/AssertionsTests.java new file mode 100644 index 00000000..3ad5d90a --- /dev/null +++ b/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/AssertionsTests.java @@ -0,0 +1,151 @@ +package io.github.dunwu.javatech.junit5; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import static java.time.Duration.ofMillis; +import static java.time.Duration.ofMinutes; +import static org.junit.jupiter.api.Assertions.*; + +/** + * Junit5 断言示例 + * + * @author Zhang Peng + * @since 2018-11-29 + */ +@Disabled +class AssertionsTests { + + private static Person person; + + @BeforeAll + static void beforeAll() { + person = new Person("John", "Doe"); + } + + @Test + void dependentAssertions() { + // Within a code block, if an assertion fails the + // subsequent code in the same block will be skipped. + assertAll("properties", () -> { + String firstName = person.getFirstName(); + assertNotNull(firstName); + + // Executed only if the previous assertion is valid. + assertAll("first name", () -> assertTrue(firstName.startsWith("J")), + () -> assertTrue(firstName.endsWith("n"))); + }, () -> { + // Grouped assertion, so processed independently + // of results of first name assertions. + String lastName = person.getLastName(); + assertNotNull(lastName); + + // Executed only if the previous assertion is valid. + assertAll("last name", () -> assertTrue(lastName.startsWith("D")), + () -> assertTrue(lastName.endsWith("e"))); + }); + } + + @Test + void exceptionTesting() { + Throwable exception = assertThrows(IllegalArgumentException.class, () -> { + throw new IllegalArgumentException("a message"); + }); + assertEquals("a message", exception.getMessage()); + } + + @Test + void groupedAssertions() { + // In a grouped assertion all assertions are executed, and any + // failures will be reported together. + assertAll("person", () -> assertEquals("John", person.getFirstName()), + () -> assertEquals("Doe", person.getLastName())); + } + + @Test + void standardAssertions() { + assertEquals(2, 2); + assertEquals(4, 4, "The optional assertion message is now the last parameter."); + assertTrue('a' < 'b', () -> "Assertion messages can be lazily evaluated -- " + + "to avoid constructing complex messages unnecessarily."); + } + + @Test + void timeoutExceeded() { + // The following assertion fails with an error message similar to: + // execution exceeded timeout of 10 ms by 91 ms + assertTimeout(ofMillis(10), () -> { + // Simulate task that takes more than 10 ms. + Thread.sleep(100); + }); + } + + @Test + void timeoutExceededWithPreemptiveTermination() { + // The following assertion fails with an error message similar to: + // execution timed out after 10 ms + assertTimeoutPreemptively(ofMillis(10), () -> { + // Simulate task that takes more than 10 ms. + Thread.sleep(100); + }); + } + + @Test + void timeoutNotExceeded() { + // The following assertion succeeds. + assertTimeout(ofMinutes(2), () -> { + // Perform task that takes less than 2 minutes. + }); + } + + @Test + void timeoutNotExceededWithMethod() { + // The following assertion invokes a method reference and returns an object. + String actualGreeting = assertTimeout(ofMinutes(2), AssertionsTests::greeting); + assertEquals("Hello, World!", actualGreeting); + } + + private static String greeting() { + return "Hello, World!"; + } + + @Test + void timeoutNotExceededWithResult() { + // The following assertion succeeds, and returns the supplied object. + String actualResult = assertTimeout(ofMinutes(2), () -> { + return "a result"; + }); + assertEquals("a result", actualResult); + } + + static class Person { + + private String firstName; + + private String lastName; + + Person(String firstName, String lastName) { + this.firstName = firstName; + this.lastName = lastName; + } + + String getFirstName() { + return firstName; + } + + void setFirstName(String firstName) { + this.firstName = firstName; + } + + String getLastName() { + return lastName; + } + + void setLastName(String lastName) { + this.lastName = lastName; + } + + } + +} diff --git a/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/AssumptionsTests.java b/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/AssumptionsTests.java new file mode 100644 index 00000000..023120c6 --- /dev/null +++ b/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/AssumptionsTests.java @@ -0,0 +1,43 @@ +package io.github.dunwu.javatech.junit5; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assumptions.assumeTrue; +import static org.junit.jupiter.api.Assumptions.assumingThat; + +/** + * Junit5 断言示例 + * + * @author Zhang Peng + * @since 2018-11-29 + */ +@Disabled +class AssumptionsTests { + + @Test + void testInAllEnvironments() { + assumingThat("CI".equals(System.getenv("ENV")), () -> { + // perform these assertions only on the CI server + assertEquals(2, 2); + }); + + // perform these assertions in all environments + assertEquals("a string", "a string"); + } + + @Test + void testOnlyOnCiServer() { + assumeTrue("CI".equals(System.getenv("ENV"))); + // remainder of test + } + + @Test + void testOnlyOnDeveloperWorkstation() { + assumeTrue("DEV".equals(System.getenv("ENV")), + () -> "Aborting test: not on developer workstation"); + // remainder of test + } + +} diff --git a/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/DisplayNameTests.java b/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/DisplayNameTests.java new file mode 100644 index 00000000..d6308357 --- /dev/null +++ b/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/DisplayNameTests.java @@ -0,0 +1,32 @@ +package io.github.dunwu.javatech.junit5; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +/** + * Junit5 定制测试类和方法的显示名称 + * + * @author Zhang Peng + * @since 2018-11-29 + */ +@Disabled +@DisplayName("A special test case") +class DisplayNameTests { + + @Test + @DisplayName("😱") + void testWithDisplayNameContainingEmoji() { + } + + @Test + @DisplayName("Custom test name containing spaces") + void testWithDisplayNameContainingSpaces() { + } + + @Test + @DisplayName("╯°□°)╯") + void testWithDisplayNameContainingSpecialCharacters() { + } + +} diff --git a/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/DynamicTests.java b/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/DynamicTests.java new file mode 100644 index 00000000..1f317ab2 --- /dev/null +++ b/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/DynamicTests.java @@ -0,0 +1,120 @@ +package io.github.dunwu.javatech.junit5; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.DynamicNode; +import org.junit.jupiter.api.DynamicTest; +import org.junit.jupiter.api.TestFactory; +import org.junit.jupiter.api.function.ThrowingConsumer; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.IntStream; +import java.util.stream.Stream; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.DynamicContainer.dynamicContainer; +import static org.junit.jupiter.api.DynamicTest.dynamicTest; + +@Disabled +class DynamicTests { + + @TestFactory + DynamicTest[] dynamicTestsFromArray() { + return new DynamicTest[] { + dynamicTest("7th dynamic test", () -> assertTrue(true)), + dynamicTest("8th dynamic test", () -> assertEquals(4, 2 * 2)) }; + } + + @TestFactory + Collection dynamicTestsFromCollection() { + return Arrays.asList(dynamicTest("1st dynamic test", () -> assertTrue(true)), + dynamicTest("2nd dynamic test", () -> assertEquals(4, 2 * 2))); + } + + @TestFactory + Stream dynamicTestsFromIntStream() { + // Generates tests for the first 10 even integers. + return IntStream.iterate(0, n -> n + 2).limit(10) + .mapToObj(n -> dynamicTest("test" + n, () -> assertTrue(n % 2 == 0))); + } + + @TestFactory + Iterable dynamicTestsFromIterable() { + return Arrays.asList(dynamicTest("3rd dynamic test", () -> assertTrue(true)), + dynamicTest("4th dynamic test", () -> assertEquals(4, 2 * 2))); + } + + @TestFactory + Iterator dynamicTestsFromIterator() { + return Arrays + .asList(dynamicTest("5th dynamic test", () -> assertTrue(true)), + dynamicTest("6th dynamic test", () -> assertEquals(4, 2 * 2))) + .iterator(); + } + + @TestFactory + Stream dynamicTestsFromStream() { + return Stream.of("A", "B", "C").map(str -> dynamicTest("test" + str, () -> { + /* ... */ + })); + } + + @TestFactory + Stream dynamicTestsWithContainers() { + return Stream + .of("A", "B", "C").map( + input -> dynamicContainer("Container " + input, Stream + .of(dynamicTest("not null", () -> assertNotNull(input)), + dynamicContainer("properties", + Stream.of( + dynamicTest("length > 0", + () -> assertTrue(input + .length() > 0)), + dynamicTest("not empty", + () -> assertFalse(input + .isEmpty()))))))); + } + + // This will result in a JUnitException! + @TestFactory + List dynamicTestsWithInvalidReturnType() { + return Arrays.asList("Hello"); + } + + @TestFactory + Stream generateRandomNumberOfTests() { + + // Generates random positive integers between 0 and 100 until + // a number evenly divisible by 7 is encountered. + Iterator inputGenerator = new Iterator() { + + Random random = new Random(); + + int current; + + @Override + public boolean hasNext() { + current = random.nextInt(100); + return current % 7 != 0; + } + + @Override + public Integer next() { + return current; + } + }; + + // Generates display names like: input:5, input:37, input:85, etc. + Function displayNameGenerator = (input) -> "input:" + input; + + // Executes tests based on the current input value. + ThrowingConsumer testExecutor = (input) -> assertTrue(input % 7 != 0); + + // Returns a stream of dynamic tests. + return DynamicTest.stream(inputGenerator, displayNameGenerator, testExecutor); + } + +} diff --git a/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/NestedTests.java b/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/NestedTests.java new file mode 100644 index 00000000..6811ec10 --- /dev/null +++ b/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/NestedTests.java @@ -0,0 +1,87 @@ +package io.github.dunwu.javatech.junit5; + +import org.junit.jupiter.api.*; + +import java.util.EmptyStackException; +import java.util.Stack; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +@Disabled +@DisplayName("A stack") +class NestedTests { + + Stack stack; + + @Test + @DisplayName("is instantiated with new Stack()") + void isInstantiatedWithNew() { + new Stack<>(); + } + + @Nested + @DisplayName("when new") + class WhenNew { + + @BeforeEach + void createNewStack() { + stack = new Stack<>(); + } + + @Test + @DisplayName("is empty") + void isEmpty() { + assertTrue(stack.isEmpty()); + } + + @Test + @DisplayName("throws EmptyStackException when peeked") + void throwsExceptionWhenPeeked() { + assertThrows(EmptyStackException.class, () -> stack.peek()); + } + + @Test + @DisplayName("throws EmptyStackException when popped") + void throwsExceptionWhenPopped() { + assertThrows(EmptyStackException.class, () -> stack.pop()); + } + + @Nested + @DisplayName("after pushing an element") + class AfterPushing { + + String anElement = "an element"; + + @Test + @DisplayName("it is no longer empty") + void isNotEmpty() { + assertFalse(stack.isEmpty()); + } + + @BeforeEach + void pushAnElement() { + stack.push(anElement); + } + + @Test + @DisplayName("returns the element when peeked but remains not empty") + void returnElementWhenPeeked() { + assertEquals(anElement, stack.peek()); + assertFalse(stack.isEmpty()); + } + + @Test + @DisplayName("returns the element when popped and is empty") + void returnElementWhenPopped() { + assertEquals(anElement, stack.pop()); + assertTrue(stack.isEmpty()); + } + + } + + } + +} diff --git a/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/ParameterizedTests.java b/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/ParameterizedTests.java new file mode 100644 index 00000000..43c2c278 --- /dev/null +++ b/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/ParameterizedTests.java @@ -0,0 +1,32 @@ +package io.github.dunwu.javatech.junit5; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +/** + * @author Zhang Peng + * @since 2018-11-29 + */ +@Disabled +class ParameterizedTests { + + @ParameterizedTest(name = "{0} + {1} = {2}") + @CsvSource({ "0, 1, 1", "1, 2, 3", "49, 51, 100", "1, 100, 101" }) + void add(int first, int second, int expectedResult) { + Calculator calculator = new Calculator(); + assertEquals(expectedResult, calculator.add(first, second), + () -> first + " + " + second + " should equal " + expectedResult); + } + + class Calculator { + + public int add(int a, int b) { + return a + b; + } + + } + +} diff --git a/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/RepeatedTests.java b/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/RepeatedTests.java new file mode 100644 index 00000000..d83fc813 --- /dev/null +++ b/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/RepeatedTests.java @@ -0,0 +1,46 @@ +package io.github.dunwu.javatech.junit5; + +import org.junit.jupiter.api.*; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +@Disabled +class RepeatedTests { + + @BeforeEach + void beforeEach(TestInfo testInfo, RepetitionInfo repetitionInfo) { + int currentRepetition = repetitionInfo.getCurrentRepetition(); + int totalRepetitions = repetitionInfo.getTotalRepetitions(); + String methodName = testInfo.getTestMethod().get().getName(); + System.out.println(String.format("About to execute repetition %d of %d for %s", // + currentRepetition, totalRepetitions, methodName)); + } + + @RepeatedTest(value = 1, name = "{displayName} {currentRepetition}/{totalRepetitions}") + @DisplayName("Repeat!") + void customDisplayName(TestInfo testInfo) { + assertEquals(testInfo.getDisplayName(), "Repeat! 1/1"); + } + + @RepeatedTest(value = 1, name = RepeatedTest.LONG_DISPLAY_NAME) + @DisplayName("Details...") + void customDisplayNameWithLongPattern(TestInfo testInfo) { + assertEquals(testInfo.getDisplayName(), "Details... :: repetition 1 of 1"); + } + + @RepeatedTest(10) + void repeatedTest() { + // ... + } + + @RepeatedTest(value = 5, name = "Wiederholung {currentRepetition} von {totalRepetitions}") + void repeatedTestInGerman() { + // ... + } + + @RepeatedTest(5) + void repeatedTestWithRepetitionInfo(RepetitionInfo repetitionInfo) { + assertEquals(5, repetitionInfo.getTotalRepetitions()); + } + +} diff --git a/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/StandardTests.java b/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/StandardTests.java new file mode 100644 index 00000000..e342eea6 --- /dev/null +++ b/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/junit5/StandardTests.java @@ -0,0 +1,52 @@ +package io.github.dunwu.javatech.junit5; + +import org.junit.jupiter.api.*; + +/** + * Junit5 标准测试 + * + * @author Zhang Peng + * @since 2018-11-29 + */ +@Disabled +class StandardTests { + + @AfterAll + static void afterAll() { + System.out.println("call afterAll()"); + } + + @BeforeAll + static void beforeAll() { + System.out.println("call beforeAll()"); + } + + @AfterEach + void afterEach() { + System.out.println("call afterEach()"); + } + + @BeforeEach + void beforeEach() { + System.out.println("call beforeEach()"); + } + + @Test + void failingTest() { + System.out.println("call failingTest()"); + // fail("a failing test"); + } + + @Test + @Disabled("for demonstration purposes") + void skippedTest() { + System.out.println("call skippedTest()"); + // not executed + } + + @Test + void succeedingTest() { + System.out.println("call succeedingTest()"); + } + +} diff --git a/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/mockito/MockitoTest.java b/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/mockito/MockitoTest.java new file mode 100644 index 00000000..6211d1a7 --- /dev/null +++ b/codes/javatech/javatech-test/src/test/java/io/github/dunwu/javatech/mockito/MockitoTest.java @@ -0,0 +1,225 @@ +package io.github.dunwu.javatech.mockito; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.InOrder; + +import java.util.LinkedList; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.*; + +class MockitoTest { + + // 模拟 LinkedList 的一个对象 + LinkedList mockedList = mock(LinkedList.class); + + @BeforeEach + void beforeEach() { + mockedList.clear(); + } + + @Test + void test() { + // using mock object - it does not throw any "unexpected interaction" exception + mockedList.add("one"); + // selective, explicit, highly readable verification + verify(mockedList).add("one"); + } + + /** + * 模拟对象 + */ + @Test + void test01() { + // 此时调用get方法,会返回null,因为还没有对方法调用的返回值做模拟 + System.out.println(mockedList.get(0)); + } + + /** + * 模拟方法调用的返回值 + */ + @Test + void test02() { + // 模拟获取第一个元素时,返回字符串first。给特定的方法调用返回固定值在官方说法中称为stub。 + when(mockedList.get(0)).thenReturn("first"); + // 此时打印输出first + System.out.println(mockedList.get(0)); + } + + /** + * 模拟方法调用抛出异常 + */ + @Test + void test03() { + // 模拟获取第二个元素时,抛出RuntimeException + when(mockedList.get(1)).thenThrow(new RuntimeException()); + try { + // 此时将会抛出RuntimeException + System.out.println(mockedList.get(1)); + } catch (RuntimeException e) { + System.err.println(e.getMessage()); + assertThat(e.getMessage()).isEqualTo(null); + } + } + + /** + * 模拟方法调用抛出异常2 + */ + @Test + void test04() { + doThrow(new RuntimeException("clear exception")).when(mockedList).clear(); + try { + mockedList.clear(); + } catch (RuntimeException e) { + System.err.println(e.getMessage()); + assertThat(e.getMessage()).contains("clear exception"); + } + } + + /** + * 模拟调用方法时的参数匹配 + */ + @Test + void test05() { + // anyInt()匹配任何int参数,这意味着参数为任意值,其返回值均是element + when(mockedList.get(anyInt())).thenReturn("element"); + // 此时打印是element + System.out.println(mockedList.get(999)); + } + + /** + * 模拟方法调用次数 + */ + @Test + void test06() { + // 调用add一次 + mockedList.add("once"); + // 下面两个写法验证效果一样,均验证add方法是否被调用了一次 + verify(mockedList).add("once"); + verify(mockedList, times(1)).add("once"); + } + + /** + * 校验行为 + */ + @Test + void test07() { + // using mock object + mockedList.add("one"); + // verification + verify(mockedList).add("one"); + verify(mockedList).clear(); + } + + /** + * 模拟方法调用(Stubbing) + */ + @Test + void test08() { + // stubbing + when(mockedList.get(0)).thenReturn("first"); + when(mockedList.get(1)).thenThrow(new RuntimeException()); + // following prints "first" + System.out.println(mockedList.get(0)); + try { + // following throws runtime exception + System.out.println(mockedList.get(1)); + } catch (RuntimeException e) { + System.out.println(e.getMessage()); + } + // following prints "null" because get(999) was not stubbed + System.out.println(mockedList.get(999)); + + verify(mockedList).get(0); + } + + /** + * 校验方法调用次数 + */ + @Test + void test09() { + // using mock + mockedList.add("once"); + + mockedList.add("twice"); + mockedList.add("twice"); + + mockedList.add("three"); + mockedList.add("three"); + mockedList.add("three"); + // following two verifications work exactly the same - times(1) is used by default + verify(mockedList).add("once"); + verify(mockedList, times(1)).add("once"); + // exact number of invocations verification + verify(mockedList, times(2)).add("twice"); + verify(mockedList, times(3)).add("three"); + // verification using never(). never() is an alias to times(0) + verify(mockedList, never()).add("never happened"); + // verification using atLeast()/atMost() + verify(mockedList, atLeastOnce()).add("three"); + verify(mockedList, atLeast(2)).add("twice"); + verify(mockedList, atMost(5)).add("three"); + } + + /** + * 校验方法调用顺序 + */ + @Test + void test10() { + // A. Single mock whose methods must be invoked in a particular order + List singleMock = mock(List.class); + // using a single mock + singleMock.add("was added first"); + singleMock.add("was added second"); + // create an inOrder verifier for a single mock + InOrder inOrder = inOrder(singleMock); + // following will make sure that add is first called with "was added first, then + // with "was added second" + inOrder.verify(singleMock).add("was added first"); + inOrder.verify(singleMock).add("was added second"); + + // B. Multiple mocks that must be used in a particular order + List firstMock = mock(List.class); + List secondMock = mock(List.class); + // using mocks + firstMock.add("was called first"); + secondMock.add("was called second"); + // create inOrder object passing any mocks that need to be verified in order + inOrder = inOrder(firstMock, secondMock); + // following will make sure that firstMock was called before secondMock + inOrder.verify(firstMock).add("was called first"); + inOrder.verify(secondMock).add("was called second"); + // Oh, and A + B can be mixed together at will + } + + /** + * 校验方法是否从未调用 + */ + @Test + void test11() { + List mockOne = mock(List.class); + List mockTwo = mock(List.class); + List mockThree = mock(List.class); + // using mocks - only mockOne is interacted + mockOne.add("one"); + // ordinary verification + verify(mockOne).add("one"); + // verify that method was never called on a mock + verify(mockOne, never()).add("two"); + // verify that other mocks were not interacted + verifyZeroInteractions(mockTwo, mockThree); + } + + /** + * 重置Mock + */ + void test12() { + List mock = mock(List.class); + when(mock.size()).thenReturn(10); + mock.add(1); + reset(mock); + } + +} diff --git a/codes/javatech/pom.xml b/codes/javatech/pom.xml new file mode 100644 index 00000000..def6c001 --- /dev/null +++ b/codes/javatech/pom.xml @@ -0,0 +1,23 @@ + + + 4.0.0 + + io.github.dunwu.javatech + javatech + 1.0.0 + pom + JAVATECH + Java 技术示例源码 + + + javatech-cache + javatech-io + javatech-lib + javatech-log + javatech-mq + javatech-server + javatech-test + javatech-others + + diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index 8ed2745b..d71b76ca 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -29,28 +29,60 @@ module.exports = { editLinkText: '帮助我们改善此页面!', lastUpdated: '上次更新', nav: [ + { + text: 'JavaEE', + link: '/javaee/', + }, + { + text: '框架', + link: '/framework/', + }, + { + text: '缓存', + link: '/cache/', + }, + { + text: '消息队列', + link: '/mq/', + }, + { + text: 'LIB库', + link: '/lib/', + }, + { + text: '微服务', + link: '/microservice/', + }, + { + text: '安全', + link: '/security/', + }, + { + text: '测试', + link: '/test/', + }, + { + text: '服务器', + link: '/server/', + }, { text: '工具', - link: '/javatool/', + link: '/tool/', items: [ { text: '构建', - link: '/javatool/build/', + link: '/tool/build/', }, { text: 'IDE', - link: '/javatool/ide/', + link: '/tool/ide/', }, { text: '监控', - link: '/javatool/monitor/', + link: '/tool/monitor/', }, ], }, - { - text: 'JavaEE', - link: '/javaee/', - }, { text: '✨ Java系列', ariaLabel: 'Java', @@ -67,12 +99,6 @@ module.exports = { target: '_blank', rel: '', }, - { - text: 'JavaTech 教程 📚', - link: 'https://dunwu.github.io/javatech/', - target: '_blank', - rel: '', - }, { text: 'Spring 教程 📚', link: 'https://dunwu.github.io/spring-tutorial/', diff --git a/docs/README.md b/docs/README.md index 01306570..c1a0c0af 100644 --- a/docs/README.md +++ b/docs/README.md @@ -14,12 +14,19 @@ footer: CC-BY-SA-4.0 Licensed | Copyright © 2018-Now Dunwu > > - 🔁 项目同步维护:[Github](https://github.com/dunwu/java-tutorial/) | [Gitee](https://gitee.com/turnon/java-tutorial/) > - 📖 电子书阅读:[Github Pages](https://dunwu.github.io/java-tutorial/) | [Gitee Pages](https://turnon.gitee.io/java-tutorial/) +> +> 说明: +> +> - 下面的内容清单中,凡是有 📚 标记的技术,都已整理成详细的教程。 +> - 部分技术因为可以应用于不同领域,所以可能会同时出现在不同的类别下。 -## javacore +## 📖 内容 + +### JavaSE > 📚 [javacore](https://dunwu.github.io/javacore/) 是一个 Java 核心技术教程。内容包含:Java 基础特性、Java 高级特性、Java 并发、JVM、Java IO 等。 -## javaee +### JavaEE > [☕ JavaEE](javaee/README.md) 技术是 Java Web 的基石 @@ -29,71 +36,174 @@ footer: CC-BY-SA-4.0 Licensed | Copyright © 2018-Now Dunwu - [JavaEE 之 Filter 和 Listener](javaee/javaee-filter-listener.md) - [JavaEE 之 Cookie 和 Session](javaee/javaee-cookie-sesion.md) -## javatech +### Java 工具 -> 📚 [javatech](https://dunwu.github.io/javatech/) 是一个 Java 应用技术教程。内容包含 Java 开发中常见应用技术,如:框架、缓存、消息队列、存储、安全、微服务、测试、服务器等。 +#### 构建 -## spring-tutorial +> Java 项目需要通过 [**构建工具**](tool/build) 来管理项目依赖,完成编译、打包、发布、生成 JavaDoc 等任务。 +> +> - 目前最主流的构建工具是 Maven,它的功能非常强大。 +> - Gradle 号称是要替代 Maven 等构件工具,它的版本管理确实简洁,但是需要学习 Groovy,学习成本比 Maven 高。 +> - Ant 功能比 Maven 和 Gradle 要弱,现代 Java 项目基本不用了,但也有一些传统的 Java 项目还在使用。 -> 📚 [spring-tutorial](https://dunwu.github.io/spring-tutorial/) 是一个 Spring 实战教程。 +- [Maven](tool/build/maven) 📚 + - [Maven 入门指南](tool/build/maven/maven-quickstart.md) + - [Maven 教程之 pom.xml 详解](tool/build/maven/maven-pom.md) + - [Maven 教程之 settings.xml 详解](tool/build/maven/maven-settings.md) + - [Maven 实战问题和最佳实践](tool/build/maven/maven-action.md) + - [Maven 教程之发布 jar 到私服或中央仓库](tool/build/maven/maven-deploy.md) + - [Maven 插件之代码检查](tool/build/maven/maven-checkstyle-plugin.md) +- [Ant 简易教程](tool/build/ant.md) -## spring-boot-tutorial +#### IDE -> 📚 [Spring Boot 教程](https://dunwu.github.io/spring-boot-tutorial/) 是一个 Spring Boot 实战教程。 +> 自从有了 [**IDE**](tool/ide),写代码从此就告别了刀耕火种的蛮荒时代。 +> +> - [Eclipse](tool/ide/eclipse.md) 是久负盛名的开源 Java IDE,我的学生时代一直使用它写 Java。 +> - 曾经抗拒从转 [Intellij Idea](tool/ide/intellij-idea.md) ,但后来发现真香,不得不说,确实是目前最优秀的 Java IDE。 +> - 你可以在 [vscode](tool/ide/vscode.md) 中写各种语言,只要安装相应插件即可。如果你的项目中使用了很多种编程语言,又懒得在多个 IDE 之间切换,那么就用 vscode 来一网打尽吧。 -## javatool +- [Intellij Idea](tool/ide/intellij-idea.md) +- [Eclipse](tool/ide/eclipse.md) +- [vscode](tool/ide/vscode.md) -### 构建 +#### 监控/诊断 -> Java 项目需要通过 [**构建工具**](javatool/build) 来管理项目依赖,完成编译、打包、发布、生成 JavaDoc 等任务。 -> -> - 目前最主流的构建工具是 Maven,它的功能非常强大。 -> - Gradle 号称是要替代 Maven 等构件工具,它的版本管理确实简洁,但是需要学习 Groovy,学习成本比 Maven 高。 -> - Ant 功能比 Maven 和 Gradle 要弱,现代 Java 项目基本不用了,但也有一些传统的 Java 项目还在使用。 +> [监控/诊断](tool/monitor) 工具主要用于 Java 应用的运维。通过采集、分析、存储、可视化应用的有效数据,帮助开发者、使用者快速定位问题,找到性能瓶颈。 -- [Maven](javatool/build/maven) 📚 - - [Maven 入门指南](javatool/build/maven/maven-quickstart.md) - - [Maven 教程之 pom.xml 详解](javatool/build/maven/maven-pom.md) - - [Maven 教程之 settings.xml 详解](javatool/build/maven/maven-settings.md) - - [Maven 实战问题和最佳实践](javatool/build/maven/maven-action.md) - - [Maven 教程之发布 jar 到私服或中央仓库](javatool/build/maven/maven-deploy.md) - - [Maven 插件之代码检查](javatool/build/maven/maven-checkstyle-plugin.md) -- [Ant 简易教程](javatool/build/ant.md) +- [监控工具对比](tool/monitor/monitor-summary.md) +- [CAT](tool/monitor/cat.md) +- [Zipkin](tool/monitor/zipkin.md) +- [SkyWalking](tool/monitor/skywalking.md) +- [Arthas](tool/monitor/arthas.md) -### IDE +### [框架](framework) -> 自动有了 [**IDE**](javatool/ide),写代码从此就告别了刀耕火种的蛮荒时代。 -> -> - [Eclipse](javatool/ide/eclipse.md) 是久负盛名的开源 Java IDE,我的学生时代一直使用它写 Java。 -> - 曾经抗拒从转 [Intellij Idea](javatool/ide/intellij-idea.md) ,但后来发现真香,不得不说,确实是目前最优秀的 Java IDE。 -> - 你可以在 [vscode](javatool/ide/vscode.md) 中写各种语言,只要安装相应插件即可。如果你的项目中使用了很多种编程语言,又懒得在多个 IDE 之间切换,那么就用 vscode 来一网打尽吧。 +#### Spring -- [Intellij Idea](javatool/ide/intellij-idea.md) -- [Eclipse](javatool/ide/eclipse.md) -- [vscode](javatool/ide/vscode.md) +[spring-tutorial 📚](https://dunwu.github.io/spring-tutorial/) 是一个 Spring 实战教程。 -### 监控/诊断 +#### Spring Boot -> [监控/诊断](javatool/monitor) 工具主要用于 Java 应用的运维。通过采集、分析、存储、可视化应用的有效数据,帮助开发者、使用者快速定位问题,找到性能瓶颈。 +[Spring Boot 教程 📚](https://dunwu.github.io/spring-boot-tutorial/) 是一个 Spring Boot 实战教程。 -- [监控工具对比](javatool/monitor/monitor-summary.md) -- [CAT](javatool/monitor/cat.md) -- [Zipkin](javatool/monitor/zipkin.md) -- [SkyWalking](javatool/monitor/skywalking.md) -- [Arthas](javatool/monitor/arthas.md) +#### 其他 ---- +- [Spring Cloud](https://github.com/dunwu/spring-cloud-tutorial) 📚 +- [MyBatis](framework/mybatis) + - [Mybatis 应用指南](framework/mybatis/Mybatis应用指南.md) + - [Mybatis 原理](framework/mybatis/Mybatis原理.md) +- [Netty](framework/netty.md) -## 其他技术栈 +### [消息队列](mq) -- [db-tutorial](https://dunwu.github.io/db-tutorial/) - 是对数据库领域开发经验的总结。内容包含:关系型数据库和 Nosql 理论、Mysql、Redis 等。 -- [algorithm-tutorial](https://dunwu.github.io/algorithm-tutorial/) - 是对数据结构和算法的总结。内容包含:一些基本的数据结构、算法。 -- [linux-tutorial](https://github.com/dunwu/linux-tutorial) - 是对 Linux 操作系统的经验总结。内容包含:Linux 常用命令;各种常见软件的 Linux 环境安装配置;运维、部署脚本;Shell、Python 语法教程;Git、Docker 教程。 -- [frontend-tutorial](https://github.com/dunwu/frontend-tutorial) - 前端教程 +> 消息队列(Message Queue,简称 MQ)技术是分布式应用间交换信息的一种技术。 +> +> 消息队列主要解决应用耦合,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。 +> +> 如果想深入学习各种消息队列产品,建议先了解一下 [消息队列基本原理](https://github.com/dunwu/blog/blob/master/source/_posts/theory/mq.md) ,有助于理解消息队列特性的实现和设计思路。 ---- +- [消息队列基本原理](mq/消息队列基本原理.md) +- [消息队列面试题](mq/消息队列面试.md) 💯 +- [Kafka](https://dunwu.github.io/bigdata-tutorial/kafka) 📚 +- [RocketMQ](mq/rocketmq.md) +- [ActiveMQ](mq/activemq.md) + +### [缓存](cache) + +> 缓存可以说是优化系统性能的第一手段,在各种技术中都会有缓存的应用。 +> +> 如果想深入学习缓存,建议先了解一下 [缓存基本原理](https://github.com/dunwu/blog/blob/master/source/_posts/theory/cache.md),有助于理解缓存的特性、原理,使用缓存常见的问题及解决方案。 + +- [缓存面试题](cache/cache-interview.md) 💯 +- [缓存基本原理](https://github.com/dunwu/blog/blob/master/source/_posts/theory/cache.md) +- [Java 缓存框架](cache/cache-framework.md) - 关键词:Spring Cache、J2Cache、JetCache +- [Redis 教程](https://dunwu.github.io/db-tutorial/nosql/redis/) 📚 +- [Memcached 应用指南](cache/memcached.md) +- [Java 缓存库](cache/cache-libs.md) - 关键词:ConcurrentHashMap、LRUHashMap、Guava Cache、Caffeine、Ehcache +- [Ehcache 应用指南](cache/ehcache.md) +- [Http 缓存](cache/http-cache.md) + +### [微服务](microservice) + +- [Dubbo](microservice/dubbo.md) +- [**Spring Cloud**](https://github.com/dunwu/spring-cloud-tutorial) 📚 + - Eureka + - Consul + - Nacos + - Zuul + - Gateway +- 通信 + - [Netty](framework/netty.md) + +### 搜索引擎 + +- [ElasticSearch](https://dunwu.github.io/db-tutorial/nosql/elasticsearch/) 📚 +- Solr +- Lucene + +### [安全](security) + +> Java 领域比较流行的安全框架就是 shiro 和 spring-security。 +> +> shiro 更为简单、轻便,容易理解,能满足大多数基本安全场景下的需要。 +> +> spring-security 功能更丰富,也比 shiro 更复杂。值得一提的是由于 spring-security 是 spring 团队开发,所以集成 spring 和 spring-boot 框架更容易。 + +- [Shiro](security/shiro.md) +- [Spring Security](security/spring-security.md) + +### [测试](test) -## 学习资源 +- [Junit](test/junit.md) +- [Mockito](test/mockito.md) +- [JMH](test/jmh.md) +- [Jmeter](test/jmeter.md) + +### [服务器](server) + +> Tomcat 和 Jetty 都是 Java 比较流行的轻量级服务器。 +> +> Nginx 是目前最流行的反向代理服务器,也常用于负载均衡。 + +- [Tomcat 应用指南](server/Tomcat应用指南.md) +- [Tomcat 连接器](server/Tomcat连接器.md) +- [Tomcat 容器](server/Tomcat容器.md) +- [Tomcat 优化](server/Tomcat优化.md) +- [Jetty](server/jetty.md) +- [Nginx](https://github.com/dunwu/nginx-tutorial) 📚 + +### [大数据](https://dunwu.github.io/bigdata-tutorial) + +> 大数据技术点以归档在:[bigdata-tutorial](https://dunwu.github.io/bigdata-tutorial) + +- [Hdfs](https://dunwu.github.io/bigdata-tutorial/hdfs) 📚 +- [Hbase](https://dunwu.github.io/bigdata-tutorial/hbase) 📚 +- [Hive](https://dunwu.github.io/bigdata-tutorial/hive) 📚 +- [MapReduce](https://dunwu.github.io/bigdata-tutorial/mapreduce) +- [Yarn](https://dunwu.github.io/bigdata-tutorial/yarn) +- [ZooKeeper](https://dunwu.github.io/bigdata-tutorial/zookeeper) 📚 +- [Kafka](https://dunwu.github.io/bigdata-tutorial/kafka) 📚 +- Spark +- Storm +- [Flink](https://dunwu.github.io/bigdata-tutorial/tree/master/docs/flink) + +### [LIB](lib) + +- [日志](lib/javalib-log.md) - [log4j2](https://logging.apache.org/log4j/2.x/)、[logback](https://logback.qos.ch/)、log4j、[Slf4j](http://www.slf4j.org/) +- [序列化](lib/serialized/) + - [JSON](lib/serialized/javalib-json.md) - [fastjson](https://github.com/alibaba/fastjson)、[Jackson](https://github.com/FasterXML/jackson)、[Gson](https://github.com/google/gson) + - [二进制](lib/serialized/javalib-binary.md) - [Protobuf](https://developers.google.com/protocol-buffers)、[Thrift](https://thrift.apache.org/)、[Hessian](http://hessian.caucho.com/)、[Kryo](https://github.com/EsotericSoftware/kryo)、[FST](https://github.com/RuedigerMoeller/fast-serialization) +- [模板引擎](lib/template) - [Freemark](lib/template/freemark.md)、[Velocity](lib/template/velocity.md)、[Thymeleaf](lib/template/thymeleaf.md) +- JavaBean - [Lombok](lib/bean/lombok.md)、[Dozer](lib/bean/dozer.md) +- 工具包 + - [apache common](https://commons.apache.org/) - 老牌 Java 工具集 + - [guava](https://github.com/google/guava) - Google Java 工具包 + - [hutool](https://github.com/dromara/hutool) - Hutool 是一个小而全的 Java 工具类库,且中文文档、注释比较齐备 +- 辅助 + - [swagger](https://swagger.io/) - 自动生成 API 文档(半侵入式) + +## 📚 资料 - Java 经典书籍 - [《Effective Java 中文版》](https://item.jd.com/12507084.html) - 本书介绍了在 Java 编程中 78 条极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。同推荐《重构 : 改善既有代码的设计》、《代码整洁之道》、《代码大全》,有一定的内容重叠。 @@ -107,3 +217,18 @@ footer: CC-BY-SA-4.0 Licensed | Copyright © 2018-Now Dunwu - [《HTTP 权威指南》](https://item.jd.com/11056556.html) - 本书尝试着将 HTTP 中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节,对 HTTP 各方面的特性进行了介绍。纵观全书,对 HTTP“为什么”这样做进行了详细的解释,而不仅仅停留在它是“怎么做”的。 - [《TCP/IP 详解 系列》](https://item.jd.com/11966296.html) - 完整而详细的 TCP/IP 协议指南。针对任何希望理解 TCP/IP 协议是如何实现的读者设计。 - [《剑指 Offer:名企面试官精讲典型编程题》](https://item.jd.com/12163054.html) - 剖析了 80 个典型的编程面试题,系统整理基础知识、代码质量、解题思路、优化效率和综合能力这 5 个面试要点。 + +## 🚪 传送 + +◾ 🏠 [JAVA-TUTORIAL 首页](https://github.com/dunwu/java-tutorial) ◾ 🎯 [我的博客](https://github.com/dunwu/blog) ◾ + +> 你可能会感兴趣: + +- [Java 教程](https://github.com/dunwu/java-tutorial) 📚 +- [JavaCore 教程](https://dunwu.github.io/javacore/) 📚 +- [Spring 教程](https://dunwu.github.io/spring-tutorial/) 📚 +- [Spring Boot 教程](https://dunwu.github.io/spring-boot-tutorial/) 📚 +- [数据库教程](https://dunwu.github.io/db-tutorial/) 📚 +- [数据结构和算法教程](https://dunwu.github.io/algorithm-tutorial/) 📚 +- [Linux 教程](https://dunwu.github.io/linux-tutorial/) 📚 +- [Nginx 教程](https://github.com/dunwu/nginx-tutorial/) 📚 diff --git a/docs/cache/README.md b/docs/cache/README.md new file mode 100644 index 00000000..2af21d9b --- /dev/null +++ b/docs/cache/README.md @@ -0,0 +1,36 @@ +# Java 和缓存 + +> 缓存可以说是优化系统性能的第一手段,在各种技术中都会有缓存的应用。 +> +> 如果想深入学习缓存,建议先了解一下 [缓存基本原理](https://github.com/dunwu/blog/blob/master/source/_posts/theory/cache.md),有助于理解缓存的特性、原理,使用缓存常见的问题及解决方案。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200710163555.png) + +## 📖 内容 + +- [缓存面试题](cache-interview.md) 💯 +- [缓存基本原理](https://github.com/dunwu/blog/blob/master/source/_posts/theory/cache.md) +- [Java 缓存框架](cache-framework.md) - 关键词:Spring Cache、J2Cache、JetCache +- [Redis 教程](https://dunwu.github.io/db-tutorial/nosql/redis/) 📚 +- [Memcached 应用指南](memcached.md) +- [Java 缓存库](cache-libs.md) - 关键词:ConcurrentHashMap、LRUHashMap、Guava Cache、Caffeine、Ehcache +- [Ehcache 应用指南](ehcache.md) +- [Http 缓存](http-cache.md) + +## 📚 资料 + +- [JSR107](https://www.jcp.org/en/jsr/detail?id=107) +- [Spring Cache 官方文档](https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/integration.html#cache) +- [Spring Boot Cache 特性官方文档](https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/spring-boot-features.html#boot-features-caching) +- [J2Cache Gitee](https://gitee.com/ld/J2Cache) +- [JetCache Github](https://github.com/alibaba/jetcache) +- [JetCache wiki](https://github.com/alibaba/jetcache/wiki/Home_CN) +- [Memcached 官网](https://memcached.org/) +- [Memcached Github](https://github.com/memcached/memcached/) +- [Redis 官网](https://redis.io/) +- [Redis github](https://github.com/antirez/redis) +- [Redis 官方文档中文版](http://redis.cn/) + +## 🚪 传送 + +◾ 🏠 [JAVA-TUTORIAL 首页](https://github.com/dunwu/java-tutorial) ◾ 🎯 [我的博客](https://github.com/dunwu/blog) ◾ diff --git a/docs/cache/cache-framework.md b/docs/cache/cache-framework.md new file mode 100644 index 00000000..e42445ae --- /dev/null +++ b/docs/cache/cache-framework.md @@ -0,0 +1,341 @@ +# Java 缓存框架 + +> 关键词:Spring Cache、J2Cache、JetCache + + + +- [一 、JSR 107](#一-jsr-107) +- [二、Spring Cache](#二spring-cache) + - [开启缓存注解](#开启缓存注解) + - [spring 缓存注解 API](#spring-缓存注解-api) +- [三、Spring Boot Cache](#三spring-boot-cache) + - [Spring Boot Cache 快速入门](#spring-boot-cache-快速入门) +- [四、JetCache](#四jetcache) + - [jetcache 快速入门](#jetcache-快速入门) +- [五、j2cache](#五j2cache) +- [六、总结](#六总结) +- [参考资料](#参考资料) + + + +## 一 、JSR 107 + +[JSR107](https://www.jcp.org/en/jsr/detail?id=107) 中制订了 Java 缓存的规范。 + +因此,在很多缓存框架、缓存库中,其 API 都参考了 JSR 107 规范。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200709174139.png) + +Java Caching 定义了 5 个核心接口 + +- **CachingProvider** - 定义了创建、配置、获取、管理和控制多个 `CacheManager`。一个应用可以在运行期访问多个 `CachingProvider`。 +- **CacheManager** - 定义了创建、配置、获取、管理和控制多个唯一命名的 Cache,这些 Cache 存在于 CacheManager 的上下文中。一个 CacheManager 仅被一个 CachingProvider 所拥有。 +- **Cache** - 是一个类似 Map 的数据结构并临时存储以 Key 为索引的值。一个 Cache 仅被一个 CacheManager 所拥有。 +- **Entry** - 是一个存储在 Cache 中的 key-value 对。 +- **Expiry** - 每一个存储在 Cache 中的条目有一个定义的有效期,即 Expiry Duration。一旦超过这个时间,条目为过期的状态。一旦过期,条目将不可访问、更新和删除。缓存有效期可以通过 ExpiryPolicy 设置。 + +## 二、Spring Cache + +> 详见:[Spring Cache 官方文档](https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/integration.html#cache) + +Spring 作为 Java 开发最著名的框架,也提供了缓存功能的框架—— Spring Cache。 + +Spring 支持基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如:EHCache 或 OSCache),而是一个对缓存使用的抽象,通过在既有代码中添加少量它定义的各种 annotation,即能够达到缓存方法的返回对象的效果。 + +Spring Cache 的特点: + +- 通过缓存注解即可支持缓存功能 +- 支持 Spring EL 表达式 +- 支持 AspectJ +- 支持自定义 key 和缓存管理 + +### 开启缓存注解 + +Spring 为缓存功能提供了注解功能,但是你必须启动注解。 + +有两种方式: + +(一)使用标记注解 `@EnableCaching` + +这种方式对于 Spring 或 Spring Boot 项目都适用。 + +```java +@Configuration +@EnableCaching +public class AppConfig { +} +``` + +(二)在 xml 中声明 + +```xml + +``` + +### spring 缓存注解 API + +Spring 对缓存的支持类似于对事务的支持。 + +首先使用注解标记方法,相当于定义了切点,然后使用 Aop 技术在这个方法的调用前、调用后获取方法的入参和返回值,进而实现了缓存的逻辑。 + +#### @Cacheable + +**`@Cacheable` 用于触发缓存**。 + +表明所修饰的方法是可以缓存的:当第一次调用这个方法时,它的结果会被缓存下来,在缓存的有效时间内,以后访问这个方法都直接返回缓存结果,不再执行方法中的代码段。 + +这个注解可以用`condition`属性来设置条件,如果不满足条件,就不使用缓存能力,直接执行方法。 + +可以使用`key`属性来指定 key 的生成规则。 + +#### @CachePut + +**`@CachePut` 用于更新缓存**。 + +与`@Cacheable`不同,`@CachePut`不仅会缓存方法的结果,还会执行方法的代码段。 + +它支持的属性和用法都与`@Cacheable`一致。 + +#### @CacheEvict + +**`@CacheEvict` 用于清除缓存**。 + +与`@Cacheable`功能相反,`@CacheEvict`表明所修饰的方法是用来删除失效或无用的缓存数据。 + +下面是`@Cacheable`、`@CacheEvict`和`@CachePut`基本使用方法的一个集中展示: + +```java +@Service +public class UserService { + // @Cacheable可以设置多个缓存,形式如:@Cacheable({"books", "isbns"}) + @Cacheable(value={"users"}, key="#user.id") + public User findUser(User user) { + return findUserInDB(user.getId()); + } + + @Cacheable(value = "users", condition = "#user.getId() <= 2") + public User findUserInLimit(User user) { + return findUserInDB(user.getId()); + } + + @CachePut(value = "users", key = "#user.getId()") + public void updateUser(User user) { + updateUserInDB(user); + } + + @CacheEvict(value = "users") + public void removeUser(User user) { + removeUserInDB(user.getId()); + } + + @CacheEvict(value = "users", allEntries = true) + public void clear() { + removeAllInDB(); + } +} +``` + +#### @Caching + +**`@Caching` 用于组合定义多种缓存功能**。 + +如果需要使用同一个缓存注解(`@Cacheable`、`@CacheEvict`或`@CachePut`)多次修饰一个方法,就需要用到`@Caching`。 + +```java +@Caching(evict = { @CacheEvict("primary"), @CacheEvict(cacheNames="secondary", key="#p0") }) +public Book importBooks(String deposit, Date date) +``` + +#### @CacheConfig + +**`@CacheConfig` 用于定义公共缓存配置**。 + +与前面的缓存注解不同,这是一个类级别的注解。 + +如果类的所有操作都是缓存操作,你可以使用`@CacheConfig`来指定类,省去一些配置。 + +```java +@CacheConfig("books") +public class BookRepositoryImpl implements BookRepository { + @Cacheable + public Book findBook(ISBN isbn) {...} +} +``` + +## 三、Spring Boot Cache + +> 详见:[Spring Boot Cache 特性官方文档](https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/spring-boot-features.html#boot-features-caching) + +Spring Boot Cache 是在 Spring Cache 的基础上做了封装,使得使用更为便捷。 + +### Spring Boot Cache 快速入门 + +(1)引入依赖 + +```xml + + org.springframework.boot + spring-boot-starter-cache + + + + + org.springframework.boot + spring-boot-starter-data-redis + +``` + +(2)缓存配置 + +例如,选用缓存为 redis,则需要配置 redis 相关的配置项(如:数据源、连接池等配置信息) + +```properties +# 缓存类型,支持类型:GENERIC、JCACHE、EHCACHE、HAZELCAST、INFINISPAN、COUCHBASE、REDIS、CAFFEINE、SIMPLE +spring.cache.type = redis +# 全局缓存时间 +spring.cache.redis.time-to-live = 60s + +# Redis 配置 +spring.redis.database = 0 +spring.redis.host = localhost +spring.redis.port = 6379 +spring.redis.password = +``` + +(3)使用 `@EnableCaching` 开启缓存 + +```java +@EnableCaching +@SpringBootApplication +public class Application { + // ... +} +``` + +(4)缓存注解(`@Cacheable`、`@CachePut`、`@CacheEvit` 等)使用方式与 Spring Cache 完全一样 + +## 四、JetCache + +> JetCache 是一个基于 Java 的缓存系统封装,提供统一的 API 和注解来简化缓存的使用。 JetCache 提供了比 SpringCache 更加强大的注解,可以原生的支持 TTL、两级缓存、分布式自动刷新,还提供了`Cache`接口用于手工缓存操作。 当前有四个实现,`RedisCache`、`TairCache`(此部分未在 github 开源)、`CaffeineCache`(in memory)和一个简易的`LinkedHashMapCache`(in memory),要添加新的实现也是非常简单的。 +> +> 详见:[jetcache Github](https://github.com/alibaba/jetcache) + +### jetcache 快速入门 + +如果使用 Spring Boot,可以按如下的方式配置(这里使用了 jedis 客户端连接 redis,如果需要集群、读写分离、异步等特性支持请使用[lettuce](https://github.com/alibaba/jetcache/wiki/RedisWithLettuce_CN)客户端)。 + +(1)引入 POM + +```xml + + com.alicp.jetcache + jetcache-starter-redis + 2.5.14 + +``` + +(2)配置 + +配置一个 spring boot 风格的 application.yml 文件,把他放到资源目录中 + +```yml +jetcache: + statIntervalMinutes: 15 + areaInCacheName: false + local: + default: + type: linkedhashmap + keyConvertor: fastjson + remote: + default: + type: redis + keyConvertor: fastjson + valueEncoder: java + valueDecoder: java + poolConfig: + minIdle: 5 + maxIdle: 20 + maxTotal: 50 + host: 127.0.0.1 + port: 6379 +``` + +(3)开启缓存 + +然后创建一个 App 类放在业务包的根下,EnableMethodCache,EnableCreateCacheAnnotation 这两个注解分别激活 Cached 和 CreateCache 注解,其他和标准的 Spring Boot 程序是一样的。这个类可以直接 main 方法运行。 + +```java +package com.company.mypackage; + +import com.alicp.jetcache.anno.config.EnableCreateCacheAnnotation; +import com.alicp.jetcache.anno.config.EnableMethodCache; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +@EnableMethodCache(basePackages = "com.company.mypackage") +@EnableCreateCacheAnnotation +public class MySpringBootApp { + public static void main(String[] args) { + SpringApplication.run(MySpringBootApp.class); + } +} +``` + +(4)API 基本使用 + +创建缓存实例 + +通过 @CreateCache 注解创建一个缓存实例,默认超时时间是 100 秒 + +```java +@CreateCache(expire = 100) +private Cache userCache; +``` + +用起来就像 map 一样 + +```java +UserDO user = userCache.get(123L); +userCache.put(123L, user); +userCache.remove(123L); +``` + +创建一个两级(内存+远程)的缓存,内存中的元素个数限制在 50 个。 + +```java +@CreateCache(name = "UserService.userCache", expire = 100, cacheType = CacheType.BOTH, localLimit = 50) +private Cache userCache; +``` + +name 属性不是必须的,但是起个名字是个好习惯,展示统计数据的使用,会使用这个名字。如果同一个 area 两个 @CreateCache 的 name 配置一样,它们生成的 Cache 将指向同一个实例。 + +创建方法缓存 + +使用 @Cached 方法可以为一个方法添加上缓存。JetCache 通过 Spring AOP 生成代理,来支持缓存功能。注解可以加在接口方法上也可以加在类方法上,但需要保证是个 Spring bean。 + +```java +public interface UserService { + @Cached(name="UserService.getUserById", expire = 3600) + User getUserById(long userId); +} +``` + +## 五、j2cache + +## 六、总结 + +使用缓存框架,使得开发缓存功能非常便捷。 + +如果你的系统只需要使用一种缓存,那么推荐使用 Spring Boot Cache。Spring Boot Cache 在 Spring Cache 基础上做了封装,使用更简单、方便。 + +如果你的系统需要使用多级缓存,那么推荐使用 jetcache。 + +## 参考资料 + +- [JSR107](https://www.jcp.org/en/jsr/detail?id=107) +- [Spring Cache 官方文档](https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/integration.html#cache) +- [Spring Boot Cache 特性官方文档](https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/spring-boot-features.html#boot-features-caching) +- [J2Cache Gitee](https://gitee.com/ld/J2Cache) +- [jetcache Github](https://github.com/alibaba/jetcache) +- [jetcache wiki](https://github.com/alibaba/jetcache/wiki/Home_CN) diff --git a/docs/cache/cache-interview.md b/docs/cache/cache-interview.md new file mode 100644 index 00000000..cb619713 --- /dev/null +++ b/docs/cache/cache-interview.md @@ -0,0 +1,571 @@ +# 缓存夺命连环问 + +## 为什么要用缓存? + +用缓存,主要有两个用途:**高性能**、**高并发**。 + +### 高性能 + +假设这么个场景,你有个操作,一个请求过来,吭哧吭哧你各种乱七八糟操作 mysql,半天查出来一个结果,耗时 600ms。但是这个结果可能接下来几个小时都不会变了,或者变了也可以不用立即反馈给用户。那么此时咋办? + +缓存啊,折腾 600ms 查出来的结果,扔缓存里,一个 key 对应一个 value,下次再有人查,别走 mysql 折腾 600ms 了,直接从缓存里,通过一个 key 查出来一个 value,2ms 搞定。性能提升 300 倍。 + +就是说对于一些需要复杂操作耗时查出来的结果,且确定后面不怎么变化,但是有很多读请求,那么直接将查询出来的结果放在缓存中,后面直接读缓存就好。 + +### 高并发 + +mysql 这么重的数据库,压根儿设计不是让你玩儿高并发的,虽然也可以玩儿,但是天然支持不好。mysql 单机支撑到 `2000QPS` 也开始容易报警了。 + +所以要是你有个系统,高峰期一秒钟过来的请求有 1万,那一个 mysql 单机绝对会死掉。你这个时候就只能上缓存,把很多数据放缓存,别放 mysql。缓存功能简单,说白了就是 `key-value` 式操作,单机支撑的并发量轻松一秒几万十几万,支撑高并发 so easy。单机承载并发量是 mysql 单机的几十倍。 + +> 缓存是走内存的,内存天然就支撑高并发。 + +## 用了缓存之后会有什么不良后果? + +常见的缓存问题有以下几个: + +- [缓存与数据库双写不一致](https://github.com/doocs/advanced-java/blob/master/docs/high-concurrency/redis-consistence.md) +- [缓存雪崩、缓存穿透](https://github.com/doocs/advanced-java/blob/master/docs/high-concurrency/redis-caching-avalanche-and-caching-penetration.md) +- [缓存并发竞争](https://github.com/doocs/advanced-java/blob/master/docs/high-concurrency/redis-cas.md) + +后面再详细说明。 + +## redis 和 memcached 有啥区别? + +redis 支持复杂的数据结构 + +redis 相比 memcached 来说,拥有[更多的数据结构](https://github.com/doocs/advanced-java/blob/master/docs/high-concurrency/redis-data-types.md),能支持更丰富的数据操作。如果需要缓存能够支持更复杂的结构和操作, redis 会是不错的选择。 + +redis 原生支持集群模式 + +在 redis3.x 版本中,便能支持 cluster 模式,而 memcached 没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据。 + +性能对比 + +由于 redis 只使用**单核**,而 memcached 可以使用**多核**,所以平均每一个核上 redis 在存储小数据时比 memcached 性能更高。而在 100k 以上的数据中,memcached 性能要高于 redis。虽然 redis 最近也在存储大数据的性能上进行优化,但是比起 memcached,还是稍有逊色。 + +## 为啥 redis 单线程模型也能效率这么高? + +### redis 的线程模型 + +redis 内部使用文件事件处理器 `file event handler`,这个文件事件处理器是单线程的,所以 redis 才叫做单线程的模型。它采用 IO 多路复用机制同时监听多个 socket,将产生事件的 socket 压入内存队列中,事件分派器根据 socket 上的事件类型来选择对应的事件处理器进行处理。 + +文件事件处理器的结构包含 4 个部分: + +- 多个 socket +- IO 多路复用程序 +- 文件事件分派器 +- 事件处理器(连接应答处理器、命令请求处理器、命令回复处理器) + +多个 socket 可能会并发产生不同的操作,每个操作对应不同的文件事件,但是 IO 多路复用程序会监听多个 socket,会将产生事件的 socket 放入队列中排队,事件分派器每次从队列中取出一个 socket,根据 socket 的事件类型交给对应的事件处理器进行处理。 + +来看客户端与 redis 的一次通信过程: + +![img](https://github.com/doocs/advanced-java/blob/master/images/redis-single-thread-model.png) + +要明白,通信是通过 socket 来完成的,不懂的同学可以先去看一看 socket 网络编程。 + +首先,redis 服务端进程初始化的时候,会将 server socket 的 `AE_READABLE` 事件与连接应答处理器关联。 + +客户端 socket01 向 redis 进程的 server socket 请求建立连接,此时 server socket 会产生一个 `AE_READABLE` 事件,IO 多路复用程序监听到 server socket 产生的事件后,将该 socket 压入队列中。文件事件分派器从队列中获取 socket,交给**连接应答处理器**。连接应答处理器会创建一个能与客户端通信的 socket01,并将该 socket01 的 `AE_READABLE` 事件与命令请求处理器关联。 + +假设此时客户端发送了一个 `set key value` 请求,此时 redis 中的 socket01 会产生 `AE_READABLE` 事件,IO 多路复用程序将 socket01 压入队列,此时事件分派器从队列中获取到 socket01 产生的 `AE_READABLE` 事件,由于前面 socket01 的 `AE_READABLE` 事件已经与命令请求处理器关联,因此事件分派器将事件交给命令请求处理器来处理。命令请求处理器读取 socket01 的 `key value` 并在自己内存中完成 `key value` 的设置。操作完成后,它会将 socket01 的 `AE_WRITABLE` 事件与命令回复处理器关联。 + +如果此时客户端准备好接收返回结果了,那么 redis 中的 socket01 会产生一个 `AE_WRITABLE` 事件,同样压入队列中,事件分派器找到相关联的命令回复处理器,由命令回复处理器对 socket01 输入本次操作的一个结果,比如 `ok`,之后解除 socket01 的 `AE_WRITABLE` 事件与命令回复处理器的关联。 + +这样便完成了一次通信。 + +### 为啥 redis 单线程模型也能效率这么高? + +- 纯内存操作。 +- 核心是基于非阻塞的 IO 多路复用机制。 +- C 语言实现,一般来说,C 语言实现的程序“距离”操作系统更近,执行速度相对会更快。 +- 单线程反而避免了多线程的频繁上下文切换问题,预防了多线程可能产生的竞争问题。 + +## Redis 有哪些数据类型 + +redis 主要有以下几种数据类型: + +- string +- hash +- list +- set +- sorted set + +### string + +这是最简单的类型,就是普通的 set 和 get,做简单的 KV 缓存。 + +``` +set college szu +``` + +### hash + +这个是类似 map 的一种结构,这个一般就是可以将结构化的数据,比如一个对象(前提是**这个对象没嵌套其他的对象**)给缓存在 redis 里,然后每次读写缓存的时候,可以就操作 hash 里的**某个字段**。 + +```bash +hset person name bingo +hset person age 20 +hset person id 1 +hget person name +person = { + "name": "bingo", + "age": 20, + "id": 1 +} +``` + +### list + +list 是有序列表,这个可以玩儿出很多花样。 + +比如可以通过 list 存储一些列表型的数据结构,类似粉丝列表、文章的评论列表之类的东西。 + +比如可以通过 lrange 命令,读取某个闭区间内的元素,可以基于 list 实现分页查询,这个是很棒的一个功能,基于 redis 实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西,性能高,就一页一页走。 + +``` +# 0开始位置,-1结束位置,结束位置为-1时,表示列表的最后一个位置,即查看所有。 +lrange mylist 0 -1 +``` + +比如可以搞个简单的消息队列,从 list 头怼进去,从 list 尾巴那里弄出来。 + +``` +lpush mylist 1 +lpush mylist 2 +lpush mylist 3 4 5 + +# 1 +rpop mylist +``` + +### set + +set 是无序集合,自动去重。 + +直接基于 set 将系统里需要去重的数据扔进去,自动就给去重了,如果你需要对一些数据进行快速的全局去重,你当然也可以基于 jvm 内存里的 HashSet 进行去重,但是如果你的某个系统部署在多台机器上呢?得基于 redis 进行全局的 set 去重。 + +可以基于 set 玩儿交集、并集、差集的操作,比如交集吧,可以把两个人的粉丝列表整一个交集,看看俩人的共同好友是谁?对吧。 + +把两个大 V 的粉丝都放在两个 set 中,对两个 set 做交集。 + +``` +#-------操作一个set------- +# 添加元素 +sadd mySet 1 + +# 查看全部元素 +smembers mySet + +# 判断是否包含某个值 +sismember mySet 3 + +# 删除某个/些元素 +srem mySet 1 +srem mySet 2 4 + +# 查看元素个数 +scard mySet + +# 随机删除一个元素 +spop mySet + +#-------操作多个set------- +# 将一个set的元素移动到另外一个set +smove yourSet mySet 2 + +# 求两set的交集 +sinter yourSet mySet + +# 求两set的并集 +sunion yourSet mySet + +# 求在yourSet中而不在mySet中的元素 +sdiff yourSet mySet +``` + +### sorted set + +sorted set 是排序的 set,去重但可以排序,写进去的时候给一个分数,自动根据分数排序。 + +``` +zadd board 85 zhangsan +zadd board 72 lisi +zadd board 96 wangwu +zadd board 63 zhaoliu + +# 获取排名前三的用户(默认是升序,所以需要 rev 改为降序) +zrevrange board 0 3 + +# 获取某用户的排名 +zrank board zhaoliu +``` + +## 如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍一下么?redis 的哨兵原理能介绍一下么? + +如果你用 redis 缓存技术的话,肯定要考虑如何用 redis 来加多台机器,保证 redis 是高并发的,还有就是如何让 redis 保证自己不是挂掉以后就直接死掉了,即 redis 高可用。 + +由于此节内容较多,因此,会分为两个小节进行讲解。 + +- [redis 主从架构](https://github.com/doocs/advanced-java/blob/master/docs/high-concurrency/redis-master-slave.md) +- [redis 基于哨兵实现高可用](https://github.com/doocs/advanced-java/blob/master/docs/high-concurrency/redis-sentinel.md) + +redis 实现**高并发**主要依靠**主从架构**,一主多从,一般来说,很多项目其实就足够了,单主用来写入数据,单机几万 QPS,多从用来查询数据,多个从实例可以提供每秒 10w 的 QPS。 + +如果想要在实现高并发的同时,容纳大量的数据,那么就需要 redis 集群,使用 redis 集群之后,可以提供每秒几十万的读写并发。 + +redis 高可用,如果是做主从架构部署,那么加上哨兵就可以了,就可以实现,任何一个实例宕机,可以进行主备切换。 + +## redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现? + +### redis 过期策略 + +redis 过期策略是:**定期删除+惰性删除**。 + +所谓**定期删除**,指的是 redis 默认是每隔 100ms 就随机抽取一些设置了过期时间的 key,检查其是否过期,如果过期就删除。 + +假设 redis 里放了 10w 个 key,都设置了过期时间,你每隔几百毫秒,就检查 10w 个 key,那 redis 基本上就死了,cpu 负载会很高的,消耗在你的检查过期 key 上了。注意,这里可不是每隔 100ms 就遍历所有的设置过期时间的 key,那样就是一场性能上的**灾难**。实际上 redis 是每隔 100ms **随机抽取**一些 key 来检查和删除的。 + +但是问题是,定期删除可能会导致很多过期 key 到了时间并没有被删除掉,那咋整呢?所以就是惰性删除了。这就是说,在你获取某个 key 的时候,redis 会检查一下 ,这个 key 如果设置了过期时间那么是否过期了?如果过期了此时就会删除,不会给你返回任何东西。 + +> 获取 key 的时候,如果此时 key 已经过期,就删除,不会返回任何东西。 + +但是实际上这还是有问题的,如果定期删除漏掉了很多过期 key,然后你也没及时去查,也就没走惰性删除,此时会怎么样?如果大量过期 key 堆积在内存里,导致 redis 内存块耗尽了,咋整? + +答案是:**走内存淘汰机制**。 + +### 内存淘汰机制 + +redis 内存淘汰机制有以下几个: + +- noeviction: 当内存不足以容纳新写入数据时,新写入操作会报错,这个一般没人用吧,实在是太恶心了。 +- **allkeys-lru**:当内存不足以容纳新写入数据时,在**键空间**中,移除最近最少使用的 key(这个是**最常用**的)。 +- allkeys-random:当内存不足以容纳新写入数据时,在**键空间**中,随机移除某个 key,这个一般没人用吧,为啥要随机,肯定是把最近最少使用的 key 给干掉啊。 +- volatile-lru:当内存不足以容纳新写入数据时,在**设置了过期时间的键空间**中,移除最近最少使用的 key(这个一般不太合适)。 +- volatile-random:当内存不足以容纳新写入数据时,在**设置了过期时间的键空间**中,**随机移除**某个 key。 +- volatile-ttl:当内存不足以容纳新写入数据时,在**设置了过期时间的键空间**中,有**更早过期时间**的 key 优先移除。 + +### 手写一个 LRU 算法 + +你可以现场手写最原始的 LRU 算法,那个代码量太大了,似乎不太现实。 + +不求自己纯手工从底层开始打造出自己的 LRU,但是起码要知道如何利用已有的 JDK 数据结构实现一个 Java 版的 LRU。 + +```java +class LRUCache extends LinkedHashMap { + private final int CACHE_SIZE; + + /** + * 传递进来最多能缓存多少数据 + * + * @param cacheSize 缓存大小 + */ + public LRUCache(int cacheSize) { + // true 表示让 linkedHashMap 按照访问顺序来进行排序,最近访问的放在头部,最老访问的放在尾部。 + super((int) Math.ceil(cacheSize / 0.75) + 1, 0.75f, true); + CACHE_SIZE = cacheSize; + } + + @Override + protected boolean removeEldestEntry(Map.Entry eldest) { + // 当 map中的数据量大于指定的缓存个数的时候,就自动删除最老的数据。 + return size() > CACHE_SIZE; + } +} +``` + +## redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗? + +在前几年,redis 如果要搞几个节点,每个节点存储一部分的数据,得**借助一些中间件**来实现,比如说有 `codis`,或者 `twemproxy`,都有。有一些 redis 中间件,你读写 redis 中间件,redis 中间件负责将你的数据分布式存储在多台机器上的 redis 实例中。 + +这两年,redis 不断在发展,redis 也不断有新的版本,现在的 redis 集群模式,可以做到在多台机器上,部署多个 redis 实例,每个实例存储一部分的数据,同时每个 redis 主实例可以挂 redis 从实例,自动确保说,如果 redis 主实例挂了,会自动切换到 redis 从实例上来。 + +现在 redis 的新版本,大家都是用 redis cluster 的,也就是 redis 原生支持的 redis 集群模式,那么面试官肯定会就 redis cluster 对你来个几连炮。要是你没用过 redis cluster,正常,以前很多人用 codis 之类的客户端来支持集群,但是起码你得研究一下 redis cluster 吧。 + +如果你的数据量很少,主要是承载高并发高性能的场景,比如你的缓存一般就几个 G,单机就足够了,可以使用 replication,一个 master 多个 slaves,要几个 slave 跟你要求的读吞吐量有关,然后自己搭建一个 sentinel 集群去保证 redis 主从架构的高可用性。 + +redis cluster,主要是针对**海量数据+高并发+高可用**的场景。redis cluster 支撑 N 个 redis master node,每个 master node 都可以挂载多个 slave node。这样整个 redis 就可以横向扩容了。如果你要支撑更大数据量的缓存,那就横向扩容更多的 master 节点,每个 master 节点就能存放更多的数据了。 + +### 面试题剖析 + +### redis cluster 介绍 + +- 自动将数据进行分片,每个 master 上放一部分数据 +- 提供内置的高可用支持,部分 master 不可用时,还是可以继续工作的 + +在 redis cluster 架构下,每个 redis 要放开两个端口号,比如一个是 6379,另外一个就是 加1w 的端口号,比如 16379。 + +16379 端口号是用来进行节点间通信的,也就是 cluster bus 的东西,cluster bus 的通信,用来进行故障检测、配置更新、故障转移授权。cluster bus 用了另外一种二进制的协议,`gossip` 协议,用于节点间进行高效的数据交换,占用更少的网络带宽和处理时间。 + +### 节点间的内部通信机制 + +#### 基本通信原理 + +集群元数据的维护有两种方式:集中式、Gossip 协议。redis cluster 节点间采用 gossip 协议进行通信。 + +**集中式**是将集群元数据(节点信息、故障等等)几种存储在某个节点上。集中式元数据集中存储的一个典型代表,就是大数据领域的 `storm`。它是分布式的大数据实时计算引擎,是集中式的元数据存储的结构,底层基于 zookeeper(分布式协调的中间件)对所有元数据进行存储维护。 + +![img](https://github.com/doocs/advanced-java/blob/master/images/zookeeper-centralized-storage.png) + +redis 维护集群元数据采用另一个方式, `gossip` 协议,所有节点都持有一份元数据,不同的节点如果出现了元数据的变更,就不断将元数据发送给其它的节点,让其它节点也进行元数据的变更。 + +![img](https://github.com/doocs/advanced-java/blob/master/images/redis-gossip.png) + +**集中式**的**好处**在于,元数据的读取和更新,时效性非常好,一旦元数据出现了变更,就立即更新到集中式的存储中,其它节点读取的时候就可以感知到;**不好**在于,所有的元数据的更新压力全部集中在一个地方,可能会导致元数据的存储有压力。 + +gossip 好处在于,元数据的更新比较分散,不是集中在一个地方,更新请求会陆陆续续打到所有节点上去更新,降低了压力;不好在于,元数据的更新有延时,可能导致集群中的一些操作会有一些滞后。 + +- 10000 端口:每个节点都有一个专门用于节点间通信的端口,就是自己提供服务的端口号+10000,比如 7001,那么用于节点间通信的就是 17001 端口。每个节点每隔一段时间都会往另外几个节点发送 `ping` 消息,同时其它几个节点接收到 `ping` 之后返回 `pong`。 +- 交换的信息:信息包括故障信息,节点的增加和删除,hash slot 信息等等。 + +#### gossip 协议 + +gossip 协议包含多种消息,包含 `ping`,`pong`,`meet`,`fail` 等等。 + +- meet:某个节点发送 meet 给新加入的节点,让新节点加入集群中,然后新节点就会开始与其它节点进行通信。 + +``` +redis-trib.rb add-node +``` + +其实内部就是发送了一个 gossip meet 消息给新加入的节点,通知那个节点去加入我们的集群。 + +- ping:每个节点都会频繁给其它节点发送 ping,其中包含自己的状态还有自己维护的集群元数据,互相通过 ping 交换元数据。 +- pong:返回 ping 和 meeet,包含自己的状态和其它信息,也用于信息广播和更新。 +- fail:某个节点判断另一个节点 fail 之后,就发送 fail 给其它节点,通知其它节点说,某个节点宕机啦。 + +#### ping 消息深入 + +ping 时要携带一些元数据,如果很频繁,可能会加重网络负担。 + +每个节点每秒会执行 10 次 ping,每次会选择 5 个最久没有通信的其它节点。当然如果发现某个节点通信延时达到了 `cluster_node_timeout / 2`,那么立即发送 ping,避免数据交换延时过长,落后的时间太长了。比如说,两个节点之间都 10 分钟没有交换数据了,那么整个集群处于严重的元数据不一致的情况,就会有问题。所以 `cluster_node_timeout` 可以调节,如果调得比较大,那么会降低 ping 的频率。 + +每次 ping,会带上自己节点的信息,还有就是带上 1/10 其它节点的信息,发送出去,进行交换。至少包含 `3` 个其它节点的信息,最多包含 `总节点数减 2` 个其它节点的信息。 + +### 分布式寻址算法 + +- hash 算法(大量缓存重建) +- 一致性 hash 算法(自动缓存迁移)+ 虚拟节点(自动负载均衡) +- redis cluster 的 hash slot 算法 + +#### hash 算法 + +来了一个 key,首先计算 hash 值,然后对节点数取模。然后打在不同的 master 节点上。一旦某一个 master 节点宕机,所有请求过来,都会基于最新的剩余 master 节点数去取模,尝试去取数据。这会导致**大部分的请求过来,全部无法拿到有效的缓存**,导致大量的流量涌入数据库。 + +![img](https://github.com/doocs/advanced-java/blob/master/images/hash.png) + +#### 一致性 hash 算法 + +一致性 hash 算法将整个 hash 值空间组织成一个虚拟的圆环,整个空间按顺时针方向组织,下一步将各个 master 节点(使用服务器的 ip 或主机名)进行 hash。这样就能确定每个节点在其哈希环上的位置。 + +来了一个 key,首先计算 hash 值,并确定此数据在环上的位置,从此位置沿环**顺时针“行走”**,遇到的第一个 master 节点就是 key 所在位置。 + +在一致性哈希算法中,如果一个节点挂了,受影响的数据仅仅是此节点到环空间前一个节点(沿着逆时针方向行走遇到的第一个节点)之间的数据,其它不受影响。增加一个节点也同理。 + +燃鹅,一致性哈希算法在节点太少时,容易因为节点分布不均匀而造成**缓存热点**的问题。为了解决这种热点问题,一致性 hash 算法引入了虚拟节点机制,即对每一个节点计算多个 hash,每个计算结果位置都放置一个虚拟节点。这样就实现了数据的均匀分布,负载均衡。 + +![img](https://github.com/doocs/advanced-java/blob/master/images/consistent-hashing-algorithm.png) + +#### redis cluster 的 hash slot 算法 + +redis cluster 有固定的 `16384` 个 hash slot,对每个 `key` 计算 `CRC16` 值,然后对 `16384` 取模,可以获取 key 对应的 hash slot。 + +redis cluster 中每个 master 都会持有部分 slot,比如有 3 个 master,那么可能每个 master 持有 5000 多个 hash slot。hash slot 让 node 的增加和移除很简单,增加一个 master,就将其他 master 的 hash slot 移动部分过去,减少一个 master,就将它的 hash slot 移动到其他 master 上去。移动 hash slot 的成本是非常低的。客户端的 api,可以对指定的数据,让他们走同一个 hash slot,通过 `hash tag` 来实现。 + +任何一台机器宕机,另外两个节点,不影响的。因为 key 找的是 hash slot,不是机器。 + +![img](https://github.com/doocs/advanced-java/blob/master/images/hash-slot.png) + +### redis cluster 的高可用与主备切换原理 + +redis cluster 的高可用的原理,几乎跟哨兵是类似的。 + +#### 判断节点宕机 + +如果一个节点认为另外一个节点宕机,那么就是 `pfail`,**主观宕机**。如果多个节点都认为另外一个节点宕机了,那么就是 `fail`,**客观宕机**,跟哨兵的原理几乎一样,sdown,odown。 + +在 `cluster-node-timeout` 内,某个节点一直没有返回 `pong`,那么就被认为 `pfail`。 + +如果一个节点认为某个节点 `pfail` 了,那么会在 `gossip ping` 消息中,`ping` 给其他节点,如果**超过半数**的节点都认为 `pfail` 了,那么就会变成 `fail`。 + +#### 从节点过滤 + +对宕机的 master node,从其所有的 slave node 中,选择一个切换成 master node。 + +检查每个 slave node 与 master node 断开连接的时间,如果超过了 `cluster-node-timeout * cluster-slave-validity-factor`,那么就**没有资格**切换成 `master`。 + +#### 从节点选举 + +每个从节点,都根据自己对 master 复制数据的 offset,来设置一个选举时间,offset 越大(复制数据越多)的从节点,选举时间越靠前,优先进行选举。 + +所有的 master node 开始 slave 选举投票,给要进行选举的 slave 进行投票,如果大部分 master node`(N/2 + 1)`都投票给了某个从节点,那么选举通过,那个从节点可以切换成 master。 + +从节点执行主备切换,从节点切换为主节点。 + +#### 与哨兵比较 + +整个流程跟哨兵相比,非常类似,所以说,redis cluster 功能强大,直接集成了 replication 和 sentinel 的功能。 + +## 如何保证缓存与数据库的双写一致性? + +一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统**不是严格要求** “缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即:**读请求和写请求串行化**,串到一个**内存队列**里去。 + +串行化可以保证一定不会出现不一致的情况,但是它也会导致系统的吞吐量大幅度降低,用比正常情况下多几倍的机器去支撑线上的一个请求。 + +### Cache Aside Pattern + +最经典的缓存+数据库读写的模式,就是 Cache Aside Pattern。 + +- 读的时候,先读缓存,缓存没有的话,就读数据库,然后取出数据后放入缓存,同时返回响应。 +- 更新的时候,**先更新数据库,然后再删除缓存**。 + +**为什么是删除缓存,而不是更新缓存?** + +原因很简单,很多时候,在复杂点的缓存场景,缓存不单单是数据库中直接取出来的值。 + +比如可能更新了某个表的一个字段,然后其对应的缓存,是需要查询另外两个表的数据并进行运算,才能计算出缓存最新的值的。 + +另外更新缓存的代价有时候是很高的。是不是说,每次修改数据库的时候,都一定要将其对应的缓存更新一份?也许有的场景是这样,但是对于**比较复杂的缓存数据计算的场景**,就不是这样了。如果你频繁修改一个缓存涉及的多个表,缓存也频繁更新。但是问题在于,**这个缓存到底会不会被频繁访问到?** + +举个栗子,一个缓存涉及的表的字段,在 1 分钟内就修改了 20 次,或者是 100 次,那么缓存更新 20 次、100 次;但是这个缓存在 1 分钟内只被读取了 1 次,有**大量的冷数据**。实际上,如果你只是删除缓存的话,那么在 1 分钟内,这个缓存不过就重新计算一次而已,开销大幅度降低。**用到缓存才去算缓存。** + +其实删除缓存,而不是更新缓存,就是一个 lazy 计算的思想,不要每次都重新做复杂的计算,不管它会不会用到,而是让它到需要被使用的时候再重新计算。像 mybatis,hibernate,都有懒加载思想。查询一个部门,部门带了一个员工的 list,没有必要说每次查询部门,都里面的 1000 个员工的数据也同时查出来啊。80% 的情况,查这个部门,就只是要访问这个部门的信息就可以了。先查部门,同时要访问里面的员工,那么这个时候只有在你要访问里面的员工的时候,才会去数据库里面查询 1000 个员工。 + +### 最初级的缓存不一致问题及解决方案 + +问题:先更新数据库,再删除缓存。如果删除缓存失败了,那么会导致数据库中是新数据,缓存中是旧数据,数据就出现了不一致。 + +![img](https://github.com/doocs/advanced-java/blob/master/images/redis-junior-inconsistent.png) + +解决思路:先删除缓存,再更新数据库。如果数据库更新失败了,那么数据库中是旧数据,缓存中是空的,那么数据不会不一致。因为读的时候缓存没有,所以去读了数据库中的旧数据,然后更新到缓存中。 + +### 比较复杂的数据不一致问题分析 + +数据发生了变更,先删除了缓存,然后要去修改数据库,此时还没修改。一个请求过来,去读缓存,发现缓存空了,去查询数据库,**查到了修改前的旧数据**,放到了缓存中。随后数据变更的程序完成了数据库的修改。完了,数据库和缓存中的数据不一样了... + +**为什么上亿流量高并发场景下,缓存会出现这个问题?** + +只有在对一个数据在并发的进行读写的时候,才可能会出现这种问题。其实如果说你的并发量很低的话,特别是读并发很低,每天访问量就 1 万次,那么很少的情况下,会出现刚才描述的那种不一致的场景。但是问题是,如果每天的是上亿的流量,每秒并发读是几万,每秒只要有数据更新的请求,就**可能会出现上述的数据库+缓存不一致的情况**。 + +**解决方案如下:** + +更新数据的时候,根据**数据的唯一标识**,将操作路由之后,发送到一个 jvm 内部队列中。读取数据的时候,如果发现数据不在缓存中,那么将重新读取数据+更新缓存的操作,根据唯一标识路由之后,也发送同一个 jvm 内部队列中。 + +一个队列对应一个工作线程,每个工作线程**串行**拿到对应的操作,然后一条一条的执行。这样的话,一个数据变更的操作,先删除缓存,然后再去更新数据库,但是还没完成更新。此时如果一个读请求过来,没有读到缓存,那么可以先将缓存更新的请求发送到队列中,此时会在队列中积压,然后同步等待缓存更新完成。 + +这里有一个**优化点**,一个队列中,其实**多个更新缓存请求串在一起是没意义的**,因此可以做过滤,如果发现队列中已经有一个更新缓存的请求了,那么就不用再放个更新请求操作进去了,直接等待前面的更新操作请求完成即可。 + +待那个队列对应的工作线程完成了上一个操作的数据库的修改之后,才会去执行下一个操作,也就是缓存更新的操作,此时会从数据库中读取最新的值,然后写入缓存中。 + +如果请求还在等待时间范围内,不断轮询发现可以取到值了,那么就直接返回;如果请求等待的时间超过一定时长,那么这一次直接从数据库中读取当前的旧值。 + +高并发的场景下,该解决方案要注意的问题: + +- 读请求长时阻塞 + +由于读请求进行了非常轻度的异步化,所以一定要注意读超时的问题,每个读请求必须在超时时间范围内返回。 + +该解决方案,最大的风险点在于说,**可能数据更新很频繁**,导致队列中积压了大量更新操作在里面,然后**读请求会发生大量的超时**,最后导致大量的请求直接走数据库。务必通过一些模拟真实的测试,看看更新数据的频率是怎样的。 + +另外一点,因为一个队列中,可能会积压针对多个数据项的更新操作,因此需要根据自己的业务情况进行测试,可能需要**部署多个服务**,每个服务分摊一些数据的更新操作。如果一个内存队列里居然会挤压 100 个商品的库存修改操作,每隔库存修改操作要耗费 10ms 去完成,那么最后一个商品的读请求,可能等待 10 * 100 = 1000ms = 1s 后,才能得到数据,这个时候就导致**读请求的长时阻塞**。 + +一定要做根据实际业务系统的运行情况,去进行一些压力测试,和模拟线上环境,去看看最繁忙的时候,内存队列可能会挤压多少更新操作,可能会导致最后一个更新操作对应的读请求,会 hang 多少时间,如果读请求在 200ms 返回,如果你计算过后,哪怕是最繁忙的时候,积压 10 个更新操作,最多等待 200ms,那还可以的。 + +**如果一个内存队列中可能积压的更新操作特别多**,那么你就要**加机器**,让每个机器上部署的服务实例处理更少的数据,那么每个内存队列中积压的更新操作就会越少。 + +其实根据之前的项目经验,一般来说,数据的写频率是很低的,因此实际上正常来说,在队列中积压的更新操作应该是很少的。像这种针对读高并发、读缓存架构的项目,一般来说写请求是非常少的,每秒的 QPS 能到几百就不错了。 + +我们来**实际粗略测算一下**。 + +如果一秒有 500 的写操作,如果分成 5 个时间片,每 200ms 就 100 个写操作,放到 20 个内存队列中,每个内存队列,可能就积压 5 个写操作。每个写操作性能测试后,一般是在 20ms 左右就完成,那么针对每个内存队列的数据的读请求,也就最多 hang 一会儿,200ms 以内肯定能返回了。 + +经过刚才简单的测算,我们知道,单机支撑的写 QPS 在几百是没问题的,如果写 QPS 扩大了 10 倍,那么就扩容机器,扩容 10 倍的机器,每个机器 20 个队列。 + +- 读请求并发量过高 + +这里还必须做好压力测试,确保恰巧碰上上述情况的时候,还有一个风险,就是突然间大量读请求会在几十毫秒的延时 hang 在服务上,看服务能不能扛的住,需要多少机器才能扛住最大的极限情况的峰值。 + +但是因为并不是所有的数据都在同一时间更新,缓存也不会同一时间失效,所以每次可能也就是少数数据的缓存失效了,然后那些数据对应的读请求过来,并发量应该也不会特别大。 + +- 多服务实例部署的请求路由 + +可能这个服务部署了多个实例,那么必须**保证**说,执行数据更新操作,以及执行缓存更新操作的请求,都通过 Nginx 服务器**路由到相同的服务实例上**。 + +比如说,对同一个商品的读写请求,全部路由到同一台机器上。可以自己去做服务间的按照某个请求参数的 hash 路由,也可以用 Nginx 的 hash 路由功能等等。 + +- 热点商品的路由问题,导致请求的倾斜 + +万一某个商品的读写请求特别高,全部打到相同的机器的相同的队列里面去了,可能会造成某台机器的压力过大。就是说,因为只有在商品数据更新的时候才会清空缓存,然后才会导致读写并发,所以其实要根据业务系统去看,如果更新频率不是太高的话,这个问题的影响并不是特别大,但是的确可能某些机器的负载会高一些。 + +## 了解什么是 redis 的雪崩、穿透和击穿?redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 redis 的穿透? + +### 缓存雪崩 + +对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4000 个请求,但是缓存机器意外发生了全盘宕机。缓存挂了,此时 1 秒 5000 个请求全部落数据库,数据库必然扛不住,它会报一下警,然后就挂了。此时,如果没有采用什么特别的方案来处理这个故障,DBA 很着急,重启数据库,但是数据库立马又被新的流量给打死了。 + +这就是缓存雪崩。 + +![img](https://github.com/doocs/advanced-java/blob/master/images/redis-caching-avalanche.png) + +大约在 3 年前,国内比较知名的一个互联网公司,曾因为缓存事故,导致雪崩,后台系统全部崩溃,事故从当天下午持续到晚上凌晨 3\~4 点,公司损失了几千万。 + +缓存雪崩的事前事中事后的解决方案如下。 + +- 事前:redis 高可用,主从+哨兵,redis cluster,避免全盘崩溃。 +- 事中:本地 ehcache 缓存 + hystrix 限流&降级,避免 MySQL 被打死。 +- 事后:redis 持久化,一旦重启,自动从磁盘上加载数据,快速恢复缓存数据。 + +![img](https://github.com/doocs/advanced-java/blob/master/images/redis-caching-avalanche-solution.png) + +用户发送一个请求,系统 A 收到请求后,先查本地 ehcache 缓存,如果没查到再查 redis。如果 ehcache 和 redis 都没有,再查数据库,将数据库中的结果,写入 ehcache 和 redis 中。 + +限流组件,可以设置每秒的请求,有多少能通过组件,剩余的未通过的请求,怎么办?**走降级**!可以返回一些默认的值,或者友情提示,或者空白的值。 + +好处: + +- 数据库绝对不会死,限流组件确保了每秒只有多少个请求能通过。 +- 只要数据库不死,就是说,对用户来说,2/5 的请求都是可以被处理的。 +- 只要有 2/5 的请求可以被处理,就意味着你的系统没死,对用户来说,可能就是点击几次刷不出来页面,但是多点几次,就可以刷出来一次。 + +### 缓存穿透 + +对于系统A,假设一秒 5000 个请求,结果其中 4000 个请求是黑客发出的恶意攻击。 + +黑客发出的那 4000 个攻击,缓存中查不到,每次你去数据库里查,也查不到。 + +举个栗子。数据库 id 是从 1 开始的,结果黑客发过来的请求 id 全部都是负数。这样的话,缓存中不会有,请求每次都“视缓存于无物”,直接查询数据库。这种恶意攻击场景的缓存穿透就会直接把数据库给打死。 + +![img](https://github.com/doocs/advanced-java/blob/master/images/redis-caching-penetration.png) + +解决方式很简单,每次系统 A 从数据库中只要没查到,就写一个空值到缓存里去,比如 `set -999 UNKNOWN`。然后设置一个过期时间,这样的话,下次有相同的 key 来访问的时候,在缓存失效之前,都可以直接从缓存中取数据。 + +### 缓存击穿 + +缓存击穿,就是说某个 key 非常热点,访问非常频繁,处于集中式高并发访问的情况,当这个 key 在失效的瞬间,大量的请求就击穿了缓存,直接请求数据库,就像是在一道屏障上凿开了一个洞。 + +解决方式也很简单,可以将热点数据设置为永远不过期;或者基于 redis or zookeeper 实现互斥锁,等待第一个请求构建完缓存之后,再释放锁,进而其它请求才能通过该 key 访问数据。 + +## redis 的并发竞争问题是什么?如何解决这个问题?了解 redis 事务的 CAS 方案吗? + +某个时刻,多个系统实例都去更新某个 key。可以基于 zookeeper 实现分布式锁。每个系统通过 zookeeper 获取分布式锁,确保同一时间,只能有一个系统实例在操作某个 key,别人都不允许读和写。 + +![img](https://github.com/doocs/advanced-java/blob/master/images/zookeeper-distributed-lock.png) + +你要写入缓存的数据,都是从 mysql 里查出来的,都得写入 mysql 中,写入 mysql 中的时候必须保存一个时间戳,从 mysql 查出来的时候,时间戳也查出来。 + +每次要**写之前,先判断**一下当前这个 value 的时间戳是否比缓存里的 value 的时间戳要新。如果是的话,那么可以写,否则,就不能用旧的数据覆盖新的数据。 + +## 生产环境中的 redis 是怎么部署的? + +redis cluster,10 台机器,5 台机器部署了 redis 主实例,另外 5 台机器部署了 redis 的从实例,每个主实例挂了一个从实例,5 个节点对外提供读写服务,每个节点的读写高峰qps可能可以达到每秒 5 万,5 台机器最多是 25 万读写请求/s。 + +机器是什么配置?32G 内存+ 8 核 CPU + 1T 磁盘,但是分配给 redis 进程的是10g内存,一般线上生产环境,redis 的内存尽量不要超过 10g,超过 10g 可能会有问题。 + +5 台机器对外提供读写,一共有 50g 内存。 + +因为每个主实例都挂了一个从实例,所以是高可用的,任何一个主实例宕机,都会自动故障迁移,redis 从实例会自动变成主实例继续提供读写服务。 + +你往内存里写的是什么数据?每条数据的大小是多少?商品数据,每条数据是 10kb。100 条数据是 1mb,10 万条数据是 1g。常驻内存的是 200 万条商品数据,占用内存是 20g,仅仅不到总内存的 50%。目前高峰期每秒就是 3500 左右的请求量。 + +其实大型的公司,会有基础架构的 team 负责缓存集群的运维。 diff --git a/docs/cache/cache-libs.md b/docs/cache/cache-libs.md new file mode 100644 index 00000000..143e31a0 --- /dev/null +++ b/docs/cache/cache-libs.md @@ -0,0 +1,186 @@ +# Java 缓存库 + +> 关键词:ConcurrentHashMap、LRUHashMap、Guava Cache、Caffeine、Ehcache + + + +- [一、ConcurrentHashMap](#一concurrenthashmap) +- [二、LRUHashMap](#二lruhashmap) +- [三、Guava Cache](#三guava-cache) + - [Guava Cache 缓存回收](#guava-cache-缓存回收) + - [基于容量回收](#基于容量回收) + - [基于定时回收](#基于定时回收) + - [基于引用回收](#基于引用回收) + - [Guava Cache 核心 API](#guava-cache-核心-api) +- [四、Caffeine](#四caffeine) +- [五、Ehcache](#五ehcache) +- [六、进程内缓存对比](#六进程内缓存对比) +- [参考资料](#参考资料) + + + +## 一、ConcurrentHashMap + +最简单的进程内缓存可以通过 JDK 自带的 `HashMap` 或 `ConcurrentHashMap` 实现。 + +适用场景:**不需要淘汰的缓存数据**。 + +缺点:无法进行缓存淘汰,内存会无限制的增长。 + +## 二、LRUHashMap + +可以通过**继承 `LinkedHashMap` 来实现一个简单的 `LRUHashMap`**,即可完成一个简单的 **LRU (最近最少使用)**算法。 + +缺点: + +- 锁竞争严重,性能比较低。 +- 不支持过期时间 +- 不支持自动刷新 + +【示例】LRUHashMap 的简单实现 + +```java +class LRUCache extends LinkedHashMap { + + private final int max; + private Object lock; + + public LRUCache(int max) { + //无需扩容 + super((int) (max * 1.4f), 0.75f, true); + this.max = max; + this.lock = new Object(); + } + + /** + * 重写LinkedHashMap的removeEldestEntry方法即可 在Put的时候判断,如果为true,就会删除最老的 + * + * @param eldest + * @return + */ + @Override + protected boolean removeEldestEntry(Map.Entry eldest) { + return size() > max; + } + + public Object getValue(Object key) { + synchronized (lock) { + return get(key); + } + } + + public void putValue(Object key, Object value) { + synchronized (lock) { + put(key, value); + } + } + + public boolean removeValue(Object key) { + synchronized (lock) { + return remove(key) != null; + } + } + + public boolean removeAll() { + clear(); + return true; + } + +} +``` + +## 三、Guava Cache + +Guava Cache 解决了 `LRUHashMap` 中的几个缺点。 + +Guava Cache 提供了**基于容量,时间和引用的缓存回收方式**。基于容量的方式内部实现采用 LRU 算法,基于引用回收很好的利用了 Java 虚拟机的垃圾回收机制。 + +其中的缓存构造器 CacheBuilder 采用构建者模式提供了设置好各种参数的缓存对象。缓存核心类 LocalCache 里面的内部类 Segment 与 jdk1.7 及以前的 `ConcurrentHashMap` 非常相似,分段加锁,减少锁竞争,并且都继承于 `ReetrantLock`,还有六个队列,以实现丰富的本地缓存方案。Guava Cache 对于过期的 Entry 并没有马上过期(也就是并没有后台线程一直在扫),而是通过进行读写操作的时候进行过期处理,这样做的好处是避免后台线程扫描的时候进行全局加锁。 + +直接通过查询,判断其是否满足刷新条件,进行刷新。 + +### Guava Cache 缓存回收 + +Guava Cache 提供了三种基本的缓存回收方式。 + +### 基于容量回收 + +`maximumSize(long)`:当缓存中的元素数量超过指定值时触发回收。 + +### 基于定时回收 + +- `expireAfterAccess(long, TimeUnit)`:缓存项在给定时间内没有被读/写访问,则回收。请注意这种缓存的回收顺序和基于大小回收一样。 +- `expireAfterWrite(long, TimeUnit)`:缓存项在给定时间内没有被写访问(创建或覆盖),则回收。如果认为缓存数据总是在固定时候后变得陈旧不可用,这种回收方式是可取的。 + +如下文所讨论,定时回收周期性地在写操作中执行,偶尔在读操作中执行。 + +### 基于引用回收 + +- `CacheBuilder.weakKeys()`:使用弱引用存储键。当键没有其它(强或软)引用时,缓存项可以被垃圾回收。 +- `CacheBuilder.weakValues()`:使用弱引用存储值。当值没有其它(强或软)引用时,缓存项可以被垃圾回收。 +- `CacheBuilder.softValues()`:使用软引用存储值。软引用只有在响应内存需要时,才按照全局最近最少使用的顺序回收。 + +### Guava Cache 核心 API + +#### CacheBuilder + +缓存构建器。构建缓存的入口,指定缓存配置参数并初始化本地缓存。 +主要采用 builder 的模式,CacheBuilder 的每一个方法都返回这个 CacheBuilder 知道 build 方法的调用。 +注意 build 方法有重载,带有参数的为构建一个具有数据加载功能的缓存,不带参数的构建一个没有数据加载功能的缓存。 + +#### LocalManualCache + +作为 LocalCache 的一个内部类,在构造方法里面会把 LocalCache 类型的变量传入,并且调用方法时都直接或者间接调用 LocalCache 里面的方法。 + +#### LocalLoadingCache + +可以看到该类继承了 LocalManualCache 并实现接口 LoadingCache。 +覆盖了 get,getUnchecked 等方法。 + +#### LocalCache + +Guava Cache 中的核心类,重点了解。 + +LocalCache 的数据结构与 ConcurrentHashMap 很相似,都由多个 segment 组成,且各 segment 相对独立,互不影响,所以能支持并行操作。每个 segment 由一个 table 和若干队列组成。缓存数据存储在 table 中,其类型为 AtomicReferenceArray。 + +## 四、Caffeine + +> [caffeine](https://github.com/ben-manes/caffeine) 是一个使用 JDK8 改进 Guava 缓存的高性能缓存库。 + +Caffeine 实现了 W-TinyLFU(**LFU** + **LRU** 算法的变种),其**命中率和读写吞吐量大大优于 Guava Cache**。 + +其实现原理较复杂,可以参考[你应该知道的缓存进化史](https://juejin.im/post/5b7593496fb9a009b62904fa#comment)。 + +## 五、Ehcache + +> 参考:[Ehcache](ehcache.md) + +## 六、进程内缓存对比 + +常用进程内缓存技术对比: + +| 比较项 | ConcurrentHashMap | LRUMap | Ehcache | Guava Cache | Caffeine | +| ------------ | ----------------- | ------------------------ | ----------------------------- | ----------------------------------- | ----------------------- | +| 读写性能 | 很好,分段锁 | 一般,全局加锁 | 好 | 好,需要做淘汰操作 | 很好 | +| 淘汰算法 | 无 | LRU,一般 | 支持多种淘汰算法,LRU,LFU,FIFO | LRU,一般 | W-TinyLFU, 很好 | +| 功能丰富程度 | 功能比较简单 | 功能比较单一 | 功能很丰富 | 功能很丰富,支持刷新和虚引用等 | 功能和 Guava Cache 类似 | +| 工具大小 | jdk 自带类,很小 | 基于 LinkedHashMap,较小 | 很大,最新版本 1.4MB | 是 Guava 工具类中的一个小部分,较小 | 一般,最新版本 644KB | +| 是否持久化 | 否 | 否 | 是 | 否 | 否 | +| 是否支持集群 | 否 | 否 | 是 | 否 | 否 | + +- **`ConcurrentHashMap`** - 比较适合缓存比较固定不变的元素,且缓存的数量较小的。虽然从上面表格中比起来有点逊色,但是其由于是 JDK 自带的类,在各种框架中依然有大量的使用,比如我们可以用来缓存我们反射的 Method,Field 等等;也可以缓存一些链接,防止其重复建立。在 Caffeine 中也是使用的 `ConcurrentHashMap` 来存储元素。 +- **`LRUMap`** - 如果不想引入第三方包,又想使用淘汰算法淘汰数据,可以使用这个。 +- **`Ehcache`** - 由于其 jar 包很大,较重量级。对于需要持久化和集群的一些功能的,可以选择 Ehcache。需要注意的是,虽然 Ehcache 也支持分布式缓存,但是由于其节点间通信方式为 rmi,表现不如 Redis,所以一般不建议用它来作为分布式缓存。 +- **`Guava Cache`** - Guava 这个 jar 包在很多 Java 应用程序中都有大量的引入,所以很多时候其实是直接用就好了,并且其本身是轻量级的而且功能较为丰富,在不了解 Caffeine 的情况下可以选择 Guava Cache。 +- **`Caffeine`** - 其在命中率,读写性能上都比 Guava Cache 好很多,并且其 API 和 Guava cache 基本一致,甚至会多一点。在真实环境中使用 Caffeine,取得过不错的效果。 + +总结一下:**如果不需要淘汰算法则选择 `ConcurrentHashMap`,如果需要淘汰算法和一些丰富的 API,推荐选择 `Caffeine`**。 + +## 参考资料 + +- [caffeine github](https://github.com/ben-manes/caffeine) +- [深入解密来自未来的缓存-Caffeine](https://juejin.im/post/5b8df63c6fb9a019e04ebaf4) +- [Caffeine 缓存](https://www.jianshu.com/p/9a80c662dac4) +- [Google Guava 官方教程(中文版)](https://wizardforcel.gitbooks.io/guava-tutorial/content/1.html) +- [Google Guava Cache 全解析](https://www.jianshu.com/p/38bd5f1cf2f2) +- [注释驱动的 Spring cache 缓存介绍](https://developer.ibm.com/zh/articles/os-cn-spring-cache/) diff --git a/docs/cache/ehcache.md b/docs/cache/ehcache.md new file mode 100644 index 00000000..045102af --- /dev/null +++ b/docs/cache/ehcache.md @@ -0,0 +1,542 @@ +# Ehcache 应用指南 + +> EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点,是 Hibernate 中默认的 CacheProvider。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/java/javaweb/technology/cache/ehcache-architecture.png) + + + +- [一、简介](#一简介) + - [Ehcache 特性](#ehcache-特性) + - [Ehcache 集群](#ehcache-集群) +- [二、快速入门](#二快速入门) + - [引入 Ehcache](#引入-ehcache) + - [添加配置文件](#添加配置文件) + - [Ehcache 工作示例](#ehcache-工作示例) +- [三、Ehcache API](#三ehcache-api) + - [创建 CacheManager](#创建-cachemanager) + - [添加缓存](#添加缓存) + - [删除缓存](#删除缓存) + - [基本缓存操作](#基本缓存操作) +- [四、Ehcache 配置](#四ehcache-配置) + - [xml 配置方式](#xml-配置方式) + - [API 配置方式](#api-配置方式) +- [五、Spring 集成 Ehcache](#五spring-集成-ehcache) + - [绑定 Ehcache](#绑定-ehcache) + - [使用 Spring 的缓存注解](#使用-spring-的缓存注解) + - [注解基本使用方法](#注解基本使用方法) +- [参考资料](#参考资料) + + + +## 一、简介 + +> Ehcache 虽然也支持分布式模式,但是分布式方案不是很好好,建议只将其作为单机的进程内缓存使用。 + +### Ehcache 特性 + +优点 + +- 快速、简单 +- 支持多种缓存策略:LRU、LFU、FIFO 淘汰算法 +- 缓存数据有两级:内存和磁盘,因此无需担心容量问题 +- 缓存数据会在虚拟机重启的过程中写入磁盘 +- 可以通过 RMI、可插入 API 等方式进行分布式缓存 +- 具有缓存和缓存管理器的侦听接口 +- 支持多缓存管理器实例,以及一个实例的多个缓存区域 +- 提供 Hibernate 的缓存实现 + +缺点 + +- **使用磁盘 Cache 的时候非常占用磁盘空间** +- **不保证数据的安全** +- 虽然支持分布式缓存,但效率不高(通过组播方式,在不同节点之间同步数据)。 + +### Ehcache 集群 + +Ehcache 目前支持五种集群方式: + +- RMI +- JMS +- JGroup +- Terracotta +- Ehcache Server + +#### RMI + +使用组播方式通知所有节点同步数据。 + +如果网络有问题,或某台服务宕机,则存在数据无法同步的可能,导致数据不一致。 + +![Ehcache Image](https://www.ehcache.org/images/documentation/rmi_replication.png) + +#### JMS + +JMS 类似 MQ,所有节点订阅消息,当某节点缓存发生变化,就向 JMS 发消息,其他节点感知变化后,同步数据。 + +![Ehcache Image](https://www.ehcache.org/images/documentation/jms_replication.png) + +#### Cache Server + +![Ehcache Image](https://www.ehcache.org/images/documentation/loadbalancer_hashing.png) + +## 二、快速入门 + +### 引入 Ehcache + +如果你的项目使用 maven 管理,添加以下依赖到你的 pom.xml 中。 + +```xml + + net.sf.ehcache + ehcache + 2.10.2 + pom + +``` + +如果你的项目不使用 maven 管理,请在 [Ehcache 官网下载地址](http://www.ehcache.org/downloads/) 下载 jar 包。 + +Spring 提供了对于 Ehcache 接口的封装,可以更简便的使用其功能。接入方式如下: + +如果你的项目使用 maven 管理,添加以下依赖到你的*pom.xml*中。 + +`spring-context-support`这个 jar 包中含有 Spring 对于缓存功能的抽象封装接口。 + +```xml + + org.springframework + spring-context-support + 4.1.4.RELEASE + +``` + +### 添加配置文件 + +(1)在 classpath 下添加 `ehcache.xml` +添加一个名为 _helloworld_ 的缓存。 + +```xml + + + + + + + + + + + + +``` + +### Ehcache 工作示例 + +Ehcache 会自动加载 `classpath` 根目录下名为 `ehcache.xml` 文件。 + +EhcacheDemo 的工作步骤如下: + +1. 在 EhcacheDemo 中,我们引用 `ehcache.xml` 声明的名为 _helloworld_ 的缓存来创建`Cache`对象; +2. 然后我们用一个键值对来实例化`Element`对象; +3. 将`Element`对象添加到`Cache`; +4. 然后用`Cache`的 get 方法获取`Element`对象。 + +```java +public class EhcacheDemo { + public static void main(String[] args) throws Exception { + // Create a cache manager + final CacheManager cacheManager = new CacheManager(); + + // create the cache called "helloworld" + final Cache cache = cacheManager.getCache("helloworld"); + + // create a key to map the data to + final String key = "greeting"; + + // Create a data element + final Element putGreeting = new Element(key, "Hello, World!"); + + // Put the element into the data store + cache.put(putGreeting); + + // Retrieve the data element + final Element getGreeting = cache.get(key); + + // Print the value + System.out.println(getGreeting.getObjectValue()); + } +} +``` + +输出 + +``` +Hello, World! +``` + +## 三、Ehcache API + +`Element`、`Cache`、`CacheManager`是 Ehcache 最重要的 API。 + +- `Element` - 缓存的元素,它维护着一个键值对。 +- `Cache` - 它是 Ehcache 的核心类,它有多个`Element`,并被`CacheManager`管理。它实现了对缓存的逻辑行为。 +- `CacheManager` - `Cache`的容器对象,并管理着`Cache`的生命周期。CacheManager 支持两种创建模式:单例(Singleton mode)和实例(InstanceMode)。 + +### 创建 CacheManager + +下面的代码列举了创建 `CacheManager` 的五种方式。 + +使用静态方法`create()`会以默认配置来创建单例的`CacheManager`实例。 + +`newInstance()`方法是一个工厂方法,以默认配置创建一个新的`CacheManager`实例。 + +此外,`newInstance()`还有几个重载函数,分别可以通过传入`String`、`URL`、`InputStream`参数来加载配置文件,然后创建`CacheManager`实例。 + +```java +// 使用Ehcache默认配置获取单例的CacheManager实例 +CacheManager.create(); +String[] cacheNames = CacheManager.getInstance().getCacheNames(); + +// 使用Ehcache默认配置新建一个CacheManager实例 +CacheManager.newInstance(); +String[] cacheNames = manager.getCacheNames(); + +// 使用不同的配置文件分别创建一个CacheManager实例 +CacheManager manager1 = CacheManager.newInstance("src/config/ehcache1.xml"); +CacheManager manager2 = CacheManager.newInstance("src/config/ehcache2.xml"); +String[] cacheNamesForManager1 = manager1.getCacheNames(); +String[] cacheNamesForManager2 = manager2.getCacheNames(); + +// 基于classpath下的配置文件创建CacheManager实例 +URL url = getClass().getResource("/anotherconfigurationname.xml"); +CacheManager manager = CacheManager.newInstance(url); + +// 基于文件流得到配置文件,并创建CacheManager实例 +InputStream fis = new FileInputStream(new File +("src/config/ehcache.xml").getAbsolutePath()); +try { + CacheManager manager = CacheManager.newInstance(fis); +} finally { + fis.close(); +} +``` + +### 添加缓存 + +**需要强调一点,`Cache`对象在用`addCache`方法添加到`CacheManager`之前,是无效的。** + +使用 CacheManager 的 addCache 方法可以根据缓存名将 ehcache.xml 中声明的 cache 添加到容器中;它也可以直接将 Cache 对象添加到缓存容器中。 + +`Cache`有多个构造函数,提供了不同方式去加载缓存的配置参数。 + +有时候,你可能需要使用 API 来动态的添加缓存,下面的例子就提供了这样的范例。 + +```java +// 除了可以使用xml文件中配置的缓存,你也可以使用API动态增删缓存 +// 添加缓存 +manager.addCache(cacheName); + +// 使用默认配置添加缓存 +CacheManager singletonManager = CacheManager.create(); +singletonManager.addCache("testCache"); +Cache test = singletonManager.getCache("testCache"); + +// 使用自定义配置添加缓存,注意缓存未添加进CacheManager之前并不可用 +CacheManager singletonManager = CacheManager.create(); +Cache memoryOnlyCache = new Cache("testCache", 5000, false, false, 5, 2); +singletonManager.addCache(memoryOnlyCache); +Cache test = singletonManager.getCache("testCache"); + +// 使用特定的配置添加缓存 +CacheManager manager = CacheManager.create(); +Cache testCache = new Cache( + new CacheConfiguration("testCache", maxEntriesLocalHeap) + .memoryStoreEvictionPolicy(MemoryStoreEvictionPolicy.LFU) + .eternal(false) + .timeToLiveSeconds(60) + .timeToIdleSeconds(30) + .diskExpiryThreadIntervalSeconds(0) + .persistence(new PersistenceConfiguration().strategy(Strategy.LOCALTEMPSWAP))); + manager.addCache(testCache); +``` + +### 删除缓存 + +删除缓存比较简单,你只需要将指定的缓存名传入`removeCache`方法即可。 + +```java +CacheManager singletonManager = CacheManager.create(); +singletonManager.removeCache("sampleCache1"); +``` + +### 基本缓存操作 + +Cache 最重要的两个方法就是 put 和 get,分别用来添加 Element 和获取 Element。 + +Cache 还提供了一系列的 get、set 方法来设置或获取缓存参数,这里不一一列举,更多 API 操作可参考[官方 API 开发手册](http://www.ehcache.org/generated/2.10.2/pdf/Ehcache_API_Developer_Guide.pdf)。 + +```java +/** + * 测试:使用默认配置或使用指定配置来创建CacheManager + * + * @author Zhang Peng + */ +public class CacheOperationTest { + private final Logger log = LoggerFactory.getLogger(CacheOperationTest.class); + + /** + * 使用Ehcache默认配置(classpath下的ehcache.xml)获取单例的CacheManager实例 + */ + @Test + public void operation() { + CacheManager manager = CacheManager.newInstance("src/test/resources/ehcache/ehcache.xml"); + + // 获得Cache的引用 + Cache cache = manager.getCache("userCache"); + + // 将一个Element添加到Cache + cache.put(new Element("key1", "value1")); + + // 获取Element,Element类支持序列化,所以下面两种方法都可以用 + Element element1 = cache.get("key1"); + // 获取非序列化的值 + log.debug("key:{}, value:{}", element1.getObjectKey(), element1.getObjectValue()); + // 获取序列化的值 + log.debug("key:{}, value:{}", element1.getKey(), element1.getValue()); + + // 更新Cache中的Element + cache.put(new Element("key1", "value2")); + Element element2 = cache.get("key1"); + log.debug("key:{}, value:{}", element2.getObjectKey(), element2.getObjectValue()); + + // 获取Cache的元素数 + log.debug("cache size:{}", cache.getSize()); + + // 获取MemoryStore的元素数 + log.debug("MemoryStoreSize:{}", cache.getMemoryStoreSize()); + + // 获取DiskStore的元素数 + log.debug("DiskStoreSize:{}", cache.getDiskStoreSize()); + + // 移除Element + cache.remove("key1"); + log.debug("cache size:{}", cache.getSize()); + + // 关闭当前CacheManager对象 + manager.shutdown(); + + // 关闭CacheManager单例实例 + CacheManager.getInstance().shutdown(); + } +} +``` + +## 四、Ehcache 配置 + +> Ehcache 支持通过 xml 文件和 API 两种方式进行配置。 +> +> 详情参考:[Ehcache 官方 XML 配置手册](http://www.ehcache.org/documentation/3.8/xml.html) + +### xml 配置方式 + +Ehcache 的`CacheManager`构造函数或工厂方法被调用时,会默认加载 classpath 下名为*ehcache.xml*的配置文件。如果加载失败,会加载 Ehcache jar 包中的*ehcache-failsafe.xml*文件,这个文件中含有简单的默认配置。 +**ehcache.xml 配置参数说明:** + +- **name**:缓存名称。 +- **maxElementsInMemory**:缓存最大个数。 +- **eternal**:缓存中对象是否为永久的,如果是,超时设置将被忽略,对象从不过期。 +- **timeToIdleSeconds**:置对象在失效前的允许闲置时间(单位:秒)。仅当 eternal=false 对象不是永久有效时使用,可选属性,默认值是 0,也就是可闲置时间无穷大。 +- **timeToLiveSeconds**:缓存数据的生存时间(TTL),也就是一个元素从构建到消亡的最大时间间隔值,这只能在元素不是永久驻留时有效,如果该值是 0 就意味着元素可以停顿无穷长的时间。 +- **maxEntriesLocalDisk**:当内存中对象数量达到 maxElementsInMemory 时,Ehcache 将会对象写到磁盘中。 +- **overflowToDisk**:内存不足时,是否启用磁盘缓存。 +- **diskSpoolBufferSizeMB**:这个参数设置 DiskStore(磁盘缓存)的缓存区大小。默认是 30MB。每个 Cache 都应该有自己的一个缓冲区。 +- **maxElementsOnDisk**:硬盘最大缓存个数。 +- **diskPersistent**:是否在 VM 重启时存储硬盘的缓存数据。默认值是 false。 +- **diskExpiryThreadIntervalSeconds**:磁盘失效线程运行时间间隔,默认是 120 秒。 +- **memoryStoreEvictionPolicy**:当达到 maxElementsInMemory 限制时,Ehcache 将会根据指定的策略去清理内存。默认策略是 LRU(最近最少使用)。你可以设置为 FIFO(先进先出)或是 LFU(较少使用)。 +- **clearOnFlush**:内存数量最大时是否清除。 + +### API 配置方式 + +xml 配置的参数也可以直接通过编程方式来动态的进行配置(dynamicConfig 没有设为 false)。 + +```java +Cache cache = manager.getCache("sampleCache"); +CacheConfiguration config = cache.getCacheConfiguration(); +config.setTimeToIdleSeconds(60); +config.setTimeToLiveSeconds(120); +config.setmaxEntriesLocalHeap(10000); +config.setmaxEntriesLocalDisk(1000000); +``` + +也可以通过`disableDynamicFeatures()`方式关闭动态配置开关。配置以后你将无法再以编程方式配置参数。 + +```java +Cache cache = manager.getCache("sampleCache"); +cache.disableDynamicFeatures(); +``` + +## 五、Spring 集成 Ehcache + +Spring3.1 开始添加了对缓存的支持。和事务功能的支持方式类似,缓存抽象允许底层使用不同的缓存解决方案来进行整合。 + +Spring4.1 开始支持 JSR-107 注解。 + +> **注:我本人使用的 Spring 版本为 4.1.4.RELEASE,目前 Spring 版本仅支持 Ehcache2.5 以上版本,但不支持 Ehcache3。** + +### 绑定 Ehcache + +`org.springframework.cache.ehcache.EhCacheManagerFactoryBean`这个类的作用是加载 Ehcache 配置文件。 +`org.springframework.cache.ehcache.EhCacheCacheManager`这个类的作用是支持 net.sf.ehcache.CacheManager。 + +*spring-ehcache.xml*的配置 + +```xml + + + + ehcache缓存配置管理文件 + + + + + + + + + + + + +``` + +### 使用 Spring 的缓存注解 + +#### 开启注解 + +Spring 为缓存功能提供了注解功能,但是你必须启动注解。 +你有两个选择: +(1) 在 xml 中声明 +像上一节 spring-ehcache.xml 中的做法一样,使用`` + +```xml + +``` + +(2) 使用标记注解 +你也可以通过对一个类进行注解修饰的方式在这个类中使用缓存注解。 +范例如下: + +```java +@Configuration +@EnableCaching +public class AppConfig { +} +``` + +### 注解基本使用方法 + +Spring 对缓存的支持类似于对事务的支持。 +首先使用注解标记方法,相当于定义了切点,然后使用 Aop 技术在这个方法的调用前、调用后获取方法的入参和返回值,进而实现了缓存的逻辑。 +下面三个注解都是方法级别: + +#### @Cacheable + +表明所修饰的方法是可以缓存的:当第一次调用这个方法时,它的结果会被缓存下来,在缓存的有效时间内,以后访问这个方法都直接返回缓存结果,不再执行方法中的代码段。 +这个注解可以用`condition`属性来设置条件,如果不满足条件,就不使用缓存能力,直接执行方法。 +可以使用`key`属性来指定 key 的生成规则。 + +#### @CachePut + +与`@Cacheable`不同,`@CachePut`不仅会缓存方法的结果,还会执行方法的代码段。 +它支持的属性和用法都与`@Cacheable`一致。 + +#### @CacheEvict + +与`@Cacheable`功能相反,`@CacheEvict`表明所修饰的方法是用来删除失效或无用的缓存数据。 +下面是`@Cacheable`、`@CacheEvict`和`@CachePut`基本使用方法的一个集中展示: + +```java +@Service +public class UserService { + // @Cacheable可以设置多个缓存,形式如:@Cacheable({"books", "isbns"}) + @Cacheable(value={"users"}, key="#user.id") + public User findUser(User user) { + return findUserInDB(user.getId()); + } + + @Cacheable(value = "users", condition = "#user.getId() <= 2") + public User findUserInLimit(User user) { + return findUserInDB(user.getId()); + } + + @CachePut(value = "users", key = "#user.getId()") + public void updateUser(User user) { + updateUserInDB(user); + } + + @CacheEvict(value = "users") + public void removeUser(User user) { + removeUserInDB(user.getId()); + } + + @CacheEvict(value = "users", allEntries = true) + public void clear() { + removeAllInDB(); + } +} +``` + +#### @Caching + +如果需要使用同一个缓存注解(`@Cacheable`、`@CacheEvict`或`@CachePut`)多次修饰一个方法,就需要用到`@Caching`。 + +```java +@Caching(evict = { @CacheEvict("primary"), @CacheEvict(cacheNames="secondary", key="#p0") }) +public Book importBooks(String deposit, Date date) +``` + +#### @CacheConfig + +与前面的缓存注解不同,这是一个类级别的注解。 +如果类的所有操作都是缓存操作,你可以使用`@CacheConfig`来指定类,省去一些配置。 + +```java +@CacheConfig("books") +public class BookRepositoryImpl implements BookRepository { + @Cacheable + public Book findBook(ISBN isbn) {...} +} +``` + +## 参考资料 + +- **官方** + - [Ehcache 官网](http://www.ehcache.org/) + - [Ehcache Github](https://github.com/ehcache/ehcache3) +- **文章** + - [Ehcache 优缺点以及分布式详解](https://yq.aliyun.com/articles/72885?utm_campaign=wenzhang&utm_medium=article&utm_source=QQ-qun&2017331&utm_content=m_15513) + - [Ehcache 详细解读](http://raychase.iteye.com/blog/1545906) + - [注释驱动的 Spring cache 缓存介绍](http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-cache/) + - [Spring 官方文档第 36 章缓存抽象](http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/) diff --git a/docs/cache/http-cache.md b/docs/cache/http-cache.md new file mode 100644 index 00000000..3671cf8b --- /dev/null +++ b/docs/cache/http-cache.md @@ -0,0 +1,76 @@ +# Http 缓存 + +HTTP 缓存分为 2 种,一种是强缓存,另一种是协商缓存。主要作用是可以加快资源获取速度,提升用户体验,减少网络传输,缓解服务端的压力。 + + + +- [Http 强缓存](#http-强缓存) + - [Expires](#expires) + - [Cache-Control](#cache-control) + - [Pragma](#pragma) +- [协商缓存](#协商缓存) + - [ETag/If-None-Match](#etagif-none-match) + - [Last-Modified/If-Modified-Since](#last-modifiedif-modified-since) +- [参考资料](#参考资料) + + + +## Http 强缓存 + +不需要发送请求到服务端,直接读取浏览器本地缓存,在 Chrome 的 Network 中显示的 HTTP 状态码是 200 ,在 Chrome 中,强缓存又分为 Disk Cache (存放在硬盘中)和 Memory Cache (存放在内存中),存放的位置是由浏览器控制的。是否强缓存由 `Expires`、`Cache-Control` 和 `Pragma` 3 个 Header 属性共同来控制。 + +### Expires + +`Expires` 的值是一个 HTTP 日期,在浏览器发起请求时,会根据系统时间和 Expires 的值进行比较,如果系统时间超过了 Expires 的值,缓存失效。由于和系统时间进行比较,所以当系统时间和服务器时间不一致的时候,会有缓存有效期不准的问题。Expires 的优先级在三个 Header 属性中是最低的。 + +### Cache-Control + +`Cache-Control` 是 HTTP/1.1 中新增的属性,在请求头和响应头中都可以使用,常用的属性值如有: + +- `max-age`:单位是秒,缓存时间计算的方式是距离发起的时间的秒数,超过间隔的秒数缓存失效 +- `no-cache`:不使用强缓存,需要与服务器验证缓存是否新鲜 +- `no-store`:禁止使用缓存(包括协商缓存),每次都向服务器请求最新的资源 +- `private`:专用于个人的缓存,中间代理、CDN 等不能缓存此响应 +- `public`:响应可以被中间代理、CDN 等缓存 +- `must-revalidate`:在缓存过期前可以使用,过期后必须向服务器验证 + +### Pragma + +`Pragma` 只有一个属性值,就是 no-cache ,效果和 Cache-Control 中的 no-cache 一致,不使用强缓存,需要与服务器验证缓存是否新鲜,在 3 个头部属性中的优先级最高。 + +## 协商缓存 + +当浏览器的强缓存失效的时候或者请求头中设置了不走强缓存,并且在请求头中设置了 If-Modified-Since 或者 If-None-Match 的时候,会将这两个属性值到服务端去验证是否命中协商缓存,如果命中了协商缓存,会返回 304 状态,加载浏览器缓存,并且响应头会设置 Last-Modified 或者 ETag 属性。 + +### ETag/If-None-Match + +Etag: 服务器响应请求时,通过此字段告诉浏览器当前资源在服务器生成的唯一标识(生成规则由服务器决定) + +If-None-Match: 再次请求服务器时,浏览器的请求报文头部会包含此字段,后面的值为在缓存中获取的标识。服务器接收到次报文后发现 If-None-Match 则与被请求资源的唯一标识进行对比。 + +1. 不同,说明资源被改动过,则响应整个资源内容,返回状态码 200。 +2. 相同,说明资源无心修改,则响应 header,浏览器直接从缓存中获取数据信息。返回状态码 304. + +但是实际应用中由于 Etag 的计算是使用算法来得出的,而算法会占用服务端计算的资源,所有服务端的资源都是宝贵的,所以就很少使用 Etag 了。 + +### Last-Modified/If-Modified-Since + +Last-Modified: 服务器在响应请求时,会告诉浏览器资源的最后修改时间。 + +if-Modified-Since: 浏览器再次请求服务器的时候,请求头会包含此字段,后面跟着在缓存中获得的最后修改时间。服务端收到此请求头发现有 if-Modified-Since,则与被请求资源的最后修改时间进行对比,如果一致则返回 304 和响应报文头,浏览器只需要从缓存中获取信息即可。 从字面上看,就是说:从某个时间节点算起,是否文件被修改了 + +1. 如果真的被修改:那么开始传输响应一个整体,服务器返回:200 OK +2. 如果没有被修改:那么只需传输响应 header,服务器返回:304 Not Modified + +if-Unmodified-Since: 从字面上看, 就是说: 从某个时间点算起, 是否文件没有被修改 + +1. 如果没有被修改:则开始`继续'传送文件: 服务器返回: 200 OK +2. 如果文件被修改:则不传输,服务器返回: 412 Precondition failed (预处理错误) + +这两个的区别是一个是修改了才下载一个是没修改才下载。 Last-Modified 说好却也不是特别好,因为如果在服务器上,一个资源被修改了,但其实际内容根本没发生改变,会因为 Last-Modified 时间匹配不上而返回了整个实体给客户端(即使客户端缓存里有个一模一样的资源)。为了解决这个问题,HTTP1.1 推出了 Etag。 + +## 参考资料 + +- [图解 HTTP 缓存](https://juejin.im/post/5eb7f811f265da7bbc7cc5bd) +- [HTTP----HTTP 缓存机制](https://juejin.im/post/5a1d4e546fb9a0450f21af23) +- [缓存详解](https://juejin.im/post/5a6c87c46fb9a01ca560b4d7) diff --git a/docs/cache/memcached.md b/docs/cache/memcached.md new file mode 100644 index 00000000..1700a780 --- /dev/null +++ b/docs/cache/memcached.md @@ -0,0 +1,76 @@ +# Memcached 应用指南 + +## 一、Memcached 简介 + +Memcached 是一个自由开源的,高性能,分布式内存对象缓存系统。 + +Memcached 是一种基于内存的 key-value 存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API 调用或者是页面渲染的结果。 + +Memcached 简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的 API 兼容大部分流行的开发语言。本质上,它是一个简洁的 key-value 存储系统。 + +### Memcached 特性 + +memcached 作为高速运行的分布式缓存服务器,具有以下的特点。 + +- 协议简单 +- 基于 libevent 的事件处理 +- 内置内存存储方式 +- memcached 不互相通信的分布式 + +## 二、Memcached 命令 + +可以通过 telnet 命令并指定主机ip和端口来连接 Memcached 服务。 + +``` +telnet 127.0.0.1 11211 + +Trying 127.0.0.1... +Connected to 127.0.0.1. +Escape character is '^]'. +set foo 0 0 3 保存命令 +bar 数据 +STORED 结果 +get foo 取得命令 +VALUE foo 0 3 数据 +bar 数据 +END 结束行 +quit 退出 +``` + +## 三、Java 连接 Memcached + +使用 Java 程序连接 Memcached,需要在你的 classpath 中添加 Memcached jar 包。 + +本站 jar 包下载地址:[spymemcached-2.10.3.jar](https://www.runoob.com/try/download/spymemcached-2.10.3.jar)。 + +Google Code jar 包下载地址:[spymemcached-2.10.3.jar](http://code.google.com/p/spymemcached/downloads/list)(需要科学上网)。 + +以下程序假定 Memcached 服务的主机为 127.0.0.1,端口为 11211。 + +```java +import net.spy.memcached.MemcachedClient; +import java.net.*; + + +public class MemcachedJava { + public static void main(String[] args) { + try{ + // 本地连接 Memcached 服务 + MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); + System.out.println("Connection to server sucessful."); + + // 关闭连接 + mcc.shutdown(); + + }catch(Exception ex){ + System.out.println( ex.getMessage() ); + } + } +} +``` + +## 参考资料 + +- [Memcached 官网](https://memcached.org/) +- [Memcached Github](https://github.com/memcached/memcached/) +- [Memcached 教程](https://www.runoob.com/memcached/memcached-tutorial.html) diff --git a/docs/framework/README.md b/docs/framework/README.md new file mode 100644 index 00000000..52bad5ce --- /dev/null +++ b/docs/framework/README.md @@ -0,0 +1,27 @@ +# Java 主流框架 + +## 📖 内容 + +- [Spring](https://dunwu.github.io/spring-tutorial/) 📚 +- [Spring Boot](https://dunwu.github.io/spring-boot-tutorial/) 📚 +- [Spring Cloud](https://github.com/dunwu/spring-cloud-tutorial) 📚 +- [MyBatis](mybatis) + - [Mybatis 应用指南](mybatis/Mybatis应用指南.md) + - [Mybatis 原理](mybatis/Mybatis原理.md) +- [Netty](netty.md) + +## 📚 资料 + +- **Mybatis** + - [Mybatis Github](https://github.com/mybatis/mybatis-3) + - [Mybatis 官网](http://www.mybatis.org/mybatis-3/) + - [MyBatis 官方代码生成(mybatis-generator)](https://github.com/mybatis/generator) + - [MyBatis 官方集成 Spring(mybatis-spring)](https://github.com/mybatis/spring) + - [Mybatis 官方集成 Spring Boot(mybatis-spring-boot)](https://github.com/mybatis/spring-boot-starter) + - [MyBatis-Plus](https://github.com/baomidou/mybatis-plus) - CRUD 扩展插件、代码生成器、分页器等多功能 + - [Mapper](https://github.com/abel533/Mapper) - CRUD 扩展插件 + - [Mybatis-PageHelper](https://github.com/pagehelper/Mybatis-PageHelper) - Mybatis 通用分页插件 + +## 🚪 传送 + +◾ 🏠 [JAVA-TUTORIAL 首页](https://github.com/dunwu/java-tutorial) ◾ 🎯 [我的博客](https://github.com/dunwu/blog) ◾ diff --git "a/docs/framework/mybatis/Mybatis\345\216\237\347\220\206.md" "b/docs/framework/mybatis/Mybatis\345\216\237\347\220\206.md" new file mode 100644 index 00000000..89ced559 --- /dev/null +++ "b/docs/framework/mybatis/Mybatis\345\216\237\347\220\206.md" @@ -0,0 +1,877 @@ +# Mybatis 原理 + +> Mybatis 的前身就是 iBatis ,是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。本文以一个 Mybatis 完整示例为切入点,结合 Mybatis 底层源码分析,图文并茂的讲解 Mybatis 的核心工作机制。 + + + +- [1. Mybatis 完整示例](#1-mybatis-完整示例) + - [1.1. 数据库准备](#11-数据库准备) + - [1.2. 添加 Mybatis](#12-添加-mybatis) + - [1.3. Mybatis 配置](#13-mybatis-配置) + - [1.4. Mapper](#14-mapper) + - [1.5. 测试程序](#15-测试程序) +- [2. Mybatis 生命周期](#2-mybatis-生命周期) + - [2.1. SqlSessionFactoryBuilder](#21-sqlsessionfactorybuilder) + - [2.2. SqlSessionFactory](#22-sqlsessionfactory) + - [2.3. SqlSession](#23-sqlsession) + - [2.4. 映射器](#24-映射器) +- [3. Mybatis 的架构](#3-mybatis-的架构) + - [3.1. 配置层](#31-配置层) + - [3.2. 接口层](#32-接口层) + - [3.3. 数据处理层](#33-数据处理层) + - [3.4. 框架支撑层](#34-框架支撑层) +- [4. SqlSession 内部工作机制](#4-sqlsession-内部工作机制) + - [4.1. SqlSession 子组件](#41-sqlsession-子组件) + - [4.2. SqlSession 和 Mapper](#42-sqlsession-和-mapper) + - [4.3. SqlSession 和 Executor](#43-sqlsession-和-executor) + - [4.4. Executor 工作流程](#44-executor-工作流程) + - [4.5. StatementHandler 工作流程](#45-statementhandler-工作流程) + - [4.6. ParameterHandler 工作流程](#46-parameterhandler-工作流程) + - [4.7. ResultSetHandler 工作流程](#47-resultsethandler-工作流程) +- [5. 参考资料](#5-参考资料) + + + +## 1. Mybatis 完整示例 + +> 这里,我将以一个入门级的示例来演示 Mybatis 是如何工作的。 +> +> 注:本文后面章节中的原理、源码部分也将基于这个示例来进行讲解。 +> +> [完整示例源码地址](https://github.com/dunwu/spring-tutorial/blob/master/codes/data/spring-data-mybatis/src/main/java/io/github/dunwu/spring/orm/MybatisDemo.java) + +### 1.1. 数据库准备 + +在本示例中,需要针对一张用户表进行 CRUD 操作。其数据模型如下: + +```sql +CREATE TABLE IF NOT EXISTS user ( + id BIGINT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Id', + name VARCHAR(10) NOT NULL DEFAULT '' COMMENT '用户名', + age INT(3) NOT NULL DEFAULT 0 COMMENT '年龄', + address VARCHAR(32) NOT NULL DEFAULT '' COMMENT '地址', + email VARCHAR(32) NOT NULL DEFAULT '' COMMENT '邮件', + PRIMARY KEY (id) +) COMMENT = '用户表'; + +INSERT INTO user (name, age, address, email) +VALUES ('张三', 18, '北京', 'xxx@163.com'); +INSERT INTO user (name, age, address, email) +VALUES ('李四', 19, '上海', 'xxx@163.com'); +``` + +### 1.2. 添加 Mybatis + +如果使用 Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中: + +```xml + + org.Mybatis + Mybatis + x.x.x + +``` + +### 1.3. Mybatis 配置 + +XML 配置文件中包含了对 Mybatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)。 + +本示例中只是给出最简化的配置。 + +【示例】Mybatis-config.xml 文件 + +```xml + + + + + + + + + + + + + + + + + + +``` + +> 说明:上面的配置文件中仅仅指定了数据源连接方式和 User 表的映射配置文件。 + +### 1.4. Mapper + +#### Mapper.xml + +个人理解,Mapper.xml 文件可以看做是 Mybatis 的 JDBC SQL 模板。 + +【示例】UserMapper.xml 文件 + +下面是一个通过 Mybatis Generator 自动生成的完整的 Mapper 文件。 + +```xml + + + + + + + + + + + + delete from user + where id = #{id,jdbcType=BIGINT} + + + insert into user (id, name, age, + address, email) + values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER}, + #{address,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}) + + + update user + set name = #{name,jdbcType=VARCHAR}, + age = #{age,jdbcType=INTEGER}, + address = #{address,jdbcType=VARCHAR}, + email = #{email,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + + + +``` + +#### Mapper.java + +Mapper.java 文件是 Mapper.xml 对应的 Java 对象。 + +【示例】UserMapper.java 文件 + +```java +public interface UserMapper { + + int deleteByPrimaryKey(Long id); + + int insert(User record); + + User selectByPrimaryKey(Long id); + + List selectAll(); + + int updateByPrimaryKey(User record); + +} +``` + +对比 UserMapper.java 和 UserMapper.xml 文件,不难发现: + +UserMapper.java 中的方法和 UserMapper.xml 的 CRUD 语句元素( ``、``、``、`` 的 `parameterType` 属性以及 `` 的 `type` 属性都可能会绑定到数据实体。这样就可以把 JDBC 操作的输入输出和 JavaBean 结合起来,更加方便、易于理解。 + +### 1.5. 测试程序 + +【示例】MybatisDemo.java 文件 + +```java +public class MybatisDemo { + + public static void main(String[] args) throws Exception { + // 1. 加载 Mybatis 配置文件,创建 SqlSessionFactory + // 注:在实际的应用中,SqlSessionFactory 应该是单例 + InputStream inputStream = Resources.getResourceAsStream("Mybatis/Mybatis-config.xml"); + SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); + SqlSessionFactory factory = builder.build(inputStream); + + // 2. 创建一个 SqlSession 实例,进行数据库操作 + SqlSession sqlSession = factory.openSession(); + + // 3. Mapper 映射并执行 + Long params = 1L; + List list = sqlSession.selectList("io.github.dunwu.spring.orm.mapper.UserMapper.selectByPrimaryKey", params); + for (User user : list) { + System.out.println("user name: " + user.getName()); + } + // 输出:user name: 张三 + } + +} +``` + +> 说明: +> +> `SqlSession` 接口是 Mybatis API 核心中的核心,它代表了 Mybatis 和数据库的一次完整会话。 +> +> - Mybatis 会解析配置,并根据配置创建 `SqlSession` 。 +> - 然后,Mybatis 将 Mapper 映射为 `SqlSession`,然后传递参数,执行 SQL 语句并获取结果。 + +## 2. Mybatis 生命周期 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210510113446.png) + +### 2.1. SqlSessionFactoryBuilder + +#### SqlSessionFactoryBuilder 的职责 + +**`SqlSessionFactoryBuilder` 负责创建 `SqlSessionFactory` 实例**。`SqlSessionFactoryBuilder` 可以从 XML 配置文件或一个预先定制的 `Configuration` 的实例构建出 `SqlSessionFactory` 的实例。 + +`Configuration` 类包含了对一个 `SqlSessionFactory` 实例你可能关心的所有内容。 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210508173040.png) + +`SqlSessionFactoryBuilder` 应用了建造者设计模式,它有五个 `build` 方法,允许你通过不同的资源创建 `SqlSessionFactory` 实例。 + +```java +SqlSessionFactory build(InputStream inputStream) +SqlSessionFactory build(InputStream inputStream, String environment) +SqlSessionFactory build(InputStream inputStream, Properties properties) +SqlSessionFactory build(InputStream inputStream, String env, Properties props) +SqlSessionFactory build(Configuration config) +``` + +#### SqlSessionFactoryBuilder 的生命周期 + +`SqlSessionFactoryBuilder` 可以被实例化、使用和丢弃,一旦创建了 `SqlSessionFactory`,就不再需要它了。 因此 `SqlSessionFactoryBuilder` 实例的最佳作用域是方法作用域(也就是局部方法变量)。你可以重用 `SqlSessionFactoryBuilder` 来创建多个 `SqlSessionFactory` 实例,但最好还是不要一直保留着它,以保证所有的 XML 解析资源可以被释放给更重要的事情。 + +### 2.2. SqlSessionFactory + +#### SqlSessionFactory 职责 + +**`SqlSessionFactory` 负责创建 `SqlSession` 实例。** + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210510105641.png) + +`SqlSessionFactory` 应用了工厂设计模式,它提供了一组方法,用于创建 SqlSession 实例。 + +```java +SqlSession openSession() +SqlSession openSession(boolean autoCommit) +SqlSession openSession(Connection connection) +SqlSession openSession(TransactionIsolationLevel level) +SqlSession openSession(ExecutorType execType, TransactionIsolationLevel level) +SqlSession openSession(ExecutorType execType) +SqlSession openSession(ExecutorType execType, boolean autoCommit) +SqlSession openSession(ExecutorType execType, Connection connection) +Configuration getConfiguration(); +``` + +方法说明: + +- 默认的 `openSession()` 方法没有参数,它会创建具备如下特性的 `SqlSession`: + - 事务作用域将会开启(也就是不自动提交)。 + - 将由当前环境配置的 `DataSource` 实例中获取 `Connection` 对象。 + - 事务隔离级别将会使用驱动或数据源的默认设置。 + - 预处理语句不会被复用,也不会批量处理更新。 +- `TransactionIsolationLevel` 表示事务隔离级别,它对应着 JDBC 的五个事务隔离级别。 +- `ExecutorType` 枚举类型定义了三个值: + - `ExecutorType.SIMPLE`:该类型的执行器没有特别的行为。它为每个语句的执行创建一个新的预处理语句。 + - `ExecutorType.REUSE`:该类型的执行器会复用预处理语句。 + - `ExecutorType.BATCH`:该类型的执行器会批量执行所有更新语句,如果 SELECT 在多个更新中间执行,将在必要时将多条更新语句分隔开来,以方便理解。 + +#### SqlSessionFactory 生命周期 + +`SqlSessionFactory` 应该以单例形式在应用的运行期间一直存在。 + +### 2.3. SqlSession + +#### SqlSession 职责 + +**Mybatis 的主要 Java 接口就是 `SqlSession`。它包含了所有执行语句,获取映射器和管理事务等方法。** + +> 详细内容可以参考:「 [Mybatis 官方文档之 SqlSessions](http://www.Mybatis.org/Mybatis-3/zh/java-api.html#sqlSessions) 」 。 + +SqlSession 类的方法可以按照下图进行大致分类: + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210510110638.png) + +#### SqlSession 生命周期 + +`SqlSessions` 是由 `SqlSessionFactory` 实例创建的;而 `SqlSessionFactory` 是由 `SqlSessionFactoryBuilder` 创建的。 + +> 🔔 注意:当 Mybatis 与一些依赖注入框架(如 Spring 或者 Guice)同时使用时,`SqlSessions` 将被依赖注入框架所创建,所以你不需要使用 `SqlSessionFactoryBuilder` 或者 `SqlSessionFactory`。 + +**每个线程都应该有它自己的 `SqlSession` 实例。** + +`SqlSession` 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。 绝对不能将 `SqlSession` 实例的引用放在一个类的静态域,甚至一个类的实例变量也不行。 也绝不能将 `SqlSession` 实例的引用放在任何类型的托管作用域中,比如 Servlet 框架中的 `HttpSession`。 正确在 Web 中使用 `SqlSession` 的场景是:每次收到的 HTTP 请求,就可以打开一个 `SqlSession`,返回一个响应,就关闭它。 + +编程模式: + +```java +try (SqlSession session = sqlSessionFactory.openSession()) { + // 你的应用逻辑代码 +} +``` + +### 2.4. 映射器 + +#### 映射器职责 + +映射器是一些由用户创建的、绑定 SQL 语句的接口。 + +`SqlSession` 中的 `insert`、`update`、`delete` 和 `select` 方法都很强大,但也有些繁琐。更通用的方式是使用映射器类来执行映射语句。**一个映射器类就是一个仅需声明与 `SqlSession` 方法相匹配的方法的接口类**。 + +Mybatis 将配置文件中的每一个 `` 节点抽象为一个 `Mapper` 接口,而这个接口中声明的方法和跟 `` 节点中的 `` 节点相对应,即 `` 节点的 id 值为 Mapper 接口中的方法名称,`parameterType` 值表示 Mapper 对应方法的入参类型,而 `resultMap` 值则对应了 Mapper 接口表示的返回值类型或者返回结果集的元素类型。 + +Mybatis 会根据相应的接口声明的方法信息,通过动态代理机制生成一个 Mapper 实例;Mybatis 会根据这个方法的方法名和参数类型,确定 Statement Id,然后和 SqlSession 进行映射,底层还是通过 SqlSession 完成和数据库的交互。 + +下面的示例展示了一些方法签名以及它们是如何映射到 `SqlSession` 上的。 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210512111723.png) + +> **注意** +> +> - 映射器接口不需要去实现任何接口或继承自任何类。只要方法可以被唯一标识对应的映射语句就可以了。 +> - 映射器接口可以继承自其他接口。当使用 XML 来构建映射器接口时要保证语句被包含在合适的命名空间中。而且,唯一的限制就是你不能在两个继承关系的接口中拥有相同的方法签名(潜在的危险做法不可取)。 + +#### 映射器生命周期 + +映射器接口的实例是从 `SqlSession` 中获得的。因此从技术层面讲,任何映射器实例的最大作用域是和请求它们的 `SqlSession` 相同的。尽管如此,映射器实例的最佳作用域是方法作用域。 也就是说,映射器实例应该在调用它们的方法中被请求,用过之后即可丢弃。 + +编程模式: + +```java +try (SqlSession session = sqlSessionFactory.openSession()) { + BlogMapper mapper = session.getMapper(BlogMapper.class); + // 你的应用逻辑代码 +} +``` + +- **映射器注解** + +Mybatis 是一个 XML 驱动的框架。配置信息是基于 XML 的,而且映射语句也是定义在 XML 中的。Mybatis 3 以后,支持注解配置。注解配置基于配置 API;而配置 API 基于 XML 配置。 + +Mybatis 支持诸如 `@Insert`、`@Update`、`@Delete`、`@Select`、`@Result` 等注解。 + +> 详细内容请参考:[Mybatis 官方文档之 sqlSessions](http://www.Mybatis.org/Mybatis-3/zh/java-api.html#sqlSessions),其中列举了 Mybatis 支持的注解清单,以及基本用法。 + +## 3. Mybatis 的架构 + +从 Mybatis 代码实现的角度来看,Mybatis 的主要组件有以下几个: + +- **SqlSession** - 作为 Mybatis 工作的主要顶层 API,表示和数据库交互的会话,完成必要数据库增删改查功能。 +- **Executor** - Mybatis 执行器,是 Mybatis 调度的核心,负责 SQL 语句的生成和查询缓存的维护。 +- **StatementHandler** - 封装了 JDBC Statement 操作,负责对 JDBC statement 的操作,如设置参数、将 Statement 结果集转换成 List 集合。 +- **ParameterHandler** - 负责对用户传递的参数转换成 JDBC Statement 所需要的参数。 +- **ResultSetHandler** - 负责将 JDBC 返回的 ResultSet 结果集对象转换成 List 类型的集合。 +- **TypeHandler** - 负责 java 数据类型和 jdbc 数据类型之间的映射和转换。 +- **MappedStatement** - `MappedStatement` 维护了一条 `` 节点的封装。 +- **SqlSource** - 负责根据用户传递的 parameterObject,动态地生成 SQL 语句,将信息封装到 BoundSql 对象中,并返回。 +- **BoundSql** - 表示动态生成的 SQL 语句以及相应的参数信息。 +- **Configuration** - Mybatis 所有的配置信息都维持在 Configuration 对象之中。 + +这些组件的架构层次如下: + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210512114852.png) + +### 3.1. 配置层 + +配置层决定了 Mybatis 的工作方式。 + +Mybatis 提供了两种配置方式: + +- 基于 XML 配置文件的方式 +- 基于 Java API 的方式 + +`SqlSessionFactoryBuilder` 会根据配置创建 `SqlSessionFactory` ; + +`SqlSessionFactory` 负责创建 `SqlSessions` 。 + +### 3.2. 接口层 + +接口层负责和数据库交互的方式。 + +Mybatis 和数据库的交互有两种方式: + +- **使用 SqlSession**:SqlSession 封装了所有执行语句,获取映射器和管理事务的方法。 + - 用户只需要传入 Statement Id 和查询参数给 SqlSession 对象,就可以很方便的和数据库进行交互。 + - 这种方式的缺点是不符合面向对象编程的范式。 +- **使用 Mapper 接口**:Mybatis 会根据相应的接口声明的方法信息,通过动态代理机制生成一个 Mapper 实例;Mybatis 会根据这个方法的方法名和参数类型,确定 Statement Id,然后和 SqlSession 进行映射,底层还是通过 SqlSession 完成和数据库的交互。 + +### 3.3. 数据处理层 + +数据处理层可以说是 Mybatis 的核心,从大的方面上讲,它要完成两个功能: + +- 根据传参 `Statement` 和参数构建动态 SQL 语句 + - 动态语句生成可以说是 Mybatis 框架非常优雅的一个设计,Mybatis 通过传入的参数值,**使用 Ognl 来动态地构造 SQL 语句**,使得 Mybatis 有很强的灵活性和扩展性。 + - 参数映射指的是对于 java 数据类型和 jdbc 数据类型之间的转换:这里有包括两个过程:查询阶段,我们要将 java 类型的数据,转换成 jdbc 类型的数据,通过 `preparedStatement.setXXX()` 来设值;另一个就是对 resultset 查询结果集的 jdbcType 数据转换成 java 数据类型。 +- 执行 SQL 语句以及处理响应结果集 ResultSet + - 动态 SQL 语句生成之后,Mybatis 将执行 SQL 语句,并将可能返回的结果集转换成 `List` 列表。 + - Mybatis 在对结果集的处理中,支持结果集关系一对多和多对一的转换,并且有两种支持方式,一种为嵌套查询语句的查询,还有一种是嵌套结果集的查询。 + +### 3.4. 框架支撑层 + +- **事务管理机制** - Mybatis 将事务抽象成了 Transaction 接口。Mybatis 的事务管理分为两种形式: + - 使用 JDBC 的事务管理机制:即利用 `java.sql.Connection` 对象完成对事务的提交(`commit`)、回滚(`rollback`)、关闭(`close`)等。 + - 使用 MANAGED 的事务管理机制:Mybatis 自身不会去实现事务管理,而是让程序的容器如(JBOSS,Weblogic)来实现对事务的管理。 +- **连接池管理** +- **SQL 语句的配置** - 支持两种方式: + - xml 配置 + - 注解配置 +- 缓存机制 - Mybatis 采用两级缓存结构 + + - **一级缓存是 Session 会话级别的缓存** - 一级缓存又被称之为本地缓存。一般而言,一个 `SqlSession` 对象会使用一个 `Executor` 对象来完成会话操作,`Executor` 对象会维护一个 Cache 缓存,以提高查询性能。 + - 一级缓存的生命周期是 Session 会话级别的。 + - **二级缓存是 Application 应用级别的缓存** - 用户配置了 `"cacheEnabled=true"`,才会开启二级缓存。 + - 如果开启了二级缓存,`SqlSession` 会先使用 `CachingExecutor` 对象来处理查询请求。`CachingExecutor` 会在二级缓存中查看是否有匹配的数据,如果匹配,则直接返回缓存结果;如果缓存中没有,再交给真正的 `Executor` 对象来完成查询,之后 `CachingExecutor` 会将真正 `Executor` 返回的查询结果放置到缓存中,然后在返回给用户。 + - 二级缓存的生命周期是应用级别的。 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210512185709.png) + +## 4. SqlSession 内部工作机制 + +从前文,我们已经了解了,Mybatis 封装了对数据库的访问,把对数据库的会话和事务控制放到了 SqlSession 对象中。那么具体是如何工作的呢?接下来,我们通过源码解读来进行分析。 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210512173437.png) + +`SqlSession` 对于 insert、update、delete、select 的内部处理机制基本上大同小异。所以,接下来,我会以一次完整的 select 查询流程为例讲解 `SqlSession` 内部的工作机制。相信读者如果理解了 select 的处理流程,对于其他 CRUD 操作也能做到一通百通。 + +### 4.1. SqlSession 子组件 + +前面的内容已经介绍了:SqlSession 是 Mybatis 的顶层接口,它提供了所有执行语句,获取映射器和管理事务等方法。 + +实际上,SqlSession 是通过聚合多个子组件,让每个子组件负责各自功能的方式,实现了任务的下发。 + +在了解各个子组件工作机制前,先让我们简单认识一下 SqlSession 的核心子组件。 + +#### Executor + +Executor 即执行器,它负责生成动态 SQL 以及管理缓存。 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210512150000.png) + +- `Executor` 即执行器接口。 +- `BaseExecutor` 是 `Executor` 的抽象类,它采用了模板方法设计模式,内置了一些共性方法,而将定制化方法留给子类去实现。 +- `SimpleExecutor` 是最简单的执行器。它只会直接执行 SQL,不会做额外的事。 +- `BatchExecutor` 是批处理执行器。它的作用是通过批处理来优化性能。值得注意的是,批量更新操作,由于内部有缓存机制,使用完后需要调用 `flushStatements` 来清除缓存。 +- `ReuseExecutor` 是可重用的执行器。重用的对象是 `Statement`,也就是说,该执行器会缓存同一个 SQL 的 `Statement`,避免重复创建 `Statement`。其内部的实现是通过一个 `HashMap` 来维护 `Statement` 对象的。由于当前 `Map` 只在该 session 中有效,所以使用完后需要调用 `flushStatements` 来清除 Map。 +- `CachingExecutor` 是缓存执行器。它只在启用二级缓存时才会用到。 + +#### StatementHandler + +`StatementHandler` 对象负责设置 `Statement` 对象中的查询参数、处理 JDBC 返回的 resultSet,将 resultSet 加工为 List 集合返回。 + +`StatementHandler` 的家族成员: + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210512160243.png) + +- `StatementHandler` 是接口; +- `BaseStatementHandler` 是实现 `StatementHandler` 的抽象类,内置一些共性方法; +- `SimpleStatementHandler` 负责处理 `Statement`; +- `PreparedStatementHandler` 负责处理 `PreparedStatement`; +- `CallableStatementHandler` 负责处理 `CallableStatement`。 +- `RoutingStatementHandler` 负责代理 `StatementHandler` 具体子类,根据 `Statement` 类型,选择实例化 `SimpleStatementHandler`、`PreparedStatementHandler`、`CallableStatementHandler`。 + +#### ParameterHandler + +`ParameterHandler` 负责将传入的 Java 对象转换 JDBC 类型对象,并为 `PreparedStatement` 的动态 SQL 填充数值。 + +`ParameterHandler` 只有一个具体实现类,即 `DefaultParameterHandler`。 + +#### ResultSetHandler + +`ResultSetHandler` 负责两件事: + +- 处理 `Statement` 执行后产生的结果集,生成结果列表 +- 处理存储过程执行后的输出参数 + +`ResultSetHandler` 只有一个具体实现类,即 `DefaultResultSetHandler`。 + +#### TypeHandler + +TypeHandler 负责将 Java 对象类型和 JDBC 类型进行相互转换。 + +### 4.2. SqlSession 和 Mapper + +先来回忆一下 Mybatis 完整示例章节的 测试程序部分的代码。 + +MybatisDemo.java 文件中的代码片段: + +```java +// 2. 创建一个 SqlSession 实例,进行数据库操作 +SqlSession sqlSession = factory.openSession(); + +// 3. Mapper 映射并执行 +Long params = 1L; +List list = sqlSession.selectList("io.github.dunwu.spring.orm.mapper.UserMapper.selectByPrimaryKey", params); +for (User user : list) { + System.out.println("user name: " + user.getName()); +} +``` + +示例代码中,给 sqlSession 对象的传递一个配置的 Sql 语句的 Statement Id 和参数,然后返回结果 + +`io.github.dunwu.spring.orm.mapper.UserMapper.selectByPrimaryKey` 是配置在 `UserMapper.xml` 的 Statement ID,params 是 SQL 参数。 + +UserMapper.xml 文件中的代码片段: + +```xml + +``` + +Mybatis 通过方法的全限定名,将 SqlSession 和 Mapper 相互映射起来。 + +### 4.3. SqlSession 和 Executor + +`org.apache.ibatis.session.defaults.DefaultSqlSession` 中 `selectList` 方法的源码: + +```java +@Override +public List selectList(String statement) { + return this.selectList(statement, null); +} + +@Override +public List selectList(String statement, Object parameter) { + return this.selectList(statement, parameter, RowBounds.DEFAULT); +} + +@Override +public List selectList(String statement, Object parameter, RowBounds rowBounds) { + try { + // 1. 根据 Statement Id,在配置对象 Configuration 中查找和配置文件相对应的 MappedStatement + MappedStatement ms = configuration.getMappedStatement(statement); + // 2. 将 SQL 语句交由执行器 Executor 处理 + return executor.query(ms, wrapCollection(parameter), rowBounds, Executor.NO_RESULT_HANDLER); + } catch (Exception e) { + throw ExceptionFactory.wrapException("Error querying database. Cause: " + e, e); + } finally { + ErrorContext.instance().reset(); + } +} +``` + +说明: + +Mybatis 所有的配置信息都维持在 `Configuration` 对象之中。中维护了一个 `Map` 对象。其中,key 为 Mapper 方法的全限定名(对于本例而言,key 就是 `io.github.dunwu.spring.orm.mapper.UserMapper.selectByPrimaryKey` ),value 为 `MappedStatement` 对象。所以,传入 Statement Id 就可以从 Map 中找到对应的 `MappedStatement`。 + +`MappedStatement` 维护了一个 Mapper 方法的元数据信息,其数据组织可以参考下面的 debug 截图: + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210511150650.png) + +> 小结: +> +> 通过 "SqlSession 和 Mapper" 以及 "SqlSession 和 Executor" 这两节,我们已经知道: +> +> SqlSession 的职能是:根据 Statement ID, 在 `Configuration` 中获取到对应的 `MappedStatement` 对象,然后调用 `Executor` 来执行具体的操作。 + +### 4.4. Executor 工作流程 + +继续上一节的流程,`SqlSession` 将 SQL 语句交由执行器 `Executor` 处理。`Executor` 又做了哪些事儿呢? + +(1)执行器查询入口 + +```java +public List query(MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler) throws SQLException { + // 1. 根据传参,动态生成需要执行的 SQL 语句,用 BoundSql 对象表示 + BoundSql boundSql = ms.getBoundSql(parameter); + // 2. 根据传参,创建一个缓存Key + CacheKey key = createCacheKey(ms, parameter, rowBounds, boundSql); + return query(ms, parameter, rowBounds, resultHandler, key, boundSql); + } +``` + +执行器查询入口主要做两件事: + +- **生成动态 SQL**:根据传参,动态生成需要执行的 SQL 语句,用 BoundSql 对象表示。 +- **管理缓存**:根据传参,创建一个缓存 Key。 + +(2)执行器查询第二入口 + +```java + @SuppressWarnings("unchecked") + @Override + public List query(MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, CacheKey key, BoundSql boundSql) throws SQLException { + // 略 + List list; + try { + queryStack++; + list = resultHandler == null ? (List) localCache.getObject(key) : null; + // 3. 缓存中有值,则直接从缓存中取数据;否则,查询数据库 + if (list != null) { + handleLocallyCachedOutputParameters(ms, key, parameter, boundSql); + } else { + list = queryFromDatabase(ms, parameter, rowBounds, resultHandler, key, boundSql); + } + } finally { + queryStack--; + } + // 略 + return list; + } +``` + +实际查询方法主要的职能是判断缓存 key 是否能命中缓存: + +- 命中,则将缓存中数据返回; +- 不命中,则查询数据库: + +(3)查询数据库 + +```java + private List queryFromDatabase(MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, CacheKey key, BoundSql boundSql) throws SQLException { + List list; + localCache.putObject(key, EXECUTION_PLACEHOLDER); + try { + // 4. 执行查询,获取 List 结果,并将查询的结果更新本地缓存中 + list = doQuery(ms, parameter, rowBounds, resultHandler, boundSql); + } finally { + localCache.removeObject(key); + } + localCache.putObject(key, list); + if (ms.getStatementType() == StatementType.CALLABLE) { + localOutputParameterCache.putObject(key, parameter); + } + return list; + } +``` + +`queryFromDatabase` 方法的职责是调用 doQuery,向数据库发起查询,并将返回的结果更新到本地缓存。 + +(4)实际查询方法 + +SimpleExecutor 类的 doQuery()方法实现 + +```java + @Override + public List doQuery(MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException { + Statement stmt = null; + try { + Configuration configuration = ms.getConfiguration(); + // 5. 根据既有的参数,创建StatementHandler对象来执行查询操作 + StatementHandler handler = configuration.newStatementHandler(wrapper, ms, parameter, rowBounds, resultHandler, boundSql); + // 6. 创建java.Sql.Statement对象,传递给StatementHandler对象 + stmt = prepareStatement(handler, ms.getStatementLog()); + // 7. 调用StatementHandler.query()方法,返回List结果 + return handler.query(stmt, resultHandler); + } finally { + closeStatement(stmt); + } + } +``` + +上述的 Executor.query()方法几经转折,最后会创建一个 `StatementHandler` 对象,然后将必要的参数传递给 `StatementHandler`,使用 `StatementHandler` 来完成对数据库的查询,最终返回 List 结果集。 +从上面的代码中我们可以看出,`Executor` 的功能和作用是: + +1. 根据传递的参数,完成 SQL 语句的动态解析,生成 BoundSql 对象,供 `StatementHandler` 使用; + +2. 为查询创建缓存,以提高性能 + +3. 创建 JDBC 的 `Statement` 连接对象,传递给 `StatementHandler` 对象,返回 List 查询结果。 + +prepareStatement() 方法的实现: + +```java + private Statement prepareStatement(StatementHandler handler, Log statementLog) throws SQLException { + Statement stmt; + Connection connection = getConnection(statementLog); + stmt = handler.prepare(connection, transaction.getTimeout()); + //对创建的Statement对象设置参数,即设置SQL 语句中 ? 设置为指定的参数 + handler.parameterize(stmt); + return stmt; + } +``` + +对于 JDBC 的 `PreparedStatement` 类型的对象,创建的过程中,我们使用的是 SQL 语句字符串会包含 若干个? 占位符,我们其后再对占位符进行设值。 + +### 4.5. StatementHandler 工作流程 + +`StatementHandler` 有一个子类 `RoutingStatementHandler`,它负责代理其他 `StatementHandler` 子类的工作。 + +它会根据配置的 `Statement` 类型,选择实例化相应的 `StatementHandler`,然后由其代理对象完成工作。 + +【源码】RoutingStatementHandler + +```java +public RoutingStatementHandler(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) { + + switch (ms.getStatementType()) { + case STATEMENT: + delegate = new SimpleStatementHandler(executor, ms, parameter, rowBounds, resultHandler, boundSql); + break; + case PREPARED: + delegate = new PreparedStatementHandler(executor, ms, parameter, rowBounds, resultHandler, boundSql); + break; + case CALLABLE: + delegate = new CallableStatementHandler(executor, ms, parameter, rowBounds, resultHandler, boundSql); + break; + default: + throw new ExecutorException("Unknown statement type: " + ms.getStatementType()); + } + +} +``` + +【源码】`RoutingStatementHandler` 的 `parameterize` 方法源码 + +【源码】`PreparedStatementHandler` 的 `parameterize` 方法源码 + +`StatementHandler` 使用 `ParameterHandler` 对象来完成对 `Statement` 的赋值。 + +```java +@Override +public void parameterize(Statement statement) throws SQLException { + // 使用 ParameterHandler 对象来完成对 Statement 的设值 + parameterHandler.setParameters((PreparedStatement) statement); +} +``` + +【源码】`StatementHandler` 的 `query` 方法源码 + +`StatementHandler` 使用 `ResultSetHandler` 对象来完成对 `ResultSet` 的处理。 + +```java +@Override +public List query(Statement statement, ResultHandler resultHandler) throws SQLException { + PreparedStatement ps = (PreparedStatement) statement; + ps.execute(); + // 使用ResultHandler来处理ResultSet + return resultSetHandler.handleResultSets(ps); +} +``` + +### 4.6. ParameterHandler 工作流程 + +【源码】`DefaultParameterHandler` 的 `setParameters` 方法 + +```java + @Override + public void setParameters(PreparedStatement ps) { + // parameterMappings 是对占位符 #{} 对应参数的封装 + List parameterMappings = boundSql.getParameterMappings(); + if (parameterMappings != null) { + for (int i = 0; i < parameterMappings.size(); i++) { + ParameterMapping parameterMapping = parameterMappings.get(i); + // 不处理存储过程中的参数 + if (parameterMapping.getMode() != ParameterMode.OUT) { + Object value; + String propertyName = parameterMapping.getProperty(); + if (boundSql.hasAdditionalParameter(propertyName)) { // issue #448 ask first for additional params + // 获取对应的实际数值 + value = boundSql.getAdditionalParameter(propertyName); + } else if (parameterObject == null) { + value = null; + } else if (typeHandlerRegistry.hasTypeHandler(parameterObject.getClass())) { + value = parameterObject; + } else { + // 获取对象中相应的属性或查找 Map 对象中的值 + MetaObject metaObject = configuration.newMetaObject(parameterObject); + value = metaObject.getValue(propertyName); + } + + TypeHandler typeHandler = parameterMapping.getTypeHandler(); + JdbcType jdbcType = parameterMapping.getJdbcType(); + if (value == null && jdbcType == null) { + jdbcType = configuration.getJdbcTypeForNull(); + } + try { + // 通过 TypeHandler 将 Java 对象参数转为 JDBC 类型的参数 + // 然后,将数值动态绑定到 PreparedStaement 中 + typeHandler.setParameter(ps, i + 1, value, jdbcType); + } catch (TypeException | SQLException e) { + throw new TypeException("Could not set parameters for mapping: " + parameterMapping + ". Cause: " + e, e); + } + } + } + } + } +``` + +### 4.7. ResultSetHandler 工作流程 + +`ResultSetHandler` 的实现可以概括为:将 `Statement` 执行后的结果集,按照 `Mapper` 文件中配置的 `ResultType` 或 `ResultMap` 来转换成对应的 JavaBean 对象,最后将结果返回。 + +【源码】`DefaultResultSetHandler` 的 `handleResultSets` 方法 + +`handleResultSets` 方法是 `DefaultResultSetHandler` 的最关键方法。其实现如下: + +```java +@Override +public List handleResultSets(Statement stmt) throws SQLException { + ErrorContext.instance().activity("handling results").object(mappedStatement.getId()); + + final List multipleResults = new ArrayList<>(); + + int resultSetCount = 0; + // 第一个结果集 + ResultSetWrapper rsw = getFirstResultSet(stmt); + List resultMaps = mappedStatement.getResultMaps(); + // 判断结果集的数量 + int resultMapCount = resultMaps.size(); + validateResultMapsCount(rsw, resultMapCount); + // 遍历处理结果集 + while (rsw != null && resultMapCount > resultSetCount) { + ResultMap resultMap = resultMaps.get(resultSetCount); + handleResultSet(rsw, resultMap, multipleResults, null); + rsw = getNextResultSet(stmt); + cleanUpAfterHandlingResultSet(); + resultSetCount++; + } + + String[] resultSets = mappedStatement.getResultSets(); + if (resultSets != null) { + while (rsw != null && resultSetCount < resultSets.length) { + ResultMapping parentMapping = nextResultMaps.get(resultSets[resultSetCount]); + if (parentMapping != null) { + String nestedResultMapId = parentMapping.getNestedResultMapId(); + ResultMap resultMap = configuration.getResultMap(nestedResultMapId); + handleResultSet(rsw, resultMap, null, parentMapping); + } + rsw = getNextResultSet(stmt); + cleanUpAfterHandlingResultSet(); + resultSetCount++; + } + } + + return collapseSingleResultList(multipleResults); +} +``` + +## 5. 参考资料 + +- **官方** + - [Mybatis Github](https://github.com/Mybatis/Mybatis-3) + - [Mybatis 官网](http://www.Mybatis.org/Mybatis-3/) +- **文章** + - [深入理解 Mybatis 原理](https://blog.csdn.net/luanlouis/article/details/40422941) + - [Mybatis 源码中文注释](https://github.com/tuguangquan/Mybatis) + - [Mybatis 中强大的 resultMap](https://juejin.im/post/5cee8b61e51d455d88219ea4) diff --git "a/docs/framework/mybatis/Mybatis\345\272\224\347\224\250\346\214\207\345\215\227.md" "b/docs/framework/mybatis/Mybatis\345\272\224\347\224\250\346\214\207\345\215\227.md" new file mode 100644 index 00000000..420ba995 --- /dev/null +++ "b/docs/framework/mybatis/Mybatis\345\272\224\347\224\250\346\214\207\345\215\227.md" @@ -0,0 +1,400 @@ +# MyBatis 应用指南 + +> MyBatis 的前身就是 iBatis ,是一个作用在数据持久层的对象关系映射(Object Relational Mapping,简称 ORM)框架。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200716162305.png) + + + +- [1. Mybatis 简介](#1-mybatis-简介) + - [1.1. 什么是 MyBatis](#11-什么是-mybatis) + - [1.2. MyBatis vs. Hibernate](#12-mybatis-vs-hibernate) +- [2. 快速入门](#2-快速入门) + - [2.1. 数据库准备](#21-数据库准备) + - [2.2. 添加 Mybatis](#22-添加-mybatis) + - [2.3. Mybatis 配置](#23-mybatis-配置) + - [2.4. Mapper](#24-mapper) + - [2.5. 测试程序](#25-测试程序) +- [3. Mybatis xml 配置](#3-mybatis-xml-配置) +- [4. Mybatis xml 映射器](#4-mybatis-xml-映射器) +- [5. Mybatis 扩展](#5-mybatis-扩展) + - [5.1. Mybatis 类型处理器](#51-mybatis-类型处理器) + - [5.2. Mybatis 插件](#52-mybatis-插件) +- [6. 参考资料](#6-参考资料) + + + +## 1. Mybatis 简介 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210510164925.png) + +### 1.1. 什么是 MyBatis + +MyBatis 是一款持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 + +### 1.2. MyBatis vs. Hibernate + +MyBatis 和 Hibernate 都是 Java 世界中比较流行的 ORM 框架。我们应该了解其各自的优势,根据项目的需要去抉择在开发中使用哪个框架。 + +**Mybatis 优势** + +- MyBatis 可以进行更为细致的 SQL 优化,可以减少查询字段。 +- MyBatis 容易掌握,而 Hibernate 门槛较高。 + +**Hibernate 优势** + +- Hibernate 的 DAO 层开发比 MyBatis 简单,Mybatis 需要维护 SQL 和结果映射。 +- Hibernate 对对象的维护和缓存要比 MyBatis 好,对增删改查的对象的维护要方便。 +- Hibernate 数据库移植性很好,MyBatis 的数据库移植性不好,不同的数据库需要写不同 SQL。 +- Hibernate 有更好的二级缓存机制,可以使用第三方缓存。MyBatis 本身提供的缓存机制不佳。 + +## 2. 快速入门 + +> 这里,我将以一个入门级的示例来演示 Mybatis 是如何工作的。 +> +> 注:本文后面章节中的原理、源码部分也将基于这个示例来进行讲解。 + +### 2.1. 数据库准备 + +在本示例中,需要针对一张用户表进行 CRUD 操作。其数据模型如下: + +```sql +CREATE TABLE IF NOT EXISTS user ( + id BIGINT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Id', + name VARCHAR(10) NOT NULL DEFAULT '' COMMENT '用户名', + age INT(3) NOT NULL DEFAULT 0 COMMENT '年龄', + address VARCHAR(32) NOT NULL DEFAULT '' COMMENT '地址', + email VARCHAR(32) NOT NULL DEFAULT '' COMMENT '邮件', + PRIMARY KEY (id) +) COMMENT = '用户表'; + +INSERT INTO user (name, age, address, email) +VALUES ('张三', 18, '北京', 'xxx@163.com'); +INSERT INTO user (name, age, address, email) +VALUES ('李四', 19, '上海', 'xxx@163.com'); +``` + +### 2.2. 添加 Mybatis + +如果使用 Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中: + +```xml + + org.mybatis + mybatis + x.x.x + +``` + +### 2.3. Mybatis 配置 + +XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)。 + +本示例中只是给出最简化的配置。 + +【示例】mybatis-config.xml 文件 + +```xml + + + + + + + + + + + + + + + + + + +``` + +> 说明:上面的配置文件中仅仅指定了数据源连接方式和 User 表的映射配置文件。 + +### 2.4. Mapper + +#### Mapper.xml + +个人理解,Mapper.xml 文件可以看做是 Mybatis 的 JDBC SQL 模板。 + +【示例】UserMapper.xml 文件 + +下面是一个通过 Mybatis Generator 自动生成的完整的 Mapper 文件。 + +```xml + + + + + + + + + + + + delete from user + where id = #{id,jdbcType=BIGINT} + + + insert into user (id, name, age, + address, email) + values (#{id,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER}, + #{address,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}) + + + update user + set name = #{name,jdbcType=VARCHAR}, + age = #{age,jdbcType=INTEGER}, + address = #{address,jdbcType=VARCHAR}, + email = #{email,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + + + +``` + +#### Mapper.java + +Mapper.java 文件是 Mapper.xml 对应的 Java 对象。 + +【示例】UserMapper.java 文件 + +```java +public interface UserMapper { + + int deleteByPrimaryKey(Long id); + + int insert(User record); + + User selectByPrimaryKey(Long id); + + List selectAll(); + + int updateByPrimaryKey(User record); + +} +``` + +对比 UserMapper.java 和 UserMapper.xml 文件,不难发现: + +UserMapper.java 中的方法和 UserMapper.xml 的 CRUD 语句元素( ``、``、``、`` 的 `parameterType` 属性以及 `` 的 `type` 属性都可能会绑定到数据实体。这样就可以把 JDBC 操作的输入输出和 JavaBean 结合起来,更加方便、易于理解。 + +### 2.5. 测试程序 + +【示例】MybatisDemo.java 文件 + +```java +public class MybatisDemo { + + public static void main(String[] args) throws Exception { + // 1. 加载 mybatis 配置文件,创建 SqlSessionFactory + // 注:在实际的应用中,SqlSessionFactory 应该是单例 + InputStream inputStream = Resources.getResourceAsStream("mybatis/mybatis-config.xml"); + SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); + SqlSessionFactory factory = builder.build(inputStream); + + // 2. 创建一个 SqlSession 实例,进行数据库操作 + SqlSession sqlSession = factory.openSession(); + + // 3. Mapper 映射并执行 + Long params = 1L; + List list = sqlSession.selectList("io.github.dunwu.spring.orm.mapper.UserMapper.selectByPrimaryKey", params); + for (User user : list) { + System.out.println("user name: " + user.getName()); + } + // 输出:user name: 张三 + } + +} +``` + +> 说明: +> +> `SqlSession` 接口是 Mybatis API 核心中的核心,它代表了 Mybatis 和数据库的一次完整会话。 +> +> - Mybatis 会解析配置,并根据配置创建 `SqlSession` 。 +> - 然后,Mybatis 将 Mapper 映射为 `SqlSession`,然后传递参数,执行 SQL 语句并获取结果。 + +## 3. Mybatis xml 配置 + +> 配置的详细内容请参考:「 [Mybatis 官方文档之配置](http://www.mybatis.org/mybatis-3/zh/configuration.html) 」 。 + +MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。主要配置项有以下: + +- [properties(属性)](http://www.mybatis.org/mybatis-3/zh/configuration.html#properties) +- [settings(设置)](http://www.mybatis.org/mybatis-3/zh/configuration.html#settings) +- [typeAliases(类型别名)](http://www.mybatis.org/mybatis-3/zh/configuration.html#typeAliases) +- [typeHandlers(类型处理器)](http://www.mybatis.org/mybatis-3/zh/configuration.html#typeHandlers) +- [objectFactory(对象工厂)](http://www.mybatis.org/mybatis-3/zh/configuration.html#objectFactory) +- [plugins(插件)](http://www.mybatis.org/mybatis-3/zh/configuration.html#plugins) +- [environments(环境配置)](http://www.mybatis.org/mybatis-3/zh/configuration.html#environments) + - environment(环境变量) + - transactionManager(事务管理器) + - dataSource(数据源) +- [databaseIdProvider(数据库厂商标识)](http://www.mybatis.org/mybatis-3/zh/configuration.html#databaseIdProvider) +- [mappers(映射器)](http://www.mybatis.org/mybatis-3/zh/configuration.html#mappers) + +## 4. Mybatis xml 映射器 + +> SQL XML 映射文件详细内容请参考:「 [Mybatis 官方文档之 XML 映射文件](http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html) 」。 + +XML 映射文件只有几个顶级元素: + +- `cache` – 对给定命名空间的缓存配置。 +- `cache-ref` – 对其他命名空间缓存配置的引用。 +- `resultMap` – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。 +- ~~`parameterMap` – 已被废弃!老式风格的参数映射。更好的办法是使用内联参数,此元素可能在将来被移除。文档中不会介绍此元素。~~ +- `sql` – 可被其他语句引用的可重用语句块。 +- `insert` – 映射插入语句 +- `update` – 映射更新语句 +- `delete` – 映射删除语句 +- `select` – 映射查询语句 + +## 5. Mybatis 扩展 + +### 5.1. Mybatis 类型处理器 + +MyBatis 在设置预处理语句(PreparedStatement)中的参数或从结果集中取出一个值时, 都会用类型处理器将获取到的值以合适的方式转换成 Java 类型。下表描述了一些默认的类型处理器。 + +从 3.4.5 开始,MyBatis 默认支持 JSR-310(日期和时间 API) 。 + +你可以重写已有的类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型。 具体做法为:实现 `org.apache.ibatis.type.TypeHandler` 接口, 或继承一个很便利的类 `org.apache.ibatis.type.BaseTypeHandler`, 并且可以(可选地)将它映射到一个 JDBC 类型。比如: + +```java +// ExampleTypeHandler.java +@MappedJdbcTypes(JdbcType.VARCHAR) +public class ExampleTypeHandler extends BaseTypeHandler { + + @Override + public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException { + ps.setString(i, parameter); + } + + @Override + public String getNullableResult(ResultSet rs, String columnName) throws SQLException { + return rs.getString(columnName); + } + + @Override + public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException { + return rs.getString(columnIndex); + } + + @Override + public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { + return cs.getString(columnIndex); + } +} +``` + +```xml + + + + +``` + +使用上述的类型处理器将会覆盖已有的处理 Java String 类型的属性以及 VARCHAR 类型的参数和结果的类型处理器。 要注意 MyBatis 不会通过检测数据库元信息来决定使用哪种类型,所以你必须在参数和结果映射中指明字段是 VARCHAR 类型, 以使其能够绑定到正确的类型处理器上。这是因为 MyBatis 直到语句被执行时才清楚数据类型。 + +### 5.2. Mybatis 插件 + +MyBatis 允许你在映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括: + +- Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed) +- ParameterHandler (getParameterObject, setParameters) +- ResultSetHandler (handleResultSets, handleOutputParameters) +- StatementHandler (prepare, parameterize, batch, update, query) + +这些类中方法的细节可以通过查看每个方法的签名来发现,或者直接查看 MyBatis 发行包中的源代码。 如果你想做的不仅仅是监控方法的调用,那么你最好相当了解要重写的方法的行为。 因为在试图修改或重写已有方法的行为时,很可能会破坏 MyBatis 的核心模块。 这些都是更底层的类和方法,所以使用插件的时候要特别当心。 + +通过 MyBatis 提供的强大机制,使用插件是非常简单的,只需实现 Interceptor 接口,并指定想要拦截的方法签名即可。 + +```java +// ExamplePlugin.java +@Intercepts({@Signature( + type= Executor.class, + method = "update", + args = {MappedStatement.class,Object.class})}) +public class ExamplePlugin implements Interceptor { + private Properties properties = new Properties(); + public Object intercept(Invocation invocation) throws Throwable { + // implement pre processing if need + Object returnObject = invocation.proceed(); + // implement post processing if need + return returnObject; + } + public void setProperties(Properties properties) { + this.properties = properties; + } +} +``` + +```xml + + + + + + +``` + +上面的插件将会拦截在 Executor 实例中所有的 “update” 方法调用, 这里的 Executor 是负责执行底层映射语句的内部对象。 + +## 6. 参考资料 + +- **官方** + - [Mybatis Github](https://github.com/mybatis/mybatis-3) + - [Mybatis 官网](http://www.mybatis.org/mybatis-3/) + - [MyBatis 官方代码生成(mybatis-generator)](https://github.com/mybatis/generator) + - [MyBatis 官方集成 Spring(mybatis-spring)](https://github.com/mybatis/spring) + - [Mybatis 官方集成 Spring Boot(mybatis-spring-boot)](https://github.com/mybatis/spring-boot-starter) +- **扩展插件** + - [MyBatis-Plus](https://github.com/baomidou/mybatis-plus) - CRUD 扩展插件、代码生成器、分页器等多功能 + - [Mapper](https://github.com/abel533/Mapper) - CRUD 扩展插件 + - [Mybatis-PageHelper](https://github.com/pagehelper/Mybatis-PageHelper) - Mybatis 通用分页插件 +- **文章** + - [深入理解 mybatis 原理](https://blog.csdn.net/luanlouis/article/details/40422941) + - [mybatis 源码中文注释](https://github.com/tuguangquan/mybatis) + - [MyBatis Generator 详解](https://blog.csdn.net/isea533/article/details/42102297) + - [Mybatis 常见面试题](https://juejin.im/post/5aa646cdf265da237e095da1) + - [Mybatis 中强大的 resultMap](https://juejin.im/post/5cee8b61e51d455d88219ea4) diff --git a/docs/framework/mybatis/README.md b/docs/framework/mybatis/README.md new file mode 100644 index 00000000..7793edb2 --- /dev/null +++ b/docs/framework/mybatis/README.md @@ -0,0 +1,34 @@ +# Mybatis + +> Mybatis 的前身就是 iBatis ,是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。本文以一个 Mybatis 完整示例为切入点,结合 Mybatis 底层源码分析,图文并茂的讲解 Mybatis 的核心工作机制。 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210522101005.png) + +## 📖 内容 + +### [Mybatis 应用指南](Mybatis应用指南.md) + +### [Mybatis 原理](Mybatis原理.md) + +## 📚 资料 + +- **官方** + - [Mybatis Github](https://github.com/mybatis/mybatis-3) + - [Mybatis 官网](http://www.mybatis.org/mybatis-3/) + - [MyBatis 官方代码生成(mybatis-generator)](https://github.com/mybatis/generator) + - [MyBatis 官方集成 Spring(mybatis-spring)](https://github.com/mybatis/spring) + - [Mybatis 官方集成 Spring Boot(mybatis-spring-boot)](https://github.com/mybatis/spring-boot-starter) +- **扩展插件** + - [MyBatis-Plus](https://github.com/baomidou/mybatis-plus) - CRUD 扩展插件、代码生成器、分页器等多功能 + - [Mapper](https://github.com/abel533/Mapper) - CRUD 扩展插件 + - [Mybatis-PageHelper](https://github.com/pagehelper/Mybatis-PageHelper) - Mybatis 通用分页插件 +- **文章** + - [深入理解 mybatis 原理](https://blog.csdn.net/luanlouis/article/details/40422941) + - [mybatis 源码中文注释](https://github.com/tuguangquan/mybatis) + - [MyBatis Generator 详解](https://blog.csdn.net/isea533/article/details/42102297) + - [Mybatis 常见面试题](https://juejin.im/post/5aa646cdf265da237e095da1) + - [Mybatis 中强大的 resultMap](https://juejin.im/post/5cee8b61e51d455d88219ea4) + +## 🚪 传送 + +◾ 🏠 [JAVA-TUTORIAL 首页](https://github.com/dunwu/java-tutorial) ◾ 🎯 [我的博客](https://github.com/dunwu/blog) ◾ diff --git a/docs/framework/netty.md b/docs/framework/netty.md new file mode 100644 index 00000000..d4fb6fae --- /dev/null +++ b/docs/framework/netty.md @@ -0,0 +1,131 @@ +# Netty 应用指南 + +## Netty 简介 + +> **Netty 是一款基于 NIO(Nonblocking I/O,非阻塞 IO)开发的网络通信框架**。 + +### Netty 的特性 + +- **高并发**:Netty 是一款**基于 NIO**(Nonblocking IO,非阻塞 IO)开发的网络通信框架,对比于 BIO(Blocking I/O,阻塞 IO),他的并发性能得到了很大提高。 +- **传输快**:Netty 的传输依赖于**内存零拷贝**特性,尽量减少不必要的内存拷贝,实现了更高效率的传输。 +- **封装好**:Netty **封装了 NIO 操作**的很多细节,提供了易于使用调用接口。 + +## 核心组件 + +- `Channel`:Netty 网络操作抽象类,它除了包括基本的 I/O 操作,如 bind、connect、read、write 等。 +- `EventLoop`:主要是配合 Channel 处理 I/O 操作,用来处理连接的生命周期中所发生的事情。 +- `ChannelFuture`:Netty 框架中所有的 I/O 操作都为异步的,因此我们需要 ChannelFuture 的 addListener()注册一个 ChannelFutureListener 监听事件,当操作执行成功或者失败时,监听就会自动触发返回结果。 +- `ChannelHandler`:充当了所有处理入站和出站数据的逻辑容器。ChannelHandler 主要用来处理各种事件,这里的事件很广泛,比如可以是连接、数据接收、异常、数据转换等。 +- `ChannelPipeline`:为 ChannelHandler 链提供了容器,当 channel 创建时,就会被自动分配到它专属的 ChannelPipeline,这个关联是永久性的。 + +Netty 有两种发送消息的方式: + +- 直接写入 Channel 中,消息从 ChannelPipeline 当中尾部开始移动; +- 写入和 ChannelHandler 绑定的 ChannelHandlerContext 中,消息从 ChannelPipeline 中的下一个 ChannelHandler 中移动。 + +## 高性能 + +Netty 高性能表现在哪些方面: + +- **NIO 线程模型**:同步非阻塞,用最少的资源做更多的事。 +- **内存零拷贝**:尽量减少不必要的内存拷贝,实现了更高效率的传输。 +- **内存池设计**:申请的内存可以重用,主要指直接内存。内部实现是用一颗二叉查找树管理内存分配情况。 +- **串形化处理读写**:避免使用锁带来的性能开销。 +- **高性能序列化协议**:支持 protobuf 等高性能序列化协议。 + +## 零拷贝 + +### 传统意义的拷贝 + +是在发送数据的时候,传统的实现方式是: + +`File.read(bytes)` + +`Socket.send(bytes)` + +这种方式需要四次数据拷贝和四次上下文切换: + +1. 数据从磁盘读取到内核的 read buffer + +2. 数据从内核缓冲区拷贝到用户缓冲区 +3. 数据从用户缓冲区拷贝到内核的 socket buffer +4. 数据从内核的 socket buffer 拷贝到网卡接口(硬件)的缓冲区 + +### 零拷贝的概念 + +明显上面的第二步和第三步是非必要的,通过 java 的 FileChannel.transferTo 方法,可以避免上面两次多余的拷贝(当然这需要底层操作系统支持) + +- 调用 transferTo,数据从文件由 DMA 引擎拷贝到内核 read buffer +- 接着 DMA 从内核 read buffer 将数据拷贝到网卡接口 buffer + +上面的两次操作都不需要 CPU 参与,所以就达到了零拷贝。 + +### Netty 中的零拷贝 + +主要体现在三个方面: + +**bytebuffer** + +Netty 发送和接收消息主要使用 bytebuffer,bytebuffer 使用对外内存(DirectMemory)直接进行 Socket 读写。 + +原因:如果使用传统的堆内存进行 Socket 读写,JVM 会将堆内存 buffer 拷贝一份到直接内存中然后再写入 socket,多了一次缓冲区的内存拷贝。DirectMemory 中可以直接通过 DMA 发送到网卡接口 + +**Composite Buffers** + +传统的 ByteBuffer,如果需要将两个 ByteBuffer 中的数据组合到一起,我们需要首先创建一个 size=size1+size2 大小的新的数组,然后将两个数组中的数据拷贝到新的数组中。但是使用 Netty 提供的组合 ByteBuf,就可以避免这样的操作,因为 CompositeByteBuf 并没有真正将多个 Buffer 组合起来,而是保存了它们的引用,从而避免了数据的拷贝,实现了零拷贝。 + +**对于 FileChannel.transferTo 的使用** + +Netty 中使用了 FileChannel 的 transferTo 方法,该方法依赖于操作系统实现零拷贝。 + +## Netty 流程 + +## 应用 + +> Netty 是一个广泛使用的 Java 网络编程框架。很多著名软件都使用了它,如:Dubbo、Cassandra、Elasticsearch、Vert.x 等。 + +有了 Netty,你可以实现自己的 HTTP 服务器,FTP 服务器,UDP 服务器,RPC 服务器,WebSocket 服务器,Redis 的 Proxy 服务器,MySQL 的 Proxy 服务器等等。 + +```java +public class NettyOioServer { + + public void server(int port) throws Exception { + final ByteBuf buf = Unpooled.unreleasableBuffer( + Unpooled.copiedBuffer("Hi!\r\n", Charset.forName("UTF-8"))); + EventLoopGroup group = new OioEventLoopGroup(); + try { + ServerBootstrap b = new ServerBootstrap(); //1 + + b.group(group) //2 + .channel(OioServerSocketChannel.class) + .localAddress(new InetSocketAddress(port)) + .childHandler(new ChannelInitializer() {//3 + @Override + public void initChannel(SocketChannel ch) + throws Exception { + ch.pipeline().addLast(new ChannelInboundHandlerAdapter() { //4 + @Override + public void channelActive(ChannelHandlerContext ctx) throws Exception { + ctx.writeAndFlush(buf.duplicate()).addListener(ChannelFutureListener.CLOSE);//5 + } + }); + } + }); + ChannelFuture f = b.bind().sync(); //6 + f.channel().closeFuture().sync(); + } finally { + group.shutdownGracefully().sync(); //7 + } + } +} +``` + +## 参考资料 + +- **官方** + - [Netty 官网](https://netty.io/) + - [Netty Github](https://github.com/netty/netty) +- **文章** + - [Netty 入门教程——认识 Netty](https://www.jianshu.com/p/b9f3f6a16911) + - [彻底理解 Netty,这一篇文章就够了](https://juejin.im/post/5bdaf8ea6fb9a0227b02275a) + - [Java 200+ 面试题补充 ② Netty 模块](https://juejin.im/post/5c81b08f5188257a323f4cef) diff --git a/docs/lib/README.md b/docs/lib/README.md new file mode 100644 index 00000000..8e8e1b37 --- /dev/null +++ b/docs/lib/README.md @@ -0,0 +1,23 @@ +# Java 库 + +## 📖 内容 + +- [Dozer 应用指南](bean/dozer.md) +- [Freemark 应用指南](template/freemark.md) +- [Java 与 JSON](serialized/javalib-json.md) +- [细说 Java 主流日志工具库](javalib-log.md) +- [细说 Java 主流工具包](javalib-util.md) +- [JavaMail 应用指南](javamail.md) +- [Jsoup 应用指南](jsoup.md) +- [JUnit5 应用指南](../test/junit.md) +- [Lombok 应用指南](bean/lombok.md) +- [Mockito 应用指南](../test/mockito.md) +- [Reflections 应用指南](reflections.md) +- [Thumbnailator 应用指南](thumbnailator.md) +- [ZXing 应用指南](zxing.md) + +## 📚 资料 + +## 🚪 传送 + +◾ 🏠 [JAVA-TUTORIAL 首页](https://github.com/dunwu/java-tutorial) ◾ 🎯 [我的博客](https://github.com/dunwu/blog) ◾ diff --git a/docs/lib/bean/dozer.md b/docs/lib/bean/dozer.md new file mode 100644 index 00000000..da9f89aa --- /dev/null +++ b/docs/lib/bean/dozer.md @@ -0,0 +1,793 @@ +# Dozer 应用指南 + +这篇文章是本人在阅读 Dozer 官方文档(5.5.1 版本,官网已经一年多没更新了)的过程中,整理下来我认为比较基础的应用场景。 + +本文中提到的例子应该能覆盖 JavaBean 映射的大部分场景,希望对你有所帮助。 + + + +- [简介](#简介) +- [安装](#安装) + - [引入 jar 包](#引入-jar-包) + - [Eclipse 插件](#eclipse-插件) +- [使用](#使用) + - [准备](#准备) + - [Dozer 的配置](#dozer-的配置) + - [与 Spring 整合](#与-spring-整合) +- [Dozer 支持的数据类型转换](#dozer-支持的数据类型转换) +- [Dozer 的映射配置](#dozer-的映射配置) + - [用注解来配置映射](#用注解来配置映射) + - [用 API 来配置映射](#用-api-来配置映射) + - [用 XML 来配置映射](#用-xml-来配置映射) +- [参考](#参考) + + + +## 简介 + +**Dozer 是什么?** + +**Dozer 是一个 JavaBean 映射工具库。** + +它支持简单的属性映射,复杂类型映射,双向映射,隐式显式的映射,以及递归映射。 + +它支持三种映射方式:注解、API、XML。 + +它是开源的,遵从[Apache 2.0 协议](http://www.apache.org/licenses/LICENSE-2.0) + +## 安装 + +### 引入 jar 包 + +**maven 方式** + +如果你的项目使用 maven,添加以下依赖到你的 pom.xml 即可: + +```xml + + net.sf.dozer + dozer + 5.4.0 + +``` + +**非 maven 方式** + +如果你的项目不使用 maven,那就只能发扬不怕苦不怕累的精神了。 + +使用 Dozer 需要引入 Dozer 的 jar 包以及其依赖的第三方 jar 包。 + +- [Dozer](http://sourceforge.net/project/showfiles.php?group_id=133517) +- [Dozer 依赖的第三方 jar 包](http://dozer.sourceforge.net/dependencies.html) + +### Eclipse 插件 + +Dozer 有插件可以在 Eclipse 中使用(不知道是否好用,反正我没用过) + +插件地址: + +## 使用 + +将 Dozer 引入到工程中后,我们就可以来小试一番了。 + +实践出真知,先以一个最简单的例子来展示 Dozer 映射的处理过程。 + +### 准备 + +我们先准备两个要互相映射的类 + +NotSameAttributeA.java + +```java +public class NotSameAttributeA { + private long id; + private String name; + private Date date; + + // 省略getter/setter +} +``` + +NotSameAttributeB.java + +```java +public class NotSameAttributeB { + private long id; + private String value; + private Date date; + + // 省略getter/setter +} +``` + +这两个类存在属性名不完全相同的情况:name 和 value。 + +### Dozer 的配置 + +#### 为什么要有映射配置? + +如果要映射的两个对象有完全相同的属性名,那么一切都很简单。 + +只需要直接使用 Dozer 的 API 即可: + +```java +Mapper mapper = new DozerBeanMapper(); +DestinationObject destObject = + mapper.map(sourceObject, DestinationObject.class); +``` + +但实际映射时,往往存在属性名不同的情况。 + +所以,你需要一些配置来告诉 Dozer 应该转换什么,怎么转换。 + +***注:官网着重建议:在现实应用中,最好不要每次映射对象时都创建一个`Mapper`实例来工作,这样会产生不必要的开销。如果你不使用 IoC 容器(如:spring)来管理你的项目,那么,最好将`Mapper`定义为单例模式。*** + +#### 映射配置文件 + +在`src/test/resources`目录下添加`dozer/dozer-mapping.xml`文件。 +``标签中允许你定义``和``,对应着相互映射的类。 +``标签里定义要映射的特殊属性。需要注意``和``对应,``和``对应,聪明的你,猜也猜出来了吧。 + +```xml + + + + org.zp.notes.spring.common.dozer.vo.NotSameAttributeA + org.zp.notes.spring.common.dozer.vo.NotSameAttributeB + + name + value + + + +``` + +### 与 Spring 整合 + +#### 配置 DozerBeanMapperFactoryBean + +在`src/test/resources`目录下添加`spring/spring-dozer.xml`文件。 + +Dozer 与 Spring 的整合很便利,你只需要声明一个`DozerBeanMapperFactoryBean`, +将所有的 dozer 映射配置文件作为属性注入到`mappingFiles`, +`DozerBeanMapperFactoryBean`会加载这些规则。 + +spring-dozer.xml 文件范例 + +```xml + + + + + + + classpath*:dozer/dozer-mapping.xml + + + + +``` + +#### 自动装配 + +至此,万事具备,你只需要自动装配`mapper`。 + +```java +RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations = {"classpath:spring/spring-dozer.xml"}) +@TransactionConfiguration(defaultRollback = false) +public class DozerTest extends TestCase { + @Autowired + Mapper mapper; + + @Test + public void testNotSameAttributeMapping() { + NotSameAttributeA src = new NotSameAttributeA(); + src.setId(007); + src.setName("邦德"); + src.setDate(new Date()); + + NotSameAttributeB desc = mapper.map(src, NotSameAttributeB.class); + Assert.assertNotNull(desc); + } +} +``` + +运行一下单元测试,绿灯通过。 + +## Dozer 支持的数据类型转换 + +Dozer 可以自动做数据类型转换。当前,Dozer 支持以下数据类型转换(都是双向的) + +- **Primitive to Primitive Wrapper** + + 原型(int、long 等)和原型包装类(Integer、Long) + +- **Primitive to Custom Wrapper** + + 原型和定制的包装 + +- **Primitive Wrapper to Primitive Wrapper** + + 原型包装类和包装类 + +- **Primitive to Primitive** + + 原型和原型 + +- **Complex Type to Complex Type** + + 复杂类型和复杂类型 + +- **String to Primitive** + + 字符串和原型 + +- **String to Primitive Wrapper** + + 字符串和原型包装类 + +- **String to Complex Type if the Complex Type contains a String constructor** + + 字符串和有字符串构造器的复杂类型(类) + +- **String to Map** + + 字符串和 Map + +- **Collection to Collection** + + 集合和集合 + +- **Collection to Array** + + 集合和数组 + +- **Map to Complex Type** + + Map 和复杂类型 + +- **Map to Custom Map Type** + + Map 和定制 Map 类型 + +- **Enum to Enum** + + 枚举和枚举 + +- **Each of these can be mapped to one another: java.util.Date, java.sql.Date, java.sql.Time, java.sql.Timestamp, java.util.Calendar, java.util.GregorianCalendar** + + 这些时间相关的常见类可以互换:java.util.Date, java.sql.Date, java.sql.Time, java.sql.Timestamp, java.util.Calendar, java.util.GregorianCalendar + +- **String to any of the supported Date/Calendar Objects.** + + 字符串和支持 Date/Calendar 的对象 + +- **Objects containing a toString() method that produces a long representing time in (ms) to any supported Date/Calendar object.** + + 如果一个对象的 toString()方法返回的是一个代表 long 型的时间数值(单位:ms),就可以和任何支持 Date/Calendar 的对象转换。 + +## Dozer 的映射配置 + +在前面的简单例子中,我们体验了一把 Dozer 的映射流程。但是两个类进行映射,有很多复杂的情况,相应的,你也需要一些更复杂的配置。 + +Dozer 有三种映射配置方式: + +- **注解方式** +- **API 方式** +- **XML 方式** + +### 用注解来配置映射 + +**Dozer 5.3.2**版本开始支持注解方式配置映射(只有一个注解:`@Mapping`)。可以应对一些简单的映射处理,复杂的就玩不转了。 + +看一下`@Mapping`的声明就可以知道,这个注解只能用于元素和方法。 + +```java +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD, ElementType.METHOD}) +public @interface Mapping { + String value() default ""; +} +``` + +让我们来试试吧: + +TargetBean.java + +```java +public class SourceBean { + + private Long id; + + private String name; + + @Mapping("binaryData") + private String data; + + @Mapping("pk") + public Long getId() { + return this.id; + } + + //其余getter/setter方法略 +} +``` + +TargetBean.java + +```java +public class TargetBean { + + private String pk; + + private String name; + + private String binaryData; + + //getter/setter方法略 +} +``` + +定义了两个相互映射的 Java 类,只需要在源类中用`@Mapping`标记和目标类中对应的属性就可以了。 + +```java +@Test +public void testAnnotationMapping() { + SourceBean src = new SourceBean(); + src.setId(7L); + src.setName("邦德"); + src.setData("00000111"); + + TargetBean desc = mapper.map(src, TargetBean.class); + Assert.assertNotNull(desc); +} +``` + +测试一下,绿灯通过。 + +官方文档说,虽然当前版本(文档的版本对应 Dozer 5.5.1)仅支持`@Mapping`,但是在未来的发布版本会提供其他的注解功能,那就敬请期待吧(再次吐槽一下:一年多没更新了)。 + +### 用 API 来配置映射 + +个人觉得这种方式比较麻烦,不推荐,也不想多做介绍,就是这么任性。 + +### 用 XML 来配置映射 + +需要**强调**的是:如果两个类的所有属性都能很好的互转,可以你中有我,我中有你,不分彼此,那么就不要画蛇添足的在 xml 中去声明映射规则了。 + +#### 属性名不同时的映射(Basic Property Mapping) + +**Dozer 会自动映射属性名相同的属性,所以不必添加在 xml 文件中。** + +```xml + + one + onePrime + +``` + +#### 字符串和日期映射(String to Date Mapping) + +字符串在和日期进行映射时,允许用户指定日期的格式。 + +格式的设置分为三个作用域级别: + +**属性级别** + +对当前属性有效(这个属性必须是日期字符串) + +```xml + + dateString + dateObject + +``` + +**类级别** + +对这个类中的所有日期相关的属性有效 + +```xml + + org.dozer.vo.TestObject + org.dozer.vo.TestObjectPrime + + dateString + dateObject + + +``` + +**全局级别** + +对整个文件中的所有日期相关的属性有效。 + +```xml + + + MM/dd/yyyy HH:mm + + + + org.dozer.vo.TestObject + org.dozer.vo.TestObjectPrime + + dateString + dateObject + + + +``` + +#### 集合和数组映射(Collection and Array Mapping) + +Dozer 可以自动处理以下类型的双向转换。 + +- List to List +- List to Array +- Array to Array +- Set to Set +- Set to Array +- Set to List + +**使用 hint** + +如果使用泛型或数组,没有必要使用 hint。 + +如果不使用泛型或数组。在处理集合或数组之间的转换时,你需要用`hint`指定目标列表的数据类型。 + +若你不指定`hint`,Dozer 将认为目标集合和源集合的类型是一致的。 + +使用 Hints 的范例: + +```xml + + hintList + hintList + org.dozer.vo.TheFirstSubClassPrime + +``` + +**累计映射和非累计映射(Cumulative vs. Non-Cumulative List Mapping)** + +如果你要转换的目标类已经初始化,你可以选择让 Dozer 添加或更新对象到你的集合中。 + +而这取决于`relationship-type`配置,默认是累计。 + +它的设置有作用域级别: + +- 全局级 + +``` + + + non-cumulative + + +``` + +- 类级别 + +```xml + + + + + +``` + +- 属性级别 + +```xml + + hintList + hintList + org.dozer.vo.TheFirstSubClass + org.dozer.vo.TheFirstSubClassPrime + +``` + +**移动孤儿(Removing Orphans)** + +这里的孤儿是指目标集合中存在,但是源集合中不存在的元素。 + +你可以使用`remove-orphans`开关来选择是否移除这样的元素。 + +```xml + + srcList + destList + +``` + +#### 深度映射(Deep Mapping) + +所谓深度映射,是指允许你指定属性的属性(比如一个类的属性本身也是一个类)。举例来说 + +Source.java + +```java +public class Source { + private long id; + private String info; +} +``` + +Dest.java + +```java +public class Dest { + private long id; + private Info info; +} +``` + +```java +public class Info { + private String content; +} +``` + +映射规则 + +```xml + + org.zp.notes.spring.common.dozer.vo.Source + org.zp.notes.spring.common.dozer.vo.Dest + + info + info.content + + +``` + +#### 排除属性(Excluding Fields) + +就像任何团体都有捣乱分子,类之间转换时也有想要排除的因子。 + +如何在做类型转换时,自动排除一些属性,Dozer 提供了几种方法,这里只介绍一种比较通用的方法。 + +更多详情参考[官网](http://dozer.sourceforge.net/documentation/exclude.html)。 + +field-exclude 可以排除不需要映射的属性。 + +```xml + + fieldToExclude + fieldToExclude + +``` + +#### 单向映射(One-Way Mapping) + +***注:本文的映射方式,无特殊说明,都是双向映射的。*** + +有的场景可能希望转换过程不可逆,即单向转换。 + +单向转换可以通过使用`one-way`来开启 + +类级别 + +```xml + + org.dozer.vo.TestObjectFoo + org.dozer.vo.TestObjectFooPrime + + oneFoo + oneFooPrime + + +``` + +属性级别 + +```xml + + org.dozer.vo.TestObjectFoo2 + org.dozer.vo.TestObjectFooPrime2 + + oneFoo2 + oneFooPrime2 + + + + oneFoo3.prime + oneFooPrime3 + +``` + +#### 全局配置(Global Configuration) + +全局配置用来设置全局的配置信息。此外,任何定制转换都是在这里定义的。 + +全局配置都是可选的。 + +- ``表示日期格式 +- ``错误处理开关 +- ``通配符 +- ``裁剪字符串开关 + +```xml + + + MM/dd/yyyy HH:mm + true + true + false + + + + org.dozer.vo.TestCustomConverterObject + another.type.to.Associate + + + + +``` + +全局配置的作用是帮助你少配置一些参数,如果个别类的映射规则需要变更,你可以 mapping 中覆盖它。 + +覆盖的范例如下 + +```xml + + + + + + + + + + + + + + + +``` + +#### 定制转换(Custom Converters) + +如果 Dozer 默认的转换规则不能满足实际需要,你可以选择定制转换。 + +定制转换通过配置 XML 来告诉 Dozer 如何去转换两个指定的类。当 Dozer 转换这两个指定类的时候,会调用你的映射规则去替换标准映射规则。 + +为了让 Dozer 识别,你必须实现`org.dozer.CustomConverter`接口。否则,Dozer 会抛异常。 + +具体做法: + +(1) 创建一个类实现`org.dozer.CustomConverter`接口。 + +```java +public class TestCustomConverter implements CustomConverter { + + public Object convert(Object destination, Object source, + Class destClass, Class sourceClass) { + if (source == null) { + return null; + } + CustomDoubleObject dest = null; + if (source instanceof Double) { + // check to see if the object already exists + if (destination == null) { + dest = new CustomDoubleObject(); + } else { + dest = (CustomDoubleObject) destination; + } + dest.setTheDouble(((Double) source).doubleValue()); + return dest; + } else if (source instanceof CustomDoubleObject) { + double sourceObj = + ((CustomDoubleObject) source).getTheDouble(); + return new Double(sourceObj); + } else { + throw new MappingException("Converter TestCustomConverter " + + "used incorrectly. Arguments passed in were:" + + destination + " and " + source); + } + } +``` + +(2) 在 xml 中引用定制的映射规则 + +引用定制的映射规则也是分级的,你可以酌情使用。 + +- 全局级 + +```xml + + + + + + + org.dozer.vo.CustomDoubleObject + java.lang.Double + + + + + org.dozer.vo.TestCustomConverterHashMapObject + org.dozer.vo.TestCustomConverterHashMapPrimeObject + + + + +``` + +- 属性级 + +```xml + + org.dozer.vo.SimpleObj + org.dozer.vo.SimpleObjPrime2 + + field1 + field1Prime + + +``` + +#### 映射的继承(Inheritance Mapping) + +Dozer 支持映射规则的继承机制。 + +属性如果有着相同的名字则不需要在 xml 中配置,除非使用了`hint` + +我们来看一个例子 + +```xml + + org.dozer.vo.SuperClass + org.dozer.vo.SuperClassPrime + + + superAttribute + superAttr + + + + + org.dozer.vo.SubClass + org.dozer.vo.SubClassPrime + + + attribute + attributePrime + + + + + org.dozer.vo.SubClass2 + org.dozer.vo.SubClassPrime2 + + + attribute2 + attributePrime2 + + +``` + +在上面的例子中 SubClass、SubClass2 是 SuperClass 的子类; + +SubClassPrime 和 SubClassPrime2 是 SuperClassPrime 的子类。 + +superAttribute 和 superAttr 的映射规则会被子类所继承,所以不必再重复的在子类中去声明。 + +## 参考 + +[Dozer 官方文档](http://dozer.sourceforge.net/documentation/gettingstarted.html) | [Dozer 源码地址](https://github.com/DozerMapper/dozer) diff --git a/docs/lib/bean/lombok.md b/docs/lib/bean/lombok.md new file mode 100644 index 00000000..a36b5487 --- /dev/null +++ b/docs/lib/bean/lombok.md @@ -0,0 +1,542 @@ +# Lombok 应用指南 + + + +- [1. Lombok 简介](#1-lombok-简介) +- [2. Lombok 安装](#2-lombok-安装) +- [3. Lombok 使用](#3-lombok-使用) + - [3.1. @Getter and @Setter](#31-getter-and-setter) + - [3.2. @NonNull](#32-nonnull) + - [3.3. @ToString](#33-tostring) + - [3.4. @EqualsAndHashCode](#34-equalsandhashcode) + - [3.5. @Data](#35-data) + - [3.6. @Cleanup](#36-cleanup) + - [3.7. @Synchronized](#37-synchronized) + - [3.8. @SneakyThrows](#38-sneakythrows) + - [3.9. 示例源码](#39-示例源码) +- [4. Lombok 使用注意点](#4-lombok-使用注意点) + - [4.1. 谨慎使用 `@Builder`](#41-谨慎使用-builder) + - [4.2. `@Data` 注解和继承](#42-data-注解和继承) +- [5. 参考资料](#5-参考资料) + + + +## 1. Lombok 简介 + +Lombok 是一种 Java 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注释实现这一目的。通过在开发环境中实现 Lombok,开发人员可以节省构建诸如 `hashCode()` 和 `equals()` 、`getter / setter` 这样的方法以及以往用来分类各种 accessor 和 mutator 的大量时间。 + +## 2. Lombok 安装 + +由于 Lombok 仅在编译阶段生成代码,所以使用 Lombok 注解的源代码,在 IDE 中会被高亮显示错误,针对这个问题可以通过安装 IDE 对应的插件来解决。具体的安装方式可以参考:[Setting up Lombok with Eclipse and Intellij](https://www.baeldung.com/lombok-ide) + +使 IntelliJ IDEA 支持 Lombok 方式如下: + +- **Intellij 设置支持注解处理** + - 点击 File > Settings > Build > Annotation Processors + - 勾选 Enable annotation processing +- **安装插件** + - 点击 Settings > Plugins > Browse repositories + - 查找 Lombok Plugin 并进行安装 + - 重启 IntelliJ IDEA +- **将 lombok 添加到 pom 文件** + +```xml + + org.projectlombok + lombok + 1.16.8 + +``` + +## 3. Lombok 使用 + +Lombok 提供注解 API 来修饰指定的类: + +### 3.1. @Getter and @Setter + +[@Getter and @Setter](http://jnb.ociweb.com/jnb/jnbJan2010.html#gettersetter) Lombok 代码: + +```java +@Getter @Setter private boolean employed = true; +@Setter(AccessLevel.PROTECTED) private String name; +``` + +等价于 Java 源码: + +```java +private boolean employed = true; +private String name; + +public boolean isEmployed() { + return employed; +} + +public void setEmployed(final boolean employed) { + this.employed = employed; +} + +protected void setName(final String name) { + this.name = name; +} +``` + +### 3.2. @NonNull + +[@NonNull](http://jnb.ociweb.com/jnb/jnbJan2010.html#nonnull) Lombok 代码: + +```java +@Getter @Setter @NonNull +private List members; +``` + +等价于 Java 源码: + +```java +@NonNull +private List members; + +public Family(@NonNull final List members) { + if (members == null) throw new java.lang.NullPointerException("members"); + this.members = members; +} + +@NonNull +public List getMembers() { + return members; +} + +public void setMembers(@NonNull final List members) { + if (members == null) throw new java.lang.NullPointerException("members"); + this.members = members; +} +``` + +### 3.3. @ToString + +[@ToString](http://jnb.ociweb.com/jnb/jnbJan2010.html#tostring) Lombok 代码: + +```java +@ToString(callSuper=true,exclude="someExcludedField") +public class Foo extends Bar { + private boolean someBoolean = true; + private String someStringField; + private float someExcludedField; +} +``` + +等价于 Java 源码: + +```java +public class Foo extends Bar { + private boolean someBoolean = true; + private String someStringField; + private float someExcludedField; + + @java.lang.Override + public java.lang.String toString() { + return "Foo(super=" + super.toString() + + ", someBoolean=" + someBoolean + + ", someStringField=" + someStringField + ")"; + } +} +``` + +### 3.4. @EqualsAndHashCode + +[@EqualsAndHashCode](http://jnb.ociweb.com/jnb/jnbJan2010.html#equals) Lombok 代码: + +```java +@EqualsAndHashCode(callSuper=true,exclude={"address","city","state","zip"}) +public class Person extends SentientBeing { + enum Gender { Male, Female } + + @NonNull private String name; + @NonNull private Gender gender; + + private String ssn; + private String address; + private String city; + private String state; + private String zip; +} +``` + +等价于 Java 源码: + +```java +public class Person extends SentientBeing { + + enum Gender { + /*public static final*/ Male /* = new Gender() */, + /*public static final*/ Female /* = new Gender() */; + } + @NonNull + private String name; + @NonNull + private Gender gender; + private String ssn; + private String address; + private String city; + private String state; + private String zip; + + @java.lang.Override + public boolean equals(final java.lang.Object o) { + if (o == this) return true; + if (o == null) return false; + if (o.getClass() != this.getClass()) return false; + if (!super.equals(o)) return false; + final Person other = (Person)o; + if (this.name == null ? other.name != null : !this.name.equals(other.name)) return false; + if (this.gender == null ? other.gender != null : !this.gender.equals(other.gender)) return false; + if (this.ssn == null ? other.ssn != null : !this.ssn.equals(other.ssn)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + final int PRIME = 31; + int result = 1; + result = result * PRIME + super.hashCode(); + result = result * PRIME + (this.name == null ? 0 : this.name.hashCode()); + result = result * PRIME + (this.gender == null ? 0 : this.gender.hashCode()); + result = result * PRIME + (this.ssn == null ? 0 : this.ssn.hashCode()); + return result; + } +} +``` + +### 3.5. @Data + +[@Data](http://jnb.ociweb.com/jnb/jnbJan2010.html#data) Lombok 代码: + +```java +@Data(staticConstructor="of") +public class Company { + private final Person founder; + private String name; + private List employees; +} +``` + +等价于 Java 源码: + +```java +public class Company { + private final Person founder; + private String name; + private List employees; + + private Company(final Person founder) { + this.founder = founder; + } + + public static Company of(final Person founder) { + return new Company(founder); + } + + public Person getFounder() { + return founder; + } + + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } + + public List getEmployees() { + return employees; + } + + public void setEmployees(final List employees) { + this.employees = employees; + } + + @java.lang.Override + public boolean equals(final java.lang.Object o) { + if (o == this) return true; + if (o == null) return false; + if (o.getClass() != this.getClass()) return false; + final Company other = (Company)o; + if (this.founder == null ? other.founder != null : !this.founder.equals(other.founder)) return false; + if (this.name == null ? other.name != null : !this.name.equals(other.name)) return false; + if (this.employees == null ? other.employees != null : !this.employees.equals(other.employees)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + final int PRIME = 31; + int result = 1; + result = result * PRIME + (this.founder == null ? 0 : this.founder.hashCode()); + result = result * PRIME + (this.name == null ? 0 : this.name.hashCode()); + result = result * PRIME + (this.employees == null ? 0 : this.employees.hashCode()); + return result; + } + + @java.lang.Override + public java.lang.String toString() { + return "Company(founder=" + founder + ", name=" + name + ", employees=" + employees + ")"; + } +} +``` + +### 3.6. @Cleanup + +[@Cleanup](http://jnb.ociweb.com/jnb/jnbJan2010.html#cleanup) Lombok 代码: + +```java +public void testCleanUp() { + try { + @Cleanup ByteArrayOutputStream baos = new ByteArrayOutputStream(); + baos.write(new byte[] {'Y','e','s'}); + System.out.println(baos.toString()); + } catch (IOException e) { + e.printStackTrace(); + } +} +``` + +等价于 Java 源码: + +```java +public void testCleanUp() { + try { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try { + baos.write(new byte[]{'Y', 'e', 's'}); + System.out.println(baos.toString()); + } finally { + baos.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } +} +``` + +### 3.7. @Synchronized + +[@Synchronized](http://jnb.ociweb.com/jnb/jnbJan2010.html#synchronized) Lombok 代码: + +```java +private DateFormat format = new SimpleDateFormat("MM-dd-YYYY"); + +@Synchronized +public String synchronizedFormat(Date date) { + return format.format(date); +} +``` + +等价于 Java 源码: + +```java +private final java.lang.Object $lock = new java.lang.Object[0]; +private DateFormat format = new SimpleDateFormat("MM-dd-YYYY"); + +public String synchronizedFormat(Date date) { + synchronized ($lock) { + return format.format(date); + } +} +``` + +### 3.8. @SneakyThrows + +[@SneakyThrows](http://jnb.ociweb.com/jnb/jnbJan2010.html#sneaky) Lombok 代码: + +```java +@SneakyThrows +public void testSneakyThrows() { + throw new IllegalAccessException(); +} +``` + +等价于 Java 源码: + +```java +public void testSneakyThrows() { + try { + throw new IllegalAccessException(); + } catch (java.lang.Throwable $ex) { + throw lombok.Lombok.sneakyThrow($ex); + } +} +``` + +### 3.9. 示例源码 + +> 示例源码:[javalib-bean](https://github.com/dunwu/java-tutorial/tree/master/javalib-bean) + +## 4. Lombok 使用注意点 + +### 4.1. 谨慎使用 `@Builder` + +在类上标注了 `@Data` 和 `@Builder` 注解的时候,编译时,lombok 优化后的 Class 中会没有默认的构造方法。在反序列化的时候,没有默认构造方法就可能会报错。 + +【示例】使用 `@Builder` 不当导致 json 反序列化失败 + +```java +@Data +@Builder +public class BuilderDemo01 { + + private String name; + + public static void main(String[] args) throws JsonProcessingException { + BuilderDemo01 demo01 = BuilderDemo01.builder().name("demo01").build(); + ObjectMapper mapper = new ObjectMapper(); + String json = mapper.writeValueAsString(demo01); + BuilderDemo01 expectDemo01 = mapper.readValue(json, BuilderDemo01.class); + System.out.println(expectDemo01.toString()); + } + +} +``` + +运行时会抛出异常: + +``` +Exception in thread "main" com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `io.github.dunwu.javatech.bean.lombok.BuilderDemo01` (although at least one Creator exists): cannot deserialize from Object value (no delegate- or property-based Creator) + at [Source: (String)"{"name":"demo01"}"; line: 1, column: 2] + at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:63) + at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1432) + at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1062) + at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1297) + at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:326) + at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:159) + at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4218) + at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3214) + at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3182) + at io.github.dunwu.javatech.bean.lombok.BuilderDemo01.main(BuilderDemo01.java:22) +``` + +【示例】使用 `@Builder` 正确方法 + +```java +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BuilderDemo02 { + + private String name; + + public static void main(String[] args) throws JsonProcessingException { + BuilderDemo02 demo02 = BuilderDemo02.builder().name("demo01").build(); + ObjectMapper mapper = new ObjectMapper(); + String json = mapper.writeValueAsString(demo02); + BuilderDemo02 expectDemo02 = mapper.readValue(json, BuilderDemo02.class); + System.out.println(expectDemo02.toString()); + } + +} +``` + +### 4.2. `@Data` 注解和继承 + +使用 `@Data` 注解时,则有了 `@EqualsAndHashCode` 注解,那么就会在此类中存在 `equals(Object other)` 和 `hashCode()` 方法,且不会使用父类的属性,这就导致了可能的问题。比如,有多个类有相同的部分属性,把它们定义到父类中,恰好 id(数据库主键)也在父类中,那么就会存在部分对象在比较时,它们并不相等,这是因为:lombok 自动生成的 `equals(Object other)` 和 `hashCode()` 方法判定为相等,从而导致和预期不符。 + +修复此问题的方法很简单: + +- 使用 `@Data` 时,加上 `@EqualsAndHashCode(callSuper=true)` 注解。 +- 使用 `@Getter @Setter @ToString` 代替 `@Data` 并且自定义 `equals(Object other)` 和 `hashCode()` 方法。 + +【示例】测试 `@Data` 和 `@EqualsAndHashCode` + +```java +@Data +@ToString(exclude = "age") +@EqualsAndHashCode(exclude = { "age", "sex" }) +public class Person { + + protected String name; + + protected Integer age; + + protected String sex; + +} + +@Data +@EqualsAndHashCode(callSuper = true, exclude = { "address", "city", "state", "zip" }) +public class EqualsAndHashCodeDemo extends Person { + + @NonNull + private String name; + + @NonNull + private Gender gender; + + private String ssn; + + private String address; + + private String city; + + private String state; + + private String zip; + + public EqualsAndHashCodeDemo(@NonNull String name, @NonNull Gender gender) { + this.name = name; + this.gender = gender; + } + + public EqualsAndHashCodeDemo(@NonNull String name, @NonNull Gender gender, + String ssn, String address, String city, String state, String zip) { + this.name = name; + this.gender = gender; + this.ssn = ssn; + this.address = address; + this.city = city; + this.state = state; + this.zip = zip; + } + + public enum Gender { + Male, + Female + } + +} + +@Test +@DisplayName("测试 @EqualsAndHashCode") +public void testEqualsAndHashCodeDemo() { + EqualsAndHashCodeDemo demo1 = + new EqualsAndHashCodeDemo("name1", EqualsAndHashCodeDemo.Gender.Female, "ssn", "xxx", "xxx", "xxx", "xxx"); + EqualsAndHashCodeDemo demo2 = + new EqualsAndHashCodeDemo("name1", EqualsAndHashCodeDemo.Gender.Female, "ssn", "ooo", "ooo", "ooo", "ooo"); + Assertions.assertEquals(demo1, demo2); + + Person person = new Person(); + person.setName("张三"); + person.setAge(20); + person.setSex("男"); + + Person person2 = new Person(); + person2.setName("张三"); + person2.setAge(18); + person2.setSex("男"); + + Person person3 = new Person(); + person3.setName("李四"); + person3.setAge(20); + person3.setSex("男"); + + Assertions.assertEquals(person2, person); + Assertions.assertNotEquals(person3, person); +} +``` + +上面的单元测试可以通过,但如果将 `@EqualsAndHashCode(callSuper = true, exclude = { "address", "city", "state", "zip" })` 注掉就会报错。 + +## 5. 参考资料 + +- [Lombok 官网](https://projectlombok.org/) +- [Lombok Github](https://github.com/rzwitserloot/lombok) +- [IntelliJ IDEA - Lombok Plugin](http://plugins.jetbrains.com/plugin/6317-lombok-plugin) diff --git a/docs/lib/javalib-log.md b/docs/lib/javalib-log.md new file mode 100644 index 00000000..caab593c --- /dev/null +++ b/docs/lib/javalib-log.md @@ -0,0 +1,762 @@ +# 细说 Java 主流日志工具库 + +> 在项目开发中,为了跟踪代码的运行情况,常常要使用日志来记录信息。 +> +> 在 Java 世界,有很多的日志工具库来实现日志功能,避免了我们重复造轮子。 +> +> 我们先来逐一了解一下主流日志工具。 +> +> 📦 本文已归档到:「[blog](https://github.com/dunwu/blog)」 + + + +- [日志框架](#日志框架) + - [java.util.logging (JUL)](#javautillogging-jul) + - [Log4j](#log4j) + - [Logback](#logback) + - [Log4j2](#log4j2) + - [Log4j vs Logback vs Log4j2](#log4j-vs-logback-vs-log4j2) +- [日志门面](#日志门面) + - [common-logging](#common-logging) + - [slf4j](#slf4j) + - [common-logging vs slf4j](#common-logging-vs-slf4j) + - [总结](#总结) +- [实施日志解决方案](#实施日志解决方案) + - [引入 jar 包](#引入-jar-包) + - [使用 API](#使用-api) +- [log4j2 配置](#log4j2-配置) +- [logback 配置](#logback-配置) + - [``](#configuration) + - [``](#appender) + - [``](#logger) + - [``](#root) + - [完整的 logback.xml 参考示例](#完整的-logbackxml-参考示例) +- [log4j 配置](#log4j-配置) + - [完整的 log4j.xml 参考示例](#完整的-log4jxml-参考示例) +- [参考](#参考) + + + +## 日志框架 + +### java.util.logging (JUL) + +JDK1.4 开始,通过 `java.util.logging` 提供日志功能。 + +它能满足基本的日志需要,但是功能没有 Log4j 强大,而且使用范围也没有 Log4j 广泛。 + +### Log4j + +Log4j 是 apache 的一个开源项目,创始人 Ceki Gulcu。 + +Log4j 应该说是 Java 领域资格最老,应用最广的日志工具。从诞生之日到现在一直广受业界欢迎。 + +Log4j 是高度可配置的,并可通过在运行时的外部文件配置。它根据记录的优先级别,并提供机制,以指示记录信息到许多的目的地,诸如:数据库,文件,控制台,UNIX 系统日志等。 + +Log4j 中有三个主要组成部分: + +- **loggers** - 负责捕获记录信息。 +- **appenders** - 负责发布日志信息,以不同的首选目的地。 +- **layouts** - 负责格式化不同风格的日志信息。 + +[官网地址](http://logging.apache.org/log4j/2.x/) + +### Logback + +Logback 是由 log4j 创始人 Ceki Gulcu 设计的又一个开源日记组件,目标是替代 log4j。 + +logback 当前分成三个模块:`logback-core`、`logback-classic` 和 `logback-access`。 + +- `logback-core` - 是其它两个模块的基础模块。 +- `logback-classic` - 是 log4j 的一个 改良版本。此外 `logback-classic` 完整实现 SLF4J API 使你可以很方便地更换成其它日记系统如 log4j 或 JDK14 Logging。 +- `logback-access` - 访问模块与 Servlet 容器集成提供通过 Http 来访问日记的功能。 + +[官网地址](http://logback.qos.ch/) + +### Log4j2 + +[官网地址](http://logging.apache.org/log4j/2.x/) + +按照官方的说法,Log4j2 是 Log4j 和 Logback 的替代。 + +Log4j2 架构: + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/java/javalib/log/log4j2-architecture.jpg) + +### Log4j vs Logback vs Log4j2 + +按照官方的说法,**Log4j2 大大优于 Log4j 和 Logback。** + +那么,Log4j2 相比于先问世的 Log4j 和 Logback,它具有哪些优势呢? + +1. Log4j2 旨在用作审计日志记录框架。 Log4j 1.x 和 Logback 都会在重新配置时丢失事件。 Log4j 2 不会。在 Logback 中,Appender 中的异常永远不会对应用程序可见。在 Log4j 中,可以将 Appender 配置为允许异常渗透到应用程序。 +2. Log4j2 在多线程场景中,[异步 Loggers](https://logging.apache.org/log4j/2.x/manual/async.html) 的吞吐量比 Log4j 1.x 和 Logback 高 10 倍,延迟低几个数量级。 +3. Log4j2 对于独立应用程序是无垃圾的,对于稳定状态日志记录期间的 Web 应用程序来说是低垃圾。这减少了垃圾收集器的压力,并且可以提供更好的响应时间性能。 +4. Log4j2 使用插件系统,通过添加新的 Appender、Filter、Layout、Lookup 和 Pattern Converter,可以非常轻松地扩展框架,而无需对 Log4j 进行任何更改。 +5. 由于插件系统配置更简单。配置中的条目不需要指定类名。 +6. 支持[自定义日志等级](https://logging.apache.org/log4j/2.x/manual/customloglevels.html)。 +7. 支持 [lambda 表达式](https://logging.apache.org/log4j/2.x/manual/api.html#LambdaSupport)。 +8. 支持[消息对象](https://logging.apache.org/log4j/2.x/manual/messages.html)。 +9. Log4j 和 Logback 的 Layout 返回的是字符串,而 Log4j2 返回的是二进制数组,这使得它能被各种 Appender 使用。 +10. Syslog Appender 支持 TCP 和 UDP 并且支持 BSD 系统日志。 +11. Log4j2 利用 Java5 并发特性,尽量小粒度的使用锁,减少锁的开销。 + +## 日志门面 + +何谓日志门面? + +日志门面是对不同日志框架提供的一个 API 封装,可以在部署的时候不修改任何配置即可接入一种日志实现方案。 + +### common-logging + +common-logging 是 apache 的一个开源项目。也称**Jakarta Commons Logging,缩写 JCL**。 + +common-logging 的功能是提供日志功能的 API 接口,本身并不提供日志的具体实现(当然,common-logging 内部有一个 Simple logger 的简单实现,但是功能很弱,直接忽略),而是在**运行时**动态的绑定日志实现组件来工作(如 log4j、java.util.loggin)。 + +[官网地址](http://commons.apache.org/proper/commons-logging/) + +### slf4j + +全称为 Simple Logging Facade for Java,即 java 简单日志门面。 + +什么,作者又是 Ceki Gulcu!这位大神写了 Log4j、Logback 和 slf4j,专注日志组件开发五百年,一直只能超越自己。 + +类似于 Common-Logging,slf4j 是对不同日志框架提供的一个 API 封装,可以在部署的时候不修改任何配置即可接入一种日志实现方案。但是,slf4j 在**编译时**静态绑定真正的 Log 库。使用 SLF4J 时,如果你需要使用某一种日志实现,那么你必须选择正确的 SLF4J 的 jar 包的集合(各种桥接包)。 + +[官网地址](http://www.slf4j.org/) + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/java/javalib/log/slf4j-to-other-log.png) + +### common-logging vs slf4j + +slf4j 库类似于 Apache Common-Logging。但是,他在编译时静态绑定真正的日志库。这点似乎很麻烦,其实也不过是导入桥接 jar 包而已。 + +slf4j 一大亮点是提供了更方便的日志记录方式: + +不需要使用`logger.isDebugEnabled()`来解决日志因为字符拼接产生的性能问题。slf4j 的方式是使用`{}`作为字符串替换符,形式如下: + +```java +logger.debug("id: {}, name: {} ", id, name); +``` + +### 总结 + +综上所述,使用 slf4j + Logback 可谓是目前最理想的日志解决方案了。 + +接下来,就是如何在项目中实施了。 + +## 实施日志解决方案 + +使用日志解决方案基本可分为三步: + +1. 引入 jar 包 +2. 配置 +3. 使用 API + +常见的各种日志解决方案的第 2 步和第 3 步基本一样,实施上的差别主要在第 1 步,也就是使用不同的库。 + +### 引入 jar 包 + +这里首选推荐使用 slf4j + logback 的组合。 + +如果你习惯了 common-logging,可以选择 common-logging+log4j。 + +强烈建议不要直接使用日志实现组件(logback、log4j、java.util.logging),理由前面也说过,就是无法灵活替换日志库。 + +还有一种情况:你的老项目使用了 common-logging,或是直接使用日志实现组件。如果修改老的代码,工作量太大,需要兼容处理。在下文,都将看到各种应对方法。 + +**_注:据我所知,当前仍没有方法可以将 slf4j 桥接到 common-logging。如果我孤陋寡闻了,请不吝赐教。_** + +#### slf4j 直接绑定日志组件 + +**slf4j + logback** + +添加依赖到 pom.xml 中即可。 + +_logback-classic-1.0.13.jar_ 会自动将 _slf4j-api-1.7.21.jar_ 和 _logback-core-1.0.13.jar_ 也添加到你的项目中。 + +```xml + + ch.qos.logback + logback-classic + 1.0.13 + +``` + +**slf4j + log4j** + +添加依赖到 pom.xml 中即可。 + +_slf4j-log4j12-1.7.21.jar_ 会自动将 _slf4j-api-1.7.21.jar_ 和 _log4j-1.2.17.jar_ 也添加到你的项目中。 + +```xml + + org.slf4j + slf4j-log4j12 + 1.7.21 + +``` + +**slf4j + java.util.logging** + +添加依赖到 pom.xml 中即可。 + +_slf4j-jdk14-1.7.21.jar_ 会自动将 _slf4j-api-1.7.21.jar_ 也添加到你的项目中。 + +```xml + + org.slf4j + slf4j-jdk14 + 1.7.21 + +``` + +#### slf4j 兼容非 slf4j 日志组件 + +在介绍解决方案前,先提一个概念——桥接 + +**什么是桥接呢** + +假如你正在开发应用程序所调用的组件当中已经使用了 common-logging,这时你需要 jcl-over-slf4j.jar 把日志信息输出重定向到 slf4j-api,slf4j-api 再去调用 slf4j 实际依赖的日志组件。这个过程称为桥接。下图是官方的 slf4j 桥接策略图: + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/java/javalib/log/slf4j-bind-strategy.png) + +从图中应该可以看出,无论你的老项目中使用的是 common-logging 或是直接使用 log4j、java.util.logging,都可以使用对应的桥接 jar 包来解决兼容问题。 + +**slf4j 兼容 common-logging** + +```xml + + org.slf4j + jcl-over-slf4j + 1.7.12 + +``` + +**slf4j 兼容 log4j** + +```xml + + org.slf4j + log4j-over-slf4j + 1.7.12 + +``` + +**slf4j 兼容 java.util.logging** + +```xml + + org.slf4j + jul-to-slf4j + 1.7.12 + +``` + +#### spring 集成 slf4j + +做 java web 开发,基本离不开 spring 框架。很遗憾,spring 使用的日志解决方案是 common-logging + log4j。 + +所以,你需要一个桥接 jar 包:_logback-ext-spring_。 + +```xml + + ch.qos.logback + logback-classic + 1.1.3 + + + org.logback-extensions + logback-ext-spring + 0.1.2 + + + org.slf4j + jcl-over-slf4j + 1.7.12 + +``` + +#### common-logging 绑定日志组件 + +**common-logging + log4j** + +添加依赖到 pom.xml 中即可。 + +```xml + + commons-logging + commons-logging + 1.2 + + + log4j + log4j + 1.2.17 + +``` + +### 使用 API + +#### slf4j 用法 + +使用 slf4j 的 API 很简单。使用`LoggerFactory`初始化一个`Logger`实例,然后调用 Logger 对应的打印等级函数就行了。 + +```java +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class App { + private static final Logger log = LoggerFactory.getLogger(App.class); + public static void main(String[] args) { + String msg = "print log, current level: {}"; + log.trace(msg, "trace"); + log.debug(msg, "debug"); + log.info(msg, "info"); + log.warn(msg, "warn"); + log.error(msg, "error"); + } +} +``` + +#### common-logging 用法 + +common-logging 用法和 slf4j 几乎一样,但是支持的打印等级多了一个更高级别的:**fatal**。 + +此外,common-logging 不支持`{}`替换参数,你只能选择拼接字符串这种方式了。 + +```java +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public class JclTest { + private static final Log log = LogFactory.getLog(JclTest.class); + + public static void main(String[] args) { + String msg = "print log, current level: "; + log.trace(msg + "trace"); + log.debug(msg + "debug"); + log.info(msg + "info"); + log.warn(msg + "warn"); + log.error(msg + "error"); + log.fatal(msg + "fatal"); + } +} +``` + +## log4j2 配置 + +log4j2 基本配置形式如下: + +```xml +; + + + value + + + + + + + + ... + + + + + + ... + + + + + +``` + +配置示例: + +```xml + + + + target/test.log + + + + + + + + + + + + + + + + + + + + + %d %p %C{1.} [%t] %m%n + + + + + + + + + + + + + + + + + + + + + + +``` + +## logback 配置 + +### `` + +- 作用:`` 是 logback 配置文件的根元素。 +- 要点 + - 它有 ``、``、`` 三个子元素。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/java/javalib/log/logback-configuration.png) + +### `` + +- 作用:将记录日志的任务委托给名为 appender 的组件。 +- 要点 + - 可以配置零个或多个。 + - 它有 ``、``、``、`` 四个子元素。 +- 属性 + - name:设置 appender 名称。 + - class:设置具体的实例化类。 + +#### `` + +- 作用:设置日志文件路径。 + +#### `` + +- 作用:设置过滤器。 +- 要点 + - 可以配置零个或多个。 + +#### `` + +- 作用:设置 appender。 +- 要点 + - 可以配置零个或一个。 +- 属性 + - class:设置具体的实例化类。 + +#### `` + +- 作用:设置编码。 +- 要点 + - 可以配置零个或多个。 +- 属性 + - class:设置具体的实例化类。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/java/javalib/log/logback-appender.png) + +### `` + +- 作用:设置 logger。 +- 要点 + - 可以配置零个或多个。 +- 属性 + - name + - level:设置日志级别。不区分大小写。可选值:TRACE、DEBUG、INFO、WARN、ERROR、ALL、OFF。 + - additivity:可选值:true 或 false。 + +#### `` + +- 作用:appender 引用。 +- 要点 + - 可以配置零个或多个。 + +### `` + +- 作用:设置根 logger。 +- 要点 + - 只能配置一个。 + - 除了 level,不支持任何属性。level 属性和 `` 中的相同。 + - 有一个子元素 ``,与 `` 中的相同。 + +### 完整的 logback.xml 参考示例 + +在下面的配置文件中,我为自己的项目代码(根目录:org.zp.notes.spring)设置了五种等级: + +TRACE、DEBUG、INFO、WARN、ERROR,优先级依次从低到高。 + +因为关注 spring 框架本身的一些信息,我增加了专门打印 spring WARN 及以上等级的日志。 + +```xml + + + + + + + + + + + %d{HH:mm:ss.SSS} [%thread] [%-5p] %c{36}.%M - %m%n + + + + + + + + ${user.dir}/logs/${DIR_NAME}/all.%d{yyyy-MM-dd}.log + 30 + + + + + 30MB + + + + %d{HH:mm:ss.SSS} [%thread] [%-5p] %c{36}.%M - %m%n + + + + + + + ${user.dir}/logs/${DIR_NAME}/error.%d{yyyy-MM-dd}.log + 30 + + + + + 10MB + + + + ERROR + ACCEPT + DENY + + + + %d{HH:mm:ss.SSS} [%thread] [%-5p] %c{36}.%M - %m%n + + + + + + + ${user.dir}/logs/${DIR_NAME}/warn.%d{yyyy-MM-dd}.log + 30 + + + + + 10MB + + + + WARN + ACCEPT + DENY + + + + %d{HH:mm:ss.SSS} [%thread] [%-5p] %c{36}.%M - %m%n + + + + + + + ${user.dir}/logs/${DIR_NAME}/info.%d{yyyy-MM-dd}.log + 30 + + + + + 10MB + + + + INFO + ACCEPT + DENY + + + + %d{HH:mm:ss.SSS} [%thread] [%-5p] %c{36}.%M - %m%n + + + + + + + ${user.dir}/logs/${DIR_NAME}/debug.%d{yyyy-MM-dd}.log + 30 + + + + + 10MB + + + + DEBUG + ACCEPT + DENY + + + + %d{HH:mm:ss.SSS} [%thread] [%-5p] %c{36}.%M - %m%n + + + + + + + ${user.dir}/logs/${DIR_NAME}/trace.%d{yyyy-MM-dd}.log + 30 + + + + + 10MB + + + + TRACE + ACCEPT + DENY + + + + %d{HH:mm:ss.SSS} [%thread] [%-5p] %c{36}.%M - %m%n + + + + + + + ${user.dir}/logs/${DIR_NAME}/springframework.%d{yyyy-MM-dd}.log + + 30 + + + + + 10MB + + + + %d{HH:mm:ss.SSS} [%thread] [%-5p] %c{36}.%M - %m%n + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## log4j 配置 + +### 完整的 log4j.xml 参考示例 + +log4j 的配置文件一般有 xml 格式或 properties 格式。这里为了和 logback.xml 做个对比,就不介绍 properties 了,其实也没太大差别。 + +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +## 参考 + +- [slf4 官方文档](http://www.slf4j.org/manual.html) +- [logback 官方文档](http://logback.qos.ch/) +- [log4j 官方文档](http://logging.apache.org/log4j/1.2/) +- [commons-logging 官方文档](http://commons.apache.org/proper/commons-logging/) +- diff --git a/docs/lib/javalib-util.md b/docs/lib/javalib-util.md new file mode 100644 index 00000000..005aec39 --- /dev/null +++ b/docs/lib/javalib-util.md @@ -0,0 +1,7 @@ +# 细说 Java 主流工具包 + +- apache.commons + - [commons-lang](https://github.com/apache/commons-lang) + - [commons-collections](https://github.com/apache/commons-collections) + - [common-io](https://github.com/apache/commons-io) +- [guava](https://github.com/google/guava) diff --git a/docs/lib/javamail.md b/docs/lib/javamail.md new file mode 100644 index 00000000..89c351d6 --- /dev/null +++ b/docs/lib/javamail.md @@ -0,0 +1,466 @@ +# JavaMail 应用指南 + + + +- [简介](#简介) + - [邮件相关的标准](#邮件相关的标准) + - [JavaMail 简介](#javamail-简介) + - [邮件传输过程](#邮件传输过程) + - [Message 结构](#message-结构) +- [JavaMail 的核心类](#javamail-的核心类) + - [java.util.Properties 类(属性对象)](#javautilproperties-类属性对象) + - [javax.mail.Session 类(会话对象)](#javaxmailsession-类会话对象) + - [javax.mail.Transport 类(邮件传输)](#javaxmailtransport-类邮件传输) + - [javax.mail.Store 类(邮件存储 )](#javaxmailstore-类邮件存储-) + - [javax.mail.Message 类(消息对象)](#javaxmailmessage-类消息对象) + - [javax.mail.Address 类(地址)](#javaxmailaddress-类地址) + - [Authenticator 类(认证者)](#authenticator-类认证者) +- [实例](#实例) + - [发送文本邮件](#发送文本邮件) + - [发送 HTML 格式的邮件](#发送-html-格式的邮件) + - [发送带附件的邮件](#发送带附件的邮件) + - [获取邮箱中的邮件](#获取邮箱中的邮件) + - [转发邮件](#转发邮件) + + + +## 简介 + +### 邮件相关的标准 + +厂商所提供的 JavaMail 服务程序可以有选择地实现某些邮件协议,常见的邮件协议包括: + +- `SMTP(Simple Mail Transfer Protocol)` :即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。 +- `POP3(Post Office Protocol - Version 3)` :即邮局协议版本 3 ,用于接收电子邮件的标准协议。 +- `IMAP(Internet Mail Access Protocol)` :即 Internet 邮件访问协议。是 POP3 的替代协议。 + +这三种协议都有对应 SSL 加密传输的协议,分别是 **SMTPS**, **POP3S**和 **IMAPS**。 + +`MIME(Multipurpose Internet Mail Extensions)` :即多用途因特网邮件扩展标准。它不是邮件传输协议。但对传输内容的消息、附件及其它的内容定义了格式。 + +### JavaMail 简介 + +JavaMail 是由 Sun 发布的用来处理 email 的 API 。它并没有包含在 Java SE 中,而是作为 Java EE 的一部分。 + +- `mail.jar` :此 JAR 文件包含 JavaMail API 和 Sun 提供的 SMTP 、 IMAP 和 POP3 服务提供程序; +- `activation.jar` :此 JAR 文件包含 JAF API 和 Sun 的实现。 + +JavaMail 包中用于处理电子邮件的核心类是: `Properties` 、 `Session` 、 `Message` 、 `Address` 、 `Authenticator` 、 `Transport` 、 `Store` 等。 + +### 邮件传输过程 + +如上图,电子邮件的处理步骤如下: + +1. 创建一个 Session 对象。 +2. Session 对象创建一个 Transport 对象 /Store 对象,用来发送 / 保存邮件。 +3. Transport 对象 /Store 对象连接邮件服务器。 +4. Transport 对象 /Store 对象创建一个 Message 对象 ( 也就是邮件内容 ) 。 +5. Transport 对象发送邮件; Store 对象获取邮箱的邮件。 + +### Message 结构 + +- `MimeMessage` 类:代表整封邮件。 +- `MimeBodyPart` 类:代表邮件的一个 MIME 信息。 +- `MimeMultipart` 类:代表一个由多个 MIME 信息组合成的组合 MIME 信息。 + +![img](http://upload-images.jianshu.io/upload_images/3101171-948230d2f5c7a620.png) + +## JavaMail 的核心类 + +JavaMail 对收发邮件进行了高级的抽象,形成了一些关键的的接口和类,它们构成了程序的基础,下面我们分别来了解一下这些最常见的对象。 + +### java.util.Properties 类(属性对象) + +java.util.Properties 类代表一组属性集合。 + +它的每一个键和值都是 String **类型。** + +由于 JavaMail 需要和邮件服务器进行通信,这就要求程序提供许多诸如服务器地址、端口、用户名、密码等信息, JavaMail 通过 Properties 对象封装这些属性信息。 + +例: 如下面的代码封装了几个属性信息: + +```java +Properties prop = new Properties(); +prop.setProperty("mail.debug", "true"); +prop.setProperty("mail.host", "[email protected]"); +prop.setProperty("mail.transport.protocol", "smtp"); +prop.setProperty("mail.smtp.auth", "true"); +``` + +针对不同的的邮件协议, JavaMail 规定了服务提供者必须支持一系列属性, + +下表是一些常见属性(属性值都以 String 类型进行设置,属性类型栏仅表示属性是如何被解析的): + +| 关键词 | 类型 | 描述 | +| ----------------------- | ------- | --------------------------------------------- | +| mail.debug | boolean | debug 开关。 | +| mail.host | String | 指定发送、接收邮件的默认邮箱服务器。 | +| mail.store.protocol | String | 指定接收邮件的协议。 | +| mail.transport.protocol | String | 指定发送邮件的协议。 | +| mail.debug.auth | boolean | debug 输出中是否包含认证命令。默认是 false 。 | + +详情请参考官方 API 文档: + + 。 + +### javax.mail.Session 类(会话对象) + +`Session` 表示一个邮件会话。 + +Session 的主要作用包括两个方面: + +- 接收各种配置属性信息:通过 Properties 对象设置的属性信息; +- 初始化 JavaMail 环境:根据 JavaMail 的配置文件,初始化 JavaMail 环境,以便通过 Session 对象创建其他重要类的实例。 + +JavaMail 在 Jar 包的 META-INF 目录下,通过以下文件提供了基本配置信息,以便 session 能够根据这个配置文件加载提供者的实现类: + +- javamail.default.providers +- javamail.default.address.map + +![img](http://upload-images.jianshu.io/upload_images/3101171-b59382c69385df45.png) + +**例:** + +```java +Properties props = new Properties(); +props.setProperty("mail.transport.protocol", "smtp"); +Session session = Session.getInstance(props); +``` + +### javax.mail.Transport 类(邮件传输) + +邮件操作只有发送或接收两种处理方式。 + +JavaMail 将这两种不同操作描述为传输( javax.mail.Transport )和存储( javax.mail.Store ),传输对应邮件的发送,而存储对应邮件的接收。 + +- `getTransport` - Session 类中的 **getTransport()**有多个重载方法,可以用来创建 Transport 对象。 +- `connect` - 如果设置了认证命令—— mail.smtp.auth ,那么使用 Transport 类的 connect 方法连接服务器时,则必须加上用户名和密码。 +- `sendMessage` - Transport 类的 sendMessage 方法用来发送邮件消息。 +- `close` - Transport 类的 close 方法用来关闭和邮件服务器的连接。 + +### javax.mail.Store 类(邮件存储 ) + +- `getStore` - Session 类中的 getStore () 有多个重载方法,可以用来创建 Store 对象。 +- `connect` - 如果设置了认证命令—— mail.smtp.auth ,那么使用 Store 类的 connect 方法连接服务器时,则必须加上用户名和密码。 +- `getFolder` - Store 类的 getFolder 方法可以 获取邮箱内的邮件夹 Folder 对象 +- `close` - Store 类的 close 方法用来关闭和邮件服务器的连接。 + +### javax.mail.Message 类(消息对象) + +- `javax.mail.Message` - 是个抽象类,只能用子类去实例化,多数情况下为 `javax.mail.internet.MimeMessage`。 +- `MimeMessage` - 代表 MIME 类型的电子邮件消息。 + +要创建一个 Message ,需要将 Session 对象传递给 `MimeMessage` 构造器: + +```java +MimeMessage message = new MimeMessage(session); +``` + +注意:还存在其它构造器,如用按 RFC822 格式的输入流来创建消息。 + +- setFrom - 设置邮件的发件人 +- setRecipient - 设置邮件的发送人、抄送人、密送人 + +三种预定义的地址类型是: + +- `Message.RecipientType.TO` - 收件人 +- `Message.RecipientType.CC` - 抄送人 +- `Message.RecipientType.BCC` - 密送人 +- `setSubject` - 设置邮件的主题 +- `setContent` - 设置邮件内容 +- `setText` - 如果邮件内容是纯文本,可以使用此接口设置文本内容。 + +### javax.mail.Address 类(地址) + +一旦您创建了 Session 和 Message ,并将内容填入消息后,就可以用 Address 确定信件地址了。和 Message 一样, Address 也是个抽象类。您用的是 javax.mail.internet.InternetAddress 类。 + +若创建的地址只包含电子邮件地址,只要传递电子邮件地址到构造器就行了。 + +**例:** + +```java +Address address = new InternetAddress("[email protected]"); +``` + +### Authenticator 类(认证者) + +与 java.net 类一样, JavaMail API 也可以利用 `Authenticator` 通过用户名和密码访问受保护的资源。对于 JavaMail API 来说,这些资源就是邮件服务器。`Authenticator` 在 javax.mail 包中,而且它和 java.net 中同名的类 Authenticator 不同。两者并不共享同一个 Authenticator ,因为 JavaMail API 用于 Java 1.1 ,它没有 java.net 类别。 + +要使用 Authenticator ,先创建一个抽象类的子类,并从 `getPasswordAuthentication()` 方法中返回 `PasswordAuthentication` 实例。创建完成后,您必需向 session 注册 `Authenticator` 。然后,在需要认证的时候,就会通知 `Authenticator` 。您可以弹出窗口,也可以从配置文件中(虽然没有加密是不安全的)读取用户名和密码,将它们作为 `PasswordAuthentication` 对象返回给调用程序。 + +**例:** + +```java +Properties props = new Properties(); +Authenticator auth = new MyAuthenticator(); +Session session = Session.getDefaultInstance(props, auth); +``` + +## 实例 + +### 发送文本邮件 + +```java +public static void main(String[] args) throws Exception { + Properties prop = new Properties(); + prop.setProperty("mail.debug", "true"); + prop.setProperty("mail.host", MAIL_SERVER_HOST); + prop.setProperty("mail.transport.protocol", "smtp"); + prop.setProperty("mail.smtp.auth", "true"); + + // 1、创建session + Session session = Session.getInstance(prop); + Transport ts = null; + + // 2、通过session得到transport对象 + ts = session.getTransport(); + + // 3、连上邮件服务器 + ts.connect(MAIL_SERVER_HOST, USER, PASSWORD); + + // 4、创建邮件 + MimeMessage message = new MimeMessage(session); + + // 邮件消息头 + message.setFrom(new InternetAddress(MAIL_FROM)); // 邮件的发件人 + message.setRecipient(Message.RecipientType.TO, new InternetAddress(MAIL_TO)); // 邮件的收件人 + message.setRecipient(Message.RecipientType.CC, new InternetAddress(MAIL_CC)); // 邮件的抄送人 + message.setRecipient(Message.RecipientType.BCC, new InternetAddress(MAIL_BCC)); // 邮件的密送人 + message.setSubject("测试文本邮件"); // 邮件的标题 + + // 邮件消息体 + message.setText("天下无双。"); + + // 5、发送邮件 + ts.sendMessage(message, message.getAllRecipients()); + ts.close(); +} +``` + +### 发送 HTML 格式的邮件 + +```java +public static void main(String[] args) throws Exception { + Properties prop = new Properties(); + prop.setProperty("mail.debug", "true"); + prop.setProperty("mail.host", MAIL_SERVER_HOST); + prop.setProperty("mail.transport.protocol", "smtp"); + prop.setProperty("mail.smtp.auth", "true"); + + // 1、创建session + Session session = Session.getInstance(prop); + Transport ts = null; + + // 2、通过session得到transport对象 + ts = session.getTransport(); + + // 3、连上邮件服务器 + ts.connect(MAIL_SERVER_HOST, USER, PASSWORD); + + // 4、创建邮件 + MimeMessage message = new MimeMessage(session); + + // 邮件消息头 + message.setFrom(new InternetAddress(MAIL_FROM)); // 邮件的发件人 + message.setRecipient(Message.RecipientType.TO, new InternetAddress(MAIL_TO)); // 邮件的收件人 + message.setRecipient(Message.RecipientType.CC, new InternetAddress(MAIL_CC)); // 邮件的抄送人 + message.setRecipient(Message.RecipientType.BCC, new InternetAddress(MAIL_BCC)); // 邮件的密送人 + message.setSubject("测试HTML邮件"); // 邮件的标题 + + String htmlContent = "

Hello

" + "

显示图片1.jpg

"; + MimeBodyPart text = new MimeBodyPart(); + text.setContent(htmlContent, "text/html;charset=UTF-8"); + MimeBodyPart image = new MimeBodyPart(); + DataHandler dh = new DataHandler(new FileDataSource("D:\\05_Datas\\图库\\吉他少年背影.png")); + image.setDataHandler(dh); + image.setContentID("abc.jpg"); + + // 描述数据关系 + MimeMultipart mm = new MimeMultipart(); + mm.addBodyPart(text); + mm.addBodyPart(image); + mm.setSubType("related"); + message.setContent(mm); + message.saveChanges(); + + // 5、发送邮件 + ts.sendMessage(message, message.getAllRecipients()); + ts.close(); +} +``` + +### 发送带附件的邮件 + +```java +public static void main(String[] args) throws Exception { + Properties prop = new Properties(); + prop.setProperty("mail.debug", "true"); + prop.setProperty("mail.host", MAIL_SERVER_HOST); + prop.setProperty("mail.transport.protocol", "smtp"); + prop.setProperty("mail.smtp.auth", "true"); + + // 1、创建session + Session session = Session.getInstance(prop); + + // 2、通过session得到transport对象 + Transport ts = session.getTransport(); + + // 3、连上邮件服务器 + ts.connect(MAIL_SERVER_HOST, USER, PASSWORD); + + // 4、创建邮件 + MimeMessage message = new MimeMessage(session); + + // 邮件消息头 + message.setFrom(new InternetAddress(MAIL_FROM)); // 邮件的发件人 + message.setRecipient(Message.RecipientType.TO, new InternetAddress(MAIL_TO)); // 邮件的收件人 + message.setRecipient(Message.RecipientType.CC, new InternetAddress(MAIL_CC)); // 邮件的抄送人 + message.setRecipient(Message.RecipientType.BCC, new InternetAddress(MAIL_BCC)); // 邮件的密送人 + message.setSubject("测试带附件邮件"); // 邮件的标题 + + MimeBodyPart text = new MimeBodyPart(); + text.setContent("邮件中有两个附件。", "text/html;charset=UTF-8"); + + // 描述数据关系 + MimeMultipart mm = new MimeMultipart(); + mm.setSubType("related"); + mm.addBodyPart(text); + String[] files = { + "D:\\00_Temp\\temp\\1.jpg", "D:\\00_Temp\\temp\\2.png" + }; + + // 添加邮件附件 + for (String filename : files) { + MimeBodyPart attachPart = new MimeBodyPart(); + attachPart.attachFile(filename); + mm.addBodyPart(attachPart); + } + + message.setContent(mm); + message.saveChanges(); + + // 5、发送邮件 + ts.sendMessage(message, message.getAllRecipients()); + ts.close(); +} +``` + +### 获取邮箱中的邮件 + +```java + public static void main(String[] args) throws Exception { + + // 创建一个有具体连接信息的Properties对象 + Properties prop = new Properties(); + prop.setProperty("mail.debug", "true"); + prop.setProperty("mail.store.protocol", "pop3"); + prop.setProperty("mail.pop3.host", MAIL_SERVER_HOST); + + // 1、创建session + Session session = Session.getInstance(prop); + + // 2、通过session得到Store对象 + Store store = session.getStore(); + + // 3、连上邮件服务器 + store.connect(MAIL_SERVER_HOST, USER, PASSWORD); + + // 4、获得邮箱内的邮件夹 + Folder folder = store.getFolder("inbox"); + folder.open(Folder.READ_ONLY); + + // 获得邮件夹Folder内的所有邮件Message对象 + Message[] messages = folder.getMessages(); + for (int i = 0; i < messages.length; i++) { + String subject = messages[i].getSubject(); + String from = (messages[i].getFrom()[0]).toString(); + System.out.println("第 " + (i + 1) + "封邮件的主题:" + subject); + System.out.println("第 " + (i + 1) + "封邮件的发件人地址:" + from); + } + + // 5、关闭 + folder.close(false); + store.close(); +} +``` + +### 转发邮件 + +例:获取指定邮件夹下的第一封邮件并转发 + +```java + public static void main(String[] args) throws Exception { + Properties prop = new Properties(); + prop.put("mail.store.protocol", "pop3"); + prop.put("mail.pop3.host", MAIL_SERVER_POP3); + prop.put("mail.pop3.starttls.enable", "true"); + prop.put("mail.smtp.auth", "true"); + prop.put("mail.smtp.host", MAIL_SERVER_SMTP); + + // 1、创建session + Session session = Session.getDefaultInstance(prop); + + // 2、读取邮件夹 + Store store = session.getStore("pop3"); + store.connect(MAIL_SERVER_POP3, USER, PASSWORD); + Folder folder = store.getFolder("inbox"); + folder.open(Folder.READ_ONLY); + + // 获取邮件夹中第1封邮件信息 + Message[] messages = folder.getMessages(); + if (messages.length <= 0) { + return; + } + Message message = messages[0]; + + // 打印邮件关键信息 + String from = InternetAddress.toString(message.getFrom()); + if (from != null) { + System.out.println("From: " + from); + } + + String replyTo = InternetAddress.toString(message.getReplyTo()); + if (replyTo != null) { + System.out.println("Reply-to: " + replyTo); + } + + String to = InternetAddress.toString(message.getRecipients(Message.RecipientType.TO)); + if (to != null) { + System.out.println("To: " + to); + } + + String subject = message.getSubject(); + if (subject != null) { + System.out.println("Subject: " + subject); + } + + Date sent = message.getSentDate(); + if (sent != null) { + System.out.println("Sent: " + sent); + } + + // 设置转发邮件信息头 + Message forward = new MimeMessage(session); + forward.setFrom(new InternetAddress(MAIL_FROM)); + forward.setRecipient(Message.RecipientType.TO, new InternetAddress(MAIL_TO)); + forward.setSubject("Fwd: " + message.getSubject()); + + // 设置转发邮件内容 + MimeBodyPart bodyPart = new MimeBodyPart(); + bodyPart.setContent(message, "message/rfc822"); + + Multipart multipart = new MimeMultipart(); + multipart.addBodyPart(bodyPart); + forward.setContent(multipart); + forward.saveChanges(); + + Transport ts = session.getTransport("smtp"); + ts.connect(USER, PASSWORD); + ts.sendMessage(forward, forward.getAllRecipients()); + + folder.close(false); + store.close(); + ts.close(); + System.out.println("message forwarded successfully...."); +} +``` diff --git a/docs/lib/jsoup.md b/docs/lib/jsoup.md new file mode 100644 index 00000000..936dba8c --- /dev/null +++ b/docs/lib/jsoup.md @@ -0,0 +1,461 @@ +# Jsoup 应用指南 + + + +- [简介](#简介) +- [加载](#加载) + - [从 HTML 字符串加载一个文档](#从-html-字符串加载一个文档) + - [解析一个 body 片断](#解析一个-body-片断) + - [从 URL 加载一个文档](#从-url-加载一个文档) + - [从一个文件加载一个文档](#从一个文件加载一个文档) +- [解析](#解析) + - [使用 DOM 方法来遍历一个文档](#使用-dom-方法来遍历一个文档) + - [使用选择器语法来查找元素](#使用选择器语法来查找元素) + - [从元素抽取属性,文本和 HTML](#从元素抽取属性文本和-html) + - [处理 URLs](#处理-urls) +- [数据修改](#数据修改) + - [设置属性的值](#设置属性的值) + - [设置一个元素的 HTML 内容](#设置一个元素的-html-内容) + - [设置元素的文本内容](#设置元素的文本内容) +- [HTML 清理](#html-清理) + - [消除不受信任的 HTML (来防止 XSS 攻击)](#消除不受信任的-html-来防止-xss-攻击) +- [参考](#参考) + + + +## 简介 + +jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 JQuery 的操作方法来取出和操作数据。 + +jsoup 工作的流程主要如下: + +1. 从一个 URL,文件或字符串中解析 HTML,并加载为一个 `Document` 对象。 +2. 使用 DOM 或 CSS 选择器来取出数据; +3. 可操作 HTML 元素、属性、文本。 + +jsoup 是基于 MIT 协议发布的,可放心使用于商业项目。 + +## 加载 + +### 从 HTML 字符串加载一个文档 + +使用静态 `Jsoup.parse(String html)` 方法或 `Jsoup.parse(String html, String baseUri)` 示例代码: + +```java +String html = "First parse" + + "

Parsed HTML into a doc.

"; +Document doc = Jsoup.parse(html); +``` + +> **说明** +> +> `parse(String html, String baseUri)` 这方法能够将输入的 HTML 解析为一个新的文档 (Document),参数 baseUri 是用来将相对 URL 转成绝对 URL,并指定从哪个网站获取文档。如这个方法不适用,你可以使用 `parse(String html)` 方法来解析成 HTML 字符串如上面的示例。 +> +> 只要解析的不是空字符串,就能返回一个结构合理的文档,其中包含(至少) 一个 head 和一个 body 元素。 +> +> 一旦拥有了一个 Document,你就可以使用 Document 中适当的方法或它父类 `Element`和`Node`中的方法来取得相关数据。 + +### 解析一个 body 片断 + +**问题** + +假如你有一个 HTML 片断 (比如. 一个 `div` 包含一对 `p` 标签; 一个不完整的 HTML 文档) 想对它进行解析。这个 HTML 片断可以是用户提交的一条评论或在一个 CMS 页面中编辑 body 部分。 + +**办法** + +使用`Jsoup.parseBodyFragment(String html)`方法. + +``` +String html = "

Lorem ipsum.

"; +Document doc = Jsoup.parseBodyFragment(html); +Element body = doc.body(); +``` + +> **说明** +> +> `parseBodyFragment` 方法创建一个空壳的文档,并插入解析过的 HTML 到`body`元素中。假如你使用正常的 `Jsoup.parse(String html)` 方法,通常你也可以得到相同的结果,但是明确将用户输入作为 body 片段处理,以确保用户所提供的任何糟糕的 HTML 都将被解析成 body 元素。 +> +> `Document.body()` 方法能够取得文档 body 元素的所有子元素,与 `doc.getElementsByTag("body")`相同。 + +#### 保证安全 Stay safe + +假如你可以让用户输入 HTML 内容,那么要小心避免跨站脚本攻击。利用基于 `Whitelist` 的清除器和 `clean(String bodyHtml, Whitelist whitelist)`方法来清除用户输入的恶意内容。 + +### 从 URL 加载一个文档 + +使用 `Jsoup.connect(String url)`方法 + +```java +Document doc = Jsoup.connect("http://example.com/").get(); +``` + +> **说明** +> +> `connect(String url)` 方法创建一个新的 `Connection`, 和 `get()` 取得和解析一个 HTML 文件。如果从该 URL 获取 HTML 时发生错误,便会抛出 IOException,应适当处理。 + +`Connection` 接口还提供一个方法链来解决特殊请求,具体如下: + +```java +Document doc = Jsoup.connect("http://example.com") + .data("query", "Java") + .userAgent("Mozilla") + .cookie("auth", "token") + .timeout(3000) + .post(); +``` + +### 从一个文件加载一个文档 + +可以使用静态 `Jsoup.parse(File in, String charsetName, String baseUri)` 方法 + +```java +File input = new File("/tmp/input.html"); +Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/"); +``` + +> **说明** +> +> `parse(File in, String charsetName, String baseUri)` 这个方法用来加载和解析一个 HTML 文件。如在加载文件的时候发生错误,将抛出 IOException,应作适当处理。 +> +> `baseUri` 参数用于解决文件中 URLs 是相对路径的问题。如果不需要可以传入一个空的字符串。 +> +> 另外还有一个方法`parse(File in, String charsetName)` ,它使用文件的路径做为 `baseUri`。 这个方法适用于如果被解析文件位于网站的本地文件系统,且相关链接也指向该文件系统。 + +## 解析 + +### 使用 DOM 方法来遍历一个文档 + +**问题** + +你有一个 HTML 文档要从中提取数据,并了解这个 HTML 文档的结构。 + +**方法** + +将 HTML 解析成一个`Document`之后,就可以使用类似于 DOM 的方法进行操作。示例代码: + +```java +File input = new File("/tmp/input.html"); +Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/"); + +Element content = doc.getElementById("content"); +Elements links = content.getElementsByTag("a"); +for (Element link : links) { + String linkHref = link.attr("href"); + String linkText = link.text(); +} +``` + +**说明** + +`Elements` 这个对象提供了一系列类似于 DOM 的方法来查找元素,抽取并处理其中的数据。 + +具体如下: + +#### 查找元素 + +- `getElementById(String id)` +- `getElementsByTag(String tag)` +- `getElementsByClass(String className)` +- `getElementsByAttribute(String key)` (and related methods) +- Element siblings: `siblingElements()`, `firstElementSibling()`, `lastElementSibling()`;`nextElementSibling()`, `previousElementSibling()` +- Graph: `parent()`, `children()`, `child(int index)` + +#### 元素数据 + +- `attr(String key)`获取属性`attr(String key, String value)`设置属性 +- `attributes()`获取所有属性 +- `id()`, `className()` and `classNames()` +- `text()`获取文本内容`text(String value)` 设置文本内容 +- `html()`获取元素内 HTML`html(String value)`设置元素内的 HTML 内容 +- `outerHtml()`获取元素外 HTML 内容 +- `data()`获取数据内容(例如:script 和 style 标签) +- `tag()` and `tagName()` + +#### 操作 HTML 和文本 + +- `append(String html)`, `prepend(String html)` +- `appendText(String text)`, `prependText(String text)` +- `appendElement(String tagName)`, `prependElement(String tagName)` +- `html(String value)` + +### 使用选择器语法来查找元素 + +**问题** + +你想使用类似于 CSS 或 jQuery 的语法来查找和操作元素。 + +**方法** + +可以使用`Element.select(String selector)` 和 `Elements.select(String selector)` 方法实现: + +```java +File input = new File("/tmp/input.html"); +Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/"); + +Elements links = doc.select("a[href]"); //带有href属性的a元素 +Elements pngs = doc.select("img[src$=.png]"); + //扩展名为.png的图片 + +Element masthead = doc.select("div.masthead").first(); + //class等于masthead的div标签 + +Elements resultLinks = doc.select("h3.r > a"); //在h3元素之后的a元素 +``` + +> **说明** +> +> jsoup elements 对象支持类似于[CSS](http://www.w3.org/TR/2009/PR-css3-selectors-20091215/) (或[jquery](http://jquery.com/))的选择器语法,来实现非常强大和灵活的查找功能。. +> +> 这个`select` 方法在`Document`, `Element`,或`Elements`对象中都可以使用。且是上下文相关的,因此可实现指定元素的过滤,或者链式选择访问。 +> +> Select 方法将返回一个`Elements`集合,并提供一组方法来抽取和处理结果。 + +#### Selector 选择器概述 + +- `tagname`: 通过标签查找元素,比如:`a` +- `ns|tag`: 通过标签在命名空间查找元素,比如:可以用 `fb|name` 语法来查找 `` 元素 +- `#id`: 通过 ID 查找元素,比如:`#logo` +- `.class`: 通过 class 名称查找元素,比如:`.masthead` +- `[attribute]`: 利用属性查找元素,比如:`[href]` +- `[^attr]`: 利用属性名前缀来查找元素,比如:可以用`[^data-]` 来查找带有 HTML5 Dataset 属性的元素 +- `[attr=value]`: 利用属性值来查找元素,比如:`[width=500]` +- `[attr^=value]`, `[attr$=value]`, `[attr*=value]`: 利用匹配属性值开头、结尾或包含属性值来查找元素,比如:`[href*=/path/]` +- `[attr\~=regex]`: 利用属性值匹配正则表达式来查找元素,比如: `img[src\~=(?i)\.(png|jpe?g)]` +- `*`: 这个符号将匹配所有元素 + +#### Selector 选择器组合使用 + +- `el##id`: 元素+ID,比如: `div##logo` +- `el.class`: 元素+class,比如: `div.masthead` +- `el[attr]`: 元素+class,比如: `a[href]` +- 任意组合,比如:`a[href].highlight` +- `ancestor child`: 查找某个元素下子元素,比如:可以用`.body p` 查找在"body"元素下的所有`p`元素 +- `parent > child`: 查找某个父元素下的直接子元素,比如:可以用`div.content > p` 查找 `p` 元素,也可以用`body > *` 查找 body 标签下所有直接子元素 +- `siblingA + siblingB`: 查找在 A 元素之前第一个同级元素 B,比如:`div.head + div` +- `siblingA \~ siblingX`: 查找 A 元素之前的同级 X 元素,比如:`h1 \~ p` +- `el, el, el`:多个选择器组合,查找匹配任一选择器的唯一元素,例如:`div.masthead, div.logo` + +#### 伪选择器 selectors + +- `:lt(n)`: 查找哪些元素的同级索引值(它的位置在 DOM 树中是相对于它的父节点)小于 n,比如:`td:lt(3)` 表示小于三列的元素 +- `:gt(n)`:查找哪些元素的同级索引值大于`n``,比如`: `div p:gt(2)`表示哪些 div 中有包含 2 个以上的 p 元素 +- `:eq(n)`: 查找哪些元素的同级索引值与`n`相等,比如:`form input:eq(1)`表示包含一个 input 标签的 Form 元素 +- `:has(seletor)`: 查找匹配选择器包含元素的元素,比如:`div:has(p)`表示哪些 div 包含了 p 元素 +- `:not(selector)`: 查找与选择器不匹配的元素,比如: `div:not(.logo)` 表示不包含 class=logo 元素的所有 div 列表 +- `:contains(text)`: 查找包含给定文本的元素,搜索不区分大不写,比如: `p:contains(jsoup)` +- `:containsOwn(text)`: 查找直接包含给定文本的元素 +- `:matches(regex)`: 查找哪些元素的文本匹配指定的正则表达式,比如:`div:matches((?i)login)` +- `:matchesOwn(regex)`: 查找自身包含文本匹配指定正则表达式的元素 +- 注意:上述伪选择器索引是从 0 开始的,也就是说第一个元素索引值为 0,第二个元素 index 为 1 等 + +可以查看`Selector` API 参考来了解更详细的内容 + +### 从元素抽取属性,文本和 HTML + +**问题** + +在解析获得一个 Document 实例对象,并查找到一些元素之后,你希望取得在这些元素中的数据。 + +**方法** + +- 要取得一个属性的值,可以使用`Node.attr(String key)` 方法 +- 对于一个元素中的文本,可以使用`Element.text()`方法 +- 对于要取得元素或属性中的 HTML 内容,可以使用`Element.html()`, 或 `Node.outerHtml()`方法 + +示例: + +```java +String html = "

An example link.

"; +Document doc = Jsoup.parse(html);//解析HTML字符串返回一个Document实现 +Element link = doc.select("a").first();//查找第一个a元素 + +String text = doc.body().text(); // "An example link"//取得字符串中的文本 +String linkHref = link.attr("href"); // "http://example.com/"//取得链接地址 +String linkText = link.text(); // "example""//取得链接地址中的文本 + +String linkOuterH = link.outerHtml(); + // "example" +String linkInnerH = link.html(); // "example"//取得链接内的html内容 +``` + +> **说明** +> +> 上述方法是元素数据访问的核心办法。此外还其它一些方法可以使用: +> +> - `Element.id()` +> - `Element.tagName()` +> - `Element.className()` and `Element.hasClass(String className)` +> +> 这些访问器方法都有相应的 setter 方法来更改数据 + +**参见** + +- `Element`和`Elements`集合类的参考文档 +- [URLs 处理](http://www.open-open.com/jsoup/working-with-urls.htm) +- [使用 CSS 选择器语法来查找元素](http://www.open-open.com/jsoup/selector-syntax.htm) + +### 处理 URLs + +**问题** + +你有一个包含相对 URLs 路径的 HTML 文档,需要将这些相对路径转换成绝对路径的 URLs。 + +**方法** + +1. 在你解析文档时确保有指定`base URI`,然后 +2. 使用 `abs:` 属性前缀来取得包含`base URI`的绝对路径。代码如下: + +```java +Document doc = Jsoup.connect("http://www.open-open.com").get(); + +Element link = doc.select("a").first(); +String relHref = link.attr("href"); // == "/" +String absHref = link.attr("abs:href"); // "http://www.open-open.com/" + +``` + +> **说明** +> +> 在 HTML 元素中,URLs 经常写成相对于文档位置的相对路径: `...`. 当你使用 `Node.attr(String key)` 方法来取得 a 元素的 href 属性时,它将直接返回在 HTML 源码中指定定的值。 +> +> 假如你需要取得一个绝对路径,需要在属性名前加 `abs:` 前缀。这样就可以返回包含根路径的 URL 地址`attr("abs:href")` +> +> 因此,在解析 HTML 文档时,定义 base URI 非常重要。 +> +> 如果你不想使用`abs:` 前缀,还有一个方法能够实现同样的功能 `Node.absUrl(String key)`。 + +## 数据修改 + +### 设置属性的值 + +**问题** + +在你解析一个 `Document` 之后可能想修改其中的某些属性值,然后再保存到磁盘或都输出到前台页面。 + +**方法** + +可以使用属性设置方法 `Element.attr(String key, String value)`, 和 `Elements.attr(String key, String value)`. + +假如你需要修改一个元素的 `class` 属性,可以使用 `Element.addClass(String className)` 和`Element.removeClass(String className)` 方法。 + +`Elements` 提供了批量操作元素属性和 class 的方法,比如:要为 div 中的每一个 a 元素都添加一个`rel="nofollow"` 可以使用如下方法: + +``` +doc.select("div.comments a").attr("rel", "nofollow"); + +``` + +> **说明** +> +> 与`Element`中的其它方法一样,`attr` 方法也是返回当 `Element` (或在使用选择器是返回 `Elements`集合)。这样能够很方便使用方法连用的书写方式。比如: +> +> ``` +> doc.select("div.masthead").attr("title", "jsoup").addClass("round-box"); +> ``` + +### 设置一个元素的 HTML 内容 + +**问题** + +你需要一个元素中的 HTML 内容 + +**方法** + +可以使用`Element`中的 HTML 设置方法具体如下: + +```java +Element div = doc.select("div").first(); //
+div.html("

lorem ipsum

"); //

lorem ipsum

+div.prepend("

First

");//在div前添加html内容 +div.append("

Last

");//在div之后添加html内容 +// 添完后的结果:

First

lorem ipsum

Last

+ +Element span = doc.select("span").first(); // One +span.wrap("
  • "); +// 添完后的结果:
  • One
  • +``` + +> **说明** +> +> - `Element.html(String html)` 这个方法将先清除元素中的 HTML 内容,然后用传入的 HTML 代替。 +> - `Element.prepend(String first)` 和 `Element.append(String last)` 方法用于在分别在元素内部 HTML 的前面和后面添加 HTML 内容 +> - `Element.wrap(String around)` 对元素包裹一个外部 HTML 内容。 +> +> **参见** +> +> 可以查看 API 参考文档中 `Element.prependElement(String tag)`和`Element.appendElement(String tag)` 方法来创建新的元素并作为文档的子元素插入其中。 + +### 设置元素的文本内容 + +**问题** + +你需要修改一个 HTML 文档中的文本内容 + +**方法** + +可以使用`Element`的设置方法:: + +``` +Element div = doc.select("div").first(); //
    +div.text("five > four"); //
    five > four
    +div.prepend("First "); +div.append(" Last"); +// now:
    First five > four Last
    +``` + +> **说明** +> +> 文本设置方法与 [HTML setter](http://jsoup.org/cookbook/modifying-data/set-html) 方法一样: +> +> - `Element.text(String text)` 将清除一个元素中的内部 HTML 内容,然后提供的文本进行代替 +> - `Element.prepend(String first)` 和 `Element.append(String last)` 将分别在元素的内部 html 前后添加文本节点。 +> +> 对于传入的文本如果含有像 `<`, `>` 等这样的字符,将以文本处理,而非 HTML。 + +## HTML 清理 + +### 消除不受信任的 HTML (来防止 XSS 攻击) + +**问题** + +在做网站的时候,经常会提供用户评论的功能。有些不怀好意的用户,会搞一些脚本到评论内容中,而这些脚本可能会破坏整个页面的行为,更严重的是获取一些机要信息,此时需要清理该 HTML,以避免跨站脚本[cross-site scripting](http://en.wikipedia.org/wiki/Cross-site_scripting)攻击(XSS)。 + +**方法** + +使用 jsoup HTML `Cleaner` 方法进行清除,但需要指定一个可配置的 `Whitelist`。 + +```java +String unsafe = + "

    Link

    "; +String safe = Jsoup.clean(unsafe, Whitelist.basic()); +// now:

    Link

    +``` + +**说明** + +XSS 又叫 CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往 Web 页面里插入恶意 html 代码,当用户浏览该页之时,嵌入其中 Web 里面的 html 代码会被执行,从而达到恶意攻击用户的特殊目的。XSS 属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。所以我们经常只让用户输入纯文本的内容,但这样用户体验就比较差了。 + +一个更好的解决方法就是使用一个富文本编辑器 WYSIWYG 如 [CKEditor](http://ckeditor.com/) 和 [TinyMCE](http://tinymce.moxiecode.com/)。这些可以输出 HTML 并能够让用户可视化编辑。虽然他们可以在客户端进行校验,但是这样还不够安全,需要在服务器端进行校验并清除有害的 HTML 代码,这样才能确保输入到你网站的 HTML 是安全的。否则,攻击者能够绕过客户端的 Javascript 验证,并注入不安全的 HMTL 直接进入您的网站。 + +jsoup 的 whitelist 清理器能够在服务器端对用户输入的 HTML 进行过滤,只输出一些安全的标签和属性。 + +jsoup 提供了一系列的 `Whitelist` 基本配置,能够满足大多数要求;但如有必要,也可以进行修改,不过要小心。 + +这个 cleaner 非常好用不仅可以避免 XSS 攻击,还可以限制用户可以输入的标签范围。 + +**参见** + +- 参阅[XSS cheat sheet](http://ha.ckers.org/xss.html) ,有一个例子可以了解为什么不能使用正则表达式,而采用安全的 whitelist parser-based 清理器才是正确的选择。 +- 参阅`Cleaner` ,了解如何返回一个 `Document` 对象,而不是字符串 +- 参阅`Whitelist`,了解如何创建一个自定义的 whitelist +- [nofollow](http://en.wikipedia.org/wiki/Nofollow) 链接属性了解 + +## 参考 + +- [jsoup github 托管代码](https://github.com/jhy/jsoup) + +- [jsoup Cookbook](https://jsoup.org/cookbook/) + +- [jsoup Cookbook(中文版)](http://www.open-open.com/jsoup/) + +- [不错的 jsoup 学习笔记](https://github.com/code4craft/jsoup-learning) diff --git a/docs/lib/reflections.md b/docs/lib/reflections.md new file mode 100644 index 00000000..e24c081d --- /dev/null +++ b/docs/lib/reflections.md @@ -0,0 +1,100 @@ +# Reflections 应用指南 + + + +- [使用](#使用) +- [ReflectionUtils](#reflectionutils) + + + +引入 + +```xml + + org.reflections + reflections + 0.9.11 + +``` + +典型应用 + +```java +Reflections reflections = new Reflections("my.project"); +Set> subTypes = reflections.getSubTypesOf(SomeType.class); +Set> annotated = reflections.getTypesAnnotatedWith(SomeAnnotation.class); +``` + +## 使用 + +基本上,使用 Reflections 首先使用 urls 和 scanners 对其进行实例化 + +```java +//scan urls that contain 'my.package', include inputs starting with 'my.package', use the default scanners +Reflections reflections = new Reflections("my.package"); + +//or using ConfigurationBuilder +new Reflections(new ConfigurationBuilder() + .setUrls(ClasspathHelper.forPackage("my.project.prefix")) + .setScanners(new SubTypesScanner(), + new TypeAnnotationsScanner().filterResultsBy(optionalFilter), ...), + .filterInputsBy(new FilterBuilder().includePackage("my.project.prefix")) + ...); +``` + +然后,使用方便的查询方法 + +```java +// 子类型扫描 +Set> modules = + reflections.getSubTypesOf(com.google.inject.Module.class); +// 类型注解扫描 +Set> singletons = + reflections.getTypesAnnotatedWith(javax.inject.Singleton.class); +// 资源扫描 +Set properties = + reflections.getResources(Pattern.compile(".*\\.properties")); +// 方法注解扫描 +Set resources = + reflections.getMethodsAnnotatedWith(javax.ws.rs.Path.class); +Set injectables = + reflections.getConstructorsAnnotatedWith(javax.inject.Inject.class); +// 字段注解扫描 +Set ids = + reflections.getFieldsAnnotatedWith(javax.persistence.Id.class); +// 方法参数扫描 +Set someMethods = + reflections.getMethodsMatchParams(long.class, int.class); +Set voidMethods = + reflections.getMethodsReturn(void.class); +Set pathParamMethods = + reflections.getMethodsWithAnyParamAnnotated(PathParam.class); +// 方法参数名扫描 +List parameterNames = + reflections.getMethodParamNames(Method.class) +// 方法使用扫描 +Set usages = + reflections.getMethodUsages(Method.class) +``` + +说明: + +- 如果未配置扫描程序,则将使用默认值 - SubTypesScanner 和 TypeAnnotationsScanner。 +- 还可以配置类加载器,它将用于从名称中解析运行时类。 +- Reflection 默认情况下会扩展超类型。 这解决了传输 URL 不被扫描的一些问题。 + +## ReflectionUtils + +```java +import static org.reflections.ReflectionUtils.*; + +Set getters = getAllMethods(someClass, + withModifier(Modifier.PUBLIC), withPrefix("get"), withParametersCount(0)); + +//or +Set listMethodsFromCollectionToBoolean = + getAllMethods(List.class, + withParametersAssignableTo(Collection.class), withReturnType(boolean.class)); + +Set fields = getAllFields(SomeClass.class, withAnnotation(annotation), withTypeAssignableTo(type)); +``` diff --git a/docs/lib/serialized/README.md b/docs/lib/serialized/README.md new file mode 100644 index 00000000..2552c5dd --- /dev/null +++ b/docs/lib/serialized/README.md @@ -0,0 +1,23 @@ +# Java 序列化库 + +Java 官方的序列化存在许多问题,因此,很多人更愿意使用优秀的第三方序列化工具来替代 Java 自身的序列化机制。 如果想详细了解 Java 自身序列化方式,可以参考:[深入理解 Java 序列化](https://github.com/dunwu/javacore/blob/master/docs/io/java-serialization.md) + +序列化库技术选型: + +- [thrift](https://github.com/apache/thrift)、[protobuf](https://github.com/protocolbuffers/protobuf) - 适用于对性能敏感,对开发体验要求不高的内部系统。 +- [hessian](http://hessian.caucho.com/doc/hessian-overview.xtp) - 适用于对开发体验敏感,性能有要求的内外部系统。 +- [jackson](https://github.com/FasterXML/jackson)、[gson](https://github.com/google/gson)、[fastjson](https://github.com/alibaba/fastjson) - 适用于对序列化后的数据要求有良好的可读性(转为 json 、xml 形式)。 + +## 内容 + +- [JSON](javalib-json.md) - Fastjson、Jackson、Gson +- [二进制](javalib-binary.md) - Protobuf、Thrift、Hessian、Kryo、FST + +## 资料 + +- [Thrift Github](https://github.com/apache/thrift) +- [Protobuf Github](https://github.com/protocolbuffers/protobuf) +- [Hessian 官网](http://hessian.caucho.com/doc/hessian-overview.xtp) +- [Fastjson Github](https://github.com/alibaba/fastjson) +- [Jackson Github](https://github.com/FasterXML/jackson) +- [Gson Github](https://github.com/google/gson) diff --git a/docs/lib/serialized/javalib-binary.md b/docs/lib/serialized/javalib-binary.md new file mode 100644 index 00000000..60d762d0 --- /dev/null +++ b/docs/lib/serialized/javalib-binary.md @@ -0,0 +1,338 @@ +# Java 二进制序列化库 + +## 简介 + +### 为什么需要二进制序列化库 + +原因很简单,就是 Java 默认的序列化机制(`ObjectInputStream` 和 `ObjectOutputStream`)具有很多缺点。 + +> 不了解 Java 默认的序列化机制,可以参考:[Java 序列化](https://github.com/dunwu/javacore/blob/master/docs/io/Java序列化.md) + +Java 自身的序列化方式具有以下缺点: + +- **无法跨语言使用**。这点最为致命,对于很多需要跨语言通信的异构系统来说,不能跨语言序列化,即意味着完全无法通信(彼此数据不能识别,当然无法交互了)。 +- **序列化的性能不高**。序列化后的数据体积较大,这大大影响存储和传输的效率。 +- 序列化一定需要实现 `Serializable` 接口。 +- 需要关注 `serialVersionUID`。 + +引入二进制序列化库就是为了解决这些问题,这在 RPC 应用中尤为常见。 + +### 主流序列化库简介 + +#### Protobuf + +[Protobuf](https://developers.google.com/protocol-buffers/) 是 Google 开发的结构序列化库。 + +它具有以下特性: + +- 结构化数据存储格式(xml,json 等) +- 高性能编解码技术 +- 语言和平台无关,扩展性好 +- 支持 Java, C++, Python 三种语言 + +#### Thrift + +> [Thrift](https://github.com/apache/thrift) 是 apache 开源项目,是一个点对点的 RPC 实现。 + +它具有以下特性: + +- 支持多种语言(目前支持 28 种语言,如:C++、go、Java、Php、Python、Ruby 等等)。 +- 使用了组建大型数据交换及存储工具,对于大型系统中的内部数据传输,相对于 Json 和 xml 在性能上和传输大小上都有明显的优势。 +- 支持三种比较典型的编码方式(通用二进制编码,压缩二进制编码,优化的可选字段压缩编解码)。 + +#### Hessian + +> [Hessian](http://hessian.caucho.com/) 是一种二进制传输协议。 +> +> RPC 框架 Dubbo 就支持 Thrift 和 Hession。 + +它具有以下特性: + +- 支持多种语言。如:Java、Python、C++、C#、PHP、Ruby 等。 +- 相对其他二进制序列化库较慢。 + +#### Kryo + +> [Kryo](https://github.com/EsotericSoftware/kryo) 是用于 Java 的快速高效的二进制对象图序列化框架。Kryo 还可以执行自动的深拷贝和浅拷贝。 这是从对象到对象的直接复制,而不是从对象到字节的复制。 + +它具有以下特性: + +- 速度快,序列化体积小 +- 官方不支持 Java 以外的其他语言 + +#### FST + +> [FST](https://github.com/RuedigerMoeller/fast-serialization) 是一个 Java 实现二进制序列化库。 + +它具有以下特性: + +- 近乎于 100% 兼容 JDK 序列化,且比 JDK 原序列化方式快 10 倍 +- 2.17 开始与 Android 兼容 +- (可选)2.29 开始支持将任何可序列化的对象图编码/解码为 JSON(包括共享引用) + +#### 小结 + +了解了以上这些常见的二进制序列化库的特性。在技术选型时,我们就可以做到有的放矢。 + +**(1)选型参考依据** + +对于二进制序列化库,我们的选型考量一般有以下几点: + +- **是否支持跨语言** + - 根据业务实际需求来决定。一般来说,支持跨语言,为了兼容,使用复杂度上一般会更高一些。 +- **序列化、反序列化的性能** +- **类库是否轻量化,API 是否简单易懂** + +**(2)选型建议** + +- 如果需要跨语言通信,那么可以考虑:Protobuf、Thrift、Hession。 + + - [thrift](https://github.com/apache/thrift)、[protobuf](https://github.com/protocolbuffers/protobuf) - 适用于对性能敏感,对开发体验要求不高的内部系统。 + - [hessian](http://hessian.caucho.com/doc/hessian-overview.xtp) - 适用于对开发体验敏感,性能有要求的内外部系统。 + +- 如果不需要跨语言通信,可以考虑:[Kryo](https://github.com/EsotericSoftware/kryo) 和 [FST](https://github.com/RuedigerMoeller/fast-serialization),性能不错,且 API 十分简单。 + +## FST 应用 + +### 引入依赖 + +```xml + + de.ruedigermoeller + fst + 2.56 + +``` + +### FST API + +示例: + +```java +import org.nustaq.serialization.FSTConfiguration; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.Base64; + +public class FstDemo { + + private static FSTConfiguration DEFAULT_CONFIG = FSTConfiguration.createDefaultConfiguration(); + + /** + * 将对象序列化为 byte 数组 + * + * @param obj 任意对象 + * @param 对象的类型 + * @return 序列化后的 byte 数组 + */ + public static byte[] writeToBytes(T obj) { + return DEFAULT_CONFIG.asByteArray(obj); + } + + /** + * 将对象序列化为 byte 数组后,再使用 Base64 编码 + * + * @param obj 任意对象 + * @param 对象的类型 + * @return 序列化后的字符串 + */ + public static String writeToString(T obj) { + byte[] bytes = writeToBytes(obj); + return new String(Base64.getEncoder().encode(bytes), StandardCharsets.UTF_8); + } + + /** + * 将 byte 数组反序列化为原对象 + * + * @param bytes {@link #writeToBytes} 方法序列化后的 byte 数组 + * @param clazz 原对象的类型 + * @param 原对象的类型 + * @return 原对象 + */ + public static T readFromBytes(byte[] bytes, Class clazz) throws IOException { + Object obj = DEFAULT_CONFIG.asObject(bytes); + if (clazz.isInstance(obj)) { + return (T) obj; + } else { + throw new IOException("derialize failed"); + } + } + + /** + * 将字符串反序列化为原对象,先使用 Base64 解码 + * + * @param str {@link #writeToString} 方法序列化后的字符串 + * @param clazz 原对象的类型 + * @param 原对象的类型 + * @return 原对象 + */ + public static T readFromString(String str, Class clazz) throws IOException { + byte[] bytes = str.getBytes(StandardCharsets.UTF_8); + return readFromBytes(Base64.getDecoder().decode(bytes), clazz); + } + +} +``` + +测试: + +```java +long begin = System.currentTimeMillis(); +for (int i = 0; i < BATCH_SIZE; i++) { + TestBean oldBean = BeanUtils.initJdk8Bean(); + byte[] bytes = FstDemo.writeToBytes(oldBean); + TestBean newBean = FstDemo.readFromBytes(bytes, TestBean.class); +} +long end = System.currentTimeMillis(); +System.out.printf("FST 序列化/反序列化耗时:%s", (end - begin)); +``` + +## Kryo 应用 + +### 引入依赖 + +```xml + + com.esotericsoftware + kryo + 5.0.0-RC4 + +``` + +### Kryo API + +示例: + +```java +import com.esotericsoftware.kryo.Kryo; +import com.esotericsoftware.kryo.io.Input; +import com.esotericsoftware.kryo.io.Output; +import com.esotericsoftware.kryo.util.DefaultInstantiatorStrategy; +import org.objenesis.strategy.StdInstantiatorStrategy; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.nio.charset.StandardCharsets; +import java.util.Base64; + +public class KryoDemo { + + // 每个线程的 Kryo 实例 + private static final ThreadLocal kryoLocal = ThreadLocal.withInitial(() -> { + Kryo kryo = new Kryo(); + + /** + * 不要轻易改变这里的配置!更改之后,序列化的格式就会发生变化, + * 上线的同时就必须清除 Redis 里的所有缓存, + * 否则那些缓存再回来反序列化的时候,就会报错 + */ + //支持对象循环引用(否则会栈溢出) + kryo.setReferences(true); //默认值就是 true,添加此行的目的是为了提醒维护者,不要改变这个配置 + + //不强制要求注册类(注册行为无法保证多个 JVM 内同一个类的注册编号相同;而且业务系统中大量的 Class 也难以一一注册) + kryo.setRegistrationRequired(false); //默认值就是 false,添加此行的目的是为了提醒维护者,不要改变这个配置 + + //Fix the NPE bug when deserializing Collections. + ((DefaultInstantiatorStrategy) kryo.getInstantiatorStrategy()) + .setFallbackInstantiatorStrategy(new StdInstantiatorStrategy()); + + return kryo; + }); + + /** + * 获得当前线程的 Kryo 实例 + * + * @return 当前线程的 Kryo 实例 + */ + public static Kryo getInstance() { + return kryoLocal.get(); + } + + /** + * 将对象序列化为 byte 数组 + * + * @param obj 任意对象 + * @param 对象的类型 + * @return 序列化后的 byte 数组 + */ + public static byte[] writeToBytes(T obj) { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + Output output = new Output(byteArrayOutputStream); + + Kryo kryo = getInstance(); + kryo.writeObject(output, obj); + output.flush(); + + return byteArrayOutputStream.toByteArray(); + } + + /** + * 将对象序列化为 byte 数组后,再使用 Base64 编码 + * + * @param obj 任意对象 + * @param 对象的类型 + * @return 序列化后的字符串 + */ + public static String writeToString(T obj) { + byte[] bytes = writeToBytes(obj); + return new String(Base64.getEncoder().encode(bytes), StandardCharsets.UTF_8); + } + + /** + * 将 byte 数组反序列化为原对象 + * + * @param bytes {@link #writeToBytes} 方法序列化后的 byte 数组 + * @param clazz 原对象的类型 + * @param 原对象的类型 + * @return 原对象 + */ + @SuppressWarnings("unchecked") + public static T readFromBytes(byte[] bytes, Class clazz) { + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); + Input input = new Input(byteArrayInputStream); + + Kryo kryo = getInstance(); + return (T) kryo.readObject(input, clazz); + } + + /** + * 将字符串反序列化为原对象,先使用 Base64 解码 + * + * @param str {@link #writeToString} 方法序列化后的字符串 + * @param clazz 原对象的类型 + * @param 原对象的类型 + * @return 原对象 + */ + public static T readFromString(String str, Class clazz) { + byte[] bytes = str.getBytes(StandardCharsets.UTF_8); + return readFromBytes(Base64.getDecoder().decode(bytes), clazz); + } + +} +``` + +测试: + +```java +long begin = System.currentTimeMillis(); +for (int i = 0; i < BATCH_SIZE; i++) { + TestBean oldBean = BeanUtils.initJdk8Bean(); + byte[] bytes = KryoDemo.writeToBytes(oldBean); + TestBean newBean = KryoDemo.readFromBytes(bytes, TestBean.class); +} +long end = System.currentTimeMillis(); +System.out.printf("Kryo 序列化/反序列化耗时:%s", (end - begin)); +``` + +## 参考资料 + +- **官方** + - [Protobuf 官网](https://developers.google.com/protocol-buffers/) + - [Protobuf Github](https://github.com/protocolbuffers/protobuf) + - [Thrift Github](https://github.com/apache/thrift) + - [Kryo Github](https://github.com/EsotericSoftware/kryo) + - [Hessian 官网](http://hessian.caucho.com/) + - [FST Github](https://github.com/RuedigerMoeller/fast-serialization) +- **文章** + - [java 序列化框架对比](https://www.jianshu.com/p/937883b6b2e5) diff --git a/docs/lib/serialized/javalib-json.md b/docs/lib/serialized/javalib-json.md new file mode 100644 index 00000000..12145b5a --- /dev/null +++ b/docs/lib/serialized/javalib-json.md @@ -0,0 +1,495 @@ +# Java 和 JSON 序列化 + +> JSON(JavaScript Object Notation)是一种基于文本的数据交换格式。几乎所有的编程语言都有很好的库或第三方工具来提供基于 JSON 的 API 支持,因此你可以非常方便地使用任何自己喜欢的编程语言来处理 JSON 数据。 +> +> 本文主要从 Java 语言的角度来讲解 JSON 的应用。 + + + +- [1. JSON 简介](#1-json-简介) + - [1.1. JSON 是什么](#11-json-是什么) + - [1.2. JSON 标准](#12-json-标准) + - [1.3. JSON 优缺点](#13-json-优缺点) + - [1.4. JSON 工具](#14-json工具) + - [1.5. Java JSON 库](#15-java-json-库) + - [1.6. JSON 编码指南](#16-json-编码指南) +- [2. Fastjson 应用](#2-fastjson-应用) + - [2.1. 添加 maven 依赖](#21-添加-maven-依赖) + - [2.2. Fastjson API](#22-fastjson-api) + - [2.3. Fastjson 注解](#23-fastjson-注解) +- [3. Jackson 应用](#3-jackson-应用) + - [3.1. 添加 maven 依赖](#31-添加-maven-依赖) + - [3.2. Jackson API](#32-jackson-api) + - [3.3. Jackson 注解](#33-jackson-注解) +- [4. Gson 应用](#4-gson-应用) + - [4.1. 添加 maven 依赖](#41-添加-maven-依赖) + - [4.2. Gson API](#42-gson-api) + - [4.3. Gson 注解](#43-gson-注解) +- [5. 示例源码](#5-示例源码) +- [6. 参考资料](#6-参考资料) + + + +## 1. JSON 简介 + +### 1.1. JSON 是什么 + +JSON 起源于 1999 年的 [JS 语言规范 ECMA262 的一个子集](http://javascript.crockford.com/)(即 15.12 章节描述了格式与解析),后来 2003 年作为一个数据格式[ECMA404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf)(很囧的序号有不有?)发布。 +2006 年,作为 [rfc4627](http://www.ietf.org/rfc/rfc4627.txt) 发布,这时规范增加到 18 页,去掉没用的部分,十页不到。 + +JSON 的应用很广泛,这里有超过 100 种语言下的 JSON 库:[json.org](http://www.json.org/)。 + +更多的可以参考这里,[关于 json 的一切](https://github.com/burningtree/awesome-json)。 + +### 1.2. JSON 标准 + +这估计是最简单标准规范之一: + +- 只有两种结构:对象内的键值对集合结构和数组,对象用 `{}` 表示、内部是 `"key":"value"`,数组用 `[]` 表示,不同值用逗号分开 +- 基本数值有 7 个: `false` / `null` / `true` / `object` / `array` / `number` / `string` +- 再加上结构可以嵌套,进而可以用来表达复杂的数据 +- 一个简单实例: + +```json +{ + "Image": { + "Width": 800, + "Height": 600, + "Title": "View from 15th Floor", + "Thumbnail": { + "Url": "http://www.example.com/image/481989943", + "Height": 125, + "Width": "100" + }, + "IDs": [116, 943, 234, 38793] + } +} +``` + +> 扩展阅读: +> +> - - 图文并茂介绍 json 数据形式 +> +> - [json 的 RFC 文档](http://tools.ietf.org/html/rfc4627) + +### 1.3. JSON 优缺点 + +优点: + +- 基于纯文本,所以对于人类阅读是很友好的。 +- 规范简单,所以容易处理,开箱即用,特别是 JS 类的 ECMA 脚本里是内建支持的,可以直接作为对象使用。 +- 平台无关性,因为类型和结构都是平台无关的,而且好处理,容易实现不同语言的处理类库,可以作为多个不同异构系统之间的数据传输格式协议,特别是在 HTTP/REST 下的数据格式。 + +缺点: + +- 性能一般,文本表示的数据一般来说比二进制大得多,在数据传输上和解析处理上都要更影响性能。 +- 缺乏 schema,跟同是文本数据格式的 XML 比,在类型的严格性和丰富性上要差很多。XML 可以借由 XSD 或 DTD 来定义复杂的格式,并由此来验证 XML 文档是否符合格式要求,甚至进一步的,可以基于 XSD 来生成具体语言的操作代码,例如 apache xmlbeans。并且这些工具组合到一起,形成一套庞大的生态,例如基于 XML 可以实现 SOAP 和 WSDL,一系列的 ws-\*规范。但是我们也可以看到 JSON 在缺乏规范的情况下,实际上有更大一些的灵活性,特别是近年来 REST 的快速发展,已经有一些 schema 相关的发展(例如[理解 JSON Schema](https://spacetelescope.github.io/understanding-json-schema/index.html),[使用 JSON Schema](http://usingjsonschema.com/downloads/), [在线 schema 测试](http://azimi.me/json-schema-view/demo/demo.html)),也有类似于 WSDL 的[WADL](https://www.w3.org/Submission/wadl/)出现。 + +### 1.4. JSON 工具 + +- 使用 JSON 实现 RPC(类似 XML-RPC):[JSON-RPC](http://www.jsonrpc.org/) +- 使用 JSON 实现 path 查询操作(类似 XML-PATH):[JsonPATH](https://github.com/json-path/JsonPath) +- 在线查询工具:[JsonPATH](http://jsonpath.com/) + +- 格式化工具:[jsbeautifier](http://jsbeautifier.org/) +- chrome 插件:[5 个 Json View 插件](http://www.cnplugins.com/zhuanti/five-chrome-json-plugins.html) +- 在线 Mock: [在线 mock](https://www.easy-mock.com/) +- 其他 Mock:[SoapUI](https://www.soapui.org/rest-testing-mocking/rest-service-mocking.html)可以支持,SwaggerUI 也可以,[RestMock](https://github.com/andrzejchm/RESTMock)也可以。 + +### 1.5. Java JSON 库 + +Java 中比较流行的 JSON 库有: + +- [Fastjson](https://github.com/alibaba/fastjson) - 阿里巴巴开发的 JSON 库,性能十分优秀。 +- [Jackson](http://wiki.fasterxml.com/JacksonHome) - 社区十分活跃且更新速度很快。Spring 框架默认 JSON 库。 +- [Gson](https://github.com/google/gson) - 谷歌开发的 JSON 库,目前功能最全的 JSON 库 。 + +从性能上来看,一般情况下:Fastjson > Jackson > Gson + +### 1.6. JSON 编码指南 + +> 遵循好的设计与编码风格,能提前解决 80%的问题,个人推荐 Google JSON 风格指南。 +> +> - 英文版[Google JSON Style Guide](https://google.github.io/styleguide/jsoncstyleguide.xml): +> - 中文版[Google JSON 风格指南](https://github.com/darcyliu/google-styleguide/blob/master/JSONStyleGuide.md): + +简单摘录如下: + +- 属性名和值都是用双引号,不要把注释写到对象里面,对象数据要简洁 +- 不要随意结构化分组对象,推荐是用扁平化方式,层次不要太复杂 +- 命名方式要有意义,比如单复数表示 +- 驼峰式命名,遵循 Bean 规范 +- 使用版本来控制变更冲突 +- 对于一些关键字,不要拿来做 key +- 如果一个属性是可选的或者包含空值或 null 值,考虑从 JSON 中去掉该属性,除非它的存在有很强的语义原因 +- 序列化枚举类型时,使用 name 而不是 value +- 日期要用标准格式处理 +- 设计好通用的分页参数 +- 设计好异常处理 + +[JSON API](http://jsonapi.org.cn/format/)与 Google JSON 风格指南有很多可以相互参照之处。 + +[JSON API](http://jsonapi.org.cn/format/)是数据交互规范,用以定义客户端如何获取与修改资源,以及服务器如何响应对应请求。 + +JSON API 设计用来最小化请求的数量,以及客户端与服务器间传输的数据量。在高效实现的同时,无需牺牲可读性、灵活性和可发现性。 + +## 2. Fastjson 应用 + +### 2.1. 添加 maven 依赖 + +```xml + + com.alibaba + fastjson + x.x.x + +``` + +### 2.2. Fastjson API + +#### 定义 Bean + +**Group.java** + +```java +public class Group { + + private Long id; + private String name; + private List users = new ArrayList(); +} +``` + +**User.java** + +```java +public class User { + + private Long id; + private String name; +} +``` + +**初始化 Bean** + +```java +Group group = new Group(); +group.setId(0L); +group.setName("admin"); + +User guestUser = new User(); +guestUser.setId(2L); +guestUser.setName("guest"); + +User rootUser = new User(); +rootUser.setId(3L); +rootUser.setName("root"); + +group.addUser(guestUser); +group.addUser(rootUser); +``` + +#### 序列化 + +```java +String jsonString = JSON.toJSONString(group); +System.out.println(jsonString); +``` + +#### 反序列化 + +```java +Group bean = JSON.parseObject(jsonString, Group.class); +``` + +### 2.3. Fastjson 注解 + +#### `@JSONField` + +> 扩展阅读:更多 API 使用细节可以参考:[JSONField 用法](https://github.com/alibaba/fastjson/wiki/JSONField),这里介绍基本用法。 + +可以配置在属性(setter、getter)和字段(必须是 public field)上。 + +```java +@JSONField(name="ID") +public int getId() {return id;} + +// 配置date序列化和反序列使用yyyyMMdd日期格式 +@JSONField(format="yyyyMMdd") +public Date date1; + +// 不序列化 +@JSONField(serialize=false) +public Date date2; + +// 不反序列化 +@JSONField(deserialize=false) +public Date date3; + +// 按ordinal排序 +@JSONField(ordinal = 2) +private int f1; + +@JSONField(ordinal = 1) +private int f2; +``` + +#### `@JSONType` + +- 自定义序列化:[ObjectSerializer](https://github.com/alibaba/fastjson/wiki/JSONType_serializer) +- 子类型处理:[SeeAlso](https://github.com/alibaba/fastjson/wiki/JSONType_seeAlso_cn) + +JSONType.alphabetic 属性: fastjson 缺省时会使用字母序序列化,如果你是希望按照 java fields/getters 的自然顺序序列化,可以配置 JSONType.alphabetic,使用方法如下: + +```java +@JSONType(alphabetic = false) +public static class B { + public int f2; + public int f1; + public int f0; +} +``` + +## 3. Jackson 应用 + +> 扩展阅读:更多 API 使用细节可以参考 [jackson-databind 官方说明](https://github.com/FasterXML/jackson-databind) + +### 3.1. 添加 maven 依赖 + +```xml + + com.fasterxml.jackson.core + jackson-databind + 2.9.8 + +``` + +### 3.2. Jackson API + +#### 序列化 + +```java +ObjectMapper mapper = new ObjectMapper(); + +mapper.writeValue(new File("result.json"), myResultObject); +// or: +byte[] jsonBytes = mapper.writeValueAsBytes(myResultObject); +// or: +String jsonString = mapper.writeValueAsString(myResultObject); +``` + +#### 反序列化 + +```java +ObjectMapper mapper = new ObjectMapper(); + +MyValue value = mapper.readValue(new File("data.json"), MyValue.class); +// or: +value = mapper.readValue(new URL("http://some.com/api/entry.json"), MyValue.class); +// or: +value = mapper.readValue("{\"name\":\"Bob\", \"age\":13}", MyValue.class); +``` + +#### 容器的序列化和反序列化 + +```java +Person p = new Person("Tom", 20); +Person p2 = new Person("Jack", 22); +Person p3 = new Person("Mary", 18); + +List persons = new LinkedList<>(); +persons.add(p); +persons.add(p2); +persons.add(p3); + +Map map = new HashMap<>(); +map.put("persons", persons); + +String json = null; +try { + json = mapper.writeValueAsString(map); +} catch (JsonProcessingException e) { + e.printStackTrace(); +} +``` + +### 3.3. Jackson 注解 + +> 扩展阅读:更多注解使用细节可以参考 [jackson-annotations 官方说明](https://github.com/FasterXML/jackson-annotations/wiki/Jackson-Annotations) + +#### `@JsonProperty` + +```java +public class MyBean { + private String _name; + + // without annotation, we'd get "theName", but we want "name": + @JsonProperty("name") + public String getTheName() { return _name; } + + // note: it is enough to add annotation on just getter OR setter; + // so we can omit it here + public void setTheName(String n) { _name = n; } +} +``` + +#### `@JsonIgnoreProperties` 和 `@JsonIgnore` + +```java +// means that if we see "foo" or "bar" in JSON, they will be quietly skipped +// regardless of whether POJO has such properties +@JsonIgnoreProperties({ "foo", "bar" }) +public class MyBean { + // will not be written as JSON; nor assigned from JSON: + @JsonIgnore + public String internal; + + // no annotation, public field is read/written normally + public String external; + + @JsonIgnore + public void setCode(int c) { _code = c; } + + // note: will also be ignored because setter has annotation! + public int getCode() { return _code; } +} +``` + +#### `@JsonCreator` + +```java +public class CtorBean { + public final String name; + public final int age; + + @JsonCreator // constructor can be public, private, whatever + private CtorBean(@JsonProperty("name") String name, + @JsonProperty("age") int age) + { + this.name = name; + this.age = age; + } +} +``` + +#### `@JsonPropertyOrder` + +alphabetic 设为 true 表示,json 字段按自然顺序排列,默认为 false。 + +```java +@JsonPropertyOrder(alphabetic = true) +public class JacksonAnnotationBean {} +``` + +## 4. Gson 应用 + +> 详细内容可以参考官方文档:[Gson 用户指南](https://github.com/google/gson/blob/master/UserGuide.md) + +### 4.1. 添加 maven 依赖 + +```xml + + com.google.code.gson + gson + 2.8.6 + +``` + +### 4.2. Gson API + +#### 序列化 + +```java +Gson gson = new Gson(); +gson.toJson(1); // ==> 1 +gson.toJson("abcd"); // ==> "abcd" +gson.toJson(10L); // ==> 10 +int[] values = { 1 }; +gson.toJson(values); // ==> [1] +``` + +#### 反序列化 + +```java +int i1 = gson.fromJson("1", int.class); +Integer i2 = gson.fromJson("1", Integer.class); +Long l1 = gson.fromJson("1", Long.class); +Boolean b1 = gson.fromJson("false", Boolean.class); +String str = gson.fromJson("\"abc\"", String.class); +String[] anotherStr = gson.fromJson("[\"abc\"]", String[].class); +``` + +#### GsonBuilder + +`Gson` 实例可以通过 `GsonBuilder` 来定制实例化,以控制其序列化、反序列化行为。 + +```java +Gson gson = new GsonBuilder() + .setPrettyPrinting() + .setDateFormat("yyyy-MM-dd HH:mm:ss") + .excludeFieldsWithModifiers(Modifier.STATIC, Modifier.TRANSIENT, Modifier.VOLATILE) + .create(); +``` + +### 4.3. Gson 注解 + +#### `@Since` + +[`@Since`](https://github.com/google/gson/blob/master/gson/src/main/java/com/google/gson/annotations/Since.java) 用于控制对象的序列化版本。示例: + +```java +public class VersionedClass { + @Since(1.1) private final String newerField; + @Since(1.0) private final String newField; + private final String field; + + public VersionedClass() { + this.newerField = "newer"; + this.newField = "new"; + this.field = "old"; + } +} + +VersionedClass versionedObject = new VersionedClass(); +Gson gson = new GsonBuilder().setVersion(1.0).create(); +String jsonOutput = gson.toJson(versionedObject); +System.out.println(jsonOutput); +System.out.println(); + +gson = new Gson(); +jsonOutput = gson.toJson(versionedObject); +System.out.println(jsonOutput); +``` + +#### `@SerializedName` + +`@SerializedName` 用于将类成员按照指定名称序列化、反序列化。示例: + +```java +private class SomeObject { + @SerializedName("custom_naming") private final String someField; + private final String someOtherField; + + public SomeObject(String a, String b) { + this.someField = a; + this.someOtherField = b; + } +} +``` + +## 5. 示例源码 + +> 示例源码:[javalib-io-json](https://github.com/dunwu/java-tutorial/tree/master/javalib-io-json) + +## 6. 参考资料 + +- **官方** + - [Fastjson Github](https://github.com/alibaba/fastjson) + - [Gson Github](https://github.com/google/gson) + - [jackson 官方文档](https://github.com/FasterXML/jackson-docs) + - [jackson-databind](https://github.com/FasterXML/jackson-databind) +- **文章** + - + - [json 的 RFC 文档](http://tools.ietf.org/html/rfc4627) + - [JSON 最佳实践](https://kimmking.github.io/2017/06/06/json-best-practice/) + - [【简明教程】JSON](https://www.jianshu.com/p/8b428e1d1564) diff --git a/docs/lib/template/README.md b/docs/lib/template/README.md new file mode 100644 index 00000000..4cad92b7 --- /dev/null +++ b/docs/lib/template/README.md @@ -0,0 +1,43 @@ +# 模板引擎 + +模板引擎不属于特定技术领域,它是跨领域跨平台的概念。 模板引擎的作用就是分离业务数据和最终呈现内容,它可以生成特定格式的文档(模板) 。 + +模板引擎简单来说,就是:***`模板 + 数据模型 = 输出`*** + +较早,也比较经典的模板引擎是 JavaEE 的标准技术 JSP。 + +但 JSP 存在以下缺点,导致逐渐被淘汰: + +- **性能差** + - JSP 本质上是 Servlet,第一次请求 JSP 页面,必须要在 web 服务器中编译成 servlet,所以第一次响应较慢。 + - 每次请求 JSP 都是访问servlet再用输出流输出的html页面。 + - JSP中的内容很多,页面响应会很慢,因为是同步加载。 +- **无法前后端分离** + - 动态资源和静态资源全部耦合在一起,无法做到前后端分离。一旦服务器出现状况,前后台一起玩完。 + - 而且 Java 工程师既当爹又当妈,又要维护 Java 代码,又要维护 JSP 代码,痛苦。 + - 前端工程师如果不理解 JSP 语法,面对各种 JSP 标签、表达式、指令,会一脸懵逼,痛苦。 +- **不是所有服务器都支持** - JSP 必须要在支持 JSP 技术的 web 服务器里运行(如 Tomcat)。但有些服务器则不支持 JSP ,如 Nginx。 + +在 Java 领域,目前最常见的模板引擎就是: + +- Freemark +- Thymeleaf +- Velocity + +## 内容 + +- [Freemark](freemark.md) +- [Thymeleaf](thymeleaf.md) +- [Velocity](velocity.md) + +## 资源 + +- **Freemark** + - [Freemark Github](https://github.com/apache/freemarker/) + - [Freemark 中文教程](http://freemarker.foofun.cn/) + - [在线 Freemark 工具](https://try.freemarker.apache.org/) +- **Velocity** + - [Velocity Github](https://github.com/apache/velocity-engine/) + - [Velocity 官网](https://velocity.apache.org/) + - [Velocity 中文文档](https://wizardforcel.gitbooks.io/velocity-doc/content/) + - [velocity-spring-boot-project](https://github.com/alibaba/velocity-spring-boot-project) diff --git a/docs/lib/template/freemark.md b/docs/lib/template/freemark.md new file mode 100644 index 00000000..8eff5f72 --- /dev/null +++ b/docs/lib/template/freemark.md @@ -0,0 +1,160 @@ +# Freemark Cheat Sheet + +> FreeMarker 是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML 网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个 Java 类库,是一款程序员可以嵌入他们所开发产品的组件。 + +## Freemark 简介 + +Freemark 模板编写为 FreeMarker Template Language (FTL)。它是简单的,专用的语言, _不是_ 像 PHP 那样成熟的编程语言。在模板中,你可以专注于如何展现数据, 而在模板之外可以专注于要展示什么数据。 + +![img](http://freemarker.foofun.cn/figures/overview.png) + +这种方式通常被称为 [MVC (模型 视图 控制器) 模式](http://freemarker.foofun.cn/gloss.html#gloss.MVC),对于动态网页来说,是一种特别流行的模式。 它帮助从开发人员(Java 程序员)中分离出网页设计师(HTML 设计师)。设计师无需面对模板中的复杂逻辑, 在没有程序员来修改或重新编译代码时,也可以修改页面的样式。 + +Freemark 模板一句话概括就是:**_`模板 + 数据模型 = 输出`_** + +## 总体结构 + +- **文本**:文本会照着原样来输出。 +- **插值**:这部分的输出会被计算的值来替换。插值由 `${` and `}` 所分隔(或者 `#{` and `}`,这种风格已经不建议再使用了;[点击查看更多](http://freemarker.foofun.cn/ref_depr_numerical_interpolation.html))。 +- **FTL 标签**:FTL 标签和 HTML 标签很相似,但是它们却是给 FreeMarker 的指示, 而且不会打印在输出内容中。 +- **注释**:注释和 HTML 的注释也很相似,但它们是由 `<#--` 和 `-->`来分隔的。注释会被 FreeMarker 直接忽略, 更不会在输出内容中显示。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/ftl-template.png) + +> 🔔 注意: +> +> - FTL 是区分大小写的。 +> - `插值` 仅仅可以在 `文本` 中使用。 +> - `FTL 标签` 不可以在其他 `FTL 标签` 和 `插值` 中使用。 +> - `注释` 可以放在 `FTL 标签` 和 `插值` 中。 + +### 指令 + +FTL 指令有两种类型: [预定义指令](http://freemarker.foofun.cn/gloss.html#gloss.predefinedDirective) 和 [用户自定义指令](http://freemarker.foofun.cn/gloss.html#gloss.userDefinedDirective)。 对于用户自定义的指令使用 `@` 来代替 `#`。 + +> 🔔 注意: +> +> - FreeMarker 仅仅关心 FTL 标签的嵌套而不关心 HTML 标签的嵌套。 它只会把 HTML 看做是文本,不会来解释 HTML。 +> - 如果你尝试使用一个不存在的指令(比如,输错了指令的名称), FreeMarker 就会拒绝执行模板,同时抛出错误信息。 +> - FreeMarker 会忽略 FTL 标签中多余的 [空白标记](http://freemarker.foofun.cn/gloss.html#gloss.whiteSpace)。 + +### 表达式 + +以下为快速浏览清单,如果需要了解更多细节,请参考[**这里**](http://freemarker.foofun.cn/dgui_template_exp.html)。 + +- [直接指定值](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_direct) + - [字符串](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_direct_string): `"Foo"` 或者 `'Foo'` 或者 `"It's \"quoted\""` 或者 `'It\'s "quoted"'` 或者 `r"C:\raw\string"` + - [数字](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_direct_number): `123.45` + - [布尔值](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_direct_boolean): `true`, `false` + - [序列](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_direct_seuqence): `["foo", "bar", 123.45]`; 值域: `0..9`, `0..<10` (或 `0..!10`), `0..` + - [哈希表](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_direct_hash): `{"name":"green mouse", "price":150}` +- [检索变量](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_var) + - [顶层变量](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_var_toplevel): `user` + - [从哈希表中检索数据](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_var_hash): `user.name`, `user["name"]` + - [从序列中检索数据](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_var_sequence): `products[5]` + - [特殊变量](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_var_special): `.main` +- [字符串操作](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_stringop) + - [插值(或连接)](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_stringop_interpolation): `"Hello ${user}!"` (或 `"Hello " + user + "!"`) + - [获取一个字符](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_get_character): `name[0]` + - [字符串切分:](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_stringop_slice) 包含结尾: `name[0..4]`,不包含结尾: `name[0..<5]`,基于长度(宽容处理): `name[0..*5]`,去除开头:`name[5..]` +- [序列操作](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_sequenceop) + - [连接](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_sequenceop_cat): `users + ["guest"]` + - [序列切分](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_seqenceop_slice):包含结尾: `products[20..29]`, 不包含结尾: `products[20..<30]`,基于长度(宽容处理):`products[20..*10]`,去除开头: `products[20..]` +- [哈希表操作](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_hashop) + - [连接](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_hashop_cat): `passwords + { "joe": "secret42" }` +- [算术运算](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_arit): `(x * 1.5 + 10) / 2 - y % 100` +- [比较运算](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_comparison): `x == y`, `x != y`, `x < y`, `x > y`, `x >= y`, `x <= y`, `x lt y`, `x lte y`, `x gt y`, `x gte y`, 等等。。。。。。 +- [逻辑操作](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_logicalop): `!registered && (firstVisit || fromEurope)` +- [内建函数](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_builtin): `name?upper_case`, `path?ensure_starts_with('/')` +- [方法调用](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_methodcall): `repeat("What", 3)` +- [处理不存在的值](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_missing) + - [默认值](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_missing_default): `name!"unknown"` 或者 `(user.name)!"unknown"` 或者 `name!` 或者 `(user.name)!` + - [检测不存在的值](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_missing_test): `name??` 或者 `(user.name)??` +- [赋值操作](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_assignment): `=`, `+=`, `-=`, `*=`, `/=`, `%=`, `++`, `--` + +### 变量 + +注意:变量 _仅仅_ 在 [文本区](http://freemarker.foofun.cn/dgui_template_overallstructure.html) (比如 `

    Hello ${name}!

    `) 和 [字符串](http://freemarker.foofun.cn/dgui_template_exp.html#dgui_template_exp_direct_string) 中起作用。 + +正确示例: + +``` +<#include "/footer/${company}.html"> +<#if big>... +``` + +错误示例: + +``` +<#if ${big}>... +<#if "${big}">... +``` + +## 数据类型 + +Freemark 支持的类型有: + +### 标量 + +字符串 + +``` +${"Hello ${user}"} +${"I can escape with \\ ${user}"} +${r"Now I can read dollar signs $"} +``` + +输出: + +``` +Hello deister +I can escape with \ deister +Now I can read dollar signs $ +``` + +数字 + +布尔值 + +日期/时间 (日期,时间或日期时间) + +### 容器 + +- 哈希表 +- 序列 +- 集合 + +### 子程序 + +- [方法和函数](http://freemarker.foofun.cn/dgui_datamodel_types.html#dgui_datamodel_method) +- [用户自定义指令](http://freemarker.foofun.cn/dgui_datamodel_types.html#dgui_datamodel_userdefdir) + +### 其它 + +- [结点](http://freemarker.foofun.cn/dgui_datamodel_types.html#dgui_datamodel_node) + +## 转义符 + +FTL 支持的所有转义字符: + +| 转义序列 | 含义 | +| :------- | :--------------------------------------------------------------------------------------------------------------------------------------------- | +| `\"` | 引号 (u0022) | +| `\'` | 单引号(又称为撇号) (u0027) | +| `\{` | 起始花括号:`{` | +| `\\` | 反斜杠 (u005C) | +| `\n` | 换行符 (u000A) | +| `\r` | 回车 (u000D) | +| `\t` | 水平制表符(又称为 tab) (u0009) | +| `\b` | 退格 (u0008) | +| `\f` | 换页 (u000C) | +| `\l` | 小于号:`<` | +| `\g` | 大于号:`>` | +| `\a` | &符:`&` | +| `\xCode` | 字符的 16 进制 [Unicode](http://freemarker.foofun.cn/gloss.html#gloss.unicode) 码 ([UCS](http://freemarker.foofun.cn/gloss.html#gloss.UCS) 码) | + +## 参考资料 + +- [Freemark Github](https://github.com/apache/freemarker) +- [Freemark 中文教程](http://freemarker.foofun.cn/) +- [在线 Freemark 工具](https://try.freemarker.apache.org/) diff --git a/docs/lib/template/thymeleaf.md b/docs/lib/template/thymeleaf.md new file mode 100644 index 00000000..7c6b46bf --- /dev/null +++ b/docs/lib/template/thymeleaf.md @@ -0,0 +1,469 @@ +# Thymeleaf Cheat Sheet + +## 标准方言 + +标准方言是指 Thymeleaf 定义了一组功能,这些功能应该足以满足大多数情况。可以识别这些标准方言在模板中的使用,因为它将包含以`th`前缀开头的属性,如``。 + +### 表达式 + +`${...}` : 变量表达式。 + +`*{...}` : 选择表达式。 + +`#{...}` : 消息 (i18n) 表达式。 + +`@{...}` : 链接 (URL) 表达式。 + +`~{...}` : 片段表达式。 + +#### 变量表达式 + +变量表达式是 OGNL 表达式 - 如果将 Thymeleaf 与 Spring - 集成在上下文变量上(也称为 Spring 术语中的模型属性),则为 Spring EL。 它们看起来像这样: + +```html +${session.user.name} +``` + +它们作为属性值或作为它们的一部分,取决于属性: + +```html + +``` + +上面的表达式与下面是相同的(在 OGNL 和 SpringEL 中): + +```java +((Book)context.getVariable("book")).getAuthor().getName() +``` + +但是不仅在涉及输出的场景中找到变量表达式,而且还可以使用更复杂的处理方式,如:条件,迭代…等等。 + +```html +
  • +``` + +这里`${books}`从上下文中选择名为`books`的变量,并在`th:each`中使用循环将其评估为迭代器。 + +#### 选择表达式 + +选择表达式就像变量表达式一样,它们不是整个上下文变量映射上执行,而是在先前选择的对象。 它们看起来像这样: + +```html +*{customer.name} +``` + +它们所作用的对象由`th:object`属性指定: + +```html +
    + ... + ... + ... +
    +``` + +所以这相当于: + +```java +{ + // th:object="${book}" + final Book selection = (Book) context.getVariable("book"); + // th:text="*{title}" + output(selection.getTitle()); +} +``` + +#### 消息(i18n)表达式 + +消息表达式(通常称为文本外部化,国际化或 i18n)允许从外部源(如:`.properties`)文件中检索特定于语言环境的消息,通过键来引用这引用消息。 + +在 Spring 应用程序中,它将自动与 Spring 的 MessageSource 机制集成。如下 - + +``` +#{main.title} +#{message.entrycreated(${entryId})} +``` + +以下是在模板中使用它们的方式: + +```html + + ... + + + ... +
    ......
    +``` + +请注意,如果希望消息键由上下文变量的值确定,或者希望将变量指定为参数,则可以在消息表达式中使用变量表达式: + +```html +#{${config.adminWelcomeKey}(${session.user.name})} +Jsp +``` + +#### 链接(URL)表达式 + +链接表达式在构建 URL 并向其添加有用的上下文和会话信息(通常称为 URL 重写的过程)。 +因此,对于部署在 Web 服务器的`/myapp`上下文中的 Web 应用程序,可以使用以下表达式: + +```html +... +``` + +可以转换成如下的东西: + +```html +... +``` + +甚至,如果需要保持会话,并且 cookie 未启用(或者服务器还不知道),那么生成的格式为: + +```html +... HTML +``` + +网址也可以带参数,如下所示: + +```html +... +``` + +这将产生类似以下的结果 - + +```html + +... +``` + +链接表达式可以是相对的,在这种情况下,应用程序上下文将不会被加到 URL 的前面: + +```html +... +``` + +也是服务器相对的(同样,没有应用程序上下文的前缀): + +```html +... +``` + +和协议相关(就像绝对 URL 一样,但浏览器将使用与正在显示的页面相同的 HTTP 或 HTTPS 协议): + +```html +... +``` + +当然,链接表达式也可以是绝对的: + +```html +... +``` + +但是绝对(或协议相对)URL ,在 Thymeleaf 链接表达式中应该添加什么值? 很简单:由响应过滤器定义 URL 重写:在基于 Servlet 的 Web 应用程序中,对于每个输出的 URL(上下文相对,相对,绝对…),在显示 URL 之前,Thymeleaf 总是调用`HttpServletResponse.encodeUrl(...)`机制。 这意味着一个过滤器可以通过包装 HttpServletResponse 对象来为应用程序执行自定义的 URL 重写。 + +#### 片段表达式 + +片段表达式是一种简单的方法用来表示标记的片段并将其移动到模板中。 由于这些表达式,片段可以被复制,传递给其他模板的参数等等。 + +最常见的是使用`th:insert`或`th:replace`来插入片段: + +```html +
    ...
    +``` + +但是它们可以在任何地方使用,就像任何其他变量一样: + +```html +
    +

    +

    +``` + +片段表达式可以有参数。 + +#### 表达式预处理 + +关于表达式的最后一件事是知道表达式预处理,在`__`之间指定,如下所示: + +``` +#{selection.__${sel.code}__} +``` + +上面代码中,第一个被执行的变量表达式是:`${sel.code}`,并且将使用它的结果作为表达式的一部分(假设`${sel.code}`的结果为:`ALL`),在此处执行国际化的情况下(这将查找与关键`selection.ALL`消息)。 + +### 文字和操作 + +有很多类型的文字和操作可用,它们分别如下: + +- 文字 + - 文本文字,例如:`'one text'`, `'Another one!'`,`…` + - 数字文字,例如:`0`,`10`, `314`, `31.01`, `112.83`,`…` + - 布尔文字,例如:`true`,`false` + - Null 文字,例如:`Null` + - 文字标记,例如:`one`, `sometext`, `main`,`…` +- 文本操作: + - 字符串连接:`+` + - 文字替换:`|The name is ${name}|` +- 算术运算: + - 二进制操作:`+`, `-`, `*`, `/`, `%` + - 减号(一元运算符):`-` +- 布尔运算: + - 二进制运算符,`and`,`or` + - 布尔否定(一元运算符):`!`,`not` +- 比较和相等: + - 比较运算符:`>`,`<`,`>=`,`<=`(`gt`,`lt`,`ge`,`le`) + - 相等运算符:`==`, `!=` (`eq`, `ne`) +- 条件操作符: + - If-then:`(if) ? (then)` + - If-then-else:`(if) ? (then) : (else)` + - Default: `(value) ?: (defaultvalue)` + +### 基本属性 + +下面来看看标准方言中的几个最基本的属性。 从`th:`文本开始,它代替了标签的主体: + +```html +

    Welcome everyone!

    +``` + +现在,`th:each`重复它所在元素的次数,由它的表达式返回的数组或列表所指定的次数,为迭代元素创建一个内部变量,其语法与 Java 的 foreach 表达式相同: + +```html +
  • + En las Orillas del Sar +
  • +``` + +最后,Thymeleaf 为特定的 XHTML 和 HTML5 属性提供了许多`th`属性,这些属性只评估它们的表达式,并将这些属性的值设置为结果。 + +```html +
    + + +
    +``` + +### 标准 URL + +Thymeleaf 标准方言(称为 Standard 和 SpringStandard)提供了一种在 Web 应用程序中轻松创建 URL 的方法,以便它们包含任何所需的 URL 工件。 这是通过连接表达方式来完成的,这是一种类似于 Thymeleaf 标准的表现:`@{...}` + +#### 绝对网址 + +绝对 URL 用于创建到其他服务器的链接。它们需要指定一个协议名称(`http://`或`https://`)开头。 + +```html + +``` + +上面链接不会被修改,除非在服务器上配置了 URL 重写过滤器,并在`HttpServletResponse.encodeUrl(...)`方法中执行修改。最后生成的 HTML 代码如下: + +```html + +``` + +#### 上下文相关 URL + +最常用的 URL 类型是上下文相关的。 这些 URL 是一旦安装在服务器上,就会与 Web 应用程序根相关联 URL。 例如,如果将一个名称为`myapp.war`的文件部署到一个 Tomcat 服务器中,那么应用程序一般是通过 URL:`http://localhost:8080/myapp`来访问,`myapp`就是上下文名称。 + +与上下文相关的 URL 以`/`字符开头: + +```html + +``` + +如果应用程序访问 URL 为:`http://localhost:8080/myapp`,则此 URL 将输出: + +```html + +``` + +#### 与服务器相关 URL + +服务器相关的 URL 与上下文相关的 URL 非常相似,只是它们不假定 URL 要链接到应用程序上下文中的资源,因此允许链接到同一服务器中的不同上下文: + +```html + +``` + +当前应用程序的上下文将被忽略,因此尽管应用程序部署在`http:// localhost:8080 / myapp`,但该 URL 将输出: + +```html + +``` + +#### 协议相关 URL + +与协议相关的 URL 实际上是绝对的 URL,它将保持用于显示当前页面的协议(HTTP,HTTPS)。 它们通常用于包括样式,脚本等外部资源: + +```html + +``` + +它将呈现与上面一致的 URL(URL 重写除外),如: + +```html + +``` + +#### 添加参数 + +如何向使用`@{...}`表达式创建的 URL 添加参数? 这也很简单: + +```html + +``` + +上面示例代码,最终将输出为: + +```html + +``` + +也可以添加几个参数,用逗号分隔它们: + +```html + +``` + +上面代码将输出结果为: + +```html + + +``` + +还可以使用正常参数的路径变量的形式包含参数,但在 URL 的路径中指定一个占位符: + +```html + +``` + +上面输出结果为: + +```html + +``` + +#### 网址片段标识符 + +片段标识符可以包含在 URL 中,包含参数和不包含参数。 它们将始终包含在网址的基础上,参考以下代码: + +```html + +``` + +执行输出结果如下 - + +```shell + +``` + +#### URL 重写 + +Thymeleaf 允许在应用程序中配置 URL 重写过滤器,它通过调用 Thymeleaf 模板生成的每个 URL 的 Servlet API 的`javax.servlet.http.HttpServletResponse`类中的`response.encodeURL()`方法来实现。 + +下面在 Java Web 应用程序中支持 URL 重写操作的标准方式,并允许 URL: + +- 自动检测用户是否启用了 Cookie,如果未启用或者如果它是第一个请求并且 cookie 配置仍未知。则将`;jsessionid=...`片段添加到 URL。 +- 在需要时自动将代理配置应用于 URL。 +- 使用不同的 CDN 设置,以便链接到分布在多个服务器中的内容。 + +#### URL 其它属性 + +不要以为在`@{...}`表达式中只有`th:href`属性来表示 URL 。 事实上,它们可以像变量表达式(`${...}`)或消息外部化/国际化(`#{...}`)一样用于任何地方。 + +例如,表单提交时,可使用以下写法 - + +```html +
    +``` + +或作为其他表达的一部分。 如下作为外部化/国际化字符串的参数: + +```html +

    +``` + +#### 在 URL 中使用表达式 + +下面来看看,如下所示的 URL 表达式: + +```html +
    +``` + +但`3`和`'show_all'`都不能是文字值,因为只有在运行时才能知道它们的值,怎么办? + +```html + +``` + +下面看看另一个 URL 表达式,如下所示: + +```html + +``` + +它其实是下面 URL 的一个快捷方式: + +```html + +``` + +这意味着 URL 基本身可以被指定为一个表达式,例如一个变量表达式: + +```html + +``` + +或外部化/国际化的文本: + +```html + +``` + +甚至可以使用复杂的表达式,包括条件表达式,例如: + +```html + +``` + +如果要更清洁,那么可以使用`th:with` : + +```html + +``` + +又或者 - + +```html +
    + ... + ... + ... +
    +``` + +## 扩展 + +TODO + +## 参考资料 + +- [Thymeleaf 官网](https://www.thymeleaf.org/) +- [Thymeleaf Github](https://github.com/thymeleaf/thymeleaf/) +- [Thymeleaf 教程](https://fanlychie.github.io/post/thymeleaf.html) diff --git a/docs/lib/template/velocity.md b/docs/lib/template/velocity.md new file mode 100644 index 00000000..d4d3a621 --- /dev/null +++ b/docs/lib/template/velocity.md @@ -0,0 +1,316 @@ +# Velocity Cheat Sheet + +**Velocity (简称 VTL)是一个基于 Java 的模版引擎**。它允许 web 页面设计者引用 JAVA 代码预定义的方法。Web 设计者可以根据 MVC 模式和 JAVA 程序员并行工作,这意味着 Web 设计者可以单独专注于设计良好的站点,而程序员则可单独专注于编写底层代码。Velocity 将 Java 代码从 web 页面中分离出来,使站点在长时间运行后仍然具有很好的可维护性,并提供了一个除 JSP 和 PHP 之外的可行的被选方案。 + +## 注释 + +单行注释以##开始,并在本行结束。 + +```velocity +## This is a single line comment. +``` + +多行注释,以 `#` 开始并以 `#` 结束可以处理这种情况。 + +```velocity +#* + Thus begins a multi-line comment. Online visitors won't + see this text because the Velocity Templating Engine will + ignore it. +*# +``` + +注释块 ,可以用来存储诸如文档作者、版本信息等。 + +```velocity +#** +This is a VTL comment block and +may be used to store such information +as the document author and versioning +information: +@author +@version 5 +*# +``` + +## 引用 + +VTL 中有三种类型的引用:变量,属性和方法。 + +### 变量 + +变量(Variables)的简略标记是有一个前导 `$` 字符后跟一个 VTL 标识符(Identifier.)组成。一个 VTL 标识符必须以一个字母开始(a .. z 或 A .. Z)。 + +剩下的字符将由以下类型的字符组成: + +- 字母 (a .. z, A .. Z) +- 数字 (0 .. 9) +- 连字符("-") +- 下划线 ("\_") + +示例:有效变量 + +```velocity +## 有效变量变量名 +$foo +$mudSlinger +$mud-slinger +$mud_slinger +$mudSlinger1 + +## 给变量赋值 +#set( $foo = "bar" ) +``` + +### 属性 + +VTL 引用的第二种元素是属性,而属性具有独特的格式。属性的简略标记识前导符 `$` 后跟一个 VTL 标识符,在后跟一个点号(".")最后又是一个 VTL 标识符。 + +示例:有效属性 + +```velocity +$customer.Address +$purchase.Total +``` + +### 方法 + +方法在 JAVA 代码中定义,并作一些有用的事情,比如运行一个计算器或者作出一个决定。方法是实际上也是引用,由前导符 `$` 后跟一个 VTL 标识符,后跟一个 VTL 方法体(Method Body)。 VTL 方法体由一个 VTL 标识符后跟一个左括号,再跟可选的参数列表,最后是右括号。 + +示例:有效方法 + +```velocity +$customer.getAddress() +$purchase.getTotal() +$page.setTitle( "My Home Page" ) +$person.setAttributes( ["Strange", "Weird", "Excited"] ) +``` + +## 赋值 + +`#set` 指令用来为引用设置相应的值。值可以被值派给变量引用或者是属性引用,而且赋值要在括号里括起来。 + +```velocity +#set( $monkey = $bill ) ## variable reference +#set( $monkey.Friend = "monica" ) ## string literal +#set( $monkey.Blame = $whitehouse.Leak ) ## property reference +#set( $monkey.Plan = $spindoctor.weave($web) ) ## method reference +#set( $monkey.Number = 123 ) ##number literal +#set( $monkey.Say = ["Not", $my, "fault"] ) ## ArrayList +``` + +## 字符串 + +使用 `#set` 指令时,括在双引号中的字面字符串将解析和重新解释 。 然而,当字面字符串括在单引号中时,不被解析: + +示例: + +```velocity +#set( $foo = "bar" ) +$foo +#set( $blargh = '$foo' ) +$blargh +``` + +输出: + +```velocity +Bar + $foo +``` + +## 条件 + +VTL 使用 `#If`、`#elseif`、`#else` 指令做条件语句控制。 + +示例: + +```velocity +#if( $foo < 10 ) + Go North +#elseif( $foo == 10 ) + Go East +#elseif( $bar == 6 ) + Go South +#else + Go West +#end +``` + +## 逻辑 + +VTL 支持与(`&&`)、或(`||`)、非(`!`)逻辑判断。 + +示例: + +```velocity +#if( $foo && $bar ) + This AND that +#end + +#if( $foo || $bar ) + This or That +#end + +#if( !$foo ) + NOT that +#end +``` + +## 循环 + +VTL 通过 `#foreach` 支持循环 + +```velocity +
      +#foreach( $product in $allProducts ) +
    • $product
    • +#end +
    +``` + +## 包含 + +VTL 通过 `#include` 来导入其他文件。 + +示例: + +```velocity +#include( "one.txt" ) + +#include( "one.gif","two.txt","three.htm" ) + +#include( "greetings.txt", $seasonalstock ) +``` + +## 解析 + +VTL 通过 `#parse` 导入其他 vm 文件。 + +```velocity +$count +#set( $count = $count - 1 ) +#if( $count > 0 ) + #parse( "parsefoo.vm" ) +#else + All done with parsefoo.vm! +#end +``` + +## 停止 + +VTL 使用 `#stop` 停止模板引擎的执行,并返回。这通常用作调试。 + +```velocity +#stop ## +``` + +## 宏 + +VTL 使用 `#macro` 和 `#end` 配合来定义宏,以此实现自定义指令。 + +示例一: + +```velocity +## 定义宏 +#macro( d ) + +#end + +## 使用宏 +#d() +``` + +示例二: + +```velocity +## 定义宏 +#macro( tablerows $color $somelist ) + #foreach( $something in $somelist ) + $something + #end +#end + +## 使用宏 +#set( $greatlakes = ["Superior","Michigan","Huron","Erie","Ontario"] ) +#set( $color = "blue" ) + + #tablerows( $color $greatlakes ) +
    +``` + +输出: + +```html + + + + + + + + + + + + + + + + +
    Superior
    Michigan
    Huron
    Erie
    Ontario
    +``` + +## 转义 + +VTL 使用 `\` 符号来进行字符转义。 + +示例一 + +```velocity +## The following line defines $email in this template: +#set( $email = "foo" ) +$email +\$email +``` + +输出: + +```velocity +foo +$email +``` + +## 语义要点 + +Velocity 有一些语义要点,容易产生歧义,这里归纳一下。 + +(1)**Velocity 的行为并不受空格的影响**。 + +示例:以下三种写法效果一致 + +```velocity +## 写法一 +Send me #set($foo = ["$10 and ","a cake"])#foreach($a in $foo)$a #end please. + +## 写法二 +Send me +#set( $foo = ["$10 and ","a cake"] ) +#foreach( $a in $foo ) +$a +#end +please. + +## 写法三 +Send me +#set($foo = ["$10 and ","a cake"]) + #foreach ($a in $foo )$a + #end please. +``` + +## 参考资料 + +- [Velocity Github](https://github.com/apache/velocity-engine/) +- [Velocity 官网](https://velocity.apache.org/) +- [Velocity 中文文档](https://wizardforcel.gitbooks.io/velocity-doc/content/) +- [velocity-spring-boot-project](https://github.com/alibaba/velocity-spring-boot-project) diff --git a/docs/lib/thumbnailator.md b/docs/lib/thumbnailator.md new file mode 100644 index 00000000..1f9dfc94 --- /dev/null +++ b/docs/lib/thumbnailator.md @@ -0,0 +1,244 @@ +# Thumbnailator 应用指南 + + + +- [简介](#简介) +- [核心 API](#核心-api) + - [Thumbnails](#thumbnails) + - [Thumbnails.Builder](#thumbnailsbuilder) + - [工作流](#工作流) +- [实战](#实战) + - [安装](#安装) + - [图片缩放](#图片缩放) + - [图片旋转](#图片旋转) + - [加水印](#加水印) + - [批量处理图片](#批量处理图片) +- [参考](#参考) + + + +## 简介 + +`Thumbnailator` 是一个开源的 **Java** 项目,它提供了非常简单的 API 来对图片进行缩放、旋转以及加水印的处理。 + +有多简单呢?简单到一行代码就可以完成图片处理。形式如下: + +```java +Thumbnails.of(new File("path/to/directory").listFiles()) + .size(640, 480) + .outputFormat("jpg") + .toFiles(Rename.PREFIX_DOT_THUMBNAIL); +``` + +当然,Thumbnailator 还有一些使用细节,下面我会一一道来。 + +## 核心 API + +### Thumbnails + +`Thumbnails` 是使用 Thumbnailator 创建缩略图的主入口。 + +它提供了一组初始化 `Thumbnails.Builder` 的接口。 + +先看下这组接口的声明: + +```java +// 可变长度参数列表 +public static Builder of(String... files) {...} +public static Builder of(File... files) {...} +public static Builder of(URL... urls) {...} +public static Builder of(InputStream... inputStreams) {...} +public static Builder of(BufferedImage... images) {...} +// 迭代器(所有实现 Iterable 接口的 Java 对象都可以,当然也包括 List、Set) +public static Builder fromFilenames(Iterable files) {...} +public static Builder fromFiles(Iterable files) {...} +public static Builder fromURLs(Iterable urls) {...} +public static Builder fromInputStreams(Iterable inputStreams) {...} +public static Builder fromImages(Iterable images) {...} +``` + +很显然,**Thumbnails 允许通过传入文件名、文件、网络图的 URL、图片流、图片缓存多种方式来初始化构造器**。 + +因此,你可以根据实际需求来灵活的选择图片的输入方式。 + +需要注意一点:**如果输入是多个对象(无论你是直接输入容器对象或使用可变参数方式传入多个对象),则输出也必须选用输出多个对象的方式,否则会报异常。** + +### Thumbnails.Builder + +`Thumbnails.Builder` 是 `Thumbnails` 的内部静态类。它用于设置生成缩略图任务的相关参数。 + +***注:`Thumbnails.Builder` 的构造函数是私有函数。所以,它只允许通过 `Thumbnails` 的实例化函数来进行初始化。*** + +#### 设置参数的函数 + +`Thumbnails.Builder` 提供了一组函数链形式的接口来设置缩放图参数。 + +以设置大小函数为例: + +```java +public Builder size(int width, int height) +{ + updateStatus(Properties.SIZE, Status.ALREADY_SET); + updateStatus(Properties.SCALE, Status.CANNOT_SET); + + validateDimensions(width, height); + this.width = width; + this.height = height; + + return this; +} +``` + +通过返回 this 指针,使得设置参数函数可以以链式调用的方式来使用,形式如下: + +```java +Thumbnails.of(new File("original.jpg")) + .size(160, 160) + .rotate(90) + .watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("watermark.png")), 0.5f) + .outputQuality(0.8) + .toFile(new File("image-with-watermark.jpg")); +``` + +好处,不言自明:那就是大大简化了代码。 + +#### 输出函数 + +`Thumbnails.Builder` 提供了一组重载函数来输出生成的缩放图。 + +函数声明如下: + +```java +// 返回图片缓存 +public List asBufferedImages() throws IOException {...} +public BufferedImage asBufferedImage() throws IOException {...} +// 返回文件列表 +public List asFiles(Iterable iterable) throws IOException {...} +public List asFiles(Rename rename) throws IOException {...} +public List asFiles(File destinationDir, Rename rename) throws IOException {...} +// 创建文件 +public void toFile(File outFile) throws IOException {...} +public void toFile(String outFilepath) throws IOException {...} +public void toFiles(Iterable iterable) throws IOException {...} +public void toFiles(Rename rename) throws IOException {...} +public void toFiles(File destinationDir, Rename rename) throws IOException {...} +// 创建输出流 +public void toOutputStream(OutputStream os) throws IOException {...} +public void toOutputStreams(Iterable iterable) throws IOException {...} +``` + +### 工作流 + +Thumbnailator 的工作步骤十分简单,可分为三步: + +1. **输入**:`Thumbnails` 根据输入初始化构造器—— `Thumbnails.Builder` 。 + +2. **设置**:`Thumbnails.Builder` 设置缩放图片的参数。 + +3. **输出**:`Thumbnails.Builder` 输出图片文件或图片流。 + +> 更多详情可以参考: [Thumbnailator 官网 javadoc](https://coobird.github.io/thumbnailator/javadoc/0.4.8/) + +## 实战 + +前文介绍了 Thumbnailator 的核心 API,接下来我们就可以通过实战来看看 Thumbnailator 究竟可以做些什么。 + +Thumbnailator 生成什么样的图片,是根据设置参数来决定的。 + +### 安装 + +maven 项目中引入依赖: + +```xml + + net.coobird + thumbnailator + [0.4, 0.5) + +``` + +### 图片缩放 + +`Thumbnails.Builder` 的 `size` 函数可以设置新图片精确的宽度和高度,也可以用 `scale` 函数设置缩放比例。 + +```java +Thumbnails.of("oldFile.png") + .size(16, 16) + .toFile("newFile_16_16.png"); + +Thumbnails.of("oldFile.png") + .scale(2.0) + .toFile("newFile_scale_2.0.png"); + +Thumbnails.of("oldFile.png") + .scale(1.0, 0.5) + .toFile("newFile_scale_1.0_0.5.png"); +``` + +**oldFile.png** + +![img](http://upload-images.jianshu.io/upload_images/3101171-ba63439898602e8f.png) + +**newFile_scale_1.0_0.5.png** + +![img](http://upload-images.jianshu.io/upload_images/3101171-a01ea4515fff865d.png) + +### 图片旋转 + +`Thumbnails.Builder` 的 `size` 函数可以设置新图片的旋转角度。 + +```java +Thumbnails.of("oldFile.png") + .scale(0.8) + .rotate(90) + .toFile("newFile_rotate_90.png"); + +Thumbnails.of("oldFile.png") + .scale(0.8) + .rotate(180) + .toFile("newFile_rotate_180.png"); +``` + +**newFile_rotate_90.png** + +![img](http://upload-images.jianshu.io/upload_images/3101171-17d54bc33b38d45b.png) + +### 加水印 + +`Thumbnails.Builder` 的 `watermark` 函数可以为图片添加水印图片。第一个参数是水印的位置;第二个参数是水印图片的缓存数据;第三个参数是透明度。 + +```java +BufferedImage watermarkImage = ImageIO.read(new File("wartermarkFile.png")); +Thumbnails.of("oldFile.png") + .scale(0.8) + .watermark(Positions.BOTTOM_LEFT, watermarkImage, 0.5f) + .toFile("newFile_watermark.png"); +``` + +**wartermarkFile.png** + +![img](http://upload-images.jianshu.io/upload_images/3101171-97909ee6c066c195.png?imageMogr2/auto-orient/strip) + +**newFile_watermark.png** + +![img](http://upload-images.jianshu.io/upload_images/3101171-93eb7ef71b811a0c.png) + +### 批量处理图片 + +下面以批量给图片加水印来展示一下如何处理多个图片文件。 + +```java +BufferedImage watermarkImage = ImageIO.read(new File("wartermarkFile.png")); + +File destinationDir = new File("D:\\watermark\\"); +Thumbnails.of("oldFile.png", "oldFile2.png") + .scale(0.8) + .watermark(Positions.BOTTOM_LEFT, watermarkImage, 0.5f) + .toFiles(destinationDir, Rename.PREFIX_DOT_THUMBNAIL); +``` + +> **需要参考完整测试例代码请** [**点击这里**](https://github.com/dunwu/JavaParty/blob/master/toolbox/image/src/test/java/org/zp/image/ThumbnailatorTest.java) + +## 参考 + +[Thumbnailator 官方示例文档](https://github.com/coobird/thumbnailator/wiki/Examples) diff --git a/docs/lib/zxing.md b/docs/lib/zxing.md new file mode 100644 index 00000000..62a7ae77 --- /dev/null +++ b/docs/lib/zxing.md @@ -0,0 +1,93 @@ +# ZXing 应用指南 + + + +- [简介](#简介) +- [实战](#实战) + - [安装](#安装) + - [生成二维码图片](#生成二维码图片) + - [解析二维码图片](#解析二维码图片) +- [参考](#参考) + + + +## 简介 + +`ZXing` 是一个开源 Java 类库用于解析多种格式的 1D/2D 条形码。目标是能够对 QR 编码、Data Matrix、UPC 的 1D 条形码进行解码。 其提供了多种平台下的客户端包括:J2ME、J2SE 和 Android。 + +官网:[ZXing github 仓库](https://github.com/zxing/zxing) + +## 实战 + +***本例演示如何在一个非 android 的 Java 项目中使用 ZXing 来生成、解析二维码图片。*** + +### 安装 + +maven 项目只需引入依赖: + +```xml + + com.google.zxing + core + 3.3.0 + + + com.google.zxing + javase + 3.3.0 + +``` + +如果非 maven 项目,就去官网下载发布版本:[下载地址](https://github.com/zxing/zxing/releases) + +### 生成二维码图片 + +ZXing 生成二维码图片有以下步骤: + +1. `com.google.zxing.MultiFormatWriter` 根据内容以及图像编码参数生成图像 2D 矩阵。 +2. ​ `com.google.zxing.client.j2se.MatrixToImageWriter` 根据图像矩阵生成图片文件或图片缓存 `BufferedImage` 。 + +```java +public void encode(String content, String filepath) throws WriterException, IOException { + int width = 100; + int height = 100; + Map encodeHints = new HashMap(); + encodeHints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); + BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, encodeHints); + Path path = FileSystems.getDefault().getPath(filepath); + MatrixToImageWriter.writeToPath(bitMatrix, "png", path); +} +``` + +### 解析二维码图片 + +ZXing 解析二维码图片有以下步骤: + +1. 使用 `javax.imageio.ImageIO` 读取图片文件,并存为一个 `java.awt.image.BufferedImage` 对象。 + +2. 将 `java.awt.image.BufferedImage` 转换为 ZXing 能识别的 `com.google.zxing.BinaryBitmap` 对象。 + +3. `com.google.zxing.MultiFormatReader` 根据图像解码参数来解析 `com.google.zxing.BinaryBitmap` 。 + +```java +public String decode(String filepath) throws IOException, NotFoundException { + BufferedImage bufferedImage = ImageIO.read(new FileInputStream(filepath)); + LuminanceSource source = new BufferedImageLuminanceSource(bufferedImage); + Binarizer binarizer = new HybridBinarizer(source); + BinaryBitmap bitmap = new BinaryBitmap(binarizer); + HashMap decodeHints = new HashMap(); + decodeHints.put(DecodeHintType.CHARACTER_SET, "UTF-8"); + Result result = new MultiFormatReader().decode(bitmap, decodeHints); + return result.getText(); +} +``` + +完整参考示例:[测试例代码](https://github.com/dunwu/JavaParty/blob/master/toolbox/image/src/test/java/org/zp/image/QRCodeUtilTest.java) + +以下是一个生成的二维码图片示例: + +![img](http://upload-images.jianshu.io/upload_images/3101171-26b73730088f0ab8.png) + +## 参考 + +[ZXing github 仓库](https://github.com/zxing/zxing) diff --git a/docs/limiting/hystrix.md b/docs/limiting/hystrix.md new file mode 100644 index 00000000..5df34b08 --- /dev/null +++ b/docs/limiting/hystrix.md @@ -0,0 +1,537 @@ +# Hystrix 应用指南 + + + +- [一、Hystrix 简介](#一hystrix-简介) + - [Hystrix 是什么](#hystrix-是什么) + - [为什么需要 Hystrix](#为什么需要-hystrix) + - [Hystrix 的功能](#hystrix-的功能) +- [Hystrix 核心概念](#hystrix-核心概念) +- [二、Hystrix 工作流程](#二hystrix-工作流程) + - [(一)包装命令](#一包装命令) + - [(二)执行命令](#二执行命令) + - [(三)是否缓存](#三是否缓存) + - [(四)是否开启断路器](#四是否开启断路器) + - [(五)信号量、线程池是否拒绝](#五信号量线程池是否拒绝) + - [(六)construct() 或 run()](#六construct-或-run) + - [(七)健康检查](#七健康检查) + - [(八)获取 Fallback](#八获取-fallback) + - [(九)返回结果](#九返回结果) +- [三、断路器工作原理](#三断路器工作原理) + - [系统指标](#系统指标) +- [四、资源隔离技术](#四资源隔离技术) + - [线程池隔离](#线程池隔离) + - [信号量隔离](#信号量隔离) +- [五、Hystrix 应用](#五hystrix-应用) + - [Spring Cloud + Hystrix](#spring-cloud--hystrix) +- [六、其他限流技术](#六其他限流技术) +- [Hystrix 配置](#hystrix-配置) + - [执行配置](#执行配置) + - [断路配置](#断路配置) + - [指标配置](#指标配置) + - [线程池配置](#线程池配置) +- [参考资料](#参考资料) + + + +## 一、Hystrix 简介 + +### Hystrix 是什么 + +Hystrix 是 Netflix 开源的一款容错框架,包含常用的容错方法:线程池隔离、信号量隔离、熔断、降级。 + +Hystrix 官方宣布**不再发布新版本**。 + +但是 Hystrix 的客户端熔断保护,断路器设计理念,有非常高的学习价值。 + +### 为什么需要 Hystrix + +复杂的分布式系统架构中的应用程序往往具有数十个依赖项,每个依赖项都会不可避免地在某个时刻失败。 如果主机应用程序未与这些外部故障隔离开来,则可能会被波及。 + +例如,对于依赖于 30 个服务的应用程序,假设每个服务的正常运行时间为 99.99%,则可以期望: + +> 99.9930 = 99.7% 的正常运行时间 +> +> 10 亿个请求中的 0.3%= 3,000,000 个失败 +> +> 即使所有依赖项都具有出色的正常运行时间,每月也会有 2 个小时以上的停机时间。 +> +> 然而,现实情况一般比这种估量情况更糟糕。 + +--- + +当一切正常时,整体系统如下所示: + +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200717141615.png) + +在高并发场景,这些依赖的稳定性与否对系统的影响非常大,但是依赖有很多不可控问题:如网络连接、资源繁忙、服务宕机等。例如:下图中有一个 QPS 为 50 的依赖 I 出现不可用,但是其他依赖服务是可用的。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200717141749.png) + +但是,在高并发场景下,当依赖 I 阻塞时,大多数服务器的线程池就出现阻塞(BLOCK)。当这种级联故障愈演愈烈,就可能造成整个线上服务不可用的雪崩效应,如下图: + +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200717141859.png) + +Hystrix 就是为了解决这类问题而应运而生。 + +### Hystrix 的功能 + +Hystrix 具有以下功能: + +- 避免资源耗尽:阻止任何一个依赖服务耗尽所有的资源,比如 tomcat 中的所有线程资源。 +- 避免请求排队和积压:采用限流和 `fail fast` 来控制故障。 +- 支持降级:提供 fallback 降级机制来应对故障。 +- 资源隔离:比如 `bulkhead`(舱壁隔离技术)、`swimlane`(泳道技术)、`circuit breaker`(断路技术)来限制任何一个依赖服务的故障的影响。 +- 统计/监控/报警:通过近实时的统计/监控/报警功能,来提高故障发现的速度。 +- 通过近实时的属性和配置**热修改**功能,来提高故障处理和恢复的速度。 +- 保护依赖服务调用的所有故障情况,而不仅仅只是网络故障情况。 + +如果使用 Hystrix 对每个基础依赖服务进行过载保护,则整个系统架构将会类似下图所示,每个依赖项彼此隔离,受到延迟时发生饱和的资源的被限制访问,并包含 fallback 逻辑(用于降级处理),该逻辑决定了在依赖项中发生任何类型的故障时做出对应的处理。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200717142842.png) + +## Hystrix 核心概念 + +## 二、Hystrix 工作流程 + +如下图所示,Hystrix 的工作流程大致可以分为 9 个步骤。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200717143247.png) + +### (一)包装命令 + +x 支持资源隔离。 + +资源隔离,就是说,你如果要把对某一个依赖服务的所有调用请求,全部隔离在同一份资源池内,不会去用其它资源了,这就叫资源隔离。哪怕对这个依赖服务,比如说商品服务,现在同时发起的调用量已经到了 1000,但是分配给商品服务线程池内就 10 个线程,最多就只会用这 10 个线程去执行。不会因为对商品服务调用的延迟,将 Tomcat 内部所有的线程资源全部耗尽。 + +Hystrix 进行资源隔离,其实是提供了一个抽象,叫做命令模式。这也是 Hystrix 最最基本的资源隔离技术。 + +在使用 Hystrix 的过程中,会对**依赖服务**的调用请求封装成**命令对象**,Hystrix 对 **命令对象**抽象了两个抽象类:`HystrixCommand` 和`HystrixObservableCommand` 。 + +- `HystrixCommand` 表示的**命令对象**会返回一个唯一返回值。 +- `HystrixObservableCommand` 表示的**命令对象** 会返回多个返回值。 + +```java +HystrixCommand command = new HystrixCommand(arg1, arg2); +HystrixObservableCommand command = new HystrixObservableCommand(arg1, arg2); +``` + +### (二)执行命令 + +Hystrix 中共有 4 种方式执行命令,如下所示: + +| 执行方式 | 说明 | 可用对象 | +| :------------- | :----------------------------------------------------------------------------------------------------------------------------- | :------------------------- | +| `execute()` | 阻塞式同步执行,返回依赖服务的单一返回结果(或者抛出异常) | `HystrixCommand` | +| `queue()` | 基于 Future 的异步方式执行,返回依赖服务的单一返回结果(或者抛出异常) | `HystrixCommand` | +| `observe()` | 基于 Rxjava 的 Observable 方式,返回通过 Observable 表示的依赖服务返回结果,代调用代码先执行(Hot Obserable) | `HystrixObservableCommand` | +| `toObvsevable` | 基于 Rxjava 的 Observable 方式,返回通过 Observable 表示的依赖服务返回结果,执行代码等到真正订阅的时候才会执行(cold observable) | `HystrixObservableCommand` | + +这四种命令中,`exeucte()`、`queue()`、`observe()`的表示也是通过`toObservable()`实现的,其转换关系如下图所示: + +![img](https:////upload-images.jianshu.io/upload_images/14126519-60964d9fa41614c1.png?imageMogr2/auto-orient/strip|imageView2/2/w/563/format/webp) + +`HystrixCommand` 执行方式 + +```java +K value = command.execute(); +// 等价语句: +K value = command.execute().queue().get(); + + +Future fValue = command.queue(); +//等价语句: +Future fValue = command.toObservable().toBlocking().toFuture(); + + +Observable ohValue = command.observe(); //hot observable,立刻订阅,命令立刻执行 +//等价语句: +Observable ohValue = command.toObservable().subscribe(subject); + +// 上述执行最终实现还是基于 toObservable() +Observable ocValue = command.toObservable(); //cold observable,延后订阅,订阅发生后,执行才真正执行 +``` + +### (三)是否缓存 + +如果当前命令对象配置了允许从`结果缓存`中取返回结果,并且在`结果缓存`中已经缓存了请求结果,则缓存的请求结果会立刻通过 `Observable` 的格式返回。 + +### (四)是否开启断路器 + +如果第三步没有缓存没有命中,则判断一下当前断路器的断路状态是否打开。如果断路器状态为`打开`状态,则 `Hystrix` 将不会执行此 Command 命令,直接执行**步骤 8** 调用 Fallback; + +如果断路器状态是`关闭`,则执行 **步骤 5** 检查是否有足够的资源运行 Command 命令 + +### (五)信号量、线程池是否拒绝 + +如果当前要执行的 Command 命令 先关连的线程池 和队列(或者信号量)资源已经满了,Hystrix 将不会运行 Command 命令,直接执行 **步骤 8**的 Fallback 降级处理;如果未满,表示有剩余的资源执行 Command 命令,则执行**步骤 6** + +### (六)construct() 或 run() + +当经过**步骤 5** 判断,有足够的资源执行 Command 命令时,本步骤将调用 Command 命令运行方法,基于不同类型的 Command,有如下两种两种运行方式: + +| 运行方式 | 说明 | +| :------------------------------------- | :--------------------------------------------------------------------- | +| `HystrixCommand.run()` | 返回一个处理结果或者抛出一个异常 | +| `HystrixObservableCommand.construct()` | 返回一个 Observable 表示的结果(可能多个),或者 基于`onError`的错误通知 | + +如果`run()` 或者`construct()`方法 的`真实执行时间`超过了 Command 设置的`超时时间阈值`, 则**当前则执行线程**(或者是独立的定时器线程)将会抛出`TimeoutException`。抛出超时异常 TimeoutException,后,将执行**步骤 8**的 Fallback 降级处理。即使`run()`或者`construct()`执行没有被取消或中断,最终能够处理返回结果,但在降级处理逻辑中,将会抛弃`run()`或`construct()`方法的返回结果,而返回 Fallback 降级处理结果。 + +> **注意事项** +> 需要注意的是,Hystrix 无法强制 将正在运行的线程停止掉--Hystrix 能够做的最好的方式就是在 JVM 中抛出一个`InterruptedException`。如果 Hystrix 包装的工作不抛出中断异常`InterruptedException`, 则在 Hystrix 线程池中的线程将会继续执行,尽管`调用的客户端`已经接收到了`TimeoutException`。这种方式会使 Hystrix 的线程池处于饱和状态。大部分的 Java Http Client 开源库并不会解析 `InterruptedException`。所以确认 HTTP client 相关的连接和读/写相关的超时时间设置。 +> 如果 Command 命令没有抛出任何异常,并且有返回结果,则 Hystrix 将会在做完日志记录和统计之后会将结果返回。 如果是通过`run()`方式运行,则返回一个`Obserable`对象,包含一个唯一值,并且发送一个`onCompleted`通知;如果是通过`consturct()`方式运行 ,则返回一个`Observable对象`。 + +### (七)健康检查 + +Hystrix 会统计 Command 命令执行执行过程中的**成功数**、**失败数**、**拒绝数**和**超时数**,将这些信息记录到**断路器(Circuit Breaker)**中。断路器将上述统计按照**时间窗**的形式记录到一个定长数组中。断路器根据时间窗内的统计数据去判定请求什么时候可以被熔断,熔断后,在接下来一段恢复周期内,相同的请求过来后会直接被熔断。当再次校验,如果健康监测通过后,熔断开关将会被关闭。 + +### (八)获取 Fallback + +当以下场景出现后,Hystrix 将会尝试触发 `Fallback`: + +> - 步骤 6 Command 执行时抛出了任何异常; +> - 步骤 4 断路器已经被打开 +> - 步骤 5 执行命令的线程池、队列或者信号量资源已满 +> - 命令执行的时间超过阈值 + +### (九)返回结果 + +如果 Hystrix 命令对象执行成功,将会返回结果,或者以`Observable`形式包装的结果。根据**步骤 2**的 command 调用方式,返回的`Observable` 会按照如下图说是的转换关系进行返回: + +![img](https:////upload-images.jianshu.io/upload_images/14126519-8790f97df332d9a2.png?imageMogr2/auto-orient/strip|imageView2/2/w/640/format/webp) + +- `execute()` — 用和 `.queue()` 相同的方式获取 `Future`,然后调用 `Future` 的 `get()` 以获取 `Observable` 的单个值。 +- `queue()` —将 `Observable` 转换为 `BlockingObservable`,以便可以将其转换为 `Future` 并返回。 +- `watch()` —订阅 `Observable` 并开始执行命令的流程; 返回一个 `Observable`,当订阅该 `Observable` 时,它会重新通知。 +- `toObservable()` —返回不变的 `Observable`; 必须订阅它才能真正开始执行命令的流程。 + +## 三、断路器工作原理 + +![img](https:////upload-images.jianshu.io/upload_images/14126519-dce007513bf90794.png?imageMogr2/auto-orient/strip|imageView2/2/w/640/format/webp) + +1. 断路器时间窗内的请求数 是否超过了**请求数断路器生效阈值**`circuitBreaker.requestVolumeThreshold`,如果超过了阈值,则将会触发断路,断路状态为**开启** + 例如,如果当前阈值设置的是`20`,则当时间窗内统计的请求数共计 19 个,即使 19 个全部失败了,都不会触发断路器。 +2. 并且请求错误率超过了**请求错误率阈值**`errorThresholdPercentage` +3. 如果两个都满足,则将断路器由**关闭**迁移到**开启** +4. 如果断路器开启,则后续的所有相同请求将会被断路掉; +5. 直到过了**沉睡时间窗**`sleepWindowInMilliseconds`后,再发起请求时,允许其通过(此时的状态为**半开起状态**)。如果请求失败了,则保持断路器状态为**开启**状态,并更新**沉睡时间窗**。如果请求成功了,则将断路器状态改为**关闭**状态; + +核心的逻辑如下: + +```java + @Override + public void onNext(HealthCounts hc) { + // check if we are past the statisticalWindowVolumeThreshold + if (hc.getTotalRequests() < properties.circuitBreakerRequestVolumeThreshold().get()) { + // we are not past the minimum volume threshold for the stat window, + // so no change to circuit status. + // if it was CLOSED, it stays CLOSED + // if it was half-open, we need to wait for a successful command execution + // if it was open, we need to wait for sleep window to elapse + } else { + if (hc.getErrorPercentage() < properties.circuitBreakerErrorThresholdPercentage().get()) { + //we are not past the minimum error threshold for the stat window, + // so no change to circuit status. + // if it was CLOSED, it stays CLOSED + // if it was half-open, we need to wait for a successful command execution + // if it was open, we need to wait for sleep window to elapse + } else { + // our failure rate is too high, we need to set the state to OPEN + if (status.compareAndSet(Status.CLOSED, Status.OPEN)) { + circuitOpened.set(System.currentTimeMillis()); + } + } + } + } +``` + +### 系统指标 + +Hystrix 对系统指标的统计是基于时间窗模式的: + +> **时间窗**:最近的一个时间区间内,比如前一小时到现在,那么时间窗的长度就是`1小时`; +> **桶**:桶是在特定的**时间窗**内,等分的指标收集的统计集合;比如时间窗的长度为`1小时`,而桶的数量为`10`,那么每个桶在时间轴上依次排开,时间由远及近,每个桶统计的时间分片为 `1h / 10 = 6 min` 6 分钟。一个桶中,包含了`成功数`、`失败数`、`超时数`、`拒绝数` 四个指标。 + +在系统内,时间窗会随着系统的运行逐渐向前移动,而时间窗的长度和桶的数量是固定不变的,那么随着时间的移动,会出现较久的过期的桶被移除出去,新的桶被添加进来,如下图所示: + +![img](https:////upload-images.jianshu.io/upload_images/14126519-11710915e1a5dcda.png?imageMogr2/auto-orient/strip|imageView2/2/w/640/format/webp) + +## 四、资源隔离技术 + +### 线程池隔离 + +如下图所示,由于计算机系统的基本执行单位就是线程,线程具备独立的执行能力,所以,为了做到资源保护,需要对系统的线程池进行划分,对于外部调用方 + +``` +User Request +``` + +的请求,调用各个线程池的服务,各个线程池独立完成调用,然后将结果返回 + +``` +调用方 +``` + +。在调用服务的过程中,如果 + +``` +服务提供方 +``` + +执行时间过长,则 + +``` +调用方 +``` + +可以直接以超时的方式直接返回,快速失败。 + +![img](https:////upload-images.jianshu.io/upload_images/14126519-55a0be64ecac4cda.png?imageMogr2/auto-orient/strip|imageView2/2/w/640/format/webp) + +线程池隔离的几点好处 + +> 1. 使用超时返回的机制,避免同步调用服务时,调用时间过长,无法释放,导致资源耗尽的情况 +> 2. 服务方可以控制请求数量,请求过多,可以直接拒绝,达到快速失败的目的; +> 3. 请求排队,线程池可以维护执行队列,将请求压到队列中处理 + +举个例子,如下代码段,模拟了同步调用服务的过程: + +```java + //服务提供方,执行服务的时候模拟2分钟的耗时 + Callable callableService = ()->{ + long start = System.currentTimeMillis(); + while(System.currentTimeMillis()-start> 1000 * 60 *2){ + //模拟服务执行时间过长的情况 + } + return "OK"; + }; + + //模拟10个客户端调用服务 + ExecutorService clients = Executors.newFixedThreadPool(10); + //模拟给10个客户端提交处理请求 + for (int i = 0; i < 20; i++) { + clients.execute(()->{ + //同步调用 + try { + String result = callableService.call(); + System.out.println("当前客户端:"+Thread.currentThread().getName()+"调用服务完成,得到结果:"+result); + } catch (Exception e) { + e.printStackTrace(); + } + }); + } +``` + +在此环节中,客户端 `clients`必须等待服务方返回结果之后,才能接收新的请求。如果用吞吐量来衡量系统的话,会发现系统的处理能力比较低。为了提高相应时间,可以借助线程池的方式,设置超时时间,这样的话,客户端就不需要必须等待服务方返回,如果时间过长,可以提前返回,改造后的代码如下所示: + +```java + //服务提供方,执行服务的时候模拟2分钟的耗时 + Callable callableService = ()->{ + long start = System.currentTimeMillis(); + while(System.currentTimeMillis()-start> 1000 * 60 *2){ + //模拟服务执行时间过长的情况 + } + return "OK"; + }; + + //创建线程池作为服务方 + ExecutorService executorService = Executors.newFixedThreadPool(30); + + + //模拟10个客户端调用服务 + ExecutorService clients = Executors.newFixedThreadPool(10); + for (int i = 0; i < 10; i++) { + clients.execute(()->{ + //同步调用 + //将请求提交给线程池执行,Callable 和 Runnable在某种意义上,也是Command对象 + Future future = executorService.submit(callableService::call); + //在指定的时间内获取结果,如果超时,调用方可以直接返回 + try { + String result = future.get(1000, TimeUnit.SECONDS); + //客户端等待时间之后,快速返回 + System.out.println("当前客户端:"+Thread.currentThread().getName()+"调用服务完成,得到结果:"+result); + }catch (TimeoutException timeoutException){ + System.out.println("服务调用超时,返回处理"); + } catch (InterruptedException e) { + + } catch (ExecutionException e) { + } + }); + } +``` + +如果我们将服务方的线程池设置为: + +```java +ThreadPoolExecutor executorService = new ThreadPoolExecutor(10,1000,TimeUnit.SECONDS, +new ArrayBlockingQueue<>(100), +new ThreadPoolExecutor.DiscardPolicy() // 提交请求过多时,可以丢弃请求,避免死等阻塞的情况。 +) +``` + +**线程池隔离模式的弊端** + +> 线程池隔离模式,会根据服务划分出独立的线程池,系统资源的线程并发数是有限的,当线程数过多,系统话费大量的 CPU 时间来做线程上下文切换的无用操作,反而降低系统性能;如果线程池隔离的过多,会导致真正用于接收用户请求的线程就相应地减少,系统吞吐量反而下降; +> **在实践上,应当对像远程方法调用,网络资源请求这种服务时间不太可控的场景下使用线程池隔离模式处理** +> 如下图所示,是线程池隔离模式的三种场景: + +![img](https:////upload-images.jianshu.io/upload_images/14126519-8e16e7f8072475eb.png?imageMogr2/auto-orient/strip|imageView2/2/w/640/format/webp) + +### 信号量隔离 + +由于基于线程池隔离的模式占用系统线程池资源,Hystrix 还提供了另外一个隔离技术:基于信号量的隔离。 + +基于信号量的隔离方式非常地简单,其核心就是使用共用变量 + +``` +semaphore +``` + +进行原子操作,控制线程的并发量,当并发量达到一定量级时,服务禁止调用。如下图所示:信号量本身不会消耗多余的线程资源,所以就非常轻量。 + +![img](https:////upload-images.jianshu.io/upload_images/14126519-9af3442e03df941e.png?imageMogr2/auto-orient/strip|imageView2/2/w/640/format/webp) + +基于信号量隔离的利弊 + +> 利:基于信号量的隔离,利用 JVM 的原子性 CAS 操作,避免了资源锁的竞争,省去了线程池开销,效率非常高; +> 弊:本质上基于信号量的隔离是同步行为,所以无法做到超时熔断,所以服务方自身要控制住执行时间,避免超时。 +> 应用场景:**业务服务上,有并发上限限制时,可以考虑此方式** > `Alibaba Sentinel`开源框架,就是基于信号量的熔断和断路器框架。 + +## 五、Hystrix 应用 + +### Spring Cloud + Hystrix + +- **Hystrix 配置无法动态调节生效**。Hystrix 框架本身是使用的[Archaius](https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2FNetflix%2Farchaius)框架完成的配置加载和刷新,但是集成自 Spring Cloud 下,无法有效地根据实时监控结果,动态调整熔断和系统参数 +- **线程池和 Command 之间的配置比较复杂**,在 Spring Cloud 在做 feigin-hystrix 集成的时候,还有些 BUG,对 command 的默认配置没有处理好,导致所有 command 占用公共的 command 线程池,没有细粒度控制,还需要做框架适配调整 + +```php +public interface SetterFactory { + + /** + * Returns a hystrix setter appropriate for the given target and method + */ + HystrixCommand.Setter create(Target target, Method method); + + /** + * Default behavior is to derive the group key from {@link Target#name()} and the command key from + * {@link Feign#configKey(Class, Method)}. + */ + final class Default implements SetterFactory { + + @Override + public HystrixCommand.Setter create(Target target, Method method) { + String groupKey = target.name(); + String commandKey = Feign.configKey(target.type(), method); + return HystrixCommand.Setter + .withGroupKey(HystrixCommandGroupKey.Factory.asKey(groupKey)) + .andCommandKey(HystrixCommandKey.Factory.asKey(commandKey)); + //没有处理好default配置项的加载 + } + } +} +``` + +## Hystrix 配置 + +> 详细配置可以参考 [Hystrix 官方配置手册](https://github.com/Netflix/Hystrix/wiki/Configuration),这里仅介绍比较核心的配置 + +### 执行配置 + +以下配置用于控制 [`HystrixCommand.run()`]() 如何执行。 + +| 配置项 | 说明 | 默认值 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------- | -------- | +| [`execution.isolation.strategy`](https://github.com/Netflix/Hystrix/wiki/Configuration#execution.isolation.strategy) | 线程隔离(THREAD)或信号量隔离(SEMAPHORE) | THREAD | +| [`execution.isolation.thread.timeoutInMilliseconds`](https://github.com/Netflix/Hystrix/wiki/Configuration#execution.isolation.thread.timeoutInMilliseconds) | 方法执行超时时间 | 1000(ms) | +| [`execution.isolation.semaphore.maxConcurrentRequests`](https://github.com/Netflix/Hystrix/wiki/Configuration#execution.isolation.semaphore.maxConcurrentRequests) | 信号量隔离最大并发数 | 10 | + +### 断路配置 + +以下配置用于控制 [`HystrixCircuitBreaker`](http://netflix.github.io/Hystrix/javadoc/index.html?com/netflix/hystrix/HystrixCircuitBreaker.html) 的断路处理。 + +| 配置项 | 说明 | 默认值 | +| :------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------- | :------- | +| [`circuitBreaker.enabled`](https://github.com/Netflix/Hystrix/wiki/Configuration#circuitBreaker.enabled) | 是否开启断路器 | true | +| [`circuitBreaker.requestVolumeThreshold`](https://github.com/Netflix/Hystrix/wiki/Configuration#circuitBreaker.requestVolumeThreshold) | 断路器启用请求数阈值 | 20 | +| [`circuitBreaker.sleepWindowInMilliseconds`](https://github.com/Netflix/Hystrix/wiki/Configuration#circuitBreaker.sleepWindowInMilliseconds) | 断路器启用后的休眠时间 | 5000(ms) | +| [`circuitBreaker.errorThresholdPercentage`](https://github.com/Netflix/Hystrix/wiki/Configuration#circuitBreaker.errorThresholdPercentage) | 断路器启用失败率阈值 | 50(%) | +| [`circuitBreaker.forceOpen`](https://github.com/Netflix/Hystrix/wiki/Configuration#circuitBreaker.forceOpen) | 是否强制将断路器设置成开启状态 | false | +| [`circuitBreaker.forceClosed`](https://github.com/Netflix/Hystrix/wiki/Configuration#circuitBreaker.forceClosed) | 是否强制将断路器设置成关闭状态 | false | + +### 指标配置 + +以下配置用于从 HystrixCommand 和 HystrixObservableCommand 执行中捕获相关指标。 + +| 配置项 | 说明 | 默认值 | +| :----------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------- | :-------- | +| [`metrics.rollingStats.timeInMilliseconds`](https://github.com/Netflix/Hystrix/wiki/Configuration#metrics.rollingStats.timeInMilliseconds) | 时间窗的长度 | 10000(ms) | +| [`metrics.rollingStats.numBuckets`](https://github.com/Netflix/Hystrix/wiki/Configuration#metrics.rollingStats.numBuckets) | 桶的数量,需要保证`timeInMilliseconds % numBuckets =0` | 10 | +| [`metrics.rollingPercentile.enabled`](https://github.com/Netflix/Hystrix/wiki/Configuration#metrics.rollingPercentile.enabled) | 是否统计运行延迟的占比 | true | +| [`metrics.rollingPercentile.timeInMilliseconds`](https://github.com/Netflix/Hystrix/wiki/Configuration#metrics.rollingPercentile.timeInMilliseconds) | **运行延迟占比**统计的时间窗 | 60000(ms) | +| [`metrics.rollingPercentile.numBuckets`](https://github.com/Netflix/Hystrix/wiki/Configuration#metrics.rollingPercentile.numBuckets) | **运行延迟占比**统计的桶数 | 6 | +| [`metrics.rollingPercentile.bucketSize`](https://github.com/Netflix/Hystrix/wiki/Configuration#metrics.rollingPercentile.bucketSize) | 百分比统计桶的容量,桶内最多保存的运行时间统计 | 100 | +| [`metrics.healthSnapshot.intervalInMilliseconds`](https://github.com/Netflix/Hystrix/wiki/Configuration#metrics.healthSnapshot.intervalInMilliseconds) | 统计快照刷新间隔 | 500 (ms) | + +### 线程池配置 + +以下配置用于控制 Hystrix Command 执行所使用的线程池。 + +| 配置项 | 说明 | 默认值 | +| :------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----- | +| [`coreSize`](https://github.com/Netflix/Hystrix/wiki/Configuration#coreSize) | 线程池核心线程数 | 10 | +| [`maximumSize`](https://github.com/Netflix/Hystrix/wiki/Configuration#maximumSize) | 线程池最大线程数 | 10 | +| [`maxQueueSize`](https://github.com/Netflix/Hystrix/wiki/Configuration#maxQueueSize) | 最大 LinkedBlockingQueue 的大小,-1 表示用 SynchronousQueue | -1 | +| [`queueSizeRejectionThreshold`](https://github.com/Netflix/Hystrix/wiki/Configuration#queueSizeRejectionThreshold) | 队列大小阈值,超过则拒绝 | 5 | +| [`allowMaximumSizeToDivergeFromCoreSize`](https://github.com/Netflix/Hystrix/wiki/Configuration#allowMaximumSizeToDivergeFromCoreSize) | 此属性允许 maximumSize 的配置生效。该值可以等于或大于 coreSize。设置 coreSize [Apache Dubbo](https://dubbo.apache.org/zh-cn/) 是一款高性能、轻量级的开源 Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 + +## 一、Dubbo 简介 + +[Apache Dubbo](https://dubbo.apache.org/zh-cn/) 是一款高性能、轻量级的开源 Java RPC 框架。 + +Dubbo 提供了三大核心能力: + +- 面向接口的远程方法调用 +- 智能容错和负载均衡 +- 服务自动注册和发现 + +### RPC 原理简介 + +#### 什么是 RPC + +RPC(Remote Procedure Call),即远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。比如两个不同的服务 A、B 部署在两台不同的机器上,那么服务 A 如果想要调用服务 B 中的某个方法该怎么办呢?使用 HTTP 请求 当然可以,但是可能会比较慢而且一些优化做的并不好。 RPC 的出现就是为了解决这个问题。 + +#### RPC 工作流程 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200305121252.jpg) + +1. 服务消费方(client)调用以本地调用方式调用服务; +2. client stub 接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体; +3. client stub 找到服务地址,并将消息发送到服务端; +4. server stub 收到消息后进行解码; +5. server stub 根据解码结果调用本地的服务; +6. 本地服务执行并将结果返回给 server stub; +7. server stub 将返回结果打包成消息并发送至消费方; +8. client stub 接收到消息,并进行解码; +9. 服务消费方得到最终结果。 + +### 为什么需要 Dubbo + +**如果你要开发分布式程序,你也可以直接基于 HTTP 接口进行通信,但是为什么要用 Dubbo 呢?** + +我觉得主要可以从 Dubbo 提供的下面四点特性来说为什么要用 Dubbo: + +1. **负载均衡**——同一个服务部署在不同的机器时该调用那一台机器上的服务。 +2. **服务调用链路**——随着系统的发展,服务越来越多,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。Dubbo 可以为我们解决服务之间互相是如何调用的。 +3. **服务访问压力以及时长统计、资源调度和治理**——基于访问压力实时管理集群容量,提高集群利用率。 +4. **服务治理**——某个服务挂掉之后调用备用服务。 + +另外,Dubbo 除了能够应用在分布式系统中,也可以应用在现在比较火的微服务系统中。不过,由于 Spring Cloud 在微服务中应用更加广泛,所以,我觉得一般我们提 Dubbo 的话,大部分是分布式系统的情况。 + +## 二、QuickStart + +(1)添加 maven 依赖 + +```xml + + com.alibaba + dubbo + ${dubbo.version} + +``` + +(2)定义 Provider + +```java +package com.alibaba.dubbo.demo; + +public interface DemoService { + String sayHello(String name); +} +``` + +(3)实现 Provider + +```java +package com.alibaba.dubbo.demo.provider; +import com.alibaba.dubbo.demo.DemoService; + +public class DemoServiceImpl implements DemoService { + public String sayHello(String name) { + return "Hello " + name; + } +} +``` + +(4)配置 Provider + +```xml + + + + + + + + +``` + +(5)启动 Provider + +```java +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class Provider { + public static void main(String[] args) throws Exception { + ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( + new String[] {"META-INF/spring/dubbo-demo-provider.xml"}); + context.start(); + // press any key to exit + System.in.read(); + } +} +``` + +(6)配置 Consumer + +```xml + + + + + + +``` + +(7)启动 Consumer + +```java +import com.alibaba.dubbo.demo.DemoService; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class Consumer { + public static void main(String[] args) throws Exception { + ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( + new String[]{"META-INF/spring/dubbo-demo-consumer.xml"}); + context.start(); + // obtain proxy object for remote invocation + DemoService demoService = (DemoService) context.getBean("demoService"); + // execute remote invocation + String hello = demoService.sayHello("world"); + // show the result + System.out.println(hello); + } +} +``` + +## 三、Dubbo 配置 + +Dubbo 所有配置最终都将转换为 URL 表示,并由服务提供方生成,经注册中心传递给消费方,各属性对应 URL 的参数,参见配置项一览表中的 "对应 URL 参数" 列。 + +只有 group,interface,version 是服务的匹配条件,三者决定是不是同一个服务,其它配置项均为调优和治理参数。 + +URL 格式:`protocol://username:password@host:port/path?key=value&key=value` + +### 配置方式 + +Dubbo 支持多种配置方式: + +- xml 配置 +- properties 配置 +- API 配置 +- 注解配置 + +如果同时存在多种配置方式,遵循以下覆盖策略: + +- JVM 启动 -D 参数优先,这样可以使用户在部署和启动时进行参数重写,比如在启动时需改变协议的端口。 +- XML 次之,如果在 XML 中有配置,则 dubbo.properties 中的相应配置项无效。 +- Properties 最后,相当于缺省值,只有 XML 没有配置时,dubbo.properties 的相应配置项才会生效,通常用于共享公共配置,比如应用名。 + +
    + +
    + +#### xml 配置 + +示例: + +```xml + + + + + + + + + + + + + + + + +``` + +Dubbo 会把以上配置项解析成下面的 URL 格式: + +``` +dubbo://host-ip:20880/com.alibaba.dubbo.demo.DemoService +``` + +然后基于[扩展点自适应机制](http://dubbo.incubator.apache.org/zh-cn/docs/dev/SPI.html),通过 URL 的 `dubbo://` 协议头识别,就会调用 DubboProtocol 的 export() 方法,打开服务端口 20880,就可以把服务 demoService 暴露到 20880 端口了。 + +#### properties 配置 + +示例: + +```properties +dubbo.application.name=foo +dubbo.application.owner=bar +dubbo.registry.address=10.20.153.10:9090 +``` + +### 配置项 + +所有配置项分为三大类: + +- 服务发现:表示该配置项用于服务的注册与发现,目的是让消费方找到提供方。 +- 服务治理:表示该配置项用于治理服务间的关系,或为开发测试提供便利条件。 +- 性能调优:表示该配置项用于调优性能,不同的选项对性能会产生影响。 + +配置项清单: + +| 标签 | 用途 | 解释 | +| ------------------- | ------------ | ------------------------------------------------------------------------------------------------ | +| `dubbo:service` | 服务配置 | 用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心 | +| `dubbo:reference` | 引用配置 | 用于创建一个远程服务代理,一个引用可以指向多个注册中心 | +| `dubbo:protocol` | 协议配置 | 用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受 | +| `dubbo:application` | 应用配置 | 用于配置当前应用信息,不管该应用是提供者还是消费者 | +| `dubbo:module` | 模块配置 | 用于配置当前模块信息,可选 | +| `dubbo:registry` | 注册中心配置 | 用于配置连接注册中心相关信息 | +| `dubbo:monitor` | 监控中心配置 | 用于配置连接监控中心相关信息,可选 | +| `dubbo:provider` | 提供方配置 | 当 ProtocolConfig 和 ServiceConfig 某属性没有配置时,采用此缺省值,可选 | +| `dubbo:consumer` | `消费方配置` | `当 ReferenceConfig 某属性没有配置时,采用此缺省值,可选` | +| `dubbo:method` | 方法配置 | 用于 ServiceConfig 和 ReferenceConfig 指定方法级的配置信息 | +| `dubbo:argument` | 参数配置 | 用于指定方法参数配置 | + +> 详细配置说明请参考:[官方配置](http://dubbo.apache.org/books/dubbo-user-book/references/xml/introduction.html) + +#### 配置之间的关系 + +
    + +
    + +#### 配置覆盖关系 + +以 timeout 为例,显示了配置的查找顺序,其它 retries, loadbalance, actives 等类似: + +- **方法级优先,接口级次之,全局配置再次之**。 +- **如果级别一样,则消费方优先,提供方次之**。 + +其中,服务提供方配置,通过 URL 经由注册中心传递给消费方。 + +
    + +
    +### 动态配置中心 + +配置中心(v2.7.0)在 Dubbo 中承担两个职责: + +1. 外部化配置。启动配置的集中式存储 (简单理解为 dubbo.properties 的外部化存储)。 +2. 服务治理。服务治理规则的存储与通知。 + +启用动态配置: + +```xml + +``` + +或者 + +```properties +dubbo.config-center.address=zookeeper://127.0.0.1:2181 +``` + +或者 + +```java +ConfigCenterConfig configCenter = new ConfigCenterConfig(); +configCenter.setAddress("zookeeper://127.0.0.1:2181"); +``` + +## 四、Dubbo 架构 + +### Dubbo 核心组件 + +
    + +
    + +节点角色: + +| 节点 | 角色说明 | +| --------- | -------------------------------------- | +| Provider | 暴露服务的服务提供方 | +| Consumer | 调用远程服务的服务消费方 | +| Registry | 服务注册与发现的注册中心 | +| Monitor | 统计服务的调用次数和调用时间的监控中心 | +| Container | 服务运行容器 | + +调用关系: + +1. 服务容器负责启动,加载,运行服务提供者。 +2. 服务提供者在启动时,向注册中心注册自己提供的服务。 +3. 服务消费者在启动时,向注册中心订阅自己所需的服务。 +4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。 +5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。 +6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。 + +**重要知识点总结:** + +- **注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小** +- **监控中心负责统计各服务调用次数,调用时间等,统计先在内存汇总后每分钟一次发送到监控中心服务器,并以报表展示** +- **注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外** +- **注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送事件通知消费者** +- **注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表** +- **注册中心和监控中心都是可选的,服务消费者可以直连服务提供者** +- **服务提供者无状态,任意一台宕掉后,不影响使用** +- **服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复** + +> 问:注册中心挂了可以继续通信吗? +> +> 答:可以,因为刚开始初始化的时候,消费者会将提供者的地址等信息**拉取到本地缓存**,所以注册中心挂了可以继续通信。 + +### Dubbo 架构层次 + +
    + +
    + +图例说明: + +- 图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口。 +- 图中从下至上分为十层,各层均为单向依赖,右边的黑色箭头代表层之间的依赖关系,每一层都可以剥离上层被复用,其中,Service 和 Config 层为 API,其它各层均为 SPI。 +- 图中绿色小块的为扩展接口,蓝色小块为实现类,图中只显示用于关联各层的实现类。 +- 图中蓝色虚线为初始化过程,即启动时组装链,红色实线为方法调用过程,即运行时调时链,紫色三角箭头为继承,可以把子类看作父类的同一个节点,线上的文字为调用的方法。 + +#### 各层说明 + +- **config 配置层**:对外配置接口,以 ServiceConfig, ReferenceConfig 为中心,可以直接初始化配置类,也可以通过 spring 解析配置生成配置类 +- **proxy 服务代理层**:服务接口透明代理,生成服务的客户端 Stub 和服务器端 Skeleton, 以 ServiceProxy 为中心,扩展接口为 ProxyFactory +- **registry 注册中心层**:封装服务地址的注册与发现,以服务 URL 为中心,扩展接口为 RegistryFactory, Registry, RegistryService +- **cluster 路由层**:封装多个提供者的路由及负载均衡,并桥接注册中心,以 Invoker 为中心,扩展接口为 Cluster, Directory, Router, LoadBalance +- **monitor 监控层**:RPC 调用次数和调用时间监控,以 Statistics 为中心,扩展接口为 MonitorFactory, Monitor, MonitorService +- **protocol 远程调用层**:封装 RPC 调用,以 Invocation, Result 为中心,扩展接口为 Protocol, Invoker, Exporter +- **exchange 信息交换层**:封装请求响应模式,同步转异步,以 Request, Response 为中心,扩展接口为 Exchanger, ExchangeChannel, ExchangeClient, ExchangeServer +- **transport 网络传输层**:抽象 mina 和 netty 为统一接口,以 Message 为中心,扩展接口为 Channel, Transporter, Client, Server, Codec +- **serialize 数据序列化层**:可复用的一些工具,扩展接口为 Serialization, ObjectInput, ObjectOutput, ThreadPool +- **serialize 数据序列化层**:可复用的一些工具,扩展接口为 Serialization, ObjectInput, ObjectOutput, ThreadPool + +#### 各层关系说明 + +- 在 RPC 中,Protocol 是核心层,也就是只要有 Protocol + Invoker + Exporter 就可以完成非透明的 RPC 调用,然后在 Invoker 的主过程上 Filter 拦截点。 +- 图中的 Consumer 和 Provider 是抽象概念,只是想让看图者更直观的了解哪些类分属于客户端与服务器端,不用 Client 和 Server 的原因是 Dubbo 在很多场景下都使用 Provider, Consumer, Registry, Monitor 划分逻辑拓普节点,保持统一概念。 +- 而 Cluster 是外围概念,所以 Cluster 的目的是将多个 Invoker 伪装成一个 Invoker,这样其它人只要关注 Protocol 层 Invoker 即可,加上 Cluster 或者去掉 Cluster 对其它层都不会造成影响,因为只有一个提供者时,是不需要 Cluster 的。 +- Proxy 层封装了所有接口的透明化代理,而在其它层都以 Invoker 为中心,只有到了暴露给用户使用时,才用 Proxy 将 Invoker 转成接口,或将接口实现转成 Invoker,也就是去掉 Proxy 层 RPC 是可以 Run 的,只是不那么透明,不那么看起来像调本地服务一样调远程服务。 +- 而 Remoting 实现是 Dubbo 协议的实现,如果你选择 RMI 协议,整个 Remoting 都不会用上,Remoting 内部再划为 Transport 传输层和 Exchange 信息交换层,Transport 层只负责单向消息传输,是对 Mina, Netty, Grizzly 的抽象,它也可以扩展 UDP 传输,而 Exchange 层是在传输层之上封装了 Request-Response 语义。 +- Registry 和 Monitor 实际上不算一层,而是一个独立的节点,只是为了全局概览,用层的方式画在一起。 + +## 五、服务发现 + +服务提供者注册服务的过程: + +Dubbo 配置项 `dubbo://registry` 声明了注册中心的地址,Dubbo 会把以上配置项解析成类似下面的 URL 格式: + +``` +registry://multicast://224.5.6.7:1234/com.alibaba.dubbo.registry.RegistryService?export=URL.encode("dubbo://host-ip:20880/com.alibaba.dubbo.demo.DemoService") +``` + +然后基于扩展点自适应机制,通过 URL 的“registry://”协议头识别,就会调用 RegistryProtocol 的 export() 方法,将 export 参数中的提供者 URL,注册到注册中心。 + +服务消费者发现服务的过程: + +Dubbo 配置项 `dubbo://registry` 声明了注册中心的地址,跟服务注册的原理类似,Dubbo 也会把以上配置项解析成下面的 URL 格式: + +``` +registry://multicast://224.5.6.7:1234/com.alibaba.dubbo.registry.RegistryService?refer=URL.encode("consummer://host-ip/com.alibaba.dubbo.demo.DemoService") +``` + +然后基于扩展点自适应机制,通过 URL 的“registry://”协议头识别,就会调用 RegistryProtocol 的 refer() 方法,基于 refer 参数中的条件,查询服务 demoService 的地址。 + +### 启动时检查 + +Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题,默认 `check="true"`。 + +可以通过 xml、properties、-D 参数三种方式设置。启动时检查 + +## 六、Dubbo 协议 + +Dubbo 支持多种通信协议,不同的协议针对不同的序列化方式。 + +### dubbo 协议 + +[dubbo](http://dubbo.apache.org/zh-cn/docs/user/references/protocol/dubbo.html) 协议是 Dubbo 的默认通信协议,采用单一长连接和 NIO 异步通信,基于 hessian 作为序列化协议。 + +[dubbo](http://dubbo.apache.org/zh-cn/docs/user/references/protocol/dubbo.html) 协议适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。反之,Dubbo 缺省协议不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。 + +为了要支持高并发场景,一般是服务提供者就几台机器,但是服务消费者有上百台,可能每天调用量达到上亿次!此时用长连接是最合适的,就是跟每个服务消费者维持一个长连接就可以,可能总共就 100 个连接。然后后面直接基于长连接 NIO 异步通信,可以支撑高并发请求。 + +### rmi 协议 + +[rmi](http://dubbo.apache.org/zh-cn/docs/user/references/protocol/rmi.html) - 采用 JDK 标准的 `java.rmi.*` 实现,采用阻塞式短连接和 JDK 标准序列化方式。 + +注意:如果正在使用 RMI 提供服务给外部访问,同时应用里依赖了老的 `common-collections` 包的情况下,存在反序列化安全风险。 + +### hessian 协议 + +[hessian](http://dubbo.apache.org/zh-cn/docs/user/references/protocol/hessian.html) 协议用于集成 Hessian 的服务,Hessian 底层采用 Http 通讯,采用 Servlet 暴露服务,Dubbo 缺省内嵌 Jetty 作为服务器实现。 + +Dubbo 的 Hessian 协议可以和原生 Hessian 服务互操作,即: + +- 提供者用 Dubbo 的 Hessian 协议暴露服务,消费者直接用标准 Hessian 接口调用 +- 或者提供方用标准 Hessian 暴露服务,消费方用 Dubbo 的 Hessian 协议调用。 + +### thrift 协议 + +当前 dubbo 支持的 [thrift](http://dubbo.apache.org/zh-cn/docs/user/references/protocol/thrift.html) 协议是对 thrift 原生协议的扩展,在原生协议的基础上添加了一些额外的头信息,比如 service name,magic number 等。 + +使用 dubbo thrift 协议同样需要使用 thrift 的 idl compiler 编译生成相应的 java 代码,后续版本中会在这方面做一些增强。 + +### http 协议 + +[http](http://dubbo.apache.org/zh-cn/docs/user/references/protocol/http.html) 协议基于 HTTP 表单的远程调用协议,采用 Spring 的 HttpInvoker 实现。 + +使用 JSON 序列化方式。 + +### webservice 协议 + +基于 WebService 的远程调用协议,基于 [Apache CXF](http://cxf.apache.org/) 的 `frontend-simple` 和 `transports-http` 实现。 + +使用 SOAP 序列化方式。 + +可以和原生 WebService 服务互操作,即: + +- 提供者用 Dubbo 的 WebService 协议暴露服务,消费者直接用标准 WebService 接口调用, +- 或者提供方用标准 WebService 暴露服务,消费方用 Dubbo 的 WebService 协议调用。 + +### rest 协议 + +基于标准的 Java REST API——JAX-RS 2.0(Java API for RESTful Web Services 的简写)实现的 REST 调用支持 + +### memcached 协议 + +基于 memcached 实现的 RPC 协议。 + +### redis 协议 + +基于 redis 实现的 RPC 协议。 + +> 在现实世界中,序列化有多种方式。 +> +> JDK 自身提供的序列化方式,效率不高,但是 Java 程序使用最多。 +> +> 如果想要较好的可读性,可以使用 JSON (常见库有:[jackson](https://github.com/FasterXML/jackson)、[gson](https://github.com/google/gson)、[fastjson](https://github.com/alibaba/fastjson))或 SOAP (即 xml 形式) +> +> 如果想要更好的性能,可以使用 [thrift](https://github.com/apache/thrift)、[protobuf](https://github.com/protocolbuffers/protobuf)、[hessian](http://hessian.caucho.com/doc/hessian-overview.xtp) +> +> 想深入了解可以参考:[序列化](https://github.com/dunwu/java-tutorial/blob/master/docs/lib/serialized) + +## 七、集群容错 + +在集群调用失败时,Dubbo 提供了多种容错方案,缺省为 failover 重试。 + +
    + +
    + +- **Failover** - **失败自动切换**,当出现失败,重试其它服务器。通常用于读操作,但重试会带来更长延迟。可通过 retries="2" 来设置重试次数(不含第一次)。 +- **Failfast** - **快速失败**,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记录。 +- **Failsafe** - **失败安全**,出现异常时,直接忽略。通常用于写入审计日志等操作。 +- **Failback** - **失败自动恢复**,后台记录失败请求,定时重发。通常用于消息通知操作。 +- **Forking** - **并行调用多个服务器**,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过 forks="2" 来设置最大并行数。 +- **Broadcast** - **广播调用所有提供者**,逐个调用,任意一台报错则报错。通常用于通知所有提供者更新缓存或日志等本地资源信息。 + +集群容错配置示例: + +```xml + + +``` + +## 八、负载均衡 + +Dubbo 提供了多种负载均衡(LoadBalance)策略,缺省为 `Random` 随机调用。 + +Dubbo 的负载均衡配置可以细粒度到服务、方法级别,且 `dubbo:service` 和 `dubbo:reference` 均可配置。 + +```xml + + + + + + + + + + + + +``` + +#### Random + +- **随机**,按权重设置随机概率。 +- 在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。 + +#### RoundRobin + +- **轮询**,按公约后的权重设置轮询比率。 +- 存在慢的提供者累积请求的问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。 + +#### LeastActive + +- **最少活跃调用数**,相同活跃数的随机,活跃数指调用前后计数差。 +- 使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。 + +#### ConsistentHash + +- **一致性 Hash**,相同参数的请求总是发到同一提供者。 +- 当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动。 +- 算法参见:[http://en.wikipedia.org/wiki/Consistent_hashing](http://en.wikipedia.org/wiki/Consistent_hashing) +- 缺省只对第一个参数 Hash,如果要修改,请配置 `` +- 缺省用 160 份虚拟节点,如果要修改,请配置 `` + +## 九、Dubbo 服务治理 + +### 服务治理简介 + +- 当服务越来越多时,服务 URL 配置管理变得非常困难,F5 硬件负载均衡器的单点压力也越来越大。 +- 当进一步发展,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。 +- 接着,服务的调用量越来越大,服务的容量问题就暴露出来,这个服务需要多少机器支撑?什么时候该加机器? + +以上问题可以归纳为服务治理问题,这也是 Dubbo 的核心功能。 + +#### 调用链路 + +一个微服务架构,往往由大量分布式服务组成。那么这些服务之间互相是如何调用的?调用链路是啥?说实话,几乎到后面没人搞的清楚了,因为服务实在太多了,可能几百个甚至几千个服务。 + +那就需要基于 dubbo 做的分布式系统中,对各个服务之间的调用自动记录下来,然后自动将**各个服务之间的依赖关系和调用链路生成出来**,做成一张图,显示出来,大家才可以看到对吧。 + +#### 服务访问压力以及时长统计 + +需要自动统计**各个接口和服务之间的调用次数以及访问延时**,而且要分成两个级别。 + +- 一个级别是接口粒度,就是每个服务的每个接口每天被调用多少次,TP50/TP90/TP99,三个档次的请求延时分别是多少; +- 第二个级别是从源头入口开始,一个完整的请求链路经过几十个服务之后,完成一次请求,每天全链路走多少次,全链路请求延时的 TP50/TP90/TP99,分别是多少。 + +#### 其他 + +- 服务分层(避免循环依赖) +- 调用链路失败监控和报警 +- 服务鉴权 +- 每个服务的可用性的监控(接口调用成功率?几个 9?99.99%,99.9%,99%) + +所谓失败重试,就是 consumer 调用 provider 要是失败了,比如抛异常了,此时应该是可以重试的,或者调用超时了也可以重试。配置如下: + +``` + +``` + +举个栗子。 + +某个服务的接口,要耗费 5s,你这边不能干等着,你这边配置了 timeout 之后,我等待 2s,还没返回,我直接就撤了,不能干等你。 + +可以结合你们公司具体的场景来说说你是怎么设置这些参数的: + +- `timeout`:一般设置为 `200ms`,我们认为不能超过 `200ms` 还没返回。 +- `retries`:设置 retries,一般是在读请求的时候,比如你要查询个数据,你可以设置个 retries,如果第一次没读到,报错,重试指定的次数,尝试再次读取。 + +### 路由规则 + +路由规则决定一次 dubbo 服务调用的目标服务器,分为条件路由规则和脚本路由规则,并且支持可扩展。 + +向注册中心写入路由规则的操作通常由监控中心或治理中心的页面完成。 + +```java +RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension(); +Registry registry = registryFactory.getRegistry(URL.valueOf("zookeeper://10.20.153.10:2181")); +registry.register(URL.valueOf("condition://0.0.0.0/com.foo.BarService?category=routers&dynamic=false&rule=" + URL.encode("host = 10.20.153.10 => host = 10.20.153.11") + ")); +``` + +- **condition://** - 表示路由规则的类型,支持条件路由规则和脚本路由规则,可扩展,必填。 +- **0.0.0.0** - 表示对所有 IP 地址生效,如果只想对某个 IP 的生效,请填入具体 IP,必填。 +- **com.foo.BarService** - 表示只对指定服务生效,必填。 +- **category=routers** - 表示该数据为动态配置类型,必填。 +- **dynamic=false** - 表示该数据为持久数据,当注册方退出时,数据依然保存在注册中心,必填。 +- **enabled=true** - 覆盖规则是否生效,可不填,缺省生效。 +- **force=false** - 当路由结果为空时,是否强制执行,如果不强制执行,路由结果为空的路由规则将自动失效,可不填,缺省为 flase。 +- **runtime=false** - 是否在每次调用时执行路由规则,否则只在提供者地址列表变更时预先执行并缓存结果,调用时直接从缓存中获取路由结果。如果用了参数路由,必须设为 true,需要注意设置会影响调用的性能,可不填,缺省为 flase。 +- **priority=1** - 路由规则的优先级,用于排序,优先级越大越靠前执行,可不填,缺省为 0。 +- **rule=URL.encode("host = 10.20.153.10 => host = 10.20.153.11")** - 表示路由规则的内容,必填。 + +### 服务降级 + +可以通过服务降级功能临时屏蔽某个出错的非关键服务,并定义降级后的返回策略。 + +向注册中心写入动态配置覆盖规则: + +```java +RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension(); +Registry registry = registryFactory.getRegistry(URL.valueOf("zookeeper://10.20.153.10:2181")); +registry.register(URL.valueOf("override://0.0.0.0/com.foo.BarService?category=configurators&dynamic=false&application=foo&mock=force:return+null")); +``` + +其中: + +**`mock=force:return+null`** 表示消费方对该服务的方法调用都直接返回 null 值,不发起远程调用。用来屏蔽不重要服务不可用时对调用方的影响。 +还可以改为 **`mock=fail:return+null`** 表示消费方对该服务的方法调用在失败后,再返回 null 值,不抛异常。用来容忍不重要服务不稳定时对调用方的影响。 + +比如说服务 A 调用服务 B,结果服务 B 挂掉了,服务 A 重试几次调用服务 B,还是不行,那么直接降级,走一个备用的逻辑,给用户返回响应。 + +举个例子,我们有接口 `HelloService`。`HelloServiceImpl` 有该接口的具体实现。 + +```java +public interface HelloService { + void sayHello(); +} + +public class HelloServiceImpl implements HelloService { + public void sayHello() { + System.out.println("hello world......"); + } +} +``` + +Dubbo 配置: + +```xml + + + + + + + + + + + + + + + + + + + + + + + + +``` + +我们调用接口失败的时候,可以通过 `mock` 统一返回 null。 + +mock 的值也可以修改为 true,然后再跟接口同一个路径下实现一个 Mock 类,命名规则是 “接口名称+`Mock`” 后缀。然后在 Mock 类里实现自己的降级逻辑。 + +```java +public class HelloServiceMock implements HelloService { + public void sayHello() { + // 降级逻辑 + } +} +``` + +### 访问控制 + +#### 直连 + +在开发及测试环境下,经常需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连,点对点直联方式,将以服务接口为单位,忽略注册中心的提供者列表,A 接口配置点对点,不影响 B 接口从注册中心获取列表。 + +
    + +
    + +配置方式: + +(1)通过 XML 配置 + +如果是线上需求需要点对点,可在 中配置 url 指向提供者,将绕过注册中心,多个地址用分号隔开,配置如下: + +```xml + +``` + +(2)通过 -D 参数指定 + +在 JVM 启动参数中加入-D 参数映射服务地址: + +``` +java -Dcom.alibaba.xxx.XxxService=dubbo://localhost:20890 +``` + +(3)通过文件映射 +如果服务比较多,也可以用文件映射,用 -Ddubbo.resolve.file 指定映射文件路径,此配置优先级高于 中的配置: + +``` +java -Ddubbo.resolve.file=xxx.properties +``` + +然后在映射文件 xxx.properties 中加入配置,其中 key 为服务名,value 为服务提供者 URL: + +```properties +com.alibaba.xxx.XxxService=dubbo://localhost:20890 +``` + +#### 只订阅 + +为方便开发测试,经常会在线下共用一个所有服务可用的注册中心,这时,如果一个正在开发中的服务提供者注册,可能会影响消费者不能正常运行。 + +可以让服务提供者开发方,只订阅服务(开发的服务可能依赖其它服务),而不注册正在开发的服务,通过直连测试正在开发的服务。 + +禁用注册配置: + +```xml + +``` + +或者 + +```xml + +``` + +#### 只注册 + +如果有两个镜像环境,两个注册中心,有一个服务只在其中一个注册中心有部署,另一个注册中心还没来得及部署,而两个注册中心的其它应用都需要依赖此服务。这个时候,可以让服务提供者方只注册服务到另一注册中心,而不从另一注册中心订阅服务。 + +禁用订阅配置 + +```xml + + +``` + +或者 + +```xml + + +``` + +#### 静态服务 + +有时候希望人工管理服务提供者的上线和下线,此时需将注册中心标识为非动态管理模式。 + +``` + +``` + +或者 + +``` + +``` + +服务提供者初次注册时为禁用状态,需人工启用。断线时,将不会被自动删除,需人工禁用。 + +### 动态配置 + +向注册中心写入动态配置覆盖规则。该功能通常由监控中心或治理中心的页面完成。 + +```java +RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension(); +Registry registry = registryFactory.getRegistry(URL.valueOf("zookeeper://10.20.153.10:2181")); +registry.register(URL.valueOf("override://0.0.0.0/com.foo.BarService?category=configurators&dynamic=false&application=foo&timeout=1000")); +``` + +其中: + +- **override://** - 表示数据采用覆盖方式,支持 override 和 absent,可扩展,必填。 +- **0.0.0.0** - 表示对所有 IP 地址生效,如果只想覆盖某个 IP 的数据,请填入具体 IP,必填。 +- **com.foo.BarService** - 表示只对指定服务生效,必填。 +- **category=configurators** - 表示该数据为动态配置类型,必填。 +- **dynamic=false** - 表示该数据为持久数据,当注册方退出时,数据依然保存在注册中心,必填。 +- **enabled=true** - 覆盖规则是否生效,可不填,缺省生效。 +- **application=foo** - 表示只对指定应用生效,可不填,表示对所有应用生效。 +- **timeout=1000** - 表示将满足以上条件的 timeout 参数的值覆盖为 1000。如果想覆盖其它参数,直接加在 override 的 URL 参数上。 + +示例: + +- 禁用提供者:(通常用于临时踢除某台提供者机器,相似的,禁止消费者访问请使用路由规则) + +``` +override://10.20.153.10/com.foo.BarService?category=configurators&dynamic=false&disbaled=true +``` + +- 调整权重:(通常用于容量评估,缺省权重为 100) + +``` +override://10.20.153.10/com.foo.BarService?category=configurators&dynamic=false&weight=200 +``` + +- 调整负载均衡策略:(缺省负载均衡策略为 random) + +``` +override://10.20.153.10/com.foo.BarService?category=configurators&dynamic=false&loadbalance=leastactive +``` + +- 服务降级:(通常用于临时屏蔽某个出错的非关键服务) + +``` +override://0.0.0.0/com.foo.BarService?category=configurators&dynamic=false&application=foo&mock=force:return+null +``` + +## 十、多版本 + +当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用。 + +可以按照以下的步骤进行版本迁移: + +1. 在低压力时间段,先升级一半提供者为新版本 +2. 再将所有消费者升级为新版本 +3. 然后将剩下的一半提供者升级为新版本 + +老版本服务提供者配置: + +```xml + +``` + +新版本服务提供者配置: + +```xml + +``` + +老版本服务消费者配置: + +```xml + +``` + +新版本服务消费者配置: + +```xml + +``` + +如果不需要区分版本,可以按照以下的方式配置 [[1\]](http://dubbo.apache.org/zh-cn/docs/user/demos/multi-versions.html#fn1): + +```xml + +``` + +## 十一、Dubbo SPI + +SPI 全称为 Service Provider Interface,是一种服务发现机制。SPI 的本质是**将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类**。这样可以在运行时,动态为接口替换实现类。正因此特性,我们可以很容易的通过 SPI 机制为我们的程序提供拓展功能。SPI 机制在第三方框架中也有所应用,比如 Dubbo 就是通过 SPI 机制加载所有的组件。不过,Dubbo 并未使用 Java 原生的 SPI 机制,而是对其进行了增强,使其能够更好的满足需求。在 Dubbo 中,SPI 是一个非常重要的模块。基于 SPI,我们可以很容易的对 Dubbo 进行拓展。 + +Dubbo SPI 的相关逻辑被封装在了 `ExtensionLoader` 类中,通过 `ExtensionLoader`,我们可以加载指定的实现类。Dubbo SPI 所需的配置文件需放置在 `META-INF/dubbo` 路径下。 + +## 参考资料 + +- **官方** + - [Dubbo Github](https://github.com/apache/dubbo) + - [Dubbo 官方文档](https://dubbo.apache.org/zh-cn/) + - [管理员手册](https://dubbo.gitbooks.io/dubbo-admin-book/content/) +- **文章** + - [如何基于 Dubbo 进行服务治理、服务降级、失败重试以及超时重试?](https://github.com/doocs/advanced-java/blob/master/docs/distributed-system/dubbo-service-management.md) diff --git a/docs/mq/README.md b/docs/mq/README.md new file mode 100644 index 00000000..9a23a2f1 --- /dev/null +++ b/docs/mq/README.md @@ -0,0 +1,48 @@ +# Java 和消息队列 + +> 消息队列(Message Queue,简称 MQ)技术是分布式应用间交换信息的一种技术。 +> +> 消息队列主要解决应用耦合,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。 +> +> 如果想深入学习各种消息队列产品,建议先了解一下 [消息队列基本原理](https://github.com/dunwu/blog/blob/master/source/_posts/theory/mq.md) ,有助于理解消息队列特性的实现和设计思路。 + +## 内容 + +- [消息队列基本原理](消息队列基本原理.md) +- [消息队列面经](消息队列面试.md) +- [Kafka 教程](https://dunwu.github.io/bigdata-tutorial/kafka) 📚 +- [RocketMQ](rocketmq.md) +- [ActiveMQ](activemq.md) + +## 技术对比 + +| 特性 | ActiveMQ | RabbitMQ | RocketMQ | Kafka | +| ------------------------ | ------------------------------------- | -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | +| 单机吞吐量 | 万级,比 RocketMQ、Kafka 低一个数量级 | 同 ActiveMQ | 10 万级,支撑高吞吐 | 10 万级,高吞吐,一般配合大数据类的系统来进行实时数据计算、日志采集等场景 | +| topic 数量对吞吐量的影响 | | | topic 可以达到几百/几千的级别,吞吐量会有较小幅度的下降,这是 RocketMQ 的一大优势,在同等机器下,可以支撑大量的 topic | topic 从几十到几百个时候,吞吐量会大幅度下降,在同等机器下,Kafka 尽量保证 topic 数量不要过多,如果要支撑大规模的 topic,需要增加更多的机器资源 | +| 时效性 | ms 级 | 微秒级,这是 RabbitMQ 的一大特点,延迟最低 | ms 级 | 延迟在 ms 级以内 | +| 可用性 | 高,基于主从架构实现高可用 | 同 ActiveMQ | 非常高,分布式架构 | 非常高,分布式,一个数据多个副本,少数机器宕机,不会丢失数据,不会导致不可用 | +| 消息可靠性 | 有较低的概率丢失数据 | 基本不丢 | 经过参数优化配置,可以做到 0 丢失 | 同 RocketMQ | +| 功能支持 | MQ 领域的功能极其完备 | 基于 erlang 开发,并发能力很强,性能极好,延时很低 | MQ 功能较为完善,还是分布式的,扩展性好 | 功能较为简单,主要支持简单的 MQ 功能,在大数据领域的实时计算以及日志采集被大规模使用 | + +综上,各种对比之后,有如下建议: + +- 一般的业务系统要引入 MQ,最早大家都用 ActiveMQ,但是现在确实大家用的不多了,没经过大规模吞吐量场景的验证,社区也不是很活跃,所以大家还是算了吧,我个人不推荐用这个了; +- 后来大家开始用 RabbitMQ,但是确实 erlang 语言阻止了大量的 Java 工程师去深入研究和掌控它,对公司而言,几乎处于不可控的状态,但是确实人家是开源的,比较稳定的支持,活跃度也高; +- 不过现在确实越来越多的公司会去用 RocketMQ,确实很不错,毕竟是阿里出品,但社区可能有突然黄掉的风险(目前 RocketMQ 已捐给 [Apache](https://github.com/apache/rocketmq),但 GitHub 上的活跃度其实不算高)对自己公司技术实力有绝对自信的,推荐用 RocketMQ,否则回去老老实实用 RabbitMQ 吧,人家有活跃的开源社区,绝对不会黄。 +- 所以**中小型公司**,技术实力较为一般,技术挑战不是特别高,用 RabbitMQ 是不错的选择;**大型公司**,基础架构研发实力较强,用 RocketMQ 是很好的选择。 +- 如果是**大数据领域**的实时计算、日志采集等场景,用 Kafka 是业内标准的,绝对没问题,社区活跃度很高,绝对不会黄,何况几乎是全世界这个领域的事实性规范。 + +## 📚 资料 + +- **Kafka** + - [Kafka Github](https://github.com/apache/kafka) + - [Kafka 官网](http://kafka.apache.org/) + - [Kafka 官方文档](https://kafka.apache.org/documentation/) + - [Kafka 中文文档](https://github.com/apachecn/kafka-doc-zh) +- **ActiveMQ** + - [ActiveMQ 官网](http://activemq.apache.org/) + +## 🚪 传送 + +◾ 🏠 [JAVA-TUTORIAL 首页](https://github.com/dunwu/java-tutorial) ◾ 🎯 [我的博客](https://github.com/dunwu/blog) ◾ diff --git a/docs/mq/activemq.md b/docs/mq/activemq.md new file mode 100644 index 00000000..0dbedcc1 --- /dev/null +++ b/docs/mq/activemq.md @@ -0,0 +1,295 @@ +# ActiveMQ + +## JMS 基本概念 + +`JMS` 即 **Java 消息服务(Java Message Service)API**,是一个 Java 平台中关于面向消息中间件的 API。它用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java 消息服务是一个与具体平台无关的 API,绝大多数 MOM 提供商都对 JMS 提供支持。 + +### 消息模型 + +JMS 有两种消息模型: + +- Point-to-Point(P2P) +- Publish/Subscribe(Pub/Sub) + +#### P2P 的特点 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/java/javalib/jms/jms-pointToPoint.gif) + +在点对点的消息系统中,消息分发给一个单独的使用者。点对点消息往往与队列 `javax.jms.Queue` 相关联。 + +每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中)。 + +发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列。 + +接收者在成功接收消息之后需向队列应答成功。 + +如果你希望发送的每个消息都应该被成功处理的话,那么你需要 P2P 模式。 + +#### Pub/Sub 的特点 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/java/javalib/jms/jms-publishSubscribe.gif) + +发布/订阅消息系统支持一个事件驱动模型,消息生产者和消费者都参与消息的传递。生产者发布事件,而使用者订阅感兴趣的事件,并使用事件。该类型消息一般与特定的主题 `javax.jms.Topic` 关联。 + +每个消息可以有多个消费者。 + +发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息,而且为了消费消息,订阅者必须保持运行的状态。 + +为了缓和这样严格的时间相关性,JMS 允许订阅者创建一个可持久化的订阅。这样,即使订阅者没有被激活(运行),它也能接收到发布者的消息。 + +如果你希望发送的消息可以不被做任何处理、或者被一个消息者处理、或者可以被多个消费者处理的话,那么可以采用 Pub/Sub 模型。 + +### JMS 编程模型 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/java/javalib/jms/jms-publishSubscribe.gif) + +#### ConnectionFactory + +创建 `Connection` 对象的工厂,针对两种不同的 jms 消息模型,分别有 `QueueConnectionFactory` 和`TopicConnectionFactory` 两种。可以通过 JNDI 来查找 `ConnectionFactory` 对象。 + +#### Connection + +`Connection` 表示在客户端和 JMS 系统之间建立的链接(对 TCP/IP socket 的包装)。`Connection` 可以产生一个或多个`Session`。跟 `ConnectionFactory` 一样,`Connection` 也有两种类型:`QueueConnection` 和 `TopicConnection`。 + +#### Destination + +`Destination` 是一个包装了消息目标标识符的被管对象。消息目标是指消息发布和接收的地点,或者是队列 `Queue` ,或者是主题 `Topic` 。JMS 管理员创建这些对象,然后用户通过 JNDI 发现它们。和连接工厂一样,管理员可以创建两种类型的目标,点对点模型的 `Queue`,以及发布者/订阅者模型的 `Topic`。 + +#### Session + +`Session` 表示一个单线程的上下文,用于发送和接收消息。由于会话是单线程的,所以消息是连续的,就是说消息是按照发送的顺序一个一个接收的。会话的好处是它支持事务。如果用户选择了事务支持,会话上下文将保存一组消息,直到事务被提交才发送这些消息。在提交事务之前,用户可以使用回滚操作取消这些消息。一个会话允许用户创建消息,生产者来发送消息,消费者来接收消息。同样,`Session` 也分 `QueueSession` 和 `TopicSession`。 + +#### MessageConsumer + +`MessageConsumer` 由 `Session` 创建,并用于将消息发送到 `Destination`。消费者可以同步地(阻塞模式),或(非阻塞)接收 `Queue` 和 `Topic` 类型的消息。同样,消息生产者分两种类型:`QueueSender` 和`TopicPublisher`。 + +#### MessageProducer + +`MessageProducer` 由 `Session` 创建,用于接收被发送到 `Destination` 的消息。`MessageProducer` 有两种类型:`QueueReceiver` 和 `TopicSubscriber`。可分别通过 `session` 的 `createReceiver(Queue)` 或 `createSubscriber(Topic)` 来创建。当然,也可以 `session` 的 `creatDurableSubscriber` 方法来创建持久化的订阅者。 + +#### Message + +是在消费者和生产者之间传送的对象,也就是说从一个应用程序传送到另一个应用程序。一个消息有三个主要部分: + +- 消息头(必须):包含用于识别和为消息寻找路由的操作设置。 +- 一组消息属性(可选):包含额外的属性,支持其他提供者和用户的兼容。可以创建定制的字段和过滤器(消息选择器)。 +- 一个消息体(可选):允许用户创建五种类型的消息(文本消息,映射消息,字节消息,流消息和对象消息)。 + +消息接口非常灵活,并提供了许多方式来定制消息的内容。 + +| Common | Point-to-Point | Publish-Subscribe | +| ----------------- | --------------------------- | ---------------------- | +| ConnectionFactory | QueueConnectionFactory | TopicConnectionFactory | +| Connection | QueueConnection | TopicConnection | +| Destination | Queue | Topic | +| Session | QueueSession | TopicSession | +| MessageProducer | QueueSender | TopicPublisher | +| MessageSender | QueueReceiver, QueueBrowser | TopicSubscriber | + +## 安装 + +**安装条件** + +JDK1.7 及以上版本 + +本地配置了 **JAVA_HOME** 环境变量。 + +**下载** + +支持 Windows/Unix/Linux/Cygwin + +[ActiveMQ 官方下载地址](http://activemq.apache.org/download.html) + +**Windows 下运行** + +(1)解压压缩包到本地; + +(2)打开控制台,进入安装目录的 `bin` 目录下; + +``` +cd [activemq_install_dir] +``` + +(3)执行 `activemq start` 来启动 ActiveMQ + +``` +bin\activemq start +``` + +**测试安装是否成功** + +(1)ActiveMQ 默认监听端口为 61616 + +``` +netstat -an|find “61616” +``` + +(2)访问 + +(3)输入用户名、密码 + +``` +Login: admin +Passwort: admin +``` + +(4)点击导航栏的 Queues 菜单 + +(5)添加一个队列(queue) + +## 项目中的应用 + +**引入依赖** + +```xml + + org.apache.activemq + activemq-all + 5.14.1 + +``` + +**Sender.java** + +```java +public class Sender { + private static final int SEND_NUMBER = 4; + + public static void main(String[] args) { + // ConnectionFactory :连接工厂,JMS 用它创建连接 + ConnectionFactory connectionFactory; + // Connection :JMS 客户端到JMS Provider 的连接 + Connection connection = null; + // Session: 一个发送或接收消息的线程 + Session session; + // Destination :消息的目的地;消息发送给谁. + Destination destination; + // MessageProducer:消息发送者 + MessageProducer producer; + // TextMessage message; + // 构造ConnectionFactory实例对象,此处采用ActiveMq的实现jar + connectionFactory = new ActiveMQConnectionFactory( + ActiveMQConnection.DEFAULT_USER, + ActiveMQConnection.DEFAULT_PASSWORD, + "tcp://localhost:61616"); + try { + // 构造从工厂得到连接对象 + connection = connectionFactory.createConnection(); + // 启动 + connection.start(); + // 获取操作连接 + session = connection.createSession(Boolean.TRUE, + Session.AUTO_ACKNOWLEDGE); + // 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置 + destination = session.createQueue("FirstQueue"); + // 得到消息生成者【发送者】 + producer = session.createProducer(destination); + // 设置不持久化,此处学习,实际根据项目决定 + producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); + // 构造消息,此处写死,项目就是参数,或者方法获取 + sendMessage(session, producer); + session.commit(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (null != connection) + connection.close(); + } catch (Throwable ignore) { + } + } + } + + public static void sendMessage(Session session, MessageProducer producer) + throws Exception { + for (int i = 1; i <= SEND_NUMBER; i++) { + TextMessage message = session + .createTextMessage("ActiveMq 发送的消息" + i); + // 发送消息到目的地方 + System.out.println("发送消息:" + "ActiveMq 发送的消息" + i); + producer.send(message); + } + } +} +``` + +**Receiver.java** + +```java +public class Receiver { + public static void main(String[] args) { + // ConnectionFactory :连接工厂,JMS 用它创建连接 + ConnectionFactory connectionFactory; + // Connection :JMS 客户端到JMS Provider 的连接 + Connection connection = null; + // Session: 一个发送或接收消息的线程 + Session session; + // Destination :消息的目的地;消息发送给谁. + Destination destination; + // 消费者,消息接收者 + MessageConsumer consumer; + connectionFactory = new ActiveMQConnectionFactory( + ActiveMQConnection.DEFAULT_USER, + ActiveMQConnection.DEFAULT_PASSWORD, + "tcp://localhost:61616"); + try { + // 构造从工厂得到连接对象 + connection = connectionFactory.createConnection(); + // 启动 + connection.start(); + // 获取操作连接 + session = connection.createSession(Boolean.FALSE, + Session.AUTO_ACKNOWLEDGE); + // 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置 + destination = session.createQueue("FirstQueue"); + consumer = session.createConsumer(destination); + while (true) { + //设置接收者接收消息的时间,为了便于测试,这里谁定为100s + TextMessage message = (TextMessage) consumer.receive(100000); + if (null != message) { + System.out.println("收到消息" + message.getText()); + } else { + break; + } + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (null != connection) + connection.close(); + } catch (Throwable ignore) { + } + } + } +} +``` + +**运行** + +先运行 Receiver.java 进行消息监听,再运行 Send.java 发送消息。 + +**输出** + +Send 的输出内容 + +``` +发送消息:Activemq 发送消息0 +发送消息:Activemq 发送消息1 +发送消息:Activemq 发送消息2 +发送消息:Activemq 发送消息3 +``` + +Receiver 的输出内容 + +``` +收到消息ActiveMQ 发送消息0 +收到消息ActiveMQ 发送消息1 +收到消息ActiveMQ 发送消息2 +收到消息ActiveMQ 发送消息3 +``` + +## 资源 + +- [ActiveMQ 官网](http://activemq.apache.org/) +- [oracle 官方的 jms 介绍](https://docs.oracle.com/cd/E19575-01/819-3669/6n5sg7cgq/index.html) diff --git a/docs/mq/rocketmq.md b/docs/mq/rocketmq.md new file mode 100644 index 00000000..0aba5e5c --- /dev/null +++ b/docs/mq/rocketmq.md @@ -0,0 +1,511 @@ +# RocketMQ + + + +- [简介](#简介) +- [安装](#安装) + - [环境要求](#环境要求) + - [下载解压](#下载解压) + - [启动 Name Server](#启动-name-server) + - [启动 Broker](#启动-broker) + - [收发消息](#收发消息) + - [关闭服务器](#关闭服务器) +- [API](#api) + - [Producer](#producer) + - [Consumer](#consumer) + - [FAQ](#faq) +- [架构](#架构) + - [NameServer](#nameserver) + - [Broker](#broker) + - [Producer](#producer-1) + - [Consumer](#consumer-1) +- [原理](#原理) + - [顺序消息](#顺序消息) + - [消息重复](#消息重复) + - [事务消息](#事务消息) +- [参考资料](#参考资料) + + + +## 简介 + +RocketMQ 是一款开源的分布式消息队列,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。 + +RocketMQ 被阿里巴巴捐赠给 Apache,成为 Apache 的孵化项目。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/java/javaweb/distributed/mq/rocketmq/rmq-model.png) + +RocketMQ 有以下核心概念: + +- **Producer** - 将业务应用程序系统生成的消息发送给代理。RocketMQ 提供多种发送范例:同步,异步和单向。 + - **Producer Group** - 具有相同角色的 Producer 组合在一起。如果原始 Producer 在事务之后崩溃,则代理可以联系同一 Producer 组的不同 Producer 实例以提交或回滚事务。**_警告:考虑到提供的 Producer 在发送消息方面足够强大,每个 Producer 组只允许一个实例,以避免不必要的生成器实例初始化。_** +- **Consumer** - Consumer 从 Broker 那里获取消息并将其提供给应用程序。从用户应用的角度来看,提供了两种类型的 Consumer: + - **PullConsumer** - PullConsumer 积极地从 Broker 那里获取消息。一旦提取了批量消息,用户应用程序就会启动消费过程。 + - **PushConsumer** - PushConsumer 封装消息提取,消费进度并维护其他内部工作,为最终用户留下回调接口,这个借口会在消息到达时被执行。 + - **Consumer Group** - 完全相同角色的 Consumer 被组合在一起并命名为 Consumer Group。Consumer Group 是一个很好的概念,在消息消费方面实现负载平衡和容错目标非常容易。**_警告:Consumer Group 中的 Consumer 实例必须具有完全相同的主题订阅。_** +- **Broker** - Broker 是 RocketMQ 的主要组成部分。它接收从 Producer 发送的消息,存储它们并准备处理来自 Consumer 的消费请求。它还存储与消息相关的元数据,包括 Consumer Group,消耗进度偏移和主题/队列信息。 +- Name Server - 充当路由信息提供者。Producer/Consumer 客户查找主题以查找相应的 Broker 列表。 +- **Topic** - 是 Producer 传递消息和 Consumer 提取消息的类别。 +- **Message** - 是要传递的信息。消息必须有一个主题,可以将其解释为您要发送给的邮件地址。消息还可以具有可选 Tag 和额外的键值对。例如,您可以为消息设置业务密钥,并在代理服务器上查找消息以诊断开发期间的问题。 + - **Message Queue** - 主题被划分为一个或多个子主题“消息队列”。 + - **Tag** - 即子主题,为用户提供了额外的灵活性。对于 Tag,来自同一业务模块的具有不同目的的消息可以具有相同的主题和不同的 Tag。 + +## 安装 + +### 环境要求 + +- 推荐 64 位操作系统:Linux/Unix/Mac +- 64bit JDK 1.8+ +- Maven 3.2.x +- Git + +### 下载解压 + +进入官方下载地址: + +建议选择 binary 版本。 + +解压到本地: + +```bash +> unzip rocketmq-all-4.2.0-source-release.zip +> cd rocketmq-all-4.2.0/ +``` + +### 启动 Name Server + +```bash +> nohup sh bin/mqnamesrv & +> tail -f ~/logs/rocketmqlogs/namesrv.log +The Name Server boot success... +``` + +### 启动 Broker + +```bash +> nohup sh bin/mqbroker -n localhost:9876 -c conf/broker.conf & +> tail -f ~/logs/rocketmqlogs/broker.log +The broker[%s, 172.30.30.233:10911] boot success... +``` + +### 收发消息 + +执行收发消息操作之前,不许告诉客户端命名服务器的位置。在 RocketMQ 中有多种方法来实现这个目的。这里,我们使用最简单的方法——设置环境变量 `NAMESRV_ADDR` : + +```bash +> export NAMESRV_ADDR=localhost:9876 +> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer +SendResult [sendStatus=SEND_OK, msgId= ... + +> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer +ConsumeMessageThread_%d Receive New Messages: [MessageExt... +``` + +### 关闭服务器 + +```bash +> sh bin/mqshutdown broker +The mqbroker(36695) is running... +Send shutdown request to mqbroker(36695) OK + +> sh bin/mqshutdown namesrv +The mqnamesrv(36664) is running... +Send shutdown request to mqnamesrv(36664) OK +``` + +## API + +首先在项目中引入 maven 依赖: + +```xml + + org.apache.rocketmq + rocketmq-client + 4.2.0 + +``` + +### Producer + +Producer 在 RocketMQ 中负责发送消息。 + +RocketMQ 有三种消息发送方式: + +- 可靠的同步发送 +- 可靠的异步发送 +- 单项发送 + +#### 可靠的同步发送 + +可靠的同步传输用于广泛的场景,如重要的通知消息,短信通知,短信营销系统等。 + +```java +public class SyncProducer { + public static void main(String[] args) throws Exception { + //Instantiate with a producer group name. + DefaultMQProducer producer = new + DefaultMQProducer("please_rename_unique_group_name"); + //Launch the instance. + producer.start(); + for (int i = 0; i < 100; i++) { + //Create a message instance, specifying topic, tag and message body. + Message msg = new Message("TopicTest" /* Topic */, + "TagA" /* Tag */, + ("Hello RocketMQ " + + i).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */ + ); + //Call send message to deliver message to one of brokers. + SendResult sendResult = producer.send(msg); + System.out.printf("%s%n", sendResult); + } + //Shut down once the producer instance is not longer in use. + producer.shutdown(); + } +} +``` + +#### 可靠的异步发送 + +异步传输通常用于响应时间敏感的业务场景。 + +```java +public class AsyncProducer { + public static void main(String[] args) throws Exception { + //Instantiate with a producer group name. + DefaultMQProducer producer = new DefaultMQProducer("ExampleProducerGroup"); + //Launch the instance. + producer.start(); + producer.setRetryTimesWhenSendAsyncFailed(0); + for (int i = 0; i < 100; i++) { + final int index = i; + //Create a message instance, specifying topic, tag and message body. + Message msg = new Message("TopicTest", + "TagA", + "OrderID188", + "Hello world".getBytes(RemotingHelper.DEFAULT_CHARSET)); + producer.send(msg, new SendCallback() { + @Override + public void onSuccess(SendResult sendResult) { + System.out.printf("%-10d OK %s %n", index, + sendResult.getMsgId()); + } + @Override + public void onException(Throwable e) { + System.out.printf("%-10d Exception %s %n", index, e); + e.printStackTrace(); + } + }); + } + //Shut down once the producer instance is not longer in use. + producer.shutdown(); + } +} +``` + +#### 单向传输 + +单向传输用于需要中等可靠性的情况,例如日志收集。 + +```java +public class OnewayProducer { + public static void main(String[] args) throws Exception{ + //Instantiate with a producer group name. + DefaultMQProducer producer = new DefaultMQProducer("ExampleProducerGroup"); + //Launch the instance. + producer.start(); + for (int i = 0; i < 100; i++) { + //Create a message instance, specifying topic, tag and message body. + Message msg = new Message("TopicTest" /* Topic */, + "TagA" /* Tag */, + ("Hello RocketMQ " + + i).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */ + ); + //Call send message to deliver message to one of brokers. + producer.sendOneway(msg); + + } + //Shut down once the producer instance is not longer in use. + producer.shutdown(); + } +} +``` + +### Consumer + +Consumer 在 RocketMQ 中负责接收消息。 + +```java +public class OrderedConsumer { + public static void main(String[] args) throws Exception { + DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("example_group_name"); + consumer.setNamesrvAddr(RocketConfig.HOST); + + consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET); + + consumer.subscribe("TopicTest", "TagA || TagC || TagD"); + + consumer.registerMessageListener(new MessageListenerOrderly() { + + AtomicLong consumeTimes = new AtomicLong(0); + + @Override + public ConsumeOrderlyStatus consumeMessage(List msgs, + ConsumeOrderlyContext context) { + context.setAutoCommit(false); + System.out.printf(Thread.currentThread().getName() + " Receive New Messages: " + msgs + "%n"); + this.consumeTimes.incrementAndGet(); + if ((this.consumeTimes.get() % 2) == 0) { + return ConsumeOrderlyStatus.SUCCESS; + } else if ((this.consumeTimes.get() % 3) == 0) { + return ConsumeOrderlyStatus.ROLLBACK; + } else if ((this.consumeTimes.get() % 4) == 0) { + return ConsumeOrderlyStatus.COMMIT; + } else if ((this.consumeTimes.get() % 5) == 0) { + context.setSuspendCurrentQueueTimeMillis(3000); + return ConsumeOrderlyStatus.SUSPEND_CURRENT_QUEUE_A_MOMENT; + } + return ConsumeOrderlyStatus.SUCCESS; + + } + }); + + consumer.start(); + + System.out.printf("Consumer Started.%n"); + } +} +``` + +### FAQ + +#### connect to `<172.17.0.1:10909>` failed + +启动后,Producer 客户端连接 RocketMQ 时报错: + +```java +org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to <172.17.0.1:10909> failed + at org.apache.rocketmq.remoting.netty.NettyRemotingClient.invokeSync(NettyRemotingClient.java:357) + at org.apache.rocketmq.client.impl.MQClientAPIImpl.sendMessageSync(MQClientAPIImpl.java:343) + at org.apache.rocketmq.client.impl.MQClientAPIImpl.sendMessage(MQClientAPIImpl.java:327) + at org.apache.rocketmq.client.impl.MQClientAPIImpl.sendMessage(MQClientAPIImpl.java:290) + at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendKernelImpl(DefaultMQProducerImpl.java:688) + at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendSelectImpl(DefaultMQProducerImpl.java:901) + at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:878) + at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:873) + at org.apache.rocketmq.client.producer.DefaultMQProducer.send(DefaultMQProducer.java:369) + at com.emrubik.uc.mdm.sync.utils.MdmInit.sendMessage(MdmInit.java:62) + at com.emrubik.uc.mdm.sync.utils.MdmInit.main(MdmInit.java:2149) +``` + +原因:RocketMQ 部署在虚拟机上,内网 ip 为 10.10.30.63,该虚拟机一个 docker0 网卡,ip 为 172.17.0.1。RocketMQ broker 启动时默认使用了 docker0 网卡,Producer 客户端无法连接 172.17.0.1,造成以上问题。 + +解决方案 + +(1)干掉 docker0 网卡或修改网卡名称 + +(2)停掉 broker,修改 broker 配置文件,重启 broker。 + +修改 conf/broker.conf,增加两行来指定启动 broker 的 IP: + +``` +namesrvAddr = 10.10.30.63:9876 +brokerIP1 = 10.10.30.63 +``` + +启动时需要指定配置文件 + +```bash +nohup sh bin/mqbroker -n localhost:9876 -c conf/broker.conf & +``` + +## 架构 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/java/javaweb/distributed/mq/rocketmq/rmq-basic-arc.png) + +RocketMQ 由四部分组成:NameServer、Broker、Producer、Consumer。其中任意一个组成都可以水平扩展为集群模式,以避免单点故障问题。 + +### Producer + +Producers 支持分布式集群方式部署。Producer 通过 MQ 的负载均衡模块选择相应的 Broker 集群队列进行消息投递,投递的过程支持快速失败并且低延迟。 + +### Consumer + +Consumer 支持分布式集群方式部署。支持以 push 推,pull 拉两种模式对消息进行消费。同时也支持集群方式和广播方式的消费,它提供实时消息订阅机制,可以满足大多数用户的需求。 + +### NameServer + +NameServer 是一个 Topic 路由注册中心,其角色类似 Dubbo 中的 zookeeper,支持 Broker 的动态注册与发现。主要包括两个功能: + +- **Broker 管理**,NameServer 接受 Broker 集群的注册信息并且保存下来作为路由信息的基本数据。然后提供心跳检测机制,检查 Broker 是否还存活; +- **路由信息管理**,每个 NameServer 将保存关于 Broker 集群的整个路由信息和用于客户端查询的队列信息。然后 Producer 和 Conumser 通过 NameServer 就可以知道整个 Broker 集群的路由信息,从而进行消息的投递和消费。 + +NameServer 通常也是集群的方式部署,各实例间相互不进行信息通讯。Broker 是向每一台 NameServer 注册自己的路由信息,所以每一个 NameServer 实例上面都保存一份完整的路由信息。当某个 NameServer 因某种原因下线了,Broker 仍然可以向其它 NameServer 同步其路由信息,Producer、Consumer 仍然可以动态感知 Broker 的路由的信息。 + +NameServer 是一个功能齐全的服务器,主要包括两个功能: + +1. Broker 管理 - NameServer 接受来自 Broker 集群的注册,并提供心跳机制来检查 Broker 节点是否存活。 +2. 路由管理 - 每个 NameServer 将保存有关 Broker 集群的完整路由信息和客户端查询的查询队列。 + +RocketMQ 客户端(Producer/Consumer)将从 NameServer 查询队列路由信息。 + +将 NameServer 地址列表提供给客户端有四种方法: + +1. 编程方式 - 类似:`producer.setNamesrvAddr("ip:port")` +2. Java 选项 - 使用 `rocketmq.namesrv.addr` 参数 +3. 环境变量 - 设置环境变量 `NAMESRV_ADDR` +4. HTTP 端点 + +> 更详细信息可以参考官方文档:[here](http://rocketmq.apache.org/rocketmq/four-methods-to-feed-name-server-address-list/) + +### Broker + +Broker 主要负责消息的存储、投递和查询以及服务高可用保证,为了实现这些功能,Broker 包含了以下几个重要子模块。 + +Broker 有几个重要的子模块: + +- **Remoting Module**:整个 Broker 的实体,负责处理来自 clients 端的请求。 +- **Client Manager**:负责管理客户端(Producer/Consumer)和维护 Consumer 的 Topic 订阅信息。 +- **Store Service**:提供方便简单的 API 接口处理消息存储到物理硬盘和查询功能。 +- **HA Service**:高可用服务,提供 Master Broker 和 Slave Broker 之间的数据同步功能。 +- **Index Service**:根据特定的 Message key 对投递到 Broker 的消息进行索引服务,以提供消息的快速查询。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/java/javaweb/distributed/mq/rocketmq/rmq-basic-component.png) + +## 原理 + +分布式消息系统作为实现分布式系统可扩展、可伸缩性的关键组件,需要具有高吞吐量、高可用等特点。而谈到消息系统的设计,就回避不了两个问题: + +1. 消息的顺序问题 +2. 消息的重复问题 + +### 顺序消息 + +#### 第一种模型 + +假如生产者产生了 2 条消息:M1、M2,要保证这两条消息的顺序,应该怎样做?你脑中想到的可能是这样: + +
    + +
    + +假定 M1 发送到 S1,M2 发送到 S2,如果要保证 M1 先于 M2 被消费,那么需要 M1 到达消费端被消费后,通知 S2,然后 S2 再将 M2 发送到消费端。 + +这个模型存在的问题是,如果 M1 和 M2 分别发送到两台 Server 上,就不能保证 M1 先达到 MQ 集群,也不能保证 M1 被先消费。换个角度看,如果 M2 先于 M1 达到 MQ 集群,甚至 M2 被消费后,M1 才达到消费端,这时消息也就乱序了,说明以上模型是不能保证消息的顺序的。 + +
    + +
    + +#### 第二种模型 + +如何才能在 MQ 集群保证消息的顺序?一种简单的方式就是将 M1、M2 发送到同一个 Server 上: + +这样可以保证 M1 先于 M2 到达 MQServer(生产者等待 M1 发送成功后再发送 M2),根据先达到先被消费的原则,M1 会先于 M2 被消费,这样就保证了消息的顺序。 + +这个模型也仅仅是理论上可以保证消息的顺序,在实际场景中可能会遇到下面的问题: + +
    + +
    + +只要将消息从一台服务器发往另一台服务器,就会存在网络延迟问题。如上图所示,如果发送 M1 耗时大于发送 M2 的耗时,那么 M2 就仍将被先消费,仍然不能保证消息的顺序。即使 M1 和 M2 同时到达消费端,由于不清楚消费端 1 和消费端 2 的负载情况,仍然有可能出现 M2 先于 M1 被消费的情况。 + +如何解决这个问题?将 M1 和 M2 发往同一个消费者,且发送 M1 后,需要消费端响应成功后才能发送 M2。 + +这可能产生另外的问题:如果 M1 被发送到消费端后,消费端 1 没有响应,那是继续发送 M2 呢,还是重新发送 M1?一般为了保证消息一定被消费,肯定会选择重发 M1 到另外一个消费端 2,就如下图所示。 + +
    + +
    + +这样的模型就严格保证消息的顺序,细心的你仍然会发现问题,消费端 1 没有响应 Server 时有两种情况,一种是 M1 确实没有到达(数据在网络传送中丢失),另外一种消费端已经消费 M1 且已经发送响应消息,只是 MQ Server 端没有收到。如果是第二种情况,重发 M1,就会造成 M1 被重复消费。也就引入了我们要说的第二个问题,消息重复问题,这个后文会详细讲解。 + +回过头来看消息顺序问题,严格的顺序消息非常容易理解,也可以通过文中所描述的方式来简单处理。总结起来,要实现严格的顺序消息,简单且可行的办法就是: + +**保证生产者 - MQServer - 消费者是一对一对一的关系。** + +这样的设计虽然简单易行,但也会存在一些很严重的问题,比如: + +1. 并行度就会成为消息系统的瓶颈(吞吐量不够) +2. 更多的异常处理,比如:只要消费端出现问题,就会导致整个处理流程阻塞,我们不得不花费更多的精力来解决阻塞的问题。 + +RocketMQ 的解决方案:通过合理的设计或者将问题分解来规避。如果硬要把时间花在解决问题本身,实际上不仅效率低下,而且也是一种浪费。从这个角度来看消息的顺序问题,我们可以得出两个结论: + +1. 不关注乱序的应用实际大量存在 +2. 队列无序并不意味着消息无序 + +最后我们从源码角度分析 RocketMQ 怎么实现发送顺序消息。 + +RocketMQ 通过轮询所有队列的方式来确定消息被发送到哪一个队列(负载均衡策略)。比如下面的示例中,订单号相同的消息会被先后发送到同一个队列中: + +```java +// RocketMQ 通过 MessageQueueSelector 中实现的算法来确定消息发送到哪一个队列上 +// RocketMQ 默认提供了两种 MessageQueueSelector 实现:随机/Hash +// 当然你可以根据业务实现自己的 MessageQueueSelector 来决定消息按照何种策略发送到消息队列中 +SendResult sendResult = producer.send(msg, new MessageQueueSelector() { + @Override + public MessageQueue select(List mqs, Message msg, Object arg) { + Integer id = (Integer) arg; + int index = id % mqs.size(); + return mqs.get(index); + } +}, orderId); +``` + +在获取到路由信息以后,会根据 MessageQueueSelector 实现的算法来选择一个队列,同一个 OrderId 获取到的肯定是同一个队列。 + +```java +private SendResult send() { + // 获取topic路由信息 + TopicPublishInfo topicPublishInfo = this.tryToFindTopicPublishInfo(msg.getTopic()); + if (topicPublishInfo != null && topicPublishInfo.ok()) { + MessageQueue mq = null; + // 根据我们的算法,选择一个发送队列 + // 这里的arg = orderId + mq = selector.select(topicPublishInfo.getMessageQueueList(), msg, arg); + if (mq != null) { + return this.sendKernelImpl(msg, mq, communicationMode, sendCallback, timeout); + } + } +} +``` + +### 消息重复 + +造成消息重复的根本原因是:网络不可达。只要通过网络交换数据,就无法避免这个问题。所以解决这个问题的办法就是绕过这个问题。那么问题就变成了:如果消费端收到两条一样的消息,应该怎样处理? + +1. 消费端处理消息的业务逻辑保持幂等性。 +2. 保证每条消息都有唯一编号且保证消息处理成功与去重表的日志同时出现。 + +第 1 条很好理解,只要保持幂等性,不管来多少条重复消息,最后处理的结果都一样。 + +第 2 条原理就是利用一张日志表来记录已经处理成功的消息的 ID,如果新到的消息 ID 已经在日志表中,那么就不再处理这条消息。 + +第 1 条解决方案,很明显应该在消费端实现,不属于消息系统要实现的功能。 + +第 2 条可以消息系统实现,也可以业务端实现。正常情况下出现重复消息的概率其实很小,如果由消息系统来实现的话,肯定会对消息系统的吞吐量和高可用有影响,所以最好还是由业务端自己处理消息重复的问题,这也是 RocketMQ 不解决消息重复的问题的原因。 + +**RocketMQ 不保证消息不重复,如果你的业务需要保证严格的不重复消息,需要你自己在业务端去重。** + +### 事务消息 + +RocketMQ 除了支持普通消息,顺序消息,另外还支持事务消息。 + +假设这样的场景: + +![img](https://upload-images.jianshu.io/upload_images/3101171-253d8bd65736694f.png) + +图中执行本地事务(Bob 账户扣款)和发送异步消息应该保证同时成功或者同时失败,也就是扣款成功了,发送消息一定要成功,如果扣款失败了,就不能再发送消息。那问题是:我们是先扣款还是先发送消息呢? + +![img](http://upload-images.jianshu.io/upload_images/3101171-088dc074c4ecd192) + +RocketMQ 分布式事务步骤: + +发送 Prepared 消息 2222222222222222222,并拿到接受消息的地址。 +执行本地事务 +通过第 1 步骤拿到的地址去访问消息,并修改消息状态。 + +## 参考资料 + +- [RocketMQ 官方文档](http://rocketmq.apache.org/docs/quick-start/) +- [分布式开放消息系统(RocketMQ)的原理与实践](https://www.jianshu.com/p/453c6e7ff81c) diff --git "a/docs/mq/\346\266\210\346\201\257\351\230\237\345\210\227\345\237\272\346\234\254\345\216\237\347\220\206.md" "b/docs/mq/\346\266\210\346\201\257\351\230\237\345\210\227\345\237\272\346\234\254\345\216\237\347\220\206.md" new file mode 100644 index 00000000..33ce32ca --- /dev/null +++ "b/docs/mq/\346\266\210\346\201\257\351\230\237\345\210\227\345\237\272\346\234\254\345\216\237\347\220\206.md" @@ -0,0 +1,597 @@ +--- +title: 消息队列基本原理 +categories: ['分布式'] +tags: ['分布式', '消息队列'] +date: 2019-07-05 15:11 +--- + +# 消息队列基本原理 + +> 📦 本文已归档到:「[blog](https://github.com/dunwu/blog)」 +> +> 消息队列(Message Queue,简称 MQ)技术是**应用间交换信息**的一种技术。 +> +> 消息队列主要解决异步处理、应用间耦合,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。 +> +> 目前主流的 MQ 有:Kafka、RabbitMQ、RocketMQ、ActiveMQ,而部分数据库如 Redis、MySQL 以及 phxsql 也可实现消息队列的功能。 +> +> 注意:_为了简便,下文中除了文章标题,一律使用 MQ 简称_。 + + + +- [1. MQ 的简介](#1-mq-的简介) + - [1.1. 什么是 MQ](#11-什么是-mq) + - [1.2. MQ 通信模型](#12-mq-通信模型) +- [2. MQ 的应用](#2-mq-的应用) + - [2.1. 异步处理](#21-异步处理) + - [2.2. 系统解耦](#22-系统解耦) + - [2.3. 流量削峰](#23-流量削峰) + - [2.4. 传输缓冲](#24-传输缓冲) + - [2.5. 最终一致性](#25-最终一致性) + - [2.6. 系统间通信](#26-系统间通信) +- [3. MQ 的问题](#3-mq-的问题) + - [3.1. 重复消费](#31-重复消费) + - [3.2. 消息丢失](#32-消息丢失) + - [3.3. 消息的顺序性](#33-消息的顺序性) + - [3.4. 消息积压](#34-消息积压) +- [4. MQ 的高可用](#4-mq-的高可用) + - [4.1. Kafka 的高可用](#41-kafka-的高可用) +- [5. 主流 MQ](#5-主流-mq) + - [5.1. ActiveMQ](#51-activemq) + - [5.2. RabbitMQ](#52-rabbitmq) + - [5.3. RocketMQ](#53-rocketmq) + - [5.4. Kafka](#54-kafka) + - [5.5. MQ 的技术选型](#55-mq-的技术选型) +- [6. JMS](#6-jms) + - [6.1. 消息模型](#61-消息模型) + - [6.2. 消息消费](#62-消息消费) + - [6.3. JMS 编程模型](#63-jms-编程模型) +- [7. 参考资料](#7-参考资料) + + + +## 1. MQ 的简介 + +### 1.1. 什么是 MQ + +消息队列(Message Queue,简称 MQ)技术是应用间交换信息的一种技术。 + +消息队列主要解决应用耦合,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。 + +MQ 是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取队列中的消息。消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在。 + +MQ 的数据可驻留在内存或磁盘上,直到它们被应用程序读取。通过 MQ,应用程序可独立地执行,它们不需要知道彼此的位置,不需要等待接收程序接收此消息。在分布式计算环境中,为了集成分布式应用,开发者需要对异构网络环境下的分布式应用提供有效的通信手段。为了管理需要共享的信息,对应用提供公共的信息交换机制是重要的。 + +目前主流的 MQ 有:Kafka、RabbitMQ、RocketMQ、ActiveMQ。 + +### 1.2. MQ 通信模型 + +MQ 通信模型大致有以下类型: + +- **点对点** - 点对点方式是最为传统和常见的通讯方式,它支持一对一、一对多、多对多、多对一等多种配置方式,支持树状、网状等多种拓扑结构。 +- **多点广播** - MQ 适用于不同类型的应用。其中重要的,也是正在发展中的是"多点广播"应用,即能够将消息发送到多个目标站点 (Destination List)。可以使用一条 MQ 指令将单一消息发送到多个目标站点,并确保为每一站点可靠地提供信息。MQ 不仅提供了多点广播的功能,而且还拥有智能消息分发功能,在将一条消息发送到同一系统上的多个用户时,MQ 将消息的一个复制版本和该系统上接收者的名单发送到目标 MQ 系统。目标 MQ 系统在本地复制这些消息,并将它们发送到名单上的队列,从而尽可能减少网络的传输量。 +- **发布/订阅 (Publish/Subscribe)** - 发布/订阅模式使消息的分发可以突破目的队列地理位置的限制,使消息按照特定的主题甚至内容进行分发,用户或应用程序可以根据主题或内容接收到所需要的消息。发布/订阅模式使得发送者和接收者之间的耦合关系变得更为松散,发送者不必关心接收者的目的地址,而接收者也不必关心消息的发送地址,而只是根据消息的主题进行消息的收发。 +- **集群 (Cluster)** - 为了简化点对点通讯模式中的系统配置,MQ 提供 Cluster(集群) 的解决方案。集群类似于一个域 (Domain),集群内部的队列管理器之间通讯时,不需要两两之间建立消息通道,而是采用集群 (Cluster) 通道与其它成员通讯,从而大大简化了系统配置。此外,集群中的队列管理器之间能够自动进行负载均衡,当某一队列管理器出现故障时,其它队列管理器可以接管它的工作,从而大大提高系统的高可靠性。 + +## 2. MQ 的应用 + +### 2.1. 异步处理 + +> MQ 可以将系统间的处理流程异步化,减少等待响应的时间,从而提高整体并发吞吐量。 +> +> 一般,MQ 异步处理应用于非核心流程,例如:短信/邮件通知、数据推送、上报数据到监控中心/日志中心等。 + +假设这样一个场景,用户向系统 A 发起请求,系统 A 处理计算只需要 10 ms,然后通知系统 BCD 写库,系统 BCD 写库耗时分别为:100ms、200ms、300ms。最终总耗时为: 10+100ms+200ms+300ms=610ms。此外,加上请求和响应的网络传输时间,从用户角度看,可能要等待将近 1s 才能得到结果。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/design/theory/mq/mq_3.png) + +如果使用 MQ,系统 A 接到请求后,耗时 10ms 处理计算,然后向系统 BCD 连续发送消息,假设耗时 5ms。那么 这一过程的总耗时为 3ms + 5ms = 8ms,这相比于 610 ms,大大缩短了响应时间。至于系统 BCD 的写库操作,只要自行消费 MQ 后处理即可,用户无需关注。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/design/theory/mq/mq_4.png) + +### 2.2. 系统解耦 + +> 通过 MQ,可以消除系统间的强耦合。它的好处在于: +> +> - 消息的消费者系统可以随意增加,无需修改生产者系统的代码。 +> - 生产者系统、消费者系统彼此不会影响对方的流程。 +> - 如果生产者系统宕机,消费者系统收不到消息,就不会有下一步的动作。 +> - 如果消费者系统宕机,生产者系统让然可以正常发送消息,不影响流程。 + +不同系统如果要建立通信,传统的做法是:调用接口。 + +如果需要和新的系统建立通信或删除已建立的通信,都需要修改代码,这种方案显然耦合度很高。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/design/theory/mq/mq_1.png) + +如果使用 MQ,系统间的通信只需要通过发布/订阅(Pub/Sub)模型即可,彼此没有直接联系,也就不需要相互感知,从而达到 **解耦**。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/design/theory/mq/mq_2.png) + +### 2.3. 流量削峰 + +> 当 **上下游系统** 处理能力存在差距的时候,利用 MQ 做一个 “**漏斗**” 模型,进行 **流控**。把 MQ 当成可靠的 **消息暂存地**,进行一定程度的 **消息堆积**;在下游有能力处理的时候,再发送消息。 +> +> MQ 的流量削峰常用于高并发场景(例如:秒杀、团抢等业务场景),它是缓解瞬时暴增流量的核心手段之一。 +> +> 如果没有 MQ,两个系统之间通过 **协商**、**滑动窗口**、**限流**/**降级**/**熔断** 等复杂的方案也能实现 **流控**。但 **系统复杂性** 指数级增长,势必在上游或者下游做存储,并且要处理 **定时**、**拥塞** 等一系列问题。而且每当有 **处理能力有差距** 的时候,都需要 **单独** 开发一套逻辑来维护这套逻辑。 + +假设某个系统读写数据库的稳定性能为每秒处理 1000 条数据。平常情况下,远远达不到这么大的处理量。假设,因为因为做活动,系统的瞬时请求量剧增,达到每秒 10000 个并发请求,数据库根本承受不了,可能直接就把数据库给整崩溃了,这样系统服务就不可用了。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/design/theory/mq/mq_5.png) + +如果使用 MQ,每秒写入 10000 条请求,但是系统 A 每秒只从 MQ 中消费 1000 条请求,然后写入数据库。这样,就不会超过数据库的承受能力,而是把请求积压在 MQ 中。只要高峰期一过,系统 A 就会很快把积压的消息给处理掉。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/design/theory/mq/mq_6.png) + +### 2.4. 传输缓冲 + +(1)MQ 常被用于做海量数据的传输缓冲。 + +例如,Kafka 常被用于做为各种日志数据、采集数据的数据中转。然后,Kafka 将数据转发给 Logstash、Elasticsearch 中,然后基于 Elasticsearch 来做日志中心,提供检索、聚合、分析日志的能力。开发者可以通过 Kibana 集成 Elasticsearch 数据进行可视化展示,或自行进行定制化开发。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200930164342.png) + +(2)MQ 也可以被用于流式处理。 + +例如,Kafka 几乎已经是流计算的数据采集端的标准组件。而流计算通过实时数据处理能力,提供了更为快捷的聚合计算能力,被大量应用于链路监控、实时监控、实时数仓、实时大屏、风控、推荐等应用领域。 + +### 2.5. 最终一致性 + +**最终一致性** 不是 **消息队列** 的必备特性,但确实可以依靠 **消息队列** 来做 **最终一致性** 的事情。 + +- **先写消息再操作**,确保操作完成后再修改消息状态。**定时任务补偿机制** 实现消息 **可靠发送接收**、业务操作的可靠执行,要注意 **消息重复** 与 **幂等设计**。 +- 所有不保证 `100%` **不丢消息** 的消息队列,理论上无法实现 **最终一致性**。 + +> 像 `Kafka` 一类的设计,在设计层面上就有 **丢消息** 的可能(比如 **定时刷盘**,如果掉电就会丢消息)。哪怕只丢千分之一的消息,业务也必须用其他的手段来保证结果正确。 + +### 2.6. 系统间通信 + +消息队列一般都内置了 **高效的通信机制**,因此也可以用于单纯的 **消息通讯**,比如实现 **点对点消息队列** 或者 **聊天室** 等。 + +**生产者/消费者** 模式,只需要关心消息是否 **送达队列**,至于谁希望订阅和需要消费,是 **下游** 的事情,无疑极大地减少了开发和联调的工作量。 + +## 3. MQ 的问题 + +任何技术都会有利有弊,MQ 给整体系统架构带来很多好处,但也会付出一定的代价。 + +MQ 主要引入了以下问题: + +- **系统可用性降低**:引入了 MQ 后,通信需要基于 MQ 完成,如果 MQ 宕机,则服务不可用。因此,MQ 要保证是高可用的,详情参考:[MQ 的高可用](#MQ-的高可用) +- **系统复杂度提高**:使用 MQ,需要关注一些新的问题: + - 如何保证消息没有 **重复消费**? + - 如何处理 **消息丢失** 的问题? + - 如何保证传递 **消息的顺序性**? + - 如何处理大量 **消息积压** 的问题? +- **一致性问题**:假设系统 A 处理完直接返回成功的结果给用户,用户认为请求成功。但如果此时,系统 BCD 中只要有任意一个写库失败,那么数据就不一致了。这种情况如何处理? + +下面,我们针对以上问题来一一分析。 + +### 3.1. 重复消费 + +**如何保证消息不被重复消费** 和 **如何保证消息消费的幂等性** 是同一个问题。 + +必须先明确产生重复消费的原因,才能对症下药。 + +#### 重复消费问题原因 + +重复消费问题通常不是 MQ 来处理,而是由开发来处理的。 + +以 Kafka 举例,Kafka 每个 Partition 都是一个有序的、不可变的记录序列,不断追加到结构化的提交日志中。Partition 中为每条记录分配一个连续的 id 号,称为偏移量(Offset),用于唯一标识 Partition 内的记录。 + +Kafka 的客户端和 Broker 都会保存 Offset。客户端消费消息后,每隔一段时间,就把已消费的 Offset 提交给 Kafka Broker,表示已消费。 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210427194009.png) + +在这个过程中,如果客户端应用消费消息后,因为宕机、重启等情况而没有提交已消费的 Offset 。当系统恢复后,会继续消费消息,由于 Offset 未提交,就会出现重复消费的问题。 + +#### 重复消费解决方案 + +应对重复消费问题,需要在业务层面,通过 **幂等性设计** 来解决。 + +MQ 重复消费不可怕,可怕的是没有应对机制,可以借鉴的思路有: + +- 如果是写关系型数据库,可以先根据主键查询,判断数据是否已存在,存在则更新,不存在则插入; +- 如果是写 Redis,由于 set 操作天然具有幂等性,所以什么都不用做; +- 如果是根据消息做较复杂的逻辑处理,可以在消息中加入全局唯一 ID,例如:订单 ID 等。在客户端存储中(Mysql、Redis 等)保存已消费消息的 ID。一旦接受到新消息,先判断消息中的 ID 是否在已消费消息 ID 表中存在,存在则不再处理,不存在则处理。 + +在实际开发中,可以参考上面的例子,结合现实场景,设计合理的幂等性方案。 + +### 3.2. 消息丢失 + +**如何处理消息丢失的问题** 和 **如何保证消息不被重复消费** 是同一个问题。关注点有: + +- MQ Server 丢失数据 +- 消费方丢失数据 +- 生产方丢失数据 + +#### 消费方丢失数据 + +唯一可能导致消费方丢失数据的情况是:消费方设置了**自动提交 Offset**。一旦设置了自动提交 Offset,接受到消息后就会自动提交 Offset 给 Kafka ,Kafka 就认为消息已被消费。如果此时,消费方尚未来得及处理消息就挂了,那么消息就丢了。 + +解决方法就是:消费方关闭自动提交 Offset,处理完消息后**手动提交 Offset**。但这种情况下可能会出现重复消费的情形,需要自行保证幂等性。 + +#### Kafka Server 丢失数据 + +当 Kafka 某个 Broker 宕机,需要重新选举 Partition 的 Leader。若此时其他的 Follower 尚未同步 Leader 的数据,那么新选某个 Follower 为 Leader 后,就丢失了部分数据。 + +为此,一般要求至少设置 4 个参数: + +- 给 Topic 设置 `replication.factor` 参数 - 这个值必须大于 1,要求每个 Partition 必须有至少 2 个副本。 +- 在 Kafka 服务端设置 `min.insync.replicas` 参数 - 这个值必须大于 1,这是要求一个 Leader 需要和至少一个 Follower 保持通信,这样才能确保 Leader 挂了还有替补。 +- 在 Producer 端设置 `acks=all` - 这意味着:要求每条数据,必须是**写入所有 replica 之后,才能认为写入成功了**。 +- 在 Producer 端设置 `retries=MAX`(很大很大很大的一个值,无限次重试的意思) - 这意味着**要求一旦写入失败,就无限重试**,卡在这里了。 + +#### 生产方丢失数据 + +如果按照上述的思路设置了 `acks=all`,生产方一定不会丢数据。 + +要求是,你的 Leader 接收到消息,所有的 Follower 都同步到了消息之后,才认为本生产消息成功了。如果未满足这个条件,生产者会自动不断的重试,重试无限次。 + +### 3.3. 消息的顺序性 + +要保证 MQ 的顺序性,势必要付出一定的代价,所以实施方案前,要先明确业务场景是不是有必要保证消息的顺序性。只有那些明确对消息处理顺序有要求的业务场景才值得去保证消息顺序性。 + +方案一 + +一个 Topic,一个 Partition,一个 Consumer,内部单线程消费,单线程吞吐量太低,一般不会用这个。 + +方案二 + +- 写入数据到 Partition 时指定一个全局唯一的 ID,例如订单 ID。发送方保证相同 ID 的消息有序的发送到同一个 Partition。 +- 基于上一点,消费方从 Kafka Partition 中消费消息时,此刻一定是顺序的。但如果消费方式以并发方式消费消息,顺序就可能会被打乱。为此,还有做到以下几点: + - 消费方维护 N 个缓存队列,具有相同 ID 的数据都写入同一个队列中; + - 创建 N 个线程,每个线程只负责从指定的一个队列中取数据。 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210427194215.png) + +### 3.4. 消息积压 + +假设一个 MQ 消费者可以一秒处理 1000 条消息,三个 MQ 消费者可以一秒处理 3000 条消息,那么一分钟的处理量是 18 万条。如果 MQ 中积压了几百万到上千万的数据,即使消费者恢复了,也需要大概很长的时间才能恢复过来。 + +对于产线环境来说,漫长的等待是不可接受的,所以面临这种窘境时,只能临时紧急扩容以应对了,具体操作步骤和思路如下: + +- 先修复 Consumer 的问题,确保其恢复消费速度,然后将现有 Consumer 都停掉。 +- 新建一个 Topic,Partition 是原来的 10 倍,临时建立好原先 10 倍的 Queue 数量。 +- 然后写一个临时的分发数据的 Consumer 程序,这个程序部署上去消费积压的数据,**消费之后不做耗时的处理**,直接均匀轮询写入临时建立好的 10 倍数量的 Queue。 +- 接着临时征用 10 倍的机器来部署 Consumer ,每一批 Consumer 消费一个临时 Queue 的数据。这种做法相当于是临时将 Queue 资源和 Consumer 资源扩大 10 倍,以正常的 10 倍速度来消费数据。 +- 等快速消费完积压数据之后,**得恢复原先部署的架构**,**重新**用原先的 consumer 机器来消费消息。 + +## 4. MQ 的高可用 + +不同 MQ 实现高可用的原理各不相同。因为 Kafka 比较具有代表性,所以这里以 Kafka 为例。 + +### 4.1. Kafka 的高可用 + +#### Kafka 的核心概念 + +了解 Kafka,必须先了解 Kafka 的核心概念: + +- **Broker** - Kafka 集群包含一个或多个节点,这种节点被称为 Broker。 + +- **Topic** - 每条发布到 Kafka 集群的消息都有一个类别,这个类别被称为 Topic。(不同 Topic 的消息是物理隔离的;同一个 Topic 的消息保存在一个或多个 Broker 上,但用户只需指定消息的 Topic 即可生产或消费数据而不必关心数据存于何处)。对于每一个 Topic, Kafka 集群都会维持一个分区日志。 + +- **Partition** - 了提高 Kafka 的吞吐率,每个 Topic 包含一个或多个 Partition,每个 Partition 在物理上对应一个文件夹,该文件夹下存储这个 Partition 的所有消息和索引文件。 + + - Kafka 日志的分区(Partition)分布在 Kafka 集群的节点上。每个节点在处理数据和请求时,共享这些分区。每一个分区都会在已配置的节点上进行备份,确保容错性。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/java/javaweb/distributed/mq/kafka/kafka-cluster-roles.png) + +#### Kafka 的副本机制 + +Kafka 是如何实现高可用的呢? + +Kafka 在 0.8 以前的版本中,如果一个 Broker 宕机了,其上面的 Partition 都不能用了,这自然不是高可用的。 + +为了实现高可用,Kafka 引入了复制功能。 + +简单来说,就是副本机制( Replicate )。 + +**每个 Partition 都有一个 Leader,零个或多个 Follower**。Leader 和 Follower 都是 Broker,每个 Broker 都会成为某些分区的 Leader 和某些分区的 Follower,因此集群的负载是平衡的。 + +- **Leader 处理一切对 Partition (分区)的读写请求**; +- **而 Follower 只需被动的同步 Leader 上的数据**。 + +**同一个 Topic 的不同 Partition 会分布在多个 Broker 上,而且一个 Partition 还会在其他的 Broker 上面进行备份**,Producer 在发布消息到某个 Partition 时,先找到该 Partition 的 Leader,然后向这个 Leader 推送消息;每个 Follower 都从 Leader 拉取消息,拉取消息成功之后,向 Leader 发送一个 ACK 确认。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/java/javaweb/distributed/mq/kafka/kafka-replication.png) + +> FAQ +> +> 问:为什么让 Leader 处理一切对对 Partition (分区)的读写请求? +> +> 答:因为如果允许所有 Broker 都可以处理读写请求,就可能产生数据一致性问题。 + +#### Kafka 选举 Leader + +由上文可知,Partition 在多个 Broker 上存在副本。 + +如果某个 Follower 宕机,啥事儿没有,正常工作。 + +如果 Leader 宕机了,会从 Follower 中**重新选举**一个新的 Leader。 + +## 5. 主流 MQ + +### 5.1. ActiveMQ + +`ActiveMQ` 是由 `Apache` 出品,`ActiveMQ` 是一个完全支持`JMS1.1` 和 `J2EE 1.4` 规范的 `JMS Provider` 实现。它非常快速,支持 **多种语言的客户端** 和 **协议**,而且可以非常容易的嵌入到企业的应用环境中,并有许多高级功能。 + +![img](https://user-gold-cdn.xitu.io/2018/7/8/16479c8ea7cdc2c0?imageView2/0/w/1280/h/960/format/webp/ignore-error/1) + +#### (a) 主要特性 + +1. **服从 JMS 规范**:`JMS` 规范提供了良好的标准和保证,包括:**同步** 或 **异步** 的消息分发,一次和仅一次的消息分发,**消息接收** 和 **订阅** 等等。遵从 `JMS` 规范的好处在于,不论使用什么 `JMS` 实现提供者,这些基础特性都是可用的; +2. **连接灵活性**:`ActiveMQ` 提供了广泛的 **连接协议**,支持的协议有:`HTTP/S`,`IP` **多播**,`SSL`,`TCP`,`UDP` 等等。对众多协议的支持让 `ActiveMQ` 拥有了很好的灵活性; +3. **支持的协议种类多**:`OpenWire`、`STOMP`、`REST`、`XMPP`、`AMQP`; +4. **持久化插件和安全插件**:`ActiveMQ` 提供了 **多种持久化** 选择。而且,`ActiveMQ` 的安全性也可以完全依据用户需求进行 **自定义鉴权** 和 **授权**; +5. **支持的客户端语言种类多**:除了 `Java` 之外,还有:`C/C++`,`.NET`,`Perl`,`PHP`,`Python`,`Ruby`; +6. **代理集群**:多个 `ActiveMQ` **代理** 可以组成一个 **集群** 来提供服务; +7. **异常简单的管理**:`ActiveMQ` 是以开发者思维被设计的。所以,它并不需要专门的管理员,因为它提供了简单又使用的管理特性。有很多中方法可以 **监控** `ActiveMQ` 不同层面的数据,包括使用在 `JConsole` 或者在 `ActiveMQ` 的 `Web Console` 中使用 `JMX`。通过处理 `JMX` 的告警消息,通过使用 **命令行脚本**,甚至可以通过监控各种类型的 **日志**。 + +#### (b) 部署环境 + +`ActiveMQ` 可以运行在 `Java` 语言所支持的平台之上。使用 `ActiveMQ` 需要: + +- `Java JDK` +- `ActiveMQ` 安装包 + +#### (c) 优点 + +1. **跨平台** (`JAVA` 编写与平台无关,`ActiveMQ` 几乎可以运行在任何的 `JVM` 上); +2. 可以用 `JDBC`:可以将 **数据持久化** 到数据库。虽然使用 `JDBC` 会降低 `ActiveMQ` 的性能,但是数据库一直都是开发人员最熟悉的存储介质; +3. 支持 `JMS` 规范:支持 `JMS` 规范提供的 **统一接口**; +4. 支持 **自动重连** 和 **错误重试机制**; +5. 有安全机制:支持基于 `shiro`,`jaas` 等多种 **安全配置机制**,可以对 `Queue/Topic` 进行 **认证和授权**; +6. 监控完善:拥有完善的 **监控**,包括 `Web Console`,`JMX`,`Shell` 命令行,`Jolokia` 的 `RESTful API`; +7. 界面友善:提供的 `Web Console` 可以满足大部分情况,还有很多 **第三方的组件** 可以使用,比如 `hawtio`; + +#### (d) 缺点 + +1. 社区活跃度不及 `RabbitMQ` 高; +2. 根据其他用户反馈,会出莫名其妙的问题,会 **丢失消息**; +3. 目前重心放到 `activemq 6.0` 产品 `Apollo`,对 `5.x` 的维护较少; +4. 不适合用于 **上千个队列** 的应用场景; + +### 5.2. RabbitMQ + +`RabbitMQ` 于 `2007` 年发布,是一个在 `AMQP` (**高级消息队列协议**)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一。 + +![img](https://user-gold-cdn.xitu.io/2018/7/8/16479c8ece3b5d7a?imageView2/0/w/1280/h/960/format/webp/ignore-error/1) + +#### (a) 主要特性 + +1. **可靠性**:提供了多种技术可以让你在 **性能** 和 **可靠性** 之间进行 **权衡**。这些技术包括 **持久性机制**、**投递确认**、**发布者证实** 和 **高可用性机制**; +2. **灵活的路由**:消息在到达队列前是通过 **交换机** 进行 **路由** 的。`RabbitMQ` 为典型的路由逻辑提供了 **多种内置交换机** 类型。如果你有更复杂的路由需求,可以将这些交换机组合起来使用,你甚至可以实现自己的交换机类型,并且当做 `RabbitMQ` 的 **插件** 来使用; +3. **消息集群**:在相同局域网中的多个 `RabbitMQ` 服务器可以 **聚合** 在一起,作为一个独立的逻辑代理来使用; +4. **队列高可用**:队列可以在集群中的机器上 **进行镜像**,以确保在硬件问题下还保证 **消息安全**; +5. **支持多种协议**:支持 **多种消息队列协议**; +6. **支持多种语言**:用 `Erlang` 语言编写,支持只要是你能想到的 **所有编程语言**; +7. **管理界面**: `RabbitMQ` 有一个易用的 **用户界面**,使得用户可以 **监控** 和 **管理** 消息 `Broker` 的许多方面; +8. **跟踪机制**:如果 **消息异常**,`RabbitMQ` 提供消息跟踪机制,使用者可以找出发生了什么; +9. **插件机制**:提供了许多 **插件**,来从多方面进行扩展,也可以编写自己的插件。 + +#### (b) 部署环境 + +`RabbitMQ` 可以运行在 `Erlang` 语言所支持的平台之上,包括 `Solaris`,`BSD`,`Linux`,`MacOSX`,`TRU64`,`Windows` 等。使用 `RabbitMQ` 需要: + +- `ErLang` 语言包 +- `RabbitMQ` 安装包 + +#### (c) 优点 + +1. 由于 `Erlang` 语言的特性,消息队列性能较好,支持 **高并发**; +2. 健壮、稳定、易用、**跨平台**、支持 **多种语言**、文档齐全; +3. 有消息 **确认机制** 和 **持久化机制**,可靠性高; +4. 高度可定制的 **路由**; +5. **管理界面** 较丰富,在互联网公司也有较大规模的应用,社区活跃度高。 + +#### (d) 缺点 + +1. 尽管结合 `Erlang` 语言本身的并发优势,性能较好,但是不利于做 **二次开发和维护**; +2. 实现了 **代理架构**,意味着消息在发送到客户端之前可以在 **中央节点** 上排队。此特性使得 `RabbitMQ` 易于使用和部署,但是使得其 **运行速度较慢**,因为中央节点 **增加了延迟**,**消息封装后** 也比较大; +3. 需要学习 **比较复杂** 的 **接口和协议**,学习和维护成本较高。 + +### 5.3. RocketMQ + +`RocketMQ` 出自 **阿里** 的开源产品,用 `Java` 语言实现,在设计时参考了 `Kafka`,并做出了自己的一些改进,**消息可靠性上** 比 `Kafka` 更好。`RocketMQ` 在阿里内部  被广泛应用在 **订单**,**交易**,**充值**,**流计算**,**消息推送**,**日志流式处理**,`binglog` **分发** 等场景。 + +#### (a) 主要特性 + +![img](data:image/svg+xml;utf8,) + +1. 基于 **队列模型**:具有 **高性能**、**高可靠**、**高实时**、**分布式** 等特点; +2. `Producer`、`Consumer`、**队列** 都支持 **分布式**; +3. `Producer` 向一些队列轮流发送消息,**队列集合** 称为 `Topic`。`Consumer` 如果做 **广播消费**,则一个 `Consumer` 实例消费这个 `Topic` 对应的 **所有队列**;如果做 **集群消费**,则 **多个** `Consumer` 实例 **平均消费** 这个 `Topic` 对应的队列集合; +4. 能够保证 **严格的消息顺序**; +5. 提供丰富的 **消息拉取模式**; +6. 高效的订阅者 **水平扩展**能力; +7. **实时** 的 **消息订阅机制**; +8. 亿级 **消息堆积** 能力; +9. 较少的外部依赖。 + +#### (b) 部署环境 + +`RocketMQ` 可以运行在 `Java` 语言所支持的平台之上。使用 `RocketMQ` 需要: + +- `Java JDK` +- 安装 `git`、`Maven` +- `RocketMQ` 安装包 + +#### (c) 优点 + +1. **单机** 支持 `1` 万以上 **持久化队列**; +2. `RocketMQ` 的所有消息都是 **持久化的**,先写入系统 `PAGECACHE`,然后 **刷盘**,可以保证 **内存** 与 **磁盘** 都有一份数据,而 **访问** 时,直接 **从内存读取**。 +3. 模型简单,接口易用(`JMS` 的接口很多场合并不太实用); +4. **性能非常好**,可以允许 **大量堆积消息** 在 `Broker` 中; +5. 支持 **多种消费模式**,包括 **集群消费**、**广播消费**等; +6. 各个环节 **分布式扩展设计**,支持 **主从** 和 **高可用**; +7. 开发度较活跃,版本更新很快。 + +#### (d) 缺点 + +1. 支持的 **客户端语言** 不多,目前是 `Java` 及 `C++`,其中 `C++` 还不成熟; +2. `RocketMQ` 社区关注度及成熟度也不及前两者; +3. 没有 `Web` 管理界面,提供了一个 `CLI` (命令行界面) 管理工具带来 **查询**、**管理** 和 **诊断各种问题**; +4. 没有在 `MQ` 核心里实现 `JMS` 等接口; + +### 5.4. Kafka + +`Apache Kafka` 是一个 **分布式消息发布订阅** 系统。它最初由 `LinkedIn` 公司基于独特的设计实现为一个 **分布式的日志提交系统** (`a distributed commit log`),之后成为 `Apache` 项目的一部分。`Kafka` **性能高效**、**可扩展良好** 并且 **可持久化**。它的 **分区特性**,**可复制** 和 **可容错** 都是其不错的特性。 + +![img](data:image/svg+xml;utf8,) + +#### (a) 主要特性 + +1. **快速持久化**:可以在 `O(1)` 的系统开销下进行 **消息持久化**; +2. **高吞吐**:在一台普通的服务器上既可以达到 `10W/s` 的 **吞吐速率**; +3. **完全的分布式系统**:`Broker`、`Producer` 和 `Consumer` 都原生自动支持 **分布式**,自动实现 **负载均衡**; +4. 支持 **同步** 和 **异步** 复制两种 **高可用机制**; +5. 支持 **数据批量发送** 和 **拉取**; +6. **零拷贝技术(zero-copy)**:减少 `IO` 操作步骤,提高 **系统吞吐量**; +7. **数据迁移**、**扩容** 对用户透明; +8. **无需停机** 即可扩展机器; +9. **其他特性**:丰富的 **消息拉取模型**、高效 **订阅者水平扩展**、实时的 **消息订阅**、亿级的 **消息堆积能力**、定期删除机制; + +#### (b) 部署环境 + +使用 `Kafka` 需要: + +- `Java JDK` +- `Kafka` 安装包 + +#### (c) 优点 + +1. **客户端语言丰富**:支持 `Java`、`.Net`、`PHP`、`Ruby`、`Python`、`Go` 等多种语言; +2. **高性能**:单机写入 `TPS` 约在 `100` 万条/秒,消息大小 `10` 个字节; +3. 提供 **完全分布式架构**,并有 `replica` 机制,拥有较高的 **可用性** 和 **可靠性**,理论上支持 **消息无限堆积**; +4. 支持批量操作; +5. **消费者** 采用 `Pull` 方式获取消息。**消息有序**,**通过控制** 能够保证所有消息被消费且仅被消费 **一次**; +6. 有优秀的第三方 `Kafka Web` 管理界面 `Kafka-Manager`; +7. 在 **日志领域** 比较成熟,被多家公司和多个开源项目使用。 + +#### (d) 缺点 + +1. `Kafka` 单机超过 `64` 个 **队列/分区** 时,`Load` 时会发生明显的飙高现象。**队列** 越多,**负载** 越高,发送消息 **响应时间变长**; +2. 使用 **短轮询方式**,**实时性** 取决于 **轮询间隔时间**; +3. 消费失败 **不支持重试**; +4. 支持 **消息顺序**,但是 **一台代理宕机** 后,就会产生 **消息乱序**; +5. 社区更新较慢。 + +### 5.5. MQ 的技术选型 + +MQ 的技术选型一般要考虑以下几点: + +- **是否开源**:这决定了能否商用,所以最为重要。 +- **社区活跃度越高越好**:高社区活跃度,一般保证了低 Bug 率,因为大部分 Bug,已经有人遇到并解决了。 +- **技术生态适配性**:客户端对各种编程语言的支持。比如:如果使用 MQ 的都是 Java 应用,那么 ActiveMQ、RabbitMQ、RocketMQ、Kafka 都可以。如果需要支持其他语言,那么 RMQ 比较合适,因为它支持的编程语言比较丰富。如果 MQ 是应用于大数据或流式计算,那么 Kafka 几乎是标配。如果是应用于在线业务系统,那么 Kafka 就不合适了,可以考虑 RabbitMQ、 RocketMQ 很合适。 +- **高可用性**:应用于线上的准入标准。 +- **性能**:具备足够好的性能,能满足绝大多数场景的性能要求。 + +| 特性 | ActiveMQ | RabbitMQ | RocketMQ | Kafka | +| ------------------------ | ------------------------------------- | -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | +| 单机吞吐量 | 万级,比 RocketMQ、Kafka 低一个数量级 | 同 ActiveMQ | 10 万级,支撑高吞吐 | 10 万级,高吞吐,一般配合大数据类的系统来进行流式计算、日志采集等场景 | +| topic 数量对吞吐量的影响 | | | topic 可以达到几百/几千的级别,吞吐量会有较小幅度的下降,这是 RocketMQ 的一大优势,在同等机器下,可以支撑大量的 topic | topic 从几十到几百个时候,吞吐量会大幅度下降,在同等机器下,Kafka 尽量保证 topic 数量不要过多,如果要支撑大规模的 topic,需要增加更多的机器资源 | +| 时效性 | ms 级 | 微秒级,这是 RabbitMQ 的一大特点,延迟最低 | ms 级 | 延迟在 ms 级以内 | +| 可用性 | 高,基于主从架构实现高可用 | 同 ActiveMQ | 非常高,分布式架构 | 非常高,分布式,一个数据多个副本,少数机器宕机,不会丢失数据,不会导致不可用 | +| 消息可靠性 | 有较低的概率丢失数据 | 基本不丢 | 经过参数优化配置,可以做到 0 丢失 | 同 RocketMQ | +| 功能支持 | MQ 领域的功能极其完备 | 基于 erlang 开发,并发能力很强,性能极好,延时很低 | MQ 功能较为完善,还是分布式的,扩展性好 | 功能较为简单,主要支持简单的 MQ 功能,在大数据领域的实时计算以及日志采集被大规模使用 | + +综上,各种对比之后,有如下建议: + +- 业务系统场景,建议使用 RocketMQ、RabbitMQ。如果所有应用都是 Java,优选 RocketMQ,因为 RocketMQ 本身就是 Java 开发的,所以最适配。如果业务中有多种编程语言的应用,建议选择 RabbitMQ。 +- 大数据和流式计算领域,或是作为日志缓冲,强烈建议选择 Kafka,业界标准,久经考验。 + +## 6. JMS + +提到 MQ,就顺便提一下 JMS 。 + +**JMS(JAVA Message Service,java 消息服务)API 是一个消息服务的标准/规范,允许应用程序组件基于 JavaEE 平台创建、发送、接收和读取消息**。它使分布式通信耦合度更低,消息服务更加可靠以及异步性。 + +在 EJB 架构中,有消息 bean 可以无缝的与 JMS 消息服务集成。在 J2EE 架构模式中,有消息服务者模式,用于实现消息与应用直接的解耦。 + +### 6.1. 消息模型 + +在 JMS 标准中,有两种消息模型: + +- P2P(Point to Point) +- Pub/Sub(Publish/Subscribe) + +#### P2P 模式 + +
    +P2P 模式包含三个角色:MQ(Queue),发送者(Sender),接收者(Receiver)。每个消息都被发送到一个特定的队列,接收者从队列中获取消息。队列保留着消息,直到他们被消费或超时。 + +P2P 的特点 + +- 每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在 MQ 中) +- 发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列 +- 接收者在成功接收消息之后需向队列应答成功 + +如果希望发送的每个消息都会被成功处理的话,那么需要 P2P 模式。 + +#### Pub/sub 模式 + +
    +包含三个角色主题(Topic),发布者(Publisher),订阅者(Subscriber) 。多个发布者将消息发送到 Topic,系统将这些消息传递给多个订阅者。 + +Pub/Sub 的特点 + +- 每个消息可以有多个消费者 +- 发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息。 +- 为了消费消息,订阅者必须保持运行的状态。 + +为了缓和这样严格的时间相关性,JMS 允许订阅者创建一个可持久化的订阅。这样,即使订阅者没有被激活(运行),它也能接收到发布者的消息。 + +如果希望发送的消息可以不被做任何处理、或者只被一个消息者处理、或者可以被多个消费者处理的话,那么可以采用 Pub/Sub 模型。 + +### 6.2. 消息消费 + +在 JMS 中,消息的产生和消费都是异步的。对于消费来说,JMS 的消息者可以通过两种方式来消费消息。 + +- **同步** - 订阅者或接收者通过 `receive` 方法来接收消息,`receive` 方法在接收到消息之前(或超时之前)将一直阻塞; +- **异步** - 订阅者或接收者可以注册为一个消息监听器。当消息到达之后,系统自动调用监听器的 `onMessage` 方法。 + +`JNDI` - Java 命名和目录接口,是一种标准的 Java 命名系统接口。可以在网络上查找和访问服务。通过指定一个资源名称,该名称对应于数据库或命名服务中的一个记录,同时返回资源连接建立所必须的信息。 + +JNDI 在 JMS 中起到查找和访问发送目标或消息来源的作用。 + +### 6.3. JMS 编程模型 + +#### ConnectionFactory + +创建 Connection 对象的工厂,针对两种不同的 jms 消息模型,分别有 QueueConnectionFactory 和 TopicConnectionFactory 两种。可以通过 JNDI 来查找 ConnectionFactory 对象。 + +#### Destination + +Destination 的意思是消息生产者的消息发送目标或者说消息消费者的消息来源。对于消息生产者来说,它的 Destination 是某个队列(Queue)或某个主题(Topic);对于消息消费者来说,它的 Destination 也是某个队列或主题(即消息来源)。 + +所以,Destination 实际上就是两种类型的对象:Queue、Topic。可以通过 JNDI 来查找 Destination。 + +#### Connection + +Connection 表示在客户端和 JMS 系统之间建立的链接(对 TCP/IP socket 的包装)。Connection 可以产生一个或多个 Session。跟 ConnectionFactory 一样,Connection 也有两种类型:QueueConnection 和 TopicConnection。 + +#### Session + +Session 是操作消息的接口。可以通过 session 创建生产者、消费者、消息等。Session 提供了事务的功能。当需要使用 session 发送/接收多个消息时,可以将这些发送/接收动作放到一个事务中。同样,也分 QueueSession 和 TopicSession。 + +#### 消息的生产者 + +消息生产者由 Session 创建,并用于将消息发送到 Destination。同样,消息生产者分两种类型:QueueSender 和 TopicPublisher。可以调用消息生产者的方法(send 或 publish 方法)发送消息。 + +#### 消息消费者 + +消息消费者由 Session 创建,用于接收被发送到 Destination 的消息。两种类型:QueueReceiver 和 TopicSubscriber。可分别通过 session 的 createReceiver(Queue)或 createSubscriber(Topic)来创建。当然,也可以 session 的 creatDurableSubscriber 方法来创建持久化的订阅者。 + +#### MessageListener + +消息监听器。如果注册了消息监听器,一旦消息到达,将自动调用监听器的 onMessage 方法。EJB 中的 MDB(Message-Driven Bean)就是一种 MessageListener。 + +## 7. 参考资料 + +- [大型网站架构系列:分布式 MQ(一)](https://www.cnblogs.com/itfly8/p/5155983.html) +- [大型网站架构系列:MQ(二)](https://www.cnblogs.com/itfly8/p/5156155.html) +- [分布式开放 MQ(RocketMQ)的原理与实践](https://www.jianshu.com/p/453c6e7ff81c) +- [阿里 RocketMQ 优势对比](https://juejin.im/entry/5a0abfb5f265da43062a4a91) +- [advanced-java 之 MQ](https://github.com/doocs/advanced-java/blob/master/docs/high-concurrency/mq-interview.md) +- [浅谈消息队列及常见的消息中间件](https://juejin.im/post/6844903635046924296) diff --git "a/docs/mq/\346\266\210\346\201\257\351\230\237\345\210\227\351\235\242\350\257\225.md" "b/docs/mq/\346\266\210\346\201\257\351\230\237\345\210\227\351\235\242\350\257\225.md" new file mode 100644 index 00000000..72c38194 --- /dev/null +++ "b/docs/mq/\346\266\210\346\201\257\351\230\237\345\210\227\351\235\242\350\257\225.md" @@ -0,0 +1,361 @@ +# 消息队列面试夺命连环问 + +## 1. 为什么使用消息队列? + +### 解耦 + +看这么个场景。A 系统发送数据到 BCD 三个系统,通过接口调用发送。如果 E 系统也要这个数据呢?那如果 C 系统现在不需要了呢?A 系统负责人几乎崩溃...... + +![img](https://github.com/doocs/advanced-java/blob/master/images/mq-1.png) + +在这个场景中,A 系统跟其它各种乱七八糟的系统严重耦合,A 系统产生一条比较关键的数据,很多系统都需要 A 系统将这个数据发送过来。A 系统要时时刻刻考虑 BCDE 四个系统如果挂了该咋办?要不要重发,要不要把消息存起来?头发都白了啊! + +如果使用 MQ,A 系统产生一条数据,发送到 MQ 里面去,哪个系统需要数据自己去 MQ 里面消费。如果新系统需要数据,直接从 MQ 里消费即可;如果某个系统不需要这条数据了,就取消对 MQ 消息的消费即可。这样下来,A 系统压根儿不需要去考虑要给谁发送数据,不需要维护这个代码,也不需要考虑人家是否调用成功、失败超时等情况。 + +![img](https://github.com/doocs/advanced-java/blob/master/images/mq-2.png) + +**总结**:通过一个 MQ,Pub/Sub 发布订阅消息这么一个模型,A 系统就跟其它系统彻底解耦了。 + +**面试技巧**:你需要去考虑一下你负责的系统中是否有类似的场景,就是一个系统或者一个模块,调用了多个系统或者模块,互相之间的调用很复杂,维护起来很麻烦。但是其实这个调用是不需要直接同步调用接口的,如果用 MQ 给它异步化解耦,也是可以的,你就需要去考虑在你的项目里,是不是可以运用这个 MQ 去进行系统的解耦。在简历中体现出来这块东西,用 MQ 作解耦。 + +### 异步 + +再来看一个场景,A 系统接收一个请求,需要在自己本地写库,还需要在 BCD 三个系统写库,自己本地写库要 3ms,BCD 三个系统分别写库要 300ms、450ms、200ms。最终请求总延时是 3 + 300 + 450 + 200 = 953ms,接近 1s,用户感觉搞个什么东西,慢死了慢死了。用户通过浏览器发起请求,等待个 1s,这几乎是不可接受的。 + +![img](https://github.com/doocs/advanced-java/blob/master/images/mq-3.png) + +一般互联网类的企业,对于用户直接的操作,一般要求是每个请求都必须在 200 ms 以内完成,对用户几乎是无感知的。 + +如果**使用 MQ**,那么 A 系统连续发送 3 条消息到 MQ 队列中,假如耗时 5ms,A 系统从接受一个请求到返回响应给用户,总时长是 3 + 5 = 8ms,对于用户而言,其实感觉上就是点个按钮,8ms 以后就直接返回了,爽!网站做得真好,真快! + +![img](https://github.com/doocs/advanced-java/blob/master/images/mq-4.png) + +### 削峰 + +每天 0:00 到 12:00,A 系统风平浪静,每秒并发请求数量就 50 个。结果每次一到 12:00 \~ 13:00 ,每秒并发请求数量突然会暴增到 5k+ 条。但是系统是直接基于 MySQL 的,大量的请求涌入 MySQL,每秒钟对 MySQL 执行约 5k 条 SQL。 + +一般的 MySQL,扛到每秒 2k 个请求就差不多了,如果每秒请求到 5k 的话,可能就直接把 MySQL 给打死了,导致系统崩溃,用户也就没法再使用系统了。 + +但是高峰期一过,到了下午的时候,就成了低峰期,可能也就 1w 的用户同时在网站上操作,每秒中的请求数量可能也就 50 个请求,对整个系统几乎没有任何的压力。 + +![img](https://github.com/doocs/advanced-java/blob/master/images/mq-5.png) + +如果使用 MQ,每秒 5k 个请求写入 MQ,A 系统每秒钟最多处理 2k 个请求,因为 MySQL 每秒钟最多处理 2k 个。A 系统从 MQ 中慢慢拉取请求,每秒钟就拉取 2k 个请求,不要超过自己每秒能处理的最大请求数量就 ok,这样下来,哪怕是高峰期的时候,A 系统也绝对不会挂掉。而 MQ 每秒钟 5k 个请求进来,就 2k 个请求出去,结果就导致在中午高峰期(1 个小时),可能有几十万甚至几百万的请求积压在 MQ 中。 + +![img](https://github.com/doocs/advanced-java/blob/master/images/mq-6.png) + +这个短暂的高峰期积压是 ok 的,因为高峰期过了之后,每秒钟就 50 个请求进 MQ,但是 A 系统依然会按照每秒 2k 个请求的速度在处理。所以说,只要高峰期一过,A 系统就会快速将积压的消息给解决掉。 + +## 2. 消息队列有什么优缺点 + +优点上面已经说了,就是**在特殊场景下有其对应的好处**,**解耦**、**异步**、**削峰**。 + +缺点有以下几个: + +- 系统可用性降低 + 系统引入的外部依赖越多,越容易挂掉。本来你就是 A 系统调用 BCD 三个系统的接口就好了,人 ABCD 四个系统好好的,没啥问题,你偏加个 MQ 进来,万一 MQ 挂了咋整,MQ 一挂,整套系统崩溃的,你不就完了?如何保证消息队列的高可用,可以[点击这里查看](https://github.com/doocs/advanced-java/blob/master/docs/high-concurrency/how-to-ensure-high-availability-of-message-queues.md)。 +- 系统复杂度提高 + 硬生生加个 MQ 进来,你怎么[保证消息没有重复消费](https://github.com/doocs/advanced-java/blob/master/docs/high-concurrency/how-to-ensure-that-messages-are-not-repeatedly-consumed.md)?怎么[处理消息丢失的情况](https://github.com/doocs/advanced-java/blob/master/docs/high-concurrency/how-to-ensure-the-reliable-transmission-of-messages.md)?怎么保证消息传递的顺序性?头大头大,问题一大堆,痛苦不已。 +- 一致性问题 + A 系统处理完了直接返回成功了,人都以为你这个请求就成功了;但是问题是,要是 BCD 三个系统那里,BD 两个系统写库成功了,结果 C 系统写库失败了,咋整?你这数据就不一致了。 + +所以消息队列实际是一种非常复杂的架构,你引入它有很多好处,但是也得针对它带来的坏处做各种额外的技术方案和架构来规避掉,做好之后,你会发现,妈呀,系统复杂度提升了一个数量级,也许是复杂了 10 倍。但是关键时刻,用,还是得用的。 + +## 3. Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点? + +| 特性 | ActiveMQ | RabbitMQ | RocketMQ | Kafka | +| ------------------------ | ------------------------------------- | -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | +| 单机吞吐量 | 万级,比 RocketMQ、Kafka 低一个数量级 | 同 ActiveMQ | 10 万级,支撑高吞吐 | 10 万级,高吞吐,一般配合大数据类的系统来进行实时数据计算、日志采集等场景 | +| topic 数量对吞吐量的影响 | | | topic 可以达到几百/几千的级别,吞吐量会有较小幅度的下降,这是 RocketMQ 的一大优势,在同等机器下,可以支撑大量的 topic | topic 从几十到几百个时候,吞吐量会大幅度下降,在同等机器下,Kafka 尽量保证 topic 数量不要过多,如果要支撑大规模的 topic,需要增加更多的机器资源 | +| 时效性 | ms 级 | 微秒级,这是 RabbitMQ 的一大特点,延迟最低 | ms 级 | 延迟在 ms 级以内 | +| 可用性 | 高,基于主从架构实现高可用 | 同 ActiveMQ | 非常高,分布式架构 | 非常高,分布式,一个数据多个副本,少数机器宕机,不会丢失数据,不会导致不可用 | +| 消息可靠性 | 有较低的概率丢失数据 | 基本不丢 | 经过参数优化配置,可以做到 0 丢失 | 同 RocketMQ | +| 功能支持 | MQ 领域的功能极其完备 | 基于 erlang 开发,并发能力很强,性能极好,延时很低 | MQ 功能较为完善,还是分布式的,扩展性好 | 功能较为简单,主要支持简单的 MQ 功能,在大数据领域的实时计算以及日志采集被大规模使用 | + +综上,各种对比之后,有如下建议: + +- 一般的业务系统要引入 MQ,最早大家都用 ActiveMQ,但是现在确实大家用的不多了,没经过大规模吞吐量场景的验证,社区也不是很活跃,所以大家还是算了吧,我个人不推荐用这个了; +- 后来大家开始用 RabbitMQ,但是确实 erlang 语言阻止了大量的 Java 工程师去深入研究和掌控它,对公司而言,几乎处于不可控的状态,但是确实人家是开源的,比较稳定的支持,活跃度也高; +- 不过现在确实越来越多的公司会去用 RocketMQ,确实很不错,毕竟是阿里出品,但社区可能有突然黄掉的风险(目前 RocketMQ 已捐给 [Apache](https://github.com/apache/rocketmq),但 GitHub 上的活跃度其实不算高)对自己公司技术实力有绝对自信的,推荐用 RocketMQ,否则回去老老实实用 RabbitMQ 吧,人家有活跃的开源社区,绝对不会黄。 +- 所以**中小型公司**,技术实力较为一般,技术挑战不是特别高,用 RabbitMQ 是不错的选择;**大型公司**,基础架构研发实力较强,用 RocketMQ 是很好的选择。 +- 如果是**大数据领域**的实时计算、日志采集等场景,用 Kafka 是业内标准的,绝对没问题,社区活跃度很高,绝对不会黄,何况几乎是全世界这个领域的事实性规范。 + +## 4. 如何保证消息队列的高可用? + +### RabbitMQ 的高可用性 + +RabbitMQ 是比较有代表性的,因为是**基于主从**(非分布式)做高可用性的,我们就以 RabbitMQ 为例子讲解第一种 MQ 的高可用性怎么实现。 + +RabbitMQ 有三种模式:单机模式、普通集群模式、镜像集群模式。 + +#### 单机模式 + +单机模式,就是 Demo 级别的,一般就是你本地启动了玩玩儿的 😄,没人生产用单机模式。 + +#### 普通集群模式(无高可用性) + +普通集群模式,意思就是在多台机器上启动多个 RabbitMQ 实例,每个机器启动一个。你**创建的 queue,只会放在一个 RabbitMQ 实例上**,但是每个实例都同步 queue 的元数据(元数据可以认为是 queue 的一些配置信息,通过元数据,可以找到 queue 所在实例)。你消费的时候,实际上如果连接到了另外一个实例,那么那个实例会从 queue 所在实例上拉取数据过来。 + +![img](https://github.com/doocs/advanced-java/blob/master/images/mq-7.png) + +这种方式确实很麻烦,也不怎么好,**没做到所谓的分布式**,就是个普通集群。因为这导致你要么消费者每次随机连接一个实例然后拉取数据,要么固定连接那个 queue 所在实例消费数据,前者有**数据拉取的开销**,后者导致**单实例性能瓶颈**。 + +而且如果那个放 queue 的实例宕机了,会导致接下来其他实例就无法从那个实例拉取,如果你**开启了消息持久化**,让 RabbitMQ 落地存储消息的话,**消息不一定会丢**,得等这个实例恢复了,然后才可以继续从这个 queue 拉取数据。 + +所以这个事儿就比较尴尬了,这就**没有什么所谓的高可用性**,**这方案主要是提高吞吐量的**,就是说让集群中多个节点来服务某个 queue 的读写操作。 + +#### 镜像集群模式(高可用性) + +这种模式,才是所谓的 RabbitMQ 的高可用模式。跟普通集群模式不一样的是,在镜像集群模式下,你创建的 queue,无论元数据还是 queue 里的消息都会**存在于多个实例上**,就是说,每个 RabbitMQ 节点都有这个 queue 的一个**完整镜像**,包含 queue 的全部数据的意思。然后每次你写消息到 queue 的时候,都会自动把**消息同步**到多个实例的 queue 上。 + +![img](https://github.com/doocs/advanced-java/blob/master/images/mq-8.png) + +那么**如何开启这个镜像集群模式**呢?其实很简单,RabbitMQ 有很好的管理控制台,就是在后台新增一个策略,这个策略是**镜像集群模式的策略**,指定的时候是可以要求数据同步到所有节点的,也可以要求同步到指定数量的节点,再次创建 queue 的时候,应用这个策略,就会自动将数据同步到其他的节点上去了。 + +这样的话,好处在于,你任何一个机器宕机了,没事儿,其它机器(节点)还包含了这个 queue 的完整数据,别的 consumer 都可以到其它节点上去消费数据。坏处在于,第一,这个性能开销也太大了吧,消息需要同步到所有机器上,导致网络带宽压力和消耗很重!第二,这么玩儿,不是分布式的,就**没有扩展性可言**了,如果某个 queue 负载很重,你加机器,新增的机器也包含了这个 queue 的所有数据,并**没有办法线性扩展**你的 queue。你想,如果这个 queue 的数据量很大,大到这个机器上的容量无法容纳了,此时该怎么办呢? + +### Kafka 的高可用性 + +Kafka 一个最基本的架构认识:由多个 broker 组成,每个 broker 是一个节点;你创建一个 topic,这个 topic 可以划分为多个 partition,每个 partition 可以存在于不同的 broker 上,每个 partition 就放一部分数据。 + +这就是**天然的分布式消息队列**,就是说一个 topic 的数据,是**分散放在多个机器上的,每个机器就放一部分数据**。 + +实际上 RabbmitMQ 之类的,并不是分布式消息队列,它就是传统的消息队列,只不过提供了一些集群、HA(High Availability, 高可用性) 的机制而已,因为无论怎么玩儿,RabbitMQ 一个 queue 的数据都是放在一个节点里的,镜像集群下,也是每个节点都放这个 queue 的完整数据。 + +Kafka 0.8 以前,是没有 HA 机制的,就是任何一个 broker 宕机了,那个 broker 上的 partition 就废了,没法写也没法读,没有什么高可用性可言。 + +比如说,我们假设创建了一个 topic,指定其 partition 数量是 3 个,分别在三台机器上。但是,如果第二台机器宕机了,会导致这个 topic 的 1/3 的数据就丢了,因此这个是做不到高可用的。 + +![img](https://github.com/doocs/advanced-java/blob/master/images/kafka-before.png) + +Kafka 0.8 以后,提供了 HA 机制,就是 replica(复制品) 副本机制。每个 partition 的数据都会同步到其它机器上,形成自己的多个 replica 副本。所有 replica 会选举一个 leader 出来,那么生产和消费都跟这个 leader 打交道,然后其他 replica 就是 follower。写的时候,leader 会负责把数据同步到所有 follower 上去,读的时候就直接读 leader 上的数据即可。只能读写 leader?很简单,**要是你可以随意读写每个 follower,那么就要 care 数据一致性的问题**,系统复杂度太高,很容易出问题。Kafka 会均匀地将一个 partition 的所有 replica 分布在不同的机器上,这样才可以提高容错性。 + +![img](https://github.com/doocs/advanced-java/blob/master/images/kafka-after.png) + +这么搞,就有所谓的**高可用性**了,因为如果某个 broker 宕机了,没事儿,那个 broker 上面的 partition 在其他机器上都有副本的。如果这个宕机的 broker 上面有某个 partition 的 leader,那么此时会从 follower 中**重新选举**一个新的 leader 出来,大家继续读写那个新的 leader 即可。这就有所谓的高可用性了。 + +**写数据**的时候,生产者就写 leader,然后 leader 将数据落地写本地磁盘,接着其他 follower 自己主动从 leader 来 pull 数据。一旦所有 follower 同步好数据了,就会发送 ack 给 leader,leader 收到所有 follower 的 ack 之后,就会返回写成功的消息给生产者。(当然,这只是其中一种模式,还可以适当调整这个行为) + +**消费**的时候,只会从 leader 去读,但是只有当一个消息已经被所有 follower 都同步成功返回 ack 的时候,这个消息才会被消费者读到。 + +看到这里,相信你大致明白了 Kafka 是如何保证高可用机制的了,对吧?不至于一无所知,现场还能给面试官画画图。要是遇上面试官确实是 Kafka 高手,深挖了问,那你只能说不好意思,太深入的你没研究过。 + +## 5. 如何保证消息不被重复消费?(如何保证消息消费的幂等性) + +首先,比如 RabbitMQ、RocketMQ、Kafka,都有可能会出现消息重复消费的问题,正常。因为这问题通常不是 MQ 自己保证的,是由我们开发来保证的。挑一个 Kafka 来举个例子,说说怎么重复消费吧。 + +Kafka 实际上有个 offset 的概念,就是每个消息写进去,都有一个 offset,代表消息的序号,然后 consumer 消费了数据之后,**每隔一段时间**(定时定期),会把自己消费过的消息的 offset 提交一下,表示“我已经消费过了,下次我要是重启啥的,你就让我继续从上次消费到的 offset 来继续消费吧”。 + +但是凡事总有意外,比如我们之前生产经常遇到的,就是你有时候重启系统,看你怎么重启了,如果碰到点着急的,直接 kill 进程了,再重启。这会导致 consumer 有些消息处理了,但是没来得及提交 offset,尴尬了。重启之后,少数消息会再次消费一次。 + +举个栗子。 + +有这么个场景。数据 1/2/3 依次进入 kafka,kafka 会给这三条数据每条分配一个 offset,代表这条数据的序号,我们就假设分配的 offset 依次是 152/153/154。消费者从 kafka 去消费的时候,也是按照这个顺序去消费。假如当消费者消费了 `offset=153` 的这条数据,刚准备去提交 offset 到 zookeeper,此时消费者进程被重启了。那么此时消费过的数据 1/2 的 offset 并没有提交,kafka 也就不知道你已经消费了 `offset=153` 这条数据。那么重启之后,消费者会找 kafka 说,嘿,哥儿们,你给我接着把上次我消费到的那个地方后面的数据继续给我传递过来。由于之前的 offset 没有提交成功,那么数据 1/2 会再次传过来,如果此时消费者没有去重的话,那么就会导致重复消费。 + +![img](https://github.com/doocs/advanced-java/blob/master/images/mq-10.png) + +如果消费者干的事儿是拿一条数据就往数据库里写一条,会导致说,你可能就把数据 1/2 在数据库里插入了 2 次,那么数据就错啦。 + +其实重复消费不可怕,可怕的是你没考虑到重复消费之后,**怎么保证幂等性**。 + +举个例子吧。假设你有个系统,消费一条消息就往数据库里插入一条数据,要是你一个消息重复两次,你不就插入了两条,这数据不就错了?但是你要是消费到第二次的时候,自己判断一下是否已经消费过了,若是就直接扔了,这样不就保留了一条数据,从而保证了数据的正确性。 + +一条数据重复出现两次,数据库里就只有一条数据,这就保证了系统的幂等性。 + +幂等性,通俗点说,就一个数据,或者一个请求,给你重复来多次,你得确保对应的数据是不会改变的,**不能出错**。 + +所以第二个问题来了,怎么保证消息队列消费的幂等性? + +其实还是得结合业务来思考,我这里给几个思路: + +- 比如你拿个数据要写库,你先根据主键查一下,如果这数据都有了,你就别插入了,update 一下好吧。 +- 比如你是写 Redis,那没问题了,反正每次都是 set,天然幂等性。 +- 比如你不是上面两个场景,那做的稍微复杂一点,你需要让生产者发送每条数据的时候,里面加一个全局唯一的 id,类似订单 id 之类的东西,然后你这里消费到了之后,先根据这个 id 去比如 Redis 里查一下,之前消费过吗?如果没有消费过,你就处理,然后这个 id 写 Redis。如果消费过了,那你就别处理了,保证别重复处理相同的消息即可。 +- 比如基于数据库的唯一键来保证重复数据不会重复插入多条。因为有唯一键约束了,重复数据插入只会报错,不会导致数据库中出现脏数据。 + +![img](https://github.com/doocs/advanced-java/blob/master/images/mq-11.png) + +当然,如何保证 MQ 的消费是幂等性的,需要结合具体的业务来看。 + +## 6. 如何保证消息的可靠性传输?(如何处理消息丢失的问题) + +数据的丢失问题,可能出现在生产者、MQ、消费者中,咱们从 RabbitMQ 和 Kafka 分别来分析一下吧。 + +### RabbitMQ + +![img](https://github.com/doocs/advanced-java/blob/master/images/rabbitmq-message-lose.png) + +#### 生产者弄丢了数据 + +生产者将数据发送到 RabbitMQ 的时候,可能数据就在半路给搞丢了,因为网络问题啥的,都有可能。 + +此时可以选择用 RabbitMQ 提供的事务功能,就是生产者**发送数据之前**开启 RabbitMQ 事务`channel.txSelect`,然后发送消息,如果消息没有成功被 RabbitMQ 接收到,那么生产者会收到异常报错,此时就可以回滚事务`channel.txRollback`,然后重试发送消息;如果收到了消息,那么可以提交事务`channel.txCommit`。 + +```java +// 开启事务 +channel.txSelect +try { + // 这里发送消息 +} catch (Exception e) { + channel.txRollback + + // 这里再次重发这条消息 +} + +// 提交事务 +channel.txCommit +``` + +但是问题是,RabbitMQ 事务机制(同步)一搞,基本上**吞吐量会下来,因为太耗性能**。 + +所以一般来说,如果你要确保说写 RabbitMQ 的消息别丢,可以开启 `confirm` 模式,在生产者那里设置开启 `confirm`模式之后,你每次写的消息都会分配一个唯一的 id,然后如果写入了 RabbitMQ 中,RabbitMQ 会给你回传一个 `ack` 消息,告诉你说这个消息 ok 了。如果 RabbitMQ 没能处理这个消息,会回调你的一个 `nack` 接口,告诉你这个消息接收失败,你可以重试。而且你可以结合这个机制自己在内存里维护每个消息 id 的状态,如果超过一定时间还没接收到这个消息的回调,那么你可以重发。 + +事务机制和 `confirm` 机制最大的不同在于,**事务机制是同步的**,你提交一个事务之后会**阻塞**在那儿,但是 `confirm` 机制是**异步**的,你发送个消息之后就可以发送下一个消息,然后那个消息 RabbitMQ 接收了之后会异步回调你的一个接口通知你这个消息接收到了。 + +所以一般在生产者这块**避免数据丢失**,都是用 `confirm` 机制的。 + +#### RabbitMQ 弄丢了数据 + +就是 RabbitMQ 自己弄丢了数据,这个你必须**开启 RabbitMQ 的持久化**,就是消息写入之后会持久化到磁盘,哪怕是 RabbitMQ 自己挂了,**恢复之后会自动读取之前存储的数据**,一般数据不会丢。除非极其罕见的是,RabbitMQ 还没持久化,自己就挂了,**可能导致少量数据丢失**,但是这个概率较小。 + +设置持久化有**两个步骤**: + +- 创建 queue 的时候将其设置为持久化 + 这样就可以保证 RabbitMQ 持久化 queue 的元数据,但是它是不会持久化 queue 里的数据的。 +- 第二个是发送消息的时候将消息的 `deliveryMode` 设置为 2 + 就是将消息设置为持久化的,此时 RabbitMQ 就会将消息持久化到磁盘上去。 + +必须要同时设置这两个持久化才行,RabbitMQ 哪怕是挂了,再次重启,也会从磁盘上重启恢复 queue,恢复这个 queue 里的数据。 + +注意,哪怕是你给 RabbitMQ 开启了持久化机制,也有一种可能,就是这个消息写到了 RabbitMQ 中,但是还没来得及持久化到磁盘上,结果不巧,此时 RabbitMQ 挂了,就会导致内存里的一点点数据丢失。 + +所以,持久化可以跟生产者那边的 `confirm` 机制配合起来,只有消息被持久化到磁盘之后,才会通知生产者 `ack` 了,所以哪怕是在持久化到磁盘之前,RabbitMQ 挂了,数据丢了,生产者收不到 `ack`,你也是可以自己重发的。 + +#### 消费端弄丢了数据 + +RabbitMQ 如果丢失了数据,主要是因为你消费的时候,**刚消费到,还没处理,结果进程挂了**,比如重启了,那么就尴尬了,RabbitMQ 认为你都消费了,这数据就丢了。 + +这个时候得用 RabbitMQ 提供的 `ack` 机制,简单来说,就是你必须关闭 RabbitMQ 的自动 `ack`,可以通过一个 api 来调用就行,然后每次你自己代码里确保处理完的时候,再在程序里 `ack` 一把。这样的话,如果你还没处理完,不就没有 `ack` 了?那 RabbitMQ 就认为你还没处理完,这个时候 RabbitMQ 会把这个消费分配给别的 consumer 去处理,消息是不会丢的。 + +![img](https://github.com/doocs/advanced-java/blob/master/images/rabbitmq-message-lose-solution.png) + +### Kafka + +#### 消费端弄丢了数据 + +唯一可能导致消费者弄丢数据的情况,就是说,你消费到了这个消息,然后消费者那边**自动提交了 offset**,让 Kafka 以为你已经消费好了这个消息,但其实你才刚准备处理这个消息,你还没处理,你自己就挂了,此时这条消息就丢咯。 + +这不是跟 RabbitMQ 差不多吗,大家都知道 Kafka 会自动提交 offset,那么只要**关闭自动提交** offset,在处理完之后自己手动提交 offset,就可以保证数据不会丢。但是此时确实还是**可能会有重复消费**,比如你刚处理完,还没提交 offset,结果自己挂了,此时肯定会重复消费一次,自己保证幂等性就好了。 + +生产环境碰到的一个问题,就是说我们的 Kafka 消费者消费到了数据之后是写到一个内存的 queue 里先缓冲一下,结果有的时候,你刚把消息写入内存 queue,然后消费者会自动提交 offset。然后此时我们重启了系统,就会导致内存 queue 里还没来得及处理的数据就丢失了。 + +#### Kafka 弄丢了数据 + +这块比较常见的一个场景,就是 Kafka 某个 broker 宕机,然后重新选举 partition 的 leader。大家想想,要是此时其他的 follower 刚好还有些数据没有同步,结果此时 leader 挂了,然后选举某个 follower 成 leader 之后,不就少了一些数据?这就丢了一些数据啊。 + +生产环境也遇到过,我们也是,之前 Kafka 的 leader 机器宕机了,将 follower 切换为 leader 之后,就会发现说这个数据就丢了。 + +所以此时一般是要求起码设置如下 4 个参数: + +- 给 topic 设置 `replication.factor` 参数:这个值必须大于 1,要求每个 partition 必须有至少 2 个副本。 +- 在 Kafka 服务端设置 `min.insync.replicas` 参数:这个值必须大于 1,这个是要求一个 leader 至少感知到有至少一个 follower 还跟自己保持联系,没掉队,这样才能确保 leader 挂了还有一个 follower 吧。 +- 在 producer 端设置 `acks=all`:这个是要求每条数据,必须是**写入所有 replica 之后,才能认为是写成功了**。 +- 在 producer 端设置 `retries=MAX`(很大很大很大的一个值,无限次重试的意思):这个是**要求一旦写入失败,就无限重试**,卡在这里了。 + +我们生产环境就是按照上述要求配置的,这样配置之后,至少在 Kafka broker 端就可以保证在 leader 所在 broker 发生故障,进行 leader 切换时,数据不会丢失。 + +#### 生产者会不会弄丢数据? + +如果按照上述的思路设置了 `acks=all`,一定不会丢,要求是,你的 leader 接收到消息,所有的 follower 都同步到了消息之后,才认为本次写成功了。如果没满足这个条件,生产者会自动不断的重试,重试无限次。 + +## 7. 如何保证消息的顺序性? + +我举个例子,我们以前做过一个 mysql `binlog` 同步的系统,压力还是非常大的,日同步数据要达到上亿,就是说数据从一个 mysql 库原封不动地同步到另一个 mysql 库里面去(mysql -> mysql)。常见的一点在于说比如大数据 team,就需要同步一个 mysql 库过来,对公司的业务系统的数据做各种复杂的操作。 + +你在 mysql 里增删改一条数据,对应出来了增删改 3 条 `binlog` 日志,接着这三条 `binlog` 发送到 MQ 里面,再消费出来依次执行,起码得保证人家是按照顺序来的吧?不然本来是:增加、修改、删除;你楞是换了顺序给执行成删除、修改、增加,不全错了么。 + +本来这个数据同步过来,应该最后这个数据被删除了;结果你搞错了这个顺序,最后这个数据保留下来了,数据同步就出错了。 + +先看看顺序会错乱的俩场景: + +- **RabbitMQ**:一个 queue,多个 consumer。比如,生产者向 RabbitMQ 里发送了三条数据,顺序依次是 data1/data2/data3,压入的是 RabbitMQ 的一个内存队列。有三个消费者分别从 MQ 中消费这三条数据中的一条,结果消费者2先执行完操作,把 data2 存入数据库,然后是 data1/data3。这不明显乱了。 + +![img](https://github.com/doocs/advanced-java/blob/master/images/rabbitmq-order-01.png) + +- **Kafka**:比如说我们建了一个 topic,有三个 partition。生产者在写的时候,其实可以指定一个 key,比如说我们指定了某个订单 id 作为 key,那么这个订单相关的数据,一定会被分发到同一个 partition 中去,而且这个 partition 中的数据一定是有顺序的。 + 消费者从 partition 中取出来数据的时候,也一定是有顺序的。到这里,顺序还是 ok 的,没有错乱。接着,我们在消费者里可能会搞**多个线程来并发处理消息**。因为如果消费者是单线程消费处理,而处理比较耗时的话,比如处理一条消息耗时几十 ms,那么 1 秒钟只能处理几十条消息,这吞吐量太低了。而多个线程并发跑的话,顺序可能就乱掉了。 + +![img](https://github.com/doocs/advanced-java/blob/master/images/kafka-order-01.png) + +### 解决方案 + +#### RabbitMQ + +![img](https://github.com/doocs/advanced-java/blob/master/images/rabbitmq-order-02.png) + +#### Kafka + +- 一个 topic,一个 partition,一个 consumer,内部单线程消费,单线程吞吐量太低,一般不会用这个。 +- 写 N 个内存 queue,具有相同 key 的数据都到同一个内存 queue;然后对于 N 个线程,每个线程分别消费一个内存 queue 即可,这样就能保证顺序性。 + +![img](https://github.com/doocs/advanced-java/blob/master/images/kafka-order-02.png) + +## 8. 如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决? + +你看这问法,其实本质针对的场景,都是说,可能你的消费端出了问题,不消费了;或者消费的速度极其慢。接着就坑爹了,可能你的消息队列集群的磁盘都快写满了,都没人消费,这个时候怎么办?或者是这整个就积压了几个小时,你这个时候怎么办?或者是你积压的时间太长了,导致比如 RabbitMQ 设置了消息过期时间后就没了怎么办? + +所以就这事儿,其实线上挺常见的,一般不出,一出就是大 case。一般常见于,举个例子,消费端每次消费之后要写 mysql,结果 mysql 挂了,消费端 hang 那儿了,不动了;或者是消费端出了个什么岔子,导致消费速度极其慢。 + +### 面试题剖析 + +关于这个事儿,我们一个一个来梳理吧,先假设一个场景,我们现在消费端出故障了,然后大量消息在 mq 里积压,现在出事故了,慌了。 + +### 大量消息在 mq 里积压了几个小时了还没解决 + +几千万条数据在 MQ 里积压了七八个小时,从下午 4 点多,积压到了晚上 11 点多。这个是我们真实遇到过的一个场景,确实是线上故障了,这个时候要不然就是修复 consumer 的问题,让它恢复消费速度,然后傻傻的等待几个小时消费完毕。这个肯定不能在面试的时候说吧。 + +一个消费者一秒是 1000 条,一秒 3 个消费者是 3000 条,一分钟就是 18 万条。所以如果你积压了几百万到上千万的数据,即使消费者恢复了,也需要大概 1 小时的时间才能恢复过来。 + +一般这个时候,只能临时紧急扩容了,具体操作步骤和思路如下: + +- 先修复 consumer 的问题,确保其恢复消费速度,然后将现有 consumer 都停掉。 +- 新建一个 topic,partition 是原来的 10 倍,临时建立好原先 10 倍的 queue 数量。 +- 然后写一个临时的分发数据的 consumer 程序,这个程序部署上去消费积压的数据,**消费之后不做耗时的处理**,直接均匀轮询写入临时建立好的 10 倍数量的 queue。 +- 接着临时征用 10 倍的机器来部署 consumer,每一批 consumer 消费一个临时 queue 的数据。这种做法相当于是临时将 queue 资源和 consumer 资源扩大 10 倍,以正常的 10 倍速度来消费数据。 +- 等快速消费完积压数据之后,**得恢复原先部署的架构**,**重新**用原先的 consumer 机器来消费消息。 + +### mq 中的消息过期失效了 + +假设你用的是 RabbitMQ,RabbtiMQ 是可以设置过期时间的,也就是 TTL。如果消息在 queue 中积压超过一定的时间就会被 RabbitMQ 给清理掉,这个数据就没了。那这就是第二个坑了。这就不是说数据会大量积压在 mq 里,而是**大量的数据会直接搞丢**。 + +这个情况下,就不是说要增加 consumer 消费积压的消息,因为实际上没啥积压,而是丢了大量的消息。我们可以采取一个方案,就是**批量重导**,这个我们之前线上也有类似的场景干过。就是大量积压的时候,我们当时就直接丢弃数据了,然后等过了高峰期以后,比如大家一起喝咖啡熬夜到晚上12点以后,用户都睡觉了。这个时候我们就开始写程序,将丢失的那批数据,写个临时程序,一点一点的查出来,然后重新灌入 mq 里面去,把白天丢的数据给他补回来。也只能是这样了。 + +假设 1 万个订单积压在 mq 里面,没有处理,其中 1000 个订单都丢了,你只能手动写程序把那 1000 个订单给查出来,手动发到 mq 里去再补一次。 + +### mq 都快写满了 + +如果消息积压在 mq 里,你很长时间都没有处理掉,此时导致 mq 都快写满了,咋办?这个还有别的办法吗?没有,谁让你第一个方案执行的太慢了,你临时写程序,接入数据来消费,**消费一个丢弃一个,都不要了**,快速消费掉所有的消息。然后走第二个方案,到了晚上再补数据吧。 + +## 9. 如果让你写一个消息队列,该如何进行架构设计啊?说一下你的思路。 + +### 面试官心理分析 + +其实聊到这个问题,一般面试官要考察两块: + +- 你有没有对某一个消息队列做过较为深入的原理的了解,或者从整体了解把握住一个消息队列的架构原理。 +- 看看你的设计能力,给你一个常见的系统,就是消息队列系统,看看你能不能从全局把握一下整体架构设计,给出一些关键点出来。 + +说实话,问类似问题的时候,大部分人基本都会蒙,因为平时从来没有思考过类似的问题,大多数人就是平时埋头用,从来不去思考背后的一些东西。类似的问题,比如,如果让你来设计一个 Spring 框架你会怎么做?如果让你来设计一个 Dubbo 框架你会怎么做?如果让你来设计一个 MyBatis 框架你会怎么做? + +### 面试题剖析 + +其实回答这类问题,说白了,不求你看过那技术的源码,起码你要大概知道那个技术的基本原理、核心组成部分、基本架构构成,然后参照一些开源的技术把一个系统设计出来的思路说一下就好。 + +比如说这个消息队列系统,我们从以下几个角度来考虑一下: + +- 首先这个 mq 得支持可伸缩性吧,就是需要的时候快速扩容,就可以增加吞吐量和容量,那怎么搞?设计个分布式的系统呗,参照一下 kafka 的设计理念,broker -> topic -> partition,每个 partition 放一个机器,就存一部分数据。如果现在资源不够了,简单啊,给 topic 增加 partition,然后做数据迁移,增加机器,不就可以存放更多数据,提供更高的吞吐量了? +- 其次你得考虑一下这个 mq 的数据要不要落地磁盘吧?那肯定要了,落磁盘才能保证别进程挂了数据就丢了。那落磁盘的时候怎么落啊?顺序写,这样就没有磁盘随机读写的寻址开销,磁盘顺序读写的性能是很高的,这就是 kafka 的思路。 +- 其次你考虑一下你的 mq 的可用性啊?这个事儿,具体参考之前可用性那个环节讲解的 kafka 的高可用保障机制。多副本 -> leader & follower -> broker 挂了重新选举 leader 即可对外服务。 +- 能不能支持数据 0 丢失啊?可以的,参考我们之前说的那个 kafka 数据零丢失方案。 + +mq 肯定是很复杂的,面试官问你这个问题,其实是个开放题,他就是看看你有没有从架构角度整体构思和设计的思维以及能力。确实这个问题可以刷掉一大批人,因为大部分人平时不思考这些东西。 diff --git a/docs/security/README.md b/docs/security/README.md new file mode 100644 index 00000000..363bf64c --- /dev/null +++ b/docs/security/README.md @@ -0,0 +1,12 @@ +# Java 和安全 + +## 📖 内容 + +- [shiro](shiro.md) +- [spring-security](spring-security.md) + +## 📚 资料 + +## 🚪 传送 + +◾ 🏠 [JAVA-TUTORIAL 首页](https://github.com/dunwu/java-tutorial) ◾ 🎯 [我的博客](https://github.com/dunwu/blog) ◾ diff --git a/docs/security/shiro.md b/docs/security/shiro.md new file mode 100644 index 00000000..4d846b50 --- /dev/null +++ b/docs/security/shiro.md @@ -0,0 +1,425 @@ +# Shiro 应用指南 + +> Shiro 是一个安全框架,具有认证、授权、加密、会话管理功能。 + +## 一、Shiro 简介 + +### Shiro 特性 + +

    + +

    + +核心功能: + +- **Authentication** - **认证**。验证用户是不是拥有相应的身份。 +- **Authorization** - **授权**。验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限。 +- **Session Manager** - **会话管理**。即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中。会话可以是普通 JavaSE 环境的,也可以是如 Web 环境的。 +- **Cryptography** - **加密**。保护数据的安全性,如密码加密存储到数据库,而不是明文存储。 + +辅助功能: + +- **Web Support** - **Web 支持**。可以非常容易的集成到 Web 环境; +- **Caching** - **缓存**。比如用户登录后,其用户信息、拥有的角色 / 权限不必每次去查,这样可以提高效率; +- **Concurrency** - **并发**。Shiro 支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去; +- **Testing** - **测试**。提供测试支持; +- **Run As** - **运行方式**。允许一个用户假装为另一个用户(如果他们允许)的身份进行访问; +- **Remember Me** - **记住我**。即一次登录后,下次再访问免登录。 + +> :bell: 注意:Shiro 不会去维护用户、维护权限;这些需要我们自己去提供;然后通过相应的接口注入给 Shiro 即可。 + +### Shiro 架构概述 + +

    + +

    + +- **Subject** - **主题**。它代表当前用户,`Subject` 可以是一个人,但也可以是第三方服务、守护进程帐户、时钟守护任务或者其它——当前和软件交互的任何事件。`Subject` 是 Shiro 的入口。 + + - `Principals` 是 `Subject` 的“识别属性”。`Principals` 可以是任何可以识别 `Subject` 的东西,例如名字(姓氏),姓氏(姓氏或姓氏),用户名,社会保险号等。当然,`Principals` 在应用程序中最好是惟一的。 + - `Credentials` 通常是仅由 `Subject` 知道的秘密值,用作他们实际上“拥有”所主张身份的佐证 凭据的一些常见示例是密码,生物特征数据(例如指纹和视网膜扫描)以及 X.509 证书。 + +- **SecurityManager** - **安全管理**。它是 Shiro 的核心,所有与安全有关的操作(认证、授权、及会话、缓存的管理)都与 `SecurityManager` 交互,且它管理着所有 `Subject`。 +- **Realm** - **域**。用于访问安全相关数据,可以视为应用自身的数据源,需要开发者自己实现。Shiro 会通过 `Realm` 获取安全数据(如用户、角色、权限),就是说 `SecurityManager` 要验证用户身份,那么它需要从 `Realm` 获取相应的用户进行比较以确定用户身份是否合法;也需要从 Realm 得到用户相应的角色/权限进行验证用户是否能进行操作;可以把 `Realm` 看成 DataSource,即安全数据源。 + +### SecurityManager + +`SecurityManager` 是 Shiro 框架核心中的核心,它相当于 Shiro 的总指挥,负责调度所有行为,包括:认证、授权、获取安全数据(调用 `Realm`)、会话管理等。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/java/javaweb/standalone/security/shiro/ShiroArchitecture.png) + +`SecurityManager` 聚合了以下组件: + +- **Authenticator** - 认证器,负责认证。如果用户需要定制认证策略,可以实现此接口。 +- **Authorizer** - 授权器,负责权限控制。用来决定主体是否有权限进行相应的操作;即控制着用户能访问应用中的哪些功能; +- **SessionManager** - 会话管理器。Shiro 抽象了一个自己的 Session 来管理主体与应用之间交互的数据。 +- **SessionDAO** - 会话 DAO 用于存储会话,需要用户自己实现。 +- **CacheManager** - 缓存控制器。用于管理如用户、角色、权限等信息的缓存。 +- **Cryptography** - 密码器。用于对数据加密、解密。 + +## 二、Shiro 认证 + +### 认证 Subject + +验证 Subject 的过程可以有效地分为三个不同的步骤: + +(1)收集 `Subject` 提交的 `Principals` 和 `Credentials` + +```java +//Example using most common scenario of username/password pair: +UsernamePasswordToken token = new UsernamePasswordToken(username, password); + +//"Remember Me" built-in: +token.setRememberMe(true); +``` + +(2)提交 `Principals` 和 `Credentials` 以进行身份验证。 + +```java +Subject currentUser = SecurityUtils.getSubject(); + +currentUser.login(token); +``` + +(3)如果提交成功,则允许访问,否则重试身份验证或阻止访问。 + +```java +try { + currentUser.login(token); +} catch ( UnknownAccountException uae ) { ... +} catch ( IncorrectCredentialsException ice ) { ... +} catch ( LockedAccountException lae ) { ... +} catch ( ExcessiveAttemptsException eae ) { ... +} ... catch your own ... +} catch ( AuthenticationException ae ) { + //unexpected error? +} +``` + +### Remembered 和 Authenticated + +- `Remembered` - 记住我。被记住的 `Subject` 不是匿名的,并且具有已知的身份(即 `subject.getPrincipals()` 是非空的)。 但是,在先前的会话期间,通过先前的身份验证会记住此身份。 如果 `subject.isRemembered()` 返回 `true`,则认为该主题已被记住。 +- `Authenticated` - 已认证。已认证的 `Subject` 是在当前会话期间已成功认证的 `Subject`。 如果 `subject.isAuthenticated()` 返回 `true`,则认为该 `Subject` 已通过身份验证。 + +### 登出 + +当 Subject 与应用程序完成交互后,可以调用 `subject.logout()` 登出,即放弃所有标识信息。 + +```java +currentUser.logout(); +``` + +### 认证流程 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200317092427.png) + +1. 应用程序代码调用 `Subject.login` 方法,传入构造的 `AuthenticationToken` 实例,该实例代表最终用户的 `Principals` 和 `Credentials`。 + +2. `Subject` 实例(通常是 `DelegatingSubject`(或子类))通过调用 `securityManager.login`(token)委托应用程序的 `SecurityManager`,在此处开始实际的身份验证工作。 +3. `SecurityManager` 接收令牌,并通过调用 `authenticator.authenticate`(token)来简单地委派给其内部 `Authenticator` 实例。这几乎总是一个 `ModularRealmAuthenticator` 实例,它支持在身份验证期间协调一个或多个 `Realm` 实例。 +4. 如果为该应用程序配置了多个 `Realm`,则 `ModularRealmAuthenticator` 实例将利用其配置的 `AuthenticationStrategy` 发起多域验证尝试。在调用领域进行身份验证之前,期间和之后,将调用 `AuthenticationStrategy` 以使其对每个领域的结果做出反应。 +5. 请咨询每个已配置的 `Realm`,以查看其是否支持提交的 `AuthenticationToken`。 如果是这样,将使用提交的令牌调用支持 `Realm` 的 `getAuthenticationInfo` 方法。 `getAuthenticationInfo` 方法有效地表示对该特定 `Realm` 的单个身份验证尝试。 + +### 认证策略 + +当为一个应用程序配置两个或多个领域时,`ModularRealmAuthenticator` 依赖于内部 `AuthenticationStrategy` 组件来确定认证尝试成功或失败的条件。 + +例如,如果只有一个 Realm 成功地对 AuthenticationToken 进行身份验证,而所有其他 Realm 都失败了,那么该身份验证尝试是否被视为成功?还是必须所有领域都成功进行身份验证才能将整体尝试视为成功?或者,如果某个领域成功通过身份验证,是否有必要进一步咨询其他领域? AuthenticationStrategy 根据应用程序的需求做出适当的决定。 + +`AuthenticationStrategy` 是无状态组件,在尝试进行身份验证时会被查询 4 次(这 4 种交互所需的任何必要状态都将作为方法参数给出): + +- 在任何领域被调用之前 +- 在调用单个 `Realm` 的 `getAuthenticationInfo` 方法之前 +- 在调用单个 `Realm` 的 `getAuthenticationInfo` 方法之后 +- 在所有领域都被调用之后 + +`AuthenticationStrategy` 还负责汇总每个成功 `Realm` 的结果,并将它们“捆绑”成单个 `AuthenticationInfo` 表示形式。最终的聚合 `AuthenticationInfo` 实例是 `Authenticator` 实例返回的结果,也是 Shiro 用来表示主体的最终身份(也称为委托人)的东西。 + +| `AuthenticationStrategy` | 描述 | +| :-------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------- | +| [`AtLeastOneSuccessfulStrategy`](http://shiro.apache.org/static/current/apidocs/org/apache/shiro/authc/pam/AtLeastOneSuccessfulStrategy.html) | 只要有一个 `Realm` 成功认证,则整个尝试都被视为成功。 | +| [`FirstSuccessfulStrategy`](http://shiro.apache.org/static/current/apidocs/org/apache/shiro/authc/pam/FirstSuccessfulStrategy.html) | 仅使用从第一个成功通过身份验证的 `Realm` 返回的信息,所有其他 Realm 将被忽略。 | +| [`AllSuccessfulStrategy`](http://shiro.apache.org/static/current/apidocs/org/apache/shiro/authc/pam/AllSuccessfulStrategy.html) | 只有所有 `Realm` 成功认证,则整个尝试才被视为成功。 | + +> :link: 更多认证细节可以参考:[Apache Shiro Authentication](http://shiro.apache.org/authentication.html#apache-shiro-authentication) + +## 三、Shiro 授权 + +授权,也称为访问控制,是管理对资源的访问的过程。 换句话说,控制谁有权访问应用程序中的内容。 + +### 授权元素 + +授权有三个核心要素:权限、角色和用户。 + +#### 权限 + +权限示例: + +- 打开一个文件 +- 查看 `/user/list` web 页面 +- 查询记录 +- 删除一条记录 +- ... + +大多数资源都支持一般的 CRUD 操作。除此以外,对于一些特定的资源,任何有意义的行为都是可以的。基本的设计思路是:权限控制,至少是基于资源和行为。 + +#### 角色 + +角色是一个命名实体,通常代表一组行为或职责。这些行为会转化为:谁可以在应用程序中执行哪些行为?谁不可以在程序中执行哪些行为? + +角色通常是分配给用户帐户的,因此通过关联,用户可以获得自身角色所赋予的权限。 + +#### 用户 + +用户本质上是应用程序的“用户”。 + +用户(即 Shiro 的 `Subject`)通过与角色或直接权限的关联在应用程序中执行某些行为。 + +### 基于角色的授权 + +如果授权是基于角色赋予权限的数据模型,编程模式如下: + +【示例一】 + +``` +Subject currentUser = SecurityUtils.getSubject(); + +if (currentUser.hasRole("administrator")) { + //show the admin button +} else { + //don't show the button? Grey it out? +} +``` + +【示例二】 + +``` +Subject currentUser = SecurityUtils.getSubject(); + +// 检查当前 Subject 是否有某种权限 +// 如果有,直接跳过;如果没有,Shiro 会抛出 AuthorizationException +currentUser.checkRole("bankTeller"); +openBankAccount(); +``` + +> 提示:方式二相比方式一,代码更简洁 + +### 基于权限的授权 + +**更好的授权策略通常是基于权限的授权**。基于权限的授权,由于它和应用程序的原始功能(针对具体资源上的行为)紧密相关,所以基于权限的授权源代码会在功能更改时同步更改(而不是在安全策略发生更改时)。 这意味着与类似的基于角色的授权代码相比,修改代码的影响面要小得多。 + +【示例】基于对象的权限检查 + +```java +Permission printPermission = new PrinterPermission("laserjet4400n", "print"); + +Subject currentUser = SecurityUtils.getSubject(); + +if (currentUser.isPermitted(printPermission)) { + //show the Print button +} else { + //don't show the button? Grey it out? +} +``` + +在对象中存储权限控制信息,但这种方式较为繁重 + +【示例】字符串定义权限控制信息 + +```java +Subject currentUser = SecurityUtils.getSubject(); + +if (currentUser.isPermitted("printer:print:laserjet4400n")) { + //show the Print button +} else { + //don't show the button? Grey it out? +} +``` + +使用 : 分隔,表示资源类型、行为、资源 ID,Shiro 提供了默认实现: `org.apache.shiro.authz.permission.WildcardPermission`。 + +这种权限控制方式的好处在于:轻量、灵活。 + +### 基于注解的授权 + +Shiro 提供了一些用于授权的注解,来进一步简化授权代码。 + +#### `@RequiresAuthentication` + +`@RequiresAuthentication` 注解要求当前 `Subject` 必须是已认证用户才可以访问被修饰的方法。 + +【示例】 + +```java +@RequiresAuthentication +public void updateAccount(Account userAccount) { + //this method will only be invoked by a + //Subject that is guaranteed authenticated + ... +} +``` + +#### `@RequiresGuest` + +`@RequiresGuest` 注解要求当前 `Subject` 的角色是 `guest` 才可以访问被修饰的方法。 + +### 授权流程 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200317092618.png) + +1. 应用程序或框架代码调用任何 `Subject` 的 `hasRole*`,`checkRole*`,`isPermitted*` 或 `checkPermission*` 方法,并传入所需的权限或角色。 + +2. `Subject` 实例,通常是 `DelegatingSubject`(或子类),通过调用 `securityManager` 几乎相同的各自 `hasRole*`,`checkRole*`,`isPermitted*` 或 `checkPermission*` 方法来委托 `SecurityManager` (实现了 [`org.apache.shiro.authz.Authorizer`](http://shiro.apache.org/static/current/apidocs/org/apache/shiro/authz/Authorizer.html) 接口)处理授权。 + +3. `SecurityManager` 通过调用授权者各自的 `hasRole*`,`checkRole*`,`isPermitted*` 或 `checkPermission*` 方法来中继/委托其内部的 `org.apache.shiro.authz.Authorizer` 实例。默认情况下,`authorizer` 实例是 `ModularRealmAuthorizer` 实例,该实例支持在任何授权操作期间协调一个或多个 `Realm` 实例。 + +4. 检查每个已配置的 `Realm`,以查看其是否实现相同的 `Authorizer` 接口。如果是这样,则将调用 `Realm` 各自的 `hasRole*`,`checkRole*`,`isPermitted*` 或 `checkPermission*` 方法。 + +> :link: 更多授权细节可以参考:[Apache Shiro Authorization](http://shiro.apache.org/authorization.html#apache-shiro-authorization) + +## 四、Shiro 会话管理 + +Shiro 提供了一套独特的会话管理方案:其 Session 可以使用 Java SE 程序,也可以使用于 Java Web 程序。 + +在 Shiro 中,[SessionManager](http://shiro.apache.org/session-management.html#the-sessionmanager) 负责管理应用所有 `Subject` 的会话,如:创建、删除、失效、验证等。 + +【示例】会话使用示例 + +```java +Subject currentUser = SecurityUtils.getSubject(); + +Session session = currentUser.getSession(); +session.setAttribute( "someKey", someValue); +``` + +### 会话超时 + +默认情况下,Shiro 中的会话有效期为 30 分钟,超时后,该会话将被 Shiro 视为无效。 + +可以通过 `globalSessionTimeout` 方法设置 Shiro 会话超时时间。 + +### 会话监听 + +Shiro 提供了 `SessionListener` 接口(或 `SessionListenerAdapter` 接口),用于监听重要的会话事件,并允许使用者在事件触发时做定制化处理。 + +【示例】 + +```java +public class ShiroSessionListener implements SessionListener { + + private final Logger log = LoggerFactory.getLogger(this.getClass()); + + private final AtomicInteger sessionCount = new AtomicInteger(0); + + @Override + public void onStart(Session session) { + sessionCount.incrementAndGet(); + } + + @Override + public void onStop(Session session) { + sessionCount.decrementAndGet(); + } + + @Override + public void onExpiration(Session session) { + sessionCount.decrementAndGet(); + } +} +``` + +### 会话存储 + +大多数情况下,应用需要保存会话信息,以便在稍后可以使用它。 + +Shiro 提供了 `SessionManager` 接口,负责将针对会话的 CRUD 操作委派给内部组件 `SessionDAO`,该组件反映了数据访问对象(DAO)设计模式。 + +> :bell: 注意:由于会话通常具有时效性,所以一般会话天然适合存储于缓存中。存储于 Redis 中是一个不错的选择。 + +## 五、Realm + +`Realm` 是 Shiro 访问程序安全相关数据(如:用户、角色、权限)的接口。 + +`Realm` 是有开发者自己实现的,开发者可以通过实现 Realm 接口,接入应用的数据源,如:JDBC、文件、Nosql 等等。 + +### 认证令牌 + +Shiro 支持身份验证令牌。在咨询 Realm 进行认证尝试之前,将调用其支持方法。 如果返回值为 true,则仅会调用其 [getAuthenticationInfo(token)](http://shiro.apache.org/static/current/apidocs/org/apache/shiro/realm/Realm.html#getAuthenticationInfo-org.apache.shiro.authc.AuthenticationToken-) 方法。通常,Realm 会检查所提交令牌的类型(接口或类),以查看其是否可以处理它。 + +令牌认证处理流程如下: + +1. 检查用于标识 principal 的令牌(帐户标识信息)。 +2. 根据 principal,在数据源中查找相应的帐户数据。 +3. 确保令牌提供的凭证与数据存储中存储的凭证匹配。 +4. 如果 credentials 匹配,则返回 `AuthenticationInfo` 实例。 +5. 如果 credentials 不匹配,则抛出 `AuthenticationException` 异常。 + +### 加密 + +通过前文,可以了解:Shiro 需要通过一对 principal 和 credentials 来确认身份是否匹配(即认证)。 + +一般来说,成熟软件是不允许存储账户、密码这些敏感数据时,使用明文存储。所以,通常要将密码加密后存储。 + +Shiro 提供了一些加密器,其思想就是用 MD5、SHA 这种数字签名算法,加 Salt,然后转为 Base64 字符串。为了避免被暴力破解,Shiro 使用多次加密的方式获得最终的 credentials 字符串。 + +【示例】Shiro 加密密码示例 + +```java +import org.apache.shiro.crypto.hash.Sha256Hash; +import org.apache.shiro.crypto.RandomNumberGenerator; +import org.apache.shiro.crypto.SecureRandomNumberGenerator; +... + +//We'll use a Random Number Generator to generate salts. This +//is much more secure than using a username as a salt or not +//having a salt at all. Shiro makes this easy. +// +//Note that a normal app would reference an attribute rather +//than create a new RNG every time: +RandomNumberGenerator rng = new SecureRandomNumberGenerator(); +Object salt = rng.nextBytes(); + +//Now hash the plain-text password with the random salt and multiple +//iterations and then Base64-encode the value (requires less space than Hex): +String hashedPasswordBase64 = new Sha256Hash(plainTextPassword, salt, 1024).toBase64(); + +User user = new User(username, hashedPasswordBase64); +//save the salt with the new account. The HashedCredentialsMatcher +//will need it later when handling login attempts: +user.setPasswordSalt(salt); +userDAO.create(user); +``` + +## 六、配置 + +### 过滤链 + +运行 Web 应用程序时,Shiro 将创建一些有用的默认 Filter 实例。 + +| Filter Name | Class | +| :---------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| anon | [org.apache.shiro.web.filter.authc.AnonymousFilter](http://shiro.apache.org/static/current/apidocs/org/apache/shiro/web/filter/authc/AnonymousFilter.html) | +| authc | [org.apache.shiro.web.filter.authc.FormAuthenticationFilter](http://shiro.apache.org/static/current/apidocs/org/apache/shiro/web/filter/authc/FormAuthenticationFilter.html) | +| authcBasic | [org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter](http://shiro.apache.org/static/current/apidocs/org/apache/shiro/web/filter/authc/BasicHttpAuthenticationFilter.html) | +| logout | [org.apache.shiro.web.filter.authc.LogoutFilter](http://shiro.apache.org/static/current/apidocs/org/apache/shiro/web/filter/authc/LogoutFilter.html) | +| noSessionCreation | [org.apache.shiro.web.filter.session.NoSessionCreationFilter](http://shiro.apache.org/static/current/apidocs/org/apache/shiro/web/filter/session/NoSessionCreationFilter.html) | +| perms | [org.apache.shiro.web.filter.authz.PermissionsAuthorizationFilter](http://shiro.apache.org/static/current/apidocs/org/apache/shiro/web/filter/authz/PermissionsAuthorizationFilter.html) | +| port | [org.apache.shiro.web.filter.authz.PortFilter](http://shiro.apache.org/static/current/apidocs/org/apache/shiro/web/filter/authz/PortFilter.html) | +| rest | [org.apache.shiro.web.filter.authz.HttpMethodPermissionFilter](http://shiro.apache.org/static/current/apidocs/org/apache/shiro/web/filter/authz/HttpMethodPermissionFilter.html) | +| roles | [org.apache.shiro.web.filter.authz.RolesAuthorizationFilter](http://shiro.apache.org/static/current/apidocs/org/apache/shiro/web/filter/authz/RolesAuthorizationFilter.html) | +| ssl | [org.apache.shiro.web.filter.authz.SslFilter](http://shiro.apache.org/static/current/apidocs/org/apache/shiro/web/filter/authz/SslFilter.html) | +| user | [org.apache.shiro.web.filter.authc.UserFilter](http://shiro.apache.org/static/current/apidocs/org/apache/shiro/web/filter/authc/UserFilter.html) | + +### RememberMe + +```java +UsernamePasswordToken token = new UsernamePasswordToken(username, password); +token.setRememberMe(true); +SecurityUtils.getSubject().login(token); +``` + +## 参考资料 + +- [Shiro 官方文档](http://shiro.apache.org/reference.html) +- [跟我学 Shiro](http://jinnianshilongnian.iteye.com/category/305053) +- [The New RBAC: Resource-Based Access Control](https://stormpath.com/blog/new-rbac-resource-based-access-control) diff --git a/docs/security/spring-security.md b/docs/security/spring-security.md new file mode 100644 index 00000000..8c2eafd0 --- /dev/null +++ b/docs/security/spring-security.md @@ -0,0 +1,221 @@ +# Spring Security + +## 快速开始 + +参考:[Securing a Web Application](https://spring.io/guides/gs/securing-web/) + +## 核心 API + +## 设计原理 + +Spring Security 对于 Servlet 的支持基于过滤链(`FilterChain`)实现。 + +Spring 提供了一个名为 `DelegatingFilterProxy` 的 `Filter` 实现,该实现允许在 Servlet 容器的生命周期和 Spring 的 `ApplicationContext` 之间进行桥接。 Servlet 容器允许使用其自己的标准注册 Filters,但它不了解 Spring 定义的 Bean。 `DelegatingFilterProxy` 可以通过标准的 Servlet 容器机制进行注册,但是可以将所有工作委托给实现 Filter 的 Spring Bean。 + +```java +public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) { + // Lazily get Filter that was registered as a Spring Bean + // For the example in DelegatingFilterProxy delegate is an instance of Bean Filter0 + Filter delegate = getFilterBean(someBeanName); + // delegate work to the Spring Bean + delegate.doFilter(request, response); +} +``` + +`FilterChainProxy` 使用 `SecurityFilterChain` 确定应对此请求调用哪些 Spring Security 过滤器。 + +`SecurityFilterChain` 中的安全过滤器通常是 Bean,但它们是使用 `FilterChainProxy` 而不是 `DelegatingFilterProxy` 注册的。 + +实际上,`FilterChainProxy` 可用于确定应使用哪个 `SecurityFilterChain`。如果您的应用程序可以为不同的模块提供完全独立的配置。 + +![multi securityfilterchain](https://docs.spring.io/spring-security/site/docs/5.3.0.RELEASE/reference/html5/images/servlet/architecture/multi-securityfilterchain.png) + +ExceptionTranslationFilter 可以将 AccessDeniedException 和 AuthenticationException 转换为 HTTP 响应。 + +![exceptiontranslationfilter](https://docs.spring.io/spring-security/site/docs/5.3.0.RELEASE/reference/html5/images/servlet/architecture/exceptiontranslationfilter.png) + +核心源码: + +```java +try { + filterChain.doFilter(request, response); +} catch (AccessDeniedException | AuthenticationException e) { + if (!authenticated || e instanceof AuthenticationException) { + startAuthentication(); + } else { + accessDenied(); + } +} +``` + +## 认证 + +### 数据模型 + +Spring Security 框架中的认证数据模型如下: + +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200331115710.png) + +- `Authentication` - 认证信息实体。 + - `principal` - 用户标识。如:用户名、账户名等。通常是 `UserDetails` 的实例(后面详细讲解)。 + - `credentials` - 认证凭证。如:密码等。 + - `authorities` - 授权信息。如:用户的角色、权限等信息。 +- `SecurityContext` - 安全上下文。包含一个 `Authentication` 对象。 +- `SecurityContextHolder` - 安全上下文持有者。用于存储认证信息。 + +【示例】注册认证信息 + +```java +SecurityContext context = SecurityContextHolder.createEmptyContext(); +Authentication authentication = + new TestingAuthenticationToken("username", "password", "ROLE_USER"); +context.setAuthentication(authentication); +SecurityContextHolder.setContext(context); +``` + +【示例】访问认证信息 + +### 认证基本流程 + +AbstractAuthenticationProcessingFilter 用作验证用户凭据的基本过滤器。 在对凭证进行身份验证之前,Spring Security 通常使用 AuthenticationEntryPoint 请求凭证。 + +![abstractauthenticationprocessingfilter](https://docs.spring.io/spring-security/site/docs/5.3.0.RELEASE/reference/html5/images/servlet/authentication/architecture/abstractauthenticationprocessingfilter.png) + +- (1)当用户提交其凭据时,`AbstractAuthenticationProcessingFilter` 从要验证的 `HttpServletRequest` 创建一个 `Authentication`。创建的身份验证类型取决于 `AbstractAuthenticationProcessingFilter` 的子类。例如,`UsernamePasswordAuthenticationFilter` 根据在 `HttpServletRequest` 中提交的用户名和密码来创建 `UsernamePasswordAuthenticationToken`。 +- (2)接下来,将身份验证传递到 `AuthenticationManager` 进行身份验证。 +- (3)如果身份验证失败,则认证失败 + - 清除 `SecurityContextHolder`。 + - 调用 `RememberMeServices.loginFail`。如果没有配置 remember me,则为空。 + - 调用 `AuthenticationFailureHandler`。 +- (4)如果身份验证成功,则认证成功。 + - 如果是新的登录,则通知 `SessionAuthenticationStrategy`。 + - 身份验证是在 `SecurityContextHolder` 上设置的。之后,`SecurityContextPersistenceFilter` 将 `SecurityContext` 保存到 `HttpSession` 中。 + - 调用 `RememberMeServices.loginSuccess`。如果没有配置 remember me,则为空。 + - `ApplicationEventPublisher` 发布一个 `InteractiveAuthenticationSuccessEvent`。 + +### 用户名/密码认证 + +读取用户名和密码的方式: + +- 表单 +- 基本认证 +- 数字认证 + +存储机制 + +- 内存 +- JDBC +- [UserDetailsService](https://docs.spring.io/spring-security/site/docs/5.3.0.RELEASE/reference/html5/#servlet-authentication-userdetailsservice) +- LDAP + +#### 表单认证 + +spring security 支持通过从 html 表单获取登录时提交的用户名、密码。 + +![loginurlauthenticationentrypoint](https://docs.spring.io/spring-security/site/docs/5.3.0.RELEASE/reference/html5/images/servlet/authentication/unpwd/loginurlauthenticationentrypoint.png) + +一旦,登录信息被提交,`UsernamePasswordAuthenticationFilter` 就会验证用户名和密码。 + +![usernamepasswordauthenticationfilter](https://docs.spring.io/spring-security/site/docs/5.3.0.RELEASE/reference/html5/images/servlet/authentication/unpwd/usernamepasswordauthenticationfilter.png) + +#### 基本认证 + +```java +protected void configure(HttpSecurity http) { + http + // ... + .httpBasic(withDefaults()); +} +``` + +#### 内存认证 + +`InMemoryUserDetailsManager` 实现了 [UserDetailsService](https://docs.spring.io/spring-security/site/docs/5.3.0.RELEASE/reference/html5/#servlet-authentication-userdetailsservice) ,提供了基本的用户名、密码认证,其认证数据存储在内存中。 + +```java +@Bean +public UserDetailsService users() { + // The builder will ensure the passwords are encoded before saving in memory + UserBuilder users = User.withDefaultPasswordEncoder(); + UserDetails user = users + .username("user") + .password("password") + .roles("USER") + .build(); + UserDetails user = users + .username("admin") + .password("password") + .roles("USER", "ADMIN") + .build(); + return new InMemoryUserDetailsManager(user, admin); +} +``` + +#### JDBC 认证 + +JdbcUserDetailsManager 实现了 [UserDetailsService](https://docs.spring.io/spring-security/site/docs/5.3.0.RELEASE/reference/html5/#servlet-authentication-userdetailsservice) ,提供了基本的用户名、密码认证,其认证数据存储在关系型数据库中,通过 JDBC 方式访问。 + +``` +@Bean +UserDetailsManager users(DataSource dataSource) { + UserDetails user = User.builder() + .username("user") + .password("{bcrypt}$2a$10$GRLdNijSQMUvl/au9ofL.eDwmoohzzS7.rmNSJZ.0FxO/BTk76klW") + .roles("USER") + .build(); + UserDetails admin = User.builder() + .username("admin") + .password("{bcrypt}$2a$10$GRLdNijSQMUvl/au9ofL.eDwmoohzzS7.rmNSJZ.0FxO/BTk76klW") + .roles("USER", "ADMIN") + .build(); + JdbcUserDetailsManager users = new JdbcUserDetailsManager(dataSource); + users.createUser() +} +``` + +基本的 scheam: + +```sql +create table users( + username varchar_ignorecase(50) not null primary key, + password varchar_ignorecase(50) not null, + enabled boolean not null +); + +create table authorities ( + username varchar_ignorecase(50) not null, + authority varchar_ignorecase(50) not null, + constraint fk_authorities_users foreign key(username) references users(username) +); +create unique index ix_auth_username on authorities (username,authority); +``` + +#### UserDetailsService + +`UserDetails` 由 `UserDetailsService` 返回。 `DaoAuthenticationProvider` 验证 `UserDetails`,然后返回身份验证,该身份验证的主体是已配置的 `UserDetailsService` 返回的 `UserDetails`。 + +`DaoAuthenticationProvider` 使用 `UserDetailsService` 检索用户名,密码和其他用于使用用户名和密码进行身份验证的属性。 Spring Security 提供 `UserDetailsService` 的内存中和 JDBC 实现。 + +您可以通过将自定义 `UserDetailsService` 公开为 bean 来定义自定义身份验证。 + +#### PasswordEncoder + +Spring Security 的 servlet 支持通过与 `PasswordEncoder` 集成来安全地存储密码。 可以通过公开一个 PasswordEncoder Bean 来定制 Spring Security 使用的 PasswordEncoder 实现。 + +![daoauthenticationprovider](https://docs.spring.io/spring-security/site/docs/5.3.0.RELEASE/reference/html5/images/servlet/authentication/unpwd/daoauthenticationprovider.png) + +### Remember-Me + +## Spring Boot 集成 + +`@EnableWebSecurity` 和 `@Configuration` 注解一起使用, 注解 `WebSecurityConfigurer` 类型的类。 + +或者利用`@EnableWebSecurity`注解继承 `WebSecurityConfigurerAdapter` 的类,这样就构成了 _Spring Security_ 的配置。 + +- configure(WebSecurity):通过重载该方法,可配置 Spring Security 的 Filter 链。 +- configure(HttpSecurity):通过重载该方法,可配置如何通过拦截器保护请求。 + +## 参考资料 + +- [Spring Security Architecture](https://spring.io/guides/topicals/spring-security-architecture) +- [Securing a Web Application](https://spring.io/guides/gs/securing-web/) diff --git a/docs/server/README.md b/docs/server/README.md new file mode 100644 index 00000000..fc13a0db --- /dev/null +++ b/docs/server/README.md @@ -0,0 +1,24 @@ +# Java 和服务器 + +## 📖 内容 + +- [Tomcat 应用指南](Tomcat应用指南.md) +- [Tomcat 连接器](Tomcat连接器.md) +- [Tomcat 容器](Tomcat容器.md) +- [Tomcat 优化](Tomcat优化.md) +- [Jetty](jetty.md) +- Tomcat 和 Jetty +- [Nginx](https://github.com/dunwu/nginx-tutorial) 📚 + +## 📚 资料 + +- [Tomcat 官网](http://tomcat.apache.org/) +- [Jetty 官网](http://www.eclipse.org/jetty/index.html) +- [Jetty Github](https://github.com/eclipse/jetty.project) +- [Nginx 官网](https://www.nginx.com/) +- [Nginx 的中文维基](http://tool.oschina.net/apidocs/apidoc?api=nginx-zh) +- [深入拆解 Tomcat & Jetty](https://time.geekbang.org/column/intro/100027701) + +## 🚪 传送 + +◾ 🏠 [JAVA-TUTORIAL 首页](https://github.com/dunwu/java-tutorial) ◾ 🎯 [我的博客](https://github.com/dunwu/blog) ◾ diff --git "a/docs/server/Tomcat\344\274\230\345\214\226.md" "b/docs/server/Tomcat\344\274\230\345\214\226.md" new file mode 100644 index 00000000..259ef5e4 --- /dev/null +++ "b/docs/server/Tomcat\344\274\230\345\214\226.md" @@ -0,0 +1,154 @@ +# Tomcat 优化 + + + +- [1. Tomcat 启动优化](#1-tomcat-启动优化) + - [1.1. 清理 Tomcat](#11-清理-tomcat) + - [1.2. 禁止 Tomcat TLD 扫描](#12-禁止-tomcat-tld-扫描) + - [1.3. 关闭 WebSocket 支持](#13-关闭-websocket-支持) + - [1.4. 关闭 JSP 支持](#14-关闭-jsp-支持) + - [1.5. 禁止扫描 Servlet 注解](#15-禁止扫描-servlet-注解) + - [1.6. 配置 Web-Fragment 扫描](#16-配置-web-fragment-扫描) + - [1.7. 随机数熵源优化](#17-随机数熵源优化) + - [1.8. 并行启动多个 Web 应用](#18-并行启动多个-web-应用) +- [2. 参考资料](#2-参考资料) + + + +## 1. Tomcat 启动优化 + +如果 Tomcat 启动比较慢,可以考虑一些优化点 + +### 1.1. 清理 Tomcat + +- **清理不必要的 Web 应用**:首先我们要做的是删除掉 webapps 文件夹下不需要的工程,一般是 host-manager、example、doc 等这些默认的工程,可能还有以前添加的但现在用不着的工程,最好把这些全都删除掉。 +- **清理 XML 配置文件**:Tomcat 在启动时会解析所有的 XML 配置文件,解析 XML 较为耗时,所以应该尽量保持配置文件的简洁。 +- **清理 JAR 文件**:JVM 的类加载器在加载类时,需要查找每一个 JAR 文件,去找到所需要的类。如果删除了不需要的 JAR 文件,查找的速度就会快一些。这里请注意:**Web 应用中的 lib 目录下不应该出现 Servlet API 或者 Tomcat 自身的 JAR**,这些 JAR 由 Tomcat 负责提供。 +- **清理其他文件**:及时清理日志,删除 logs 文件夹下不需要的日志文件。同样还有 work 文件夹下的 catalina 文件夹,它其实是 Tomcat 把 JSP 转换为 Class 文件的工作目录。有时候我们也许会遇到修改了代码,重启了 Tomcat,但是仍没效果,这时候便可以删除掉这个文件夹,Tomcat 下次启动的时候会重新生成。 + +### 1.2. 禁止 Tomcat TLD 扫描 + +Tomcat 为了支持 JSP,在应用启动的时候会扫描 JAR 包里面的 TLD 文件,加载里面定义的标签库。所以在 Tomcat 的启动日志里,你可能会碰到这种提示: + +> At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. + +Tomcat 的意思是,我扫描了你 Web 应用下的 JAR 包,发现 JAR 包里没有 TLD 文件。我建议配置一下 Tomcat 不要去扫描这些 JAR 包,这样可以提高 Tomcat 的启动速度,并节省 JSP 编译时间。 + +如何配置不去扫描这些 JAR 包呢,这里分两种情况: + +- 如果你的项目没有使用 JSP 作为 Web 页面模板,而是使用 Velocity 之类的模板引擎,你完全可以把 TLD 扫描禁止掉。方法是,找到 Tomcat 的`conf/`目录下的`context.xml`文件,在这个文件里 Context 标签下,加上**JarScanner**和**JarScanFilter**子标签,像下面这样。 + + ```xml + + + + + + ``` + +- 如果你的项目使用了 JSP 作为 Web 页面模块,意味着 TLD 扫描无法避免,但是我们可以通过配置来告诉 Tomcat,只扫描那些包含 TLD 文件的 JAR 包。方法是,找到 Tomcat 的`conf/`目录下的`catalina.properties`文件,在这个文件里的 jarsToSkip 配置项中,加上你的 JAR 包。 + + ``` + tomcat.util.scan.StandardJarScanFilter.jarsToSkip=xxx.jar + ``` + +### 1.3. 关闭 WebSocket 支持 + +Tomcat 会扫描 WebSocket 注解的 API 实现,比如 `@ServerEndpoint` 注解的类。如果不需要使用 WebSockets 就可以关闭它。具体方法是,找到 Tomcat 的 `conf/` 目录下的 `context.xml` 文件,给 `Context` 标签加一个 **`containerSciFilter`** 的属性: + +```xml + +... + +``` + +更进一步,如果你不需要 WebSockets 这个功能,你可以把 Tomcat `lib` 目录下的 `websocket-api.jar` 和 `tomcat-websocket.jar` 这两个 JAR 文件删除掉,进一步提高性能。 + +### 1.4. 关闭 JSP 支持 + +如果不需要使用 JSP,可以关闭 JSP 功能: + +```xml + +... + +``` + +如果要同时关闭 WebSocket 和 Jsp,可以这样配置: + +```xml + +... + +``` + +### 1.5. 禁止扫描 Servlet 注解 + +Servlet 3.0 引入了注解 Servlet,Tomcat 为了支持这个特性,会在 Web 应用启动时扫描你的类文件,因此如果你没有使用 Servlet 注解这个功能,可以告诉 Tomcat 不要去扫描 Servlet 注解。具体配置方法是,在你的 Web 应用的`web.xml`文件中,设置``元素的属性`metadata-complete="true"`,像下面这样。 + +```xml + + +``` + +`metadata-complete` 的意思是,`web.xml` 里配置的 Servlet 是完整的,不需要再去库类中找 Servlet 的定义。 + +### 1.6. 配置 Web-Fragment 扫描 + +Servlet 3.0 还引入了“Web 模块部署描述符片段”的 `web-fragment.xml`,这是一个部署描述文件,可以完成 `web.xml` 的配置功能。而这个 `web-fragment.xml` 文件必须存放在 JAR 文件的 `META-INF` 目录下,而 JAR 包通常放在 `WEB-INF/lib` 目录下,因此 Tomcat 需要对 JAR 文件进行扫描才能支持这个功能。 + +可以通过配置 `web.xml` 里面的 `` 元素直接指定了哪些 JAR 包需要扫描 `web fragment`,如果 `` 元素是空的, 则表示不需要扫描,像下面这样。 + +```xml + +... + +... + +``` + +### 1.7. 随机数熵源优化 + +Tomcat 7 以上的版本依赖 Java 的 SecureRandom 类来生成随机数,比如 Session ID。而 JVM 默认使用阻塞式熵源(`/dev/random`), 在某些情况下就会导致 Tomcat 启动变慢。当阻塞时间较长时, 你会看到这样一条警告日志: + +``` + org.apache.catalina.util.SessionIdGenerator createSecureRandom +INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [8152] milliseconds. +``` + +解决方案是通过设置,让 JVM 使用非阻塞式的熵源。 + +我们可以设置 JVM 的参数: + +``` +-Djava.security.egd=file:/dev/./urandom +``` + +或者是设置 `java.security` 文件,位于 `$JAVA_HOME/jre/lib/security` 目录之下: `securerandom.source=file:/dev/./urandom` + +这里请你注意,`/dev/./urandom` 中间有个 `./` 的原因是 Oracle JRE 中的 Bug,Java 8 里面的 SecureRandom 类已经修正这个 Bug。 阻塞式的熵源(`/dev/random`)安全性较高, 非阻塞式的熵源(`/dev/./urandom`)安全性会低一些,因为如果你对随机数的要求比较高, 可以考虑使用硬件方式生成熵源。 + +### 1.8. 并行启动多个 Web 应用 + +Tomcat 启动的时候,默认情况下 Web 应用都是一个一个启动的,等所有 Web 应用全部启动完成,Tomcat 才算启动完毕。如果在一个 Tomcat 下有多个 Web 应用,为了优化启动速度,你可以配置多个应用程序并行启动,可以通过修改 `server.xml` 中 Host 元素的 `startStopThreads` 属性来完成。`startStopThreads` 的值表示你想用多少个线程来启动你的 Web 应用,如果设成 0 表示你要并行启动 Web 应用,像下面这样的配置。 + +```xml + + ... + + ... + + ... + +``` + +需要注意的是,Engine 元素里也配置了这个参数,这意味着如果你的 Tomcat 配置了多个 Host(虚拟主机),Tomcat 会以并行的方式启动多个 Host。 + +## 2. 参考资料 + +- **官方** + - [Tomcat 官方网站](http://tomcat.apache.org/) + - [Tomcat Wiki](http://wiki.apache.org/tomcat/FrontPage) + - [Tomee 官方网站](http://tomee.apache.org/) +- **教程** + - [深入拆解 Tomcat & Jetty](https://time.geekbang.org/column/intro/100027701) diff --git "a/docs/server/Tomcat\345\256\271\345\231\250.md" "b/docs/server/Tomcat\345\256\271\345\231\250.md" new file mode 100644 index 00000000..f572bb6c --- /dev/null +++ "b/docs/server/Tomcat\345\256\271\345\231\250.md" @@ -0,0 +1,733 @@ +# Tomcat 容器 + + + +- [1. Tomcat 实现热部署和热加载](#1-tomcat-实现热部署和热加载) + - [1.1. ContainerBackgroundProcessor 实现](#11-containerbackgroundprocessor-实现) + - [1.2. backgroundProcess 方法](#12-backgroundprocess-方法) + - [1.3. Tomcat 热加载](#13-tomcat-热加载) + - [1.4. Tomcat 热部署](#14-tomcat-热部署) +- [2. Tomcat 的类加载机制](#2-tomcat-的类加载机制) + - [2.1. findClass 方法](#21-findclass-方法) + - [2.2. loadClass 方法](#22-loadclass-方法) + - [2.3. Tomcat 实现应用隔离](#23-tomcat-实现应用隔离) +- [3. Tomcat 实现 Servlet 规范](#3-tomcat-实现-servlet-规范) + - [3.1. Servlet 管理](#31-servlet-管理) + - [3.2. Filter 管理](#32-filter-管理) + - [3.3. Listener 管理](#33-listener-管理) +- [4. Tomcat 支持异步 Servlet](#4-tomcat-支持异步servlet) + - [4.1. 异步示例](#41-异步示例) + - [4.2. 异步 Servlet 原理](#42-异步-servlet-原理) +- [5. 参考资料](#5-参考资料) + + + +## 1. Tomcat 实现热部署和热加载 + +- 热加载的实现方式是 Web 容器启动一个后台线程,定期检测类文件的变化,如果有变化,就重新加载类,在这个过程中不会清空 Session ,一般用在开发环境。 +- 热部署原理类似,也是由后台线程定时检测 Web 应用的变化,但它会重新加载整个 Web 应用。这种方式会清空 Session,比热加载更加干净、彻底,一般用在生产环境。 + +Tomcat 通过开启后台线程,使得各个层次的容器组件都有机会完成一些周期性任务。Tomcat 是基于 ScheduledThreadPoolExecutor 实现周期性任务的: + +```java +bgFuture = exec.scheduleWithFixedDelay( + new ContainerBackgroundProcessor(),// 要执行的 Runnable + backgroundProcessorDelay, // 第一次执行延迟多久 + backgroundProcessorDelay, // 之后每次执行间隔多久 + TimeUnit.SECONDS); // 时间单位 +``` + +第一个参数就是要周期性执行的任务类 ContainerBackgroundProcessor,它是一个 Runnable,同时也是 ContainerBase 的内部类,ContainerBase 是所有容器组件的基类,我们来回忆一下容器组件有哪些,有 Engine、Host、Context 和 Wrapper 等,它们具有父子关系。 + +### 1.1. ContainerBackgroundProcessor 实现 + +我们接来看 ContainerBackgroundProcessor 具体是如何实现的。 + +```java +protected class ContainerBackgroundProcessor implements Runnable { + + @Override + public void run() { + // 请注意这里传入的参数是 " 宿主类 " 的实例 + processChildren(ContainerBase.this); + } + + protected void processChildren(Container container) { + try { + //1. 调用当前容器的 backgroundProcess 方法。 + container.backgroundProcess(); + + //2. 遍历所有的子容器,递归调用 processChildren, + // 这样当前容器的子孙都会被处理 + Container[] children = container.findChildren(); + for (int i = 0; i < children.length; i++) { + // 这里请你注意,容器基类有个变量叫做 backgroundProcessorDelay,如果大于 0,表明子容器有自己的后台线程,无需父容器来调用它的 processChildren 方法。 + if (children[i].getBackgroundProcessorDelay() <= 0) { + processChildren(children[i]); + } + } + } catch (Throwable t) { ... } +``` + +上面的代码逻辑也是比较清晰的,首先 ContainerBackgroundProcessor 是一个 Runnable,它需要实现 run 方法,它的 run 很简单,就是调用了 processChildren 方法。这里有个小技巧,它把“宿主类”,也就是**ContainerBase 的类实例当成参数传给了 run 方法**。 + +而在 processChildren 方法里,就做了两步:调用当前容器的 backgroundProcess 方法,以及递归调用子孙的 backgroundProcess 方法。请你注意 backgroundProcess 是 Container 接口中的方法,也就是说所有类型的容器都可以实现这个方法,在这个方法里完成需要周期性执行的任务。 + +这样的设计意味着什么呢?我们只需要在顶层容器,也就是 Engine 容器中启动一个后台线程,那么这个线程**不但会执行 Engine 容器的周期性任务,它还会执行所有子容器的周期性任务**。 + +### 1.2. backgroundProcess 方法 + +上述代码都是在基类 ContainerBase 中实现的,那具体容器类需要做什么呢?其实很简单,如果有周期性任务要执行,就实现 backgroundProcess 方法;如果没有,就重用基类 ContainerBase 的方法。ContainerBase 的 backgroundProcess 方法实现如下: + +```java +public void backgroundProcess() { + + //1. 执行容器中 Cluster 组件的周期性任务 + Cluster cluster = getClusterInternal(); + if (cluster != null) { + cluster.backgroundProcess(); + } + + //2. 执行容器中 Realm 组件的周期性任务 + Realm realm = getRealmInternal(); + if (realm != null) { + realm.backgroundProcess(); + } + + //3. 执行容器中 Valve 组件的周期性任务 + Valve current = pipeline.getFirst(); + while (current != null) { + current.backgroundProcess(); + current = current.getNext(); + } + + //4. 触发容器的 " 周期事件 ",Host 容器的监听器 HostConfig 就靠它来调用 + fireLifecycleEvent(Lifecycle.PERIODIC_EVENT, null); +} +``` + +从上面的代码可以看到,不仅每个容器可以有周期性任务,每个容器中的其他通用组件,比如跟集群管理有关的 Cluster 组件、跟安全管理有关的 Realm 组件都可以有自己的周期性任务。 + +我在前面的专栏里提到过,容器之间的链式调用是通过 Pipeline-Valve 机制来实现的,从上面的代码你可以看到容器中的 Valve 也可以有周期性任务,并且被 ContainerBase 统一处理。 + +请你特别注意的是,在 backgroundProcess 方法的最后,还触发了容器的“周期事件”。我们知道容器的生命周期事件有初始化、启动和停止等,那“周期事件”又是什么呢?它跟生命周期事件一样,是一种扩展机制,你可以这样理解: + +又一段时间过去了,容器还活着,你想做点什么吗?如果你想做点什么,就创建一个监听器来监听这个“周期事件”,事件到了我负责调用你的方法。 + +总之,有了 ContainerBase 中的后台线程和 backgroundProcess 方法,各种子容器和通用组件不需要各自弄一个后台线程来处理周期性任务,这样的设计显得优雅和整洁。 + +### 1.3. Tomcat 热加载 + +有了 ContainerBase 的周期性任务处理“框架”,作为具体容器子类,只需要实现自己的周期性任务就行。而 Tomcat 的热加载,就是在 Context 容器中实现的。Context 容器的 backgroundProcess 方法是这样实现的: + +```java +public void backgroundProcess() { + + //WebappLoader 周期性的检查 WEB-INF/classes 和 WEB-INF/lib 目录下的类文件 + Loader loader = getLoader(); + if (loader != null) { + loader.backgroundProcess(); + } + + //Session 管理器周期性的检查是否有过期的 Session + Manager manager = getManager(); + if (manager != null) { + manager.backgroundProcess(); + } + + // 周期性的检查静态资源是否有变化 + WebResourceRoot resources = getResources(); + if (resources != null) { + resources.backgroundProcess(); + } + + // 调用父类 ContainerBase 的 backgroundProcess 方法 + super.backgroundProcess(); +} +``` + +从上面的代码我们看到 Context 容器通过 WebappLoader 来检查类文件是否有更新,通过 Session 管理器来检查是否有 Session 过期,并且通过资源管理器来检查静态资源是否有更新,最后还调用了父类 ContainerBase 的 backgroundProcess 方法。 + +这里我们要重点关注,WebappLoader 是如何实现热加载的,它主要是调用了 Context 容器的 reload 方法,而 Context 的 reload 方法比较复杂,总结起来,主要完成了下面这些任务: + +1. 停止和销毁 Context 容器及其所有子容器,子容器其实就是 Wrapper,也就是说 Wrapper 里面 Servlet 实例也被销毁了。 +2. 停止和销毁 Context 容器关联的 Listener 和 Filter。 +3. 停止和销毁 Context 下的 Pipeline 和各种 Valve。 +4. 停止和销毁 Context 的类加载器,以及类加载器加载的类文件资源。 +5. 启动 Context 容器,在这个过程中会重新创建前面四步被销毁的资源。 + +在这个过程中,类加载器发挥着关键作用。一个 Context 容器对应一个类加载器,类加载器在销毁的过程中会把它加载的所有类也全部销毁。Context 容器在启动过程中,会创建一个新的类加载器来加载新的类文件。 + +在 Context 的 reload 方法里,并没有调用 Session 管理器的 distroy 方法,也就是说这个 Context 关联的 Session 是没有销毁的。你还需要注意的是,Tomcat 的热加载默认是关闭的,你需要在 conf 目录下的 Context.xml 文件中设置 reloadable 参数来开启这个功能,像下面这样: + +``` + +``` + +### 1.4. Tomcat 热部署 + +我们再来看看热部署,热部署跟热加载的本质区别是,热部署会重新部署 Web 应用,原来的 Context 对象会整个被销毁掉,因此这个 Context 所关联的一切资源都会被销毁,包括 Session。 + +那么 Tomcat 热部署又是由哪个容器来实现的呢?应该不是由 Context,因为热部署过程中 Context 容器被销毁了,那么这个重担就落在 Host 身上了,因为它是 Context 的父容器。 + +跟 Context 不一样,Host 容器并没有在 backgroundProcess 方法中实现周期性检测的任务,而是通过监听器 HostConfig 来实现的,HostConfig 就是前面提到的“周期事件”的监听器,那“周期事件”达到时,HostConfig 会做什么事呢? + +```java +public void lifecycleEvent(LifecycleEvent event) { + // 执行 check 方法。 + if (event.getType().equals(Lifecycle.PERIODIC_EVENT)) { + check(); + } +} +``` + +它执行了 check 方法,我们接着来看 check 方法里做了什么。 + +```java +protected void check() { + + if (host.getAutoDeploy()) { + // 检查这个 Host 下所有已经部署的 Web 应用 + DeployedApplication[] apps = + deployed.values().toArray(new DeployedApplication[0]); + + for (int i = 0; i < apps.length; i++) { + // 检查 Web 应用目录是否有变化 + checkResources(apps[i], false); + } + + // 执行部署 + deployApps(); + } +} +``` + +其实 HostConfig 会检查 webapps 目录下的所有 Web 应用: + +- 如果原来 Web 应用目录被删掉了,就把相应 Context 容器整个销毁掉。 +- 是否有新的 Web 应用目录放进来了,或者有新的 WAR 包放进来了,就部署相应的 Web 应用。 + +因此 HostConfig 做的事情都是比较“宏观”的,它不会去检查具体类文件或者资源文件是否有变化,而是检查 Web 应用目录级别的变化。 + +## 2. Tomcat 的类加载机制 + +Tomcat 的自定义类加载器 `WebAppClassLoader` 打破了双亲委派机制,它**首先自己尝试去加载某个类,如果找不到再代理给父类加载器**,其目的是优先加载 Web 应用自己定义的类。具体实现就是重写 ClassLoader 的两个方法:findClass 和 loadClass。 + +### 2.1. findClass 方法 + +我们先来看看 findClass 方法的实现,为了方便理解和阅读,我去掉了一些细节: + +```java +public Class findClass(String name) throws ClassNotFoundException { + ... + + Class clazz = null; + try { + //1. 先在 Web 应用目录下查找类 + clazz = findClassInternal(name); + } catch (RuntimeException e) { + throw e; + } + + if (clazz == null) { + try { + //2. 如果在本地目录没有找到,交给父加载器去查找 + clazz = super.findClass(name); + } catch (RuntimeException e) { + throw e; + } + + //3. 如果父类也没找到,抛出 ClassNotFoundException + if (clazz == null) { + throw new ClassNotFoundException(name); + } + + return clazz; +} +``` + +在 findClass 方法里,主要有三个步骤: + +1. 先在 Web 应用本地目录下查找要加载的类。 +2. 如果没有找到,交给父加载器去查找,它的父加载器就是上面提到的系统类加载器 AppClassLoader。 +3. 如何父加载器也没找到这个类,抛出 ClassNotFound 异常。 + +### 2.2. loadClass 方法 + +接着我们再来看 Tomcat 类加载器的 loadClass 方法的实现,同样我也去掉了一些细节: + +```java +public Class loadClass(String name, boolean resolve) throws ClassNotFoundException { + + synchronized (getClassLoadingLock(name)) { + + Class clazz = null; + + //1. 先在本地 cache 查找该类是否已经加载过 + clazz = findLoadedClass0(name); + if (clazz != null) { + if (resolve) + resolveClass(clazz); + return clazz; + } + + //2. 从系统类加载器的 cache 中查找是否加载过 + clazz = findLoadedClass(name); + if (clazz != null) { + if (resolve) + resolveClass(clazz); + return clazz; + } + + // 3. 尝试用 ExtClassLoader 类加载器类加载,为什么? + ClassLoader javaseLoader = getJavaseClassLoader(); + try { + clazz = javaseLoader.loadClass(name); + if (clazz != null) { + if (resolve) + resolveClass(clazz); + return clazz; + } + } catch (ClassNotFoundException e) { + // Ignore + } + + // 4. 尝试在本地目录搜索 class 并加载 + try { + clazz = findClass(name); + if (clazz != null) { + if (resolve) + resolveClass(clazz); + return clazz; + } + } catch (ClassNotFoundException e) { + // Ignore + } + + // 5. 尝试用系统类加载器 (也就是 AppClassLoader) 来加载 + try { + clazz = Class.forName(name, false, parent); + if (clazz != null) { + if (resolve) + resolveClass(clazz); + return clazz; + } + } catch (ClassNotFoundException e) { + // Ignore + } + } + + //6. 上述过程都加载失败,抛出异常 + throw new ClassNotFoundException(name); +} +``` + +loadClass 方法稍微复杂一点,主要有六个步骤: + +1. 先在本地 Cache 查找该类是否已经加载过,也就是说 Tomcat 的类加载器是否已经加载过这个类。 +2. 如果 Tomcat 类加载器没有加载过这个类,再看看系统类加载器是否加载过。 +3. 如果都没有,就让**ExtClassLoader**去加载,这一步比较关键,目的**防止 Web 应用自己的类覆盖 JRE 的核心类**。因为 Tomcat 需要打破双亲委派机制,假如 Web 应用里自定义了一个叫 Object 的类,如果先加载这个 Object 类,就会覆盖 JRE 里面的那个 Object 类,这就是为什么 Tomcat 的类加载器会优先尝试用 ExtClassLoader 去加载,因为 ExtClassLoader 会委托给 BootstrapClassLoader 去加载,BootstrapClassLoader 发现自己已经加载了 Object 类,直接返回给 Tomcat 的类加载器,这样 Tomcat 的类加载器就不会去加载 Web 应用下的 Object 类了,也就避免了覆盖 JRE 核心类的问题。 +4. 如果 ExtClassLoader 加载器加载失败,也就是说 JRE 核心类中没有这类,那么就在本地 Web 应用目录下查找并加载。 +5. 如果本地目录下没有这个类,说明不是 Web 应用自己定义的类,那么由系统类加载器去加载。这里请你注意,Web 应用是通过`Class.forName`调用交给系统类加载器的,因为`Class.forName`的默认加载器就是系统类加载器。 +6. 如果上述加载过程全部失败,抛出 ClassNotFound 异常。 + +从上面的过程我们可以看到,Tomcat 的类加载器打破了双亲委派机制,没有一上来就直接委托给父加载器,而是先在本地目录下加载,为了避免本地目录下的类覆盖 JRE 的核心类,先尝试用 JVM 扩展类加载器 ExtClassLoader 去加载。那为什么不先用系统类加载器 AppClassLoader 去加载?很显然,如果是这样的话,那就变成双亲委派机制了,这就是 Tomcat 类加载器的巧妙之处。 + +### 2.3. Tomcat 实现应用隔离 + +Tomcat 作为 Web 容器,需要解决以下问题: + +1. 如果在 Tomcat 中运行了两个 Web 应用程序,两个 Web 应用中有同名的 Servlet,但是功能不同,Tomcat 需要同时加载和管理这两个同名的 Servlet 类,保证它们不会冲突,因此 Web 应用之间的类需要隔离。 +2. 两个 Web 应用都依赖同一个第三方的 JAR 包,比如 Spring,那 Spring 的 JAR 包被加载到内存后,Tomcat 要保证这两个 Web 应用能够共享,也就是说 Spring 的 JAR 包只被加载一次,否则随着依赖的第三方 JAR 包增多,JVM 的内存会膨胀。 +3. 需要隔离 Tomcat 本身的类和 Web 应用的类。 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201130141536.png) + +#### WebAppClassLoader + +针对第一个问题: + +如果使用 JVM 默认 AppClassLoader 来加载 Web 应用,AppClassLoader 只能加载一个 Servlet 类,在加载第二个同名 Servlet 类时,AppClassLoader 会返回第一个 Servlet 类的 Class 实例,这是因为在 AppClassLoader 看来,同名的 Servlet 类只被加载一次。 + +Tomcat 的解决方案是自定义一个类加载器 WebAppClassLoader, 并且给每个 Web 应用创建一个类加载器实例。我们知道,Context 容器组件对应一个 Web 应用,因此,每个 Context 容器负责创建和维护一个 WebAppClassLoader 加载器实例。这背后的原理是,**不同的加载器实例加载的类被认为是不同的类**,即使它们的类名相同。这就相当于在 Java 虚拟机内部创建了一个个相互隔离的 Java 类空间,每一个 Web 应用都有自己的类空间,Web 应用之间通过各自的类加载器互相隔离。 + +#### SharedClassLoader + +针对第二个问题: + +本质需求是两个 Web 应用之间怎么共享库类,并且不能重复加载相同的类。我们知道,在双亲委派机制里,各个子加载器都可以通过父加载器去加载类,那么把需要共享的类放到父加载器的加载路径下不就行了吗,应用程序也正是通过这种方式共享 JRE 的核心类。因此 Tomcat 的设计者又加了一个类加载器 SharedClassLoader,作为 WebAppClassLoader 的父加载器,专门来加载 Web 应用之间共享的类。如果 WebAppClassLoader 自己没有加载到某个类,就会委托父加载器 SharedClassLoader 去加载这个类,SharedClassLoader 会在指定目录下加载共享类,之后返回给 WebAppClassLoader,这样共享的问题就解决了。 + +#### CatalinaClassloader + +如何隔离 Tomcat 本身的类和 Web 应用的类? + +要共享可以通过父子关系,要隔离那就需要兄弟关系了。兄弟关系就是指两个类加载器是平行的,它们可能拥有同一个父加载器,但是两个兄弟类加载器加载的类是隔离的。基于此 Tomcat 又设计一个类加载器 CatalinaClassloader,专门来加载 Tomcat 自身的类。这样设计有个问题,那 Tomcat 和各 Web 应用之间需要共享一些类时该怎么办呢? + +#### CommonClassLoader + +老办法,还是再增加一个 CommonClassLoader,作为 CatalinaClassloader 和 SharedClassLoader 的父加载器。CommonClassLoader 能加载的类都可以被 CatalinaClassLoader 和 SharedClassLoader 使用,而 CatalinaClassLoader 和 SharedClassLoader 能加载的类则与对方相互隔离。WebAppClassLoader 可以使用 SharedClassLoader 加载到的类,但各个 WebAppClassLoader 实例之间相互隔离。 + +## 3. Tomcat 实现 Servlet 规范 + +Servlet 容器最重要的任务就是创建 Servlet 的实例并且调用 Servlet。 + +一个 Web 应用里往往有多个 Servlet,而在 Tomcat 中一个 Web 应用对应一个 Context 容器,也就是说一个 Context 容器需要管理多个 Servlet 实例。但 Context 容器并不直接持有 Servlet 实例,而是通过子容器 Wrapper 来管理 Servlet,你可以把 Wrapper 容器看作是 Servlet 的包装。 + +为什么需要 Wrapper 呢?Context 容器直接维护一个 Servlet 数组不就行了吗?这是因为 Servlet 不仅仅是一个类实例,它还有相关的配置信息,比如它的 URL 映射、它的初始化参数,因此设计出了一个包装器,把 Servlet 本身和它相关的数据包起来,没错,这就是面向对象的思想。 + +除此以外,Servlet 规范中还有两个重要特性:Listener 和 Filter,Tomcat 也需要创建它们的实例,并在合适的时机去调用它们的方法。 + +### 3.1. Servlet 管理 + +Tomcat 是用 Wrapper 容器来管理 Servlet 的,那 Wrapper 容器具体长什么样子呢?我们先来看看它里面有哪些关键的成员变量: + +```java +protected volatile Servlet instance = null; +``` + +它拥有一个 Servlet 实例,并且 Wrapper 通过 loadServlet 方法来实例化 Servlet。为了方便你阅读,我简化了代码: + +```java +public synchronized Servlet loadServlet() throws ServletException { + Servlet servlet; + + //1. 创建一个 Servlet 实例 + servlet = (Servlet) instanceManager.newInstance(servletClass); + + //2. 调用了 Servlet 的 init 方法,这是 Servlet 规范要求的 + initServlet(servlet); + + return servlet; +} +``` + +其实 loadServlet 主要做了两件事:创建 Servlet 的实例,并且调用 Servlet 的 init 方法,因为这是 Servlet 规范要求的。 + +那接下来的问题是,什么时候会调到这个 loadServlet 方法呢?为了加快系统的启动速度,我们往往会采取资源延迟加载的策略,Tomcat 也不例外,默认情况下 Tomcat 在启动时不会加载你的 Servlet,除非你把 Servlet 的`loadOnStartup`参数设置为`true`。 + +这里还需要你注意的是,虽然 Tomcat 在启动时不会创建 Servlet 实例,但是会创建 Wrapper 容器,就好比尽管枪里面还没有子弹,先把枪造出来。那子弹什么时候造呢?是真正需要开枪的时候,也就是说有请求来访问某个 Servlet 时,这个 Servlet 的实例才会被创建。 + +那 Servlet 是被谁调用的呢?我们回忆一下专栏前面提到过 Tomcat 的 Pipeline-Valve 机制,每个容器组件都有自己的 Pipeline,每个 Pipeline 中有一个 Valve 链,并且每个容器组件有一个 BasicValve(基础阀)。Wrapper 作为一个容器组件,它也有自己的 Pipeline 和 BasicValve,Wrapper 的 BasicValve 叫 **StandardWrapperValve**。 + +你可以想到,当请求到来时,Context 容器的 BasicValve 会调用 Wrapper 容器中 Pipeline 中的第一个 Valve,然后会调用到 StandardWrapperValve。我们先来看看它的 invoke 方法是如何实现的,同样为了方便你阅读,我简化了代码: + +```java +public final void invoke(Request request, Response response) { + + //1. 实例化 Servlet + servlet = wrapper.allocate(); + + //2. 给当前请求创建一个 Filter 链 + ApplicationFilterChain filterChain = + ApplicationFilterFactory.createFilterChain(request, wrapper, servlet); + + //3. 调用这个 Filter 链,Filter 链中的最后一个 Filter 会调用 Servlet + filterChain.doFilter(request.getRequest(), response.getResponse()); + +} +``` + +StandardWrapperValve 的 invoke 方法比较复杂,去掉其他异常处理的一些细节,本质上就是三步: + +- 第一步,创建 Servlet 实例; +- 第二步,给当前请求创建一个 Filter 链; +- 第三步,调用这个 Filter 链。 + +你可能会问,为什么需要给每个请求创建一个 Filter 链?这是因为每个请求的请求路径都不一样,而 Filter 都有相应的路径映射,因此不是所有的 Filter 都需要来处理当前的请求,我们需要根据请求的路径来选择特定的一些 Filter 来处理。 + +第二个问题是,为什么没有看到调到 Servlet 的 service 方法?这是因为 Filter 链的 doFilter 方法会负责调用 Servlet,具体来说就是 Filter 链中的最后一个 Filter 会负责调用 Servlet。 + +接下来我们来看 Filter 的实现原理。 + +### 3.2. Filter 管理 + +我们知道,跟 Servlet 一样,Filter 也可以在`web.xml`文件里进行配置,不同的是,Filter 的作用域是整个 Web 应用,因此 Filter 的实例是在 Context 容器中进行管理的,Context 容器用 Map 集合来保存 Filter。 + +```java +private Map filterDefs = new HashMap<>(); +``` + +那上面提到的 Filter 链又是什么呢?Filter 链的存活期很短,它是跟每个请求对应的。一个新的请求来了,就动态创建一个 FIlter 链,请求处理完了,Filter 链也就被回收了。理解它的原理也非常关键,我们还是来看看源码: + +```java +public final class ApplicationFilterChain implements FilterChain { + + //Filter 链中有 Filter 数组,这个好理解 + private ApplicationFilterConfig[] filters = new ApplicationFilterConfig[0]; + + //Filter 链中的当前的调用位置 + private int pos = 0; + + // 总共有多少了 Filter + private int n = 0; + + // 每个 Filter 链对应一个 Servlet,也就是它要调用的 Servlet + private Servlet servlet = null; + + public void doFilter(ServletRequest req, ServletResponse res) { + internalDoFilter(request,response); + } + + private void internalDoFilter(ServletRequest req, + ServletResponse res){ + + // 每个 Filter 链在内部维护了一个 Filter 数组 + if (pos < n) { + ApplicationFilterConfig filterConfig = filters[pos++]; + Filter filter = filterConfig.getFilter(); + + filter.doFilter(request, response, this); + return; + } + + servlet.service(request, response); + +} +``` + +从 ApplicationFilterChain 的源码我们可以看到几个关键信息: + +- Filter 链中除了有 Filter 对象的数组,还有一个整数变量 pos,这个变量用来记录当前被调用的 Filter 在数组中的位置。 +- Filter 链中有个 Servlet 实例,这个好理解,因为上面提到了,每个 Filter 链最后都会调到一个 Servlet。 +- Filter 链本身也实现了 doFilter 方法,直接调用了一个内部方法 internalDoFilter。 +- internalDoFilter 方法的实现比较有意思,它做了一个判断,如果当前 Filter 的位置小于 Filter 数组的长度,也就是说 Filter 还没调完,就从 Filter 数组拿下一个 Filter,调用它的 doFilter 方法。否则,意味着所有 Filter 都调到了,就调用 Servlet 的 service 方法。 + +但问题是,方法体里没看到循环,谁在不停地调用 Filter 链的 doFIlter 方法呢?Filter 是怎么依次调到的呢? + +答案是**Filter 本身的 doFilter 方法会调用 Filter 链的 doFilter 方法**,我们还是来看看代码就明白了: + +```java +public void doFilter(ServletRequest request, ServletResponse response, + FilterChain chain){ + + ... + + // 调用 Filter 的方法 + chain.doFilter(request, response); + + } +``` + +注意 Filter 的 doFilter 方法有个关键参数 FilterChain,就是 Filter 链。并且每个 Filter 在实现 doFilter 时,必须要调用 Filter 链的 doFilter 方法,而 Filter 链中保存当前 FIlter 的位置,会调用下一个 FIlter 的 doFilter 方法,这样链式调用就完成了。 + +Filter 链跟 Tomcat 的 Pipeline-Valve 本质都是责任链模式,但是在具体实现上稍有不同,你可以细细体会一下。 + +### 3.3. Listener 管理 + +我们接着聊 Servlet 规范里 Listener。跟 Filter 一样,Listener 也是一种扩展机制,你可以监听容器内部发生的事件,主要有两类事件: + +- 第一类是生命状态的变化,比如 Context 容器启动和停止、Session 的创建和销毁。 +- 第二类是属性的变化,比如 Context 容器某个属性值变了、Session 的某个属性值变了以及新的请求来了等。 + +我们可以在`web.xml`配置或者通过注解的方式来添加监听器,在监听器里实现我们的业务逻辑。对于 Tomcat 来说,它需要读取配置文件,拿到监听器类的名字,实例化这些类,并且在合适的时机调用这些监听器的方法。 + +Tomcat 是通过 Context 容器来管理这些监听器的。Context 容器将两类事件分开来管理,分别用不同的集合来存放不同类型事件的监听器: + +```java +// 监听属性值变化的监听器 +private List applicationEventListenersList = new CopyOnWriteArrayList<>(); + +// 监听生命事件的监听器 +private Object applicationLifecycleListenersObjects[] = new Object[0]; +``` + +剩下的事情就是触发监听器了,比如在 Context 容器的启动方法里,就触发了所有的 ServletContextListener: + +```java +//1. 拿到所有的生命周期监听器 +Object instances[] = getApplicationLifecycleListeners(); + +for (int i = 0; i < instances.length; i++) { + //2. 判断 Listener 的类型是不是 ServletContextListener + if (!(instances[i] instanceof ServletContextListener)) + continue; + + //3. 触发 Listener 的方法 + ServletContextListener lr = (ServletContextListener) instances[i]; + lr.contextInitialized(event); +} +``` + +需要注意的是,这里的 ServletContextListener 接口是一种留给用户的扩展机制,用户可以实现这个接口来定义自己的监听器,监听 Context 容器的启停事件。Spring 就是这么做的。ServletContextListener 跟 Tomcat 自己的生命周期事件 LifecycleListener 是不同的。LifecycleListener 定义在生命周期管理组件中,由基类 LifeCycleBase 统一管理。 + +## 4. Tomcat 支持异步 Servlet + +### 4.1. 异步示例 + +```java +@WebServlet(urlPatterns = {"/async"}, asyncSupported = true) +public class AsyncServlet extends HttpServlet { + + //Web 应用线程池,用来处理异步 Servlet + ExecutorService executor = Executors.newSingleThreadExecutor(); + + public void service(HttpServletRequest req, HttpServletResponse resp) { + //1. 调用 startAsync 或者异步上下文 + final AsyncContext ctx = req.startAsync(); + + // 用线程池来执行耗时操作 + executor.execute(new Runnable() { + + @Override + public void run() { + + // 在这里做耗时的操作 + try { + ctx.getResponse().getWriter().println("Handling Async Servlet"); + } catch (IOException e) {} + + //3. 异步 Servlet 处理完了调用异步上下文的 complete 方法 + ctx.complete(); + } + + }); + } +} +``` + +有三个要点: + +1. 通过注解的方式来注册 Servlet,除了 @WebServlet 注解,还需要加上 asyncSupported=true 的属性,表明当前的 Servlet 是一个异步 Servlet。 +2. Web 应用程序需要调用 Request 对象的 startAsync 方法来拿到一个异步上下文 AsyncContext。这个上下文保存了请求和响应对象。 +3. Web 应用需要开启一个新线程来处理耗时的操作,处理完成后需要调用 AsyncContext 的 complete 方法。目的是告诉 Tomcat,请求已经处理完成。 + +这里请你注意,虽然异步 Servlet 允许用更长的时间来处理请求,但是也有超时限制的,默认是 30 秒,如果 30 秒内请求还没处理完,Tomcat 会触发超时机制,向浏览器返回超时错误,如果这个时候你的 Web 应用再调用`ctx.complete`方法,会得到一个 IllegalStateException 异常。 + +### 4.2. 异步 Servlet 原理 + +通过上面的例子,相信你对 Servlet 的异步实现有了基本的理解。要理解 Tomcat 在这个过程都做了什么事情,关键就是要弄清楚`req.startAsync`方法和`ctx.complete`方法都做了什么。 + +#### startAsync 方法 + +startAsync 方法其实就是创建了一个异步上下文 AsyncContext 对象,AsyncContext 对象的作用是保存请求的中间信息,比如 Request 和 Response 对象等上下文信息。你来思考一下为什么需要保存这些信息呢? + +这是因为 Tomcat 的工作线程在`Request.startAsync`调用之后,就直接结束回到线程池中了,线程本身不会保存任何信息。也就是说一个请求到服务端,执行到一半,你的 Web 应用正在处理,这个时候 Tomcat 的工作线程没了,这就需要有个缓存能够保存原始的 Request 和 Response 对象,而这个缓存就是 AsyncContext。 + +有了 AsyncContext,你的 Web 应用通过它拿到 request 和 response 对象,拿到 Request 对象后就可以读取请求信息,请求处理完了还需要通过 Response 对象将 HTTP 响应发送给浏览器。 + +除了创建 AsyncContext 对象,startAsync 还需要完成一个关键任务,那就是告诉 Tomcat 当前的 Servlet 处理方法返回时,不要把响应发到浏览器,因为这个时候,响应还没生成呢;并且不能把 Request 对象和 Response 对象销毁,因为后面 Web 应用还要用呢。 + +在 Tomcat 中,负责 flush 响应数据的是 CoyoteAdaptor,它还会销毁 Request 对象和 Response 对象,因此需要通过某种机制通知 CoyoteAdaptor,具体来说是通过下面这行代码: + +```java +this.request.getCoyoteRequest().action(ActionCode.ASYNC_START, this); +``` + +你可以把它理解为一个 Callback,在这个 action 方法里设置了 Request 对象的状态,设置它为一个异步 Servlet 请求。 + +我们知道连接器是调用 CoyoteAdapter 的 service 方法来处理请求的,而 CoyoteAdapter 会调用容器的 service 方法,当容器的 service 方法返回时,CoyoteAdapter 判断当前的请求是不是异步 Servlet 请求,如果是,就不会销毁 Request 和 Response 对象,也不会把响应信息发到浏览器。你可以通过下面的代码理解一下,这是 CoyoteAdapter 的 service 方法,我对它进行了简化: + +```java +public void service(org.apache.coyote.Request req, org.apache.coyote.Response res) { + + // 调用容器的 service 方法处理请求 + connector.getService().getContainer().getPipeline(). + getFirst().invoke(request, response); + + // 如果是异步 Servlet 请求,仅仅设置一个标志, + // 否则说明是同步 Servlet 请求,就将响应数据刷到浏览器 + if (request.isAsync()) { + async = true; + } else { + request.finishRequest(); + response.finishResponse(); + } + + // 如果不是异步 Servlet 请求,就销毁 Request 对象和 Response 对象 + if (!async) { + request.recycle(); + response.recycle(); + } +} +``` + +接下来,当 CoyoteAdaptor 的 service 方法返回到 ProtocolHandler 组件时,ProtocolHandler 判断返回值,如果当前请求是一个异步 Servlet 请求,它会把当前 Socket 的协议处理者 Processor 缓存起来,将 SocketWrapper 对象和相应的 Processor 存到一个 Map 数据结构里。 + +```java +private final Map connections = new ConcurrentHashMap<>(); +``` + +之所以要缓存是因为这个请求接下来还要接着处理,还是由原来的 Processor 来处理,通过 SocketWrapper 就能从 Map 里找到相应的 Processor。 + +#### complete 方法 + +接着我们再来看关键的`ctx.complete`方法,当请求处理完成时,Web 应用调用这个方法。那么这个方法做了些什么事情呢?最重要的就是把响应数据发送到浏览器。 + +这件事情不能由 Web 应用线程来做,也就是说`ctx.complete`方法不能直接把响应数据发送到浏览器,因为这件事情应该由 Tomcat 线程来做,但具体怎么做呢? + +我们知道,连接器中的 Endpoint 组件检测到有请求数据达到时,会创建一个 SocketProcessor 对象交给线程池去处理,因此 Endpoint 的通信处理和具体请求处理在两个线程里运行。 + +在异步 Servlet 的场景里,Web 应用通过调用`ctx.complete`方法时,也可以生成一个新的 SocketProcessor 任务类,交给线程池处理。对于异步 Servlet 请求来说,相应的 Socket 和协议处理组件 Processor 都被缓存起来了,并且这些对象都可以通过 Request 对象拿到。 + +讲到这里,你可能已经猜到`ctx.complete`是如何实现的了: + +```java +public void complete() { + // 检查状态合法性,我们先忽略这句 + check(); + + // 调用 Request 对象的 action 方法,其实就是通知连接器,这个异步请求处理完了 +request.getCoyoteRequest().action(ActionCode.ASYNC_COMPLETE, null); + +} +``` + +我们可以看到 complete 方法调用了 Request 对象的 action 方法。而在 action 方法里,则是调用了 Processor 的 processSocketEvent 方法,并且传入了操作码 OPEN_READ。 + +```java +case ASYNC_COMPLETE: { + clearDispatches(); + if (asyncStateMachine.asyncComplete()) { + processSocketEvent(SocketEvent.OPEN_READ, true); + } + break; +} +``` + +我们接着看 processSocketEvent 方法,它调用 SocketWrapper 的 processSocket 方法: + +```java +protected void processSocketEvent(SocketEvent event, boolean dispatch) { + SocketWrapperBase socketWrapper = getSocketWrapper(); + if (socketWrapper != null) { + socketWrapper.processSocket(event, dispatch); + } +} +``` + +而 SocketWrapper 的 processSocket 方法会创建 SocketProcessor 任务类,并通过 Tomcat 线程池来处理: + +```java +public boolean processSocket(SocketWrapperBase socketWrapper, + SocketEvent event, boolean dispatch) { + + if (socketWrapper == null) { + return false; + } + + SocketProcessorBase sc = processorCache.pop(); + if (sc == null) { + sc = createSocketProcessor(socketWrapper, event); + } else { + sc.reset(socketWrapper, event); + } + // 线程池运行 + Executor executor = getExecutor(); + if (dispatch && executor != null) { + executor.execute(sc); + } else { + sc.run(); + } +} +``` + +请你注意 createSocketProcessor 函数的第二个参数是 SocketEvent,这里我们传入的是 OPEN_READ。通过这个参数,我们就能控制 SocketProcessor 的行为,因为我们不需要再把请求发送到容器进行处理,只需要向浏览器端发送数据,并且重新在这个 Socket 上监听新的请求就行了。 + +## 5. 参考资料 + +- **官方** + - [Tomcat 官方网站](http://tomcat.apache.org/) + - [Tomcat Wiki](http://wiki.apache.org/tomcat/FrontPage) + - [Tomee 官方网站](http://tomee.apache.org/) +- **教程** + - [深入拆解 Tomcat & Jetty](https://time.geekbang.org/column/intro/100027701) diff --git "a/docs/server/Tomcat\345\272\224\347\224\250\346\214\207\345\215\227.md" "b/docs/server/Tomcat\345\272\224\347\224\250\346\214\207\345\215\227.md" new file mode 100644 index 00000000..be2edc47 --- /dev/null +++ "b/docs/server/Tomcat\345\272\224\347\224\250\346\214\207\345\215\227.md" @@ -0,0 +1,895 @@ +# Tomcat 应用指南 + +> 🎁 版本说明 +> +> 当前最新版本:Tomcat 8.5.24 +> +> 环境要求:JDK7+ + + + +- [1. Tomcat 简介](#1-tomcat-简介) + - [1.1. Tomcat 是什么](#11-tomcat-是什么) + - [1.2. Tomcat 重要目录](#12-tomcat-重要目录) + - [1.3. web 工程发布目录结构](#13-web-工程发布目录结构) + - [1.4. Tomcat 功能](#14-tomcat-功能) +- [2. Tomcat 入门](#2-tomcat-入门) + - [2.1. 安装](#21-安装) + - [2.2. 配置](#22-配置) + - [2.3. 启动](#23-启动) +- [3. Tomcat 架构](#3-tomcat-架构) + - [3.1. Service](#31-service) + - [3.2. 连接器](#32-连接器) + - [3.3. 容器](#33-容器) +- [4. Tomcat 生命周期](#4-tomcat-生命周期) + - [4.1. Tomcat 的启动过程](#41-tomcat-的启动过程) + - [4.2. Web 应用的部署方式](#42-web-应用的部署方式) + - [4.3. LifeCycle](#43-lifecycle) + - [4.4. Connector 流程](#44-connector-流程) + - [4.5. Comet](#45-comet) + - [4.6. 异步 Servlet](#46-异步-servlet) +- [5. 参考资料](#5-参考资料) + + + +## 1. Tomcat 简介 + +### 1.1. Tomcat 是什么 + +Tomcat 是由 Apache 开发的一个 Servlet 容器,实现了对 Servlet 和 JSP 的支持,并提供了作为 Web 服务器的一些特有功能,如 Tomcat 管理和控制平台、安全域管理和 Tomcat 阀等。 + +由于 Tomcat 本身也内含了一个 HTTP 服务器,它也可以被视作一个单独的 Web 服务器。但是,不能将 Tomcat 和 Apache HTTP 服务器混淆,Apache HTTP 服务器是一个用 C 语言实现的 HTTP Web 服务器;这两个 HTTP web server 不是捆绑在一起的。Tomcat 包含了一个配置管理工具,也可以通过编辑 XML 格式的配置文件来进行配置。 + +### 1.2. Tomcat 重要目录 + +- **/bin** - Tomcat 脚本存放目录(如启动、关闭脚本)。 `*.sh` 文件用于 Unix 系统; `*.bat` 文件用于 Windows 系统。 +- **/conf** - Tomcat 配置文件目录。 +- **/logs** - Tomcat 默认日志目录。 +- **/webapps** - webapp 运行的目录。 + +### 1.3. web 工程发布目录结构 + +一般 web 项目路径结构 + +``` +|-- webapp # 站点根目录 + |-- META-INF # META-INF 目录 + | `-- MANIFEST.MF # 配置清单文件 + |-- WEB-INF # WEB-INF 目录 + | |-- classes # class文件目录 + | | |-- *.class # 程序需要的 class 文件 + | | `-- *.xml # 程序需要的 xml 文件 + | |-- lib # 库文件夹 + | | `-- *.jar # 程序需要的 jar 包 + | `-- web.xml # Web应用程序的部署描述文件 + |-- # 自定义的目录 + |-- # 自定义的资源文件 +``` + +- `webapp`:工程发布文件夹。其实每个 war 包都可以视为 webapp 的压缩包。 + +- `META-INF`:META-INF 目录用于存放工程自身相关的一些信息,元文件信息,通常由开发工具,环境自动生成。 + +- `WEB-INF`:Java web 应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。 +- `/WEB-INF/classes`:存放程序所需要的所有 Java class 文件。 + +- `/WEB-INF/lib`:存放程序所需要的所有 jar 文件。 + +- `/WEB-INF/web.xml`:web 应用的部署配置文件。它是工程中最重要的配置文件,它描述了 servlet 和组成应用的其它组件,以及应用初始化参数、安全管理约束等。 + +### 1.4. Tomcat 功能 + +Tomcat 支持的 I/O 模型有: + +- NIO:非阻塞 I/O,采用 Java NIO 类库实现。 +- NIO2:异步 I/O,采用 JDK 7 最新的 NIO2 类库实现。 +- APR:采用 Apache 可移植运行库实现,是 C/C++ 编写的本地库。 + +Tomcat 支持的应用层协议有: + +- HTTP/1.1:这是大部分 Web 应用采用的访问协议。 +- AJP:用于和 Web 服务器集成(如 Apache)。 +- HTTP/2:HTTP 2.0 大幅度的提升了 Web 性能。 + +## 2. Tomcat 入门 + +### 2.1. 安装 + +**前提条件** + +Tomcat 8.5 要求 JDK 版本为 1.7 以上。 + +进入 [Tomcat 官方下载地址](https://tomcat.apache.org/download-80.cgi) 选择合适版本下载,并解压到本地。 + +**Windows** + +添加环境变量 `CATALINA_HOME` ,值为 Tomcat 的安装路径。 + +进入安装目录下的 bin 目录,运行 startup.bat 文件,启动 Tomcat + +**Linux / Unix** + +下面的示例以 8.5.24 版本为例,包含了下载、解压、启动操作。 + +```bash +# 下载解压到本地 +wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.24/bin/apache-tomcat-8.5.24.tar.gz +tar -zxf apache-tomcat-8.5.24.tar.gz +# 启动 Tomcat +./apache-tomcat-8.5.24/bin/startup.sh +``` + +启动后,访问 `http://localhost:8080` ,可以看到 Tomcat 安装成功的测试页面。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/java/javaweb/tools/tomcat/tomcat.png) + +### 2.2. 配置 + +本节将列举一些重要、常见的配置项。详细的 Tomcat8 配置可以参考 [Tomcat 8 配置官方参考文档](http://tomcat.apache.org/tomcat-8.5-doc/config/index.html) 。 + +#### 2.2.1. Server + +> Server 元素表示整个 Catalina servlet 容器。 +> +> 因此,它必须是 `conf/server.xml` 配置文件中的根元素。它的属性代表了整个 servlet 容器的特性。 + +**属性表** + +| 属性 | 描述 | 备注 | +| --------- | ------------------------------------------------------------------------ | -------------------------------------------- | +| className | 这个类必须实现 org.apache.catalina.Server 接口。 | 默认 org.apache.catalina.core.StandardServer | +| address | 服务器等待关机命令的 TCP / IP 地址。如果没有指定地址,则使用 localhost。 | | +| port | 服务器等待关机命令的 TCP / IP 端口号。设置为-1 以禁用关闭端口。 | | +| shutdown | 必须通过 TCP / IP 连接接收到指定端口号的命令字符串,以关闭 Tomcat。 | | + +#### 2.2.2. Service + +> Service 元素表示一个或多个连接器组件的组合,这些组件共享一个用于处理传入请求的引擎组件。Server 中可以有多个 Service。 + +**属性表** + +| 属性 | 描述 | 备注 | +| --------- | ------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------- | +| className | 这个类必须实现`org.apache.catalina.Service`接口。 | 默认 `org.apache.catalina.core.StandardService` | +| name | 此服务的显示名称,如果您使用标准 Catalina 组件,将包含在日志消息中。与特定服务器关联的每个服务的名称必须是唯一的。 | | + +**实例 - `conf/server.xml` 配置文件示例** + +```xml + + + + ... + + +``` + +#### 2.2.3. Executor + +> Executor 表示可以在 Tomcat 中的组件之间共享的线程池。 + +**属性表** + +| 属性 | 描述 | 备注 | +| --------------- | ---------------------------------------------------------------- | ------------------------------------------------------ | +| className | 这个类必须实现`org.apache.catalina.Executor`接口。 | 默认 `org.apache.catalina.core.StandardThreadExecutor` | +| name | 线程池名称。 | 要求唯一, 供 Connector 元素的 executor 属性使用 | +| namePrefix | 线程名称前缀。 | | +| maxThreads | 最大活跃线程数。 | 默认 200 | +| minSpareThreads | 最小活跃线程数。 | 默认 25 | +| maxIdleTime | 当前活跃线程大于 minSpareThreads 时,空闲线程关闭的等待最大时间。 | 默认 60000ms | +| maxQueueSize | 线程池满情况下的请求排队大小。 | 默认 Integer.MAX_VALUE | + +```xml + + + +``` + +#### 2.2.4. Connector + +> Connector 代表连接组件。Tomcat 支持三种协议:HTTP/1.1、HTTP/2.0、AJP。 + +**属性表** + +| 属性 | 说明 | 备注 | +| --------------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | +| asyncTimeout | Servlet3.0 规范中的异步请求超时 | 默认 30s | +| port | 请求连接的 TCP Port | 设置为 0,则会随机选取一个未占用的端口号 | +| protocol | 协议. 一般情况下设置为 HTTP/1.1,这种情况下连接模型会在 NIO 和 APR/native 中自动根据配置选择 | | +| URIEncoding | 对 URI 的编码方式. | 如果设置系统变量 org.apache.catalina.STRICT_SERVLET_COMPLIANCE 为 true,使用 ISO-8859-1 编码;如果未设置此系统变量且未设置此属性, 使用 UTF-8 编码 | +| useBodyEncodingForURI | 是否采用指定的 contentType 而不是 URIEncoding 来编码 URI 中的请求参数 | | + +以下属性在标准的 Connector(NIO, NIO2 和 APR/native)中有效: + +| 属性 | 说明 | 备注 | +| ----------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| acceptCount | 当最大请求连接 maxConnections 满时的最大排队大小 | 默认 100,注意此属性和 Executor 中属性 maxQueueSize 的区别.这个指的是请求连接满时的堆栈大小,Executor 的 maxQueueSize 指的是处理线程满时的堆栈大小 | +| connectionTimeout | 请求连接超时 | 默认 60000ms | +| executor | 指定配置的线程池名称 | | +| keepAliveTimeout | keeAlive 超时时间 | 默认值为 connectionTimeout 配置值.-1 表示不超时 | +| maxConnections | 最大连接数 | 连接满时后续连接放入最大为 acceptCount 的队列中. 对 NIO 和 NIO2 连接,默认值为 10000;对 APR/native,默认值为 8192 | +| maxThreads | 如果指定了 Executor, 此属性忽略;否则为 Connector 创建的内部线程池最大值 | 默认 200 | +| minSpareThreads | 如果指定了 Executor, 此属性忽略;否则为 Connector 创建线程池的最小活跃线程数 | 默认 10 | +| processorCache | 协议处理器缓存 Processor 对象的大小 | -1 表示不限制.当不使用 servlet3.0 的异步处理情况下: 如果配置 Executor,配置为 Executor 的 maxThreads;否则配置为 Connnector 的 maxThreads. 如果使用 Serlvet3.0 异步处理, 取 maxThreads 和 maxConnections 的最大值 | + +#### 2.2.5. Context + +> Context 元素表示一个 Web 应用程序,它在特定的虚拟主机中运行。每个 Web 应用程序都基于 Web 应用程序存档(WAR)文件,或者包含相应的解包内容的相应目录,如 Servlet 规范中所述。 + +**属性表** + +| 属性 | 说明 | 备注 | +| -------------------------- | --------------------------------------------------------------------------- | ---------------------------------------------------- | +| altDDName | web.xml 部署描述符路径 | 默认 /WEB-INF/web.xml | +| docBase | Context 的 Root 路径 | 和 Host 的 appBase 相结合, 可确定 web 应用的实际目录 | +| failCtxIfServletStartFails | 同 Host 中的 failCtxIfServletStartFails, 只对当前 Context 有效 | 默认为 false | +| logEffectiveWebXml | 是否日志打印 web.xml 内容(web.xml 由默认的 web.xml 和应用中的 web.xml 组成) | 默认为 false | +| path | web 应用的 context path | 如果为根路径,则配置为空字符串(""), 不能不配置 | +| privileged | 是否使用 Tomcat 提供的 manager servlet | | +| reloadable | /WEB-INF/classes/ 和/WEB-INF/lib/ 目录中 class 文件发生变化是否自动重新加载 | 默认为 false | +| swallowOutput | true 情况下, System.out 和 System.err 输出将被定向到 web 应用日志中 | 默认为 false | + +#### 2.2.6. Engine + +> Engine 元素表示与特定的 Catalina 服务相关联的整个请求处理机器。它接收并处理来自一个或多个连接器的所有请求,并将完成的响应返回给连接器,以便最终传输回客户端。 + +**属性表** + +| 属性 | 描述 | 备注 | +| ----------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------ | +| defaultHost | 默认主机名,用于标识将处理指向此服务器上主机名称但未在此配置文件中配置的请求的主机。 | 这个名字必须匹配其中一个嵌套的主机元素的名字属性。 | +| name | 此引擎的逻辑名称,用于日志和错误消息。 | 在同一服务器中使用多个服务元素时,每个引擎必须分配一个唯一的名称。 | + +#### 2.2.7. Host + +> Host 元素表示一个虚拟主机,它是一个服务器的网络名称(如“www.mycompany.com”)与运行 Tomcat 的特定服务器的关联。 + +**属性表** + +| 属性 | 说明 | 备注 | +| -------------------------- | -------------------------------------------------------------------------------------------- | --------------------------------------------- | +| name | 名称 | 用于日志输出 | +| appBase | 虚拟主机对应的应用基础路径 | 可以是个绝对路径, 或\${CATALINA_BASE}相对路径 | +| xmlBase | 虚拟主机 XML 基础路径,里面应该有 Context xml 配置文件 | 可以是个绝对路径, 或\${CATALINA_BASE}相对路径 | +| createDirs | 当 appBase 和 xmlBase 不存在时,是否创建目录 | 默认为 true | +| autoDeploy | 是否周期性的检查 appBase 和 xmlBase 并 deploy web 应用和 context 描述符 | 默认为 true | +| deployIgnore | 忽略 deploy 的正则 | | +| deployOnStartup | Tomcat 启动时是否自动 deploy | 默认为 true | +| failCtxIfServletStartFails | 配置为 true 情况下,任何 load-on-startup >=0 的 servlet 启动失败,则其对应的 Contxt 也启动失败 | 默认为 false | + +#### 2.2.8. Cluster + +由于在实际开发中,我从未用过 Tomcat 集群配置,所以没研究。 + +### 2.3. 启动 + +#### 2.3.1. 部署方式 + +这种方式要求本地必须安装 Tomcat 。 + +将打包好的 war 包放在 Tomcat 安装目录下的 `webapps` 目录下,然后在 bin 目录下执行 `startup.bat` 或 `startup.sh` ,Tomcat 会自动解压 `webapps` 目录下的 war 包。 + +成功后,可以访问 `http://localhost:8080/xxx` (xxx 是 war 包文件名)。 + +> **注意** +> +> 以上步骤是最简单的示例。步骤中的 war 包解压路径、启动端口以及一些更多的功能都可以修改配置文件来定制 (主要是 `server.xml` 或 `context.xml` 文件)。 + +#### 2.3.2. 嵌入式 + +##### 2.3.2.1. API 方式 + +在 pom.xml 中添加依赖 + +```xml + + org.apache.tomcat.embed + tomcat-embed-core + 8.5.24 + +``` + +添加 SimpleEmbedTomcatServer.java 文件,内容如下: + +```java +import java.util.Optional; +import org.apache.catalina.startup.Tomcat; + +public class SimpleTomcatServer { + private static final int PORT = 8080; + private static final String CONTEXT_PATH = "/javatool-server"; + + public static void main(String[] args) throws Exception { + // 设定 profile + Optional profile = Optional.ofNullable(System.getProperty("spring.profiles.active")); + System.setProperty("spring.profiles.active", profile.orElse("develop")); + + Tomcat tomcat = new Tomcat(); + tomcat.setPort(PORT); + tomcat.getHost().setAppBase("."); + tomcat.addWebapp(CONTEXT_PATH, getAbsolutePath() + "src/main/webapp"); + tomcat.start(); + tomcat.getServer().await(); + } + + private static String getAbsolutePath() { + String path = null; + String folderPath = SimpleEmbedTomcatServer.class.getProtectionDomain().getCodeSource().getLocation().getPath() + .substring(1); + if (folderPath.indexOf("target") > 0) { + path = folderPath.substring(0, folderPath.indexOf("target")); + } + return path; + } +} +``` + +成功后,可以访问 `http://localhost:8080/javatool-server` 。 + +> **说明** +> +> 本示例是使用 `org.apache.tomcat.embed` 启动嵌入式 Tomcat 的最简示例。 +> +> 这个示例中使用的是 Tomcat 默认的配置,但通常,我们需要对 Tomcat 配置进行一些定制和调优。为了加载配置文件,启动类就要稍微再复杂一些。这里不想再贴代码,有兴趣的同学可以参考: +> +> [**示例项目**](https://github.com/dunwu/JavaStack/tree/master/codes/javatool/server) + +##### 2.3.2.2. 使用 maven 插件启动(不推荐) + +不推荐理由:这种方式启动 maven 虽然最简单,但是有一个很大的问题是,真的很久很久没发布新版本了(最新版本发布时间:2013-11-11)。且貌似只能找到 Tomcat6 、Tomcat7 插件。 + +**使用方法** + +在 pom.xml 中引入插件 + +```xml + + org.apache.tomcat.maven + tomcat7-maven-plugin + 2.2 + + 8080 + /${project.artifactId} + UTF-8 + + +``` + +运行 `mvn tomcat7:run` 命令,启动 Tomcat。 + +成功后,可以访问 `http://localhost:8080/xxx` (xxx 是 \${project.artifactId} 指定的项目名)。 + +#### 2.3.3. IDE 插件 + +常见 Java IDE 一般都有对 Tomcat 的支持。 + +以 Intellij IDEA 为例,提供了 **Tomcat and TomEE Integration** 插件(一般默认会安装)。 + +**使用步骤** + +- 点击 Run/Debug Configurations > New Tomcat Server > local ,打开 Tomcat 配置页面。 +- 点击 Confiure... 按钮,设置 Tomcat 安装路径。 +- 点击 Deployment 标签页,设置要启动的应用。 +- 设置启动应用的端口、JVM 参数、启动浏览器等。 +- 成功后,可以访问 `http://localhost:8080/`(当然,你也可以在 url 中设置上下文名称)。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/java/javaweb/tools/tomcat/tomcat-intellij-run-config.png) + +> **说明** +> +> 个人认为这个插件不如 Eclipse 的 Tomcat 插件好用,Eclipse 的 Tomcat 插件支持对 Tomcat xml 配置文件进行配置。而这里,你只能自己去 Tomcat 安装路径下修改配置文件。 + +文中的嵌入式启动示例可以参考[**我的示例项目**](https://github.com/dunwu/JavaStack/tree/master/codes/javatool/server) + +## 3. Tomcat 架构 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201113193431.png) + +Tomcat 要实现 2 个核心功能: + +- **处理 Socket 连接**,负责网络字节流与 Request 和 Response 对象的转化。 +- **加载和管理 Servlet**,以及**处理具体的 Request 请求**。 + +为此,Tomcat 设计了两个核心组件: + +- **连接器(Connector)**:负责和外部通信 +- **容器(Container)**:负责内部处理 + +### 3.1. Service + +Tomcat 支持的 I/O 模型有: + +- NIO:非阻塞 I/O,采用 Java NIO 类库实现。 +- NIO2:异步 I/O,采用 JDK 7 最新的 NIO2 类库实现。 +- APR:采用 Apache 可移植运行库实现,是 C/C++ 编写的本地库。 + +Tomcat 支持的应用层协议有: + +- HTTP/1.1:这是大部分 Web 应用采用的访问协议。 +- AJP:用于和 Web 服务器集成(如 Apache)。 +- HTTP/2:HTTP 2.0 大幅度的提升了 Web 性能。 + +Tomcat 支持多种 I/O 模型和应用层协议。为了实现这点,一个容器可能对接多个连接器。但是,单独的连接器或容器都不能对外提供服务,需要把它们组装起来才能工作,组装后这个整体叫作 Service 组件。Tomcat 内可能有多个 Service,通过在 Tomcat 中配置多个 Service,可以实现通过不同的端口号来访问同一台机器上部署的不同应用。 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201111093124.png) + +**一个 Tomcat 实例有一个或多个 Service;一个 Service 有多个 Connector 和 Container**。Connector 和 Container 之间通过标准的 ServletRequest 和 ServletResponse 通信。 + +### 3.2. 连接器 + +连接器对 Servlet 容器屏蔽了协议及 I/O 模型等的区别,无论是 HTTP 还是 AJP,在容器中获取到的都是一个标准的 ServletRequest 对象。 + +连接器的主要功能是: + +- 网络通信 +- 应用层协议解析 +- Tomcat Request/Response 与 ServletRequest/ServletResponse 的转化 + +Tomcat 设计了 3 个组件来实现这 3 个功能,分别是 **`EndPoint`**、**`Processor`** 和 **`Adapter`**。 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201111101440.png) + +组件间通过抽象接口交互。这样做还有一个好处是**封装变化。**这是面向对象设计的精髓,将系统中经常变化的部分和稳定的部分隔离,有助于增加复用性,并降低系统耦合度。网络通信的 I/O 模型是变化的,可能是非阻塞 I/O、异步 I/O 或者 APR。应用层协议也是变化的,可能是 HTTP、HTTPS、AJP。浏览器端发送的请求信息也是变化的。但是整体的处理逻辑是不变的,EndPoint 负责提供字节流给 Processor,Processor 负责提供 Tomcat Request 对象给 Adapter,Adapter 负责提供 ServletRequest 对象给容器。 + +如果要支持新的 I/O 方案、新的应用层协议,只需要实现相关的具体子类,上层通用的处理逻辑是不变的。由于 I/O 模型和应用层协议可以自由组合,比如 NIO + HTTP 或者 NIO2 + AJP。Tomcat 的设计者将网络通信和应用层协议解析放在一起考虑,设计了一个叫 ProtocolHandler 的接口来封装这两种变化点。各种协议和通信模型的组合有相应的具体实现类。比如:Http11NioProtocol 和 AjpNioProtocol。 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201027091819.png) + +#### ProtocolHandler 组件 + +**连接器用 ProtocolHandler 接口来封装通信协议和 I/O 模型的差异**。ProtocolHandler 内部又分为 EndPoint 和 Processor 模块,EndPoint 负责底层 Socket 通信,Proccesor 负责应用层协议解析。 + +##### EndPoint + +EndPoint 是通信端点,即通信监听的接口,是具体的 Socket 接收和发送处理器,是对传输层的抽象,因此 EndPoint 是用来实现 TCP/IP 协议的。 + +EndPoint 是一个接口,对应的抽象实现类是 AbstractEndpoint,而 AbstractEndpoint 的具体子类,比如在 NioEndpoint 和 Nio2Endpoint 中,有两个重要的子组件:Acceptor 和 SocketProcessor。 + +其中 Acceptor 用于监听 Socket 连接请求。SocketProcessor 用于处理接收到的 Socket 请求,它实现 Runnable 接口,在 Run 方法里调用协议处理组件 Processor 进行处理。为了提高处理能力,SocketProcessor 被提交到线程池来执行。而这个线程池叫作执行器(Executor)。 + +##### Processor + +如果说 EndPoint 是用来实现 TCP/IP 协议的,那么 Processor 用来实现 HTTP 协议,Processor 接收来自 EndPoint 的 Socket,读取字节流解析成 Tomcat Request 和 Response 对象,并通过 Adapter 将其提交到容器处理,Processor 是对应用层协议的抽象。 + +Processor 是一个接口,定义了请求的处理等方法。它的抽象实现类 AbstractProcessor 对一些协议共有的属性进行封装,没有对方法进行实现。具体的实现有 AJPProcessor、HTTP11Processor 等,这些具体实现类实现了特定协议的解析方法和请求处理方式。 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201113185929.png) + +从图中我们看到,EndPoint 接收到 Socket 连接后,生成一个 SocketProcessor 任务提交到线程池去处理,SocketProcessor 的 Run 方法会调用 Processor 组件去解析应用层协议,Processor 通过解析生成 Request 对象后,会调用 Adapter 的 Service 方法。 + +#### Adapter + +**连接器通过适配器 Adapter 调用容器**。 + +由于协议不同,客户端发过来的请求信息也不尽相同,Tomcat 定义了自己的 Request 类来适配这些请求信息。 + +ProtocolHandler 接口负责解析请求并生成 Tomcat Request 类。但是这个 Request 对象不是标准的 ServletRequest,也就意味着,不能用 Tomcat Request 作为参数来调用容器。Tomcat 的解决方案是引入 CoyoteAdapter,这是适配器模式的经典运用,连接器调用 CoyoteAdapter 的 Sevice 方法,传入的是 Tomcat Request 对象,CoyoteAdapter 负责将 Tomcat Request 转成 ServletRequest,再调用容器的 Service 方法。 + +### 3.3. 容器 + +Tomcat 设计了 4 种容器,分别是 Engine、Host、Context 和 Wrapper。 + +- **Engine** - Servlet 的顶层容器,包含一 个或多个 Host 子容器; +- **Host** - 虚拟主机,负责 web 应用的部署和 Context 的创建; +- **Context** - Web 应用上下文,包含多个 Wrapper,负责 web 配置的解析、管理所有的 Web 资源; +- **Wrapper** - 最底层的容器,是对 Servlet 的封装,负责 Servlet 实例的创 建、执行和销毁。 + +#### 请求分发 Servlet 过程 + +Tomcat 是怎么确定请求是由哪个 Wrapper 容器里的 Servlet 来处理的呢?答案是,Tomcat 是用 Mapper 组件来完成这个任务的。 + +举例来说,假如有一个网购系统,有面向网站管理人员的后台管理系统,还有面向终端客户的在线购物系统。这两个系统跑在同一个 Tomcat 上,为了隔离它们的访问域名,配置了两个虚拟域名:`manage.shopping.com`和`user.shopping.com`,网站管理人员通过`manage.shopping.com`域名访问 Tomcat 去管理用户和商品,而用户管理和商品管理是两个单独的 Web 应用。终端客户通过`user.shopping.com`域名去搜索商品和下订单,搜索功能和订单管理也是两个独立的 Web 应用。如下所示,演示了 url 应声 Servlet 的处理流程。 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201113192022.jpg) + +假如有用户访问一个 URL,比如图中的`http://user.shopping.com:8080/order/buy`,Tomcat 如何将这个 URL 定位到一个 Servlet 呢? + +1. **首先,根据协议和端口号选定 Service 和 Engine。** +2. **然后,根据域名选定 Host。** +3. **之后,根据 URL 路径找到 Context 组件。** +4. **最后,根据 URL 路径找到 Wrapper(Servlet)。** + +这个路由分发过程具体是怎么实现的呢?答案是使用 Pipeline-Valve 管道。 + +#### Pipeline-Value + +Pipeline 可以理解为现实中的管道,Valve 为管道中的阀门,Request 和 Response 对象在管道中经过各个阀门的处理和控制。 + +Pipeline-Valve 是责任链模式,责任链模式是指在一个请求处理的过程中有很多处理者依次对请求进行处理,每个处理者负责做自己相应的处理,处理完之后将再调用下一个处理者继续处理。Valve 表示一个处理点,比如权限认证和记录日志。 + +先来了解一下 Valve 和 Pipeline 接口的设计: + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/java/javaweb/tools/tomcat/Pipeline与Valve.png) + +- 每一个容器都有一个 Pipeline 对象,只要触发这个 Pipeline 的第一个 Valve,这个容器里 Pipeline 中的 Valve 就都会被调用到。但是,不同容器的 Pipeline 是怎么链式触发的呢,比如 Engine 中 Pipeline 需要调用下层容器 Host 中的 Pipeline。 +- 这是因为 Pipeline 中还有个 getBasic 方法。这个 BasicValve 处于 Valve 链表的末端,它是 Pipeline 中必不可少的一个 Valve,负责调用下层容器的 Pipeline 里的第一个 Valve。 +- Pipeline 中有 addValve 方法。Pipeline 中维护了 Valve 链表,Valve 可以插入到 Pipeline 中,对请求做某些处理。我们还发现 Pipeline 中没有 invoke 方法,因为整个调用链的触发是 Valve 来完成的,Valve 完成自己的处理后,调用 `getNext.invoke()` 来触发下一个 Valve 调用。 +- Valve 中主要的三个方法:`setNext`、`getNext`、`invoke`。Valve 之间的关系是单向链式结构,本身 `invoke` 方法中会调用下一个 Valve 的 `invoke` 方法。 +- 各层容器对应的 basic valve 分别是 `StandardEngineValve`、`StandardHostValve`、 `StandardContextValve`、`StandardWrapperValve`。 +- 由于 Valve 是一个处理点,因此 invoke 方法就是来处理请求的。注意到 Valve 中有 getNext 和 setNext 方法,因此我们大概可以猜到有一个链表将 Valve 链起来了。 + +![](https://raw.githubusercontent.com/dunwu/images/dev/cs/java/javaweb/tools/tomcat/请求处理过程.png) + +整个调用过程由连接器中的 Adapter 触发的,它会调用 Engine 的第一个 Valve: + +```java +connector.getService().getContainer().getPipeline().getFirst().invoke(request, response); +``` + +## 4. Tomcat 生命周期 + +### 4.1. Tomcat 的启动过程 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201118145455.png) + +1. Tomcat 是一个 Java 程序,它的运行从执行 `startup.sh` 脚本开始。`startup.sh` 会启动一个 JVM 来运行 Tomcat 的启动类 `Bootstrap`。 +2. `Bootstrap` 会初始化 Tomcat 的类加载器并实例化 `Catalina`。 +3. `Catalina` 会通过 Digester 解析 `server.xml`,根据其中的配置信息来创建相应组件,并调用 `Server` 的 `start` 方法。 +4. `Server` 负责管理 `Service` 组件,它会调用 `Service` 的 `start` 方法。 +5. `Service` 负责管理 `Connector` 和顶层容器 `Engine`,它会调用 `Connector` 和 `Engine` 的 `start` 方法。 + +#### Catalina 组件 + +Catalina 的职责就是解析 server.xml 配置,并据此实例化 Server。接下来,调用 Server 组件的 init 方法和 start 方法,将 Tomcat 启动起来。 + +Catalina 还需要处理各种“异常”情况,比如当我们通过“Ctrl + C”关闭 Tomcat 时,Tomcat 将如何优雅的停止并且清理资源呢?因此 Catalina 在 JVM 中注册一个“关闭钩子”。 + +```java +public void start() { + //1. 如果持有的 Server 实例为空,就解析 server.xml 创建出来 + if (getServer() == null) { + load(); + } + + //2. 如果创建失败,报错退出 + if (getServer() == null) { + log.fatal(sm.getString("catalina.noServer")); + return; + } + + //3. 启动 Server + try { + getServer().start(); + } catch (LifecycleException e) { + return; + } + + // 创建并注册关闭钩子 + if (useShutdownHook) { + if (shutdownHook == null) { + shutdownHook = new CatalinaShutdownHook(); + } + Runtime.getRuntime().addShutdownHook(shutdownHook); + } + + // 用 await 方法监听停止请求 + if (await) { + await(); + stop(); + } +} +``` + +为什么需要关闭钩子? + +如果我们需要在 JVM 关闭时做一些清理工作,比如将缓存数据刷到磁盘上,或者清理一些临时文件,可以向 JVM 注册一个“关闭钩子”。“关闭钩子”其实就是一个线程,JVM 在停止之前会尝试执行这个线程的 `run` 方法。 + +Tomcat 的“关闭钩子”—— `CatalinaShutdownHook` 做了些什么呢? + +```java +protected class CatalinaShutdownHook extends Thread { + + @Override + public void run() { + try { + if (getServer() != null) { + Catalina.this.stop(); + } + } catch (Throwable ex) { + ... + } + } +} +``` + +Tomcat 的“关闭钩子”实际上就执行了 `Server` 的 `stop` 方法,`Server` 的 `stop` 方法会释放和清理所有的资源。 + +#### Server 组件 + +Server 组件的具体实现类是 StandardServer,Server 继承了 LifeCycleBase,它的生命周期被统一管理,并且它的子组件是 Service,因此它还需要管理 Service 的生命周期,也就是说在启动时调用 Service 组件的启动方法,在停止时调用它们的停止方法。Server 在内部维护了若干 Service 组件,它是以数组来保存的。 + +```java +@Override +public void addService(Service service) { + + service.setServer(this); + + synchronized (servicesLock) { + // 创建一个长度 +1 的新数组 + Service results[] = new Service[services.length + 1]; + + // 将老的数据复制过去 + System.arraycopy(services, 0, results, 0, services.length); + results[services.length] = service; + services = results; + + // 启动 Service 组件 + if (getState().isAvailable()) { + try { + service.start(); + } catch (LifecycleException e) { + // Ignore + } + } + + // 触发监听事件 + support.firePropertyChange("service", null, service); + } + +} +``` + +Server 并没有一开始就分配一个很长的数组,而是在添加的过程中动态地扩展数组长度,当添加一个新的 Service 实例时,会创建一个新数组并把原来数组内容复制到新数组,这样做的目的其实是为了节省内存空间。 + +除此之外,Server 组件还有一个重要的任务是启动一个 Socket 来监听停止端口,这就是为什么你能通过 shutdown 命令来关闭 Tomcat。不知道你留意到没有,上面 Caralina 的启动方法的最后一行代码就是调用了 Server 的 await 方法。 + +在 await 方法里会创建一个 Socket 监听 8005 端口,并在一个死循环里接收 Socket 上的连接请求,如果有新的连接到来就建立连接,然后从 Socket 中读取数据;如果读到的数据是停止命令“SHUTDOWN”,就退出循环,进入 stop 流程。 + +#### Service 组件 + +Service 组件的具体实现类是 StandardService。 + +【源码】StandardService 源码定义 + +```java +public class StandardService extends LifecycleBase implements Service { + // 名字 + private String name = null; + + //Server 实例 + private Server server = null; + + // 连接器数组 + protected Connector connectors[] = new Connector[0]; + private final Object connectorsLock = new Object(); + + // 对应的 Engine 容器 + private Engine engine = null; + + // 映射器及其监听器 + protected final Mapper mapper = new Mapper(); + protected final MapperListener mapperListener = new MapperListener(this); + + // ... +} +``` + +StandardService 继承了 LifecycleBase 抽象类。 + +StandardService 维护了一个 MapperListener 用于支持 Tomcat 热部署。当 Web 应用的部署发生变化时,Mapper 中的映射信息也要跟着变化,MapperListener 就是一个监听器,它监听容器的变化,并把信息更新到 Mapper 中,这是典型的观察者模式。 + +作为“管理”角色的组件,最重要的是维护其他组件的生命周期。此外在启动各种组件时,要注意它们的依赖关系,也就是说,要注意启动的顺序。 + +```java +protected void startInternal() throws LifecycleException { + + //1. 触发启动监听器 + setState(LifecycleState.STARTING); + + //2. 先启动 Engine,Engine 会启动它子容器 + if (engine != null) { + synchronized (engine) { + engine.start(); + } + } + + //3. 再启动 Mapper 监听器 + mapperListener.start(); + + //4. 最后启动连接器,连接器会启动它子组件,比如 Endpoint + synchronized (connectorsLock) { + for (Connector connector: connectors) { + if (connector.getState() != LifecycleState.FAILED) { + connector.start(); + } + } + } +} +``` + +从启动方法可以看到,Service 先启动了 Engine 组件,再启动 Mapper 监听器,最后才是启动连接器。这很好理解,因为内层组件启动好了才能对外提供服务,才能启动外层的连接器组件。而 Mapper 也依赖容器组件,容器组件启动好了才能监听它们的变化,因此 Mapper 和 MapperListener 在容器组件之后启动。组件停止的顺序跟启动顺序正好相反的,也是基于它们的依赖关系。 + +#### Engine 组件 + +Engine 本质是一个容器,因此它继承了 ContainerBase 基类,并且实现了 Engine 接口。 + +### 4.2. Web 应用的部署方式 + +注:catalina.home:安装目录;catalina.base:工作目录;默认值 user.dir + +- Server.xml 配置 Host 元素,指定 appBase 属性,默认\$catalina.base/webapps/ +- Server.xml 配置 Context 元素,指定 docBase,元素,指定 web 应用的路径 +- 自定义配置:在\$catalina.base/EngineName/HostName/XXX.xml 配置 Context 元素 + +HostConfig 监听了 StandardHost 容器的事件,在 start 方法中解析上述配置文件: + +- 扫描 appbase 路径下的所有文件夹和 war 包,解析各个应用的 META-INF/context.xml,并 创建 StandardContext,并将 Context 加入到 Host 的子容器中。 +- 解析\$catalina.base/EngineName/HostName/下的所有 Context 配置,找到相应 web 应 用的位置,解析各个应用的 META-INF/context.xml,并创建 StandardContext,并将 Context 加入到 Host 的子容器中。 + +注: + +- HostConfig 并没有实际解析 Context.xml,而是在 ContextConfig 中进行的。 +- HostConfig 中会定期检查 watched 资源文件(context.xml 配置文件) + +ContextConfig 解析 context.xml 顺序: + +- 先解析全局的配置 config/context.xml +- 然后解析 Host 的默认配置 EngineName/HostName/context.xml.default +- 最后解析应用的 META-INF/context.xml + +ContextConfig 解析 web.xml 顺序: + +- 先解析全局的配置 config/web.xml +- 然后解析 Host 的默认配置 EngineName/HostName/web.xml.default 接着解析应用的 MEB-INF/web.xml +- 扫描应用 WEB-INF/lib/下的 jar 文件,解析其中的 META-INF/web-fragment.xml 最后合并 xml 封装成 WebXml,并设置 Context + +注: + +- 扫描 web 应用和 jar 中的注解(Filter、Listener、Servlet)就是上述步骤中进行的。 +- 容器的定期执行:backgroundProcess,由 ContainerBase 来实现的,并且只有在顶层容器 中才会开启线程。(backgroundProcessorDelay=10 标志位来控制) + +### 4.3. LifeCycle + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201118105012.png) + +#### 4.2.3. 请求处理过程 + +
    + +
    + +1. 根据 server.xml 配置的指定的 connector 以及端口监听 http、或者 ajp 请求 +2. 请求到来时建立连接,解析请求参数,创建 Request 和 Response 对象,调用顶层容器 pipeline 的 invoke 方法 +3. 容器之间层层调用,最终调用业务 servlet 的 service 方法 +4. Connector 将 response 流中的数据写到 socket 中 + +### 4.4. Connector 流程 + +
    + +
    + +#### 4.3.1. 阻塞 IO + +
    + +
    + +#### 4.3.2. 非阻塞 IO + +
    + +
    + +#### 4.3.3. IO 多路复用 + +
    + +
    + +阻塞与非阻塞的区别在于进行读操作和写操作的系统调用时,如果此时内核态没有数据可读或者没有缓冲空间可写时,是否阻塞。 + +IO 多路复用的好处在于可同时监听多个 socket 的可读和可写事件,这样就能使得应用可以同时监听多个 socket,释放了应用线程资源。 + +#### 4.3.4. Tomcat 各类 Connector 对比 + +
    + +
    + +- JIO:用 java.io 编写的 TCP 模块,阻塞 IO +- NIO:用 java.nio 编写的 TCP 模块,非阻塞 IO,(IO 多路复用) +- APR:全称 Apache Portable Runtime,使用 JNI 的方式来进行读取文件以及进行网络传输 + +Apache Portable Runtime 是一个高度可移植的库,它是 Apache HTTP Server 2.x 的核心。 APR 具有许多用途,包括访问高级 IO 功能(如 sendfile,epoll 和 OpenSSL),操作系统级功能(随机数生成,系统状态等)和本地进程处理(共享内存,NT 管道和 Unix 套接字)。 + +表格中字段含义说明: + +- Support Polling - 是否支持基于 IO 多路复用的 socket 事件轮询 +- Polling Size - 轮询的最大连接数 +- Wait for next Request - 在等待下一个请求时,处理线程是否释放,BIO 是没有释放的,所以在 keep-alive=true 的情况下处理的并发连接数有限 +- Read Request Headers - 由于 request header 数据较少,可以由容器提前解析完毕,不需要阻塞 +- Read Request Body - 读取 request body 的数据是应用业务逻辑的事情,同时 Servlet 的限制,是需要阻塞读取的 +- Write Response - 跟读取 request body 的逻辑类似,同样需要阻塞写 + +**NIO 处理相关类** + +
    + +
    + +Poller 线程从 EventQueue 获取 PollerEvent,并执行 PollerEvent 的 run 方法,调用 Selector 的 select 方法,如果有可读的 Socket 则创建 Http11NioProcessor,放入到线程池中执行; + +CoyoteAdapter 是 Connector 到 Container 的适配器,Http11NioProcessor 调用其提供的 service 方法,内部创建 Request 和 Response 对象,并调用最顶层容器的 Pipeline 中的第一个 Valve 的 invoke 方法 + +Mapper 主要处理 http url 到 servlet 的映射规则的解析,对外提供 map 方法 + +### 4.5. Comet + +Comet 是一种用于 web 的推送技术,能使服务器实时地将更新的信息传送到客户端,而无须客户端发出请求 +在 WebSocket 出来之前,如果不适用 comet,只能通过浏览器端轮询 Server 来模拟实现服务器端推送。 +Comet 支持 servlet 异步处理 IO,当连接上数据可读时触发事件,并异步写数据(阻塞) + +Tomcat 要实现 Comet,只需继承 HttpServlet 同时,实现 CometProcessor 接口 + +- Begin:新的请求连接接入调用,可进行与 Request 和 Response 相关的对象初始化操作,并保存 response 对象,用于后续写入数据 +- Read:请求连接有数据可读时调用 +- End:当数据可用时,如果读取到文件结束或者 response 被关闭时则被调用 +- Error:在连接上发生异常时调用,数据读取异常、连接断开、处理异常、socket 超时 + +Note: + +- Read:在 post 请求有数据,但在 begin 事件中没有处理,则会调用 read,如果 read 没有读取数据,在会触发 Error 回调,关闭 socket +- End:当 socket 超时,并且 response 被关闭时也会调用;server 被关闭时调用 +- Error:除了 socket 超时不会关闭 socket,其他都会关闭 socket +- End 和 Error 时间触发时应关闭当前 comet 会话,即调用 CometEvent 的 close 方法 + Note:在事件触发时要做好线程安全的操作 + +### 4.6. 异步 Servlet + +
    + +
    + +传统流程: + +- 首先,Servlet 接收到请求之后,request 数据解析; +- 接着,调用业务接口的某些方法,以完成业务处理; +- 最后,根据处理的结果提交响应,Servlet 线程结束 + +
    + +
    + +异步处理流程: + +- 客户端发送一个请求 +- Servlet 容器分配一个线程来处理容器中的一个 servlet +- servlet 调用 request.startAsync(),保存 AsyncContext, 然后返回 +- 任何方式存在的容器线程都将退出,但是 response 仍然保持开放 +- 业务线程使用保存的 AsyncContext 来完成响应(线程池) +- 客户端收到响应 + +Servlet 线程将请求转交给一个异步线程来执行业务处理,线程本身返回至容器,此时 Servlet 还没有生成响应数据,异步线程处理完业务以后,可以直接生成响应数据(异步线程拥有 ServletRequest 和 ServletResponse 对象的引用) + +**为什么 web 应用中支持异步?** + +推出异步,主要是针对那些比较耗时的请求:比如一次缓慢的数据库查询,一次外部 REST API 调用, 或者是其他一些 I/O 密集型操作。这种耗时的请求会很快的耗光 Servlet 容器的线程池,继而影响可扩展性。 + +Note:从客户端的角度来看,request 仍然像任何其他的 HTTP 的 request-response 交互一样,只是耗费了更长的时间而已 + +**异步事件监听** + +- onStartAsync:Request 调用 startAsync 方法时触发 +- onComplete:syncContext 调用 complete 方法时触发 +- onError:处理请求的过程出现异常时触发 +- onTimeout:socket 超时触发 + +Note : +onError/ onTimeout 触发后,会紧接着回调 onComplete +onComplete 执行后,就不可再操作 request 和 response + +## 5. 参考资料 + +- **官方** + + - [Tomcat 官方网站](http://tomcat.apache.org/) + - [Tomcat Wiki](http://wiki.apache.org/tomcat/FrontPage) + - [Tomee 官方网站](http://tomee.apache.org/) + +- **文章** + - [Creating a Web App with Bootstrap and Tomcat Embedded](http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/basic_app_embedded_tomcat/basic_app-tomcat-embedded.html) + - [Tomcat 组成与工作原理](https://juejin.im/post/58eb5fdda0bb9f00692a78fc) + - [Tomcat 工作原理](https://www.ibm.com/developerworks/cn/java/j-lo-tomcat1/index.html) + - [Tomcat 设计模式分析](https://www.ibm.com/developerworks/cn/java/j-lo-tomcat2/index.html?ca=drs-) diff --git "a/docs/server/Tomcat\350\277\236\346\216\245\345\231\250.md" "b/docs/server/Tomcat\350\277\236\346\216\245\345\231\250.md" new file mode 100644 index 00000000..c90c3845 --- /dev/null +++ "b/docs/server/Tomcat\350\277\236\346\216\245\345\231\250.md" @@ -0,0 +1,529 @@ +# Tomcat 连接器 + + + +- [1. NioEndpoint 组件](#1-nioendpoint-组件) + - [1.1. LimitLatch](#11-limitlatch) + - [1.2. Acceptor](#12-acceptor) + - [1.3. Poller](#13-poller) + - [1.4. SocketProcessor](#14-socketprocessor) +- [2. Nio2Endpoint 组件](#2-nio2endpoint-组件) + - [2.1. Nio2Acceptor](#21-nio2acceptor) + - [2.2. Nio2SocketWrapper](#22-nio2socketwrapper) +- [3. AprEndpoint 组件](#3-aprendpoint-组件) + - [3.1. AprEndpoint 工作流程](#31-aprendpoint-工作流程) + - [3.2. APR 提升性能的秘密](#32-apr-提升性能的秘密) +- [4. Executor 组件](#4-executor-组件) + - [4.1. Tomcat 定制线程池](#41-tomcat-定制线程池) + - [4.2. Tomcat 定制任务队列](#42-tomcat-定制任务队列) +- [5. WebSocket 组件](#5-websocket-组件) + - [5.1. WebSocket 加载](#51-websocket-加载) + - [5.2. WebSocket 请求处理](#52-websocket-请求处理) +- [6. 参考资料](#6-参考资料) + + + +## 1. NioEndpoint 组件 + +Tomcat 的 NioEndPoint 组件利用 Java NIO 实现了 I/O 多路复用模型。 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127094302.jpg) + +NioEndPoint 子组件功能简介: + +- `LimitLatch` 是连接控制器,负责控制最大连接数。NIO 模式下默认是 10000,达到这个阈值后,连接请求被拒绝。 +- `Acceptor` 负责监听连接请求。`Acceptor` 运行在一个单独的线程里,它在一个死循环里调用 accept 方法来接收新连接,一旦有新的连接请求到来,accept 方法返回一个 `Channel` 对象,接着把 `Channel` 对象交给 `Poller` 去处理。 +- `Poller` 的本质是一个 `Selector`,也运行在单独线程里。`Poller` 内部维护一个 `Channel` 数组,它在一个死循环里不断检测 `Channel` 的数据就绪状态,一旦有 `Channel` 可读,就生成一个 `SocketProcessor` 任务对象扔给 `Executor` 去处理。 +- `Executor` 就是线程池,负责运行 `SocketProcessor` 任务类,`SocketProcessor` 的 run 方法会调用 `Http11Processor` 来读取和解析请求数据。我们知道,`Http11Processor` 是应用层协议的封装,它会调用容器获得响应,再把响应通过 `Channel` 写出。 + +NioEndpoint 如何实现高并发的呢? + +要实现高并发需要合理设计线程模型充分利用 CPU 资源,尽量不要让线程阻塞;另外,就是有多少任务,就用相应规模的线程数去处理。 + +NioEndpoint 要完成三件事情:接收连接、检测 I/O 事件以及处理请求,那么最核心的就是把这三件事情分开,用不同规模的线程去处理,比如用专门的线程组去跑 Acceptor,并且 Acceptor 的个数可以配置;用专门的线程组去跑 Poller,Poller 的个数也可以配置;最后具体任务的执行也由专门的线程池来处理,也可以配置线程池的大小。 + +### 1.1. LimitLatch + +`LimitLatch` 用来控制连接个数,当连接数到达最大时阻塞线程,直到后续组件处理完一个连接后将连接数减 1。请你注意到达最大连接数后操作系统底层还是会接收客户端连接,但用户层已经不再接收。 + +```java +public class LimitLatch { + private class Sync extends AbstractQueuedSynchronizer { + + @Override + protected int tryAcquireShared() { + long newCount = count.incrementAndGet(); + if (newCount > limit) { + count.decrementAndGet(); + return -1; + } else { + return 1; + } + } + + @Override + protected boolean tryReleaseShared(int arg) { + count.decrementAndGet(); + return true; + } + } + + private final Sync sync; + private final AtomicLong count; + private volatile long limit; + + // 线程调用这个方法来获得接收新连接的许可,线程可能被阻塞 + public void countUpOrAwait() throws InterruptedException { + sync.acquireSharedInterruptibly(1); + } + + // 调用这个方法来释放一个连接许可,那么前面阻塞的线程可能被唤醒 + public long countDown() { + sync.releaseShared(0); + long result = getCount(); + return result; + } +} +``` + +LimitLatch 内步定义了内部类 Sync,而 Sync 扩展了 AQS,AQS 是 Java 并发包中的一个核心类,它在内部维护一个状态和一个线程队列,可以用来**控制线程什么时候挂起,什么时候唤醒**。我们可以扩展它来实现自己的同步器,实际上 Java 并发包里的锁和条件变量等等都是通过 AQS 来实现的,而这里的 LimitLatch 也不例外。 + +理解源码要点: + +- 用户线程通过调用 LimitLatch 的 countUpOrAwait 方法来拿到锁,如果暂时无法获取,这个线程会被阻塞到 AQS 的队列中。那 AQS 怎么知道是阻塞还是不阻塞用户线程呢?其实这是由 AQS 的使用者来决定的,也就是内部类 Sync 来决定的,因为 Sync 类重写了 AQS 的**tryAcquireShared() 方法**。它的实现逻辑是如果当前连接数 count 小于 limit,线程能获取锁,返回 1,否则返回 -1。 +- 如何用户线程被阻塞到了 AQS 的队列,那什么时候唤醒呢?同样是由 Sync 内部类决定,Sync 重写了 AQS 的**releaseShared() 方法**,其实就是当一个连接请求处理完了,这时又可以接收一个新连接了,这样前面阻塞的线程将会被唤醒。 + +### 1.2. Acceptor + +Acceptor 实现了 Runnable 接口,因此可以跑在单独线程里。一个端口号只能对应一个 ServerSocketChannel,因此这个 ServerSocketChannel 是在多个 Acceptor 线程之间共享的,它是 Endpoint 的属性,由 Endpoint 完成初始化和端口绑定。 + +``` +serverSock = ServerSocketChannel.open(); +serverSock.socket().bind(addr,getAcceptCount()); +serverSock.configureBlocking(true); +``` + +- bind 方法的第二个参数表示操作系统的等待队列长度,我在上面提到,当应用层面的连接数到达最大值时,操作系统可以继续接收连接,那么操作系统能继续接收的最大连接数就是这个队列长度,可以通过 acceptCount 参数配置,默认是 100。 +- ServerSocketChannel 被设置成阻塞模式,也就是说它是以阻塞的方式接收连接的。ServerSocketChannel 通过 accept() 接受新的连接,accept() 方法返回获得 SocketChannel 对象,然后将 SocketChannel 对象封装在一个 PollerEvent 对象中,并将 PollerEvent 对象压入 Poller 的 Queue 里,这是个典型的生产者 - 消费者模式,Acceptor 与 Poller 线程之间通过 Queue 通信。 + +### 1.3. Poller + +`Poller` 本质是一个 `Selector`,它内部维护一个 `Queue`。 + +``` +private final SynchronizedQueue events = new SynchronizedQueue<>(); +``` + +`SynchronizedQueue` 的核心方法都使用了 `Synchronized` 关键字进行修饰,用来保证同一时刻只有一个线程进行读写。 + +使用 `SynchronizedQueue`,意味着同一时刻只有一个 `Acceptor` 线程对队列进行读写;同时有多个 `Poller` 线程在运行,每个 `Poller` 线程都有自己的队列。每个 `Poller` 线程可能同时被多个 `Acceptor` 线程调用来注册 `PollerEvent`。同样 `Poller` 的个数可以通过 pollers 参数配置。 + +`Poller` 不断的通过内部的 `Selector` 对象向内核查询 `Channel` 的状态,一旦可读就生成任务类 `SocketProcessor` 交给 `Executor` 去处理。`Poller` 的另一个重要任务是循环遍历检查自己所管理的 `SocketChannel` 是否已经超时,如果有超时就关闭这个 `SocketChannel`。 + +### 1.4. SocketProcessor + +我们知道,`Poller` 会创建 `SocketProcessor` 任务类交给线程池处理,而 `SocketProcessor` 实现了 `Runnable` 接口,用来定义 `Executor` 中线程所执行的任务,主要就是调用 `Http11Processor` 组件来处理请求。`Http11Processor` 读取 `Channel` 的数据来生成 `ServletRequest` 对象,这里请你注意: + +`Http11Processor` 并不是直接读取 `Channel` 的。这是因为 Tomcat 支持同步非阻塞 I/O 模型和异步 I/O 模型,在 Java API 中,相应的 Channel 类也是不一样的,比如有 `AsynchronousSocketChannel` 和 `SocketChannel`,为了对 `Http11Processor` 屏蔽这些差异,Tomcat 设计了一个包装类叫作 `SocketWrapper`,`Http11Processor` 只调用 `SocketWrapper` 的方法去读写数据。 + +## 2. Nio2Endpoint 组件 + +Nio2Endpoint 工作流程跟 NioEndpoint 较为相似。 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127143839.jpg) + +Nio2Endpoint 子组件功能说明: + +- `LimitLatch` 是连接控制器,它负责控制最大连接数。 +- `Nio2Acceptor` 扩展了 `Acceptor`,用异步 I/O 的方式来接收连接,跑在一个单独的线程里,也是一个线程组。`Nio2Acceptor` 接收新的连接后,得到一个 `AsynchronousSocketChannel`,`Nio2Acceptor` 把 `AsynchronousSocketChannel` 封装成一个 `Nio2SocketWrapper`,并创建一个 `SocketProcessor` 任务类交给线程池处理,并且 `SocketProcessor` 持有 `Nio2SocketWrapper` 对象。 +- `Executor` 在执行 `SocketProcessor` 时,`SocketProcessor` 的 run 方法会调用 `Http11Processor` 来处理请求,`Http11Processor` 会通过 `Nio2SocketWrapper` 读取和解析请求数据,请求经过容器处理后,再把响应通过 `Nio2SocketWrapper` 写出。 + +Nio2Endpoint 跟 NioEndpoint 的一个明显不同点是,**Nio2Endpoint 中没有 Poller 组件,也就是没有 Selector。这是为什么呢?因为在异步 I/O 模式下,Selector 的工作交给内核来做了。** + +### 2.1. Nio2Acceptor + +和 `NioEndpint` 一样,`Nio2Endpoint` 的基本思路是用 `LimitLatch` 组件来控制连接数。 + +但是 `Nio2Acceptor` 的监听连接的过程不是在一个死循环里不断的调 accept 方法,而是通过回调函数来完成的。我们来看看它的连接监听方法: + +``` +serverSock.accept(null, this); +``` + +其实就是调用了 accept 方法,注意它的第二个参数是 this,表明 `Nio2Acceptor` 自己就是处理连接的回调类,因此 `Nio2Acceptor` 实现了 `CompletionHandler` 接口。那么它是如何实现 `CompletionHandler` 接口的呢? + +```java +protected class Nio2Acceptor extends Acceptor + implements CompletionHandler { + + @Override + public void completed(AsynchronousSocketChannel socket, + Void attachment) { + + if (isRunning() && !isPaused()) { + if (getMaxConnections() == -1) { + // 如果没有连接限制,继续接收新的连接 + serverSock.accept(null, this); + } else { + // 如果有连接限制,就在线程池里跑 Run 方法,Run 方法会检查连接数 + getExecutor().execute(this); + } + // 处理请求 + if (!setSocketOptions(socket)) { + closeSocket(socket); + } + } + } +} +``` + +可以看到 `CompletionHandler` 的两个模板参数分别是 `AsynchronousServerSocketChannel` 和 Void,我在前面说过第一个参数就是 `accept` 方法的返回值,第二个参数是附件类,由用户自己决定,这里为 Void。`completed` 方法的处理逻辑比较简单: + +- 如果没有连接限制,继续在本线程中调用 `accept` 方法接收新的连接。 +- 如果有连接限制,就在线程池里跑 `run` 方法去接收新的连接。那为什么要跑 `run` 方法呢,因为在 `run` 方法里会检查连接数,当连接达到最大数时,线程可能会被 `LimitLatch` 阻塞。为什么要放在线程池里跑呢?这是因为如果放在当前线程里执行,`completed` 方法可能被阻塞,会导致这个回调方法一直不返回。 + +接着 `completed` 方法会调用 `setSocketOptions` 方法,在这个方法里,会创建 `Nio2SocketWrapper` 和 `SocketProcessor`,并交给线程池处理。 + +### 2.2. Nio2SocketWrapper + +`Nio2SocketWrapper` 的主要作用是封装 Channel,并提供接口给 `Http11Processor` 读写数据。讲到这里你是不是有个疑问:`Http11Processor` 是不能阻塞等待数据的,按照异步 I/O 的套路,`Http11Processor` 在调用 `Nio2SocketWrapper` 的 read 方法时需要注册回调类,read 调用会立即返回,问题是立即返回后 `Http11Processor` 还没有读到数据, 怎么办呢?这个请求的处理不就失败了吗? + +为了解决这个问题,`Http11Processor` 是通过 2 次 read 调用来完成数据读取操作的。 + +- 第一次 read 调用:连接刚刚建立好后,`Acceptor` 创建 `SocketProcessor` 任务类交给线程池去处理,`Http11Processor` 在处理请求的过程中,会调用 `Nio2SocketWrapper` 的 read 方法发出第一次读请求,同时注册了回调类 `readCompletionHandler`,因为数据没读到,`Http11Processor` 把当前的 `Nio2SocketWrapper` 标记为数据不完整。**接着 `SocketProcessor` 线程被回收,`Http11Processor` 并没有阻塞等待数据**。这里请注意,`Http11Processor` 维护了一个 `Nio2SocketWrapper` 列表,也就是维护了连接的状态。 +- 第二次 read 调用:当数据到达后,内核已经把数据拷贝到 `Http11Processor` 指定的 Buffer 里,同时回调类 `readCompletionHandler` 被调用,在这个回调处理方法里会**重新创建一个新的 `SocketProcessor` 任务来继续处理这个连接**,而这个新的 `SocketProcessor` 任务类持有原来那个 `Nio2SocketWrapper`,这一次 `Http11Processor` 可以通过 `Nio2SocketWrapper` 读取数据了,因为数据已经到了应用层的 Buffer。 + +这个回调类 `readCompletionHandler` 的源码如下,最关键的一点是,**`Nio2SocketWrapper` 是作为附件类来传递的**,这样在回调函数里能拿到所有的上下文。 + +``` +this.readCompletionHandler = new CompletionHandler>() { + public void completed(Integer nBytes, SocketWrapperBase attachment) { + ... + // 通过附件类 SocketWrapper 拿到所有的上下文 + Nio2SocketWrapper.this.getEndpoint().processSocket(attachment, SocketEvent.OPEN_READ, false); + } + + public void failed(Throwable exc, SocketWrapperBase attachment) { + ... + } +} +``` + +## 3. AprEndpoint 组件 + +我们在使用 Tomcat 时,可能会在启动日志里看到这样的提示信息: + +> The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: \*\*\* + +这句话的意思就是推荐你去安装 APR 库,可以提高系统性能。 + +APR(Apache Portable Runtime Libraries)是 Apache 可移植运行时库,它是用 C 语言实现的,其目的是向上层应用程序提供一个跨平台的操作系统接口库。Tomcat 可以用它来处理包括文件和网络 I/O,从而提升性能。Tomcat 支持的连接器有 NIO、NIO.2 和 APR。跟 NioEndpoint 一样,AprEndpoint 也实现了非阻塞 I/O,它们的区别是:NioEndpoint 通过调用 Java 的 NIO API 来实现非阻塞 I/O,而 AprEndpoint 是通过 JNI 调用 APR 本地库而实现非阻塞 I/O 的。 + +同样是非阻塞 I/O,为什么 Tomcat 会提示使用 APR 本地库的性能会更好呢?这是因为在某些场景下,比如需要频繁与操作系统进行交互,Socket 网络通信就是这样一个场景,特别是如果你的 Web 应用使用了 TLS 来加密传输,我们知道 TLS 协议在握手过程中有多次网络交互,在这种情况下 Java 跟 C 语言程序相比还是有一定的差距,而这正是 APR 的强项。 + +Tomcat 本身是 Java 编写的,为了调用 C 语言编写的 APR,需要通过 JNI 方式来调用。JNI(Java Native Interface) 是 JDK 提供的一个编程接口,它允许 Java 程序调用其他语言编写的程序或者代码库,其实 JDK 本身的实现也大量用到 JNI 技术来调用本地 C 程序库。 + +### 3.1. AprEndpoint 工作流程 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127145740.jpg) + +#### Acceptor + +Accpetor 的功能就是监听连接,接收并建立连接。它的本质就是调用了四个操作系统 API:socket、bind、listen 和 accept。那 Java 语言如何直接调用 C 语言 API 呢?答案就是通过 JNI。具体来说就是两步:先封装一个 Java 类,在里面定义一堆用**native 关键字**修饰的方法,像下面这样。 + +```java +public class Socket { + ... + // 用 native 修饰这个方法,表明这个函数是 C 语言实现 + public static native long create(int family, int type, + int protocol, long cont) + + public static native int bind(long sock, long sa); + + public static native int listen(long sock, int backlog); + + public static native long accept(long sock) +} +``` + +接着用 C 代码实现这些方法,比如 bind 函数就是这样实现的: + +```java +// 注意函数的名字要符合 JNI 规范的要求 +JNIEXPORT jint JNICALL +Java_org_apache_tomcat_jni_Socket_bind(JNIEnv *e, jlong sock,jlong sa) + { + jint rv = APR_SUCCESS; + tcn_socket_t *s = (tcn_socket_t *)sock; + apr_sockaddr_t *a = (apr_sockaddr_t *) sa; + + // 调用 APR 库自己实现的 bind 函数 + rv = (jint)apr_socket_bind(s->sock, a); + return rv; + } +``` + +专栏里我就不展开 JNI 的细节了,你可以[扩展阅读](http://jnicookbook.owsiak.org/contents/)获得更多信息和例子。我们要注意的是函数名字要符合 JNI 的规范,以及 Java 和 C 语言如何互相传递参数,比如在 C 语言有指针,Java 没有指针的概念,所以在 Java 中用 long 类型来表示指针。AprEndpoint 的 Acceptor 组件就是调用了 APR 实现的四个 API。 + +#### Poller + +Acceptor 接收到一个新的 Socket 连接后,按照 NioEndpoint 的实现,它会把这个 Socket 交给 Poller 去查询 I/O 事件。AprEndpoint 也是这样做的,不过 AprEndpoint 的 Poller 并不是调用 Java NIO 里的 Selector 来查询 Socket 的状态,而是通过 JNI 调用 APR 中的 poll 方法,而 APR 又是调用了操作系统的 epoll API 来实现的。 + +这里有个特别的地方是在 AprEndpoint 中,我们可以配置一个叫`deferAccept`的参数,它对应的是 TCP 协议中的`TCP_DEFER_ACCEPT`,设置这个参数后,当 TCP 客户端有新的连接请求到达时,TCP 服务端先不建立连接,而是再等等,直到客户端有请求数据发过来时再建立连接。这样的好处是服务端不需要用 Selector 去反复查询请求数据是否就绪。 + +这是一种 TCP 协议层的优化,不是每个操作系统内核都支持,因为 Java 作为一种跨平台语言,需要屏蔽各种操作系统的差异,因此并没有把这个参数提供给用户;但是对于 APR 来说,它的目的就是尽可能提升性能,因此它向用户暴露了这个参数。 + +### 3.2. APR 提升性能的秘密 + +APR 连接器之所以能提高 Tomcat 的性能,除了 APR 本身是 C 程序库之外,还有哪些提速的秘密呢? + +**JVM 堆 VS 本地内存** + +我们知道 Java 的类实例一般在 JVM 堆上分配,而 Java 是通过 JNI 调用 C 代码来实现 Socket 通信的,那么 C 代码在运行过程中需要的内存又是从哪里分配的呢?C 代码能否直接操作 Java 堆? + +为了回答这些问题,我先来说说 JVM 和用户进程的关系。如果你想运行一个 Java 类文件,可以用下面的 Java 命令来执行。 + +``` +java my.class +``` + +这个命令行中的`java`其实是**一个可执行程序,这个程序会创建 JVM 来加载和运行你的 Java 类**。操作系统会创建一个进程来执行这个`java`可执行程序,而每个进程都有自己的虚拟地址空间,JVM 用到的内存(包括堆、栈和方法区)就是从进程的虚拟地址空间上分配的。请你注意的是,JVM 内存只是进程空间的一部分,除此之外进程空间内还有代码段、数据段、内存映射区、内核空间等。从 JVM 的角度看,JVM 内存之外的部分叫作本地内存,C 程序代码在运行过程中用到的内存就是本地内存中分配的。下面我们通过一张图来理解一下。 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127150729.jpg) + +Tomcat 的 Endpoint 组件在接收网络数据时需要预先分配好一块 Buffer,所谓的 Buffer 就是字节数组`byte[]`,Java 通过 JNI 调用把这块 Buffer 的地址传给 C 代码,C 代码通过操作系统 API 读取 Socket 并把数据填充到这块 Buffer。Java NIO API 提供了两种 Buffer 来接收数据:HeapByteBuffer 和 DirectByteBuffer,下面的代码演示了如何创建两种 Buffer。 + +``` +// 分配 HeapByteBuffer +ByteBuffer buf = ByteBuffer.allocate(1024); + +// 分配 DirectByteBuffer +ByteBuffer buf = ByteBuffer.allocateDirect(1024); +``` + +创建好 Buffer 后直接传给 Channel 的 read 或者 write 函数,最终这块 Buffer 会通过 JNI 调用传递给 C 程序。 + +``` +// 将 buf 作为 read 函数的参数 +int bytesRead = socketChannel.read(buf); +``` + +那 HeapByteBuffer 和 DirectByteBuffer 有什么区别呢?HeapByteBuffer 对象本身在 JVM 堆上分配,并且它持有的字节数组`byte[]`也是在 JVM 堆上分配。但是如果用**HeapByteBuffer**来接收网络数据,**需要把数据从内核先拷贝到一个临时的本地内存,再从临时本地内存拷贝到 JVM 堆**,而不是直接从内核拷贝到 JVM 堆上。这是为什么呢?这是因为数据从内核拷贝到 JVM 堆的过程中,JVM 可能会发生 GC,GC 过程中对象可能会被移动,也就是说 JVM 堆上的字节数组可能会被移动,这样的话 Buffer 地址就失效了。如果这中间经过本地内存中转,从本地内存到 JVM 堆的拷贝过程中 JVM 可以保证不做 GC。 + +如果使用 HeapByteBuffer,你会发现 JVM 堆和内核之间多了一层中转,而 DirectByteBuffer 用来解决这个问题,DirectByteBuffer 对象本身在 JVM 堆上,但是它持有的字节数组不是从 JVM 堆上分配的,而是从本地内存分配的。DirectByteBuffer 对象中有个 long 类型字段 address,记录着本地内存的地址,这样在接收数据的时候,直接把这个本地内存地址传递给 C 程序,C 程序会将网络数据从内核拷贝到这个本地内存,JVM 可以直接读取这个本地内存,这种方式比 HeapByteBuffer 少了一次拷贝,因此一般来说它的速度会比 HeapByteBuffer 快好几倍。你可以通过上面的图加深理解。 + +Tomcat 中的 AprEndpoint 就是通过 DirectByteBuffer 来接收数据的,而 NioEndpoint 和 Nio2Endpoint 是通过 HeapByteBuffer 来接收数据的。你可能会问,NioEndpoint 和 Nio2Endpoint 为什么不用 DirectByteBuffer 呢?这是因为本地内存不好管理,发生内存泄漏难以定位,从稳定性考虑,NioEndpoint 和 Nio2Endpoint 没有去冒这个险。 + +#### sendfile + +我们再来考虑另一个网络通信的场景,也就是静态文件的处理。浏览器通过 Tomcat 来获取一个 HTML 文件,而 Tomcat 的处理逻辑无非是两步: + +1. 从磁盘读取 HTML 到内存。 +2. 将这段内存的内容通过 Socket 发送出去。 + +但是在传统方式下,有很多次的内存拷贝: + +- 读取文件时,首先是内核把文件内容读取到内核缓冲区。 +- 如果使用 HeapByteBuffer,文件数据从内核到 JVM 堆内存需要经过本地内存中转。 +- 同样在将文件内容推入网络时,从 JVM 堆到内核缓冲区需要经过本地内存中转。 +- 最后还需要把文件从内核缓冲区拷贝到网卡缓冲区。 + +从下面的图你会发现这个过程有 6 次内存拷贝,并且 read 和 write 等系统调用将导致进程从用户态到内核态的切换,会耗费大量的 CPU 和内存资源。 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127151041.jpg) + +而 Tomcat 的 AprEndpoint 通过操作系统层面的 sendfile 特性解决了这个问题,sendfile 系统调用方式非常简洁。 + +``` +sendfile(socket, file, len); +``` + +它带有两个关键参数:Socket 和文件句柄。将文件从磁盘写入 Socket 的过程只有两步: + +第一步:将文件内容读取到内核缓冲区。 + +第二步:数据并没有从内核缓冲区复制到 Socket 关联的缓冲区,只有记录数据位置和长度的描述符被添加到 Socket 缓冲区中;接着把数据直接从内核缓冲区传递给网卡。这个过程你可以看下面的图。 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127151155.jpg) + +## 4. Executor 组件 + +为了提高处理能力和并发度,Web 容器一般会把处理请求的工作放到线程池里来执行,Tomcat 扩展了原生的 Java 线程池,来满足 Web 容器高并发的需求。 + +### 4.1. Tomcat 定制线程池 + +Tomcat 的线程池也是一个定制版的 ThreadPoolExecutor。Tomcat 传入的参数是这样的: + +``` +// 定制版的任务队列 +taskqueue = new TaskQueue(maxQueueSize); + +// 定制版的线程工厂 +TaskThreadFactory tf = new TaskThreadFactory(namePrefix,daemon,getThreadPriority()); + +// 定制版的线程池 +executor = new ThreadPoolExecutor(getMinSpareThreads(), getMaxThreads(), maxIdleTime, TimeUnit.MILLISECONDS,taskqueue, tf); +``` + +其中的两个关键点: + +- Tomcat 有自己的定制版任务队列和线程工厂,并且可以限制任务队列的长度,它的最大长度是 maxQueueSize。 +- Tomcat 对线程数也有限制,设置了核心线程数(minSpareThreads)和最大线程池数(maxThreads)。 + +除了资源限制以外,Tomcat 线程池还定制自己的任务处理流程。我们知道 Java 原生线程池的任务处理逻辑比较简单: + +1. 前 corePoolSize 个任务时,来一个任务就创建一个新线程。 +2. 后面再来任务,就把任务添加到任务队列里让所有的线程去抢,如果队列满了就创建临时线程。 +3. 如果总线程数达到 maximumPoolSize,**执行拒绝策略。** + +Tomcat 线程池扩展了原生的 ThreadPoolExecutor,通过重写 execute 方法实现了自己的任务处理逻辑: + +1. 前 corePoolSize 个任务时,来一个任务就创建一个新线程。 +2. 再来任务的话,就把任务添加到任务队列里让所有的线程去抢,如果队列满了就创建临时线程。 +3. 如果总线程数达到 maximumPoolSize,**则继续尝试把任务添加到任务队列中去。** +4. **如果缓冲队列也满了,插入失败,执行拒绝策略。** + +观察 Tomcat 线程池和 Java 原生线程池的区别,其实就是在第 3 步,Tomcat 在线程总数达到最大数时,不是立即执行拒绝策略,而是再尝试向任务队列添加任务,添加失败后再执行拒绝策略。那具体如何实现呢,其实很简单,我们来看一下 Tomcat 线程池的 execute 方法的核心代码。 + +``` +public class ThreadPoolExecutor extends java.util.concurrent.ThreadPoolExecutor { + + ... + + public void execute(Runnable command, long timeout, TimeUnit unit) { + submittedCount.incrementAndGet(); + try { + // 调用 Java 原生线程池的 execute 去执行任务 + super.execute(command); + } catch (RejectedExecutionException rx) { + // 如果总线程数达到 maximumPoolSize,Java 原生线程池执行拒绝策略 + if (super.getQueue() instanceof TaskQueue) { + final TaskQueue queue = (TaskQueue)super.getQueue(); + try { + // 继续尝试把任务放到任务队列中去 + if (!queue.force(command, timeout, unit)) { + submittedCount.decrementAndGet(); + // 如果缓冲队列也满了,插入失败,执行拒绝策略。 + throw new RejectedExecutionException("..."); + } + } + } + } +} +``` + +从这个方法你可以看到,Tomcat 线程池的 execute 方法会调用 Java 原生线程池的 execute 去执行任务,如果总线程数达到 maximumPoolSize,Java 原生线程池的 execute 方法会抛出 RejectedExecutionException 异常,但是这个异常会被 Tomcat 线程池的 execute 方法捕获到,并继续尝试把这个任务放到任务队列中去;如果任务队列也满了,再执行拒绝策略。 + +### 4.2. Tomcat 定制任务队列 + +细心的你有没有发现,在 Tomcat 线程池的 execute 方法最开始有这么一行: + +``` +submittedCount.incrementAndGet(); +``` + +这行代码的意思把 submittedCount 这个原子变量加一,并且在任务执行失败,抛出拒绝异常时,将这个原子变量减一: + +``` +submittedCount.decrementAndGet(); +``` + +其实 Tomcat 线程池是用这个变量 submittedCount 来维护已经提交到了线程池,但是还没有执行完的任务个数。Tomcat 为什么要维护这个变量呢?这跟 Tomcat 的定制版的任务队列有关。Tomcat 的任务队列 TaskQueue 扩展了 Java 中的 LinkedBlockingQueue,我们知道 LinkedBlockingQueue 默认情况下长度是没有限制的,除非给它一个 capacity。因此 Tomcat 给了它一个 capacity,TaskQueue 的构造函数中有个整型的参数 capacity,TaskQueue 将 capacity 传给父类 LinkedBlockingQueue 的构造函数。 + +```java +public class TaskQueue extends LinkedBlockingQueue { + + public TaskQueue(int capacity) { + super(capacity); + } + ... +} +``` + +这个 capacity 参数是通过 Tomcat 的 maxQueueSize 参数来设置的,但问题是默认情况下 maxQueueSize 的值是`Integer.MAX_VALUE`,等于没有限制,这样就带来一个问题:当前线程数达到核心线程数之后,再来任务的话线程池会把任务添加到任务队列,并且总是会成功,这样永远不会有机会创建新线程了。 + +为了解决这个问题,TaskQueue 重写了 LinkedBlockingQueue 的 offer 方法,在合适的时机返回 false,返回 false 表示任务添加失败,这时线程池会创建新的线程。那什么是合适的时机呢?请看下面 offer 方法的核心源码: + +```java +public class TaskQueue extends LinkedBlockingQueue { + + ... + @Override + // 线程池调用任务队列的方法时,当前线程数肯定已经大于核心线程数了 + public boolean offer(Runnable o) { + + // 如果线程数已经到了最大值,不能创建新线程了,只能把任务添加到任务队列。 + if (parent.getPoolSize() == parent.getMaximumPoolSize()) + return super.offer(o); + + // 执行到这里,表明当前线程数大于核心线程数,并且小于最大线程数。 + // 表明是可以创建新线程的,那到底要不要创建呢?分两种情况: + + //1. 如果已提交的任务数小于当前线程数,表示还有空闲线程,无需创建新线程 + if (parent.getSubmittedCount()<=(parent.getPoolSize())) + return super.offer(o); + + //2. 如果已提交的任务数大于当前线程数,线程不够用了,返回 false 去创建新线程 + if (parent.getPoolSize()> clazzes, ServletContext ctx) throws ServletException { + ... + } +} +``` + +一旦定义好了 SCI,Tomcat 在启动阶段扫描类时,会将 HandlesTypes 注解中指定的类都扫描出来,作为 SCI 的 onStartup 方法的参数,并调用 SCI 的 onStartup 方法。注意到 WsSci 的 HandlesTypes 注解中定义了`ServerEndpoint.class`、`ServerApplicationConfig.class`和`Endpoint.class`,因此在 Tomcat 的启动阶段会将这些类的类实例(注意不是对象实例)传递给 WsSci 的 onStartup 方法。那么 WsSci 的 onStartup 方法又做了什么事呢? + +它会构造一个 WebSocketContainer 实例,你可以把 WebSocketContainer 理解成一个专门处理 WebSocket 请求的**Endpoint 容器**。也就是说 Tomcat 会把扫描到的 Endpoint 子类和添加了注解`@ServerEndpoint`的类注册到这个容器中,并且这个容器还维护了 URL 到 Endpoint 的映射关系,这样通过请求 URL 就能找到具体的 Endpoint 来处理 WebSocket 请求。 + +### 5.2. WebSocket 请求处理 + +Tomcat 用 ProtocolHandler 组件屏蔽应用层协议的差异,其中 ProtocolHandler 中有两个关键组件:Endpoint 和 Processor。需要注意,这里的 Endpoint 跟上文提到的 WebSocket 中的 Endpoint 完全是两回事,连接器中的 Endpoint 组件用来处理 I/O 通信。WebSocket 本质就是一个应用层协议,因此不能用 HttpProcessor 来处理 WebSocket 请求,而要用专门 Processor 来处理,而在 Tomcat 中这样的 Processor 叫作 UpgradeProcessor。 + +为什么叫 Upgrade Processor 呢?这是因为 Tomcat 是将 HTTP 协议升级成 WebSocket 协议的。 + +WebSocket 是通过 HTTP 协议来进行握手的,因此当 WebSocket 的握手请求到来时,HttpProtocolHandler 首先接收到这个请求,在处理这个 HTTP 请求时,Tomcat 通过一个特殊的 Filter 判断该当前 HTTP 请求是否是一个 WebSocket Upgrade 请求(即包含`Upgrade: websocket`的 HTTP 头信息),如果是,则在 HTTP 响应里添加 WebSocket 相关的响应头信息,并进行协议升级。具体来说就是用 UpgradeProtocolHandler 替换当前的 HttpProtocolHandler,相应的,把当前 Socket 的 Processor 替换成 UpgradeProcessor,同时 Tomcat 会创建 WebSocket Session 实例和 Endpoint 实例,并跟当前的 WebSocket 连接一一对应起来。这个 WebSocket 连接不会立即关闭,并且在请求处理中,不再使用原有的 HttpProcessor,而是用专门的 UpgradeProcessor,UpgradeProcessor 最终会调用相应的 Endpoint 实例来处理请求。 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127153521.jpg) + +你可以看到,Tomcat 对 WebSocket 请求的处理没有经过 Servlet 容器,而是通过 UpgradeProcessor 组件直接把请求发到 ServerEndpoint 实例,并且 Tomcat 的 WebSocket 实现不需要关注具体 I/O 模型的细节,从而实现了与具体 I/O 方式的解耦。 + +## 6. 参考资料 + +- **官方** + - [Tomcat 官方网站](http://tomcat.apache.org/) + - [Tomcat Wiki](http://wiki.apache.org/tomcat/FrontPage) + - [Tomee 官方网站](http://tomee.apache.org/) +- **教程** + - [深入拆解 Tomcat & Jetty](https://time.geekbang.org/column/intro/100027701) diff --git a/docs/server/jetty.md b/docs/server/jetty.md new file mode 100644 index 00000000..b884d07f --- /dev/null +++ b/docs/server/jetty.md @@ -0,0 +1,679 @@ +# Jetty 应用指南 + + + +- [1. Jetty 简介](#1-jetty-简介) +- [2. Jetty 的使用](#2-jetty-的使用) + - [2.1. API 方式](#21-api-方式) + - [2.2. Maven 插件方式](#22-maven-插件方式) +- [3. Jetty 的架构](#3-jetty-的架构) + - [3.1. Jetty 架构简介](#31-jetty-架构简介) + - [3.2. Jetty 和 Tomcat 架构区别](#32-jetty-和-tomcat-架构区别) + - [3.3. Connector 组件](#33-connector-组件) + - [3.4. Handler 组件](#34-handler-组件) +- [4. Jetty 的线程策略](#4-jetty-的线程策略) + - [4.1. 传统 Selector 编程模型](#41-传统-selector-编程模型) + - [4.2. Jetty 的 Selector 编程模型](#42-jetty-的-selector-编程模型) +- [5. 参考资料](#5-参考资料) + + + +## 1. Jetty 简介 + +**jetty 是什么?** + +jetty 是轻量级的 web 服务器和 servlet 引擎。 + +它的最大特点是:可以很方便的作为**嵌入式服务器**。 + +它是 eclipse 的一个开源项目。不用怀疑,就是你常用的那个 eclipse。 + +它是使用 Java 开发的,所以天然对 Java 支持良好。 + +[官方网址](http://www.eclipse.org/jetty/index.html) + +[github 源码地址](https://github.com/eclipse/jetty.project) + +**什么是嵌入式服务器?** + +以 jetty 来说明,就是只要引入 jetty 的 jar 包,可以通过直接调用其 API 的方式来启动 web 服务。 + +用过 Tomcat、Resin 等服务器的朋友想必不会陌生那一套安装、配置、部署的流程吧,还是挺繁琐的。使用 jetty,就不需要这些过程了。 + +jetty 非常适用于项目的开发、测试,因为非常快捷。如果想用于生产环境,则需要谨慎考虑,它不一定能像成熟的 Tomcat、Resin 等服务器一样支持企业级 Java EE 的需要。 + +## 2. Jetty 的使用 + +我觉得嵌入式启动方式的一个好处在于:可以直接运行项目,无需每次部署都得再配置服务器。 + +jetty 的嵌入式启动使用有两种方式: + +API 方式 + +maven 插件方式 + +### 2.1. API 方式 + +添加 maven 依赖 + +```xml + + org.eclipse.jetty + jetty-webapp + 9.3.2.v20150730 + test + + + org.eclipse.jetty + jetty-annotations + 9.3.2.v20150730 + test + + + org.eclipse.jetty + apache-jsp + 9.3.2.v20150730 + test + + + org.eclipse.jetty + apache-jstl + 9.3.2.v20150730 + test + +``` + +官方的启动代码 + +```java +public class SplitFileServer +{ + public static void main( String[] args ) throws Exception + { + // 创建Server对象,并绑定端口 + Server server = new Server(); + ServerConnector connector = new ServerConnector(server); + connector.setPort(8090); + server.setConnectors(new Connector[] { connector }); + + // 创建上下文句柄,绑定上下文路径。这样启动后的url就会是:http://host:port/context + ResourceHandler rh0 = new ResourceHandler(); + ContextHandler context0 = new ContextHandler(); + context0.setContextPath("/"); + + // 绑定测试资源目录(在本例的配置目录dir0的路径是src/test/resources/dir0) + File dir0 = MavenTestingUtils.getTestResourceDir("dir0"); + context0.setBaseResource(Resource.newResource(dir0)); + context0.setHandler(rh0); + + // 和上面的例子一样 + ResourceHandler rh1 = new ResourceHandler(); + ContextHandler context1 = new ContextHandler(); + context1.setContextPath("/"); + File dir1 = MavenTestingUtils.getTestResourceDir("dir1"); + context1.setBaseResource(Resource.newResource(dir1)); + context1.setHandler(rh1); + + // 绑定两个资源句柄 + ContextHandlerCollection contexts = new ContextHandlerCollection(); + contexts.setHandlers(new Handler[] { context0, context1 }); + server.setHandler(contexts); + + // 启动 + server.start(); + + // 打印dump时的信息 + System.out.println(server.dump()); + + // join当前线程 + server.join(); + } +} +``` + +直接运行 Main 方法,就可以启动 web 服务。 + +**_注:以上代码在 eclipse 中运行没有问题,如果想在 Intellij 中运行还需要为它指定配置文件。_** + +如果想了解在 Eclipse 和 Intellij 都能运行的通用方法可以参考我的 github 代码示例。 + +我的实现也是参考 springside 的方式。 + +代码行数有点多,不在这里贴代码了。 + +[完整参考代码](https://github.com/dunwu/spring-notes) + +### 2.2. Maven 插件方式 + +如果你熟悉 maven,那么实在太简单了 + +**_注: Maven 版本必须在 3.3 及以上版本。_** + +(1) 添加 maven 插件 + +```xml + + org.eclipse.jetty + jetty-maven-plugin + 9.3.12.v20160915 + +``` + +(2) 执行 maven 命令: + +``` +mvn jetty:run +``` + +讲真,就是这么简单。jetty 默认会为你创建一个 web 服务,地址为 127.0.0.1:8080。 + +当然,你也可以在插件中配置你的 webapp 环境 + +```xml + + org.eclipse.jetty + jetty-maven-plugin + 9.3.12.v20160915 + + + ${project.basedir}/src/staticfiles + + + + / + ${project.basedir}/src/over/here/web.xml + ${project.basedir}/src/over/here/jetty-env.xml + + + + ${project.basedir}/somewhere/else + + + **/Foo.class + + + + src/mydir + src/myfile.txt + + + + + + src/other-resources + + **/*.xml + **/*.properties + + + **/myspecial.xml + **/myspecial.properties + + + + + +``` + +官方给的 jetty-env.xml 范例 + +```xml + + + + + + + + gargle + 100 + true + + + + + wiggle + 55.0 + true + + + + + jdbc/mydatasource99 + + + org.apache.derby.jdbc.EmbeddedXADataSource + databaseName=testdb99;createDatabase=create + mydatasource99 + + + + + +``` + +## 3. Jetty 的架构 + +### 3.1. Jetty 架构简介 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127154145.jpg) + +Jetty Server 就是由多个 Connector(连接器)、多个 Handler(处理器),以及一个线程池组成。 + +跟 Tomcat 一样,Jetty 也有 HTTP 服务器和 Servlet 容器的功能,因此 Jetty 中的 Connector 组件和 Handler 组件分别来实现这两个功能,而这两个组件工作时所需要的线程资源都直接从一个全局线程池 ThreadPool 中获取。 + +Jetty Server 可以有多个 Connector 在不同的端口上监听客户请求,而对于请求处理的 Handler 组件,也可以根据具体场景使用不同的 Handler。这样的设计提高了 Jetty 的灵活性,需要支持 Servlet,则可以使用 ServletHandler;需要支持 Session,则再增加一个 SessionHandler。也就是说我们可以不使用 Servlet 或者 Session,只要不配置这个 Handler 就行了。 + +为了启动和协调上面的核心组件工作,Jetty 提供了一个 Server 类来做这个事情,它负责创建并初始化 Connector、Handler、ThreadPool 组件,然后调用 start 方法启动它们。 + +### 3.2. Jetty 和 Tomcat 架构区别 + +对比一下 Tomcat 的整体架构图,你会发现 Tomcat 在整体上跟 Jetty 很相似,它们的第一个区别是 Jetty 中没有 Service 的概念,Tomcat 中的 Service 包装了多个连接器和一个容器组件,一个 Tomcat 实例可以配置多个 Service,不同的 Service 通过不同的连接器监听不同的端口;而 Jetty 中 Connector 是被所有 Handler 共享的。 + +第二个区别是,在 Tomcat 中每个连接器都有自己的线程池,而在 Jetty 中所有的 Connector 共享一个全局的线程池。 + +### 3.3. Connector 组件 + +跟 Tomcat 一样,Connector 的主要功能是对 I/O 模型和应用层协议的封装。I/O 模型方面,最新的 Jetty 9 版本只支持 NIO,因此 Jetty 的 Connector 设计有明显的 Java NIO 通信模型的痕迹。至于应用层协议方面,跟 Tomcat 的 Processor 一样,Jetty 抽象出了 Connection 组件来封装应用层协议的差异。 + +服务端在 NIO 通信上主要完成了三件事情:**监听连接、I/O 事件查询以及数据读写**。因此 Jetty 设计了**Acceptor、SelectorManager 和 Connection 来分别做这三件事情** + +#### Acceptor + +**Acceptor 用于接受请求**。跟 Tomcat 一样,Jetty 也有独立的 Acceptor 线程组用于处理连接请求。在 `Connector` 的实现类 `ServerConnector` 中,有一个 `_acceptors` 的数组,在 Connector 启动的时候, 会根据 `_acceptors` 数组的长度创建对应数量的 Acceptor,而 Acceptor 的个数可以配置。 + +```java +for (int i = 0; i < _acceptors.length; i++) +{ + Acceptor a = new Acceptor(i); + getExecutor().execute(a); +} +``` + +`Acceptor` 是 `ServerConnector` 中的一个内部类,同时也是一个 `Runnable`,`Acceptor` 线程是通过 `getExecutor()` 得到的线程池来执行的,前面提到这是一个全局的线程池。 + +`Acceptor` 通过阻塞的方式来接受连接,这一点跟 Tomcat 也是一样的。 + +```java +public void accept(int acceptorID) throws IOException +{ + ServerSocketChannel serverChannel = _acceptChannel; + if (serverChannel != null && serverChannel.isOpen()) + { + // 这里是阻塞的 + SocketChannel channel = serverChannel.accept(); + // 执行到这里时说明有请求进来了 + accepted(channel); + } +} +``` + +接受连接成功后会调用 `accepted()` 函数,`accepted()` 函数中会将 `SocketChannel` 设置为非阻塞模式,然后交给 `Selector` 去处理,因此这也就到了 `Selector` 的地界了。 + +```java +private void accepted(SocketChannel channel) throws IOException +{ + channel.configureBlocking(false); + Socket socket = channel.socket(); + configure(socket); + // _manager 是 SelectorManager 实例,里面管理了所有的 Selector 实例 + _manager.accept(channel); +} +``` + +**SelectorManager** + +**Jetty 的 `Selector` 由 `SelectorManager` 类管理**,而被管理的 `Selector` 叫作 `ManagedSelector`。`SelectorManager` 内部有一个 `ManagedSelector` 数组,真正干活的是 `ManagedSelector`。咱们接着上面分析,看看在 `SelectorManager` 在 `accept` 方法里做了什么。 + +```java +public void accept(SelectableChannel channel, Object attachment) +{ + // 选择一个 ManagedSelector 来处理 Channel + final ManagedSelector selector = chooseSelector(); + // 提交一个任务 Accept 给 ManagedSelector + selector.submit(selector.new Accept(channel, attachment)); +} +``` + +SelectorManager 从本身的 Selector 数组中选择一个 Selector 来处理这个 Channel,并创建一个任务 Accept 交给 ManagedSelector,ManagedSelector 在处理这个任务主要做了两步: + +第一步,调用 Selector 的 register 方法把 Channel 注册到 Selector 上,拿到一个 SelectionKey。 + +``` + _key = _channel.register(selector, SelectionKey.OP_ACCEPT, this); +``` + +第二步,创建一个 EndPoint 和 Connection,并跟这个 SelectionKey(Channel)绑在一起: + +```java +private void createEndPoint(SelectableChannel channel, SelectionKey selectionKey) throws IOException +{ + //1. 创建 Endpoint + EndPoint endPoint = _selectorManager.newEndPoint(channel, this, selectionKey); + + //2. 创建 Connection + Connection connection = _selectorManager.newConnection(channel, endPoint, selectionKey.attachment()); + + //3. 把 Endpoint、Connection 和 SelectionKey 绑在一起 + endPoint.setConnection(connection); + selectionKey.attach(endPoint); + +} +``` + +这里需要你特别注意的是,ManagedSelector 并没有直接调用 EndPoint 的方法去处理数据,而是通过调用 EndPoint 的方法**返回一个 Runnable,然后把这个 Runnable 扔给线程池执行**,所以你能猜到,这个 Runnable 才会去真正读数据和处理请求。 + +**Connection** + +这个 Runnable 是 EndPoint 的一个内部类,它会调用 Connection 的回调方法来处理请求。Jetty 的 Connection 组件类比就是 Tomcat 的 Processor,负责具体协议的解析,得到 Request 对象,并调用 Handler 容器进行处理。下面我简单介绍一下它的具体实现类 HttpConnection 对请求和响应的处理过程。 + +**请求处理**:HttpConnection 并不会主动向 EndPoint 读取数据,而是向在 EndPoint 中注册一堆回调方法: + +``` +getEndPoint().fillInterested(_readCallback); +``` + +这段代码就是告诉 EndPoint,数据到了你就调我这些回调方法 \_readCallback 吧,有点异步 I/O 的感觉,也就是说 Jetty 在应用层面模拟了异步 I/O 模型。 + +而在回调方法 \_readCallback 里,会调用 EndPoint 的接口去读数据,读完后让 HTTP 解析器去解析字节流,HTTP 解析器会将解析后的数据,包括请求行、请求头相关信息存到 Request 对象里。 + +**响应处理**:Connection 调用 Handler 进行业务处理,Handler 会通过 Response 对象来操作响应流,向流里面写入数据,HttpConnection 再通过 EndPoint 把数据写到 Channel,这样一次响应就完成了。 + +到此你应该了解了 Connector 的工作原理,下面我画张图再来回顾一下 Connector 的工作流程。 + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201118175805.jpg) + +1. Acceptor 监听连接请求,当有连接请求到达时就接受连接,一个连接对应一个 Channel,Acceptor 将 Channel 交给 ManagedSelector 来处理。 + +2. ManagedSelector 把 Channel 注册到 Selector 上,并创建一个 EndPoint 和 Connection 跟这个 Channel 绑定,接着就不断地检测 I/O 事件。 + +3. I/O 事件到了就调用 EndPoint 的方法拿到一个 Runnable,并扔给线程池执行。 + +4. 线程池中调度某个线程执行 Runnable。 + +5. Runnable 执行时,调用回调函数,这个回调函数是 Connection 注册到 EndPoint 中的。 + +6. 回调函数内部实现,其实就是调用 EndPoint 的接口方法来读数据。 + +7. Connection 解析读到的数据,生成请求对象并交给 Handler 组件去处理。 + +### 3.4. Handler 组件 + +Jetty 的 Handler 设计是它的一大特色,Jetty 本质就是一个 Handler 管理器,Jetty 本身就提供了一些默认 Handler 来实现 Servlet 容器的功能,你也可以定义自己的 Handler 来添加到 Jetty 中,这体现了“**微内核 + 插件**”的设计思想。 + +**Handler 就是一个接口,它有一堆实现类**,Jetty 的 Connector 组件调用这些接口来处理 Servlet 请求。 + +```java +public interface Handler extends LifeCycle, Destroyable +{ + // 处理请求的方法 + public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) + throws IOException, ServletException; + + // 每个 Handler 都关联一个 Server 组件,被 Server 管理 + public void setServer(Server server); + public Server getServer(); + + // 销毁方法相关的资源 + public void destroy(); +} +``` + +方法说明: + +- `Handler` 的 `handle` 方法跟 Tomcat 容器组件的 service 方法一样,它有 `ServletRequest` 和 `ServeletResponse` 两个参数。 +- 因为任何一个 `Handler` 都需要关联一个 `Server` 组件,`Handler` 需要被 `Server` 组件来管理。`Handler` 通过 `setServer` 和 `getServer` 方法绑定 `Server`。 +- `Handler` 会加载一些资源到内存,因此通过设置 `destroy` 方法来销毁。 + +#### Handler 继承关系 + +Handler 只是一个接口,完成具体功能的还是它的子类。那么 Handler 有哪些子类呢?它们的继承关系又是怎样的?这些子类是如何实现 Servlet 容器功能的呢? + +![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201118181025.png) + +在 AbstractHandler 之下有 AbstractHandlerContainer,为什么需要这个类呢?这其实是个过渡,为了实现链式调用,一个 Handler 内部必然要有其他 Handler 的引用,所以这个类的名字里才有 Container,意思就是这样的 Handler 里包含了其他 Handler 的引用。 + +HandlerWrapper 和 HandlerCollection 都是 Handler,但是这些 Handler 里还包括其他 Handler 的引用。不同的是,HandlerWrapper 只包含一个其他 Handler 的引用,而 HandlerCollection 中有一个 Handler 数组的引用。 + +HandlerWrapper 有两个子类:Server 和 ScopedHandler。 + +- Server 比较好理解,它本身是 Handler 模块的入口,必然要将请求传递给其他 Handler 来处理,为了触发其他 Handler 的调用,所以它是一个 HandlerWrapper。 +- ScopedHandler 也是一个比较重要的 Handler,实现了“具有上下文信息”的责任链调用。为什么我要强调“具有上下文信息”呢?那是因为 Servlet 规范规定 Servlet 在执行过程中是有上下文的。那么这些 Handler 在执行过程中如何访问这个上下文呢?这个上下文又存在什么地方呢?答案就是通过 ScopedHandler 来实现的。 + +HandlerCollection 其实维护了一个 Handler 数组。这是为了同时支持多个 Web 应用,如果每个 Web 应用有一个 Handler 入口,那么多个 Web 应用的 Handler 就成了一个数组,比如 Server 中就有一个 HandlerCollection,Server 会根据用户请求的 URL 从数组中选取相应的 Handler 来处理,就是选择特定的 Web 应用来处理请求。 + +Handler 可以分成三种类型: + +- 第一种是**协调 Handler**,这种 Handler 负责将请求路由到一组 Handler 中去,比如 HandlerCollection,它内部持有一个 Handler 数组,当请求到来时,它负责将请求转发到数组中的某一个 Handler。 +- 第二种是**过滤器 Handler**,这种 Handler 自己会处理请求,处理完了后再把请求转发到下一个 Handler,比如图上的 HandlerWrapper,它内部持有下一个 Handler 的引用。需要注意的是,所有继承了 HandlerWrapper 的 Handler 都具有了过滤器 Handler 的特征,比如 ContextHandler、SessionHandler 和 WebAppContext 等。 +- 第三种是**内容 Handler**,说白了就是这些 Handler 会真正调用 Servlet 来处理请求,生成响应的内容,比如 ServletHandler。如果浏览器请求的是一个静态资源,也有相应的 ResourceHandler 来处理这个请求,返回静态页面。 + +#### 实现 Servlet 规范 + +ServletHandler、ContextHandler 以及 WebAppContext 等,它们实现了 Servlet 规范。 + +Servlet 规范中有 Context、Servlet、Filter、Listener 和 Session 等,Jetty 要支持 Servlet 规范,就需要有相应的 Handler 来分别实现这些功能。因此,Jetty 设计了 3 个组件:ContextHandler、ServletHandler 和 SessionHandler 来实现 Servle 规范中规定的功能,而**WebAppContext 本身就是一个 ContextHandler**,另外它还负责管理 ServletHandler 和 SessionHandler。 + +ContextHandler 会创建并初始化 Servlet 规范里的 ServletContext 对象,同时 ContextHandler 还包含了一组能够让你的 Web 应用运行起来的 Handler,可以这样理解,Context 本身也是一种 Handler,它里面包含了其他的 Handler,这些 Handler 能处理某个特定 URL 下的请求。比如,ContextHandler 包含了一个或者多个 ServletHandler。 + +ServletHandler 实现了 Servlet 规范中的 Servlet、Filter 和 Listener 的功能。ServletHandler 依赖 FilterHolder、ServletHolder、ServletMapping、FilterMapping 这四大组件。FilterHolder 和 ServletHolder 分别是 Filter 和 Servlet 的包装类,每一个 Servlet 与路径的映射会被封装成 ServletMapping,而 Filter 与拦截 URL 的映射会被封装成 FilterMapping。 + +SessionHandler 用来管理 Session。除此之外 WebAppContext 还有一些通用功能的 Handler,比如 SecurityHandler 和 GzipHandler,同样从名字可以知道这些 Handler 的功能分别是安全控制和压缩 / 解压缩。 + +WebAppContext 会将这些 Handler 构建成一个执行链,通过这个链会最终调用到我们的业务 Servlet。 + +## 4. Jetty 的线程策略 + +### 4.1. 传统 Selector 编程模型 + +常规的 NIO 编程思路是,将 I/O 事件的侦测和请求的处理分别用不同的线程处理。具体过程是: + +启动一个线程,在一个死循环里不断地调用 select 方法,检测 Channel 的 I/O 状态,一旦 I/O 事件达到,比如数据就绪,就把该 I/O 事件以及一些数据包装成一个 Runnable,将 Runnable 放到新线程中去处理。 + +在这个过程中按照职责划分,有两个线程在干活,一个是 I/O 事件检测线程,另一个是 I/O 事件处理线程。这样的好处是它们互不干扰和阻塞对方。 + +### 4.2. Jetty 的 Selector 编程模型 + +将 I/O 事件检测和业务处理这两种工作分开的思路也有缺点:当 Selector 检测读就绪事件时,数据已经被拷贝到内核中的缓存了,同时 CPU 的缓存中也有这些数据了,我们知道 CPU 本身的缓存比内存快多了,这时当应用程序去读取这些数据时,如果用另一个线程去读,很有可能这个读线程使用另一个 CPU 核,而不是之前那个检测数据就绪的 CPU 核,这样 CPU 缓存中的数据就用不上了,并且线程切换也需要开销。 + +因此 Jetty 的 Connector 做了一个大胆尝试,那就是**把 I/O 事件的生产和消费放到同一个线程来处理**,如果这两个任务由同一个线程来执行,如果执行过程中线程不阻塞,操作系统会用同一个 CPU 核来执行这两个任务,这样就能利用 CPU 缓存了。 + +#### ManagedSelector + +ManagedSelector 的本质就是一个 Selector,负责 I/O 事件的检测和分发。为了方便使用,Jetty 在 Java 原生的 Selector 上做了一些扩展,就变成了 ManagedSelector,我们先来看看它有哪些成员变量: + +```java +public class ManagedSelector extends ContainerLifeCycle implements Dumpable +{ + // 原子变量,表明当前的 ManagedSelector 是否已经启动 + private final AtomicBoolean _started = new AtomicBoolean(false); + + // 表明是否阻塞在 select 调用上 + private boolean _selecting = false; + + // 管理器的引用,SelectorManager 管理若干 ManagedSelector 的生命周期 + private final SelectorManager _selectorManager; + + //ManagedSelector 不止一个,为它们每人分配一个 id + private final int _id; + + // 关键的执行策略,生产者和消费者是否在同一个线程处理由它决定 + private final ExecutionStrategy _strategy; + + //Java 原生的 Selector + private Selector _selector; + + //"Selector 更新任务 " 队列 + private Deque _updates = new ArrayDeque<>(); + private Deque _updateable = new ArrayDeque<>(); + + ... +} +``` + +这些成员变量中其他的都好理解,就是“Selector 更新任务”队列`_updates`和执行策略`_strategy`可能不是很直观。 + +#### SelectorUpdate 接口 + +为什么需要一个“Selector 更新任务”队列呢,对于 Selector 的用户来说,我们对 Selector 的操作无非是将 Channel 注册到 Selector 或者告诉 Selector 我对什么 I/O 事件感兴趣,那么这些操作其实就是对 Selector 状态的更新,Jetty 把这些操作抽象成 SelectorUpdate 接口。 + +``` +/** + * A selector update to be done when the selector has been woken. + */ +public interface SelectorUpdate +{ + void update(Selector selector); +} +``` + +这意味着如果你不能直接操作 ManageSelector 中的 Selector,而是需要向 ManagedSelector 提交一个任务类,这个类需要实现 SelectorUpdate 接口 update 方法,在 update 方法里定义你想要对 ManagedSelector 做的操作。 + +比如 Connector 中 Endpoint 组件对读就绪事件感兴趣,它就向 ManagedSelector 提交了一个内部任务类 ManagedSelector.SelectorUpdate: + +``` +_selector.submit(_updateKeyAction); +``` + +这个`_updateKeyAction`就是一个 SelectorUpdate 实例,它的 update 方法实现如下: + +``` +private final ManagedSelector.SelectorUpdate _updateKeyAction = new ManagedSelector.SelectorUpdate() +{ + @Override + public void update(Selector selector) + { + // 这里的 updateKey 其实就是调用了 SelectionKey.interestOps(OP_READ); + updateKey(); + } +}; +``` + +我们看到在 update 方法里,调用了 SelectionKey 类的 interestOps 方法,传入的参数是`OP_READ`,意思是现在我对这个 Channel 上的读就绪事件感兴趣了。 + +那谁来负责执行这些 update 方法呢,答案是 ManagedSelector 自己,它在一个死循环里拉取这些 SelectorUpdate 任务类逐个执行。 + +#### Selectable 接口 + +那 I/O 事件到达时,ManagedSelector 怎么知道应该调哪个函数来处理呢?其实也是通过一个任务类接口,这个接口就是 Selectable,它返回一个 Runnable,这个 Runnable 其实就是 I/O 事件就绪时相应的处理逻辑。 + +``` +public interface Selectable +{ + // 当某一个 Channel 的 I/O 事件就绪后,ManagedSelector 会调用的回调函数 + Runnable onSelected(); + + // 当所有事件处理完了之后 ManagedSelector 会调的回调函数,我们先忽略。 + void updateKey(); +} +``` + +ManagedSelector 在检测到某个 Channel 上的 I/O 事件就绪时,也就是说这个 Channel 被选中了,ManagedSelector 调用这个 Channel 所绑定的附件类的 onSelected 方法来拿到一个 Runnable。 + +这句话有点绕,其实就是 ManagedSelector 的使用者,比如 Endpoint 组件在向 ManagedSelector 注册读就绪事件时,同时也要告诉 ManagedSelector 在事件就绪时执行什么任务,具体来说就是传入一个附件类,这个附件类需要实现 Selectable 接口。ManagedSelector 通过调用这个 onSelected 拿到一个 Runnable,然后把 Runnable 扔给线程池去执行。 + +那 Endpoint 的 onSelected 是如何实现的呢? + +``` +@Override +public Runnable onSelected() +{ + int readyOps = _key.readyOps(); + + boolean fillable = (readyOps & SelectionKey.OP_READ) != 0; + boolean flushable = (readyOps & SelectionKey.OP_WRITE) != 0; + + // return task to complete the job + Runnable task= fillable + ? (flushable + ? _runCompleteWriteFillable + : _runFillable) + : (flushable + ? _runCompleteWrite + : null); + + return task; +} +``` + +上面的代码逻辑很简单,就是读事件到了就读,写事件到了就写。 + +#### ExecutionStrategy + +铺垫了这么多,终于要上主菜了。前面我主要介绍了 ManagedSelector 的使用者如何跟 ManagedSelector 交互,也就是如何注册 Channel 以及 I/O 事件,提供什么样的处理类来处理 I/O 事件,接下来我们来看看 ManagedSelector 是如何统一管理和维护用户注册的 Channel 集合。再回到今天开始的讨论,ManagedSelector 将 I/O 事件的生产和消费看作是生产者消费者模式,为了充分利用 CPU 缓存,生产和消费尽量放到同一个线程处理,那这是如何实现的呢?Jetty 定义了 ExecutionStrategy 接口: + +``` +public interface ExecutionStrategy +{ + // 只在 HTTP2 中用到,简单起见,我们先忽略这个方法。 + public void dispatch(); + + // 实现具体执行策略,任务生产出来后可能由当前线程执行,也可能由新线程来执行 + public void produce(); + + // 任务的生产委托给 Producer 内部接口, + public interface Producer + { + // 生产一个 Runnable(任务) + Runnable produce(); + } +} +``` + +我们看到 ExecutionStrategy 接口比较简单,它将具体任务的生产委托内部接口 Producer,而在自己的 produce 方法里来实现具体执行逻辑,**也就是生产出来的任务要么由当前线程执行,要么放到新线程中执行**。Jetty 提供了一些具体策略实现类:ProduceConsume、ProduceExecuteConsume、ExecuteProduceConsume 和 EatWhatYouKill。它们的区别是: + +- ProduceConsume:任务生产者自己依次生产和执行任务,对应到 NIO 通信模型就是用一个线程来侦测和处理一个 ManagedSelector 上所有的 I/O 事件,后面的 I/O 事件要等待前面的 I/O 事件处理完,效率明显不高。通过图来理解,图中绿色表示生产一个任务,蓝色表示执行这个任务。 + +![img](data:image/jpeg;base64,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) + +- ProduceExecuteConsume:任务生产者开启新线程来运行任务,这是典型的 I/O 事件侦测和处理用不同的线程来处理,缺点是不能利用 CPU 缓存,并且线程切换成本高。同样我们通过一张图来理解,图中的棕色表示线程切换。 + +![img](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAucAAAEHCAYAAAANq+jXAAAw4ElEQVR42u2dCZgU5bnve/aFGRhgANlhUBHEDUFRE5OggqCIAWVRNHn03KMm95rFx+O9yRVPuEZFwMQoKhCXaGLikqMHl4hLcIvBJUYMLiAiiAKyyirgdNd936634KOZHh2mu6e6+/d7nv/T1VXVVd90Vff86uu3qiIRAAAAAAAACD0FksIkKQphkrWRttP2r9v2IAV8/AEAACCMYh5ITLGkRFJqKQthgraVJAltp+2Ntb04QdoLkHQAAAAIm5gXm7yUS1pJqiTVktYhTbW1Udta6aSKttP2Rtqu7a4wYS9JEHQAAACAFpfzQMxVyqt+9f4ILxty03sjvBnvjPCmLzrdu/Gt4Z60vZa20/amxCS91D4D9J4DAABAi1NoYq69iNrr2S5bxGrGu74gTls43LvhjWEqWj1pO21vopy3NkEvidB7DgAAACGScy1LaCvpkm2SOPXNYd4vF5ymojWAttP2Jsp5h4hf6qIHp0XIOQAAAIRBzvVnfe017yipyyZJnLbw9Hjv7ZSXT1HROpG20/Ymynk3OyitsINU5BwAAABaFO0t1F7DNpIukn5ZI4nvjIiXVlz32jDvP18YqqJ1Gm2n7U2U87qI33uuJ4kGpS0AAAAALSrneiJojaSH5MhskkQ9IfGXr57qTX4uLomjaDttb6Kc95UcFPFLW5BzAAAACI2ct5P0lAzMNkm89u+neZOf/baK1ljaTtubKOf9I/4vRirnpcg5AAAAhEnOe0mOzUZJvNqXxHG0nbY3Uc4HSLpG/Ku2IOcAAAAQGjlvL+ktGZR9kniqd/Uz31HRGk/baTtyDgAAAMg5kkjbkXMAAAAA5BzBpe3IOQAAACDnSCJtR84BAAAAkHMEl7Yj5wAAAICcI4m0HTkHAAAAQM4RXNqOnAMAAABy/jXz6Y73vER2Rbd7n25/z/vrZ7MafM2jK6d4n2x/1/v9Rz9qUUlsStt//f6Z3svr7vPW7fzI21m/Pd7+uZ9clxVtv23JeO9fn8/ztuxe531Rv9Vbtu0N7/6PfpIVbXfz35/8v/j7Pv+z2cg5AADkHwUFBSuKi4u9RvKazHa5DsvjsDC0ubCw8BfWnkEJkypk/PPyeGU63qoszH5yftN7zROtZdte9xZtfjaexVteFoHdFh+/YP2D+wiuCtb2LzfFpz204v+EQs6/Ttv/9fnT8XErti30/rnpcW/r7g3x53M/+WWo267v+WdfLI2Pe1+mL9n6ilcf2y0y/IV3z4eXhP59D3LHB+d5O778PD79zY1zD2i9uo9rksh5ASGEEJLipFx0ZxYVFT2oEVFfZEL+ejBOpl+XBXKub8wR0t6ndLz+TWmU80JLUUKKQ5SgTSWSSkmtpC4Vcp7YE3v3h//Di8Vi8R5RFcS/Sm+nSqFLWOT8q9oePFcxD+a5a9m/ybhovLc3zG3X3n3l9Q3/tWeeF9feEx/38rp7Q912d5oeVGzevTZVcn6EpJukxg5Si0P4WSWEEJIdSfS+Qidp5WqVW5HcixLGh1rO5aBiidvbnwY5L3CEvNikt8z+4WsqQppK6zU8SHKI5LgZ7/rikirR0gS9y7OXXuA9svIXe3pJg/FhlfPEtj+5anp8+Lk1d+wzz7YvN8Z/BQhz219Z94d4j/Qfl1+xZ/qfP54cn/7K+vtD3fZg3BOfTosf2OmvLgcq57pv6z6uf4e0/ShJTzs4rQ7x55QQQkj2pNwcsMSR9rRKeqNyLuMvlDwqMrxBHp+U8aMcYZ4teUAGT5Xpi2X+l23SUBl+ScZt1hKZBpY9RsfL9G06jy23nzO9VpZ7r0xbr+uV4VmSaQk95/9Xxt0kr30kDXKeKOZltnGqTHzbWM9c2BK0q9Z6D/tKjldpORBBTyZat38wwYvG6uM9ob9ZfPY+0z7a/mao5Tyx7Sq2L0kv8z0fXrZnnjlLL4y/dvWOJaFue+LrVHo/3vF2fB5X2MPadm2v1snrQYb+WnEgcu6K+fRFp2vbj5H0kXS20q4aQgghpJlu1docsNKR9KIWk3OR401W5jJZhteqMFstZ0RlXJ6vkmyV4Rdlvina0y7Po7K8eTJ8qYy736T6p7bcITpd8q4MX6HjZXidyn2wYq0hN+G+T2vJtZdcsjNJzfnINMp5IOatJF6W5sTpb58el5cDlXMtlZj7yfXxPL36Zqlz/jA+funWV/d7TdjkvCltD+q4tV5aeXr1rVnT9nc3z99TUqS90dnwvuv7vH7nxyLrZzVbzlXMpy0crm0fnMWfVUIIIdmRQNALnXObMifnWk7i9JRPMUE+M5Bzez7ZOdn0La1jtyOKOFoXLuM22lHHCFnOHfJ4pLPce2w5+jP0EFvv792qFj0IyKCcFzr12xV2xJStO9A3VFpUXlRimnvljQDtVdYe5rDLeVPafvsHE73l2/8Zn+e9LS/IuDOypu1PrpoRv2qLluLoyZUPf/yzULd93upfx3vR/7T8yj11/gci53t6zeUA9MZ/xuX8eP5pEEIISXMqraO6qEXkXOXXkexzbd7vJ8h5jc3SSiQ6pr3iIsu3BJF5Fth8A22+bro+mXajPD4h89fb9Dby/GIbPjuh5vzOFpDzUus117+vk6S7nWSptdyHhTCHWtv0sb/9xH+yildz5PxVucKG9iJrHv90qve7jy7b76S+sMr51237/ct/Eq+JVmF8bcOfk/59YWy7mzlLvxev4V6x7a1Qt10PIvTSiX/++Op4VNaVD7YuiD9vqpxPW3i6N/Ufw7TtJ1jdeT8r6zo0pJ9VQggh4U/wf6TOHFDP52tnnc1lVmHRInI+rDE515IW5zUdrBTmbZHlGYmxWtAxKuOShTJuqixrkuTxQM4ll9nw8IT2XIOct4ycN+W62WGvOW8ov1v2g3jtswqjnlDZ0jfy+bptf0dKWdbtXBHv8XfH6/XaVdC/7gFGS7RdryffGF+77cg5IYSQzMh5j2yS8837FGtLTbpzYmjAKZIf6dmuMu0FrWO3PypY7mOOnA812b7WXYDMM78Fy1ra2EmWnU3Qe9mG6hOiaHt6O23ra6VDzS5ryWU5v3XJGLkyy4a4mN/54UWhuMvm1217cH32xz+9cc+43374/Xjv/9bd60Pddi1neXDF/96T4Ko5ellFfd6MspYhEf9a54c4n4mwfVYJIYRkR+rMq9T9umgntDlhK+vAzQ45F35usny9lrHovDLPdrtRkC7jGe051x5zeXq4rkee77Z1nWT15YskO2T4EpVxvSpLcMnEFjwhtI1d/aGjHTl1tg0VlnR22tXVpETf35OCE0KR8/2jl4FUNuxcKT3Rz+2ThZueDHXb/yB3YVUR117oNzY+Gr/e/NovPoq/9m9yBZSw/2LhJsUnhGpvR0/7HHQO4WeVEEJIdiRwq46RvVcA017z8si+V2wJvZyXiCjfION3BUKtJ4TaH6YMlmmfBNOsvGWaDa+0eerk+avOPIu1BKYF5DzZpRTdS+y0DUnc9tTaUZ72ng8Jes1TdSnFXJLzf4gMJkNLXcIuuI9JPXdwV1ZF7w7qi/kZeSXnjVxKsW0IP6uEEEKyI8H/D/dSiuUJJ4OmRc7TRYnVfXZsZFpnZ1xv6+lyqbXxLUFO3YToQG9ElMmkUhLzre1azqJ34bz5/VF59b5zEyJCCCGRzN2EKChlSftNiOCrBb3QEfWiSHhvBx7UyVdaXZTWSg0Obm2O4NL2XJRzV9Cl7UdE/Btw1diXKbefJoQQ0ly3cpN1veXQ8hSZlLS3Xx0GIYm0PdflPIidDNrVfj0qpVcDAAAAkHMEl7Yj5wAAAADIOW1HzpFzAAAAQM4RXNqOnAMAAAAg57QdOUfOAQAAADlHEmk7cg4AAACAnNN22o6cAwAAAHKOJNJ25BwAAADggOX82CyWxHG0nbYj5wAAAJALct5O0ksyMPsk8TTv6me/raJ1Dm2n7U2U88ORcwAAAAijnLeV9JQcnW2S+MsFp3mTfUn8Lm2n7U2U836SzpJq5BwAAADCIudlkjaSbpIB2SSJ0xYO9657bZh3zfx4ecUZtJ22N1HOD5V0klQh5wAAABAmOdef9Q8yWRkkOUUyWjJOcp7kghBlkmSi5FzJKMlwyVDJd6zdIyVjJONpO21PaPtYyQjJNyVHRfxSrlpJpaQEOQcAAIAwyLlKSauIf1JoD0l/yWDJyZLTJKdLzghRRpoYnmptPMHaqwcVx0u+YcI4jLbT9oS268HESZJjJIdIukhqJBWSYuQcAAAAWppCkxKtO9fSlo4Rv/a8r+QIyUATsONClkEmWEfawcRh1matIdYrcBxF22l7A20/OuKfBHpwxD8RVA9ItaSlzA5UC/hKAAAAgJaW86D3vMIEXX/m1x5F7UXXyyv2MZkJS7Q9ddY2bWM3a29XS3c7wKDttD2x7b2s3VrCpVcoqrYD06DXHDkHAACAFqUgsrf3vNQEvcokXa/g0t5kXdMhRKk1uWpn7axx0tbG03ba3lDbtZ16jkUrE/MSO0ClpAUAAABCQWFkbw+6SnqZSYumMsSpsMegrWU2roK20/ZG2l5hbS61/T0Qc3rNAQAAIDQUJEh6IOphj9vWxEfaTtsba3uRs88DAAAAhFLQCcnHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAEFlsIkKWpmki0rlevIhSR739ke7BcNpYCvLgAAgNwWcxWBYkmJpdRS1syUJqSkgXFleR73vXC3QUkD7xnbIz/3jRLbN1xpR9ABAAByTMoL7B99IGjlkkpJtaV1ClLtpJWTVK4jFxK8P1UW971qnebtUcX2yIp9o8KEvQRBBwAAyE05L7R/9CrlrdbMO9zLRMbP2eZN+O0X3sS7dnkT7/7SO++e+ryOvgfx3LU7/r7o+yPbo5btQRqKSXog6Mg5AABADsl5sfXEac9pu0zJ4Lg7PvcmzNnuTbhzZ1xIkXNfzvX90PdF3x/ZHr3ZHiSJnFeboBfbATYAAADkgJwHveZaxtJO0iVTMjj21s+8cbM2W28tMrhPr/msLfH3R7bHUWwPkkTOa+2AutTpPacHHQAAIMvlvMj+uWsvXCdJXaZkcMzNK71zb98Y762llCKQ810ixzvkfdkk788nKmDfYHuQJHLeRVIT8cvRipFzAACA3JFz/efeRtJV0j9TMnj2jGXeOTPX+rXOWkqBnMelWN+Pc27b4H33V8tVwEawPUgSOe8paW+/eiHnAAAAOSbnbe2ffcbKKEZP/0BKKdZ442dvRQYT5VwkefT0pSpg32V7kCRy3kfSweS8BDkHAADIHTnXk8q03ry3ZGCmZPCsG9/3xt6yOl5fjQw6ci5yrPXfo6ctUQEbx/YgSeT8EEnHiH95ReQcAAAgh+Rce9705/E6yaBMyeCoqe95Y3+zyj8JERncK+fxk0HXiCwvVgGbyPYgSeS8b8Q/T6QKOQcAAEDOmy+DNyCDoZJztgdyDgAAAMg5MoicE+QcAAAAkHPknO2BnAMAAAByjgwi5wQ5BwAAAOQcOWd7IOcAAACAnCODyDlBzgEAAAA5R87ZHsg5AAAAIOdhksHFa2NeIrFYzNuw3fMWLI95Vzwa3e81F99f772zJubd+3oMOQ9hmrpN71wQ85ZvjHlffBnzPpLHWX+PIucAAGBWVFCwori42Gskr8lsl+uwPA4LQ5sLCwt/Ye0Z5IweXFRUNF/+ns8li2We6+wfRSoFkqQveSfn/1jpefOXxuJ58cOYt2KTP36jCJ3KeDC/it3bq3zhm/c+ch5mOf862/SPb/rjPlwf855eHPM27fC37d2vxXJNzgkhJN+SMtGdKVL7oEakdpEJ+evBOJPcsMt5nbR9l2S5TpN2P63TZfimNMh5oaUoIcWkSWno/WuVT3L+s8f37S09X/LBOn/a9PlR7389XO9t371vjyxyHm45/6pt+r376r2d0lu+arPnXXivP8+P/ysan6496Vku59WSUr4bCSF54i1FjhOm9RfDq1VqRW4vShgfajmX5zfb88HBLCLq70i2pOjNKnCEvNh6h8ok5ZYKcsApd97L1pIOkj75KOea55b402b+Lepd+kC999cPYvG8/1kMOc9COU/cpv8xN+pt2xXzHv1XdB+B14OwlZ9nrZwfJuksaWOfab4bCSH54i4lliJH0jMr5zL+QsmjIr0b5PFJGT/KEebZkgdk8FQtK5H5X7ZJQ2X4JRm3WUtkGlj2GB0v07fpPLbcfs70WlnuvTJtva5XhmdJprlyLsOvyLS1CQL/R5unJsViXmYbpspkso2tgzQ9bew9rLb3s631wB2sB1qrn+qfdz3n67f5PeRXzd132u2vRJHzLO05T7ZNNdqT/qd/+q91hT3L5Fy/r7tI2jmfZb4bCSG57i5VTodEWgW9UTkXAd5kZS6TVYZVmO1nTBXkl+X5KslWGX5R5puiPe3yPCrLmyfDl8q4+02Yf2rLHaLTJe/K8BU6XobXqdwHK5b5n7cSlfvk6ZUybYlkZ0JZy2mSU5z2lss8KyWrU9hrHoi5ll54JG3Rf/KHSo7LdTl/aVnMm/tONB6tPdaTB5VnFu8v4Mh5dsh5U7aplrnUR/3X6Umj52fvCaH9Jd0lHfn+IoTkacrMEzMv51pO4vRMTzFBPjOQc3s+2TnZ9C2tY7ejiTiy7Kdk3EY74hghy7lDHo90lnuPLUd7YIbYen/vdorrQUADJ4QGVMo6HrG/4+JUVNFY+0vsCKk1O2Fa091+Jj9+1V/6583VWgL05MDJf4ki5zlwtZav2qZa4vKYSPyyDTEvKld2+fPCrC1rOVzS00pb+A4jhORjKpxzbjIr5/I40pHsc23e7yfIeVBG0kokOqa94iLXtwSReRbYfANtvm66Ppl2ozw+IfPX2/Q2Ktc2fHZCycqdSeR8oK5Pl+H0zqdKzkut17zGSi+624mLh5hMkqbnUKsv13/sXXVfsOG8kPMp8/xLJGp++FB9/DKJypadsXi5A3KefXLelG0aZNLv6uNX49FLL/77n7JSzgdIettnuCvfjYSQHE5f+26rs++6TlaS28o8sbgl5HxYY3KuJS3OazpYKczbItMzEmNSNkZFWrJQxk2VZU2SPB7IueQyGx6e0J5rGpDz07XcRcteZPjEVJ5/ipwj55k6eXCJXdnjqseoOc+VE0Ldbfqbl6Lex3J5RX105wkurzhtfhQ5J4QQ5Dylcr55n2JtqUl3TgwN0NrwH2lduEx7QevYrVYnWO5jjpwPtbKWa90F6PXME+T8ZFnOF3qyasS/VnYkDXIelLVou2rtJ1zdML1sI/UhTUqd/UPvYf/QD3Le07yV8+DKHtc/i5zn2tVadJv+8hl/Oy5YEWvw9T9/IprNZS1dEj7HfDcSQnLRXXrZd1xn88HW5p4tVtbSJDkXfm5yfb2WnOi8Ms92PcnTlvGM9pxrj7l9wV8uz3fbuk6y+vJFkh0yfInKuF67PLhBUiDn8vqHbD0zdV1urLY91SeEqqC3txOggn9GXUiT0tneu062c+uVHjqYqMdPCM1HOZ+7KLrnsnvIeW7IubtNtYRFL5moJSxvrIx5t8l2fWW5/1qtPb/g3qw/IbQ9342EkDxwl+D7ro15YcudEHoAcl4ignyD3iAoEGo9IdT+KGWwTPskmGblLdNseKXNUyfPX3Xm0bt/TnXkvEhPME12h1NnXc2V82SXUnQvr9OWfO24lySqtrS1nV5/Msq7Sylq5vzdFzkVNuQ8N+Q8cZv++JHonuvWB2hP+g8erM+1Syny3UgIycVk/FKK6aLEvsA7NjKtszMuqF90qbXxLQE3Icr8TYhyVs7DHuQ8M9GTRq/876h30R+y+++IcBMiQgg3Ico6Mc8VAkEvdESd21On7la4JfbTUK3VdA1CBpFztkdWyHlf+8Wr2qm55LuREJLr3lLkOGEBYg65eOBTZCdUtEfOkXO2R9bJeSf7ibeEf1IAAADIOTKInBPkHAAAAJBz5JztgZwj5wAAAMg5MoicE+QcAAAAkHPknO1BkHMAAADkHBlEzglyDgAAAMg5cs72IMg5AAAAco4MIudIMHIOAAAAyDlyjpwT5BwAACB/5VxvidtO0ltybMZkcKrI4C2rkcFEOZ+9VeT8M2/0tCUqYOPZHiSJnB8q6Rjx7/CLnAMAAOSgnPeUHJMpGdSeYZVB7SlGBhuQ8+lLVcDOYXuQJHJ+MHIOAACQm3JeLqmRdJcMyJQMqnyqhKqMIoOOnM/Z5p1z2zrv7BnLVMBGsT1IEjnXX7q0HK0SOQcAAMgtOS+TtJZ0jvg/lQ+WnCI5SzJOcr7kgmZEXz9Be4EloyVnSE6XjLTn59j085q5nmzOJMlEe7/1PRkhOU0yVDLM3rMxkvFp2B5n2vY4w56fa205P4+3R9j2Dd3u37V94URJf0k3SduI/8tXMXIOAACQG3JeKCmN+CeV1Ub80hb9x3+c5GTJqSaKI03eDiQjTP50Wd+SfENykj1+y8YPdwQxHzPC3gN9L75t783xlhMk35R8x4Q9ldsjWNc3bB3ftvGn23xnkFDsG8Ns+w+RHBnxT97uZAfVZXaQDQAAADki59rrpr1vbSJ+DasKul4J4gjJwIjfk35cM6KvH2TLOtIywJZ/lI0flIL1ZHPc9+goe3/0IKmfPep7dbTk2BRvj6MStsfRzjbP5+0Rtn3jWNtW/UzM9Vcu7TWvtIPrQr7OAAAAckPOg9KWUvtHr4LeQdJF0iPi17X2sRx8gOljQqHL6hXxa9t72EFAT5tW18x1ZHuC96iXvSf6HmnZQteE9ysd26OHs/xebI9Q7hu9bft0tQNoFXM9EbTMDq6RcwAAgBwi6D1XQdce9CqTdL2CS3uT9eak1tLe0s7koq0Nt3Pm6ZDHqXXeD31vapy0dd6/dG+P9myP0O4bui9U2+fUFXNqzQEAAHJMzjXag15ikl5uAqCpTGEqEpabjnXkQsoTUpHB7cH7H85U2L5QZp/TYuezCwAAADlGQYKkBylOcYqSPJKvfp/YHiTYD4LPKj3mAAAAOS7ohJDsCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5CQFlsIkKWpmki0rlesg2Z9k+18BH1EAAADIRzFXQSqWlFhKLWXNTGkDKUvh8kn2x903Smw/LELQAQAAIN+kvMAkKJDxckmlpNrSOgWpThhO1XJJbkX3iyrb/8ptfyxG0AEAACCf5LzQxFxlqNWaeYd7mcj4Odu8Cb/9wpt41y5v4t1feufdU0/IPtH9MeL3qhcj5wAAAJAvcl5sAqQ9lu0yJefj7vjcmzBnuzfhzp0i6LuRUdKQnLc1Qdce9KDEBQAAACBn5TzoNdcygnaSLpmS87G3fuaNm7XZes+Rc9KgnHeW1EgqInt7zwEAAAByVs61N1J7JbXWt5OkLlNyPubmld65t2+M955T2kKSyHlvSYeI33tegpwDAABAPsi51pq3kXSV9M+UnJ89Y5l3zsy1fu25lrYg52R/Oe8b8XvPW9tBJHIOAAAAeSHnWtvbU3JUpuR89PQPpLRljTd+9lbknCST8wGSbnbwWIacAwAAQD7Iudbzar25lhAMzJScn3Xj+97YW1Z742dtQc5JMjk/WtI94tedl9v+CgAAAJDTcq4ng7aX1EkGZUrOR019zxv7m1X+SaHIOWlYzo+J+L/otEXOAQAAADlPp5zfgJyTr5Tzgcg5AAAAIOfIOUHOAQAAAJBzQpBzAAAAQM6Rc4KcAwAAACDnyDlBzgEAAAA5R84Jcg4AAACAnCPnBDkHAAAAQM4znsVrY14isVjM27Dd8xYsj3lXPBrdZ/5rn6733lkT87btinkrN8W8R96Oehfei5wj5wAAuWIgBQUriouLvUbymsx2uQ7L47AwtLmwsPAX1p5BwbiioqIJ8re8JdkuWSTP/y0NskbyK8h5BuX8Hys9b/7SWDwvfhjzVmzyx28USb/4fn/e65+NxsV9zRbPe/K9mLfEXvvSslheibnuD0nknM8tIYS0XFImujNFZB/UqNSakL8ejJPp12WBnI/Q59L+N7W98rhMn0v7z0+DnBdaihJSTLI+idu0RNJKUoucp1/Of/b4vj3k50s+WOdPmz7fn7ZsQ8z7MhrzfvCgP8+k3+2d54cP5aWc95K0s4PIEr6TCCEko55Q6KQgXd57tUntRQnjQy3n0t6/ipBvsx4kpb/9HX9OoZgXOv/w9J9gmfVWaSpITqXc2b6tJR0kfSSDkfPMybnmuSX+tJl/i3rfu68+Pvzumn17yZ9415/nmr9E80bMJ961O/j+q7P9s7UJOp9fQghJvyMEnlDqSHvaBL1ROZfxF0oeFRHeII9PyvhRjjDPljwgg6fK9MUy/8s2aagMvyTjNmuJTAPLHqPjVa51HltuP2d6rSz3Xpm2Xtcrw7Mk01w5l+G/ybi7ndeUy7y7ZVkPp0HMy2zjVNk/xDaSGpJT0e1abdEDvoMkhyDnme85X7/Nr0G/am40Xtryxzdj3ozn953v/c/81//Ph/NAyk3MJ961S7//jrP9srOVXtXwfUQIIRn1hEoT9ZJ0Cnqjci7Cu8nKXCbL8FoVZjtqUEF+WZ6vkmyV4Rdlvina0y7Po7K8eTJ8qYy736T6p7bcITpd8q4MX6HjZXidyn2wYpn/eX2NvPY+eXqlTFsi2ZlYc25oCcK3tcdc55HhkSmU80DMdR0eyat0lfRVGULO0yfnWjc+951oPE8v9k8IVZ5ZnLye/LZXovF5Fq7y8qPH3ORc9wnZH4+XHMbnkxBCWjyuoGdWzrWcxOkpn2KCfGYg5/Z8snOyqZ6guSjiXEVAlv2UjNtoPc8jZDl3yOORznLvseXoEckQW+/v3aoWPQhIIuffCk5k1Xp5e7OaXUXj1B9X2NESO2J+pYdJ0PHIeWau1hKwaYfnTU5SrqK96Hpy6DrpXQ9q0PNDznd5E367Q/fLEySH8/kkhJAWT6VT4lKY6ZrzkY5kn2vzfj9BzmuCXmyR6Jj2iotc3xJE5llg8w20+brp+mTajfL4hMxfb9PbyPOLbfjshJrzO5PIub4xddom7cGXx2dTKOel1muuf18nSXer9zzExI3kRg61+nK9CkY32849rdQKOU+jnE+ZVx8vXdHoyZ33vu6P37IzFq83D+a/6A/13j8/9eVdX3vZg/lzEmiCnJ8oOcL22YMth9ivPHyWCSEk/Z5wkJ2UX2Udwi0i58Mak3MVYuc1HawU5m2R6RmJsT9sjMq4ZKGMmyrLmiR5PJBzyWU2PDyhPdc4cq61lv8hOSVB4GdryYxNR84Jcp6FJ4QusSuxXPWYP+1CkfS3V/nXQX94YSx+tZZ8ukILck4IIch5U+V88z7F2lKT7pwYGqAS/SP9I2TaC1rHbrXcwXIfc+R8qJW1XOsuQOaZ78h5vIfersfe0DwHpbisRdtVaydhqbj1MknvQ7I+uh172weuq+07XShrafmrtej1zfe5estL0by6rvlXlLX0se+hnnwfEUJI2j2hl3mB+kEH67StNJcNv5wLPze5vl7LWKzcZLue5GnLeEZ7zrXH3P7JXK5XWbF1nWT15YskO2T4EpVxWdZNQV15ZO+lFB9WQderusjT0fJ4s7VtfppOCG1jPfIdTeA620Yi2Z+D7JeRWmcbc0JoC8n53EXRPZdS1F7yHbtj3q76mPf80v2TeCfRPDohtKftu534PiKEkLSms+MJwVWyqiL7X7El1HJeIqJ8g4zf5Zyo+ZQJjzJYpn0STLPylmk2vNLmqZPnrzrzLNYSmISa8w56iUdnnpg8f8iOaFIl58kupeheWqctyfokXkqxXYRLKbaYnM/5uy/nryyPeZOfjHqNoTXrXEpxz6UU+SwTQkjq/SDZpRTdk0HTdjOiVFNiNbsdG5nW2RnX23orXWptfGNUWw98dYrbz02IuAkRNyEiYbwJUZ8INyEihJCWvAlR4jXOs0bOc4FA0AsdUec22bl9a94SK2OqtTqzQcg5CYugR/wrXvWyX3cqnX8QfCcRQkhmPKHI8ULEHCADB2NFJj3tkXMStpic97SfW8sjzv0kAAAAAJBz5Jwg5wAAAADIOUHOkXMAAABAzpFzgpwDAAAAIOcEOUfOAQAAADlHzglyDgAAAICcE4KcAwAAAHKOnBPkHAAAAAA5R85JEjk/BjkHAACAfJNzvVWv3oGxt+TYjMn5VJHzW1Yj56QxOT9a0sPkvAw5BwAAgHySc+2hPCZTcn7WjYvjcj5+1hbknCST8yMl3SU1yDkAAADki5yXm/yoBA3IlJyPnr7UG3vrZ9742VuRc5JMzvtLukham5wX8rEFAACAXJfzMpOfzpJDJYMlp0jOkoyTnC+5oBmZZMuYaMs7VzLWhsfbtEnNXAfJ/pxn+8YoyXckx0oOlnSSVEtKkXMAAADIdTkvNOmpktRG/NIW7a08TnKy5FTJCMlIyRkHmJGW0yWn2TI1wyTDneU3Zx0kuxPsH7pffFMySHJYxP81R0uu9KTlEuQcAAAA8kHOiyN+3XkbSUcT9L6SIyL+pewGm6w3N7qcY+1xkCVY9vEpWgfJ3ui+cIztd/oLjp4I2iGyt6SlGDkHAACAXJfzoLRFe88rTdBViLqYHOkVXPpYDm5G+jipsyQut7nrINmdOtvfdL/TEqtaE3M9cCyx/RQ5BwAAgJwn6D0vNRGqMknXcoL2JuvNSW2ScW46kLxOsB/o/tbWpFz3w3LbLwMxL+DjCgAAAPkg54UmQCUmQ+Um6prKFKdVwiMhbsodKS92xJxecwAAAMgbChIkPUhxGlLiDKdrHSS74wo5PeYAAACQt4JOSBgDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAcUSAqTpKiZSba8VK8njEn2nhZYAAAAAAAaFPNAKIslJZJSS1kzEyynJGG4JMXrCWPcv7U4QdoRdAAAAABIKubFJpPlklaSKkm1pHUKU23LdZefjvWEKcHfWGnCHog6gg4AAAAA+8l5IOYq5VVr5h3uZSLj52zzJvz2C2/iXbu9iXd/6Z13T31exCS9NEHQAQAAAADicqiSqD262rvbLlNyPu6Oz70Jc7Z7E+7cmW9y3sYR9KDEBQAAAABgj5yrLLaVdMmUnI+99TNv/Kwt1nu+K5/kvFPEL3cpj+ztPQcAAAAAiIuh9uBqr3lHSV2m5HzMzZ94596+UeR8R77JeXdJezsgKkHOAQAAACBAyyq0pEVLLbpI+mVKzr/7q+XeObeti9ee55mc97EDoSrkHAAAAAAS5VzLK2okPSRHZkrOR09f6p0zc61/YqjUneeRnPeVdI74V3EJ6s4BAAAAAPZcpaWdpKdkYMbkfNoSqTtf49ed55ec94/4v1Jo3XkZcg4AAAAADcl5L8mxmZLzs25cnK9yfrika8QvJULOAQAAAGA/OdcTFHtLBiHnaZfzAcg5AAAAACDnyDkAAAAAIOfIOXIOAAAAAMg5cg4AAAAAyDlyjpwDAAAAAHKOnAMAAAAAco6cI+cAAAAAgJxbFq+NeYnEYjFvw3bPW7A85l3xaLTB1/37n+q9f62OeW+sjCHnAJB7FBQUrCguLvYayWsy2+U6LI/DwtDmwsLCX1h7BjUwuaNMe0nm+X2q3ypCCGnB5Kyc/2Ol581fGovnxQ9j3opN/viNIukX37//615Z7k/ftMNrCTlnXySEuEmL6M4sKip6UCOivsiE/PVgnEy/LpvkXNr8qE6Tv+WtNMl5oaUoIcWEEJLiuN8xpZJKSa2kLpfk/GeP79tDfr7kg3X+tOnz95326xej3q4vY97nX2RUzmvswKiY731C8vp7uDAhBZnw3qtVbEVwL0oYnxVyLu2+UKR8h2RNiuW8wBFy3VAl1otSbqkghJA0ptzEvFrSSdJHMjhX5Vzz3BJ/2sy/7Z126QP13padMe8Pb8S8ZRtiaZXziXd/qf9jjpB0l7STtHK+8/neJyT/voPLzf1KHXHPiKQ3Kucqv9ozLeK7QR6flPGjHGGeLXlABk+V6Ytl/pdt0lAtM5Fxm7VEpoFlj9HxMn2bzmPL7edMr5Xl3ivT1ut6ZXiWZFoDct5dpn8ujz+WxzdTKOeJYl5mG6pK0tp+7qwhhJA0prU9qiR2kRwqOT6Xe87Xb/Nr0K+au3fa6x/HvI82xrxJv6tPq5yrmE+8a7f+jzlS0kPSwb7rW/O9T0hefw9XOwfqpY6gt5yci/BusjKXyTK8VoXZGhdRGZfnqyRbZfhFmW+K9rTL86gsb54MXyrj7jep/qktd4hOl7wrw1foeBlep3IfrFjmf15fI6+9T55eKdOWSHYmyHmBrOMZOyAoTJOcB2KuG8UjhJAWTF/9/swVOX9pWcyb+040nqcX+yeEKs8s3nvC58yXol5UThYNRD5Dcn6UpJfkIPY5QkhCMibojcq5lpM4PeVTTJDPDOTcnk/eY7UiyFrHHnHOcJdlPyXjNlrP8whZzh3WOxEs9x5bjh6dDLH1uid3qnyvSpDzH2o5izweYutNpZwHveYl1mPemh2SENLCOVxyQi5erSVAxXvyX3wR/+FD9d62XTHvsXf29qKnVc5FzCfetUvf56OthKgr+xwhJCGtnHNRWk7O5XGkI9nn2rzfT5DzGpullQhyTHvFRa5vCSLzLLD5Btp83XR9Mu1GeXxC5q+36W3k+cU2fHZCzfmdjpz3ltdsl8efOAcF6ZDzUtsQNVbz2d1OytIDgsMIISRNOdQEUb9vett3jp6oeGKuyPmUefXxq7JoVMTvfd0fr/Xl37uv3nvi3Vj8JNAZz0e9a5+pj2fNFs/bKtN1WGvR0yznWtrSzR6DbdCXfZOQvPse7mmlhbXWiVxhnbdFLSnnwxqTcy1pcV7TwUph3haZnpEY+yPHqIxLFsq4qbKsSZLHAzmXXGbDwxPac40j52fZepZayUu87MWyxNaDnBNCkPMsOiF0iV2t5arHot6zS5L3sCu/eiGKnBNC0v09fHCCnLfOFjnfvE+xttSkOyeGBpwi+ZH+FCDTXtA6dqvlDpb7mCPnQ62s5Vp3ATLPfEfO+2q5jRtZ5mq9YouV4XRIcVlLG9sonU3Qe9k/zT6EEJLiBELewxJ0CuRUWUtjV2u5/tmo9+NHot5/PrVvVm32e851+JI/pb3nvJt953dN+N7nu5+Q3P8Odr+Hu1oHbVsrz3YvsZodci783OT6ei1j0Xm1BEVP8rRlPKM959pjbv9sLpfnu21dJ1l9+SKrJ79EZVyWdVNwg6RIwzchimTghFAVdL0RSEc7UaizHUkRQkiqc5D9MwjS03pyhuSynM9dFN3vUopuWuCE0FoL3/uE5O/3cK2JuZa0VIbihNADkPMSkekbZPyuQKj1hFD7clMGy7RPgmlW3jLNhlfaPHXy/FVnnsVaAtMCcp7sUoruZXbaEkJIipN3l1LUzPm7L+d6N9AWlPOvcylF9lFCcvv7N0ibyN5LKVY4Yl4UyeANiVKJloT0c6S8oWmdnXG97acDl1ob3xJwEyJCCDchSrGchzlJbkJUwfc+IXl/I6JS88CM3YQIvlrQCx1R5xbOhJBM3Tq61AS91mogByHn6U3EP/G2m/WalSdsD/ZNQvLve7gowQURcwCAPKbYBLG9/YqInGdGzrvaz9llEeeeHQAAAACAnCPnyDkAAAAAIOfIOXIOAAAAAMg5cg4AAAAAyDlyjpwDAAAAAHKOnAMAAAAAco6cI+cAAAAAgJwj5wAAAACQpXJ+LHKOnAMAAABAy8q53kq+l2RgpuR89LQlvpzP3ppvcn44cg4AAAAAjcl5W0lPydEZk/PpS0XOP4vL+cS7duWTnPeTdJG0lpQi5wAAAAAQoGKovbfai9tNMiBTcn72jGXeOTPXeuPnbMs3OT9E0klSjZwDAAAAQENyrr24B0kOlQySnCIZLRknOU9yQTNyvmS8ZIxklOR0yTDJcHs+1qY3dz1hyyTJBPu7R0i+KTky4pcP1UpaSUokheyGAAAAABDIeYmJop4U2kPSXzJYcrLkNJPpMw4wI01MVcSH2jJPlJxgjyfb+GHNXE8Y4/7d+rceHfF7zbWkpUZSgZwDAAAAgIuKYVB3rqUtHSN+7XlfyRGSgSbqxzUj+vpjTU6153iAHQAMsOdH2/TmrieMGWR/n54E2ifinwiqB0FVkb0lLcg5AAAAAOyR86D3vMIEXUsutHdXe9F7m1QefIDpY6mL+OUcuszuTnra+LpmrieMcf9urefXOnO9Kk61HQwVI+cAAAAA4FIQ2dt7XmqCXmWSrldwaW+yrunQjLS3tLPlBmlnSdV6wpZa+9u0jEXr+luZmJc4Yl7AbggAAAAAAYWRvT3oKullJpCayhSlwnkMll3hpDKHE/zNZXYAVIyYAwAAAEBjFCRIeiDqqYy73MTHXE+RI+SBlCPmAAAAANCooJPMBQCgyfx/I9Z+uHcWfZsAAAAASUVORK5CYII=) + +- ExecuteProduceConsume:任务生产者自己运行任务,但是该策略可能会新建一个新线程以继续生产和执行任务。这种策略也被称为“吃掉你杀的猎物”,它来自狩猎伦理,认为一个人不应该杀死他不吃掉的东西,对应线程来说,不应该生成自己不打算运行的任务。它的优点是能利用 CPU 缓存,但是潜在的问题是如果处理 I/O 事件的业务代码执行时间过长,会导致线程大量阻塞和线程饥饿。 + +![img](data:image/png;base64,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) + +- EatWhatYouKill:这是 Jetty 对 ExecuteProduceConsume 策略的改良,在线程池线程充足的情况下等同于 ExecuteProduceConsume;当系统比较忙线程不够时,切换成 ProduceExecuteConsume 策略。为什么要这么做呢,原因是 ExecuteProduceConsume 是在同一线程执行 I/O 事件的生产和消费,它使用的线程来自 Jetty 全局的线程池,这些线程有可能被业务代码阻塞,如果阻塞得多了,全局线程池中的线程自然就不够用了,最坏的情况是连 I/O 事件的侦测都没有线程可用了,会导致 Connector 拒绝浏览器请求。于是 Jetty 做了一个优化,在低线程情况下,就执行 ProduceExecuteConsume 策略,I/O 侦测用专门的线程处理,I/O 事件的处理扔给线程池处理,其实就是放到线程池的队列里慢慢处理。 + +分析了这几种线程策略,我们再来看看 Jetty 是如何实现 ExecutionStrategy 接口的。答案其实就是实现 produce 接口生产任务,一旦任务生产出来,ExecutionStrategy 会负责执行这个任务。 + +``` +private class SelectorProducer implements ExecutionStrategy.Producer +{ + private Set _keys = Collections.emptySet(); + private Iterator _cursor = Collections.emptyIterator(); + + @Override + public Runnable produce() + { + while (true) + { + // 如何 Channel 集合中有 I/O 事件就绪,调用前面提到的 Selectable 接口获取 Runnable, 直接返回给 ExecutionStrategy 去处理 + Runnable task = processSelected(); + if (task != null) + return task; + + // 如果没有 I/O 事件就绪,就干点杂活,看看有没有客户提交了更新 Selector 的任务,就是上面提到的 SelectorUpdate 任务类。 + processUpdates(); + updateKeys(); + + // 继续执行 select 方法,侦测 I/O 就绪事件 + if (!select()) + return null; + } + } + } +``` + +SelectorProducer 是 ManagedSelector 的内部类,SelectorProducer 实现了 ExecutionStrategy 中的 Producer 接口中的 produce 方法,需要向 ExecutionStrategy 返回一个 Runnable。在这个方法里 SelectorProducer 主要干了三件事情 + +1. 如果 Channel 集合中有 I/O 事件就绪,调用前面提到的 Selectable 接口获取 Runnable,直接返回给 ExecutionStrategy 去处理。 +2. 如果没有 I/O 事件就绪,就干点杂活,看看有没有客户提交了更新 Selector 上事件注册的任务,也就是上面提到的 SelectorUpdate 任务类。 +3. 干完杂活继续执行 select 方法,侦测 I/O 就绪事件。 + +## 5. 参考资料 + +- [Jetty 官方网址](http://www.eclipse.org/jetty/index.html) +- [Jetty Github](https://github.com/eclipse/jetty.project) +- [Jetty wiki](http://wiki.eclipse.org/Jetty/Reference/jetty-env.xml) diff --git a/docs/server/tomcat-and-jetty.md b/docs/server/tomcat-and-jetty.md new file mode 100644 index 00000000..b7ca24d8 --- /dev/null +++ b/docs/server/tomcat-and-jetty.md @@ -0,0 +1,17 @@ +## Tomcat 和 Jetty + +Web容器Tomcat或Jetty,作为重要的系统中间件,连接着浏览器和你的Web应用,并且支撑着Web程序的运行,可以说,**弄懂了Tomcat和Jetty的原理,Java Web开发对你来说就毫无秘密可言**。 + +## Web 容器 + +早期的 Web 应用主要用于浏览新闻等静态页面,HTTP 服务器(比如 Apache、Nginx)向浏览器返回静态 HTML,浏览器负责解析 HTML,将结果呈现给用户。 + +随着互联网的发展,我们已经不满足于仅仅浏览静态页面,还希望通过一些交互操作,来获取动态结果,因此也就需要一些扩展机制能够让 HTTP 服务器调用服务端程序。 + +于是 Sun 公司推出了 Servlet 技术。你可以把 Servlet 简单理解为运行在服务端的 Java 小程序,但是 Servlet 没有 main 方法,不能独立运行,因此必须把它部署到 Servlet 容器中,由容器来实例化并调用 Servlet。 + +而 Tomcat 和 Jetty 就是一个 Servlet 容器。为了方便使用,它们也具有 HTTP 服务器的功能,因此**Tomcat 或者 Jetty 就是一个“HTTP 服务器 + Servlet 容器”,我们也叫它们 Web 容器。** + +其他应用服务器比如 JBoss 和 WebLogic,它们不仅仅有 Servlet 容器的功能,也包含 EJB 容器,是完整的 Java EE 应用服务器。从这个角度看,Tomcat 和 Jetty 算是一个轻量级的应用服务器。 + +在微服务架构日渐流行的今天,开发人员更喜欢稳定的、轻量级的应用服务器,并且应用程序用内嵌的方式来运行 Servlet 容器也逐渐流行起来。之所以选择轻量级,是因为在微服务架构下,我们把一个大而全的单体应用,拆分成一个个功能单一的微服务,在这个过程中,服务的数量必然要增加,但为了减少资源的消耗,并且降低部署的成本,我们希望运行服务的 Web 容器也是轻量级的,Web 容器本身应该消耗较少的内存和 CPU 资源,并且由应用本身来启动一个嵌入式的 Web 容器,而不是通过 Web 容器来部署和启动应用,这样可以降低应用部署的复杂度。 \ No newline at end of file diff --git a/docs/test/README.md b/docs/test/README.md new file mode 100644 index 00000000..6dbf50e0 --- /dev/null +++ b/docs/test/README.md @@ -0,0 +1,14 @@ +# Java 和测试 + +## 📖 内容 + +- [Junit](junit.md) +- [Mockito](mockito.md) +- [JMH](jmh.md) +- [Jmeter](jmeter.md) + +## 📚 资料 + +## 🚪 传送 + +◾ 🏠 [JAVA-TUTORIAL 首页](https://github.com/dunwu/java-tutorial) ◾ 🎯 [我的博客](https://github.com/dunwu/blog) ◾ diff --git a/docs/test/jmeter.md b/docs/test/jmeter.md new file mode 100644 index 00000000..028c260f --- /dev/null +++ b/docs/test/jmeter.md @@ -0,0 +1,204 @@ +# JMeter 应用指南 + +> [Jmeter](https://github.com/apache/jmeter) 是一款基于 Java 开发的功能和性能测试软件。 +> +> 🎁 本文编辑时的最新版本为:5.1.1 + +## 1. 简介 + +[Jmeter](https://github.com/apache/jmeter) 是一款使用 Java 开发的功能和性能测试软件。 + +### 1.1. 特性 + +Jmeter 能够加载和性能测试许多不同的应用程序/服务器/协议类型: + +- 网络 - HTTP,HTTPS(Java,NodeJS,PHP,ASP.NET 等) +- SOAP / REST Web 服务 +- FTP 文件 +- 通过 JDBC 的数据库 +- LDAP +- 通过 JMS 的面向消息的中间件(MOM) +- 邮件-SMTP(S),POP3(S)和 IMAP(S) +- 本机命令或 Shell 脚本 +- TCP 协议 +- Java 对象 + +### 1.2. 工作流 + +Jmeter 的工作原理是仿真用户向服务器发送请求,并收集服务器应答信息并计算统计信息。 + +Jmeter 的工作流如下图所示: + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/java/javaweb/technology/test/jmeter-workflow.png) + +### 1.3. 主要元素 + +Jmeter 的主要元素如下: + +- **`测试计划(Test Plan)`** - 可以将测试计划视为 JMeter 的测试脚本 。测试计划由测试元素组成,例如线程组,逻辑控制器,样本生成控制器,监听器,定时器,断言和配置元素。 +- **`线程组(Thread Group)`** - 线程组的作用是:模拟大量用户负载的运行场景。 + - 设置线程数 + - 设置加速期 + - 设置执行测试的次数 +- **`控制器(Controllers)`** - 可以分为两大类: + - **`采样器(Sampler)`** - 采样器的作用是模拟用户对目标服务器发送请求。 采样器是必须将组件添加到测试计划中的,因为它只能让 JMeter 知道需要将哪种类型的请求发送到服务器。 请求可以是 HTTP,HTTP(s),FTP,TCP,SMTP,SOAP 等。 + - **`逻辑控制器`** - 逻辑控制器的作用是:控制多个请求发送的循环次数及顺序等。 +- **`监听器(Listeners)`** - 监听器的作用是:收集测试结果信息。如查看结果树、汇总报告等。 +- **`计时器(Timers)`** - 计时器的作用是:控制多个请求发送的时间频次。 +- **`配置元素(Configuration Elements)`** - 配置元素的工作与采样器的工作类似。但是,它不发送请求,而是提供预备的数据等,如 CSV、函数助手。 +- **`预处理器元素(Pre-Processor Elements)`** - 预处理器元素在采样器发出请求之前执行,如果预处理器附加到采样器元素,那么它将在该采样器元素运行之前执行。预处理器元素用于在运行之前准备环境及参数。 +- **`后处理器元素(Post-Processor Elements)`** - 后处理器元素是在发送采样器请求之后执行的元素,常用于处理响应数据。 + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/java/javaweb/technology/test/jmeter-elements.png) + +> 📌 提示: +> +> Jmeter 元素的数量关系大致如下: +> +> 1. 脚本中最多只能有一个测试计划。 +> 2. 测试计划中至少要有一个线程组。 +> 3. 线程组中至少要有一个取样器。 +> 4. 线程组中至少要有一个监听器。 + +## 2. 安装 + +### 2.1. 环境要求 + +- 必要的。Jmeter 基于 JDK8 开发,所以必须运行在 JDK8 环境。 + + - JDK8 + +- 可选的。有些 jar 包不是 Jmeter 提供的,如果需要相应的功能,需要自行下载并置于 `lib` 目录。 + - JDBC + - JMS + - [Bouncy Castle](http://www.bouncycastle.org/test_releases.html) + +### 2.2. 下载 + +进入 [**Jmeter 官网下载地址**](https://jmeter.apache.org/download_jmeter.cgi) 选择需要版本进行下载。 + +### 2.3. 启动 + +解压 Jmeter 压缩包,进入 bin 目录 + +Unix 类系统运行 `jmeter` ;Windows 系统运行 `jmeter.bat` + +![image-20191024104517721](https://raw.githubusercontent.com/dunwu/images/dev/snap/jmeter/image-20191024104517721.png) + +## 3. 使用 + +### 3.1. 创建测试计划 + +> 🔔 注意: +> +> - 在运行整个测试计划之前,应保存测试计划。 +> +> - JMeter 的测试计划以 `.jmx` 扩展文件的形式保存。 + +#### 3.1.1. 创建线程组 + +- 在“测试计划”上右键 【添加】=>【线程(用户)】=>【线程组】。 + +- 设置线程数和循环次数 + +![image-20191024105545736](https://raw.githubusercontent.com/dunwu/images/dev/snap/jmeter/image-20191024105545736.png) + +#### 3.1.2. 配置原件 + +- 在新建的线程组上右键 【添加】=>【配置元件】=>【HTTP 请求默认值】。 + +- 填写协议、服务器名称或 IP、端口号 + +![image-20191024110016264](https://raw.githubusercontent.com/dunwu/images/dev/snap/jmeter/image-20191024110016264.png) + +#### 3.1.3. 构造 HTTP 请求 + +- 在“线程组”上右键 【添加-】=>【取样器】=>【HTTP 请求】。 + +- 填写协议、服务器名称或 IP、端口号(如果配置了 HTTP 请求默认值可以忽略) +- 填写方法、路径 +- 填写参数、消息体数据、文件上传 + +![image-20191024110953063](https://raw.githubusercontent.com/dunwu/images/dev/snap/jmeter/image-20191024110953063.png) + +#### 3.1.4. 添加 HTTP 请求头 + +- 在“线程组”上右键 【添加】=>【配置元件】=>【HTTP 信息头管理器】 +- 由于我的测试例中传输的数据为 json 形式,所以设置键值对 `Content-Type`:`application/json` + +![image-20191024111825226](https://raw.githubusercontent.com/dunwu/images/dev/snap/jmeter/image-20191024111825226.png) + +#### 3.1.5. 添加断言 + +- 在“线程组”上右键 【添加】=>【断言】=>【 响应断言 】 +- 在我的案例中,以 HTTP 应答状态码为 200 来判断请求是否成功 + +![image-20191024112335130](https://raw.githubusercontent.com/dunwu/images/dev/snap/jmeter/image-20191024112335130.png) + +#### 3.1.6. 添加察看结果树 + +- 在“线程组”上右键 【添加】=>【监听器】=>【察看结果树】 +- 直接点击运行,就可以查看测试结果 + +![image-20191024113849270](https://raw.githubusercontent.com/dunwu/images/dev/snap/jmeter/image-20191024113849270.png) + +#### 3.1.7. 添加汇总报告 + +- 在“线程组”上右键 【添加】=>【监听器】=>【汇总报告】 +- 直接点击运行,就可以查看测试结果 + +![image-20191024114016424](https://raw.githubusercontent.com/dunwu/images/dev/snap/jmeter/image-20191024114016424.png) + +#### 3.1.8. 保存测试计划 + +执行测试计划前,GUI 会提示先保存配置为 `jmx` 文件。 + +### 3.2. 执行测试计划 + +官方建议不要直接使用 GUI 来执行测试计划,这种模式指适用于创建测试计划和 debug。 + +执行测试计划应该使用命令行模式,语法形式如下: + +```bash +jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder] +``` + +执行测试计划后,在 `-e -o` 参数后指定的 web 报告目录下,可以找到测试报告内容。在浏览器中打开 `index.html` 文件,可以看到如下报告: + +![image-20191024120233058](https://raw.githubusercontent.com/dunwu/images/dev/snap/jmeter/image-20191024120233058.png) + +## 4. 问题 + +### 4.1. 如何读取本地 txt/csv 文件作为请求参数 + +参考:[Jmeter 读取本地 txt/csv 文件作为请求参数,实现接口自动化](https://www.jianshu.com/p/3b2d3b643415) + +(1)依次点击【添加】=>【配置元件】=>【CSV 数据文件设置】 + +配置如下所示: + +![image-20191127175820747](https://raw.githubusercontent.com/dunwu/images/dev/snap/image-20191127175820747.png) + +重要配置说明(其他配置根据实际情况填): + +- 文件名:输入需要导入的数据文件位置。 +- 文件编码:设为 UTF-8,避免乱码。 +- 变量名称:使用 `,` 分隔输入变量列表。如截图中设置了两个变量 `a` 和 `b` + +(2)在 HTTP 请求的消息体数据中配置参数 + +``` +[{"a":"${a}","b":"${b}"}] +``` + +### 4.2. 如何有序发送数据 + +依次点击【添加】=>【逻辑控制器】=>【事务控制器】 + +## 5. 参考资料 + +- [Jmeter 官网](https://jmeter.apache.org/) +- [Jmeter Github](https://github.com/apache/jmeter) +- [Jmeter 性能测试入门](https://www.cnblogs.com/TankXiao/p/4045439.html) +- [易百教程 - Jmeter 教程](https://www.yiibai.com/jmeter) +- [Jmeter 读取本地 txt/csv 文件作为请求参数,实现接口自动化](https://www.jianshu.com/p/3b2d3b643415) diff --git a/docs/test/jmh.md b/docs/test/jmh.md new file mode 100644 index 00000000..a14f54a9 --- /dev/null +++ b/docs/test/jmh.md @@ -0,0 +1,340 @@ +# JMH 应用指南 + +## 基准测试简介 + +### 什么是基准测试 + +基准测试是指通过设计科学的测试方法、测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的和可对比的测试。 + +现代软件常常都把高性能作为目标。那么,何为高性能,性能就是快,更快吗?显然,如果没有一个量化的标准,难以衡量性能的好坏。 + +不同的基准测试其具体内容和范围也存在很大的不同。如果是专业的性能工程师,更加熟悉的可能是类似SPEC提供的工业标准的系统级测试;而对于大多数 Java 开发者,更熟悉的则是范围相对较小、关注点更加细节的微基准测试(Micro-Benchmark)。何谓 Micro Benchmark 呢? 简单地说就是在 method 层面上的 benchmark,精度可以精确到 **微秒级**。 + +### 何时需要微基准测试 + +微基准测试大多是 API 级别的性能测试。 + +微基准测试的适用场景: + +- 如果开发公共类库、中间件,会被其他模块经常调用的 API。 +- 对于性能,如响应延迟、吞吐量有严格要求的核心 API。 + +## JMH 简介 + +[JMH(即 Java Microbenchmark Harness)](http://openjdk.java.net/projects/code-tools/jmh/),是目前主流的微基准测试框架。JMH 是由 Hotspot JVM 团队专家开发的,除了支持完整的基准测试过程,包括预热、运行、统计和报告等,还支持 Java 和其他 JVM 语言。更重要的是,它针对 Hotspot JVM 提供了各种特性,以保证基准测试的正确性,整体准确性大大优于其他框架,并且,JMH 还提供了用近乎白盒的方式进行 Profiling 等工作的能力。 + +### 为什么需要 JMH + +#### 死码消除 + +所谓死码,是指注释的代码,不可达的代码块,可达但不被使用的代码等等 。 + +#### 常量折叠与常量传播 + +[常量折叠](https://zh.wikipedia.org/wiki/常數折疊#常數傳播) (Constant folding) 是一个在编译时期简化常数的一个过程,常数在表示式中仅仅代表一个简单的数值,就像是整数 `2`,若是一个变数从未被修改也可作为常数,或者直接将一个变数被明确地被标注为常数,例如下面的描述: + +### JMH 的注意点 + +- 测试前需要预热。 +- 防止无用代码进入测试方法中。 +- 并发测试。 +- 测试结果呈现。 + +### 应用场景 + +1. 当你已经找出了热点函数,而需要对热点函数进行进一步的优化时,就可以使用 JMH 对优化的效果进行定量的分析。 +2. 想定量地知道某个函数需要执行多长时间,以及执行时间和输入 n 的相关性 +3. 一个函数有两种不同实现(例如 JSON 序列化/反序列化有 Jackson 和 Gson 实现),不知道哪种实现性能更好 + +### JMH 概念 + +- `Iteration` - iteration 是 JMH 进行测试的最小单位,包含一组 invocations。 +- `Invocation` - 一次 benchmark 方法调用。 +- `Operation` - benchmark 方法中,被测量操作的执行。如果被测试的操作在 benchmark 方法中循环执行,可以使用`@OperationsPerInvocation`表明循环次数,使测试结果为单次 operation 的性能。 +- `Warmup` - 在实际进行 benchmark 前先进行预热。因为某个函数被调用多次之后,JIT 会对其进行编译,通过预热可以使测量结果更加接近真实情况。 + +## JMH 快速入门 + +### 添加 maven 依赖 + +```xml + + org.openjdk.jmh + jmh-core + ${jmh.version} + + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh.version} + provided + +``` + +### 测试代码 + +```java +import org.openjdk.jmh.annotations.*; +import org.openjdk.jmh.runner.*; + +import java.util.concurrent.TimeUnit; + +@BenchmarkMode(Mode.Throughput) +@Warmup(iterations = 3) +@Measurement(iterations = 10, time = 5, timeUnit = TimeUnit.SECONDS) +@Threads(8) +@Fork(2) +@OutputTimeUnit(TimeUnit.MILLISECONDS) +public class StringBuilderBenchmark { + + @Benchmark + public void testStringAdd() { + String a = ""; + for (int i = 0; i < 10; i++) { + a += i; + } + // System.out.println(a); + } + + @Benchmark + public void testStringBuilderAdd() { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < 10; i++) { + sb.append(i); + } + // System.out.println(sb.toString()); + } + + public static void main(String[] args) throws RunnerException { + Options options = new OptionsBuilder() + .include(StringBuilderBenchmark.class.getSimpleName()) + .output("d:/Benchmark.log") + .build(); + new Runner(options).run(); + } + +} +``` + +### 执行 JMH + +#### 命令行 + +(1)初始化 **benchmarking** 工程 + +```shell +$ mvn archetype:generate \ + -DinteractiveMode=false \ + -DarchetypeGroupId=org.openjdk.jmh \ + -DarchetypeArtifactId=jmh-java-benchmark-archetype \ + -DgroupId=org.sample \ + -DartifactId=test \ + -Dversion=1.0 +``` + +(2)构建 benchmark + +```shell +cd test/ +mvn clean install +``` + +(3)运行 benchmark + +```shell +java -jar target/benchmarks.jar +``` + +#### 执行 main 方法 + +执行 main 方法,耐心等待测试结果,最终会生成一个测试报告,内容大致如下; + +```shell +# JMH version: 1.22 +# VM version: JDK 1.8.0_181, Java HotSpot(TM) 64-Bit Server VM, 25.181-b13 +# VM invoker: C:\Program Files\Java\jdk1.8.0_181\jre\bin\java.exe +# VM options: -javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2019.2.3\lib\idea_rt.jar=58635:D:\Program Files\JetBrains\IntelliJ IDEA 2019.2.3\bin -Dfile.encoding=UTF-8 +# Warmup: 3 iterations, 10 s each +# Measurement: 10 iterations, 5 s each +# Timeout: 10 min per iteration +# Threads: 8 threads, will synchronize iterations +# Benchmark mode: Throughput, ops/time +# Benchmark: io.github.dunwu.javatech.jmh.StringBuilderBenchmark.testStringAdd + +# Run progress: 0.00% complete, ETA 00:05:20 +# Fork: 1 of 2 +# Warmup Iteration 1: 21803.050 ops/ms +# Warmup Iteration 2: 22501.860 ops/ms +# Warmup Iteration 3: 20953.944 ops/ms +Iteration 1: 21627.645 ops/ms +Iteration 2: 21215.269 ops/ms +Iteration 3: 20863.282 ops/ms +Iteration 4: 21617.715 ops/ms +Iteration 5: 21695.645 ops/ms +Iteration 6: 21886.784 ops/ms +Iteration 7: 21986.899 ops/ms +Iteration 8: 22389.540 ops/ms +Iteration 9: 22507.313 ops/ms +Iteration 10: 22124.133 ops/ms + +# Run progress: 25.00% complete, ETA 00:04:02 +# Fork: 2 of 2 +# Warmup Iteration 1: 22262.108 ops/ms +# Warmup Iteration 2: 21567.804 ops/ms +# Warmup Iteration 3: 21787.002 ops/ms +Iteration 1: 21598.970 ops/ms +Iteration 2: 22486.133 ops/ms +Iteration 3: 22157.834 ops/ms +Iteration 4: 22321.827 ops/ms +Iteration 5: 22477.063 ops/ms +Iteration 6: 22154.760 ops/ms +Iteration 7: 21561.095 ops/ms +Iteration 8: 22194.863 ops/ms +Iteration 9: 22493.844 ops/ms +Iteration 10: 22568.078 ops/ms + + +Result "io.github.dunwu.javatech.jmh.StringBuilderBenchmark.testStringAdd": + 21996.435 ±(99.9%) 412.955 ops/ms [Average] + (min, avg, max) = (20863.282, 21996.435, 22568.078), stdev = 475.560 + CI (99.9%): [21583.480, 22409.390] (assumes normal distribution) + + +# JMH version: 1.22 +# VM version: JDK 1.8.0_181, Java HotSpot(TM) 64-Bit Server VM, 25.181-b13 +# VM invoker: C:\Program Files\Java\jdk1.8.0_181\jre\bin\java.exe +# VM options: -javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2019.2.3\lib\idea_rt.jar=58635:D:\Program Files\JetBrains\IntelliJ IDEA 2019.2.3\bin -Dfile.encoding=UTF-8 +# Warmup: 3 iterations, 10 s each +# Measurement: 10 iterations, 5 s each +# Timeout: 10 min per iteration +# Threads: 8 threads, will synchronize iterations +# Benchmark mode: Throughput, ops/time +# Benchmark: io.github.dunwu.javatech.jmh.StringBuilderBenchmark.testStringBuilderAdd + +# Run progress: 50.00% complete, ETA 00:02:41 +# Fork: 1 of 2 +# Warmup Iteration 1: 241500.886 ops/ms +# Warmup Iteration 2: 134206.032 ops/ms +# Warmup Iteration 3: 86907.846 ops/ms +Iteration 1: 86143.339 ops/ms +Iteration 2: 74725.356 ops/ms +Iteration 3: 72316.121 ops/ms +Iteration 4: 77319.716 ops/ms +Iteration 5: 83469.256 ops/ms +Iteration 6: 87712.360 ops/ms +Iteration 7: 79421.899 ops/ms +Iteration 8: 80867.839 ops/ms +Iteration 9: 82619.163 ops/ms +Iteration 10: 87026.928 ops/ms + +# Run progress: 75.00% complete, ETA 00:01:20 +# Fork: 2 of 2 +# Warmup Iteration 1: 228342.337 ops/ms +# Warmup Iteration 2: 124737.248 ops/ms +# Warmup Iteration 3: 82598.851 ops/ms +Iteration 1: 86877.318 ops/ms +Iteration 2: 89388.624 ops/ms +Iteration 3: 88523.558 ops/ms +Iteration 4: 87547.332 ops/ms +Iteration 5: 88376.087 ops/ms +Iteration 6: 88848.837 ops/ms +Iteration 7: 85998.124 ops/ms +Iteration 8: 86796.998 ops/ms +Iteration 9: 87994.726 ops/ms +Iteration 10: 87784.453 ops/ms + + +Result "io.github.dunwu.javatech.jmh.StringBuilderBenchmark.testStringBuilderAdd": + 84487.902 ±(99.9%) 4355.525 ops/ms [Average] + (min, avg, max) = (72316.121, 84487.902, 89388.624), stdev = 5015.829 + CI (99.9%): [80132.377, 88843.427] (assumes normal distribution) + + +# Run complete. Total time: 00:05:23 + +REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on +why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial +experiments, perform baseline and negative tests that provide experimental control, make sure +the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. +Do not assume the numbers tell you what you want them to tell. + +Benchmark Mode Cnt Score Error Units +StringBuilderBenchmark.testStringAdd thrpt 20 21996.435 ± 412.955 ops/ms +StringBuilderBenchmark.testStringBuilderAdd thrpt 20 84487.902 ± 4355.525 ops/ms +``` + +## JMH API + +下面来了解一下 jmh 常用 API + +### @BenchmarkMode + +基准测试类型。这里选择的是 `Throughput` 也就是吞吐量。根据源码点进去,每种类型后面都有对应的解释,比较好理解,吞吐量会得到单位时间内可以进行的操作数。 + +- `Throughput` - 整体吞吐量,例如“1 秒内可以执行多少次调用”。 +- `AverageTime` - 调用的平均时间,例如“每次调用平均耗时 xxx 毫秒”。 +- `SampleTime` - 随机取样,最后输出取样结果的分布,例如“99%的调用在 xxx 毫秒以内,99.99%的调用在 xxx 毫秒以内” +- `SingleShotTime` - 以上模式都是默认一次 iteration 是 1s,唯有 SingleShotTime 是只运行一次。往往同时把 warmup 次数设为 0,用于测试冷启动时的性能。 +- `All` - 所有模式 + +### @Warmup + +上面我们提到了,进行基准测试前需要进行预热。一般我们前几次进行程序测试的时候都会比较慢, 所以要让程序进行几轮预热,保证测试的准确性。其中的参数 iterations 也就非常好理解了,就是预热轮数。 + +为什么需要预热?因为 JVM 的 JIT 机制的存在,如果某个函数被调用多次之后,JVM 会尝试将其编译成为机器码从而提高执行速度。所以为了让 benchmark 的结果更加接近真实情况就需要进行预热。 + +### @Measurement + +度量,其实就是一些基本的测试参数。 + +- `iterations` - 进行测试的轮次 +- `time` - 每轮进行的时长 +- `timeUnit` - 时长单位 + +都是一些基本的参数,可以根据具体情况调整。一般比较重的东西可以进行大量的测试,放到服务器上运行。 + +### @Threads + +每个进程中的测试线程,这个非常好理解,根据具体情况选择,一般为 cpu 乘以 2。 + +### @Fork + +进行 fork 的次数。如果 fork 数是 2 的话,则 JMH 会 fork 出两个进程来进行测试。 + +### @OutputTimeUnit + +这个比较简单了,基准测试结果的时间类型。一般选择秒、毫秒、微秒。 + +### @Benchmark + +方法级注解,表示该方法是需要进行 benchmark 的对象,用法和 JUnit 的 @Test 类似。 + +### @Param + +属性级注解,@Param 可以用来指定某项参数的多种情况。特别适合用来测试一个函数在不同的参数输入的情况下的性能。 + +### @Setup + +方法级注解,这个注解的作用就是我们需要在测试之前进行一些准备工作,比如对一些数据的初始化之类的。 + +### @TearDown + +方法级注解,这个注解的作用就是我们需要在测试之后进行一些结束工作,比如关闭线程池,数据库连接等的,主要用于资源的回收等。 + +### @State + +当使用 @Setup 参数的时候,必须在类上加这个参数,不然会提示无法运行。 + +State 用于声明某个类是一个“状态”,然后接受一个 Scope 参数用来表示该状态的共享范围。 因为很多 benchmark 会需要一些表示状态的类,JMH 允许你把这些类以依赖注入的方式注入到 benchmark 函数里。Scope 主要分为三种。 + +- `Thread` - 该状态为每个线程独享。 +- `Group` - 该状态为同一个组里面所有线程共享。 +- `Benchmark` - 该状态在所有线程间共享。 + +关于 State 的用法,官方的 code sample 里有比较好的[例子](http://hg.openjdk.java.net/code-tools/jmh/file/cb9aa824b55a/jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_03_States.java)。 + +## 参考资料 + +- [jmh 官方示例](http://hg.openjdk.java.net/code-tools/jmh/file/tip/jmh-samples/src/main/java/org/openjdk/jmh/samples/) +- [Java 微基准测试框架 JMH](https://www.xncoding.com/2018/01/07/java/jmh.html) +- [JAVA 拾遗 — JMH 与 8 个测试陷阱](https://www.cnkirito.moe/java-jmh/) diff --git a/docs/test/junit.md b/docs/test/junit.md new file mode 100644 index 00000000..f8750cf5 --- /dev/null +++ b/docs/test/junit.md @@ -0,0 +1,582 @@ +# JUnit5 应用指南 + +> version: junit5 + + + +- [1. 安装](#1-安装) +- [2. JUnit 注解](#2-junit-注解) +- [3. 编写单元测试](#3-编写单元测试) + - [3.1. 基本的单元测试类和方法](#31-基本的单元测试类和方法) + - [3.2. 定制测试类和方法的显示名称](#32-定制测试类和方法的显示名称) + - [3.3. 断言(Assertions)](#33-断言assertions) + - [3.4. 假想(Assumptions)](#34-假想assumptions) + - [3.5. 禁用](#35-禁用) + - [3.6. 测试条件](#36-测试条件) + - [3.7. 嵌套测试](#37-嵌套测试) + - [3.8. 重复测试](#38-重复测试) + - [3.9. 参数化测试](#39-参数化测试) +- [4. 引用和引申](#4-引用和引申) + + + +## 1. 安装 + +在 pom 中添加依赖 + +```xml + + 5.3.2 + + + + + org.junit.jupiter + junit-jupiter-api + ${junit.jupiter.version} + test + + + org.junit.jupiter + junit-jupiter-params + ${junit.jupiter.version} + test + + + org.junit.jupiter + junit-jupiter-engine + ${junit.jupiter.version} + test + + +``` + +组件间依赖关系: + +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/java/javalib/test/junit/junit5-components.png) + +## 2. JUnit 注解 + +| Annotation | Description | +| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `@Test` | Denotes that a method is a test method. Unlike JUnit 4’s `@Test` annotation, this annotation does not declare any attributes, since test extensions in JUnit Jupiter operate based on their own dedicated annotations. Such methods are _inherited_ unless they are _overridden_. | +| `@ParameterizedTest` | Denotes that a method is a [parameterized test](https://junit.org/junit5/docs/current/user-guide/#writing-tests-parameterized-tests). Such methods are _inherited_ unless they are _overridden_. | +| `@RepeatedTest` | Denotes that a method is a test template for a [repeated test](https://junit.org/junit5/docs/current/user-guide/#writing-tests-repeated-tests). Such methods are _inherited_ unless they are _overridden_. | +| `@TestFactory` | Denotes that a method is a test factory for [dynamic tests](https://junit.org/junit5/docs/current/user-guide/#writing-tests-dynamic-tests). Such methods are _inherited_ unless they are _overridden_. | +| `@TestInstance` | Used to configure the [test instance lifecycle](https://junit.org/junit5/docs/current/user-guide/#writing-tests-test-instance-lifecycle) for the annotated test class. Such annotations are _inherited_. | +| `@TestTemplate` | Denotes that a method is a [template for test cases](https://junit.org/junit5/docs/current/user-guide/#writing-tests-test-templates) designed to be invoked multiple times depending on the number of invocation contexts returned by the registered [providers](https://junit.org/junit5/docs/current/user-guide/#extensions-test-templates). Such methods are _inherited_ unless they are _overridden_. | +| `@DisplayName` | Declares a custom display name for the test class or test method. Such annotations are not _inherited_. | +| `@BeforeEach` | Denotes that the annotated method should be executed _before_ **each** `@Test`, `@RepeatedTest`, `@ParameterizedTest`, or `@TestFactory` method in the current class; analogous to JUnit 4’s `@Before`. Such methods are _inherited_ unless they are _overridden_. | +| `@AfterEach` | Denotes that the annotated method should be executed _after_ **each** `@Test`, `@RepeatedTest`, `@ParameterizedTest`, or `@TestFactory` method in the current class; analogous to JUnit 4’s `@After`. Such methods are _inherited_ unless they are _overridden_. | +| `@BeforeAll` | Denotes that the annotated method should be executed _before_ **all** `@Test`, `@RepeatedTest`, `@ParameterizedTest`, and `@TestFactory` methods in the current class; analogous to JUnit 4’s `@BeforeClass`. Such methods are _inherited_ (unless they are _hidden_ or _overridden_) and must be `static` (unless the "per-class" [test instance lifecycle](https://junit.org/junit5/docs/current/user-guide/#writing-tests-test-instance-lifecycle) is used). | +| `@AfterAll` | Denotes that the annotated method should be executed _after_ **all** `@Test`, `@RepeatedTest`, `@ParameterizedTest`, and `@TestFactory` methods in the current class; analogous to JUnit 4’s `@AfterClass`. Such methods are _inherited_ (unless they are _hidden_ or _overridden_) and must be `static` (unless the "per-class" [test instance lifecycle](https://junit.org/junit5/docs/current/user-guide/#writing-tests-test-instance-lifecycle) is used). | +| `@Nested` | Denotes that the annotated class is a nested, non-static test class. `@BeforeAll` and `@AfterAll`methods cannot be used directly in a `@Nested` test class unless the "per-class" [test instance lifecycle](https://junit.org/junit5/docs/current/user-guide/#writing-tests-test-instance-lifecycle) is used. Such annotations are not _inherited_. | +| `@Tag` | Used to declare _tags_ for filtering tests, either at the class or method level; analogous to test groups in TestNG or Categories in JUnit 4. Such annotations are _inherited_ at the class level but not at the method level. | +| `@Disabled` | Used to _disable_ a test class or test method; analogous to JUnit 4’s `@Ignore`. Such annotations are not _inherited_. | +| `@ExtendWith` | Used to register custom [extensions](https://junit.org/junit5/docs/current/user-guide/#extensions). Such annotations are _inherited_. | + +## 3. 编写单元测试 + +### 3.1. 基本的单元测试类和方法 + +```java +import org.junit.jupiter.api.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +class Junit5StandardTests { + + private static final Logger LOGGER = LoggerFactory.getLogger(Junit5StandardTests.class); + + @BeforeAll + static void beforeAll() { + LOGGER.info("call beforeAll()"); + } + + @BeforeEach + void beforeEach() { + LOGGER.info("call beforeEach()"); + } + + @Test + void succeedingTest() { + LOGGER.info("call succeedingTest()"); + } + + @Test + void failingTest() { + LOGGER.info("call failingTest()"); + // fail("a failing test"); + } + + @Test + @Disabled("for demonstration purposes") + void skippedTest() { + LOGGER.info("call skippedTest()"); + // not executed + } + + @AfterEach + void afterEach() { + LOGGER.info("call afterEach()"); + } + + @AfterAll + static void afterAll() { + LOGGER.info("call afterAll()"); + } +} +``` + +### 3.2. 定制测试类和方法的显示名称 + +支持普通字符、特殊符号、emoji + +```java +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +@DisplayName("A special test case") +class JunitDisplayNameDemo { + + @Test + @DisplayName("Custom test name containing spaces") + void testWithDisplayNameContainingSpaces() { } + + @Test + @DisplayName("╯°□°)╯") + void testWithDisplayNameContainingSpecialCharacters() { } + + @Test + @DisplayName("😱") + void testWithDisplayNameContainingEmoji() { } +} +``` + +### 3.3. 断言(Assertions) + +```java +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import static java.time.Duration.ofMillis; +import static java.time.Duration.ofMinutes; +import static org.junit.jupiter.api.Assertions.*; + +class AssertionsDemo { + + private static Person person; + + @BeforeAll + public static void beforeAll() { + person = new Person("John", "Doe"); + } + + @Test + void standardAssertions() { + assertEquals(2, 2); + assertEquals(4, 4, "The optional assertion message is now the last parameter."); + assertTrue('a' < 'b', () -> "Assertion messages can be lazily evaluated -- " + + "to avoid constructing complex messages unnecessarily."); + } + + @Test + void groupedAssertions() { + // In a grouped assertion all assertions are executed, and any + // failures will be reported together. + assertAll("person", () -> assertEquals("John", person.getFirstName()), + () -> assertEquals("Doe", person.getLastName())); + } + + @Test + void dependentAssertions() { + // Within a code block, if an assertion fails the + // subsequent code in the same block will be skipped. + assertAll("properties", () -> { + String firstName = person.getFirstName(); + assertNotNull(firstName); + + // Executed only if the previous assertion is valid. + assertAll("first name", () -> assertTrue(firstName.startsWith("J")), + () -> assertTrue(firstName.endsWith("n"))); + }, () -> { + // Grouped assertion, so processed independently + // of results of first name assertions. + String lastName = person.getLastName(); + assertNotNull(lastName); + + // Executed only if the previous assertion is valid. + assertAll("last name", () -> assertTrue(lastName.startsWith("D")), + () -> assertTrue(lastName.endsWith("e"))); + }); + } + + @Test + void exceptionTesting() { + Throwable exception = assertThrows(IllegalArgumentException.class, () -> { + throw new IllegalArgumentException("a message"); + }); + assertEquals("a message", exception.getMessage()); + } + + @Test + void timeoutNotExceeded() { + // The following assertion succeeds. + assertTimeout(ofMinutes(2), () -> { + // Perform task that takes less than 2 minutes. + }); + } + + @Test + void timeoutNotExceededWithResult() { + // The following assertion succeeds, and returns the supplied object. + String actualResult = assertTimeout(ofMinutes(2), () -> { + return "a result"; + }); + assertEquals("a result", actualResult); + } + + @Test + void timeoutNotExceededWithMethod() { + // The following assertion invokes a method reference and returns an object. + String actualGreeting = assertTimeout(ofMinutes(2), AssertionsDemo::greeting); + assertEquals("Hello, World!", actualGreeting); + } + + @Test + void timeoutExceeded() { + // The following assertion fails with an error message similar to: + // execution exceeded timeout of 10 ms by 91 ms + assertTimeout(ofMillis(10), () -> { + // Simulate task that takes more than 10 ms. + Thread.sleep(100); + }); + } + + @Test + void timeoutExceededWithPreemptiveTermination() { + // The following assertion fails with an error message similar to: + // execution timed out after 10 ms + assertTimeoutPreemptively(ofMillis(10), () -> { + // Simulate task that takes more than 10 ms. + Thread.sleep(100); + }); + } + + private static String greeting() { + return "Hello, World!"; + } + +} +``` + +### 3.4. 假想(Assumptions) + +```java +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assumptions.assumeTrue; +import static org.junit.jupiter.api.Assumptions.assumingThat; + +import org.junit.jupiter.api.Test; + +class AssumptionsDemo { + + @Test + void testOnlyOnCiServer() { + assumeTrue("CI".equals(System.getenv("ENV"))); + // remainder of test + } + + @Test + void testOnlyOnDeveloperWorkstation() { + assumeTrue("DEV".equals(System.getenv("ENV")), + () -> "Aborting test: not on developer workstation"); + // remainder of test + } + + @Test + void testInAllEnvironments() { + assumingThat("CI".equals(System.getenv("ENV")), + () -> { + // perform these assertions only on the CI server + assertEquals(2, 2); + }); + + // perform these assertions in all environments + assertEquals("a string", "a string"); + } + +} +``` + +### 3.5. 禁用 + +禁用单元测试类示例: + +```java +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +@Disabled +class DisabledClassDemo { + @Test + void testWillBeSkipped() { + } +} +``` + +禁用单元测试方法示例: + +```java +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +class DisabledTestsDemo { + + @Disabled + @Test + void testWillBeSkipped() { + } + + @Test + void testWillBeExecuted() { + } +} +``` + +### 3.6. 测试条件 + +#### 操作系统条件 + +```java +@Test +@EnabledOnOs(MAC) +void onlyOnMacOs() { + // ... +} + +@TestOnMac +void testOnMac() { + // ... +} + +@Test +@EnabledOnOs({ LINUX, MAC }) +void onLinuxOrMac() { + // ... +} + +@Test +@DisabledOnOs(WINDOWS) +void notOnWindows() { + // ... +} + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@Test +@EnabledOnOs(MAC) +@interface TestOnMac { +} +``` + +#### Java 运行时版本条件 + +```java +@Test +@EnabledOnJre(JAVA_8) +void onlyOnJava8() { + // ... +} + +@Test +@EnabledOnJre({ JAVA_9, JAVA_10 }) +void onJava9Or10() { + // ... +} + +@Test +@DisabledOnJre(JAVA_9) +void notOnJava9() { + // ... +} +``` + +#### 系统属性条件 + +```java +@Test +@EnabledIfSystemProperty(named = "os.arch", matches = ".*64.*") +void onlyOn64BitArchitectures() { + // ... +} + +@Test +@DisabledIfSystemProperty(named = "ci-server", matches = "true") +void notOnCiServer() { + // ... +} +``` + +### 3.7. 嵌套测试 + +```java +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.EmptyStackException; +import java.util.Stack; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +@DisplayName("A stack") +class TestingAStackDemo { + + Stack stack; + + @Test + @DisplayName("is instantiated with new Stack()") + void isInstantiatedWithNew() { + new Stack<>(); + } + + @Nested + @DisplayName("when new") + class WhenNew { + + @BeforeEach + void createNewStack() { + stack = new Stack<>(); + } + + @Test + @DisplayName("is empty") + void isEmpty() { + assertTrue(stack.isEmpty()); + } + + @Test + @DisplayName("throws EmptyStackException when popped") + void throwsExceptionWhenPopped() { + assertThrows(EmptyStackException.class, () -> stack.pop()); + } + + @Test + @DisplayName("throws EmptyStackException when peeked") + void throwsExceptionWhenPeeked() { + assertThrows(EmptyStackException.class, () -> stack.peek()); + } + + @Nested + @DisplayName("after pushing an element") + class AfterPushing { + + String anElement = "an element"; + + @BeforeEach + void pushAnElement() { + stack.push(anElement); + } + + @Test + @DisplayName("it is no longer empty") + void isNotEmpty() { + assertFalse(stack.isEmpty()); + } + + @Test + @DisplayName("returns the element when popped and is empty") + void returnElementWhenPopped() { + assertEquals(anElement, stack.pop()); + assertTrue(stack.isEmpty()); + } + + @Test + @DisplayName("returns the element when peeked but remains not empty") + void returnElementWhenPeeked() { + assertEquals(anElement, stack.peek()); + assertFalse(stack.isEmpty()); + } + } + } +} +``` + +### 3.8. 重复测试 + +```java +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.logging.Logger; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.RepeatedTest; +import org.junit.jupiter.api.RepetitionInfo; +import org.junit.jupiter.api.TestInfo; + +class RepeatedTestsDemo { + + private Logger logger = // ... + + @BeforeEach + void beforeEach(TestInfo testInfo, RepetitionInfo repetitionInfo) { + int currentRepetition = repetitionInfo.getCurrentRepetition(); + int totalRepetitions = repetitionInfo.getTotalRepetitions(); + String methodName = testInfo.getTestMethod().get().getName(); + logger.info(String.format("About to execute repetition %d of %d for %s", // + currentRepetition, totalRepetitions, methodName)); + } + + @RepeatedTest(10) + void repeatedTest() { + // ... + } + + @RepeatedTest(5) + void repeatedTestWithRepetitionInfo(RepetitionInfo repetitionInfo) { + assertEquals(5, repetitionInfo.getTotalRepetitions()); + } + + @RepeatedTest(value = 1, name = "{displayName} {currentRepetition}/{totalRepetitions}") + @DisplayName("Repeat!") + void customDisplayName(TestInfo testInfo) { + assertEquals(testInfo.getDisplayName(), "Repeat! 1/1"); + } + + @RepeatedTest(value = 1, name = RepeatedTest.LONG_DISPLAY_NAME) + @DisplayName("Details...") + void customDisplayNameWithLongPattern(TestInfo testInfo) { + assertEquals(testInfo.getDisplayName(), "Details... :: repetition 1 of 1"); + } + + @RepeatedTest(value = 5, name = "Wiederholung {currentRepetition} von {totalRepetitions}") + void repeatedTestInGerman() { + // ... + } + +} +``` + +### 3.9. 参数化测试 + +```java +@ParameterizedTest +@ValueSource(strings = { "racecar", "radar", "able was I ere I saw elba" }) +void palindromes(String candidate) { + assertTrue(isPalindrome(candidate)); +} +``` + +## 4. 引用和引申 + +- [Github](https://github.com/junit-team/junit5) +- [官方用户手册](https://junit.org/junit5/docs/current/user-guide/) +- [Javadoc](https://junit.org/junit5/docs/current/api/) +- [版本声明](https://junit.org/junit5/docs/current/release-notes/) +- [官方示例](https://github.com/junit-team/junit5-samples) diff --git a/docs/test/mockito.md b/docs/test/mockito.md new file mode 100644 index 00000000..74551215 --- /dev/null +++ b/docs/test/mockito.md @@ -0,0 +1,562 @@ +# Mockito 应用指南 + +> Mockito 是一个针对 Java 的 mock 框架。 + +## 预备知识 + +如果需要往下学习,你需要先理解 Junit 框架中的单元测试。 + +如果你不熟悉 JUnit,请看 [Junit 教程](http://www.vogella.com/tutorials/JUnit/article.html) + +## 使用 mock 对象来进行测试 + +### 单元测试的目标和挑战 + +单元测试的思路是在不涉及依赖关系的情况下测试代码(隔离性),所以测试代码与其他类或者系统的关系应该尽量被消除。一个可行的消除方法是替换掉依赖类(测试替换),也就是说我们可以使用替身来替换掉真正的依赖对象。 + +### 测试类的分类 + +- **dummy object** 做为参数传递给方法但是绝对不会被使用。譬如说,这种测试类内部的方法不会被调用,或者是用来填充某个方法的参数。 +- **Fake** 是真正接口或抽象类的实现体,但给对象内部实现很简单。譬如说,它存在内存中而不是真正的数据库中。(译者注:**Fake** 实现了真正的逻辑,但它的存在只是为了测试,而不适合于用在产品中。) +- **stub** 类是依赖类的部分方法实现,而这些方法在你测试类和接口的时候会被用到,也就是说 **stub** 类在测试中会被实例化。**stub** 类会回应任何外部测试的调用。**stub** 类有时候还会记录调用的一些信息。 +- **mock object** 是指类或者接口的模拟实现,你可以自定义这个对象中某个方法的输出结果。 + +测试替代技术能够在测试中模拟测试类以外对象。因此你可以验证测试类是否响应正常。譬如说,你可以验证在 Mock 对象的某一个方法是否被调用。这可以确保隔离了外部依赖的干扰只测试测试类。 + +我们选择 Mock 对象的原因是因为 Mock 对象只需要少量代码的配置。 + +### Mock 对象的产生 + +你可以手动创建一个 Mock 对象或者使用 Mock 框架来模拟这些类,Mock 框架允许你在运行时创建 Mock 对象并且定义它的行为。 + +一个典型的例子是把 Mock 对象模拟成数据的提供者。在正式的生产环境中它会被实现用来连接数据源。但是我们在测试的时候 Mock 对象将会模拟成数据提供者来确保我们的测试环境始终是相同的。 + +Mock 对象可以被提供来进行测试。因此,我们测试的类应该避免任何外部数据的强依赖。 + +通过 Mock 对象或者 Mock 框架,我们可以测试代码中期望的行为。譬如说,验证只有某个存在 Mock 对象的方法是否被调用了。 + +### 使用 Mockito 生成 Mock 对象 + +*Mockito* 是一个流行 mock 框架,可以和 JUnit 结合起来使用。Mockito 允许你创建和配置 mock 对象。使用 Mockito 可以明显的简化对外部依赖的测试类的开发。 + +一般使用 Mockito 需要执行下面三步 + +1. 模拟并替换测试代码中外部依赖 +2. 执行测试代码 +3. 验证测试代码是否被正确的执行 0 + +## 为自己的项目添加 Mockito 依赖 + +### 在 Gradle 添加 Mockito 依赖 + +如果你的项目使用 Gradle 构建,将下面代码加入 Gradle 的构建文件中为自己项目添加 Mockito 依赖 + +``` +repositories { jcenter() } +dependencies { testCompile "org.mockito:mockito-core:2.0.57-beta" } +``` + +### 在 Maven 添加 Mockito 依赖 + +需要在 Maven 声明依赖,您可以在 [http://search.maven.org](http://search.maven.org/) 网站中搜索 `g:"org.mockito", a:"mockito-core"` 来得到具体的声明方式。 + +### 在 Eclipse IDE 使用 Mockito + +Eclipse IDE 支持 Gradle 和 Maven 两种构建工具,所以在 Eclipse IDE 添加依赖取决你使用的是哪一个构建工具。 + +### 以 OSGi 或者 Eclipse 插件形式添加 Mockito 依赖 + +在 Eclipse RCP 应用依赖通常可以在 p2 update 上得到。Orbit 是一个很好的第三方仓库,我们可以在里面寻找能在 Eclipse 上使用的应用和插件。 + +Orbit 仓库地址:[http://download.eclipse.org/tools/orbit/downloads](http://download.eclipse.org/tools/orbit/downloads) + +## 使用 Mockito API + +### 静态引用 + +如果在代码中静态引用了`org.mockito.Mockito.*;`,那你你就可以直接调用静态方法和静态变量而不用创建对象,譬如直接调用 mock() 方法。 + +### 使用 Mockito 创建和配置 mock 对象 + +除了上面所说的使用 mock() 静态方法外,Mockito 还支持通过 `@Mock` 注解的方式来创建 mock 对象。 + +如果你使用注解,那么必须要实例化 mock 对象。Mockito 在遇到使用注解的字段的时候,会调用`MockitoAnnotations.initMocks(this)` 来初始化该 mock 对象。另外也可以通过使用`@RunWith(MockitoJUnitRunner.class)`来达到相同的效果。 + +通过下面的例子我们可以了解到使用`@Mock` 的方法和`MockitoRule`规则。 + +```java +import static org.mockito.Mockito.*; + +public class MockitoTest { + + @Mock + MyDatabase databaseMock; (1) + + @Rule public MockitoRule mockitoRule = MockitoJUnit.rule(); (2) + + @Test + public void testQuery() { + ClassToTest t = new ClassToTest(databaseMock); (3) + boolean check = t.query("* from t"); (4) + assertTrue(check); (5) + verify(databaseMock).query("* from t"); (6) + } +} +``` + +1. 告诉 Mockito 模拟 databaseMock 实例 +2. Mockito 通过 @mock 注解创建 mock 对象 +3. 使用已经创建的 mock 初始化这个类 +4. 在测试环境下,执行测试类中的代码 +5. 使用断言确保调用的方法返回值为 true +6. 验证 query 方法是否被 `MyDatabase` 的 mock 对象调用 + +### 配置 mock + +当我们需要配置某个方法的返回值的时候,Mockito 提供了链式的 API 供我们方便的调用 + +`when(….).thenReturn(….)`可以被用来定义当条件满足时函数的返回值,如果你需要定义多个返回值,可以多次定义。当你多次调用函数的时候,Mockito 会根据你定义的先后顺序来返回返回值。Mocks 还可以根据传入参数的不同来定义不同的返回值。譬如说你的函数可以将`anyString` 或者 `anyInt`作为输入参数,然后定义其特定的放回值。 + +```java +import static org.mockito.Mockito.*; +import static org.junit.Assert.*; + +@Test +public void test1() { + // 创建 mock + MyClass test = Mockito.mock(MyClass.class); + + // 自定义 getUniqueId() 的返回值 + when(test.getUniqueId()).thenReturn(43); + + // 在测试中使用mock对象 + assertEquals(test.getUniqueId(), 43); +} + +// 返回多个值 +@Test +public void testMoreThanOneReturnValue() { + Iterator i= mock(Iterator.class); + when(i.next()).thenReturn("Mockito").thenReturn("rocks"); + String result=i.next()+" "+i.next(); + // 断言 + assertEquals("Mockito rocks", result); +} + +// 如何根据输入来返回值 +@Test +public void testReturnValueDependentOnMethodParameter() { + Comparable c= mock(Comparable.class); + when(c.compareTo("Mockito")).thenReturn(1); + when(c.compareTo("Eclipse")).thenReturn(2); + // 断言 + assertEquals(1,c.compareTo("Mockito")); +} + +// 如何让返回值不依赖于输入 +@Test +public void testReturnValueInDependentOnMethodParameter() { + Comparable c= mock(Comparable.class); + when(c.compareTo(anyInt())).thenReturn(-1); + // 断言 + assertEquals(-1 ,c.compareTo(9)); +} + +// 根据参数类型来返回值 +@Test +public void testReturnValueInDependentOnMethodParameter() { + Comparable c= mock(Comparable.class); + when(c.compareTo(isA(Todo.class))).thenReturn(0); + // 断言 + Todo todo = new Todo(5); + assertEquals(todo ,c.compareTo(new Todo(1))); +} +``` + +对于无返回值的函数,我们可以使用`doReturn(…).when(…).methodCall`来获得类似的效果。例如我们想在调用某些无返回值函数的时候抛出异常,那么可以使用`doThrow` 方法。如下面代码片段所示 + +```java +import static org.mockito.Mockito.*; +import static org.junit.Assert.*; + +// 下面测试用例描述了如何使用doThrow()方法 + +@Test(expected=IOException.class) +public void testForIOException() { + // 创建并配置 mock 对象 + OutputStream mockStream = mock(OutputStream.class); + doThrow(new IOException()).when(mockStream).close(); + + // 使用 mock + OutputStreamWriter streamWriter= new OutputStreamWriter(mockStream); + streamWriter.close(); +} +``` + +### 验证 mock 对象方法是否被调用 + +Mockito 会跟踪 mock 对象里面所有的方法和变量。所以我们可以用来验证函数在传入特定参数的时候是否被调用。这种方式的测试称行为测试,行为测试并不会检查函数的返回值,而是检查在传入正确参数时候函数是否被调用。 + +```java +import static org.mockito.Mockito.*; + +@Test +public void testVerify() { + // 创建并配置 mock 对象 + MyClass test = Mockito.mock(MyClass.class); + when(test.getUniqueId()).thenReturn(43); + + // 调用mock对象里面的方法并传入参数为12 + test.testing(12); + test.getUniqueId(); + test.getUniqueId(); + + // 查看在传入参数为12的时候方法是否被调用 + verify(test).testing(Matchers.eq(12)); + + // 方法是否被调用两次 + verify(test, times(2)).getUniqueId(); + + // 其他用来验证函数是否被调用的方法 + verify(mock, never()).someMethod("never called"); + verify(mock, atLeastOnce()).someMethod("called at least once"); + verify(mock, atLeast(2)).someMethod("called at least twice"); + verify(mock, times(5)).someMethod("called five times"); + verify(mock, atMost(3)).someMethod("called at most 3 times"); +} +``` + +### 使用 Spy 封装 java 对象 + +@Spy 或者`spy()`方法可以被用来封装 java 对象。被封装后,除非特殊声明(打桩 *stub*),否则都会真正的调用对象里面的每一个方法 + +```java +import static org.mockito.Mockito.*; + +// Lets mock a LinkedList +List list = new LinkedList(); +List spy = spy(list); + +// 可用 doReturn() 来打桩 +doReturn("foo").when(spy).get(0); + +// 下面代码不生效 +// 真正的方法会被调用 +// 将会抛出 IndexOutOfBoundsException 的异常,因为 List 为空 +when(spy.get(0)).thenReturn("foo"); +``` + +方法`verifyNoMoreInteractions()`允许你检查没有其他的方法被调用了。 + +### 使用 @InjectMocks 在 Mockito 中进行依赖注入 + +我们也可以使用`@InjectMocks` 注解来创建对象,它会根据类型来注入对象里面的成员方法和变量。假定我们有 ArticleManager 类 + +```java +public class ArticleManager { + private User user; + private ArticleDatabase database; + + ArticleManager(User user) { + this.user = user; + } + + void setDatabase(ArticleDatabase database) { } +} +``` + +这个类会被 Mockito 构造,而类的成员方法和变量都会被 mock 对象所代替,正如下面的代码片段所示: + +```java +@RunWith(MockitoJUnitRunner.class) +public class ArticleManagerTest { + + @Mock ArticleCalculator calculator; + @Mock ArticleDatabase database; + @Most User user; + + @Spy private UserProvider userProvider = new ConsumerUserProvider(); + + @InjectMocks private ArticleManager manager; (1) + + @Test public void shouldDoSomething() { + // 假定 ArticleManager 有一个叫 initialize() 的方法被调用了 + // 使用 ArticleListener 来调用 addListener 方法 + manager.initialize(); + + // 验证 addListener 方法被调用 + verify(database).addListener(any(ArticleListener.class)); + } +} +``` + +1. 创建 ArticleManager 实例并注入 Mock 对象 + +更多的详情可以查看 [http://docs.mockito.googlecode.com/hg/1.9.5/org/mockito/InjectMocks.html](http://docs.mockito.googlecode.com/hg/1.9.5/org/mockito/InjectMocks.html) + +### 捕捉参数 + +`ArgumentCaptor`类允许我们在 verification 期间访问方法的参数。得到方法的参数后我们可以使用它进行测试。 + +```java +import static org.hamcrest.Matchers.hasItem; +import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; + +import java.util.Arrays; +import java.util.List; + +import org.junit.Rule; +import org.junit.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; + +public class MockitoTests { + @Rule + public MockitoRule rule = MockitoJUnit.rule(); + + @Captor + private ArgumentCaptor> captor; + + @Test + public final void shouldContainCertainListItem() { + List asList = Arrays.asList("someElement_test", "someElement"); + final List mockedList = mock(List.class); + mockedList.addAll(asList); + + verify(mockedList).addAll(captor.capture()); + final List capturedArgument = captor.getValue(); + assertThat(capturedArgument, hasItem("someElement")); + } +} +``` + +### Mockito 的限制 + +Mockito 当然也有一定的限制。而下面三种数据类型则不能够被测试 + +- final classes +- anonymous classes +- primitive types + +## 在 Android 中使用 Mockito + +在 Android 中的 Gradle 构建文件中加入 Mockito 依赖后就可以直接使用 Mockito 了。若想使用 Android Instrumented tests 的话,还需要添加 dexmaker 和 dexmaker-mockito 依赖到 Gradle 的构建文件中。(需要 Mockito 1.9.5 版本以上) + +```java +dependencies { + testCompile 'junit:junit:4.12' + // Mockito unit test 的依赖 + testCompile 'org.mockito:mockito-core:1.+' + // Mockito Android instrumentation tests 的依赖 + androidTestCompile 'org.mockito:mockito-core:1.+' + androidTestCompile "com.google.dexmaker:dexmaker:1.2" + androidTestCompile "com.google.dexmaker:dexmaker-mockito:1.2" +} +``` + +## 实例:使用 Mockito 写一个 Instrumented Unit Test + +### 创建一个测试的 Android 应用 + +创建一个包名为`com.vogella.android.testing.mockito.contextmock`的 Android 应用,添加一个静态方法 ,方法里面创建一个包含参数的 Intent,如下代码所示: + +```java +public static Intent createQuery(Context context, String query, String value) { + // 简单起见,重用MainActivity + Intent i = new Intent(context, MainActivity.class); + i.putExtra("QUERY", query); + i.putExtra("VALUE", value); + return i; +} +``` + +### 在 app/build.gradle 文件中添加 Mockito 依赖 + +```java +dependencies { + // Mockito 和 JUnit 的依赖 + // instrumentation unit tests on the JVM + androidTestCompile 'junit:junit:4.12' + androidTestCompile 'org.mockito:mockito-core:2.0.57-beta' + androidTestCompile 'com.android.support.test:runner:0.3' + androidTestCompile "com.google.dexmaker:dexmaker:1.2" + androidTestCompile "com.google.dexmaker:dexmaker-mockito:1.2" + + // Mockito 和 JUnit 的依赖 + // tests on the JVM + testCompile 'junit:junit:4.12' + testCompile 'org.mockito:mockito-core:1.+' + +} +``` + +### 创建测试 + +使用 Mockito 创建一个单元测试来验证在传递正确 extra data 的情况下,intent 是否被触发。 + +因此我们需要使用 Mockito 来 mock 一个`Context`对象,如下代码所示: + +```java +package com.vogella.android.testing.mockitocontextmock; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mockito; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +public class TextIntentCreation { + + @Test + public void testIntentShouldBeCreated() { + Context context = Mockito.mock(Context.class); + Intent intent = MainActivity.createQuery(context, "query", "value"); + assertNotNull(intent); + Bundle extras = intent.getExtras(); + assertNotNull(extras); + assertEquals("query", extras.getString("QUERY")); + assertEquals("value", extras.getString("VALUE")); + } +} +``` + +## 实例:使用 Mockito 创建一个 mock 对象 + +### 目标 + +创建一个 Api,它可以被 Mockito 来模拟并做一些工作 + +### 创建一个 Twitter API 的例子 + +实现 `TwitterClient`类,它内部使用到了 `ITweet` 的实现。但是`ITweet`实例很难得到,譬如说他需要启动一个很复杂的服务来得到。 + +```java +public interface ITweet { + + String getMessage(); +} + + +public class TwitterClient { + + public void sendTweet(ITweet tweet) { + String message = tweet.getMessage(); + + // send the message to Twitter + } +} +``` + +### 模拟 ITweet 的实例 + +为了能够不启动复杂的服务来得到 `ITweet`,我们可以使用 Mockito 来模拟得到该实例。 + +```java +@Test +public void testSendingTweet() { + TwitterClient twitterClient = new TwitterClient(); + + ITweet iTweet = mock(ITweet.class); + + when(iTweet.getMessage()).thenReturn("Using mockito is great"); + + twitterClient.sendTweet(iTweet); +} +``` + +现在 `TwitterClient` 可以使用 `ITweet` 接口的实现,当调用 `getMessage()` 方法的时候将会打印 "Using Mockito is great" 信息。 + +### 验证方法调用 + +确保 getMessage() 方法至少调用一次。 + +```java +@Test +public void testSendingTweet() { + TwitterClient twitterClient = new TwitterClient(); + + ITweet iTweet = mock(ITweet.class); + + when(iTweet.getMessage()).thenReturn("Using mockito is great"); + + twitterClient.sendTweet(iTweet); + + verify(iTweet, atLeastOnce()).getMessage(); +} +``` + +### 验证 + +运行测试,查看代码是否测试通过。 + +## 模拟静态方法 + +### 使用 Powermock 来模拟静态方法 + +因为 Mockito 不能够 mock 静态方法,因此我们可以使用 `Powermock`。 + +```java +import java.net.InetAddress; +import java.net.UnknownHostException; + +public final class NetworkReader { + public static String getLocalHostname() { + String hostname = ""; + try { + InetAddress addr = InetAddress.getLocalHost(); + // Get hostname + hostname = addr.getHostName(); + } catch ( UnknownHostException e ) { + } + return hostname; + } +} +``` + +我们模拟了 NetworkReader 的依赖,如下代码所示: + +```java +import org.junit.runner.RunWith; +import org.powermock.core.classloader.annotations.PrepareForTest; + +@RunWith( PowerMockRunner.class ) +@PrepareForTest( NetworkReader.class ) +public class MyTest { + +// 测试代码 + + @Test +public void testSomething() { + mockStatic( NetworkUtil.class ); + when( NetworkReader.getLocalHostname() ).andReturn( "localhost" ); + + // 与 NetworkReader 协作的测试 +} +``` + +### 用封装的方法代替 Powermock + +有时候我们可以在静态方法周围包含非静态的方法来达到和 Powermock 同样的效果。 + +```java +class FooWraper { + void someMethod() { + Foo.someStaticMethod() + } +} +``` + +## 引用和引申 + +- [官网](https://site.mockito.org/) +- [Github](https://github.com/mockito/mockito) +- [使用强大的 Mockito 测试框架来测试你的代码](https://github.com/xitu/gold-miner/blob/master/TODO/Unit-tests-with-Mockito.md) diff --git a/docs/javatool/README.md b/docs/tool/README.md similarity index 100% rename from docs/javatool/README.md rename to docs/tool/README.md diff --git a/docs/javatool/build/README.md b/docs/tool/build/README.md similarity index 100% rename from docs/javatool/build/README.md rename to docs/tool/build/README.md diff --git a/docs/javatool/build/ant.md b/docs/tool/build/ant.md similarity index 100% rename from docs/javatool/build/ant.md rename to docs/tool/build/ant.md diff --git a/docs/javatool/build/maven/README.md b/docs/tool/build/maven/README.md similarity index 100% rename from docs/javatool/build/maven/README.md rename to docs/tool/build/maven/README.md diff --git a/docs/javatool/build/maven/book.json b/docs/tool/build/maven/book.json similarity index 100% rename from docs/javatool/build/maven/book.json rename to docs/tool/build/maven/book.json diff --git a/docs/javatool/build/maven/cover.jpg b/docs/tool/build/maven/cover.jpg similarity index 100% rename from docs/javatool/build/maven/cover.jpg rename to docs/tool/build/maven/cover.jpg diff --git a/docs/javatool/build/maven/maven-action.md b/docs/tool/build/maven/maven-action.md similarity index 100% rename from docs/javatool/build/maven/maven-action.md rename to docs/tool/build/maven/maven-action.md diff --git a/docs/javatool/build/maven/maven-checkstyle-plugin.md b/docs/tool/build/maven/maven-checkstyle-plugin.md similarity index 100% rename from docs/javatool/build/maven/maven-checkstyle-plugin.md rename to docs/tool/build/maven/maven-checkstyle-plugin.md diff --git a/docs/javatool/build/maven/maven-deploy.md b/docs/tool/build/maven/maven-deploy.md similarity index 100% rename from docs/javatool/build/maven/maven-deploy.md rename to docs/tool/build/maven/maven-deploy.md diff --git a/docs/javatool/build/maven/maven-pom.md b/docs/tool/build/maven/maven-pom.md similarity index 100% rename from docs/javatool/build/maven/maven-pom.md rename to docs/tool/build/maven/maven-pom.md diff --git a/docs/javatool/build/maven/maven-quickstart.md b/docs/tool/build/maven/maven-quickstart.md similarity index 100% rename from docs/javatool/build/maven/maven-quickstart.md rename to docs/tool/build/maven/maven-quickstart.md diff --git a/docs/javatool/build/maven/maven-settings.md b/docs/tool/build/maven/maven-settings.md similarity index 100% rename from docs/javatool/build/maven/maven-settings.md rename to docs/tool/build/maven/maven-settings.md diff --git a/docs/javatool/build/maven/package.json b/docs/tool/build/maven/package.json similarity index 100% rename from docs/javatool/build/maven/package.json rename to docs/tool/build/maven/package.json diff --git a/docs/javatool/build/maven/sidebar.md b/docs/tool/build/maven/sidebar.md similarity index 100% rename from docs/javatool/build/maven/sidebar.md rename to docs/tool/build/maven/sidebar.md diff --git a/docs/javatool/ide/README.md b/docs/tool/ide/README.md similarity index 100% rename from docs/javatool/ide/README.md rename to docs/tool/ide/README.md diff --git a/docs/javatool/ide/eclipse.md b/docs/tool/ide/eclipse.md similarity index 100% rename from docs/javatool/ide/eclipse.md rename to docs/tool/ide/eclipse.md diff --git a/docs/javatool/ide/intellij-idea.md b/docs/tool/ide/intellij-idea.md similarity index 100% rename from docs/javatool/ide/intellij-idea.md rename to docs/tool/ide/intellij-idea.md diff --git a/docs/javatool/ide/vscode.md b/docs/tool/ide/vscode.md similarity index 100% rename from docs/javatool/ide/vscode.md rename to docs/tool/ide/vscode.md diff --git a/docs/javatool/monitor/README.md b/docs/tool/monitor/README.md similarity index 100% rename from docs/javatool/monitor/README.md rename to docs/tool/monitor/README.md diff --git a/docs/javatool/monitor/arthas.md b/docs/tool/monitor/arthas.md similarity index 100% rename from docs/javatool/monitor/arthas.md rename to docs/tool/monitor/arthas.md diff --git a/docs/javatool/monitor/cat.md b/docs/tool/monitor/cat.md similarity index 100% rename from docs/javatool/monitor/cat.md rename to docs/tool/monitor/cat.md diff --git a/docs/javatool/monitor/monitor-summary.md b/docs/tool/monitor/monitor-summary.md similarity index 100% rename from docs/javatool/monitor/monitor-summary.md rename to docs/tool/monitor/monitor-summary.md diff --git a/docs/javatool/monitor/skywalking.md b/docs/tool/monitor/skywalking.md similarity index 100% rename from docs/javatool/monitor/skywalking.md rename to docs/tool/monitor/skywalking.md diff --git a/docs/javatool/monitor/zipkin.md b/docs/tool/monitor/zipkin.md similarity index 100% rename from docs/javatool/monitor/zipkin.md rename to docs/tool/monitor/zipkin.md From 26da14af9158c9a82094fc2c7e5e06d1fce08a39 Mon Sep 17 00:00:00 2001 From: dunwu Date: Wed, 6 Apr 2022 20:11:39 +0800 Subject: [PATCH 03/23] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- docs/README.md | 4 ++-- docs/cache/README.md | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 99fa8c21..d4333328 100644 --- a/README.md +++ b/README.md @@ -114,10 +114,10 @@ > 缓存可以说是优化系统性能的第一手段,在各种技术中都会有缓存的应用。 > -> 如果想深入学习缓存,建议先了解一下 [缓存基本原理](https://github.com/dunwu/blog/blob/master/source/_posts/theory/cache.md),有助于理解缓存的特性、原理,使用缓存常见的问题及解决方案。 +> 如果想深入学习缓存,建议先了解一下 [缓存基本原理](https://dunwu.github.io/design/distributed/分布式缓存.html),有助于理解缓存的特性、原理,使用缓存常见的问题及解决方案。 - [缓存面试题](docs/cache/cache-interview.md) 💯 -- [缓存基本原理](https://github.com/dunwu/blog/blob/master/source/_posts/theory/cache.md) +- [缓存基本原理](https://dunwu.github.io/design/distributed/分布式缓存.html) - [Java 缓存框架](docs/cache/cache-framework.md) - 关键词:Spring Cache、J2Cache、JetCache - [Redis 教程](https://dunwu.github.io/db-tutorial/nosql/redis/) 📚 - [Memcached 应用指南](docs/cache/memcached.md) diff --git a/docs/README.md b/docs/README.md index c1a0c0af..7d7c9f71 100644 --- a/docs/README.md +++ b/docs/README.md @@ -113,10 +113,10 @@ footer: CC-BY-SA-4.0 Licensed | Copyright © 2018-Now Dunwu > 缓存可以说是优化系统性能的第一手段,在各种技术中都会有缓存的应用。 > -> 如果想深入学习缓存,建议先了解一下 [缓存基本原理](https://github.com/dunwu/blog/blob/master/source/_posts/theory/cache.md),有助于理解缓存的特性、原理,使用缓存常见的问题及解决方案。 +> 如果想深入学习缓存,建议先了解一下 [缓存基本原理](https://dunwu.github.io/design/distributed/分布式缓存.html),有助于理解缓存的特性、原理,使用缓存常见的问题及解决方案。 - [缓存面试题](cache/cache-interview.md) 💯 -- [缓存基本原理](https://github.com/dunwu/blog/blob/master/source/_posts/theory/cache.md) +- [缓存基本原理](https://dunwu.github.io/design/distributed/分布式缓存.html) - [Java 缓存框架](cache/cache-framework.md) - 关键词:Spring Cache、J2Cache、JetCache - [Redis 教程](https://dunwu.github.io/db-tutorial/nosql/redis/) 📚 - [Memcached 应用指南](cache/memcached.md) diff --git a/docs/cache/README.md b/docs/cache/README.md index 2af21d9b..20e0204c 100644 --- a/docs/cache/README.md +++ b/docs/cache/README.md @@ -2,14 +2,14 @@ > 缓存可以说是优化系统性能的第一手段,在各种技术中都会有缓存的应用。 > -> 如果想深入学习缓存,建议先了解一下 [缓存基本原理](https://github.com/dunwu/blog/blob/master/source/_posts/theory/cache.md),有助于理解缓存的特性、原理,使用缓存常见的问题及解决方案。 +> 如果想深入学习缓存,建议先了解一下 [缓存基本原理](https://dunwu.github.io/design/distributed/分布式缓存.html),有助于理解缓存的特性、原理,使用缓存常见的问题及解决方案。 ![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20200710163555.png) ## 📖 内容 - [缓存面试题](cache-interview.md) 💯 -- [缓存基本原理](https://github.com/dunwu/blog/blob/master/source/_posts/theory/cache.md) +- [缓存基本原理](https://dunwu.github.io/design/distributed/分布式缓存.html) - [Java 缓存框架](cache-framework.md) - 关键词:Spring Cache、J2Cache、JetCache - [Redis 教程](https://dunwu.github.io/db-tutorial/nosql/redis/) 📚 - [Memcached 应用指南](memcached.md) From 63e9b722c0911b594d7b32d68c74a1f30680da67 Mon Sep 17 00:00:00 2001 From: dunwu Date: Fri, 8 Apr 2022 20:15:15 +0800 Subject: [PATCH 04/23] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/framework/Dubbo.xmind | Bin 0 -> 218878 bytes assets/{shiro.xmind => framework/Shiro.xmind} | Bin .../Mybatis\345\216\237\347\220\206.md" | 22 +++++++++--------- ...24\347\224\250\346\214\207\345\215\227.md" | 2 +- docs/framework/mybatis/README.md | 2 +- ...72\346\234\254\345\216\237\347\220\206.md" | 4 ++-- .../server/Tomcat\345\256\271\345\231\250.md" | 2 +- ...24\347\224\250\346\214\207\345\215\227.md" | 18 +++++++------- ...at\350\277\236\346\216\245\345\231\250.md" | 14 +++++------ docs/server/jetty.md | 6 ++--- 10 files changed, 35 insertions(+), 35 deletions(-) create mode 100644 assets/framework/Dubbo.xmind rename assets/{shiro.xmind => framework/Shiro.xmind} (100%) diff --git a/assets/framework/Dubbo.xmind b/assets/framework/Dubbo.xmind new file mode 100644 index 0000000000000000000000000000000000000000..36b6e597023313c9abac81a5feae209a0894eac2 GIT binary patch literal 218878 zcmeFaNsJx$nI|Zr8`DNL>egt?c1X||k6mqM#=gj8)_4=jU6xCbT?N*pskHi(=RW)&9)9M( z9Qt$ow32IaVg>%;1LP`kU`6wlK(&11@PWVn*`o)A11m`?`KsgwzIOP49~}7e^+V+~ zR`5+fIeZ|C{YReiEMLXnQi#9s>LcX`9-+#sHP7r=!c$U zx%l_5VgrA#4c`5JtVyZ1e&}bGr>#>2$sHsQQsfFrKf>^j5d5LF>WxEdgU?m}4lcX? z^TzxcfPezx@|=v97ISjEKzf~OdQV8lafgE#wEDzES}GxKC0P?bPghUKpx z`uRE~Qis-lzJBO$*GU0C{VhNpy!kyzaf~>~eD(W*iwk`H(dyTswb3^KbbINw5<%;a z|K-2>+W&FYdiB`D4?XlB@aOTVg!|VZoD%q{=BFj?9-<%opZ`lo+Lcr~*uU0H8umX^ zld&eN9vnVkrfK-d+S-#(KDqiNy&8aUq$rAOKmX~E*B%XGPf8EeSA8VO!9wGorU-&q z!+V2|J!PhzJL!YfWvh3akGhucO#f*4?tv8#%&S|PdQg7)@PWS%53HnMBCxO*g1=dj z5m}C7NS5Hocr!6IEnTtH!v`3eGZH$M9U_ktj^k}Fi8+=w5@yo%P0fR3aFIarw#x?+ zV`v#o_%ulxtRN-w3=q~2r9o&Z)lG?vAytZ0ydX?<)h0dHQv!=7TzA4vlQhnhG>f%^ ziYp}$Ll6R-0mfg=tW}VBRdEBwdD2R>Qh=X!wS(n@aXBBUVjvj0Y|(;2xp}~6i7z<* zY#^=F)z;NamV-lUY4x8&+Ed`hQf(yb?awP=9ORa&#S;L^d|7fOU(r|6R^wQX zadY$V0X=Y4yj&AH3JsZv4P6(rNaZ=g2~<|$rNEqk^9hVZ6D&#MacZ3O-aESW;6{U? zT>+*ECX*WypGUN4cy8ozWS$Bs#VraLBQgzOTgOiKUcbI4fU&Y3bE;q)f~;^dlO-v` z3L(jHko!eMkA~uH0qec}Y47c4i*qj)AD`b7@JJzaO(W#QP_`K%A{<+aLoQB8Na6C} z{nZnXt$f2szq9h#-+aIR;fcrlKm7EszS{u2RxudZvSvX1(2{YrFAMS3x z@Z1;>vq(D~K%5zY;S)+qMXn;Iam3`bm*zG%@f;aHr$&V3SGS4>$BO4KZXLVd0Js|> zvPqP4xrYOp7gdL*OxHCzQgKC`n#&8z6Pg#Kup57O@8stF7dP)-*go>c#)C`0yLW0& zfTev#qe#<kL`&1B0qIYE^jE_G4tTB`x%n&&GzOZ-CoIqL zbH}DQGoW0%6F$H1Lb+-&fb4VTrRSh7hoRjS?Nb*jT*`A>3^korh@1$b+|Y$inx%O6 zjpEF?t!vkMFJJGSeg-fXcg__jUoB3*G7Rtlz0)OzAwt8`7}g}E#7(?ViG7@Ver_*l z+3l2=j(UZRw1nhoCSXKawVBLRq*RYm(__1^TJi43TQ@Hk*KTjW{CXn^^D)8YGUc$L zM9PLixK^G=8eA7a@yJdzglsyaW)ut!k2BlafRWa?HAc$~l5%>2L!( zXo%wZtGy%7Y#%?fdH>oN5Zy$Mi&1#n6|z zPp%fvou0(P-M}R>-c-djjZ~A+9Gzusmu6*+q+pLOuW@_Tfv|b^*^RrOHu&6?QXoCf zB-z+VIF_RXH6=YEmm^UVyMXt2-xt^u(D+bhu z|4`F-^NnZw#6I`J#^-PLUb)=>Jdo0k#5NRC6BJ(z5_noJVGDdpSV|aoBKG&;X=R=k zH^A+N(3B_JmSgiCN9P9oR6}4{kI-qq6KGpEj%~htb?d=}&8xo{#p$Ofw{G6vJDf6x z$}_q|>6DuCuHnEJrR*e*oKAMnvQP&9gU3R_(v?5lq1b?A`GxqXuRmNIvgqs+P)G;>r@qF_PYi86FFKD-HIBP5IPx zJwcRhEpiz}%e~woB0EvIPG{ie-HTh-E;S5Vb8YX#OZcJq<>~%^U;T9Z)tkWc=9@3} z&R*HLwTF0Sz1Z?hJ9phMF%u=SWi2s$*ONP$T+j!pWchof5Lm(_C_a`VlTjm*@+`)) zSe9q}g##fw-1>@nw;sH(b?Gz=pW^kaOR?%Kbvx_5>1HMA`@Wtep5&N>E?7RBW|Hp_ ziA61Xu(2f9gj2TPd~WmecSkI`-Kb+$P~^xm6WMeKGUYhhmJyXA$ShwJykYD=is*HK zxI3(v?YpmSU3+(u{W2X_oX?4RDiA@YlSWKZ8Ouo;pJ;m06&PJg(lG{@0e}))f*iPc z7Fm)YtB#_Xx+bI~(h18ONhLNCN!OMDfM-a?hOS9j(I)YWjTwtGKby!E_C0-39QOzil>2xA| zFAgMCnZyI#gqepy#pkf~**s)SDUk?EuoEK<^+oxErP`qFL?3ZC!b}n(ZNQsO6(dg~ zD<)alvg3@fJ9&>!Aomt{9YvXn3?g=A+jWxAB=eAmFX#G}kuQv?VZHK1ndN#SkS%`+ zR$?8Oj3dtH88%SK+-7Vh^77DNJ2_}S*1$&JRZ=ToMxH4>CUm%lkwOTjASAw(WrA~P>WX$EggC3n` zJqT96C&fS2;@ncSKSv-iBw6(lx{tWGj`>FVaYcZMagbb3C%TfF^? z-`zW1hjDvvT|#7O_%o%S^z0kG3m*=@h|d@2uJ=y;21&f~=Lg4&OCS8xkv7pZKz%pW z$QV8)*;*KBeB^tQVw*9=Sq>i{gTK7)=`-h^P=w`R5y=7TTP81Lp{zz`q-OyeP0HBM zQz+|O6-A2cw|l3K^e&uQ`O)JmMHRK(eEDMU{K*ot?;Y*EeW5t_e(%^P<>xNGuyO1C z@^dBW1|QnG{u$6;9KT!~|7_#_OL%)9XhMZDt>;n_`Ko3}smvv6rg?Uhbh41g6~&&A zhmNAmCoMh8qA;RE!Qo8Z&hkX-c4*b)Irn~v`O_zgYY>AnVb~ykulb%;8OuZRLnru5 z6)eS|Lk+0jheZ0nbsVeTjRL2+*wB0^(q&RV>_bRfEr~5?t{H@JrKizon zR`Jnm#f7WG(a8N!Gl9jU;!ZM2(;%rN6%ZMbQeMy&wu*-=wsp;yWLHxUqjakE9(Hpg zbBr6vE*XT1igZaB$}&%Co*C1ff@WLqJ-7MhE45YJd+mDh!h5Z1Id^^I))}aE;CS=i zoy`l+)Nk$GAxp%L$7YDJWCC3M*ofGeFr6q?JH=e|AXc>6p4$@<;1pWX7?%H+I-o(`x4Gm=$Xym44AyadvWhhaq`pNsVfLymRwyOyCng3zCL~t zoWsM0QE}tBtrPD6bub^fD5$KOe8c1@N%_Ki z@Ht^Ym7lNDeOpJ4*H#v)6`&i7bFcN@yos-Gzw>Ny{A7KR;`XPT_g;d=s~HB@X_5t- z`0&}w8+XsvA3(lf>+EO6xmSjH1C*^<2!L(ed9FBj6uPwjKnc==C_03>@}J zt`lmS2CBeO==OFaBj>K2%;Od$_kng#*7gy4jkJA zPlj0rc;2}88W>^o&K01#BH-EH*eb z$n#Ay(y1`9NzwNiIiV?wgJgAi^2+Vrh0DDs#3cPNaCBLu3`J8|nx=gr^mE@(mMH2Q zBIYDFw|MS2k~gL3baGX@xv@N>a;RvsQNBP+j)fF<=-7G?+Dn{a?Q<0`TrZ7dsJUMs z>0P|MH<+jVTuo`u;{-{}1CmW0!%hQ^MG5($GTuU11|W~Nr4+l7Z(d7qqOp3(<7y`G zOswRb=@Z!!c2)~msW0zdMsecSgA*&L5LeJrP=%fjtQ5yT*?#q-5tQyOdO;%Qu4as@ zpuU1e)jgSMQbzk8zeH+p2=)rV;=-N1D(B`HSrA1tBt0{V9Ky8Y$dFtnW0!C)TJR9I z*tqj%?H8B!((zAFr2skWoqVM{XHVQg4MTYXe*XUE+3OphzqR#Sln3@t!1BAdj=<@F zwyn8)lA4^JHDqldS>;UDS9C!O-6%~|f+j+JiCTg7Nq&kW$~RW(#aqoO-f>hCgNzX7#f6RJs`m@tG2B;5 z$d1(92dV zg0zV%2QiV@xtVho8|j|!i?T~}Ic~<10x&a+dq>LthI7yNe*259>*vAv#XH9~Zk18i z&AaD{TeoUsZ}aYX=%Z188lk@GTf+gThA_Co)`Qn^1{6nN(q4x(*uT`#+lWy?`PPJN z=(jsXMkDyF*}5mmsiNd2m)nWNIXEji$ycApAno_gH307BjG%o<%N(8)G|LEWMpq=3 z(g}@P#(`}atS{L=f9%IABju{QfsxF7#S;)arCgPgGmYacHL(ycTcU)$fpLu2zTu|d zsamuii8WnALzJRbJx)(O^;AFof}SU|5XQO$=lnn!bd_97mSnVpKK0b<&xbyi#puYZ zueG*@J~GKIQ!I~AgdidwuvR8r8lvrztK^WT0>)9SH1XxwQ&>gh4AwBah~IjjYzKd^ zQaf3-*fgN-hIX_@=!r*3a*zkEtHStD(4(3sXlCkQ9NAJXtsMNpbQ&CS(s(iNO-7u7(r)Xz#sp0@*z_SQ(eSmy^rz=uSjAhs4vo1bqk5clKT<6Mh-N!w4?!jfZ^%KE^C(seIkum zi%TUT8(SnxX%^`%kzi=CxX;W`KMwjO_pUh&!s-(Y<&lYHQ;ESb2F1xdD|NCu&_c3# z3T5{nHU!uW?@)YV`B98Y(IDqJ*UxB*rad%bb#jdN(B9zLJP}ke&eeov1wpVf!N^$j z@^%4i>2 zJ}d2zTj<+5-MmuT@-Lh&gHCnI>&;smcYcXF*(xSl8oMxa`^5TU)`K?@P^~Yz_28M!D|df)?~TFNE?nKXf3`ULi{kk=%jnyyH+$E9TS5nC zpaK?;Rh)Ugv3(FM>%DTLzSiIp&z(WQwN9S)sgttI>uG0g%g{IhjL|4ZU+krwMC7Up?>vwa+eWPnn@|+txfYQvk#KLBrV*X}qYa&> zVd{%ubFz$l{!RHoJNNCx%zzCL&4$+gJwltHEl(RFcTw$pD!?~5iHzh zg7GwiMAW{L>d(3yPqXZuS?^7^g^1j7MTaGIBBLl?NoXRqDAVENPVRqwnr**+2F7h; ztnJ2&Ads_>9NX|y)$=96k5NX8#0ZxxQGYU>o*oAD9Ii?w5V1jfiU05X%yn1l3Z2@5 zEyLm0Z-_W9gO`gp-(IP{UL3gxyScQ?&%LLy(^*20 zVM2-t%A{R_6H-f$mI#uunEx>t$+L&TjUF-;?T0jvrX+!bHm z0-&VLm_$mTgpCz2(MV+@R*7Aj$d;)3Xn1uU^S(wSpS6U~Dxju=fXOkE!`0n{r?kYO zP0{tGi0Oo(HYBq=Bn+Ht-Q^S+x3>&NcI1%Ztb~y}`B-IwXM~aFBZE{3-bySfSAQABQdab<=0by=%#x)BX? zWzb?%W_lwh&O~%1Qy~?Fq3@`j+?_g>+V|p`gJC`iS&JZ9CbM)`;|BOhhgNVyx~Qz z*Qq#SfQy|y{PRVH)a1lu70rzl*N9z)v!l#SqQKe(GQgtMEWss^!DW1g?4KfdiJ!%+ z6^AJX`2>`_L`TLbP0+}*bMVG|Y;ds~qL^H^6D>1w9GfX?yD~%XMtxyos2O0aX}?}> zJ`hC0N^+ReR48grk`WH4D4rD=>7=H(DcvcfxR7E4Gf4dLZtfbK$=QYJ=09y4UYKw? zjR{mV#7_{7jK=`2q*GNueFW8I)F?gK{N!$ft=%{Q7z35tv7@L?8vBWzq)A{oh5)~% zLnLdxw%_5P)Ww4^)$34w8IS+)(#GwwE}%GmwfOi*{W!&QXX@7{S>Mw!i%EEb!^;fC za*E5wz7r*ik!apBa!Bcldm^UO8YQ_89LK}p2aH7d)1Q- zMtMT~JSl#;wF+B#r6#7uwv_Buwnf9nx~<$tRZT{u!ePs54>!EGLOC?8ipD3Xxthx*T4 zW$;PcNDPzGU6=Q1PeqM>8VZ3#3X{BKOgS}>-v1`~ZSq?qZL9*#5ER2v6br+lLS;1+ zb_VLoq0B=-4Pc*6228C`Jw>4t&+~OXi!c(|venQK7IpzxPHeoldZt{1y4^@IADg)* zG6}(IA{ho49;GAwje)e?52yyN`DkHclMlVnv1H#Wix_EF*CHwn=`PXm_1LqPxHpes zUM!>KqMMnyVe^5ThHUP{5>gb)mvx$20;gsvW6h&|q{PK2vwfS4eO5-{CS}=Lr)Mt* zN-y*9nMN_WF9Z(Znv&ooGKo2%hPTWxlU5Ht2`i`01uX#r<&};(#vEgeh)KZ*wL~E| z6ffLv`B?PI~)^iOe%yc$kpz zMNJAlog#hDvx5LbQ{9-;JH;V>YI)&OE+(bwvJxWXz^19dBaPtTKZ43TofzOJ5*p^l zP~S~*Q1TNh8RJQ;=5cYV3kj1T#HC6Lha^~DXwLbcKK`QyuH6U>NpYzmn;spIG#ywu zIy22kWHBA6i>B#UP1e&o8u;e3EUEgKRb_JqXvW);69{g=UWTG{pAFY|ffOkI4p1dte9kMN)8*Ia`*k=~8PXD9Vd@m(wz6v329EmXF8ho;QM7si$RpAzE>=kVsR9;KlsZfaD~_t=Y$HQ#+1is@Gm+zE0mD0z0$mmB5j6=f13>6+Gm`<~kzC&4!_7eZOdqaV3c~BGr|L1fNEk=Y zjKp$c8%B|}poPegw9xAE;E*`^*^AOd{KWq;*uQiaxgAs}`~Vjm=&bC;~0j z15EuVL^d!*L6dZnq)B%Y5>Y)|?q#8Qj8^1SUEmdHVF#Ox@*oZ{`4MNrj;I$(#{^Pj zSeC9HrrFDam^*Kw?Um87^+J(MHe^kiPizG_BndJ;qq76HQNpD%2EXE6#&AY~!T4cR6n zEf#!2mF7l_TTt3ze*K{0UQdFqh)Wp~YiOKqkQhW91+wBHz7nC7abZzFC~-jCu9Kfj zNZ@7WgryR?qzN1$dIHSA3=OH#TywNVS?h^UoAivi3wu84xrCnLBR8~CjH-2XB8H=g zbsB1BrN&&VwS~ULBjmN?WaknV+9Yk$@FU6QCC)d6z+-&Z&e4RtI89qQsF`nHCOOv{ zVdQLE8$0uP*7QR?l?YiC*;I@@!YAe~eIrFjb&m$sLA{7+Spp=FoGMZud+?!O$x7?ZEj-On38CxBF+_{x0HKqhk92$nY z)2LiVj}u6{7-h|lVPOC38X93jCDso$lp2`A zGtK0dLw!qhW7hFypOq*BtSY70H)Jbw3u7A`@$DHioKaW?L%gOXm?X-Zdd|q2tx%-o z*|{PJb6ZAg4AFwfx7IE^%@#Wy@ltMV#GFV8OCH%&76~CqBeX8F`2rA?x&XW*ws@JH z?I_hPPg@xkahU&T_!tr{5svN!qD{^Bcl&fe??B5VGo$9J36+(z$o5FpFz3!9t?14QB#8x_1H-{i z0)N+pr%)pXb1MolnTQRX7(7YCVKezjp8kYGK;Q|k9q~UQ)3XeISl8l_vSmq6(KUiG zcvg$U92V)^z-=EtVBeN2l0XXg06)1y2Qs5&iA6sbN# zL38E&B-21JNT%h;4oRkJD{7ITz zh(R+1H|Lftmi$Swn0h3%>S?gz zqhYgUloJ6xnJQj{eGZO>WvMP@V*hSRE#e^n6h@>eEa2%Y?=eHPUU%1@dwB9h@60=8 ztK5esUA$6u9$Y_P9RIYqcC24T^ZL~l6ggpr1BRlY4PoQX*{$n$doP_qI1yji zxc^-JoifF6>pgTaU{K%o`3LpPok`VEiy2a!o@3fRpHn_BxN)pzik`a)1XZ9^glScD@!*5)BNrQlmqQP$ zj*zl|t6F*l9G9f2))Q`i@QdQiC%xw{V@cr%5w_oYySROH^P^KJXDWL^o_oEaN$>j0 zWog(eH;Q-O-nw?9xPQJo9SGG;Twm5GjC+d$F;Xmt(rrOz=9Y;J=uqzT9+(tkTVIx; z0~a#B%6M4PWLPF=k(MH29S)t$-{8^Gp>^kL1Q*v%p{%dOch!nt+&c;`uRHMT9-iXC z{mt{2M{o~hmy^7&T`Ct>y?VKL@M=kiN+h~tn)6jc#5&8wqU8{$4~sMesd0in$+;ar zU7(8Cp~HD>z0ES1rm^A1M1LP6U~{|`C7hUeNF|Hqn3>tNNiC*Ztyp8aRz1CE-YMQa zQ{o$4{^xGg+}Z!Y_0O;dxqJ&VyfJIwMA<4ef_PLm_MW*8U9@@e@^0}>MR|~73VH5F znHTlmK7Yx366L;(ftA6`z@6HRjCaO031A)+F=OhTz9azD! zQ4dt@T{wc;PE2+M$OsE|mnO!sBQIiNl~#F{#qjXVapVN602gE7QksT>72~^-mZ2}t zXud2<7JSLv>7oK>&)IzrNg5?li%=f6K?qYgitNSi|h;hAJ6^XH28Zx>p zZ~8HO~rwGG9#>gD#EAH9M@zLV9?g#OaE)xQ*K5T(0m4K96DqWodPZ(5E+*O7mYdNMx0s<;0)hbQ zz);(M<6Q5;9ViTp4C=jgtTgeff!Foxz4wl8o;@*1#M@XspD{4k6)fu!64mmt2nrT+ z?wP@2$LmhSj4M41ChDJA?{B~L&c?0hH{ZF@`{mnZ@l^#J&Zbh`-G8oDecLC_)zhFc zU!b^kto-?{6UFHx_{`Q3v}M0sK4B{HCz)wCJmG}q6US4FUSdIWCn^(5uwUO3z=RO+FEC0!fv>w z4lW&qgr=G%yc`m$sU!PhOJbsO3nU_Oa8>OC6A-zni6Or+nud42QBb!_s1 z`GeQDU%j^dPRV7pzlHXb%@04^xC4{w24n~3Rq^@B-tp4U1{?PN;ZpB(W!+-UL3IT% zW^wXH`xUhJ-}tyVa|y#qw~zk1{MPN`C2!t7Ubi3BrF->vF=C+pc$D427!U(ncb-Yqiwb6Xlhw&oDRn}j@40&*D>GL6B{n@oi zm~QnS=}9yS>g6Qig~$#unw4@`DG>DrEOo7KK z-uxBXp`hJHK8!C;d;|n-YPC4&Sr$`RoR^EL$wJywg43PIV!cquN$4(SXjeL-abDKT zqL>L=9G77nmIz6mlXRP5F!j(3eM6@b%k<{YORK!83ZOP(fl~&ZX7GAe%C(XW$JB#N zOSD$9+&gl&TzG+j!Y6NlpYWwdX-vXw%Oy-`VEI+xf_lt{L&mYC~ z;_}7YpY&dQzI@a=PB{1?-omt!G7xz0JZ78}r><-sJBigDI4CD!VHSVQdauPEAESJS zNL@?HkZW^XBGN=9rzB>gt&gUSB*kXK!v_$zEu*(3si)Y2b*Et`LyVH#6!oo`FNA1< zWD}^r&-t8G^2H4wzKP?m*Ut0i2iN;QRL!29;9?n;_jFQMjmTHv5`~e9;R)EMxVVAX zdZFtx$MCJLt{zx%u})J)Cm#kLA3lJ^lD-<3OKQ7JIBF?Qr6$7k5uL)!jrf!z9Y@08 zgNR<-JQ`{ZDz3fLJNemOAeWQ5*iLoqUXiUhR#bzd)i5_ge{pR;l=p9u+svgHo^rUK z=*1e~SP@Moq*5!9P|YBr%}2EsH~9GW&}wrzW8~|w^mv!0lOs;ZE-C2lXz|{8@7zS zU}|PErWH&q=^qcORJyo@t3~-#3D`d(HMd-vOp6^`EQ;N&0A+v?LlIfRVyRAMWtP2I zG0d!EtKRn7O~hOX6jlz?82m1TK^UvNf?%?*ctMseseo)3-bu{wGb zVocFb+|-S9M-XEwF&8q2DS|=HV<-f8{0uhSbsU9Po>XkkA&aTHmd}+|Q5a!K3C&2# zVvbk^4&9yzb4TBmw`9;RnQDP;Gh&YEIxI%snUR&m)+AONXWkM6L$_RX)LnHfD?yJg4J?)V9~f_qeqBm7H4oE9#7v6w97_gL9bKRrg&Qs8AXM-S zab|5#lvL>S|)xer`m7l+cyFBkFBd9T)I-v-23~WxJ zGB@JjIC~sy5lJL9bFmCYjiNSiQ?L8l6^clkFbvYk)eu&Y9hd>>mR^TEe|G0|6hWu# z9Pqac6OmzTV@e3N|IsonxF(D!+A~QfT&%jhWa_$$vaX6egDs}lc7-9@@WY{NgJ(Hxx)8CS)#B-lk~v^Zb4Xxe=9#opN~*wl>Ol)FO{Cp!|H z6yH)s19eo6WP6;Vh4V*>wbUCu`JuIU&b(X(Pi421p8FP`dbHw85*x)}DN%J7S4cz6 zA$6D@X8Ep=MB;d5@=!I6K$6@bjj&uEb8Jj??ue!7NP;u7i-u;*Vbddz(v>iUy=G~K zh-G|b_weG()cSPI1jJn-iN>}<3>HG+f}60Iw?rwnl3}tzhKjZMWss9iq>*`{%kU9R zn{-I~=ujYRRs=&6UVt2Jf&%n~!5KnP74X{?e#k^ZXAhSs*sMV7s6NRtf?c(Z`MX`G zGtt;6(`7Kk2851vHXLiEh!&&Cg+p41cI=5WA;#Um5e-@A_&Q){F$0`QQBjThejgqD znILAmBw-n~i9uEik&{7_-q1*j8q8fySuNcr79J!E4;GsU;TZTvq-iDzw@F;gryK!l zAEv67KoTlO7n;~|?`K#Ii`@^HCWFx4^WSmg3!4wvSycPQNlDMau{^Hiuz`c+6rMxIzhuh9QkiLNT(uP>T)%k{HO^ z+Nmn9wjeh_fXXYr8RKl}kh_r<27jp*Ch( z`DL|pUyrM809poPSm=x#nXJ&Php|B^tvRqgsGOh|^U5l4h7O9VTD%5l>&mmJ7Y5#H zbZy)^Ti4<@U@n5US?aNQuM(DN)3vGqk1hxpXDfKBhlDT%ZKYe87NVAaA@zv}IHpDo zWN0iMP)|-q#uBmofB!d+t<-FT-LU-?w#{VaGA!9lh%Dc$#w*RD4& zGXP}T$YzQa`Enn53&;$bP8;`Cm$p}-&X!rm^EMJ%LrmG{O~S^YJ6ok$KAoMSa#?n$;~MybtU)f8I0W+QnS z<1iFNM#e^S{7iMo6eBfM$Us$793t34 zCt;hzVo{2n0FKErae?t(ce$}}8V%K6y#%VphCsOAQ0K#VQ`?ji1Xxn8rxJuj&yVIT*b z$}mhYWYEG&D=NbXfQ4+?3iqwkHOlw9Tz*;tNcw0A@O2?fkey2shw=g*Tfi`is{?>D zaNi^ls|6ch!fM*`VKJUfO-0hru-es=DKwhtg3It3Hef6gXRD|&R0KI9341^d)?p-v z)(FzpV;s{MyGDhQFA69dULL@GrN$n}1|#WMF6;Yl?5UQDEH#o0xy**lLVZ59UTW>4 za=B*Jpu7jGW=mdSLygvbO7hgQ`qw1H%#ge!4p7Yd6(hx;bt$}V-0`82&WpJCby3>5 zVLoWrU3&^1!NEcG)58xv^k4t$4)c9oM2-e)K$4lT=QW*BZPVQz+eCD z(SvX&Q2dWE!*1ZCb{BQof4+XGf}+0E3NGNI86EpxA9>2Nd=-C7A^yUvk5nId1k8M( z{@5dWaQHwurR$NkwI`o^a`j1iHHeKhQWV9tpa1m7YZwOLN$_p^-_8NU_@^m?Al8x` zF_{ML@($~Vqzt>Sv3pNBSc8U9%jwgYEm-m!gL(BR-}88j%t;v&y`ibhRP{CFZR)CI zxJ^%oc*6daYh17Y(?KM$LJhGzEm=WLmIm}=4bb5OUl)k-_kqeoEpIe@KVC%}e5|CH z+^VOT*pC#y$sn zy7ITuUucMz4L*=qe~+gisStQ0l9L)TB@N(nd+oCLlG2d>r&wa^mfqp28-y{cq!j;Lp1N+HNM`tb^!pO){f z#`pq0mm81h*hpToyRS`tYL4aASaM7`N(2)Nf$WeDG;Hd^=sUm@KfVX20OyK8yCL^9?d?s`hn<7Jl z)D(@P6@@XlKtzYkPDmF*{8H?;6X{~fqI=0xyh&v^5?KsWQ&ns^3S~qSGT%>epYD%F zE+k1iAC08TFYVA1-~Vp;d!Yv|dzLiyiG^i}bX~{~6%a1U(>kF8?Xb@%69 zOoL2%?!jwMYGuK6sReK>A-lMjwC13sWG_=y&vXNk3lrZDQI49KV*)3a=&bhz4t^XK zy#cU`YKk4~P#us{4hEhUe~6y1g${;ks2Kp<*RIPl2FfLEh0bDC33QpZ<;=yujKMN{ za3)uLTdYswGfUf9T4=lY7gPjOmH2CL|Qb zR$&?{#<{qeqoG1^j3@WTNTOIRvIW;sb52riglq*q)@_4Dlfj7G4_igQmqrrS86zqr zsjxkB%MobH20zoBf$qAIN8S5VYeBx+2P27(Y{ynrEm89{aai=X6AB%uN&;i7gJN$4 z_DeF7*dz{RG-eoflG$jGkFldQV@*Rrk;l%*`Lc~99^*I_pQEwMh88n|lPEo9L=$8G zMj_pMb{nX^+7a1vBZhry43C`J+= z%Bn1)9Wh39Q;K{_WKGMqvC?f6NnK>U(Yb##lIlnj@0XQP7M+ya&Ulqku#e7hXv#x* zz)qgr8zTudAn5l+3k_+Z@xVg*j7lAj%gQBTJMZ^@{A-VvC=HFy_A-Di3tNqjM;=GEdqi14o}?(?3ZLD(L%07ENd8M zjKGeJ&RPkJm#U*9>CU_C$*n#VDbuGz(b{ns_(Q{nd^n zF{v9ff|D~kZ3-S{BBu&VWPw1A9S{S{=nv3HVmLz63E9wi13OD4DZ?7$OmLhGmE+w7 zV!#-U&i$j2)Hjl>*dhJY%A+8H1ghwk^hD3$#!vFSF_NfA^CB@%NYnIj;7}CO7YT!z zmScy`@4bt~(#+%Qli|k-!jmB(qJAa2R@OQG*X#gY>_%lHsWBP33Zkm}hJ>t8XOH zF~?&ap@E`)*Cr_)3weVS2|M`<&>%ZWTBjKYuZ`wP_A=c@Mp(g;Xi=O>avrCNm<9=h z#*y%kMp9cOLzB9TElOx=cCxaHl@(*rRb*2@8F6=k7|42~bN^^0^^GJfV#UsG><*Xg zgpO^7M*NN-EP5^3+(_bJ`R zc?u$Wj4J5_R+^)CTu-DtFrcwUiSW9tjxfHf>u)OK9sf{EHfpsZ6nQxir z9-M{Cko1c)lCW^p<0FYT%p_sy$TeNd4za{f!#19s&-@1*NkUfx>SSaz`#b0t*Tsw@ zXf0+HZdYEzfH4}K`$r?GHj+?8is3pU9~)BcqJ_+51i`UfRzb<~PM+KwBZBoVAdQI_ZAj;-j1 zY>OD-rg)Bzb;%+>-^JN=Jgp|ad zoAONTI`PDS`2u zqdd7cMiPa^ae7Fipn$|UsWfG5QKTfS-W`*H-+Lp8xAGt&4PHpmJd6e}CUJ7x7hQj> zk*^CU&-Meqyhsv@<)BfVClu#lE}13qgl4B+DB0bLY#V|7l8hvn@|NyVG$(p=8fJ!0 zP*xslxj&Zi__B>8%1vp4Ms0!;VjHfRsF4!bhGFw#G1|Rnw|$NzF|oj9LL_4Em_Q1W zo(mj7#4JtkswVxbZzOTpy~6SYDT!KcajK;&rm6CBuKqKQB$0v|qtU|%4TVth$O{!$ z(en`9KBEWHAFz?ckg1U1DCob1sx*@)%e%8qDWhO~>lS6q7T?E;*yId(I_2 z$@0f8H=|#A&gB|yJA}O%oyc>p*5~9g_-3^2;)-kI;<8q;+3@@f8XK>0SYm0J5-^xa zkIioZ=3Q7+6NcR{QJmfbI|m!nL~%x!>zpf26U7_Q5%qoG6Mjy7J~+Zjva@=y#iQwP~U_qd5#$Tu2mAaOx3BWWaOE zkrENai1C7)%$5B<6=!r>&B4YrQJm3BHRp=cL~%yT(!4895yctpKy$7*B8oE_apqiT zk|@q-mYH+4siHWeNoCF@CyL^X-j6w#n;eZJH>~XhFag7ZOF1AX#0&&`81I zJP`v&rI5mct(<8R^!s!w^3&`2=U`)+D9)(ZpL4}&qBx^4e%=+Qh~kW*^Ep=>5ycth z-g7QANfc+4WY4+UR8gE!3O(nN6Gd@Gh4GxrO%lZ!wYzh!Hcb>~6uRPy3yC6S<5;wK zg;C+ZGq#&sIq6xH?l#3~`z4Cgt48NwW4b6#tqYxV#c85Aqx^E-6{m>ejMBzAR~!+= z8AXM2E;LCLXB7U;x!P1woKbK$=aLgeaYh~6oXbrT#TgZ1bFMZ`6lauE;ff21B0FQz z^1g;`X4EFl!NxREoKbx==Ze!raYm8Pyem!-#Tf-ObFMfdiZe=A=3Ho!D9$J^nRB(N zqBx_hW6mWfisFoFi8+^>B#JZY5awKMnkddl+T)4~iQ=r?8T%`W(=*_6urW;(XXLo& zTydHx&PXNCyW$j4oROxTbHx!+oRJ`%bD>G1I3tNU=W0_$aYpiR≪`;*6Z!oXbrT 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 literal 0 HcmV?d00001 diff --git a/assets/shiro.xmind b/assets/framework/Shiro.xmind similarity index 100% rename from assets/shiro.xmind rename to assets/framework/Shiro.xmind diff --git "a/docs/framework/mybatis/Mybatis\345\216\237\347\220\206.md" "b/docs/framework/mybatis/Mybatis\345\216\237\347\220\206.md" index 89ced559..cfdb4ce4 100644 --- "a/docs/framework/mybatis/Mybatis\345\216\237\347\220\206.md" +++ "b/docs/framework/mybatis/Mybatis\345\216\237\347\220\206.md" @@ -243,7 +243,7 @@ public class MybatisDemo { ## 2. Mybatis 生命周期 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210510113446.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210510113446.png) ### 2.1. SqlSessionFactoryBuilder @@ -253,7 +253,7 @@ public class MybatisDemo { `Configuration` 类包含了对一个 `SqlSessionFactory` 实例你可能关心的所有内容。 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210508173040.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210508173040.png) `SqlSessionFactoryBuilder` 应用了建造者设计模式,它有五个 `build` 方法,允许你通过不同的资源创建 `SqlSessionFactory` 实例。 @@ -275,7 +275,7 @@ SqlSessionFactory build(Configuration config) **`SqlSessionFactory` 负责创建 `SqlSession` 实例。** -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210510105641.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210510105641.png) `SqlSessionFactory` 应用了工厂设计模式,它提供了一组方法,用于创建 SqlSession 实例。 @@ -318,7 +318,7 @@ Configuration getConfiguration(); SqlSession 类的方法可以按照下图进行大致分类: -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210510110638.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210510110638.png) #### SqlSession 生命周期 @@ -352,7 +352,7 @@ Mybatis 会根据相应的接口声明的方法信息,通过动态代理机制 下面的示例展示了一些方法签名以及它们是如何映射到 `SqlSession` 上的。 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210512111723.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210512111723.png) > **注意** > @@ -397,7 +397,7 @@ Mybatis 支持诸如 `@Insert`、`@Update`、`@Delete`、`@Select`、`@Result` 这些组件的架构层次如下: -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210512114852.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210512114852.png) ### 3.1. 配置层 @@ -451,13 +451,13 @@ Mybatis 和数据库的交互有两种方式: - 如果开启了二级缓存,`SqlSession` 会先使用 `CachingExecutor` 对象来处理查询请求。`CachingExecutor` 会在二级缓存中查看是否有匹配的数据,如果匹配,则直接返回缓存结果;如果缓存中没有,再交给真正的 `Executor` 对象来完成查询,之后 `CachingExecutor` 会将真正 `Executor` 返回的查询结果放置到缓存中,然后在返回给用户。 - 二级缓存的生命周期是应用级别的。 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210512185709.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210512185709.png) ## 4. SqlSession 内部工作机制 从前文,我们已经了解了,Mybatis 封装了对数据库的访问,把对数据库的会话和事务控制放到了 SqlSession 对象中。那么具体是如何工作的呢?接下来,我们通过源码解读来进行分析。 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210512173437.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210512173437.png) `SqlSession` 对于 insert、update、delete、select 的内部处理机制基本上大同小异。所以,接下来,我会以一次完整的 select 查询流程为例讲解 `SqlSession` 内部的工作机制。相信读者如果理解了 select 的处理流程,对于其他 CRUD 操作也能做到一通百通。 @@ -473,7 +473,7 @@ Mybatis 和数据库的交互有两种方式: Executor 即执行器,它负责生成动态 SQL 以及管理缓存。 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210512150000.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210512150000.png) - `Executor` 即执行器接口。 - `BaseExecutor` 是 `Executor` 的抽象类,它采用了模板方法设计模式,内置了一些共性方法,而将定制化方法留给子类去实现。 @@ -488,7 +488,7 @@ Executor 即执行器,它负责生成动态 SQL 以及管理缓存。 `StatementHandler` 的家族成员: -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210512160243.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210512160243.png) - `StatementHandler` 是接口; - `BaseStatementHandler` 是实现 `StatementHandler` 的抽象类,内置一些共性方法; @@ -586,7 +586,7 @@ Mybatis 所有的配置信息都维持在 `Configuration` 对象之中。中维 `MappedStatement` 维护了一个 Mapper 方法的元数据信息,其数据组织可以参考下面的 debug 截图: -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210511150650.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210511150650.png) > 小结: > diff --git "a/docs/framework/mybatis/Mybatis\345\272\224\347\224\250\346\214\207\345\215\227.md" "b/docs/framework/mybatis/Mybatis\345\272\224\347\224\250\346\214\207\345\215\227.md" index 420ba995..cb1027e5 100644 --- "a/docs/framework/mybatis/Mybatis\345\272\224\347\224\250\346\214\207\345\215\227.md" +++ "b/docs/framework/mybatis/Mybatis\345\272\224\347\224\250\346\214\207\345\215\227.md" @@ -26,7 +26,7 @@ ## 1. Mybatis 简介 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210510164925.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210510164925.png) ### 1.1. 什么是 MyBatis diff --git a/docs/framework/mybatis/README.md b/docs/framework/mybatis/README.md index 7793edb2..c4aaf6a8 100644 --- a/docs/framework/mybatis/README.md +++ b/docs/framework/mybatis/README.md @@ -2,7 +2,7 @@ > Mybatis 的前身就是 iBatis ,是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。本文以一个 Mybatis 完整示例为切入点,结合 Mybatis 底层源码分析,图文并茂的讲解 Mybatis 的核心工作机制。 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210522101005.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210522101005.png) ## 📖 内容 diff --git "a/docs/mq/\346\266\210\346\201\257\351\230\237\345\210\227\345\237\272\346\234\254\345\216\237\347\220\206.md" "b/docs/mq/\346\266\210\346\201\257\351\230\237\345\210\227\345\237\272\346\234\254\345\216\237\347\220\206.md" index 33ce32ca..ee994384 100644 --- "a/docs/mq/\346\266\210\346\201\257\351\230\237\345\210\227\345\237\272\346\234\254\345\216\237\347\220\206.md" +++ "b/docs/mq/\346\266\210\346\201\257\351\230\237\345\210\227\345\237\272\346\234\254\345\216\237\347\220\206.md" @@ -181,7 +181,7 @@ MQ 主要引入了以下问题: Kafka 的客户端和 Broker 都会保存 Offset。客户端消费消息后,每隔一段时间,就把已消费的 Offset 提交给 Kafka Broker,表示已消费。 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210427194009.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210427194009.png) 在这个过程中,如果客户端应用消费消息后,因为宕机、重启等情况而没有提交已消费的 Offset 。当系统恢复后,会继续消费消息,由于 Offset 未提交,就会出现重复消费的问题。 @@ -243,7 +243,7 @@ MQ 重复消费不可怕,可怕的是没有应对机制,可以借鉴的思 - 消费方维护 N 个缓存队列,具有相同 ID 的数据都写入同一个队列中; - 创建 N 个线程,每个线程只负责从指定的一个队列中取数据。 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210427194215.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210427194215.png) ### 3.4. 消息积压 diff --git "a/docs/server/Tomcat\345\256\271\345\231\250.md" "b/docs/server/Tomcat\345\256\271\345\231\250.md" index f572bb6c..3701affb 100644 --- "a/docs/server/Tomcat\345\256\271\345\231\250.md" +++ "b/docs/server/Tomcat\345\256\271\345\231\250.md" @@ -341,7 +341,7 @@ Tomcat 作为 Web 容器,需要解决以下问题: 2. 两个 Web 应用都依赖同一个第三方的 JAR 包,比如 Spring,那 Spring 的 JAR 包被加载到内存后,Tomcat 要保证这两个 Web 应用能够共享,也就是说 Spring 的 JAR 包只被加载一次,否则随着依赖的第三方 JAR 包增多,JVM 的内存会膨胀。 3. 需要隔离 Tomcat 本身的类和 Web 应用的类。 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201130141536.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201130141536.png) #### WebAppClassLoader diff --git "a/docs/server/Tomcat\345\272\224\347\224\250\346\214\207\345\215\227.md" "b/docs/server/Tomcat\345\272\224\347\224\250\346\214\207\345\215\227.md" index be2edc47..f307a299 100644 --- "a/docs/server/Tomcat\345\272\224\347\224\250\346\214\207\345\215\227.md" +++ "b/docs/server/Tomcat\345\272\224\347\224\250\346\214\207\345\215\227.md" @@ -384,7 +384,7 @@ public class SimpleTomcatServer { ## 3. Tomcat 架构 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201113193431.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201113193431.png) Tomcat 要实现 2 个核心功能: @@ -412,7 +412,7 @@ Tomcat 支持的应用层协议有: Tomcat 支持多种 I/O 模型和应用层协议。为了实现这点,一个容器可能对接多个连接器。但是,单独的连接器或容器都不能对外提供服务,需要把它们组装起来才能工作,组装后这个整体叫作 Service 组件。Tomcat 内可能有多个 Service,通过在 Tomcat 中配置多个 Service,可以实现通过不同的端口号来访问同一台机器上部署的不同应用。 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201111093124.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201111093124.png) **一个 Tomcat 实例有一个或多个 Service;一个 Service 有多个 Connector 和 Container**。Connector 和 Container 之间通过标准的 ServletRequest 和 ServletResponse 通信。 @@ -428,13 +428,13 @@ Tomcat 支持多种 I/O 模型和应用层协议。为了实现这点,一个 Tomcat 设计了 3 个组件来实现这 3 个功能,分别是 **`EndPoint`**、**`Processor`** 和 **`Adapter`**。 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201111101440.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201111101440.png) 组件间通过抽象接口交互。这样做还有一个好处是**封装变化。**这是面向对象设计的精髓,将系统中经常变化的部分和稳定的部分隔离,有助于增加复用性,并降低系统耦合度。网络通信的 I/O 模型是变化的,可能是非阻塞 I/O、异步 I/O 或者 APR。应用层协议也是变化的,可能是 HTTP、HTTPS、AJP。浏览器端发送的请求信息也是变化的。但是整体的处理逻辑是不变的,EndPoint 负责提供字节流给 Processor,Processor 负责提供 Tomcat Request 对象给 Adapter,Adapter 负责提供 ServletRequest 对象给容器。 如果要支持新的 I/O 方案、新的应用层协议,只需要实现相关的具体子类,上层通用的处理逻辑是不变的。由于 I/O 模型和应用层协议可以自由组合,比如 NIO + HTTP 或者 NIO2 + AJP。Tomcat 的设计者将网络通信和应用层协议解析放在一起考虑,设计了一个叫 ProtocolHandler 的接口来封装这两种变化点。各种协议和通信模型的组合有相应的具体实现类。比如:Http11NioProtocol 和 AjpNioProtocol。 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201027091819.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201027091819.png) #### ProtocolHandler 组件 @@ -454,7 +454,7 @@ EndPoint 是一个接口,对应的抽象实现类是 AbstractEndpoint,而 Ab Processor 是一个接口,定义了请求的处理等方法。它的抽象实现类 AbstractProcessor 对一些协议共有的属性进行封装,没有对方法进行实现。具体的实现有 AJPProcessor、HTTP11Processor 等,这些具体实现类实现了特定协议的解析方法和请求处理方式。 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201113185929.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201113185929.png) 从图中我们看到,EndPoint 接收到 Socket 连接后,生成一个 SocketProcessor 任务提交到线程池去处理,SocketProcessor 的 Run 方法会调用 Processor 组件去解析应用层协议,Processor 通过解析生成 Request 对象后,会调用 Adapter 的 Service 方法。 @@ -481,7 +481,7 @@ Tomcat 是怎么确定请求是由哪个 Wrapper 容器里的 Servlet 来处理 举例来说,假如有一个网购系统,有面向网站管理人员的后台管理系统,还有面向终端客户的在线购物系统。这两个系统跑在同一个 Tomcat 上,为了隔离它们的访问域名,配置了两个虚拟域名:`manage.shopping.com`和`user.shopping.com`,网站管理人员通过`manage.shopping.com`域名访问 Tomcat 去管理用户和商品,而用户管理和商品管理是两个单独的 Web 应用。终端客户通过`user.shopping.com`域名去搜索商品和下订单,搜索功能和订单管理也是两个独立的 Web 应用。如下所示,演示了 url 应声 Servlet 的处理流程。 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201113192022.jpg) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201113192022.jpg) 假如有用户访问一个 URL,比如图中的`http://user.shopping.com:8080/order/buy`,Tomcat 如何将这个 URL 定位到一个 Servlet 呢? @@ -509,7 +509,7 @@ Pipeline-Valve 是责任链模式,责任链模式是指在一个请求处理 - 各层容器对应的 basic valve 分别是 `StandardEngineValve`、`StandardHostValve`、 `StandardContextValve`、`StandardWrapperValve`。 - 由于 Valve 是一个处理点,因此 invoke 方法就是来处理请求的。注意到 Valve 中有 getNext 和 setNext 方法,因此我们大概可以猜到有一个链表将 Valve 链起来了。 -![](https://raw.githubusercontent.com/dunwu/images/dev/cs/java/javaweb/tools/tomcat/请求处理过程.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/cs/java/javaweb/tools/tomcat/请求处理过程.png) 整个调用过程由连接器中的 Adapter 触发的,它会调用 Engine 的第一个 Valve: @@ -521,7 +521,7 @@ connector.getService().getContainer().getPipeline().getFirst().invoke(request, r ### 4.1. Tomcat 的启动过程 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201118145455.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201118145455.png) 1. Tomcat 是一个 Java 程序,它的运行从执行 `startup.sh` 脚本开始。`startup.sh` 会启动一个 JVM 来运行 Tomcat 的启动类 `Bootstrap`。 2. `Bootstrap` 会初始化 Tomcat 的类加载器并实例化 `Catalina`。 @@ -741,7 +741,7 @@ ContextConfig 解析 web.xml 顺序: ### 4.3. LifeCycle -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201118105012.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201118105012.png) #### 4.2.3. 请求处理过程 diff --git "a/docs/server/Tomcat\350\277\236\346\216\245\345\231\250.md" "b/docs/server/Tomcat\350\277\236\346\216\245\345\231\250.md" index c90c3845..92e1ffab 100644 --- "a/docs/server/Tomcat\350\277\236\346\216\245\345\231\250.md" +++ "b/docs/server/Tomcat\350\277\236\346\216\245\345\231\250.md" @@ -27,7 +27,7 @@ Tomcat 的 NioEndPoint 组件利用 Java NIO 实现了 I/O 多路复用模型。 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127094302.jpg) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127094302.jpg) NioEndPoint 子组件功能简介: @@ -130,7 +130,7 @@ private final SynchronizedQueue events = new SynchronizedQueue<>(); Nio2Endpoint 工作流程跟 NioEndpoint 较为相似。 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127143839.jpg) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127143839.jpg) Nio2Endpoint 子组件功能说明: @@ -225,7 +225,7 @@ Tomcat 本身是 Java 编写的,为了调用 C 语言编写的 APR,需要通 ### 3.1. AprEndpoint 工作流程 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127145740.jpg) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127145740.jpg) #### Acceptor @@ -289,7 +289,7 @@ java my.class 这个命令行中的`java`其实是**一个可执行程序,这个程序会创建 JVM 来加载和运行你的 Java 类**。操作系统会创建一个进程来执行这个`java`可执行程序,而每个进程都有自己的虚拟地址空间,JVM 用到的内存(包括堆、栈和方法区)就是从进程的虚拟地址空间上分配的。请你注意的是,JVM 内存只是进程空间的一部分,除此之外进程空间内还有代码段、数据段、内存映射区、内核空间等。从 JVM 的角度看,JVM 内存之外的部分叫作本地内存,C 程序代码在运行过程中用到的内存就是本地内存中分配的。下面我们通过一张图来理解一下。 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127150729.jpg) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127150729.jpg) Tomcat 的 Endpoint 组件在接收网络数据时需要预先分配好一块 Buffer,所谓的 Buffer 就是字节数组`byte[]`,Java 通过 JNI 调用把这块 Buffer 的地址传给 C 代码,C 代码通过操作系统 API 读取 Socket 并把数据填充到这块 Buffer。Java NIO API 提供了两种 Buffer 来接收数据:HeapByteBuffer 和 DirectByteBuffer,下面的代码演示了如何创建两种 Buffer。 @@ -330,7 +330,7 @@ Tomcat 中的 AprEndpoint 就是通过 DirectByteBuffer 来接收数据的,而 从下面的图你会发现这个过程有 6 次内存拷贝,并且 read 和 write 等系统调用将导致进程从用户态到内核态的切换,会耗费大量的 CPU 和内存资源。 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127151041.jpg) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127151041.jpg) 而 Tomcat 的 AprEndpoint 通过操作系统层面的 sendfile 特性解决了这个问题,sendfile 系统调用方式非常简洁。 @@ -344,7 +344,7 @@ sendfile(socket, file, len); 第二步:数据并没有从内核缓冲区复制到 Socket 关联的缓冲区,只有记录数据位置和长度的描述符被添加到 Socket 缓冲区中;接着把数据直接从内核缓冲区传递给网卡。这个过程你可以看下面的图。 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127151155.jpg) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127151155.jpg) ## 4. Executor 组件 @@ -515,7 +515,7 @@ Tomcat 用 ProtocolHandler 组件屏蔽应用层协议的差异,其中 Protoco WebSocket 是通过 HTTP 协议来进行握手的,因此当 WebSocket 的握手请求到来时,HttpProtocolHandler 首先接收到这个请求,在处理这个 HTTP 请求时,Tomcat 通过一个特殊的 Filter 判断该当前 HTTP 请求是否是一个 WebSocket Upgrade 请求(即包含`Upgrade: websocket`的 HTTP 头信息),如果是,则在 HTTP 响应里添加 WebSocket 相关的响应头信息,并进行协议升级。具体来说就是用 UpgradeProtocolHandler 替换当前的 HttpProtocolHandler,相应的,把当前 Socket 的 Processor 替换成 UpgradeProcessor,同时 Tomcat 会创建 WebSocket Session 实例和 Endpoint 实例,并跟当前的 WebSocket 连接一一对应起来。这个 WebSocket 连接不会立即关闭,并且在请求处理中,不再使用原有的 HttpProcessor,而是用专门的 UpgradeProcessor,UpgradeProcessor 最终会调用相应的 Endpoint 实例来处理请求。 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127153521.jpg) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127153521.jpg) 你可以看到,Tomcat 对 WebSocket 请求的处理没有经过 Servlet 容器,而是通过 UpgradeProcessor 组件直接把请求发到 ServerEndpoint 实例,并且 Tomcat 的 WebSocket 实现不需要关注具体 I/O 模型的细节,从而实现了与具体 I/O 方式的解耦。 diff --git a/docs/server/jetty.md b/docs/server/jetty.md index b884d07f..b55edb2e 100644 --- a/docs/server/jetty.md +++ b/docs/server/jetty.md @@ -256,7 +256,7 @@ mvn jetty:run ### 3.1. Jetty 架构简介 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127154145.jpg) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127154145.jpg) Jetty Server 就是由多个 Connector(连接器)、多个 Handler(处理器),以及一个线程池组成。 @@ -381,7 +381,7 @@ getEndPoint().fillInterested(_readCallback); 到此你应该了解了 Connector 的工作原理,下面我画张图再来回顾一下 Connector 的工作流程。 -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201118175805.jpg) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201118175805.jpg) 1. Acceptor 监听连接请求,当有连接请求到达时就接受连接,一个连接对应一个 Channel,Acceptor 将 Channel 交给 ManagedSelector 来处理。 @@ -429,7 +429,7 @@ public interface Handler extends LifeCycle, Destroyable Handler 只是一个接口,完成具体功能的还是它的子类。那么 Handler 有哪些子类呢?它们的继承关系又是怎样的?这些子类是如何实现 Servlet 容器功能的呢? -![](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201118181025.png) +![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201118181025.png) 在 AbstractHandler 之下有 AbstractHandlerContainer,为什么需要这个类呢?这其实是个过渡,为了实现链式调用,一个 Handler 内部必然要有其他 Handler 的引用,所以这个类的名字里才有 Container,意思就是这样的 Handler 里包含了其他 Handler 的引用。 From bb458a5988e016aee8533754700fa2ade1a7965e Mon Sep 17 00:00:00 2001 From: dunwu Date: Sun, 10 Apr 2022 07:46:20 +0800 Subject: [PATCH 05/23] =?UTF-8?q?build(CI):=20=E5=BC=83=E7=94=A8=20travis-?= =?UTF-8?q?ci=EF=BC=8C=E6=94=B9=E7=94=A8=20github=20actions=20=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=20CI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy.yml | 36 +++++++++++++++++++++++++++++++ .travis.yml | 24 --------------------- docs/package.json | 30 -------------------------- package.json | 37 +++++++++++++++++++++++++++++++ prettier.config.js | 7 ++++++ scripts/deploy.sh | 42 +++++++++++++++++++----------------- 6 files changed, 102 insertions(+), 74 deletions(-) create mode 100644 .github/workflows/deploy.yml delete mode 100644 .travis.yml delete mode 100644 docs/package.json create mode 100644 package.json create mode 100644 prettier.config.js diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 00000000..36b705cb --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,36 @@ +name: CI + +# 在master分支发生push事件时触发。 +on: + push: + branches: + - master + +env: # 设置环境变量 + TZ: Asia/Shanghai # 时区(设置时区可使页面中的`最近更新时间`使用时区时间) + +jobs: + build: # 自定义名称 + runs-on: ubuntu-latest # 运行在虚拟机环境ubuntu-latest + + strategy: + matrix: + node-version: [14.x] + + steps: + # 使用的动作。格式:userName/repoName。作用:检出仓库,获取源码。 官方actions库:https://github.com/actions + - name: Checkout + uses: actions/checkout@master + + # 指定 nodejs 版本 + - name: Use Nodejs ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + + # 部署 + - name: Deploy + env: # 设置环境变量 + GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }} + GITEE_TOKEN: ${{ secrets.GITEE_TOKEN }} + run: npm install && npm run deploy diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 47463f91..00000000 --- a/.travis.yml +++ /dev/null @@ -1,24 +0,0 @@ -# 持续集成 CI -# @see https://docs.travis-ci.com/user/tutorial/ - -language: node_js - -sudo: required - -node_js: '16.13.0' - -branches: - only: - - master - -before_install: - - export TZ=Asia/Shanghai - -script: bash ./scripts/deploy.sh - -notifications: - email: - recipients: - - forbreak@163.com - on_success: change - on_failure: always diff --git a/docs/package.json b/docs/package.json deleted file mode 100644 index fec8bc57..00000000 --- a/docs/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "java-tutorial", - "version": "1.0.0", - "private": true, - "scripts": { - "clean": "rimraf dist && rimraf .temp", - "build": "npm run clean && vuepress build ./ --temp .temp", - "start": "vuepress dev ./ --temp .temp", - "lint": "markdownlint -r markdownlint-rule-emphasis-style -c ./.markdownlint.json **/*.md -i node_modules", - "lint:fix": "markdownlint -f -r markdownlint-rule-emphasis-style -c ./.markdownlint.json **/*.md -i node_modules", - "show-help": "vuepress --help", - "view-info": "vuepress view-info ./ --temp .temp" - }, - "devDependencies": { - "@vuepress/plugin-active-header-links": "^1.8.2", - "@vuepress/plugin-back-to-top": "^1.8.2", - "@vuepress/plugin-medium-zoom": "^1.8.2", - "@vuepress/plugin-pwa": "^1.8.2", - "@vuepress/theme-vue": "^1.8.2", - "markdownlint-cli": "^0.25.0", - "markdownlint-rule-emphasis-style": "^1.0.1", - "rimraf": "^3.0.1", - "vue-toasted": "^1.1.25", - "vuepress": "^1.8.2", - "vuepress-plugin-flowchart": "^1.4.2" - }, - "dependencies": { - "moment": "^2.29.1" - } -} diff --git a/package.json b/package.json new file mode 100644 index 00000000..d5c0d8b9 --- /dev/null +++ b/package.json @@ -0,0 +1,37 @@ +{ + "name": "java-tutorial", + "version": "1.0.0", + "scripts": { + "clean": "rimraf docs/.temp", + "start": "vuepress dev docs", + "build": "vuepress build docs", + "deploy": "bash scripts/deploy.sh", + "updateTheme": "yarn remove vuepress-theme-vdoing && rm -rf node_modules && yarn && yarn add vuepress-theme-vdoing -D", + "editFm": "node utils/editFrontmatter.js", + "lint": "markdownlint -r markdownlint-rule-emphasis-style -c ./.markdownlint.json **/*.md -i node_modules", + "lint:fix": "markdownlint -f -r markdownlint-rule-emphasis-style -c ./.markdownlint.json **/*.md -i node_modules", + "show-help": "vuepress --help", + "view-info": "vuepress view-info ./ --temp docs/.temp" + }, + "license": "MIT", + "devDependencies": { + "dayjs": "^1.9.7", + "inquirer": "^7.1.0", + "json2yaml": "^1.1.0", + "vuepress": "1.9.2", + "vuepress-plugin-baidu-tongji": "^1.0.1", + "vuepress-plugin-demo-block": "^0.7.2", + "vuepress-plugin-fulltext-search": "^2.2.1", + "vuepress-plugin-one-click-copy": "^1.0.2", + "vuepress-plugin-thirdparty-search": "^1.0.2", + "vuepress-plugin-zooming": "^1.1.7", + "vuepress-plugin-flowchart": "^1.4.2", + "vuepress-theme-vdoing": "^1.10.3", + "yamljs": "^0.3.0", + "markdownlint-cli": "^0.25.0", + "markdownlint-rule-emphasis-style": "^1.0.1", + "rimraf": "^3.0.1", + "vue-toasted": "^1.1.25" + }, + "dependencies": {} +} diff --git a/prettier.config.js b/prettier.config.js new file mode 100644 index 00000000..eb6bb1f5 --- /dev/null +++ b/prettier.config.js @@ -0,0 +1,7 @@ +/** + * @see https://prettier.io/docs/en/options.html + * @see https://prettier.io/docs/en/configuration.html + */ +module.exports = { + tabWidth: 2, semi: false, singleQuote: true +} diff --git a/scripts/deploy.sh b/scripts/deploy.sh index 6324d001..6fe5b282 100644 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -7,38 +7,40 @@ # ------------------------------------------------------------------------------ # 装载其它库 -ROOT_DIR=$(cd `dirname $0`/..; pwd) +ROOT_DIR=$( + cd $(dirname $0)/.. + pwd +) # 确保脚本抛出遇到的错误 set -e -cd ${ROOT_DIR}/docs - # 生成静态文件 -npm install npm run build # 进入生成的文件夹 -cd dist +cd ${ROOT_DIR}/docs/.temp # 如果是发布到自定义域名 # echo 'www.example.com' > CNAME -git init -git checkout -b gh-pages && git add . -git commit -m 'deploy' - -# 如果发布到 https://.github.io/ if [[ ${GITHUB_TOKEN} && ${GITEE_TOKEN} ]]; then - echo "使用 token 公钥部署 gh-pages" - # ${GITHUB_TOKEN} 是 Github 私人令牌;${GITEE_TOKEN} 是 Gitee 私人令牌 - # ${GITHUB_TOKEN} 和 ${GITEE_TOKEN} 都是环境变量;travis-ci 构建时会传入变量 - git push --force --quiet "https://dunwu:${GITHUB_TOKEN}@github.com/dunwu/java-tutorial.git" gh-pages - git push --force --quiet "https://turnon:${GITEE_TOKEN}@gitee.com/turnon/java-tutorial.git" gh-pages + msg='自动部署' + GITHUB_URL=https://dunwu:${GITHUB_TOKEN}@github.com/dunwu/java-tutorial.git + GITEE_URL=https://turnon:${GITEE_TOKEN}@gitee.com/turnon/java-tutorial.git + git config --global user.name "dunwu" + git config --global user.email "forbreak@163.com" else - echo "使用 ssh 公钥部署 gh-pages" - git push -f git@github.com:dunwu/java-tutorial.git gh-pages - git push -f git@gitee.com:turnon/java-tutorial.git gh-pages + msg='手动部署' + GITHUB_URL=git@github.com:dunwu/java-tutorial.git + GITEE_URL=git@gitee.com:turnon/java-tutorial.git fi - -cd ${ROOT_DIR} +git init +git add -A +git commit -m "${msg}" +# 推送到github gh-pages分支 +git push -f "${GITHUB_URL}" master:gh-pages +git push -f "${GITEE_URL}" master:gh-pages + +cd - +rm -rf ${ROOT_DIR}/docs/.temp From e14c9d19d45e299cf510105c36934c38e43528ad Mon Sep 17 00:00:00 2001 From: dunwu Date: Sun, 10 Apr 2022 07:48:06 +0800 Subject: [PATCH 06/23] =?UTF-8?q?docs:=20=E4=BD=BF=E7=94=A8=20vuepress-the?= =?UTF-8?q?me-vdoing=EF=BC=8C=E5=B9=B6=E6=95=B4=E7=90=86=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 246 +++++++------ docs/.vuepress/config.js | 334 ++++++++++-------- docs/.vuepress/config/baiduCode.js | 1 + docs/.vuepress/config/htmlModules.js | 52 +++ docs/.vuepress/enhanceApp.js | 54 ++- docs/.vuepress/plugins/love-me/index.js | 12 + docs/.vuepress/plugins/love-me/love-me.js | 62 ++++ .../public/images/dunwu-logo-100.png | Bin 7664 -> 0 bytes .../public/images/dunwu-logo-200.png | Bin 18730 -> 0 bytes .../.vuepress/public/images/dunwu-logo-50.png | Bin 2804 -> 0 bytes docs/.vuepress/public/img/EB-logo.png | Bin 0 -> 1460 bytes docs/.vuepress/public/img/bg.gif | Bin 0 -> 199753 bytes docs/.vuepress/public/img/bg.jpeg | Bin 0 -> 1246291 bytes docs/.vuepress/public/img/bg.jpg | Bin 0 -> 246625 bytes .../public/{images => img}/dunwu-logo.png | Bin docs/.vuepress/public/{ => img}/favicon.ico | Bin .../public/img/gif/\347\214\2531.gif" | Bin 0 -> 170358 bytes .../public/img/gif/\347\214\2532.gif" | Bin 0 -> 64654 bytes .../public/img/gif/\347\214\2533.gif" | Bin 0 -> 523143 bytes .../public/img/gif/\347\214\2534.gif" | Bin 0 -> 107143 bytes docs/.vuepress/public/img/more.png | Bin 0 -> 41386 bytes docs/.vuepress/public/img/other.png | Bin 0 -> 32961 bytes docs/.vuepress/public/img/panda-waving.png | Bin 0 -> 313616 bytes ...5\347\273\264\345\257\274\345\233\276.png" | Bin 0 -> 771 bytes .../\346\225\260\346\215\256\345\272\223.png" | Bin 0 -> 816 bytes ...0\346\215\256\347\273\223\346\236\204.png" | Bin 0 -> 834 bytes .../\346\234\215\345\212\241\345\231\250.png" | Bin 0 -> 1137 bytes ...2\345\231\250\345\255\246\344\271\240.png" | Bin 0 -> 1091 bytes .../img/png/\347\256\227\346\263\225.png" | Bin 0 -> 667 bytes .../img/png/\347\263\273\347\273\237.png" | Bin 0 -> 1065 bytes ...3\347\273\237\345\210\206\346\236\220.png" | Bin 0 -> 726 bytes .../img/png/\347\274\226\347\250\213.png" | Bin 0 -> 655 bytes ...1\347\273\234\346\212\200\346\234\257.png" | Bin 0 -> 1027 bytes ...7\346\234\272\347\275\221\347\273\234.png" | Bin 0 -> 1169 bytes ...7\344\273\266\345\274\200\345\217\221.png" | Bin 0 -> 706 bytes ...2\345\220\221\345\257\271\350\261\241.png" | Bin 0 -> 1321 bytes ...1\347\233\256\347\256\241\347\220\206.png" | Bin 0 -> 10773 bytes docs/.vuepress/public/img/python.png | Bin 0 -> 51525 bytes docs/.vuepress/public/img/ui.png | Bin 0 -> 24146 bytes docs/.vuepress/public/img/web.png | Bin 0 -> 38793 bytes docs/.vuepress/public/markmap/01.html | 25 ++ docs/.vuepress/styles/index.styl | 93 +++++ docs/.vuepress/styles/palette.styl | 62 ++++ .../01.JavaEE\351\235\242\347\273\217.md" | 5 + ...271\213Servlet\346\214\207\345\215\227.md" | 8 +- ...344\271\213Jsp\346\214\207\345\215\227.md" | 42 ++- ...\344\271\213Filter\345\222\214Listener.md" | 5 + ...E\344\271\213Cookie\345\222\214Session.md" | 12 +- docs/{javaee => 01.JavaEE}/README.md | 16 +- ...45\351\227\250\346\214\207\345\215\227.md" | 5 + ...271\213pom.xml\350\257\246\350\247\243.md" | 5 + ...13settings.xml\350\257\246\350\247\243.md" | 5 + ...00\344\275\263\345\256\236\350\267\265.md" | 5 + ...55\345\244\256\344\273\223\345\272\223.md" | 5 + ...43\347\240\201\346\243\200\346\237\245.md" | 5 + .../01.Maven/README.md" | 18 +- .../01.Maven/book.json" | 0 .../01.Maven/cover.jpg" | Bin .../01.Maven/package.json" | 0 .../01.Maven/sidebar.md" | 11 + .../02.Ant.md" | 5 + .../README.md" | 22 +- .../02.JavaIDE/01.Intellij.md" | 5 + .../02.JavaIDE/02.Eclipse.md" | 5 + .../02.JavaIDE/03.VsCode.md" | 5 + .../02.JavaIDE/README.md" | 17 + ...24\347\224\250\346\214\207\345\215\227.md" | 5 + ...at\350\277\236\346\216\245\345\231\250.md" | 5 + .../03.Tomcat\345\256\271\345\231\250.md" | 5 + .../04.Tomcat\344\274\230\345\214\226.md" | 5 + .../01.Tomcat/05.Tomcat\345\222\214Jetty.md" | 5 + .../01.Tomcat/README.md" | 24 ++ .../02.Jetty.md" | 5 + .../README.md" | 21 +- ...12\346\226\255\345\267\245\345\205\267.md" | 5 + .../02.CAT.md" | 5 + .../03.Zipkin.md" | 5 + .../04.Skywalking.md" | 5 + .../05.Arthas.md" | 5 + .../README.md" | 18 +- .../README.md" | 76 ++++ ...ON\345\272\217\345\210\227\345\214\226.md" | 5 + ...66\345\272\217\345\210\227\345\214\226.md" | 6 + .../README.md" | 12 +- .../01.Lombok.md" | 5 + .../02.Dozer.md" | 5 + .../README.md" | 14 + .../01.Freemark.md" | 5 + .../02.Thymeleaf.md" | 5 + .../03.Velocity.md" | 5 + .../README.md" | 20 +- .../01.Junit.md" | 5 + .../02.Mockito.md" | 5 + .../03.Jmeter.md" | 5 + .../04.JMH.md" | 5 + .../README.md" | 20 ++ .../01.Java\346\227\245\345\277\227.md" | 5 + ...va\345\267\245\345\205\267\345\214\205.md" | 5 + ...15\345\260\204\345\267\245\345\205\267.md" | 5 + .../04.JavaMail.md" | 5 + .../05.Jsoup\345\272\224\347\224\250.md" | 5 + ....Thumbnailator\345\272\224\347\224\250.md" | 5 + .../07.Zxing\345\272\224\347\224\250.md" | 5 + .../README.md" | 23 ++ .../README.md" | 48 +++ ...24\347\224\250\346\214\207\345\215\227.md" | 5 + .../02.Mybatis\345\216\237\347\220\206.md" | 5 + .../01.ORM/README.md" | 16 +- .../02.\345\256\211\345\205\250/01.Shiro.md" | 5 + .../02.SpringSecurity.md" | 5 + .../02.\345\256\211\345\205\250/README.md" | 12 +- .../03.IO/01.Netty.md" | 6 + .../README.md" | 53 +++ ...37\345\210\227\351\235\242\350\257\225.md" | 5 + ...72\346\234\254\345\216\237\347\220\206.md" | 8 +- .../03.RocketMQ.md" | 5 + .../04.ActiveMQ.md" | 5 + .../README.md" | 14 +- ...30\351\235\242\350\257\225\351\242\230.md" | 5 + ...23\345\255\230\346\241\206\346\236\266.md" | 5 + ...24\347\224\250\346\214\207\345\215\227.md" | 5 + ...24\347\224\250\346\214\207\345\215\227.md" | 5 + ...va\347\274\223\345\255\230\345\272\223.md" | 7 +- .../06.Http\347\274\223\345\255\230.md" | 5 + .../02.\347\274\223\345\255\230/README.md" | 22 +- .../01.Hystrix.md" | 6 + .../01.Dubbo.md" | 6 + .../README.md" | 8 +- .../README.md" | 59 ++++ docs/@pages/archivesPage.md | 6 + docs/README.md | 246 ++++++------- docs/framework/README.md | 27 -- docs/lib/README.md | 23 -- docs/test/README.md | 14 - docs/tool/README.md | 33 -- docs/tool/build/maven/sidebar.md | 6 - docs/tool/ide/README.md | 12 - utils/config.yml | 14 + utils/editFrontmatter.js | 92 +++++ utils/modules/fn.js | 21 ++ utils/modules/readFileList.js | 43 +++ 141 files changed, 1779 insertions(+), 604 deletions(-) create mode 100644 docs/.vuepress/config/baiduCode.js create mode 100644 docs/.vuepress/config/htmlModules.js create mode 100644 docs/.vuepress/plugins/love-me/index.js create mode 100644 docs/.vuepress/plugins/love-me/love-me.js delete mode 100644 docs/.vuepress/public/images/dunwu-logo-100.png delete mode 100644 docs/.vuepress/public/images/dunwu-logo-200.png delete mode 100644 docs/.vuepress/public/images/dunwu-logo-50.png create mode 100644 docs/.vuepress/public/img/EB-logo.png create mode 100644 docs/.vuepress/public/img/bg.gif create mode 100644 docs/.vuepress/public/img/bg.jpeg create mode 100644 docs/.vuepress/public/img/bg.jpg rename docs/.vuepress/public/{images => img}/dunwu-logo.png (100%) rename docs/.vuepress/public/{ => img}/favicon.ico (100%) create mode 100644 "docs/.vuepress/public/img/gif/\347\214\2531.gif" create mode 100644 "docs/.vuepress/public/img/gif/\347\214\2532.gif" create mode 100644 "docs/.vuepress/public/img/gif/\347\214\2533.gif" create mode 100644 "docs/.vuepress/public/img/gif/\347\214\2534.gif" create mode 100644 docs/.vuepress/public/img/more.png create mode 100644 docs/.vuepress/public/img/other.png create mode 100644 docs/.vuepress/public/img/panda-waving.png create mode 100644 "docs/.vuepress/public/img/png/\346\200\235\347\273\264\345\257\274\345\233\276.png" create mode 100644 "docs/.vuepress/public/img/png/\346\225\260\346\215\256\345\272\223.png" create mode 100644 "docs/.vuepress/public/img/png/\346\225\260\346\215\256\347\273\223\346\236\204.png" create mode 100644 "docs/.vuepress/public/img/png/\346\234\215\345\212\241\345\231\250.png" create mode 100644 "docs/.vuepress/public/img/png/\346\234\272\345\231\250\345\255\246\344\271\240.png" create mode 100644 "docs/.vuepress/public/img/png/\347\256\227\346\263\225.png" create mode 100644 "docs/.vuepress/public/img/png/\347\263\273\347\273\237.png" create mode 100644 "docs/.vuepress/public/img/png/\347\263\273\347\273\237\345\210\206\346\236\220.png" create mode 100644 "docs/.vuepress/public/img/png/\347\274\226\347\250\213.png" create mode 100644 "docs/.vuepress/public/img/png/\347\275\221\347\273\234\346\212\200\346\234\257.png" create mode 100644 "docs/.vuepress/public/img/png/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234.png" create mode 100644 "docs/.vuepress/public/img/png/\350\275\257\344\273\266\345\274\200\345\217\221.png" create mode 100644 "docs/.vuepress/public/img/png/\351\235\242\345\220\221\345\257\271\350\261\241.png" create mode 100644 "docs/.vuepress/public/img/png/\351\241\271\347\233\256\347\256\241\347\220\206.png" create mode 100644 docs/.vuepress/public/img/python.png create mode 100644 docs/.vuepress/public/img/ui.png create mode 100644 docs/.vuepress/public/img/web.png create mode 100644 docs/.vuepress/public/markmap/01.html create mode 100644 docs/.vuepress/styles/index.styl create mode 100644 docs/.vuepress/styles/palette.styl rename docs/javaee/javaee-interview.md => "docs/01.JavaEE/01.JavaEE\351\235\242\347\273\217.md" (99%) rename docs/javaee/javaee-servlet.md => "docs/01.JavaEE/02.JavaEE\344\271\213Servlet\346\214\207\345\215\227.md" (99%) rename docs/javaee/javaee-jsp.md => "docs/01.JavaEE/03.JavaEE\344\271\213Jsp\346\214\207\345\215\227.md" (98%) rename docs/javaee/javaee-filter-listener.md => "docs/01.JavaEE/04.JavaEE\344\271\213Filter\345\222\214Listener.md" (99%) rename docs/javaee/javaee-cookie-sesion.md => "docs/01.JavaEE/05.JavaEE\344\271\213Cookie\345\222\214Session.md" (99%) rename docs/{javaee => 01.JavaEE}/README.md (61%) rename docs/tool/build/maven/maven-quickstart.md => "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/01.Maven\345\205\245\351\227\250\346\214\207\345\215\227.md" (99%) rename docs/tool/build/maven/maven-pom.md => "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/02.Maven\346\225\231\347\250\213\344\271\213pom.xml\350\257\246\350\247\243.md" (99%) rename docs/tool/build/maven/maven-settings.md => "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/03.Maven\346\225\231\347\250\213\344\271\213settings.xml\350\257\246\350\247\243.md" (99%) rename docs/tool/build/maven/maven-action.md => "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/04.Maven\345\256\236\346\210\230\351\227\256\351\242\230\345\222\214\346\234\200\344\275\263\345\256\236\350\267\265.md" (99%) rename docs/tool/build/maven/maven-deploy.md => "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/05.Maven\346\225\231\347\250\213\344\271\213\345\217\221\345\270\203jar\345\210\260\347\247\201\346\234\215\346\210\226\344\270\255\345\244\256\344\273\223\345\272\223.md" (99%) rename docs/tool/build/maven/maven-checkstyle-plugin.md => "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/06.Maven\346\217\222\344\273\266\344\271\213\344\273\243\347\240\201\346\243\200\346\237\245.md" (99%) rename docs/tool/build/maven/README.md => "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/README.md" (73%) rename docs/tool/build/maven/book.json => "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/book.json" (100%) rename docs/tool/build/maven/cover.jpg => "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/cover.jpg" (100%) rename docs/tool/build/maven/package.json => "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/package.json" (100%) create mode 100644 "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/sidebar.md" rename docs/tool/build/ant.md => "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/02.Ant.md" (99%) rename docs/tool/build/README.md => "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/README.md" (60%) rename docs/tool/ide/intellij-idea.md => "docs/02.Java\350\275\257\344\273\266/02.JavaIDE/01.Intellij.md" (99%) rename docs/tool/ide/eclipse.md => "docs/02.Java\350\275\257\344\273\266/02.JavaIDE/02.Eclipse.md" (99%) rename docs/tool/ide/vscode.md => "docs/02.Java\350\275\257\344\273\266/02.JavaIDE/03.VsCode.md" (92%) create mode 100644 "docs/02.Java\350\275\257\344\273\266/02.JavaIDE/README.md" rename "docs/server/Tomcat\345\272\224\347\224\250\346\214\207\345\215\227.md" => "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/01.Tomcat\345\272\224\347\224\250\346\214\207\345\215\227.md" (99%) rename "docs/server/Tomcat\350\277\236\346\216\245\345\231\250.md" => "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/02.Tomcat\350\277\236\346\216\245\345\231\250.md" (99%) rename "docs/server/Tomcat\345\256\271\345\231\250.md" => "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/03.Tomcat\345\256\271\345\231\250.md" (99%) rename "docs/server/Tomcat\344\274\230\345\214\226.md" => "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/04.Tomcat\344\274\230\345\214\226.md" (99%) rename docs/server/tomcat-and-jetty.md => "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/05.Tomcat\345\222\214Jetty.md" (96%) create mode 100644 "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/README.md" rename docs/server/jetty.md => "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/02.Jetty.md" (99%) rename docs/server/README.md => "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/README.md" (58%) rename docs/tool/monitor/monitor-summary.md => "docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/01.\347\233\221\346\216\247\350\257\212\346\226\255\345\267\245\345\205\267.md" (88%) rename docs/tool/monitor/cat.md => "docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/02.CAT.md" (98%) rename docs/tool/monitor/zipkin.md => "docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/03.Zipkin.md" (99%) rename docs/tool/monitor/skywalking.md => "docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/04.Skywalking.md" (97%) rename docs/tool/monitor/arthas.md => "docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/05.Arthas.md" (99%) rename docs/tool/monitor/README.md => "docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/README.md" (53%) create mode 100644 "docs/02.Java\350\275\257\344\273\266/README.md" rename docs/lib/serialized/javalib-json.md => "docs/03.Java\345\267\245\345\205\267/01.Java\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/01.JSON\345\272\217\345\210\227\345\214\226.md" (99%) rename docs/lib/serialized/javalib-binary.md => "docs/03.Java\345\267\245\345\205\267/01.Java\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/02.\344\272\214\350\277\233\345\210\266\345\272\217\345\210\227\345\214\226.md" (99%) rename docs/lib/serialized/README.md => "docs/03.Java\345\267\245\345\205\267/01.Java\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/README.md" (83%) rename docs/lib/bean/lombok.md => "docs/03.Java\345\267\245\345\205\267/02.JavaBean\345\267\245\345\205\267/01.Lombok.md" (99%) rename docs/lib/bean/dozer.md => "docs/03.Java\345\267\245\345\205\267/02.JavaBean\345\267\245\345\205\267/02.Dozer.md" (99%) create mode 100644 "docs/03.Java\345\267\245\345\205\267/02.JavaBean\345\267\245\345\205\267/README.md" rename docs/lib/template/freemark.md => "docs/03.Java\345\267\245\345\205\267/03.Java\346\250\241\346\235\277\345\274\225\346\223\216/01.Freemark.md" (99%) rename docs/lib/template/thymeleaf.md => "docs/03.Java\345\267\245\345\205\267/03.Java\346\250\241\346\235\277\345\274\225\346\223\216/02.Thymeleaf.md" (99%) rename docs/lib/template/velocity.md => "docs/03.Java\345\267\245\345\205\267/03.Java\346\250\241\346\235\277\345\274\225\346\223\216/03.Velocity.md" (98%) rename docs/lib/template/README.md => "docs/03.Java\345\267\245\345\205\267/03.Java\346\250\241\346\235\277\345\274\225\346\223\216/README.md" (79%) rename docs/test/junit.md => "docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/01.Junit.md" (99%) rename docs/test/mockito.md => "docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/02.Mockito.md" (99%) rename docs/test/jmeter.md => "docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/03.Jmeter.md" (99%) rename docs/test/jmh.md => "docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/04.JMH.md" (99%) create mode 100644 "docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/README.md" rename docs/lib/javalib-log.md => "docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/01.Java\346\227\245\345\277\227.md" (99%) rename docs/lib/javalib-util.md => "docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/02.Java\345\267\245\345\205\267\345\214\205.md" (77%) rename docs/lib/reflections.md => "docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/03.Java\345\217\215\345\260\204\345\267\245\345\205\267.md" (97%) rename docs/lib/javamail.md => "docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/04.JavaMail.md" (99%) rename docs/lib/jsoup.md => "docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/05.Jsoup\345\272\224\347\224\250.md" (99%) rename docs/lib/thumbnailator.md => "docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/06.Thumbnailator\345\272\224\347\224\250.md" (98%) rename docs/lib/zxing.md => "docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/07.Zxing\345\272\224\347\224\250.md" (97%) create mode 100644 "docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/README.md" create mode 100644 "docs/03.Java\345\267\245\345\205\267/README.md" rename "docs/framework/mybatis/Mybatis\345\272\224\347\224\250\346\214\207\345\215\227.md" => "docs/04.Java\346\241\206\346\236\266/01.ORM/01.Mybatis\345\272\224\347\224\250\346\214\207\345\215\227.md" (99%) rename "docs/framework/mybatis/Mybatis\345\216\237\347\220\206.md" => "docs/04.Java\346\241\206\346\236\266/01.ORM/02.Mybatis\345\216\237\347\220\206.md" (99%) rename docs/framework/mybatis/README.md => "docs/04.Java\346\241\206\346\236\266/01.ORM/README.md" (89%) rename docs/security/shiro.md => "docs/04.Java\346\241\206\346\236\266/02.\345\256\211\345\205\250/01.Shiro.md" (99%) rename docs/security/spring-security.md => "docs/04.Java\346\241\206\346\236\266/02.\345\256\211\345\205\250/02.SpringSecurity.md" (99%) rename docs/security/README.md => "docs/04.Java\346\241\206\346\236\266/02.\345\256\211\345\205\250/README.md" (51%) rename docs/framework/netty.md => "docs/04.Java\346\241\206\346\236\266/03.IO/01.Netty.md" (98%) create mode 100644 "docs/04.Java\346\241\206\346\236\266/README.md" rename "docs/mq/\346\266\210\346\201\257\351\230\237\345\210\227\351\235\242\350\257\225.md" => "docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/01.\346\266\210\346\201\257\351\230\237\345\210\227\351\235\242\350\257\225.md" (99%) rename "docs/mq/\346\266\210\346\201\257\351\230\237\345\210\227\345\237\272\346\234\254\345\216\237\347\220\206.md" => "docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/02.\346\266\210\346\201\257\351\230\237\345\210\227\345\237\272\346\234\254\345\216\237\347\220\206.md" (99%) rename docs/mq/rocketmq.md => "docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/03.RocketMQ.md" (99%) rename docs/mq/activemq.md => "docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/04.ActiveMQ.md" (99%) rename docs/mq/README.md => "docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/README.md" (95%) rename docs/cache/cache-interview.md => "docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/01.\347\274\223\345\255\230\351\235\242\350\257\225\351\242\230.md" (99%) rename docs/cache/cache-framework.md => "docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/02.Java\347\274\223\345\255\230\346\241\206\346\236\266.md" (99%) rename docs/cache/memcached.md => "docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/03.Memcached\345\272\224\347\224\250\346\214\207\345\215\227.md" (97%) rename docs/cache/ehcache.md => "docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/04.Ehcache\345\272\224\347\224\250\346\214\207\345\215\227.md" (99%) rename docs/cache/cache-libs.md => "docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/05.Java\347\274\223\345\255\230\345\272\223.md" (98%) rename docs/cache/http-cache.md => "docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/06.Http\347\274\223\345\255\230.md" (98%) rename docs/cache/README.md => "docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/README.md" (71%) rename docs/limiting/hystrix.md => "docs/05.Java\344\270\255\351\227\264\344\273\266/03.\346\265\201\351\207\217\346\216\247\345\210\266/01.Hystrix.md" (99%) rename docs/microservice/dubbo.md => "docs/05.Java\344\270\255\351\227\264\344\273\266/04.\345\276\256\346\234\215\345\212\241/01.Dubbo.md" (99%) rename docs/microservice/README.md => "docs/05.Java\344\270\255\351\227\264\344\273\266/04.\345\276\256\346\234\215\345\212\241/README.md" (66%) create mode 100644 "docs/05.Java\344\270\255\351\227\264\344\273\266/README.md" create mode 100644 docs/@pages/archivesPage.md delete mode 100644 docs/framework/README.md delete mode 100644 docs/lib/README.md delete mode 100644 docs/test/README.md delete mode 100644 docs/tool/README.md delete mode 100644 docs/tool/build/maven/sidebar.md delete mode 100644 docs/tool/ide/README.md create mode 100644 utils/config.yml create mode 100644 utils/editFrontmatter.js create mode 100644 utils/modules/fn.js create mode 100644 utils/modules/readFileList.js diff --git a/README.md b/README.md index d4333328..b38e0186 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,23 @@

    - license - build + + + star + + + + fork + + + + commit + + + + code style + +

    JavaTutorial

    @@ -29,121 +44,119 @@ ### JavaEE -> [☕ JavaEE](javaee/README.md) 技术是 Java Web 的基石 +> [☕ JavaEE](docs/01.JavaEE/README.md) 技术是 Java Web 的基石 -- [JavaEE 面经](docs/javaee/javaee-interview.md) -- [JavaEE 之 Servlet 指南](docs/javaee/javaee-servlet.md) -- [JavaEE 之 Jsp 指南](docs/javaee/javaee-jsp.md) -- [JavaEE 之 Filter 和 Listener](docs/javaee/javaee-filter-listener.md) -- [JavaEE 之 Cookie 和 Session](docs/javaee/javaee-cookie-sesion.md) +- [JavaEE 面经](docs/01.JavaEE/01.JavaEE面经.md) +- [JavaEE 之 Servlet 指南](docs/01.JavaEE/02.JavaEE之Servlet指南.md) +- [JavaEE 之 Jsp 指南](docs/01.JavaEE/03.JavaEE之Jsp指南.md) +- [JavaEE 之 Filter 和 Listener](docs/01.JavaEE/04.JavaEE之Filter和Listener.md) +- [JavaEE 之 Cookie 和 Session](docs/01.JavaEE/05.JavaEE之Cookie和Session.md) -### Java 工具 +### Java 软件 -#### 构建 +#### Java 构建 -> Java 项目需要通过 [**构建工具**](docs/tool/build) 来管理项目依赖,完成编译、打包、发布、生成 JavaDoc 等任务。 +> Java 项目需要通过 [**构建工具**](docs/02.Java软件/01.Java构建) 来管理项目依赖,完成编译、打包、发布、生成 JavaDoc 等任务。 > > - 目前最主流的构建工具是 Maven,它的功能非常强大。 > - Gradle 号称是要替代 Maven 等构件工具,它的版本管理确实简洁,但是需要学习 Groovy,学习成本比 Maven 高。 > - Ant 功能比 Maven 和 Gradle 要弱,现代 Java 项目基本不用了,但也有一些传统的 Java 项目还在使用。 -- [Maven](docs/tool/build/maven) 📚 - - [Maven 入门指南](docs/tool/build/maven/maven-quickstart.md) - - [Maven 教程之 pom.xml 详解](docs/tool/build/maven/maven-pom.md) - - [Maven 教程之 settings.xml 详解](docs/tool/build/maven/maven-settings.md) - - [Maven 实战问题和最佳实践](docs/tool/build/maven/maven-action.md) - - [Maven 教程之发布 jar 到私服或中央仓库](docs/tool/build/maven/maven-deploy.md) - - [Maven 插件之代码检查](docs/tool/build/maven/maven-checkstyle-plugin.md) -- [Ant 简易教程](docs/tool/build/ant.md) +- [Maven](docs/02.Java软件/01.Java构建/01.Maven) 📚 + - [Maven 入门指南](docs/02.Java软件/01.Java构建/01.Maven/01.Maven入门指南.md) + - [Maven 教程之 pom.xml 详解](docs/02.Java软件/01.Java构建/01.Maven/02.Maven教程之pom.xml详解.md) + - [Maven 教程之 settings.xml 详解](docs/02.Java软件/01.Java构建/01.Maven/03.Maven教程之settings.xml详解.md) + - [Maven 实战问题和最佳实践](docs/02.Java软件/01.Java构建/01.Maven/04.Maven实战问题和最佳实践.md) + - [Maven 教程之发布 jar 到私服或中央仓库](docs/02.Java软件/01.Java构建/01.Maven/05.Maven教程之发布jar到私服或中央仓库.md) + - [Maven 插件之代码检查](docs/02.Java软件/01.Java构建/01.Maven/06.Maven插件之代码检查.md) +- [Ant 简易教程](docs/02.Java软件/01.Java构建/02.Ant.md) -#### IDE +#### Java IDE -> 自从有了 [**IDE**](docs/tool/ide),写代码从此就告别了刀耕火种的蛮荒时代。 +> 自从有了 [**IDE**](docs/02.Java软件/02.JavaIDE),写代码从此就告别了刀耕火种的蛮荒时代。 > -> - [Eclipse](docs/tool/ide/eclipse.md) 是久负盛名的开源 Java IDE,我的学生时代一直使用它写 Java。 -> - 曾经抗拒从转 [Intellij Idea](docs/tool/ide/intellij-idea.md) ,但后来发现真香,不得不说,确实是目前最优秀的 Java IDE。 -> - 你可以在 [vscode](docs/tool/ide/vscode.md) 中写各种语言,只要安装相应插件即可。如果你的项目中使用了很多种编程语言,又懒得在多个 IDE 之间切换,那么就用 vscode 来一网打尽吧。 +> - [Eclipse](docs/02.Java软件/02.JavaIDE/02.Eclipse.md) 是久负盛名的开源 Java IDE,我的学生时代一直使用它写 Java。 +> - 曾经抗拒从转 [Intellij Idea](docs/02.Java软件/02.JavaIDE/01.Intellij.md) ,但后来发现真香,不得不说,确实是目前最优秀的 Java IDE。 +> - 你可以在 [vscode](docs/02.Java软件/02.JavaIDE/03.VsCode.md) 中写各种语言,只要安装相应插件即可。如果你的项目中使用了很多种编程语言,又懒得在多个 IDE 之间切换,那么就用 vscode 来一网打尽吧。 -- [Intellij Idea](docs/tool/ide/intellij-idea.md) -- [Eclipse](docs/tool/ide/eclipse.md) -- [vscode](docs/tool/ide/vscode.md) +- [Intellij Idea](docs/02.Java软件/02.JavaIDE/01.Intellij.md) +- [Eclipse](docs/02.Java软件/02.JavaIDE/02.Eclipse.md) +- [vscode](docs/02.Java软件/02.JavaIDE/03.VsCode.md) -#### 监控/诊断 +#### Java 服务器 -> [监控/诊断](docs/tool/monitor) 工具主要用于 Java 应用的运维。通过采集、分析、存储、可视化应用的有效数据,帮助开发者、使用者快速定位问题,找到性能瓶颈。 +> Tomcat 和 Jetty 都是 Java 比较流行的轻量级服务器。 +> +> Nginx 是目前最流行的反向代理服务器,也常用于负载均衡。 -- [监控工具对比](docs/tool/monitor/monitor-summary.md) -- [CAT](docs/tool/monitor/cat.md) -- [Zipkin](docs/tool/monitor/zipkin.md) -- [SkyWalking](docs/tool/monitor/skywalking.md) -- [Arthas](docs/tool/monitor/arthas.md) +- [Tomcat 应用指南](docs/02.Java软件/03.Java服务器/01.Tomcat/01.Tomcat应用指南.md) +- [Tomcat 连接器](docs/02.Java软件/03.Java服务器/01.Tomcat/02.Tomcat连接器.md) +- [Tomcat 容器](docs/02.Java软件/03.Java服务器/01.Tomcat/03.Tomcat容器.md) +- [Tomcat 优化](docs/02.Java软件/03.Java服务器/01.Tomcat/04.Tomcat优化.md) +- [Tomcat 和 Jetty](docs/02.Java软件/03.Java服务器/01.Tomcat/05.Tomcat和Jetty.md) +- [Jetty](docs/02.Java软件/03.Java服务器/02.Jetty.md) -### [框架](framework) +#### Java 监控诊断 -#### Spring +> [监控/诊断](docs/02.Java软件/04.Java监控诊断) 工具主要用于 Java 应用的运维。通过采集、分析、存储、可视化应用的有效数据,帮助开发者、使用者快速定位问题,找到性能瓶颈。 -📚 [spring-tutorial](https://dunwu.github.io/spring-tutorial/) 是一个 Spring 实战教程。 +- [监控工具对比](docs/02.Java软件/04.Java监控诊断/01.监控诊断工具.md) +- [CAT](docs/02.Java软件/04.Java监控诊断/02.CAT.md) +- [Zipkin](docs/02.Java软件/04.Java监控诊断/03.Zipkin.md) +- [SkyWalking](docs/02.Java软件/04.Java监控诊断/04.Skywalking.md) +- [Arthas](docs/02.Java软件/04.Java监控诊断/05.Arthas.md) -#### Spring Boot +### Java 工具 -📚 [Spring Boot 教程](https://dunwu.github.io/spring-boot-tutorial/) 是一个 Spring Boot 实战教程。 +#### Java 序列化工具 -#### 其他 +- [JSON 序列化](docs/03.Java工具/01.Java序列化工具/01.JSON序列化.md) - [fastjson](https://github.com/alibaba/fastjson)、[Jackson](https://github.com/FasterXML/jackson)、[Gson](https://github.com/google/gson) +- [二进制序列化](docs/03.Java工具/01.Java序列化工具/02.二进制序列化.md) - [Protobuf](https://developers.google.com/protocol-buffers)、[Thrift](https://thrift.apache.org/)、[Hessian](http://hessian.caucho.com/)、[Kryo](https://github.com/EsotericSoftware/kryo)、[FST](https://github.com/RuedigerMoeller/fast-serialization) -- [Spring Cloud](https://github.com/dunwu/spring-cloud-tutorial) 📚 -- [MyBatis](docs/framework/mybatis) - - [Mybatis 应用指南](docs/framework/mybatis/Mybatis应用指南.md) - - [Mybatis 原理](docs/framework/mybatis/Mybatis原理.md) -- [Netty](docs/framework/netty.md) +#### JavaBean 工具 -### [消息队列](docs/mq) +- [Lombok](docs/03.Java工具/02.JavaBean工具/01.Lombok.md) +- [Dozer](docs/03.Java工具/02.JavaBean工具/02.Dozer.md) -> 消息队列(Message Queue,简称 MQ)技术是分布式应用间交换信息的一种技术。 -> -> 消息队列主要解决应用耦合,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。 -> -> 如果想深入学习各种消息队列产品,建议先了解一下 [消息队列基本原理](https://github.com/dunwu/blog/blob/master/source/_posts/theory/mq.md) ,有助于理解消息队列特性的实现和设计思路。 +#### Java 模板引擎 -- [消息队列基本原理](docs/mq/消息队列基本原理.md) -- [消息队列面试题](docs/mq/消息队列面试.md) 💯 -- [Kafka](https://dunwu.github.io/bigdata-tutorial/kafka) 📚 -- [RocketMQ](docs/mq/rocketmq.md) -- [ActiveMQ](docs/mq/activemq.md) +- [Freemark](docs/03.Java工具/03.Java模板引擎/01.Freemark.md) +- [Velocity](docs/03.Java工具/03.Java模板引擎/02.Thymeleaf.md) +- [Thymeleaf](docs/03.Java工具/03.Java模板引擎/03.Velocity.md) -### [缓存](docs/cache) +#### Java 测试工具 -> 缓存可以说是优化系统性能的第一手段,在各种技术中都会有缓存的应用。 -> -> 如果想深入学习缓存,建议先了解一下 [缓存基本原理](https://dunwu.github.io/design/distributed/分布式缓存.html),有助于理解缓存的特性、原理,使用缓存常见的问题及解决方案。 +- [Freemark](docs/03.Java工具/04.Java测试工具/01.Junit.md) +- [Velocity](docs/03.Java工具/04.Java测试工具/02.Mockito.md) +- [Thymeleaf](docs/03.Java工具/04.Java测试工具/03.Jmeter.md) +- [Thymeleaf](docs/03.Java工具/04.Java测试工具/04.JMH.md) -- [缓存面试题](docs/cache/cache-interview.md) 💯 -- [缓存基本原理](https://dunwu.github.io/design/distributed/分布式缓存.html) -- [Java 缓存框架](docs/cache/cache-framework.md) - 关键词:Spring Cache、J2Cache、JetCache -- [Redis 教程](https://dunwu.github.io/db-tutorial/nosql/redis/) 📚 -- [Memcached 应用指南](docs/cache/memcached.md) -- [Java 缓存库](docs/cache/cache-libs.md) - 关键词:ConcurrentHashMap、LRUHashMap、Guava Cache、Caffeine、Ehcache -- [Ehcache 应用指南](docs/cache/ehcache.md) -- [Http 缓存](docs/cache/http-cache.md) +#### 其他 -### [微服务](docs/microservice) +- [Java 日志](docs/03.Java工具/05.其他Java工具/01.Java日志.md) +- [Java 工具包](docs/03.Java工具/05.其他Java工具/02.Java工具包.md) +- [Java 反射工具](docs/03.Java工具/05.其他Java工具/03.Java反射工具.md) +- [JavaMail](docs/03.Java工具/05.其他Java工具/04.JavaMail.md) +- [Jsoup 应用](docs/03.Java工具/05.其他Java工具/05.Jsoup应用.md) +- [Thumbnailator 应用](docs/03.Java工具/05.其他Java工具/06.Thumbnailator应用.md) +- [Zxing 应用](docs/03.Java工具/05.其他Java工具/07.Zxing应用.md) -- [Dubbo](docs/microservice/dubbo.md) -- [**Spring Cloud**](https://github.com/dunwu/spring-cloud-tutorial) 📚 - - Eureka - - Consul - - Nacos - - Zuul - - Gateway -- 通信 - - [Netty](docs/framework/netty.md) +### Java 框架 -### 搜索引擎 +#### Spring -- [ElasticSearch](https://dunwu.github.io/db-tutorial/nosql/elasticsearch/) 📚 -- Solr -- Lucene +📚 [spring-tutorial](https://dunwu.github.io/spring-tutorial/) 是一个 Spring 实战教程。 + +#### Spring Boot + +📚 [Spring Boot 教程](https://dunwu.github.io/spring-boot-tutorial/) 是一个 Spring Boot 实战教程。 + +#### ORM + +- [Mybatis 应用指南](docs/04.Java框架/01.ORM/01.Mybatis应用指南.md) +- [Mybatis 原理](docs/04.Java框架/01.ORM/02.Mybatis原理.md) -### [安全](docs/security) +#### 安全 > Java 领域比较流行的安全框架就是 shiro 和 spring-security。 > @@ -151,28 +164,48 @@ > > spring-security 功能更丰富,也比 shiro 更复杂。值得一提的是由于 spring-security 是 spring 团队开发,所以集成 spring 和 spring-boot 框架更容易。 -- [Shiro](docs/security/shiro.md) -- [Spring Security](docs/security/spring-security.md) +- [Shiro](docs/04.Java框架/02.安全/01.Shiro.md) +- [SpringSecurity](docs/04.Java框架/02.安全/02.SpringSecurity.md) -### [测试](docs/test) +#### IO -- [Junit](docs/test/junit.md) -- [Mockito](docs/test/mockito.md) -- [JMH](docs/test/jmh.md) -- [Jmeter](docs/test/jmeter.md) +- [Shiro](docs/04.Java框架/03.IO/01.Netty.md) -### [服务器](docs/server) +### Java 中间件 -> Tomcat 和 Jetty 都是 Java 比较流行的轻量级服务器。 +#### 消息队列 + +> 消息队列(Message Queue,简称 MQ)技术是分布式应用间交换信息的一种技术。 > -> Nginx 是目前最流行的反向代理服务器,也常用于负载均衡。 +> 消息队列主要解决应用耦合,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。 +> +> 如果想深入学习各种消息队列产品,建议先了解一下 [消息队列基本原理](https://github.com/dunwu/blog/blob/master/source/_posts/theory/mq.md) ,有助于理解消息队列特性的实现和设计思路。 + +- [消息队列面试](docs/05.Java中间件/01.消息队列/01.消息队列面试.md) +- [消息队列基本原理](docs/05.Java中间件/01.消息队列/02.消息队列基本原理.md) +- [RocketMQ](docs/05.Java中间件/01.消息队列/03.RocketMQ.md) +- [ActiveMQ](docs/05.Java中间件/01.消息队列/04.ActiveMQ.md) + +#### 缓存 + +> 缓存可以说是优化系统性能的第一手段,在各种技术中都会有缓存的应用。 +> +> 如果想深入学习缓存,建议先了解一下 [缓存基本原理](https://dunwu.github.io/design/distributed/分布式缓存.html),有助于理解缓存的特性、原理,使用缓存常见的问题及解决方案。 + +- [缓存面试题](docs/05.Java中间件/02.缓存/01.缓存面试题.md) +- [Java 缓存框架](docs/05.Java中间件/02.缓存/02.Java缓存框架.md) +- [Memcached 应用指南](docs/05.Java中间件/02.缓存/03.Memcached应用指南.md) +- [Ehcache 应用指南](docs/05.Java中间件/02.缓存/04.Ehcache应用指南.md) +- [Java 缓存库](docs/05.Java中间件/02.缓存/05.Java缓存库.md) +- [Http 缓存](docs/05.Java中间件/02.缓存/06.Http缓存.md) + +#### 流量控制 -- [Tomcat 应用指南](docs/server/Tomcat应用指南.md) -- [Tomcat 连接器](docs/server/Tomcat连接器.md) -- [Tomcat 容器](docs/server/Tomcat容器.md) -- [Tomcat 优化](docs/server/Tomcat优化.md) -- [Jetty](docs/server/jetty.md) -- [Nginx](https://github.com/dunwu/nginx-tutorial) 📚 +- [Hystrix](docs/05.Java中间件/03.流量控制/01.Hystrix.md) + +#### 微服务 + +- [Dubbo](docs/05.Java中间件/04.微服务/01.Dubbo.md) ### [大数据](https://dunwu.github.io/bigdata-tutorial) @@ -189,21 +222,6 @@ - Storm - [Flink](https://dunwu.github.io/bigdata-tutorial/tree/master/docs/flink) -### [LIB](docs/lib) - -- [日志](docs/lib/javalib-log.md) - [log4j2](https://logging.apache.org/log4j/2.x/)、[logback](https://logback.qos.ch/)、log4j、[Slf4j](http://www.slf4j.org/) -- [序列化](docs/lib/serialized/) - - [JSON](docs/lib/serialized/javalib-json.md) - [fastjson](https://github.com/alibaba/fastjson)、[Jackson](https://github.com/FasterXML/jackson)、[Gson](https://github.com/google/gson) - - [二进制](docs/lib/serialized/javalib-binary.md) - [Protobuf](https://developers.google.com/protocol-buffers)、[Thrift](https://thrift.apache.org/)、[Hessian](http://hessian.caucho.com/)、[Kryo](https://github.com/EsotericSoftware/kryo)、[FST](https://github.com/RuedigerMoeller/fast-serialization) -- [模板引擎](docs/lib/template) - [Freemark](docs/lib/template/freemark.md)、[Velocity](lib/template/velocity.md)、[Thymeleaf](docs/lib/template/thymeleaf.md) -- JavaBean - [Lombok](docs/lib/bean/lombok.md)、[Dozer](docs/lib/bean/dozer.md) -- 工具包 - - [apache common](https://commons.apache.org/) - 老牌 Java 工具集 - - [guava](https://github.com/google/guava) - Google Java 工具包 - - [hutool](https://github.com/dromara/hutool) - Hutool 是一个小而全的 Java 工具类库,且中文文档、注释比较齐备 -- 辅助 - - [swagger](https://swagger.io/) - 自动生成 API 文档(半侵入式) - ## 📚 资料 - Java 经典书籍 diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index d71b76ca..339642aa 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -1,174 +1,208 @@ -/** - * @see https://vuepress.vuejs.org/zh/ - */ +const baiduCode = require('./config/baiduCode.js') // 百度统计hm码 +const htmlModules = require('./config/htmlModules.js') + module.exports = { port: '4000', - dest: 'dist', - base: '/java-tutorial/', + dest: 'docs/.temp', + base: '/java-tutorial/', // 默认'/'。如果你想将你的网站部署到如 https://foo.github.io/bar/,那么 base 应该被设置成 "/bar/",(否则页面将失去样式等文件) title: 'JAVA-TUTORIAL', - description: 'Java 教程', - head: [['link', { rel: 'icon', href: `/favicon.ico` }]], - markdown: { - externalLinks: { - target: '_blank', - rel: 'noopener noreferrer', - }, - }, + description: '☕ java-tutorial 是一个 Java 教程,汇集一个老司机在 Java 领域的十年积累。', + theme: 'vdoing', // 使用依赖包主题 + // theme: require.resolve('../../vdoing'), // 使用本地主题 + head: [ + // 注入到页面 中的标签,格式[tagName, { attrName: attrValue }, innerHTML?] + ['link', { rel: 'icon', href: '/img/favicon.ico' }], //favicons,资源放在public文件夹 + ['meta', { name: 'keywords', content: 'vuepress,theme,blog,vdoing' }], + ['meta', { name: 'theme-color', content: '#11a8cd' }] // 移动浏览器主题颜色 + ], + + // 主题配置 themeConfig: { - logo: 'https://raw.githubusercontent.com/dunwu/images/dev/common/dunwu-logo-200.png', - repo: 'dunwu/java-tutorial', - repoLabel: 'Github', - docsDir: 'docs', - docsBranch: 'master', - editLinks: true, - smoothScroll: true, - locales: { - '/': { - label: '简体中文', - selectText: 'Languages', - editLinkText: '帮助我们改善此页面!', - lastUpdated: '上次更新', - nav: [ - { - text: 'JavaEE', - link: '/javaee/', - }, - { - text: '框架', - link: '/framework/', - }, - { - text: '缓存', - link: '/cache/', - }, - { - text: '消息队列', - link: '/mq/', - }, - { - text: 'LIB库', - link: '/lib/', - }, - { - text: '微服务', - link: '/microservice/', - }, - { - text: '安全', - link: '/security/', - }, - { - text: '测试', - link: '/test/', - }, - { - text: '服务器', - link: '/server/', - }, - { - text: '工具', - link: '/tool/', - items: [ - { - text: '构建', - link: '/tool/build/', - }, - { - text: 'IDE', - link: '/tool/ide/', - }, - { - text: '监控', - link: '/tool/monitor/', - }, - ], - }, - { - text: '✨ Java系列', - ariaLabel: 'Java', - items: [ - { - text: 'Java 教程 📚', - link: 'https://dunwu.github.io/java-tutorial/', - target: '_blank', - rel: '', - }, - { - text: 'JavaCore 教程 📚', - link: 'https://dunwu.github.io/javacore/', - target: '_blank', - rel: '', - }, - { - text: 'Spring 教程 📚', - link: 'https://dunwu.github.io/spring-tutorial/', - target: '_blank', - rel: '', - }, - { - text: 'Spring Boot 教程 📚', - link: 'https://dunwu.github.io/spring-boot-tutorial/', - target: '_blank', - rel: '', - }, - ], - }, - { - text: '🎯 博客', - link: 'https://github.com/dunwu/blog', - target: '_blank', - rel: '', - }, - ], - sidebar: 'auto', - sidebarDepth: 2, + nav: [ + { text: '首页', link: '/' }, + { text: 'JavaEE', link: '/01.JavaEE/' }, + { + text: 'Java软件', + link: '/02.Java软件/', + items: [ + { text: 'Java构建', link: '/02.Java软件/01.Java构建/' }, + { text: 'Java IDE', link: '/02.Java软件/02.JavaIDE/' }, + { text: 'Java服务器', link: '/02.Java软件/03.Java服务器/' }, + { text: 'Java监控诊断', link: '/02.Java软件/04.Java监控诊断/' } + ] + }, + { + text: 'Java工具', + link: '/03.Java工具/', + items: [ + { text: 'Java序列化工具', link: '/03.Java工具/01.Java序列化工具/' }, + { text: 'JavaBean工具', link: '/03.Java工具/02.JavaBean工具/' }, + { text: 'Java模板引擎', link: '/03.Java工具/03.Java模板引擎/' }, + { text: 'Java测试工具', link: '/03.Java工具/04.Java测试工具/' }, + { text: '其他', link: '/03.Java工具/05.其他Java工具/' } + ] }, + { text: 'Java框架', link: '/04.Java框架/' }, + { text: 'Java中间件', link: '/05.Java中间件/' }, + { + text: '✨ Java系列', + ariaLabel: 'Java', + items: [ + { text: 'Java 教程 📚', link: 'https://dunwu.github.io/java-tutorial/', target: '_blank' }, + { text: 'JavaCore 教程 📚', link: 'https://dunwu.github.io/javacore/', target: '_blank' } + ] + } + ], + sidebarDepth: 2, // 侧边栏显示深度,默认1,最大2(显示到h3标题) + logo: 'https://raw.githubusercontent.com/dunwu/images/dev/common/dunwu-logo-200.png', // 导航栏logo + repo: 'dunwu/java-tutorial', // 导航栏右侧生成Github链接 + searchMaxSuggestions: 10, // 搜索结果显示最大数 + lastUpdated: '上次更新', // 更新的时间,及前缀文字 string | boolean (取值为git提交时间) + + docsDir: 'docs', // 编辑的文件夹 + editLinks: true, // 编辑链接 + editLinkText: '编辑', + + // 以下配置是Vdoing主题改动的和新增的配置 + sidebar: { mode: 'structuring', collapsable: false }, // 侧边栏 'structuring' | { mode: 'structuring', collapsable: Boolean} | 'auto' | 自定义 温馨提示:目录页数据依赖于结构化的侧边栏数据,如果你不设置为'structuring',将无法使用目录页 + + // sidebarOpen: false, // 初始状态是否打开侧边栏,默认true + updateBar: { + // 最近更新栏 + showToArticle: false // 显示到文章页底部,默认true + // moreArticle: '/archives' // “更多文章”跳转的页面,默认'/archives' + }, + // titleBadge: false, // 文章标题前的图标是否显示,默认true + // titleBadgeIcons: [ // 文章标题前图标的地址,默认主题内置图标 + // '图标地址1', + // '图标地址2' + // ], + // bodyBgImg: [ + // 'https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200507175828.jpeg', + // 'https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200507175845.jpeg', + // 'https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200507175846.jpeg' + // ], // body背景大图,默认无。 单张图片 String || 多张图片 Array, 多张图片时每隔15秒换一张。 + + // categoryText: '随笔', // 碎片化文章(_posts文件夹的文章)预设生成的分类值,默认'随笔' + + // contentBgStyle: 1, + + category: false, // 是否打开分类功能,默认true。 如打开,会做的事情有:1. 自动生成的frontmatter包含分类字段 2.页面中显示与分类相关的信息和模块 3.自动生成分类页面(在@pages文件夹)。如关闭,则反之。 + tag: false, // 是否打开标签功能,默认true。 如打开,会做的事情有:1. 自动生成的frontmatter包含标签字段 2.页面中显示与标签相关的信息和模块 3.自动生成标签页面(在@pages文件夹)。如关闭,则反之。 + archive: true, // 是否打开归档功能,默认true。 如打开,会做的事情有:1.自动生成归档页面(在@pages文件夹)。如关闭,则反之。 + + author: { + // 文章默认的作者信息,可在md文件中单独配置此信息 String | {name: String, href: String} + name: 'dunwu', // 必需 + href: 'https://github.com/dunwu' // 可选的 + }, + social: { + // 社交图标,显示于博主信息栏和页脚栏 + // iconfontCssFile: '//at.alicdn.com/t/font_1678482_u4nrnp8xp6g.css', // 可选,阿里图标库在线css文件地址,对于主题没有的图标可自由添加 + icons: [ + { + iconClass: 'icon-youjian', + title: '发邮件', + link: 'mailto:forbreak@163.com' + }, + { + iconClass: 'icon-github', + title: 'GitHub', + link: 'https://github.com/dunwu' + } + ] }, + footer: { + // 页脚信息 + createYear: 2019, // 博客创建年份 + copyrightInfo: '钝悟(dunwu) | MIT License' // 博客版权信息,支持a标签 + }, + htmlModules }, + + // 插件 plugins: [ + // [require('./plugins/love-me'), { // 鼠标点击爱心特效 + // color: '#11a8cd', // 爱心颜色,默认随机色 + // excludeClassName: 'theme-vdoing-content' // 要排除元素的class, 默认空'' + // }], + + ['fulltext-search'], // 全文搜索 + + // ['thirdparty-search', { // 可以添加第三方搜索链接的搜索框(原官方搜索框的参数仍可用) + // thirdparty: [ // 可选,默认 [] + // { + // title: '在GitHub中搜索', + // frontUrl: 'https://github.com/search?q=', // 搜索链接的前面部分 + // behindUrl: '' // 搜索链接的后面部分,可选,默认 '' + // }, + // { + // title: '在npm中搜索', + // frontUrl: 'https://www.npmjs.com/search?q=', + // }, + // { + // title: '在Bing中搜索', + // frontUrl: 'https://cn.bing.com/search?q=' + // } + // ] + // }], + [ - '@vuepress/active-header-links', + 'vuepress-plugin-baidu-tongji', // 百度统计 { - sidebarLinkSelector: '.sidebar-link', - headerAnchorSelector: '.header-anchor', - }, + hm: baiduCode || '01293bffa6c3962016c08ba685c79d78' + } ], - ['@vuepress/back-to-top', true], + [ - '@vuepress/pwa', + 'one-click-copy', { - serviceWorker: true, - updatePopup: true, - }, + // 代码块复制按钮 + copySelector: ['div[class*="language-"] pre', 'div[class*="aside-code"] aside'], // String or Array + copyMessage: '复制成功', // default is 'Copy successfully and then paste it for use.' + duration: 1000, // prompt message display time. + showInMobile: false // whether to display on the mobile side, default: false. + } ], [ - '@vuepress/last-updated', + 'demo-block', { - transformer: (timestamp, lang) => { - // 不要忘了安装 moment - const moment = require('moment') - moment.locale(lang) - return moment(timestamp).fromNow() - }, - }, + // demo演示模块 https://github.com/xiguaxigua/vuepress-plugin-demo-block + settings: { + // jsLib: ['http://xxx'], // 在线示例(jsfiddle, codepen)中的js依赖 + // cssLib: ['http://xxx'], // 在线示例中的css依赖 + // vue: 'https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js', // 在线示例中的vue依赖 + jsfiddle: false, // 是否显示 jsfiddle 链接 + codepen: true, // 是否显示 codepen 链接 + horizontal: false // 是否展示为横向样式 + } + } ], - ['@vuepress/medium-zoom', true], [ - 'container', + 'vuepress-plugin-zooming', // 放大图片 { - type: 'vue', - before: '
    ',
    -        after: '
    ', - }, + selector: '.theme-vdoing-content img:not(.no-zoom)', + options: { + bgColor: 'rgba(0,0,0,0.6)' + } + } ], [ - 'container', + '@vuepress/last-updated', // "上次更新"时间格式 { - type: 'upgrade', - before: (info) => ``, - after: '', - }, - ], - ['flowchart'], + transformer: (timestamp, lang) => { + const dayjs = require('dayjs') // https://day.js.org/ + return dayjs(timestamp).format('YYYY/MM/DD, HH:mm:ss') + } + } + ] ], + + markdown: { + // lineNumbers: true, + extractHeaders: ['h2', 'h3', 'h4', 'h5', 'h6'] // 提取标题到侧边栏的级别,默认['h2', 'h3'] + }, + + // 监听文件变化并重新构建 + extraWatchFiles: ['.vuepress/config.js', '.vuepress/config/htmlModules.js'] } diff --git a/docs/.vuepress/config/baiduCode.js b/docs/.vuepress/config/baiduCode.js new file mode 100644 index 00000000..9dc5fc1e --- /dev/null +++ b/docs/.vuepress/config/baiduCode.js @@ -0,0 +1 @@ +module.exports = ''; diff --git a/docs/.vuepress/config/htmlModules.js b/docs/.vuepress/config/htmlModules.js new file mode 100644 index 00000000..6ba3782b --- /dev/null +++ b/docs/.vuepress/config/htmlModules.js @@ -0,0 +1,52 @@ +/** 插入自定义html模块 (可用于插入广告模块等) + * { + * homeSidebarB: htmlString, 首页侧边栏底部 + * + * sidebarT: htmlString, 全局左侧边栏顶部 + * sidebarB: htmlString, 全局左侧边栏底部 + * + * pageT: htmlString, 全局页面顶部 + * pageB: htmlString, 全局页面底部 + * pageTshowMode: string, 页面顶部-显示方式:未配置默认全局;'article' => 仅文章页①; 'custom' => 仅自定义页① + * pageBshowMode: string, 页面底部-显示方式:未配置默认全局;'article' => 仅文章页①; 'custom' => 仅自定义页① + * + * windowLB: htmlString, 全局左下角② + * windowRB: htmlString, 全局右下角② + * } + * + * ①注:在.md文件front matter配置`article: false`的页面是自定义页,未配置的默认是文章页(首页除外)。 + * ②注:windowLB 和 windowRB:1.展示区块最大宽高200px*400px。2.请给自定义元素定一个不超过200px*400px的宽高。3.在屏幕宽度小于960px时无论如何都不会显示。 + */ + +module.exports = { + // 万维广告 + pageB: ` +
    + + `, + windowRB: ` +
    + + `, +} + +// module.exports = { +// homeSidebarB: `
    自定义模块测试
    `, +// sidebarT: `
    自定义模块测试
    `, +// sidebarB: `
    自定义模块测试
    `, +// pageT: `
    自定义模块测试
    `, +// pageB: `
    自定义模块测试
    `, +// windowLB: `
    自定义模块测试
    `, +// windowRB: `
    自定义模块测试
    `, +// } diff --git a/docs/.vuepress/enhanceApp.js b/docs/.vuepress/enhanceApp.js index 7b3605fc..490ad932 100644 --- a/docs/.vuepress/enhanceApp.js +++ b/docs/.vuepress/enhanceApp.js @@ -1,7 +1,55 @@ -export default ({ Vue, isServer }) => { +/** + * to主题使用者:你可以去掉本文件的所有代码 + */ +export default ({ + Vue, // VuePress 正在使用的 Vue 构造函数 + options, // 附加到根实例的一些选项 + router, // 当前应用的路由实例 + siteData, // 站点元数据 + isServer, // 当前应用配置是处于 服务端渲染 还是 客户端 +}) => { + // 用于监控在路由变化时检查广告拦截器 (to主题使用者:你可以去掉本文件的所有代码) if (!isServer) { - import('vue-toasted' /* webpackChunkName: "notification" */).then(module => { - Vue.use(module.default) + router.afterEach(() => { + //check if wwads' fire function was blocked after document is ready with 3s timeout (waiting the ad loading) + docReady(function () { + // setTimeout(function () { + // if (window._AdBlockInit === undefined) { + // ABDetected() + // } + // }, 3000) + }) + + // 删除事件改为隐藏事件 + setTimeout(() => { + const pageB = document.querySelector('.pageB') + if (!pageB) return + const btnEl = pageB.querySelector('.wwads-hide') + if (btnEl) { + btnEl.onclick = () => { + pageB.style.display = 'none' + } + } + // 显示广告模块 + pageB.style.display = 'flex' + }, 0) }) } } + +function ABDetected() { + const h = + "" + const wwadsEl = document.getElementsByClassName('wwads-cn') + const wwadsContentEl = document.querySelector('.wwads-content') + if (wwadsEl[0] && !wwadsContentEl) { + wwadsEl[0].innerHTML = h + } +} + +//check document ready +function docReady(t) { + 'complete' === document.readyState || 'interactive' === document.readyState + ? setTimeout(t, 1) + : document.addEventListener('DOMContentLoaded', t) +} diff --git a/docs/.vuepress/plugins/love-me/index.js b/docs/.vuepress/plugins/love-me/index.js new file mode 100644 index 00000000..67f5ea9c --- /dev/null +++ b/docs/.vuepress/plugins/love-me/index.js @@ -0,0 +1,12 @@ +const path = require('path') +const LoveMyPlugin = (options = {}) => ({ + define() { + const COLOR = + options.color || + 'rgb(' + ~~(255 * Math.random()) + ',' + ~~(255 * Math.random()) + ',' + ~~(255 * Math.random()) + ')' + const EXCLUDECLASS = options.excludeClassName || '' + return { COLOR, EXCLUDECLASS } + }, + enhanceAppFiles: [path.resolve(__dirname, 'love-me.js')], +}) +module.exports = LoveMyPlugin diff --git a/docs/.vuepress/plugins/love-me/love-me.js b/docs/.vuepress/plugins/love-me/love-me.js new file mode 100644 index 00000000..f93855e6 --- /dev/null +++ b/docs/.vuepress/plugins/love-me/love-me.js @@ -0,0 +1,62 @@ +export default () => { + if (typeof window !== "undefined") { + (function(e, t, a) { + function r() { + for (var e = 0; e < s.length; e++) s[e].alpha <= 0 ? (t.body.removeChild(s[e].el), s.splice(e, 1)) : (s[e].y--, s[e].scale += .004, s[e].alpha -= .013, s[e].el.style.cssText = "left:" + s[e].x + "px;top:" + s[e].y + "px;opacity:" + s[e].alpha + ";transform:scale(" + s[e].scale + "," + s[e].scale + ") rotate(45deg);background:" + s[e].color + ";z-index:99999"); + requestAnimationFrame(r) + } + function n() { + var t = "function" == typeof e.onclick && e.onclick; + + e.onclick = function(e) { + // 过滤指定元素 + let mark = true; + EXCLUDECLASS && e.path && e.path.forEach((item) =>{ + if(item.nodeType === 1) { + typeof item.className === 'string' && item.className.indexOf(EXCLUDECLASS) > -1 ? mark = false : '' + } + }) + + if(mark) { + t && t(), + o(e) + } + } + } + function o(e) { + var a = t.createElement("div"); + a.className = "heart", + s.push({ + el: a, + x: e.clientX - 5, + y: e.clientY - 5, + scale: 1, + alpha: 1, + color: COLOR + }), + t.body.appendChild(a) + } + function i(e) { + var a = t.createElement("style"); + a.type = "text/css"; + try { + a.appendChild(t.createTextNode(e)) + } catch(t) { + a.styleSheet.cssText = e + } + t.getElementsByTagName("head")[0].appendChild(a) + } + // function c() { + // return "rgb(" + ~~ (255 * Math.random()) + "," + ~~ (255 * Math.random()) + "," + ~~ (255 * Math.random()) + ")" + // } + var s = []; + e.requestAnimationFrame = e.requestAnimationFrame || e.webkitRequestAnimationFrame || e.mozRequestAnimationFrame || e.oRequestAnimationFrame || e.msRequestAnimationFrame || + function(e) { + setTimeout(e, 1e3 / 60) + }, + i(".heart{width: 10px;height: 10px;position: fixed;background: #f00;transform: rotate(45deg);-webkit-transform: rotate(45deg);-moz-transform: rotate(45deg);}.heart:after,.heart:before{content: '';width: inherit;height: inherit;background: inherit;border-radius: 50%;-webkit-border-radius: 50%;-moz-border-radius: 50%;position: fixed;}.heart:after{top: -5px;}.heart:before{left: -5px;}"), + n(), + r() + })(window, document) + } +} \ No newline at end of file diff --git a/docs/.vuepress/public/images/dunwu-logo-100.png b/docs/.vuepress/public/images/dunwu-logo-100.png deleted file mode 100644 index 12d8177812f070aec30ba56eb6dd4790f4a87e91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7664 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

    ~k$!O4qv?+8^ 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 im5w809xSm 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

    LC4!BaTPftsJukyxvqf6!HoH7^JC5d&Z8va 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

    f<)Apt(EhMB<& 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 literal 0 HcmV?d00001 diff --git a/docs/.vuepress/public/img/bg.jpeg b/docs/.vuepress/public/img/bg.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..85e53e7d9aa9dce2debd88cd61f59e5b41f2ac8d GIT binary patch literal 1246291 zcmeGDcUV(Tw+D(RBoIKPgF!+E=?DQKlu)HhuL3GndP|TJdJz#r=t%Ef1wpAwlM;Fm zP>?1XAas=?QoVfNbIyBy&+oah%vK(T*{|9Mw)_H}gOHg@w3@I|}% z`f+QR$#M%BI5@fc{BuDV0GE`KQ;?KXfJ<^qNh;iuQMd&M0Kh5Wf7h^34E*1g7L)x? zZPYJ{LI1;3{HxweOR@@5a0N+OZYhL<)U8YA(sQa&w}1dYg_}2h&=L;+v_-Mf( z93A2l;1DeCgXa4m3%6a+PAGT30C!&>?td&gIQl*cK=NMJ{9jG-_WQTl|5M-p5%g2g zK)E;s_@c~xeZ7#p{};*nFAW1 zLMgbUER0MAa779sbxTtA5_(8V{!35bUwZV!SHf=}>$Cr5c-1^7!K5tqw;RAfNdcgK z0Rl1r$QXbi2H@X50M{j;B?tbC{-t(V0LegLata6~74?-%fhKwY84v^_1B1xP|7j91 z{PKGMn1P&;M@o%?$;1J|>(302PA#G2Q*Y>DG5z?HU)m8BLq*Mc4a#<1;D(@(u!zhp zSviEfg2ru4Eo~iLJu`C)ODpTUHcrki4_)2dJFtKrub4zPm`-k4X{sH{p(D3Bc^rz1=vtQ=EeJ8H0u94O^Hh=By z9~}NZ`g45pk6)MQ`oG+|EdR^1|3AMjg8(E0gF#@(KYjtpg8p%w0Zh&#MZu_M0&(zX z;)O?3GOMSSH1tsMNt^y;aYTKjX62XpCh+SY*Z$?%|2@ZI{$F|aZ^!=EuX%t5fb3rc zBD>5I2m}ICfG>#xLh%nlC?WqM%Ks+ne-X_;boJl#_tFUP(#EAS#pR2Zijs=<|1tet z1b~5-f9C)+AmC+Z0xI(%C~CBFN&ks z?Q@QBEHz!VlB+P9)6aZk^VQHo=Zg-So{uKN9ymS`+TmGIFh;Brg`ko$=dj_aE$ zkLDk24ffwHD+n9ZUAo)O)d}3B<5vvoA+fw^pIG%_oIm*sh|!esW$9cyEomJh2)=Md zb|929N)LIB-|B^`VCue6V*#xKZx&8z0> z_$`;j!cxltX2@Z^{e@QTG_upBn&^cQ7HmF=GdR5d!Sbsc#^9XXKKLv{XEyj&q-i#>3vu> zfqy?AT_|GfULchuFZif>GOVpEc!KDrn7xvE-Y?jyM5e3>|2xq>d zJRO+SIE*}cbf$P%ZRTlqcfu^J`SgjtJG-uoXwh4`OuJvvI8}W0R<1|c#{-$d>v9>U z(+x1P4UoolA!mMX_Uud;BTDK5Gu_to4kj#;_)90A|FM3F^#~dBpkk59Cd5AxmN)J9 z_|_wrO)i(H&h@F6aarrvR6bCx6e7U(lccPf>m^qfB}zvG-i)5|vLzJd@i$oRY|NYy zbD5r7%7@A>mc8EKPMAleu|6Dt!d-Ol=i|zaD@1qYO_TZFM_#33*ePgs9Z8xBWKWre zBJf>x%9-LiA46q#8l7K{cxDDzwJ-wuSgsB&JN*T`IyTqUe`pSqaku%dWJ0&lO06x` ztbD&iOMdx~^Q|xvzg^lfvnRrnJeakK_>^-mw$QIHigs%H72bp2! z@99!=>%HhZFD>3Y&@K&2{B9q5Xs2Hz{Z@sZq9|)gviyFxm1Uos_07?UUr^`}hlpK~ zhF-wToXr6@nH9N@Ub8dFy_aP>$bYJpqqcrFlj5KV6)9Yr(>YDc5)+k!#H^$iRCTS1 z_&zFmQ#EokoZ)TY_glL3T4~a}5({Y^@`5DHPJX2Mkx11SDy>G{Bsa_*jg%mEF z;wt068e{pKONUYm7I$M_Ccp6v!M1j9OUJb0Nv6LW-UgwY7TXgNY)Aq*EZ2P2j8O^& z9X~@)CYIs`s0c$;jg%xeZ>;B#Bf1s)7eM7jEHYfIxz}-5k9oSy{`uj=%wy9lLQ^CA z{Da)l`6sbhhUh<*1}&ls>xm|nrCDWQxV$i?q}QLA=O27}#!xP= z6HTt3{ubuU`98?uhw1#nXZoaRy%8!VZ&UtWGF^65XAYi^t3Xbi=93C$KI$p|5T(*9 zl1Gch0d(AmsJDH89KKQF0`C)BP8RmVzPAq|b}HuHkFOQpkcf>S_@G+tPkXER!%>p5 zM4T{M(%gN=JF-5NahGv$v}RvYz}z)<277c^HIdP=HYd)@8=YbdY>7@`X7oQ0tl61- zm;{=x6UY7)v83YoR2zk5PP6U0q6rqOxBWGBZD3AJmW0QZrg&B`W8D+Bh@7 zuJvmknfs->#x91G&?|U9ZOr)ZKt=B{7Jf~B(f3&+yf^?K_leWgTn*fgWiZ=kj;xkc z#YXxIs8?+Zd-}bJPXa;o9hpwvQ1dTu(TI`g4~x-um`(Nx4JxkFbX4P9e+5vGRjlID_krZI10snP&UmLw4Jn$iDy)E78nASl);vbR0N@XWPPiXqc#y z6>5(}r%CrHzs*LK3>UX5k+ni$`+q+AxzoxUWrjez!OPe4(wlqU7Uj$UXzUBM>%xUv zcRr<6TOk|X+H+pKKb_dMX<+2Bd}v4iemSW0yS~Xclb`d~Xi!FBze`u|2ErJ0=6c!V zsiQYEoLW?^%eGxUBjyk{aADgvT}kOTdzbsFAU~wea#7VQaXp>Xn3a%xru>tK>3bq0 z)zC>T0eNJ?CIn;U;4H!9Gofuqx4)$xuIUVM5YQ&qVfzcALR?_@u9W#el$zDXgih)Cl&)iz?(m9(iv@O%d{Vr$KaU!2@fw*lH zs$37ENad{!1jQ!bM^?9)B(gYJ-Y5AJX0|l(!*MiKz-ST<>DIa(&ly#H7D`9>{Oobc zZ?SF|sE4TZ(eE|%la5(>l`!v@8ec|}ebbWtt(>vjt4by{j74J)OP7T~Dsmzr ze*uS+t%DB*oE)>oqzDN7!7aZ}sp56cN#$X^fK{Br=Sn_R(_v=UpgS02sXR4{`8R7y zB&^ekDMe=7l`LLEX8XNh<^1nC%H=3NDZf7hfcqgwY!~K?ADL5Rg2ju(Xt1y%-+^bb zj}vBjcfG*I+WfBRhdYVtjZoHGV6A>hBd=e70bA?BiGwdoay1E~AAd??Be+jKEu<#3 z<@oRI7xt_DJ}PHrIeQzqnA-L$eIc?5H;s9m>T``j>%#tPJ`tAx`;1VbZzZhADDAq7 zeM9pYPukM!M@xKonUH<^7`5O`taAEVIBgx)C!IxWK_|G2rA59;6w~+l)`f1|0RZ60 z)6^Z!_;TGfU^BAq&Wbm&XiGE4Zlt&^YFEr?RI#x2gpMF%Es@>fOmye*-}T>Fih~dvn9^qllDB?4;j&YtKXDg-R>}Q*kb1FXhB#mfH?<1OeAjMh+* z>rT*R2WC+I^w7?)EZO8wAd6d?&`&?(YhXs}pVB|D=nc)GMw%ZV@>9BL3cI38*Tv%O z(XI7h)Udn~vG7mDXjI0xpOgZ@NIX*dhu*r(^-}e%ZvI$&C1M?un8NZL4NQHfl;TI% zWF_e)lQavi#w)={XSwpRYS!&2Xq2JuGEL#qG#Zed`kI>Pt5ozrZQX5+Oq0F2+KU#w z;MyXCCjZEE+s2?;oisI5r+5*N*UG@?Ofz;pP1%wF1vT+7R?kJgi;cz|9~C==Rktv! z2#J1eBUH6u$Q>dg^HvA30UUG_xfHin`kuA5fTGl3=pEc!N@Jk1@#*|)wTsv;7+Q4* z97?M#SPZG+`evESky7*l^vEIqB;3f~a2+5GrZD=}4J9U$b$^hXdlrx94p=$pXT1uL zyz`<(X_sJkN^F^ozDpw!OSzC`ic&b&o+&97dun36Tz?<0QVlb)Uu93uC|wR*i$**ZK0ZE{febqL#O!n2eIAZ#Ia-^@GSai99ra_+Fs(*};ukX);(jJGzVy!?dJpkDy zeXe=qL$B*Mqp@@>%>fCdG`(QJfW`js+8^Wy-q7qu@rt=^sy|uT??EaCm2Qj0M)?(| z=`P}O4#uuIIKyu}Vb?-7h7c<;9|Ng)HE+Aa)sD3hFtShy#p@EVYOQ%zkN{s;~*)pF}IecZ;J=_1G`pTh} zxp}b)gr&tC47gpnviHR4ZA>ptQkU~BRk0HTcWUeFacwW->y(kfZQusBLHwPQ&?zRJ z@?Yg%Wj}cMa4RRosz1ig-zO0BH`uhCARM6+ymGgJ$$}sfVIwh!B|*nj&AWJ;MtW+0 zTZlDoHbvw$h(ERm0%@plXmBC7I^t(2%1+NeA>rQI83Zcmvok01N%jsdGlnN~1JAaE z4LWFR1JbN+9(yQTJjmv{L-!Y8p(oKR+h?ns!$wwAd?g05B&fvsl_UdnfLCAhU4%KY z)w~l?q@~Q0?DL;$Rv}b?8p)0OIHmH5XD1ViJhq;!KtD*B)0Tz*T}pb21=Xz{JlL3( z`LS?H`2Nh#Du=sl*XF#eQc34_QAxNm#0d^ALX^dNOkigoqR|^Ifj8HV?Nfpuu{WwH zOWV{``Wwa-|8RV5U5I>q*(0LVNHcGx;^z+i%5GYfJoOv7FL9 zXVRZ*S2g)<{g|r-MS4>p;7GMZ*7mHAWPl3mBmNr^K8i5T=`RXbXE%f&B8c)}KW#e< zHM#d~>O`Om&1eW|_4f(qA@AyKs05xTh}J*)fV04TG3QndpO#~iR$v_(&+S@o=ls#X z^$Wv$H=O@I1revEh(4%7!A#katrF!?mXa92DCMpSbp@}Wfm|qaxf;I@o4FL=g=~b^ z&q#uYd-kx%Tv}gLwds4|(@}*JdsFXB=(?_qN$FGBZ}_ofjYH+dP{+8X5BZj>x~yLV zJeIln5Zygz{##20U-C@aTWJ||u_gAwBzeyFmk2B9N(jTY`!%8A-Lc+^#Kc$0(25KjP^r+I&+S=Qa0xoIicB2$~;oS&moK*?u1` z87|WD&>i)n;li{ou)bxn9apQluHHQ(I~ z3KzT3U$dB8rMMDyG|yjvf>WTCkaYtff&+2p#w9F}UWVr#ypoOkK1*`nHZs~UQ!K5% zTUn%0;`V8;_Y!+@791b_ez{99=s{{S0Gn_1u&pML_~xE<^ba;e0Sm9_+1Q}U1#l$! zHRmt)H>kr>{)A!elY6H)HWp*CX4BZdxN9cSMLEw8#uQTrTds+$Uh_KwO*JbzZK>Xc z-x9vTrm#QNiKJ61JQ!Mi#ymiF)*BTbdNS26&~IxZEAexbIeNk=|71eKBDCT56)v%2 z;c@h3bPuciR`hMDU{cR%$tu-OJNy){n_{Tc?w?+DE8dr5W&`}xc3Mc@Pt?2fobs!~ z8VnY2jG_o3ZER@vbidq`bD$hps^S<&CmRhHd^Hmmn5g@uEmi~TmfgoGZxAmZDs}pM zUr5!hB#zX5%UWZ7U54g%tO!aCZ}wx| z{lV*ezTa7~rRItY}osJWI?j(FrxaFuC^@b|SViWEM{R^Pu zHap-;l|AmN>w{APQxInP-K&HURnH#bVQ z)nq=jM#{T{Ipm;n=UcgAO*w%T(`=bEZqP&8Wi4vZRO|xolkPg&0Ih3#0ffB(qt-~IyRYYjSv^6e{jcmD!j9ABZ49AQ}0D<|2QW$ zdC}DDmO^HT^WYtnj*8@una{OrJ_RS9=XRNVF)&Rws@gSS(?yo9A|~Dy z41-bREka6Z^Ur-p2tJs!a3S9shQvSDCp^{M?iQ-{-_sdFEaGNC@`q!}?g7j-X75lJ zUG?zyuQPHem{ts)<@+Eurr6GEOAp|giUy+M*A6#@a5s+QT>OGotqNub{I_;4@3wmR zoXt@0ohp@wz=ny@*At1OE266T&PEA z98?8#BWyX(F^>q$H{mxX4KyQ*4%f7=He{w$s{TgUp8fE#Lb~ zF>f8Ua^=g9qXub1yv~XFD=UHhrlB(O8hN?!$Qe@v!`)-E(-cXgk(6K(0_Id@Y?a&RIoq6wN{Ox>|hq{?{-RE-1*e}S}3mpfkHWph0CN3e1**7 z%TZV6s__^hmi-Kn;LV|7TydH_KMr|S*+Ko<$5NA3Ds{@eSNnSadA#v^?8)--$5(ak zZu>T0XR6jrlZRX%2(f)BpZhXMjr_fwIXK{PxQWJRcHEjdnMIEcSo>WegRX>bdj7^)^Q>_gc5{?MI=YpVI*pw&Tp3nsZtUpXQ{CVPN{+FCRrsB6BDDh@K7mi$eqvhU&#Gz4XSSfG zrdcks!@d7CZLV4AZb^F`ZfmX7W@4s9lbP+r*@`zQ3NzQUxjt3(u*(d^)m)Om(O@4| z3*Zy1Q#{!8X%nUH2TxdwiF7uJ%Dz7>R8Klple7!BUAm5D0nE_wWmMsuQ_| z(wjk^D84U#I!M)i_DzF)=du-p)0S-YlCZerSroK^LwYJ%ufVj+%(F_u;%BJ|<0x)Q zLch5`0vEd;j&w)gYAB7#^@;pxLNH?f9V2MZkor3P=2%K_k1@uznv}bV&1hEI_+b1d zGUB@`3zb-Zxo^e`bkpgtdEA%pPZie{0&QCAH^iF4r2Iqv1LA}QFMrz1!{Ibt@ydaMtUIhpy+E9THwYFzeGyXo)looL zYus=xyf0anfr)x{9p2}P{Vl($a8eAils(rM^}gzZ9$%Y$B-v!_;K^*L~D z#Wy^PsO}im`-bTA{lRsQ0PWj8=W9ce!8e2~($tGYMVW?3Y(&1cgOY9Aj-6>Vo$y_! zJa+9R$NCxU!4RoKH~pjAh{M;B5YW|<+paNfc%?_DUyExL_(IX(Qixe!9Ad$LI4m|w zXZ4AUC@!r2WP)h~N0$vBVsNESI%3^sL*Ii!a zPfZjexA^W26m#>!-@`D=X~8eQ?!5_Ky7=hbAp7&%_v1h%XE-^}n_1$?q<)RvO#Avr zDEx}Exl+rp#ZyIQx*talGtoN+KdQey0zW^KBeZ_>j!zigGvWz6j^=Mc$^MF7r;Bjk z4-_!{GPL*?a8E^j$e7=`fQ7nlv3oge@els&%H*3ar%+G#7m*J>4e0HKd|%?nXK1N$ z|6Yk5*OI>+v`Yj$U*|nn5wT^du!_-Ifm4it?VlEF~8K)nK{`Ndm?vrkBVKY@%*MQ^uv&L z4UAF!qmYm34ZEZ^U^}Cv^h^hhahm_0=88~P7pQCRxMv&6)c*!Iwc zm*cowmyZA2pbvby_jU5@*)q@J!;ES&FcI?D?iGK z7#8W|=So-0_ftPtth-a8ZO*~TOyka~FIu<7=+rJg(cPv$stRCe9C-O^02;PQ$Bv;# z=NIW2-P6A24K0}u+RX`4fc{)2rccm5uI5-g|E#sS_fm&%VY~l1*9}>m8Vq*bEl2Zh zX4C02I_ZcX{`TmYGKBmphQv3WIKGI(h1XdN!C&;&Ddv0sMr(m}Ly8NXb{xbby zxho0WOR*-C$5+|?UY=luy|V*Q@nn;fl07J14w2PoXgJs^k*3ZLE2dx2SOAq(p_h4z zJwB}QH4~g|*!$L~=)@6?q%60L0w_KuL7}kMm$P#`bu1W~!q}--Qe8Z~a8BuWHF$ti zl?-#rg#~cQf2!B{DGD;=!1iC;04`F8U z2KU}ru#Z{T6JqT)^sCh#J9w=#ncWi?5NfQ;dmWcz_U$0 zLQ~Cgd=dGW+slV;bwFxAf-IX_PKSyg>rA)5W7sd?PvWjq<7*gWZBvUadXEZOnQZmq zO&_2{u#HR2oC!H4#J!+7Tlg7xdO8VYFkayV_HbR)0-MVDdqN2?-}w_$H-&aAbcrwhVfCb#GK)?`2=75&ti)BxmKt^czg1%Vv1`1c>EAf z_rkhZEjImgX!8RMN5vO?a&gOV zAu$hHk@@Z~fK^M25?|rrDDoOiFYA;aNZKICT*-Fl&X=ZeMsQOD7k3er-ySPr0yq8~ zRE#Q{)J9*k=a$?mT)AkH<9Nwf9U#)(xg@_GdYy?$BtUZx{_YoHsw+YyVO`iB;N9(1 zA5ruE%5py>FLt1m2I{naJdcUc9`*0p4CDp@EEkES?Xx(o(WfR6%xw26pU9SrU6w zAQTn(A-V+mBP>czunLU1VD4#H5N-c?%<<;yQmO~CH+TUiCxYH5gBVuEY8Fqm@+=h> z^aQhq5RBc()>F3UjFmj>ww>xpyF$1g<5esn=vp`W@ zvPLj7ad_P1`?O+u2`0g}IffFRH9j4!jckDdGVh8B*K2O*350OyioON|66v z(DQ{izem4$QX7EA($zQdU3FXKNwVc6 zd==l>T6D^?(<%YdvV|p9kTExg_2>#dJ|uR4IBUx=sn~Er)nCAaCV+ZvR3ldT$DPA1 zTyU|afN7VgPU~`(NjD$YWOPDTXyHgcr;&30Z)QsMhU&$5!~v-ZM9=s~>vR!tKmVdk z2FPtijndjCPX9W27{#*yzlWmr&%fHGp~`sd^ToU7$iFqBZA>w0StH^HFkuDbn8Gq@ z*zl%qauyHeD*0UrI(n=auQa;sio|avlJ(UVXJAnZ%^0qM6l-<(BG6RcRJ9*)`-&v6 zp!5E<7DN2!Xj+NlA9Ix4#2GH5E!BYx8j$4R=F9NYU+3=ol3Xya5HLA+)V1l*!i?kW zU7_^gZ&utiCy^&(upa-%)+=dc@+y+Vv)@}r+3IAYVV!}?TzSb8m;>hBC;o=ZaeKY3 zf|W*h=tz3&ci5tik7N~{FTx`W1i790)B5$vY_D{0{K3iB&{xE=(hWgXZXy-!C%|sZ zdR*Yxp`jkqQZ$_?bXbaCgtS$te82l-f|W%b3moQNpgcU}I}-w`vl!*a2Xcj;*MEqj ze<$iaw3z&zcnI@9Hl_(-82m<{DRbxS!yH~@P^^}lFl@A-a0=%tLsh5@o!Ph1F*L2+ z#OOm7Rb;2SxfA3Eov8}J2B6V4;p8q@9|7@je2u5}d$HHH9SU5)oTF9a+xVFU#ry}i z#sCs)c4hV~%S=<3+g?;3l<*vvTPiWOiWByJd(T^@DrU6ZTeFfmwb{h%<7Ix?!_5<4twXO(``h_TAV|Q|CD%w1jK2<53 ztNJPbBC_o)JrVU`s9Y_T8F&iSWHeOcbH7};4-cvSU3j@&#%gy^;A5i5dCp$s9PFZ? z+Cni^gl;>-e$qAdY)JL?X_wpsG){%ON(M{RGO`R`+LeZFh-p7Owe6SyjlF6uejO*{oJtg(I5RS4arW?Jh<3)eDYJE)bK_JQh5 z);a_^v=R6wKuZ;AEv@}L3rYCc0(?I0q9*HAeC3ipZ<-nhrpRGK^#Ilo1>!a?M&mWk zs#{-8n{J7zl|!Hl<-evnKt5Y0c|k?#t9A}iJ|QcCWe#-a0CKylRn^FI{Qj7^wRK~c z0voMzL@|c8b=$48S=_UR{fRwU%g{_=c_?juxEqrdl}4*h6vRy_*~r&}LE@Al>B3Vi zcri*9x^W@XTa9pHOaCFUoryGR<$U`zcao?^p*h6$Q=;ozKbRL;v4#c?ts|CG=l4#` zuHAz)d}v5Q>3~67Td9e_&fZ{#H zTJUXTU~6ay;@A!*B}Yglg6m&zd{0tM&;QZQcGfUoG+cYLL|WHFRj(K|+D)5Je1s^|*~6PL~oMT-k*= zK?g4~Y};su*4g!igD=(*0zV;06oT+gyLzs@okQ6P%sTut7P|GL@IYJ>NtseG&jbce zs>L2-EO;aa)4fu?#aO6ufOCJ%4`bBJBTeblR4dKsyQGEGfoi>j+hAwvtU@Tor*lskq~>II8k|;5X(U*u~KCq2_M)3?av3i=yhrloKmrI8`p1OLma;;a$!?RF0Rzy z1-z+!$0&`%5INfpi*1_xzeaaaWkCtJ?lW7dvXxbx> zKT)+vj@=)+ZZ`@ARwAz^q-M5}s; zk9^>v;rS{7u(~8jCP_)CLmK_Dz~sya7RKtLF1+l8ROM(FPSD!vOg?9WY4TJNv)u7u zROCSX6E+V?A8W}1?P2EpUkmB;$POXfwB54eDYjXq0awRfFw-%xXJh7b4O>%Xd$Rvi zDc&f+0-eU6WD{NH&&_U$2E&$1QscmJH9{rTQ0+di)%{J4RV{TtZEk0woq=Eu1AZn0 zhTFqCX(8a(VEg)($vj?hxOaCZbnn-h$`6cFVfYyDZU^=DFr}s64x5NMjT6T{?l4e3 zKXZGj*E%FBAwe`fdcF#_AEh{vjaYP3W#)zUio9Olz2G(SA z6}2Mch_R{oRb4l^x|39Wo+NrLIpLJ(qN<2v&Vy;+HiBtbjnI+s^KM38ljQf917!HP z;^$`#vEe>eh32QVRYe6Ts>Mwd=3%Yyu8XOs^ZRoxo!{O1+ylXbE3SeNC9Z5UtJ$Xt zn4!oAKXqvP;PbBjY+|w`zUrNP;#OkaC_yurJ}ixKu#bg31B<1*lWZ~{YvdUIMRtm_ zdkpqc0WM0`M?=h)pyUURu}iuSi`VmJ+*VBL^Il0?aF!&>Urv`FTD-}n{b4%jl8S|R z`TwvqOUps5HX5y(_*5T@EB;DYe^zK?o$?qm;48iDGSu&EOkqDW)?T!z)GtgB@sS7$=lus{7m zV=o8V$*AV%XH<#ZOE%flkH@WL{T8)hP7CH97Ny%SudLZZr?}py^HD0~KO&f%3oW?o zvEF;&ke27S@zp(YGB6*#g{?y#uB4N*fMCN=yUBk z_LJycLRDeWjH52|a&b`hnV~1Z_vHY^Fpl%uhN?VQJ*)*g+k=jb%QJ+P(=XG{Q zuH9Z^@Z{4O!D)|7lU_q1$eI`XZkpd~T5iCFzVMP6-7DaexzAH_N8M>XkWt&EscEsal*1gI5Fr#XSfF8%lc5 zHT{oqIwsxJBx!l+>*ot~Hbx=ZPXaE8!4X-&R$&$7SILc8v{0}2g^OsyC+o1WE(h@_ zI>dlB5*hN!anwWYp5m4RubZsUTpcg@(>uU-pN#HbZlkb?FZe*KX!Dy#Alvzg;=EsY zFH+m#Nasx2qU4%4E73`I@AN0_#KJyd3ARj}t9Wr;d+A-|Ob*RQZT2zPT>*9_^x!(J z|IF;Nh357b#>8j-2?RLz{OvU9T2>Ny3+L=1mrY>!_YNA1A9`3 z-AJST%B5U3E$YqFhzjEryh={T-Gp9XeziRK1QmKz>;2Zbj74-IOW*_8?W~c@!yA@b zh*kTsWjdTVIcDt{;>-Ke)>JNCqz=^zVYez7LjF0bd~1`VH}=Kr=5r=SKVo{%d|~JD zMF1L}b}#ww$I~PyGp5_>zHC?DI>RCko_ZZk^LK2E}O9SD@FH)CH6xGZg`~*A`y6w zpW0m;wgVz~nW`JxU#h%A#Z=Wq`^IEKG*Q78n{v2_%#7vSc7K;;pFY= z&irq+xrG7Y+kXKJAe^F=Qq7`U;8flB9puTiPp@*#1B7&j)EK^XsB!c^oKAbA;JCb! zdq#e{#eL9hm0`bhC3QU*F#x%mtaEZf+ z6}Fh14`Vm}0>1T;=b9u;@D}AW#6Z0EQ;R$-C*(3GCtipRSS)t@9+B;x25OHMlKzUIVheDe)(jfLWnfZZcJ8?jIuy;RXWwwyMRNE#tCZx$TUc+9Q= zDryHPC8Klw_eBD&O!zbc-hkXso2Z`K%dtX9_C)YO&k8O>(bi0MrSs}lgpGGHjawrh z`NGyweB={;f86&sfeUj5JI-}_Px)?#b(-GdxCGd-&zmGL8 z7V@=9?>e*1mlro|vX->e>*I_I9gkJtaJ-acJ|r!@F}0G-l>Jm#7_$KH&(0YM+XT4q zV}BzKl)I9y+|yPRXS>ys`wLomN2mCQMURTHF2U$SrQ!JcTrrfQvr@|r*DTcu*VjgvB^8~^94gI>u_Yj>C?TlhsaoVu7RB9){vTMFX zATb8xSn;*=7Pe+RZ{n!~fRR0TD1^hxeGU(*qZFMzF>9l~a&pm5y?%Ss?!EoZAM_-_ zLdtQihEP?!AE>4sZU5dOO?#%* zDz&Lu`bei~A)p)=9W|MrqLsIKGp8jft%c@}`Tat^wGzJl`DCYe^~IsMh)_u5ab@RW+Cr^W{dj5;})*=(p%to71>}gjt&q|EgRHTb@&%RV+Hm~br67G@c}cc zzySm=leHe3F>Q6?;Lma)z+DT3e~e+|up_wq)A{!@MS-jR&GVgt zkgF~6qBBYXY-byabG?;^28@UTfxVv~RM1cOS3?z%dlI%N(>IhCe}bb$iXZc!q-WDG zn4pr(Yp;k6H62d#(vn)DtwauO_IQlbOvS?)jT*(!QB)=VxYLwwus5Gfy8m{Lza{25 z1678Q0QlLy&sJeyxCn+_puXl&JkwZMRPf?d`UXM1+$Za~gqrLb*>b&rZJKtA5y|x9 zlwrkzR~~zFp{{(-;n|6?w}X1z_}YNcX>VcK*Ap{Gz4?Y;6g28P_sX_Z4;vFGoX41n@0rNykVA?^0a^ zL^HiMiRsXWKsb;!v^E~x`%)>|f_r$Q2#>q0&IzMmMSj9Tu1n9Z$_g9TqRO4qfJEhi zn3uP%q(1r3(xO&0@=7*ZaN1OPna>wNJTcC>ANzz+Vv;OP0e97)J5*E@fDgntC2yH3 zDyC6L)eHC;QiQBr?gYH@g#lnj9&f%(152(nBB^$0r|^Ri5M=vGqylwQACErv>|Oh5 zQPnXs(@2f5Mh`*B{&M}G+#@T-%OZL7baYgE=EMxRX&#-{%0YRSP)Asu(p6sq)37COLkK5}!!{jBCFF@JOiPhtWMUM^|+t?iKIvyQZL%J<1bpDd#af zcs9hwvGG@v6NZ?-fSXwWU$d#bipp>6I(5gyHGUW=Mx|HA&ePwVt6d=o98@FZk+sZ- z&fiykBI%W-{GKUxW-|I2UhODy+zl*2*&98TCL~6Q@Z!qO$3{K|(MLxuWD(SbfKBhTeIE-K5t=!U6Gm7iSRrw&blC3jm9KAoKf{lMyXh8ko*lO~+h z2`(mzy8z(TH!MA%+O15&HMuCDne+HEO znjw8SE)wNLbB0d|0iPU<0T4<3hDP^w4~ogDRY`)rW(UPUKP@@ups~yUHo+JQZ42Mp z1*)}xvk>PI8Ff;xQa=#W^NT*`-UwxRdfbLDA+iw+GoTsoe*@=~{ANK#m(N7E!m6Df ztPC!uEvy{XUZGi9J%YJ(J%L?^pgI?H%n%mDqKLB3vGR(IG&|%83upp|3YQ)wXRBkY zNeiTCMVqL~1DCChvCCAciU=lEfH)V#T;OOz{e&?YBTB8FKmAO7?^PILBt!ymd765`d_o{$ z7|@OX9!7aY22k0jQ_b?5#hh9;1VZWs)qe#Up;Pnqi~zcn!lkh7Ov3mWmP>nf=wARd zwCpFUXMacKM*MOT#2Jr&My8YrVnz8$B=m@p?8QxN?bdiXz1jy7#6*I%b|ag1DCFAW zV@SXj?(a{&38v3lZZjEhW_w4hQhq!D6_dbjI3&9(#c;AWGKOV?GUI$;siQQrSk>Cv z9w4e`WJBeKCA=acP27_2qHCYwf$d9eT^80S#EVA2CoSWc*TpG0Y@VyVG&HAeo-N#)*H`f(FDc4b0Id#exoOt07?Zd7T(h6 zS)pPifs&6kBs2-jgY3!Q-rKO&r>I{8BN9Fy5Sm}a4YE97zkpqvJIkj1d=Hl=1*Z04;I^dbshTE$G#)sSKk}zE zlLp}E+rN!b4Ettv8SKf73H!I9!h)JL)L%fWaJR?T%vQC~bdD#F>>VCfzG;xCGR#KE zB)n%tF_}G6KKDUydRq8ay=0{6zeFpciUj{5C2r`P543R~$K@9DPE$bpYda5K&s&iM z1gqG}?_MIxV#9Y@*T(bmb7>E5#Xgs3fJ@5PORxkxwiP4i)knX? z-cI>k_UH7dPhyvwBdSjY={Q(UCO^BY^&s=NNc74uqX}4nFF#%Id$FSv%l)TKnMIhO zqcwtZy3Fm&4?(?8+H#WGC?`fB{j29a%+xpLqODX{-M4HREG99n)G2o^Z*u9<;O7p} zT6{XeC;tV*xA!+YwnTvGEDS~(&(Gvs|CXxnA?|;b1MZeDB(5mea8@gQa8Jgkt1+N) z3Df@p6op@GKM+<@O=}Sfw*YqQUBR2)r)JzlwE3o^-U57P4Nb09EAEDQyrn1<74&SZ zc)Jn45+VIz6PO65fLn^*_K%o@jgI>MdJCwjyKd_ zX?%Nq`lZWls=+p7FEljZdS#4jV!Pc236iay(u1VM%$WnP25z z_9EpY7CEmWO0qZ_zRWpshwD%P?B_dv8-}GZ3uV3;8}de!d)w;{7AfPcbwo-iYu|w!3gv;nw1Y)r`-rnM|3ah5#&_ZlKJ; zK43NE?^MCrhs^PKsmlZr$*BVZaIY}+>b8uiuT8~LYLwx!!S9BJc&{Y@{g2bOjjcZG zE1d5&7VVA9*jP7Qe7pLyLFH! zsk@sRU|)q4zX5`QQj@FV3CBmhL9<^*(NQ1s6j`k;*KOVegJLv_B^6#EVQ`liVfou? zcax%UO5x#;q%<9*i6=&z?1nCCR^BGqW|r?G0^$5s`cdmsDpr8ab6JvSaNfTyHLfEs zdpBB!H_4EVQKt~cCdK=BZ=a|j&o-QsthNumlJOiqOtlP+*?Cf3CLA@08s7Q+csZL9 zJ#B*S@Z?YPVbTQiDiw#A-tW9qaful+t3M(*kJWr^8yqe}^mI9b+DeEk{ppp*@`jLp zjvCwhoFu2VB`S*~wc0KP4!b9}-K<2)*V2dEMT7Fyr}lWuuWN6EWKyrrn$;1JL{c@i zft$`?XtD4Lar}^ei8IQMMGNsSh`M{LfarT9U%Fh`XXRK33V+VGm^KiMaM5h~x#R8S znwr;HFULRmQd2Yp2PbRuc-wdIz9LMJ{eex&Hx!SP={}L)M%@SfO_E?BfR>(7qawy( zL!wnr>CK%@({RqV0PX&J%utTtXiLA`k`T>up8zY;v4$!Fv8<@Y6n6T(l)TVbbRHT< z9CR9Fu>mSZurcz=A5~8FYgc>Ii90mV8(7te-Z;+We}wEU^t=tsd7IyPbRZlX0KGHp zyDLG02M{-QEFJF(9$FtTIy0{=H?!AUkv#p^rXs0RDPy3Z-w({@#pAK-Ib@gDQT10| z!sswyg+RpLvgYFVEuQY@;V{+|GAY!6kwd^ZKcf_^0`64Q3auG9xac0TS}1-q*yH2^ zd#;f3GoSC6GrOVn_gvx~)rK|;RXC0_G&TvjNwWzq^?298{Ug9L>zK(_WBs89eXwuLCv zO###~ouHIO{AQvNJ~nvH4NZD~)ug~X=^6A6-$FS4hoG>!Mb*UHH3UezWoS=w&tCk; zNSB1+n(@_U@kW>YyET}P$pg8ueyun1FLfX<*yNZKg99~8aLo%R;dF$dq>Qx4raz4R zI;o?P)TG(73Y*oZx1R+0M@*eb=J+++4ryjxiIPHpML+^~lS~)X>q@j4-bEewG|4Gg!=w`LoFpyR!U@y8W#5GZtdBg$YDT%v4pJ8=78gL1;! zmON=<+duSiTeO7?gOKt%S%l&&n8rM;=eAeP7#V}~3^;E_V+|jh=4bl%gSmp&{A7xP zFrD2sk8e(fmXAH;zbv&x!LmLh+lSvQ3v}}Q;847{Y$`@BY7pW2V$Z(YGQp?WdgiHn zJ0Vbbbum{_rFVIOFSOxHF*`OEslXS_ORtnxQ>ZljL;l&mKoUb)X5@<3FJm+O9oq^- zlpz9V-nVc=cOi9mRZ6NJG{?j?d?~L|^Di@V=;yJVgPXTys`xj~K8xfF2L?!U8qsSQ zPDNQx{KmE?KI)#TinhP{kmlovw7ZGwrRWi0r*b3o{fwQDXh+l|`;vzmqx8OC`&kj- zsptnCz|_SDCSzh>ltznRh_ws+8hhoF5JukhnSgUhqtw!_|YiRrZM0S-2Zc~aci#(RmW;-^RX|BapE z`yVgE+pEo^nI#3tOL_Uf9v8um<=>vLDc0l$hzHwm0hPsBk1+E7sCS1JlDS~i9(Vnx z!>JqJn~&YwvNXa?r-8c{0Eb3>8H@qTmC-0eNqA5pMh(DOM?tTDj%qzraLJdvtvD_y zh~hT*U2G5C)dr46gv@40zSC|n()VXm3Di#Q0E$^c*+Qa%`B*%lrW32?f*In=ubf_P zFX(xhm1+|&4dzk%*J~#h7z44jm?ET`=iH(plMIWgA9H!nakSqEl;4Ar4qy2GQ|BY; z+SR+_`k!PzFo-rfBIyjNVL@eUUU|2e%DrkAs|1Ec`dij2>f*!q=r*r_5%dih_v}w8 zzB|Wr#6qVooA5u9u|5IONv&WegTN~r3Gx=>VK|}p${|lT)KEhhwQ+1oYKpt(LDJI zOipL-r87iBxiFMzdS&^l(B% zSX59-Rf(D=4R*}7*>JQ{dT31zRu3e4>C3{qZnpPcy0wGY^}3Ww2OD_qqCRw zH@knuiqx43o^J>*7Dt8qWFl8-)>%AkR?W<(?jGHU*O}Lq!x3MpV({$ifThz25xxN? zrZLR=$Jj6HQd``Yk7lg=6)j=qkN)vT7LU)c+qqT8hXU$Vp(l@n-dg%9(aBqsh9zIG1Miucj;;%^sT3Ft4GuaG3*1~a=C9s}> zs8O%Bs=7zt%>KQ_CTkQlI(ioN+{SJ3O0Fw*m^^LM5t&L@&2W3GkuLRBd{Rt0wFL&H z>aD#uOIAO)e+}{zFG>-5=bYjIyR`RGpyD`@n?g;?CJDE9`bNsLMwCQn^D< zP$s-KlwwanP;Cj8sR`IOm){rRoiFmqG3DMLLGo>oedq;zv_+&exmJ#t-!1+jG>J-| zCMth1G#GrI&b}+{LnJpdn3AjZD~IXc1=#X!!B&?sR!& zT)%+!tcnQa00n)?pEwpjb4~l9_jx#c_oJkiI!7>@mEWEtT`)9ZKgIhR0@A7Z<$h#y zg>XkW4>$Z7Ae^64#f)~}jD;sRThKWNfF0R_AOh#xj7qr=^g9xy47F-DR_Ia`>p{sF z5MoGKLMfU`NU*k9HL0Imyg&LXe3Zj2H;u!|UW}gi5;ZE`Y3KbL}OQrMPY1u_y<(zh}Uo|J=t6Kl&UpNe(rk6OMBLO+S?y;K8|BP zB4z8lDe~NR5XyEK=z#MU!JvW4kE<9vJal4$s$Xi0+({Z5?AwE|=P~eVJYU=SXWINr z_}1Wsnk(H^6=lq~BQrek%-=Z&2EHvv^%n zH5;ISymhcIlaL$CakC9UkT-EcRQ}D%09d06{+8SCH#I?iQ9MX*S@|kTAKuXyD^U3 z4Ed`b>~>8T;~j?t11PXE>$ig@Y!4dAdELU`T3%%)@oU=}J%tutI6lK_Iezq(-urkU z;>ZdAj8YxU><_rkq*jC_AV~n0n2^)4+VMK&)V5}cufPtavKE=RriB=gml2qI_*&Wi zS@~r#F|R>A6(5if;E?xx{o%dI&sbY=M({YKN3r|5YN2=ln@aDa&*dkhCZq0yMY5{K z{WizpocmWlRsP}9MpAB%gUe*9P3-7IkR%#km65WVPQ;Bwr(2Pacmh=S32P?uOsbBp zvd`g^#4>|@E_-FEctRc}fm%!eqL*anS${)-$Iu87us6s^!VzULf=+0xw%$bD(@+K3 z?;~d4*gC|x!mkWcc)PmNzDRO%guOy4QjadzRbu-Yys+llr=5f;8F^Z`JRA-{uF6Fm z?CG4iS&*c(K=zK&I~QC6$^n1VA*3kzh*zaalkcvY$_CVd>)x{zgk(Bp-q4eeUp zHd!;4Hekik){eH)3pW9I6&N@`oAQUy`i>ax06?b_K>Qa?TBBrcI12?!l?R#c@u~Uk zZzWpOlCVP9rPN8R8guHN)87%FT%p?xC?Jzx908JQeCrC1KhoDXzGj|fIy zzJ1z_-zF~c+a45HZp&OH*cCKuutKO|aRYjT-7kl*HEPj2n6A)w&);iXBRc?d1GakNuxH(3B{<1%!y_FW7pq=;b&K)m;7 z&tU}!)kEZmta|MFq@42${s zoPY0vlW8-@FaHUSOiKNKXGBqz`{da?25c`xBj?kDLaacR&L03oIgJ>}?0LcHxicYl zXg*S26C9mgELd%E8RF$FK&esSH`EF3N#airWW!`30)eS>Cjk|0YPEHJ!rR@N3Y&mLy2<+~zl8H8mVUd)UlMpepcU1Tf@WSMZ^?baF zxDH-~%_jM0xpJZoeG^}=iQ0$WR-%Ao#VRYRz#*x8s2JOWyJH_FxuY`pE3M7910Vjs zAJYnEgs>?cbJM8so={p23IKVpRMl8Dcoi@5twEk^%{>OrB5I_kdQN}G6_zZX@vB>V z+T`E@%8Ykgo|<0VeRGc!7gg-*i~e~QXOB!$okpMdUo`fpRdPzAMig8DRF`9w#>V|q z0!D)#Bg7la1-U(+r`UZmkuw@vbnlPK2|yFI?aq0B>MF^HV9QbvcsCT6=dZ^Tydw4_ z_R+ucu$S@z@k_2xnHl?l>{H=}z^705CL`}+8t#}FXqFwXy3h9ym6BzK%&`K0kQd=U ziUUNx+_^~tIk~1L7z8^cN@*xfTV;g-Q2iQV+6SeAn<@d(ZOHN4AP9+Hbw}0q9rOG6C1$6jkPBt9v9B@0E&A8v zBvQ3R6w!!kE4?%Vi@ zd8GGnk;#!K&x!>lURXS7Og>OVk71!S=BypefF6WGgb2ViR)ChL^as>F8*qQV%-u_9 zE-ycw_9}OmgBhI>gS;UUfeVRi?TXf`=gt&!-nGnkOz3`Ga`k~-Os43FNH8uU5m_=w zK-N7p`0-<)skW*e@9+1=#s_GD=fhH^6-%uA#ZCa`}dtNCg;tD`ZqK-dky2 zI?Gw0a@kl@^+K=#-wv}zuYW`2A(wY|X<*5TgN1_Md|v8flKbIctn%X$Xw4H8yxQ2N zMQl*DKP<#NM3Lbz!?_5a#qDzqkx*=Q4Pzd<_46NpFd!{(*l*%=l&^?EeGV~;ZBgwr zduE%urt*R({0|tqzm;!Gwb%d#N^47Zz$ZquQL_6YUv`B63VbX~7kOu+H+U$Z1ctS2 z03@Mo3fMAQx@0QgD|tO zXWF~A6<=-R_+{z&D-nT6-uc-i#VEDt;tH`?axB;{WUVd=QX%%xc3RaLwmC zwf-VBqDQKd^ikQmB$Vg_0Z0;fPhG1_q;m|_s3te>m(Z_`yUH|EoI{=TTntRE@(S>>Q@>sWU~SQk`0%WXjA9@?r3GHDtgJO)z{fdBAF!Tlqt=AYB!BV zUuV13u3HH+*s}OhGmKUvIawYyFRlzNGNvMl{Zg6{1r=VC>^ASbdsXee&@Z)9xYt=# zRRdS0RHoy3qq5{M>aKMgixnIvf;{S>)AL2pdtiaRlY@e{?eVrjImCfw%~H9)1j8!Y zjerMrDUT(!^@QeChE?}Rpr)%2K5XAj{+>k&rweUHpTrcDMSrOd>z zRNi$G>#>XXbj2VOo>ZWNx^kn@MtLMVF`b84yWEB7~iX?=v8AOew7yjV`F zZqJfgG3(*nTVNk4u<@q!lv1ONok+#Du7D+jP5sg&3JILj*}5^l z&pFU-JV(gn2l=H~R`A8}N$cIIB67WaOm;;gsAjUAl)4XPK!A@G`ah`cewp7rULRBz zEj?tdU%OZF)OD|b$D%dMZTHQ~L7a0tB~P=Z>gv^50f^|^(+~8TM2)(LMhUYCn+<$1rZiHpR}1Chh6h zo*_7B`lnh2N-Ck|@mP6&QX6}74+-ETE5}b!ISkOliK`|X>ZL6HE7fl=NbXTx0endp zshUgN(1*!o`$+Qk#6N7_I_@&<1^p#dnM%L$7)W7mb`rBvt{c|$kqh^477g>!;LK`y z_KX+Z3pw1_G9+q;d}fR4%QY~BJ3<4Ho2;QGwW;f)W7YG&oKTl105nG%|E{aLoPCk+ zb+LP&I>L?G3>sMxeq%@Ay28x98$G~_I#hJ`GCgX6)M>Oa07Q@cu##IBoZCYaCf|XH zlF=0d&a*b-)XGxWS`}k=*gf932I?Rd*765%J5s?uvVv zLq-;VRxXak7ZQ!t^xE$^TKX}wiSg4oW%km@nc?w&=(2}|<`p>N4mX9XHeKN zvCtbKe%~Z#&FbKL(5SG=D!;qpc30+^AS>=hQPt7Q{RX6sRq3g!YwfjoZ*k{y$vB#% zWA7KQDpIL?M=$%OyclYaBc>@}t^17QAqSFjV_r)_>joOPPg9SHsA6nxgi>>5_t4xX z!ca*wbYqONKi|Cnz(wP2jolHGQ!2OB z*>u1oF4~0RXNUs+M`0DkFHEzJ<2E@NvaDr6zMsq9hslTbV|~76Jl%-+hi=fMNtRAR zUT(qR!;zf7r^_IIH+&$PpnlBFoF#Ar|Og8`<<$-19z`I?MWQOeLBXW& z9!9k|py&5x#wQ1^4Dda2IXZ)+zET>#`PJb8&9#7Kg+08Z!i5YeWIiqq`myt@FB>lC zZUv2w|M=_S^J7i)Mz;HA9NrX@deO<`g61EjLC^)%FXyR`Q{BBQedf5Zs>a8Ec21^K ztQ@W0S>fCUXVQbE?{y!%yJLwS#+#YMe>}wodViX+45^?l&}`hF*)YMz>xR<7>VZec zNd*h+H~j9l9#1sSCswR0Hdq`Tpi+(kCgl^dC4E&*>NaV9_zg22C+zR(PkRx-nXk`WZ?&c z11Axm6SIGr=~6`6E~GyD&Pp(V3n@)Vg6B1pN=uC8na=Lbp1=B1Tr`)qynKvjB2f^+ z#1BMBv7?EIxKzqogt9SNy+wj8(}=5Ha^q)p$R5Gt?z&*nQ$IDvq_#b_ttBGO*Beg= zOPa=1KGD9Q&c*J3fJh7qAk;5~F%1abf>m!ncbvLeZ|ytw<j!>rer6fBN;A&bzcm#n88CadcnWb}PVWC-qu@p9rxg7z zZ$@@A&4Ce^_{{O&{%aMGqcdU2;*^UfXsK?jF*mh|+&|O*{dDyvJ^UhF*)Y z7_LS^B|7RJsjT*Qqpo^_xj=5tPvh|lsSjAlV(71~sZ$^lgb;kr^Umu+zjF?! zc7c%SPMgCF28e7EdCl^Fb5kGd_p1gXcTx>ohcu<68j3`z1}PZ(9GFnFzh8-LnJ;Nq zxZ5;$WzRVkOIyB#9?$z>5mKb&{DBLr@F{ zqmk;Wh7`E9I{14-yIgJRM-z|jmTgY!L_}K_9Z0JuCiqlu}-0Tya|` zMdRh&Mb=CW-LUc6Q|61Hfy%Zwaqf>JMwvc~j|(x;>(DJl;>gfHimHXOW~8gzL>hPN zd&#c?98zLdRS$hMf0>hAni@jV?r?Z7J3@A?gn_s7OPbIA3eRYBt3Ak5g^!##au0Xu5@BN6$H+s4=xyl@efKtehHTw*Yo$v380?1A zyc0YM*}vE=T;5fFVAov?P#xl@UOOMPKJrOXE~pit;ib=Q8CZQ zM-?42m-`UZzk#w0Gi%oMI+s}$do4ipR=@k&MAP|VIh?&#Y`vWD;^$E`OHrxv4V{I^ zk}0(zVX2)cqjJBb@L#}%?pH1)bN-$NQj@HPJ#X2srR~U$Lr%*XZ>aJI0-SJ18*9d* z`?9fjL^0Dg7+4I&;l2?snIrgoa->D$Z1wG-NJ8>c=X1CJ07F?Rg2&&}X<4O^F9T`k zIaEgA0c(q;n?L&Rm~Bn=jBByu;_55gw`V0(3APkii`R9rO#G~VQ&?P8b5JI6JK#wY z&RP3cBm{z(PEAO&CVrd61ct}-G6cpaOcISgR&NFhJZUQwFU41H-#Izgb~M@jaF63H zb3pa@#&kj~IG-B8Zu*Y4%nB*!?`f$4u+L}6@v?fo^km8-}dNW081=yy^`(#!FRK?^8(8%4k z=2m6<1NPT1S}~i`1Xux*0;Kq+gtVL6KTT7$?}?_4`|#N?`yXcm@*@%|@R6T?- zcQoSs8@=aR_A49O*s76gf;J=@XA6mu9hc+#un{@$@VlxA@Vt5HVpQ4_{l(9NoYSj) z0c-`e^S&q|3UENqzB6BK^RW6wtU80Kcl#{?jwSEUe$ffR*}8V$;BC)d=0{q3X#KvE z%Li-LH28A9}&`PS<@W+2_10eQWvXD8)7Zd2i2vkJO3S`ZF9Sw#=bdI1@UARm!3u>UP$2Omr7j zbvRlYf{!zLo|}P`+y`cJ&Gvrc$ie(oE@$7kNDXZQ>ddRUFh+hB9-i0z;h9_g!jD#) z_#WO4y!EO(Xco!b|_!;9J$mY;5IZO)#5YuCZ?=w4r%(qkmJd*XDWx^HmOWW9q8 zE*biY|3(g+)=X9tJ}m{Oy2Pgz{T0g#cp3Q+2loDEB%^hUBD}z1>0=pTgP4a)h7pJnqn^%1=@m)&_ z8rGc3wxFvnddT=K(G zu~5n-%xD#jA#t6hX9UDX+~uNowOEpy&)La^%pjm_#WZ^N;?a4KOxC?x5@#EYhLj4C zuc+E^qfgw){PYTFno2vIh&ZTx;Pb(=lwN1K0q@FBIX1fNruBgb;B+=aU2d~;;#rbm z&^qFO0MD}D^4a2p?u@OXSSc3y{1suAlQ_;7%XPaXSYCKzf6@U0;;ek9Sy{|Pm;u9` zp7;nGGD<7);8P5WCCCbs@vGg zAItspxyuVnC^dv^jb$=(-=HEgY3Gg7nU}0ufV* z=q;78bp?=@J(l$`M*dt_ayq~U3{eQbE1zimp_d54JC>D|(6;_z$}{xoYAZHT!${5=SzR2d3bgo}tLKKQz<~_Q0;7uUmMuG0 z;^%oVQ*9Q1-&|D0$pjs4qgBssSN+Gd4`0@f`L)s4Wo;>Ap&h<~lKm0+;~Qp9KUD)N zi2#Qp09F&Bw9f#4px#M}j;we1xPPWYO{XMXe z7Ls~+eKRt*?t4Dzxc*r?Mn>tLnWz{bod4aZcQg?hYUT6jhT>o--k%lQ;NVzrP znM)=qu;ZD>(3^L~mwzxz=1I>}vF`D%j`xu-Azy>Xxiwa!2KZKhZv`Cl4Z04DrE{c- zbc{X2=*W?csknMCyQZ}FbUx;ttcDj&!lDV{eLtRs=X9kfhxYU}^pO7&kVlBg$YzVc zFV8{S2=4a@#oS9Nk6X7{p{M4N5HWK9biZ#{rw9WKPtPyyIu1-uv^_bjG*q*0<931t z7zC%t2eUjcy$TJMm}}h!LM~h)r*Rx@YrCnt(fwiC#h}P$U#TF3FJGrGT7{h=qRWBt zW%aw@q!EvJE**_eVvU&0WWEs-lB`XFlk!*%pH5<_qpF&*g1mTaun&-;2i5+1DLJyS z_5ka$s|tWFT`tQ1tY8Eh6Zxa9w3MfmuLFn{DwJTL;GoPQtU7=szn2Q3Gm8I|zj6Wu zH@WP!6p8)ejerk2?QKL`*Mv6yN6!oB(;w)OUjAyQAhN{(m0B>Lp67F`A*Z9XDMbFX%^eSp7mIOz17j3SNYrwFg=0o?Q)>s$~qUi#5x=CiVngrycBL1 zFKP8U%dgEW8mkRuU!zJ6Tmz43Xxn$^qX$OH#*+Ga`@s;3Vq!C$WU}n%PWnI*D%4Wo zP$ouu&nZf}m8v5ep;Z8mM79||!;-;hyZ&0bYmQE-QH&dj6TdTr7&09gdyNzce4XxA?1I`bUlQbT z#HX0c>>#xn93LdnIQi$?SiYpJ9q9fnqgOF*Mu1ujU@Go&n3vsx(GnF}C<(}Izp1-Y z>2WxpZyG5=xd92PBq(c%Q~I|Ytzs9kMXzqz--gQsV++j+K44+$Evpt2JLZ+6^$>yP&y zYK{=Wh3BGIJX8BMn6c@bG@L98vEKaw<-OZ-7c$`T&nfrr@EH1BEUrWbGjY}~4B|=I zG=)JZa9PcM0fZLtc?;dya+XKIK~-L>%pruG1_();^6T8@%zV#71>!C~RK zL8YQM?=qR*Nm4zQ#q%$#R2A|t6R#>f2@=SEM1l!qyV>cYH7MX9fOEh>?>^al3w+%K~duXQC-D+0B&;RcQoYkvu^daE zd$fjAWuak0YQgNBPj<_R3LIzQwixQwLmraqv@c$c+W0{D!iWbK{tV(0(A(d{Db6b0)^Ez8v^+PkGNMp>mUW5W^YJ3j=9b@ZVyK?C&Y&gdx^&YTw~H{os;lO$G`9_GA7_Fvu0! zmtJ#`Qt5~bdXhyyk2@tP{Zp{b!o?;`0O1oP zLY@`N`#Ur$nMU$0(%kB_3R!tG5B1s?n%nPGi!dWSC@ zQZz?=`8pc$c9+9SOcte4eUV5#AW>_PkcapR%mW0ZI9At$Qh`_;I;ho5Qt#3{by+4w>2Z!@Yq{-n}$h z6eU6lU@?Y6oRm4tNrE4qdt_wcG8|M`2dQ763M*bAM)J>iJ}oKnC_ab(K@kfc6*<6b z%}t}Eaep2NvM&+?%rlcvz~r9^(fGvvBzZ-n_{8oTqzYcbzfsK`2 zeSyKs?<38$&pK-;IDtC#8# zPbDuLw1B<@BWgG3+<(Al$H>07IW+;mtEzO-n2(+*bCCvz57>w%0l-r&R68_Vk#2I# z+4VBCO^hGxfv2pqK8bUAs-e%m+autdfS%aql_y_N+q|_?|sBh=Nw6IV>8@ z@btL<_X_tbQK_pm(|^aiyMmoe+pffuJl*tYCEZA~Gd)J6LW1peMRm>M`wQI1c$!B0 zI>m@3Sc#;2#}#3y3zD9Do|c84kuO#-((aa9vbNmTZtYCKabhS-K>)vXF|N$m`m;`@ zfw^58`h@^JiuW{J=CQhLN^Z5P99-1^Moo*b@!37)GoSO zcs5FJEC>WqDo_Vo`hrc86?g9rgq+~g?NlPf=o3$8=JLzb^JdQ0-U((;&V}{4vU1jc zDI{Bn^Z?_t4iLzL-rp7S?;E%g+{pJ$#~eX|mw!14(9+LSTGS8D-8xTzvA4#YZE7S{ zTIZ8%fg;loUWqPhlptNVE?u`K;^{^~3dCBiL#_2m%U4PiYGCWE+_H9gaM`Epe*I=T zgtsJ;qu`M)J3+CBU*{^WZC1M`EAK0h=+_lliUNMi3pfr#-Ss$y2D~w_oX?H%rI%E4 zGGQzw3~?y zBEiqYLXJv1AKdfoaMQEd&ajy4838N)LGhqR$8LZ1tl8KXn){HPr6xpcGIWc&S`fJp zcQ$4lgELJ{67Rk}*JZAIHFAe6;ASC61t1hM)5iAOriw zP5Yc%oGFv)x!&Ki#&2m3{gn1zSO);X>q0-`bQqhv6~)b8I~%Vw2!Y62vB`P&_)v~p zWt67m9J9vXd%?k)hNDv_ z6auL(x0wX)Y5PTY)!+~)g$UHf5(I?3@^b$Je5&%oe0!vCci|+Sx=r_Pm<0f+Bl|uE z;vz1aPx%RJ1WqbX<*zC!ywm1(aI$1#4b3+}6Q(xQIsHv6e@H2QvD12kzj=22%RmmA zP&S#{c=JENNB4-Hi;g62XZP!Dm7I}nm#$Fp4&e0R;3ac-6$V8n|MHfPux52K*NmT+ z0>Jo%iAQA8(^f_Ij|N5F z0v{-3cYJLd{2{uY{NKc>^Hck453^qO^XS|d0siw#@C~XNL-95$Cp*55%U!NBuNkxZ z>M>|+)hwN$-2(=TL=03Kh3R=Xpc)hUm2!$4j4z8tJ66% zikxzlK}God~hA$3>367+S+3Z%6rJ9L9Y$^qrJ0XmfIw`Y~p>h zb8yJsu51V%`H5UU5*nOv=91ksn4KOavzs|m_lD?~`8NiF91c?OhyG68iNd|< zx6Zsq7Dv4J(yDw)li!C3zPNNlXpKXR8or47n(&YRd0gT9HRqaxqxkH5{5M_hKO=W5 zOP~;^-IO>j(>F7o7#rR=~CT@%l`pr6rXSD1dNVF2Y7crP7Zdz3ZjWa&344{ z7#1ittTl#MXxpyh(=6IA?z@;?Z-1)X3EvX1ccRKPO8JS_w*#00^dFpRyWNBZ z#Ed}Jl1Ir0<(45=DV&{$`YaBD4x3|ag{cj~TaABHfcZ#6Y%6;N~chy(2+WXTe zEA3W}%D}&o$*nm2Grsh^PW^n5N0i4OL$v-3y&5?!U=^Jp6)5=go{RXqwII0Ri!qq{ z8V3P9JaplXp#9%5eL_AtqaO~d>&3o1NU?!klsiU_6684Kva7wtG-3MM?#IE| z4{Y0q%{a(HIA1~n4XR&~h-h*xCAd^o*o5b5u>e&zIf);F9hsD(6AQ~0xI2F@F29Dy z&8qBC(}sPD(*In`B6P%NM<-2iykrfmw$N;#k3G;81mb=iuKQw35a5t+Mn&csv}dNS-i`}_rWrNO6^m5%VPn7LvXxTun) z00GbUAHaW~sQA1>WUK2U%H~_^lI%1Qk{CZ{S)rU5?v^6RC4MwsySlBeH?EmJGH42= zJAm=FFNOQ#{p*a%@%W7W*Zf<$uvd6*`1Yj~7IX?DH)7soyu#b8!`LZl+YzQCrOJ?X zY`|)p{~KKW{H~O&jr`k!+bdkjf9m3Y?cw-(Sg6~RCVca#+0HkY!-@LhPsO%e78nLs zisD7vS)Iwpc$?)%hd8gBlg{+A1f%#?$J7+9lhN&0Q88U?LZ@+`x*X|;;yQFF&?`T| zi*JtZq;K(tWN4))8;sTqi4p++N6~q>v-!SlJOr_~HY#ScX4R?+LQu16)~KTP`kK+k zs=aE(R&CANv{ucktzuJq(+08C-hS`%{sTFV9LMuK_kEq$d4A5Lc0z@MU_U|sdEvrG zYgzn4hso_hjRq3wIe${p8d)Y&ewjq38bL;6GkPk$f?>VHI!8a3E+B$-FIlXjFXlv_ zFih;q=jTdR+EYIIpro;8Y;-do^#LUGh{PtC{AB;dN5lJX>;JxbznJe@&J!+Je*F~i z_R3!rEk-`&p&_O8b4dRDICU8UY_FFWFI4IZbyHDxMrVGq;`enO1c@Im_N1xA!?d#OHPNRQ8eJyKarW&@~< z7e<(!H(k$JeY#&itg42y4hLqPvpkVOux-3l$H!*k2N9Nt5xmM!K69&0>P38`K<`TS zMZxJq=e}`IR+oH->9AY*$&Y3CA=6-Y5avWO@(EYk2p4-X@F4Z-3WeJ|{8_n#=hO^T zdX+-+QGh3HL2Z;4w`s8c*fnFUEBG~dz5##hg`$0(BO(nQq7JlX`bZQg(F-nS=jYhh zyPydr6YC>fAE{S_Wm*{zl28ZHSp=v#Q#PB{@G0q}a;5`h6wcyrvSA;dYG<2Lb7q8v z%yZ1_>-NW|uPCjEEl~8f<15{q%xqFP1rU^E3Y=aj?gFWGX)u%skcFd`VzG1YDam`T zITp~WL1{vylXbkLk!aTFtmh|@gzuVdWz1X>eTCrFQsg_MW;%E^muA%>I%9JQZFp&%)^#yskXG*$83 z5FGg8YBGeoGk#v%2jqzjD6wHnHw0n$5DMRfKwonatCpwmmIv(yX`~sKjQ*T{PApY_ zukE$Zp<6)=a~U^kk{{z}nvftlPXO<%N~@E|UzHU@boAwV!?Ish{7wu4=F#w_{ye{= zo`4|mw!xs`F?fU&L?F^R2hs)3c(TQgEw9KTYV|`pK9C1FGnGCddi1f%hjG4krc{bc z$jQYij_P?3)ry$l$5~|Fg7h+_tz~u#NIq+%7{)Fga4=u_n@_Ld{c@#HDx6 zhkbskG!Mc2YG`p?wJY<@{_e*c4#m+4bg(hUPqsxXF4n>bCjmAoX6f$vj^O&5FVDaeE6js(Hh=qJX^0q z*^j0?2uax1?lR=m3&g09xMH|Hw0$7+MM0YH@`eJU2Of=N2U-*1E=I-*YW!abh&Zmh=3W!6BwF(#k2y~{Ri=ITX(Bky zde=KMh2G_d+$sCTJzc_duC6d961JB zWF>eo7a5^xJs5WJD549<^Hf^oD~tt0!(FY<-F!KVH9_cA%L)R14QGWSA4pqSIU!X3 z5A=!|^sQEWckTVP27r?(klHN>OBAb3_SxS>(ex-Pk?sA=3=Y^Jnsxut*rNtcgf!)n zrMrv80=;aA>lQyV*grgmsT@)L9zN#A) zstXH=Blg!P1}TCE&BI0EZPU;q9xFDQZn1&uZbtG`a3N7YiXn%)hirFI?3kI!`g!-C zKs&wJ1RWdz9V$$5GZw;<$=)~;zvRX6qorXWUyc?>B9f%$tOceB_9kY^cAeD0yX!`4 zesTUmrXVZXCVmh+U7Em5E>*1$8Nl`4EuKbh#>EnZeR=|ILUM3Z!NMmCYc;vlwq6(5 zpw3{{NG}|zIs)1!A63WIxY&`A4u^s=y)M0rh}p3wa2Q<+uvg7Bk`x_mdm_D$JCZw4 zENiKFvc5)z_L^=xE*`uCZ%^tY4O#4w-o<_?yXmW1kJlhq(DvDLWQpi>7bIk^ctcO1 z$4GuE;$%h7Y0eOi<*5{rw=Xi`ZTp8aW(W`W`@NU7zy$Jd1*{JgqsXS$v zHA5T`K*LZljUP&`ws2gKx(x0j59xZ*c{sDifT-1KiH>?JiC(Ko>E{a_fd&X7uaRAJedv+z})wQA0cyF5< z6^F+YjpF-RbuxP+perN$57zD&GlycW%K(02DW}u`eD)0MjX>gF{evS>51;le0pc9A zRk~h78?VDjZZlZM7LAO0mtaZ~To$o%FuHnl!b}?CO*Sk&Vz3lKBe4E1Y7dx+ACgS= zyR#~XdZhzU0{Y4KeZ!vPjlfQPIMhw6Mn-JdmRf8(Oi`ou(Hva-jZp0hqwN2`fTVgB zJt7sfHc6rjyS>u5@#)7Nh=Y60`J&Y{SdSUrLowW1Onz3{?8hV}nkL?KcEpa@xO^?^ z!Us!G@d6sPBja^`^*3<`$#zyKwf9;pC>r?DQRE~0r=_9jCkVNeiT{B_Qum%mUC(Qa z791jJmrx{zU#7Zp6Q#|IJ-HGUxx8lVgS9XdSD*bEMm%STy>k5g;;i02pSAv@4#NQ1 zQsSmNgr~B1Q#L&K`7FXe-f~GSlyZe6Z0Zv=3ec(}5WLxna%ZReTIA1cJm8+Z4D*%6 zCq>+4&59~YS3YK#>#M6#TfA$;BGUsDcRq;vtnYXm=SP9zzlhEG*pRu4v&p_aKl%H$ z=LScb{&=BL7!Am$HaMM1O{MQb<*E@OeQ@VQfABfSiK?->`Pbn>nI@1;rcLE2owlP^ z$#zvShuhS`SDk;EmEcSc0&{29f>3-lcs>aSVIOHMlknTo)KbLcF03g&oaQ>n z1pngR9F5eCet-tD*J8l5*jD*REBZd#r;qJSiVdOoI{?KVT|k3uj}#M7c<`qe@O2j{ z2tF!(X2R3=LRc&UO*>_QmW}&lER<$O>A|Ac=};*>(&~Hdc*La4@M7qLYj2mdUgrNm zSb>Gqw38WI%UyXr2x|u)n6F+9j-51ye|S!I*vp0hvtd075&~~0=ueF4lWyyj!mwXG zyta^P&ZO&6h=AlLkYIT?T3P(et>i=8w~sLQVOzi|O>~Tx&z@Z`(Kx#=xDRC%qNROt zyglrTXJ)aVDqz!9r{YQ0n8(3RxU##J;$8FZ@s;vs7y?x?y|iATD9(fdC4tlX*e%Pg zCQ@~(zCIY5uJpLDKeFtZRUf+SihWW$(8!WZnh>_D{9dr^`di8e{_?oPK*Q~khNjYL z<7$y(>O0m51d)g5d7PJ8?(vUxNkU?#)iVVnzEH98gHrX~&v43`JBmF!Zu1=+KR9w?)-((^-cymopqRc7E3$p1i-&#Y!2+e$Xc zqO=I1t!+7)$Mh|7C?P>WmJ?0cfzIS&XhPLl= zy*_Trud;EYr=<_;CwuR6ikPde1*NG<14mv@DeJ_%p1o}X z2)4cfN)e6{V&?2 zRo$vK-_oJ+8sai;$~v-?-sVYfJx^&j4JGx;`Q;fl{>j$jv|6tSeQTP;L7`t4%W@)W#g=nJ;DX!hWz&GY5zT)>QYP|Kq#tSJEya5LZKlcwhh)(1uihV2 z3BP}uoPa7ylO)S!LjPqTkastI6v4lk|ihz)m;syu$Co&k}0;F{op}$ylF{HgC<4CJ+JfR z{-`SI0<{xq8k7bt6>XI~EH7<++3~VOysBtSsLy4xe~i2JUCGZWrkL9{rH;AgC8-Mr zrQkpp(LEG`bw4{TCq)V~`7QCQ>3??p4C!4BAQ^m~T&Arz^TR&xR4Je_@NtLOUr8bj zFqW217YIIQJ#PJyd=@a7r>`N`lz;R0%XbiDuz-2vrw6UfI*>yc#w1TI2Pxrte+%v0 zXNe_BRwpDiz>{S>RThT~GY#rd_P zip1w#@+;nx1>|%6Q9{b|#fNqKXDQK)cQv#`$`HKX?m=ENNn>f1g+nh=Z3}@axRoSz z>)2c50uTMS2G;FK&vty{wR66AlLU|$U;J=Ve6l5K?V`eZL}__PF7t`rjOY3Iypes& z+5r30CXx4s!;IqHjaT#0*9kCNPi-M{it@K?$PY`#5AVoj1j9&;hUwtdI55&Pb8@@+ z!NIvTf>D{e*nO{uesv`diwViZk3~-Qe7Ud%)_{rQlAhi6#&5ZMIV|}yX?}eGh^%*- zzr(Xs<)(wg`4ff1c4?s+O{WC5D3_)lT7`Q>$D{9gb6U@)r`HwEm?8yhgkO=7udZAX zV1B>L033cjh8u$J=MjF{E}Kd0K}G?xfnamu<)~0nRA+dqADmupM1kdhgJ=1*IQ8_LL z=cCtsMoU1`E9--oGrh@?BU}|hrq6mmT3i+d{crNJl{XDPBc(df_;zj<$l8JB3yv$t zNASE^wG~F>Mt0IWB90e+-8%i5@m8MWQh!(e2Xbc znfmoVknoBcua>bTM$j`@t^XB_Xr9Z+cxq$w*)vJu^owY!Ze9`>hBj-zonhIalM?+S zq1kem=g>3xuxLboCV zSAW2oafMp=b{5U$Au5X&_dCMY=_s+S3zn5XwVC5hv{qxK>fKt2bC|Gwo5%3{;SV5T zffZaAUvlnStM}U8@ux-lGMnG4D_SErbhAk^{1_@mI?hGx+q>d0K2~N5yVNlGnK;jn zRt8r^QNLm(fUi12*o9$;QB*cqe<`$vLQcya#Zs#$_(9dzVm{oh z8+|J_Fos?I-HD~FGi7ce>jyR7LC1Pfc& zmv9&#uCe$}GO&mD7XyC9k)@3aYM!qpo{Z>Cppi0T8?Wd7!zibP%lG)oRk1uf2=;-l zx?X0EFMKXpnw!78xO4i8qa)orpc~}Z#(vPZJ3%?Lu%V%HfBJ;g%k5TY@Z#__muP3) zshr30L@e(l0>beih(&+I6C z39H96WkW?Q6If~8V*r5AJz_6>NGz9IUZoPtKHOjl^jYX1fSHvVA+)nYV6YDow4=w$eRuT%utxy3rPm z0$wnx5xAW72Y#=Hn)@Lf7`1d!R%2=4Xc(#F;_OV#su%o(cItC}EuOXf(>gZ32!(Gm zvyr~UeBE&&cvob5lSJ||@>*VW@44;P`4jDL-#AGv;UlEW5BCH+lgTIgpDM50jp%Jg z;#+B-3)Sj}Vx|=%mlk+o5OC)bH@Tn>r(D^&=}{L+dm+8_HLiEgnAkkT{$A*W_1S7Ka zjbz);kF4Y@!_xCdJ20{xaz5FFHdEW$uRy#Y&}J>RPi%zY&B^j%sQQWx+xPQ>r{>3Y z+OYaeAd_Uj_FrfUiSb)fGSL^b=SZ)4$dC!^E`0dn9Z!60 zcai8B^h#c^Qah`jN%*FdS8i_GR)N3snD$UL*DZm~c>f9h`hLrX3!DWrwt3@cmPEfx zU$tO_Y>s9HodCzhzD8?dkAmGPgIVk30+rydzSIp7JdSB!S&_AxZ77>%U{_TsBtckg zf}YkZyQQQ?i!BvjK59RU$)`|e)LzAb-C@Asx~*~@U0eJ8LHxe~UiUZ~E?TjfY#{vN zI453LNdNNwOS6now+j@f$gN+>`DuH8+AGD<$9!+JU@TYC*5qs{tnD3}*#$Y3nz3&m z>yM{4z@7vf(B5^ZCqhXDXxyL%mo)o6vl6OUQ3e6YS;t$(UXGCp>J-cCT%`( zXlNoX+Xo7xt$Q*$tFpBAwLqa+Huh$U^-q+GjWm3&*nCJNKM%85aHKEZs7=u~=Vz0& z{IA4*;`0yH$mt`+I7TyA3Rac~cgTXIZI-<%oJGRDEq+!5Z z@AB&d)ZXb!PM4EV$3=aZ!;$*p|Lq9AYW(}nUL8Z2Sv?rXE>9Iy`#^R5JkVYv=Vt}n z9l902fBSi6XE|YeQ-wgb_8oj7<8k^_$nFkm=9Qekn+ek~&m(@&UM#Pf*~Y!;!yo** z!}0ZnSyr5~ctXqe#cBSar#Wf7qM;zLyTTuU^hJcK)>Kq4+ChXhIl^HsrhY|}C=*S# zkP|c&B1_wQACpYx%XiEf|4gJaoObY>?Q_`q8_73SraOjQ@$ECh=4%) zy~P7Xw4-`09!iH2`=1~s-3o8hOfb?4c+>~aE>BPzAI66r0P+%0I8s@!Yc2vL@A%qD zN-_!rq72jxkPS-Fmk)31vP^2u21M$3$^OQ{fF(`0-C+f$7h;MSJvNTJ$*Aqk{a@5_ zQP;yDl5DTzQk0-=B1G$?*sYLzW{*}KU;O%Ck+@vu?GE0%vVxx;oQcK9(OF!N5(kUF zSV{Iw(A&(ed&sh?KpMi?L^GNK*Ty6aD%+9C04p_4{rHB0-QK? zVCDc{Si;f1x}(zalR;I_>9NA^=Xx&8rwe=WrqRS|!KsaI}f3B`XDH7HrUGFP*SBw4I5 ztMn8Wj`z$X_%q;%6abb7=)+a*I3zlY^xYD`uIh`To-l+;SiB85Z~7Jw7XPu%a-G6BQO4_M;Ap8Y}C_#XlO1oA+1<(5dhr`%V?-O_7p) z4(Pnvg2}`JBG#%m|H#!?M>zY-{-RZ0zBH@qAtSQdJSK~cMSoW>(G-yF+X~7>j<}5R z7<{j}BcLn__T=(LLfWQ6U%bzkh>MU-t?mUk03P4*0FzFl6h|`2Ia-f^0G(~^PGM>M zy1@f!5C`3Pf*(D@uKCtL!Us4;T<6d3xa26Y0GnZ?hINO@vBGOV?|WJe?%<&E?J%4c z_WFu4T761X>f4H?TpfbD)q1J86)86M-DM-r#Zl3vN@cCvGwkAON_%HaOylJp4~6iR zE4tx~{v(~WdQ}Q=81^lEjqLK=AiqAWwX8-!hqK0tn;W<{$5 zRZB=GGp45wUIGiKjw@Wl#c^TDPvFikI@cYcOV>{)7Z~uL3L~3!g;Gt}Pew{Sj1#C| z6VRZ!GeGP$3UFx%Hv$58(Rv8IP+vZ|>}AdD7qD(ifeZg^9rlsOPv5_&9>zpKEyVf? z8++%4;{If0V*Otb6Kj*>xmLgio{6uI@(8O{J9xrA#4N?RHZMUq-#JIu zF9hiKvzZ1!3p!dSyO(d7`=KVQVO4RnsB{xdn_Z@N1&CfLtaWa0R7_vNy^^iR|InD1C0o5<&ru2;F z&t>e7#_j8?S%~`o4M}F{=z1be0(%4SV@63t)DbZ8_<{ozB{Z@tTW1j9=S_f?m?ORB z;dwyai6gO{et`|u$RZzN#1Dlc*oIJ{waH|T&JBp(6%c%^vfHy;foDO8d!%PK0|8dB zIN!}FB&i+!xf&%s0(*PuArnI;uF7Rqg_0w>@%%;1L1sKStn4xGhi7k11$89dl~reF zK9N7qHG-|s<*ZxGSm3u&5g;+He|Li+6-b4ikkEJY=Hhp!D}e3`sN$TpULyIh{HY_6 zBE-uwbY&HvfZNs*5v&q!_MoB`gI6KNwv|ZC1-RIPxv;rs1#hTr>OMGKibzb4-Z&-W zXVlQpQg&@Lq8I2)|I!_|a8=!a^-AcEatoG@4|Zj5hB+JnAUl03YC$a7DX$2a`X8wt zEpNs^oUOwi{({o_@k(rOu*7QXGmdjeo%P~utzqI!QOx6q+Ez!{Z5=w1ujI&e2q< zivwS2J~&T5oVal-C~6xkXg<}GOcnO`_}eqP zk{J&ur$Gv;=a27&-{sj^E{gfOarf2}<;X5o1-)(t+FB^?sd|P@+}1uIWwqvCxdW~~ z9r3FjoU7(k@}~FYV$w<$C^)pTzgl^tFLO!hWIhw!ER?~hA-u!dzvctUNxdX8z|l;{p4z}uj(z^u(L4NRq};wxgX?2o5s z%rlXzu#}`Qfcti|;jA(0-XG{7C(yeWK&F#d1nz~eYeBd|(jbr`N6y?SrC`+x3LMwf zTOb2f^0aSWiB2?mFw7AWmKX#a9C)p+&t+V;NeR6j3~b4{!D@L(bUeAnHK zWiD#@J&IoWn~kTN|HT~Kq4jv}J!lX%V*Q+?pRGEkx-8X2LI5hwTe3eSZkR;jlNJni z+i5yMTzbBss0iy0my3{by|{bTj&0mR%6<}-KjmRiqxMfBek_M+N4~IWEXL?OOuV3A zxNhoW`y5A@u7qQ2e}va_>%p447-|D1aqxL|`PAOudk8y0V$aYF^SlrjKU&|RJKUOM z)rB0Vx)oqctXL>Hf%v=3A76$WtHcV(42(*%kf#)j3 z8;EJlE8cfvU|YSf&Pwv;y85{r(+?fR&x4Aeq-O-!LX)KkZPSNk5_6}@Sx`o7_%16i zhqxMB_4W=wlQ|IDiHYC-DLTjUBf-p}VOxpG)LBG)p!QGdyW;8*T@Oc80~31JG8aR_ zbk@Kzw1E`+WYZe%65sS2Kv}d)p|*QuSM@v}{}$^}OA8@YAG%MxOQFVr@!u&ux*duMiZoIY)Yim?eC(RQFb<5eI$n|&0jp;5 zpPqKxy2|bHv33wLCy=xeB6fM!?Bg=wZpFyRJ1L_-yi+vpjuK0)-0Ar%4ZFM=liAT! zgv*8jti0)&QTYfvDxNBmOb+!G>NA*u#3Ca}0t5l0SLFM5Mxy6=nD;S-FSqk>8J}Zn z@0ZZm^CG^hdIQhHmHUEh(lXu)o;wj zS?HA;5x8O!9VQotXTRj!R{JQ|@LQ}#k!&oyrsA+a9}8^m2;0x4p8jDodA*RcPZ-Ex1C)K-Fufr)gcTV)W-fuTYuQw;gB9gGHzC&b<+X zUhCGZSci+_0{gL+-U3|e*XGnmyosP|uS@Gvp4Xk9;J$4>k>>e6TyzFEJDIDxiHNPt z_gSCBe%2GYcr9OA8mgG}qt_;DGKZk4pA#8^dv>l1uBd}d3z}hL$!%@ zy{P(1Fa@4n)bAv3=C0KAY@#rlSBvo-GZ#Nj7`n=|5TxMjJ^jKqcWmtSI7GLLvJ=6a zEQQ6FoI$q)zL7qDTNG!T?Vg=XAM(OsaLy}RRpJ&dd0ZD)I5b=ccza&|!;e#({R>qh zQW=)O7S?z`HWfX`10LPD5z}ma?z5p_?FBxl{*~-b3oNp8HwqO6PpHJzdr3NUZCTuy z{r&w7g-qAq+VJ;%djnTz?nc}Xv@B?VceKO?r9G`=@I#xteFb*D*tN;tciQEvYkU@`$s_#FF{v|zyX7ZagptNNYoZrpSm)7t4-(PbLstDsX ze&K+5N%gLJW#yl59|6FBDShYh)@YJlwz{W^>JD%3vbtcEb6CYG&bLTb$lEvEw*HAk zSfNG8gTx|dmg95J+ItBl+c?vLaZ~y~{0c#@j(7MzaApa!&7>O&%j@RS60q9-p4xkT z$$y(NMHJ;|8ntjFBKwFa3!fFQb3>I)YX?Z6!&%JV-x(!})iGJQEF{=xUejBMU8R;# z&Frc1J#MC+P43ur47Hvbcr#@bU&&(Rv}LzzJ??oy!4o~j;!XGcELtci2#FN;doxn^ zxNwI_(^;UUPG`{L#Y-((v82W?DTy*Grw}9!TY0F4ysEPBAnXJ09kYCKYJp)|^;JJc zMA4V00O0n5LE|1AC+Tl$kQw?dRL8X|r>FEub>`m`{a0!F4&JKoSHdron5-f6p!Mi~ zQys&|vHbVhpf?Ayoq^J-1=0o@BGE!%K0pMSj-n(5#QHTOz_%CS^< zYWC;!KMn4pw7gbuA=}kp*|W&d>8j^l7zRxH?)zi(+vRmV^utmm0*f`=myhDo(D(s$q7Sz6?3yu(Mk z*}<+3kzP4O>X<%XH2a~eX%^*Ltay)vI`=|(9ocx556>IXI;prf=Fk#R%;G8~$+~6$ zqr?v;eoeL^vCRw_G4rFuJs)m$GFL>Jf98Sj{QI6v?KTuY3rq)G__np@&O1-`R2r(| z-*jpqETG35(y)*Y!Z^z~i(MXJGC9TdV@S%*5TnMr@V7YIJ^9>_@p0tV<-+it)iv!i zRxWh3yX3>8U%l=humLjo+|6GvTz}ZUXf~@cC-x*U+9J|K5 zi5(PUEw0$dS05mw&tv5J;JJ`Fy=|R}f|RNck=U?83r?S0GVKRe`_(T79(cvc5rZ48 zSRw^q=9?AIv5YS%rf)?^#4di9mBgb2!+2Ac<-AW7;+6f`J>yfJS!q2#&ACs3We@2N z-X&MFM9AfI7G0WE7!UQ=KX|E39v11kDg&bEMP7P%P1r1b)YwH6davRv-_6)ti`AA8 z+@$5ZPYNpy%sD#^KbqP=qbGvtGF2rSse_5Ow?93y=56}suw_!$n9;rk9c=HzwVJWo^ ztbJEYi}5s@Z(KE{+&@h}P(ST25-t;u0Cs*x(sh`L7^QoRK-nQv`{Cc^hp%n3s zMLDx{LtTz;w!NTS5cqaahbIycxzY9>HoVMw$+`|)n9XFb z1m&2|&aOe;dDeFv)S~|Lb3K%31Sg%8w7)XTclVf?IA%~{=mf81m>H8u!^i591O5hMIxq8Cz_OJEqV46-BBsDQa#Z=wt*i+D@eL zw@5ZAZ9U%>FmhnX_Mm&X<8RYqcGv4(d>voF`**oK#;JFd=z8e{mU%CO1k1N``Ar1| ztPRbRzHWy_5{tir7kPVKjxEmoRvq}rq~>Ouv?cPg?o;jYGlhx4<=iEN%BsaZPOf?aKNyZ7;FZ>b;LQEJU$x=Jo; zAa)@7{nLkO2tMS&$(Q-Xu=JSTcZx5cE(^L?7M$`PlJBUwo9gepVEpg1)w}PqlB+^1 zj35LnjM{yg8a?;Y+VPSVH){*|CN2}%KN zJztDo-5Yn^&pqrNb_~iHe6Oj+bIBy=rNxy*HY1scHMWM8(_9rTA5%Z zQjkp+uRVXq1|)S2A|yABAV)5kKYsPcnxx8~z#sNVWUJNtNPZSjw7@4bC49`F&P-HL z+}zinb>_|A+tW!ihQ5C7wXG3xMcz(76s+)`-v4ZSS6x`}J7~uPeCh_2f`I=^;eL1o zf?@dPt8)J{SM7a<5tJB#;v3~_DN?G;1i45`Sh)@o+zTH*JA6vl#dK{>rY#$o>I)uC zESF+^#sW`=QQt_Y7YB^~U0U!bw2dWp$9w!zZ|6(snr?NHVtC&s1S7kjU^C;V8*_o} z6nZzy8>$Uh`YuZ*gnwWyEAQol@)bUe&!uRUw@gj}4ihpC5#2b5_H%VZ-?nTe+r zp?A>geJc?|#C5aW37HNHaX~r5vDl8UPdafp$irFmDg<-;~nQX*{7giLBWts6&<7P8Vlaabu#N}=!>=SQB3DN1PoLh+mf zl{iM%4{CQI)FU@%^3*}FOzg+)OoMwfK_vggXL{%~DXHBr6iL4?WBKXV7QQN--pGFm zzFTbOz?lV-1Y=v&V7lNCK~c2Vd|1k@WCk5>Py*}6aYDKwT{3Kp;A?9L`X9)Uq+U95 zWC_4t?4u%A$w=t_jBrkc#89xp`S?ol$GM(+2vm;=?Ck6|m6;D@!ycqbCLye|q|hJC zEVemHE4IIn+My88y<6csa!efJqMxqC_$o&WbBQT?_C>!z`4Q~BqGeSdRj;6KY3pZ<6K|QQQ7R?IO}m8ZFxk zTRFaD7#|CXTqqGM!SRNZ1VWa#waBN`7aE90&I0IKy>#^G1|a4H$Kg&jK2B}vJR0tu z3dMLHYwts^5sryH<7bSh&mG>nl<^A(xK`Pi$V(QMh50%Sds)n$-st5m%g5hTpGLd& zyz$gN@Nv$Vb$#&%Wdv_X=B>psI%bV$jI*tyPr)GP zn{K5wSnteo9Sloz>i8)OKOpaRaAaLQ z;af`F)3~i#3%%~54$R_jq*k-+)Jr5zO1aGOaBQTBOW&-k-W+vkdEUWoE27Hm3U8I+ z=)U)uisrst?t3CWUZP9F!ep+{K##;c6qxI>kIB*HGQA%4wDAD{@S$% zKnU`3$$q4ffXFw<`4D@aC|XN&I78zbo9R!W_))(7%zw*#)$%hdF`%Sq!(O}x4mu1J zGfTe<^WY)@C_V?Lx#XwcS*+1BeAyY-(nEKxYluRr@R`S8PE&6x?h<2kayy5%L=RH! z++dxG29$M3%FB=(#2J{8pJDU+uJ9@dFzE)t3>qm|ji^P*N2b9`vBAIBNMun)!+uHE zHvy%=yH_8A(RcIk2Pe5iQY$V5&k?f&V6Q_IEL){vOf7GR)4~jK1=_?MtXBeWtjz^h zAUam?k6E#BBQO-~NvQm?B2Gi}4L=d(>;md2w{poU23^m3&k%%7W%|7*uJ7J0-mTZs z4$1Oae!>1g3?$S?A%Y^h z{Qa!3%t2Df@m^3NNjypKY?1~PKYv)}PcHhohD-*$tT0xzVp5xAq(3qaaRlc9x~$Vc z&Aqz4fe~5JIS?zH1_rr+QL52q;w2g3YXVpm_WIs-uOFIKDIwq(Swh<%C9Z1f8hDy6D+?wp z^Ej_Owa`Wr@e>ftPWLyDOa9BNvAcanG^{=xbUFD^F(i|&1<0>N(QB{jRI+>RDk{}J z_3X_RW>e>*iVMm{@)O0Zu`)!n!dZbGmr$`aVbqcXQTmwlmJyBPn+q{Xz#s%Yd~=_M zyOJuxM!AWDMHd{}T8O!l}R3+HEaLyWVxj0(DGi0V}0-hNFB*)`9_k zg$)o(`7h6`+->#F`}hK;V2DA|!g?w6Wsx?ET$^yB+S&I@PQcC#e>(ZKchC+l*5d;u z!Rl-|E$hwh#0tg~NUVM45@f(>7gs+ven`G@)2SSNmxN>Cm?JdU)|R0mPBy-nqb2%U zW>kGTXTW5%id2mip%66{dSAc4SKgMS2AoYRb10JyAVcQgJPmu>|53C&5d{Zvtb#}X zhCDoBnKh67@<;QZ*9CCl*!)JcUB(Z0O$2p_qjCFaHI(dC_M|;f)RQdqZfk|(BT^CO zy{(RMj2=Ewc*N_*x|kfGtzc@8HlDFAVOY)j8paAP3Xru7;OBOEtOoRAOQA-*FhFp3hK?Ek z;KnjFIwU_M14@>>VUuPN>>AW?((gcSkLv^=%O_}x0Qlec-w4!eo*iAbOv{y(1g+GT zKkviCpq=Gn7sl+b#udgA#P!`30p@Ow!=Eg9qy4z!m1B-NoyIR;FDSrnE~1crlA|pd zwCvSAmEwvP&_|YJ7Wa%lIZ!y?#Vs?qb()*f21O>-%-&q1PG}9-+*A1);lUgMTFEJ% zpq07QjqKIX;qU(TQ`V-m?-Dz)XL;J-rA=x>tj0tClGY0s z+}N{J+@^gTUplMa#vh-`nBM@YkUb`_@NXt7KP&5{Tn!tBC}5GuAu;m@k5B6-t z^6~qcY!d+r$y`mEv1uXK|4j|+tE(r9E8Xt#CtMgp?|;j19Ux1Pw$wqk+yn_)xxRs| z>|vH0pwbrj%^N4~x^i#0{fo2=YLHmcc(P2w>q0tfOj?h7vM9#Q-da@~GESWS2UCBq zoTJ^GtyK}PV6hxr#;7?@BdyD9Bj5d(-vBDM?Q_bmDl)qUs`{0bkw!6TsP+Nv@ zT$Gg-s=My(5~FwT!^l32D3inZW=xtRe6qWzFzqt!rMF_?7Qd-!fJe8cx%6{9p4TqnRRejqjczySU~aViWM@F(f#{A2{h}+FoSG)3?-) zX}!wa!BbKaZTV+n_MdB*MC+#(1Cst5^)6pgSrInE$3|<<@%d|kCzI)4Qr2QGP6S=W zf3Pw@iPq#58huaXu1qq~lzDizy*3fG!@A&D7(o96m9$)EBzbYAMOQ6}b+hBeD z`5Q(A_1<3v5v@DuuwoFaRQCtkE9yXFE{4Qn=*p^S9|U>u)TlwQ zV6n;d#xK^{20Qz6s76O<7XkP5kg3`~zO8-c@dXc+-I~9C*YEx8DoulIvZHs{^Bik( zL*oSb_B-Cr=l-MZ>z?ihjnU!0zF{UX9S{Tet**uIq{S*Al)YJsfg8+0;A1}SCR3G=#`K+*f zrg4DMc917^DyT`Nx&wduMM1{CSFdNmvl-%f!V`W{bH9WCNCP+m^JJmuOQ1a!LWNf zQ0rN~VvgFWOD3tWpEn+hm(=g`BtMaGvpJ%(!K(9dStrOcu`|Zn{C+pGkR4MDUI$~Z zGhx{}-`JcVvt1REh3capuBY4-ZUkl~tZ8pI4X!ND22BtCZ~C&mfcqBBZbyVhgW#DS zLDb$G{~iAyN9P?+_5Vll%av64ym`$jD5J zjBDizWskbJw(QLB@ALTm`}zC*_`F~5*E#2T&iH!<=(nEnF6;B$R871lP|5V7X_Sdc zx6I21<}$Dou(y?I^wR2m9ZkpYmk!FV?ht%bCZ6DYZyaYQ&tg9*L#Hpo)7lH=dwZ}o zote`5Ev$)mhGW}u|LV71%|4NTDGG^VlaJ4mZafZb)Dx|Yk)3_Nm~JrWXuR#v?B3EA z(A|xx5FTgK8xB9q-@ADmz?_De*6TjH@~!Crt44}ugLJ@a!2F6T;rE0Jf67mlnLjA4 zAxEz-Vb+;OuVw08>|`aP4W*QXShvQl2C}krGIphNcG?r#zhoIHyzCH)e=H05la-T$ z)=Fx3p>Iv2Q2kirB?+p%nfr?eu*2;ygq*3HJ^`(Px1bn>?<^rwBXy4EnsgXhYHTEZ1y%b-rtkwH^fmgFwdUoMfGLC|0hH<> zRw)8V(Y6dPTyN{sNQzR#0FJ)0F>tBZ!%wZO_4!hy=n!w(v`?V>ib#-r4)rf>?Su?2GoJO%UWFP=TyF|hwGCN=m-Yusn}t0>RWrg*-hJaH&=37^TZ`r6l7 zR*L$Y?X7u`MS$NN)E~z_Ztl3U%9@4DedHg|XFuaR%=TRQlKvN!y|Xf=drGMS=*X29LdLRt?E@Y}a(0hxEOl+65E6 znedH@(s>&}D#nomyGE`k<;*Klj{XA)YDw~z=E2f5+c{ZpE*lhtCY||QQP2unbU=90 zst#g_uHWH|*TP`B&MM3FW1L3tt1NNOSE_hZ=mC^KGMUqS+CSZuI}j2i-jmr(ZH|xB zCkg!Yvh;uYp-{nMVBVDpp1y3oM-*~N#|5<4>WEqx`r+*I{%iu*Lq}kD+}*H=<>yR_ zwSp1AppB2N7CIOyyAm;2At7~Q-;qezj)9&q--ArSxh;JS&)Zer6tQldi7HL| zLCKQ%DXQ4me>T3Y)kQv9o=b^5E_qXQ@6l1-;pi#8+415*+`GK&zvVr6eQ46tNr(Ha zvvp+rNyUMr(Dn>P(=~?C$WbOMHu>{A6tltStFz?**slNj{)j?%oWb@mM9UAc#Eveo z2%h`}8`yJI5ixxBz#wmFkv);%0D>U4Ox90XNW%1nHM4qc30I0UWF($93DmCbN9>N_ z$Dd7>L_KU?JH=|{8ng&bT?-lf@jBf9TWa-asx5pS z$AJP*;tnBy4+~4@1`^(--xJ!GeEU|W3WGbJL-sN$QSB2OC5<^MnkMeB4E?AVx?nl6E42vJ z1v4B7FK(EBsq&oB`?`1am#1V5eRB*{S~Go^f}|RrV|kC4tHnbig!)<7b!%-d#|YqQ zpFcF}U+14M_cVwLw%^AE2f6;P^&bI3-!Eoze8lMF(tkudxL!tnPU4qM_Y~Lc{hhwh zq+#MEaadQT$}idZN}{&coCga?Whz)D^5mKM=qB&ZK!dBB&`DmpFTkn^#M45yQ%!B9 zC+%u%CJs;OpCzXHQ{T0a8TgFa3+JO)_pBz|)0*aJVh=oUX0lr>Ke8-V0xkOTD z*4O9Vc8KG?6oH`v(+N60-1uju;+=did{9S8CsoRIj*B?JY}`Q($hXi?zE=lG!$JI+ z)cRJN6d9<$VX8~fjq4tVk`Em8>PvEL{5q&fo*P7`UKtJXH+7$VmLuM1(ZtRUyd0o# zxXh-)Q&jB)x|O~e`MQ@DEZU#yN98EGMyxpZ;u@(QnXWY#yI7>~?{t{ly8Ll)D`O6` z`updv(n$xX#;z2T{CAhYMyVwWEgGq}4Aj@YM13W5kkl7RTsqL0 zwrsige#t57(D*EFQ>jQ=S15?Ef4*jSi`trQSPs##id3KfYD-ZK(RmP@B=~AEb|l~6 zHq{y0e(7a~n5PoJl{c$ z-_kO>C{plMZ(#ZuU*1~EWS9sX5~`$Lc5rDG`?^t%GqhtEbQxslN#7P`|H4OCZGVdx ze%H75dl#48RTATb!ZTJm87qX+W2KI@!(v;no@W*hJ~r0<@mR#Uc0_3Ie^57fT3pz#|iB*nog#M@0qH*h-b#AvhQ{B%tkIJ(^g z9ARSHN(Ax-QkDbK*C!Ym3h-!dbY4di5{1w$>iHL5*mNNg0ma!=qqAqlvhTT)0%!<6 z`8AeE22W^x`G24<6(!>kN}f8W*kOO*fuE={SxBpz`Wq=@I)TxneUvG#DZum&V_KUn zva++5Od&`R*LSvZ!K!^SGmDofc^v|bzG|Y3J$7+gH74C;q2mJQm@@2w^rJ_6k)n*? zV4dx$jfI){*aMcBMBRBZhVV#JPXZCcaDOQ-(~ zP?Fy2`REM?Xnar;rBVTb;{qm&7F^kh-j!&CC!IIU3s0 z(JM+(9u+vwa0p8UCMM$!nF7c3*o9MT3L$L}!x9dMIsaO1=%Ri3=#!=p`lo;x7Z~PJ zs=N|QVbdWAz!f0pIUtSKv3um$b%0W&7e)th_`DLA@U$G#Tn*OpM}KyKu6s~kb8|Q$ zo^X|><=34!N5}ScEl`!Gq zk5O+(o@MB6+A3%=h3}E-2!0;i+cGjKZ)s0*dA?Yt={_2cMFib>SQNl6c+7B4K#^6s zT@`g)XIfpjh{FW{OE((t`FbQ*M&8$%4Cg^Eg10t387!L=yNz^0C0Yc4vxUyjRETkA zOTopqU_%cMfl^P#>qBx?^)el7VpL?j>NcSkM|IHki0@t zWx%BxjKo|~tmGr1TLHvAJX>B0%ACf=Tr*mkk!786Q--;P>Fs9Vn1+Gz{n%p4Nf=96 z`Z~mXLl1&Afy#hE(fQT)Lw3>dS`ehZ~R|9+r_^+zIwpT30t zQNfj2t6f3(*RQ`vW7BK0bT%=uSdE&A>C&!|S8n13+dC68^EsOS_BeK!BM2ZmNDDN4I}SNOA9O|{;`53FV>k5EMcfLnGTqi4s~|W;Gx?ud&Bop8z2g-BSD#q+ zEA54kC>;)iiN#;eH=Ht&_8!pitIwaiE{^cUN4YE6i4p~Z`4V!FiaO$LAfiTE0rZlI z1AC4`E$*Mk92S5*ub2mbu@CVOnAtTxl!27GBLU|e(+V{k;8^mH#pDwK=M-}L2LG}M z9Jln0Tw_bQ*cvSS$Perxf>+z!K{7&Zcme|Zy^nb7kj%c>c?7D+WnK+Hr4U{3%U8S> zr>lKlXR;_8w_#Nsa-?y%InXyf|^q0$8 z6FN7h@#2GM3s{x`y3KbX1MJyG!1q?*>3Ae>y@r%}LxUUjXSod_p9(p}E|R{e{Z%k*SJw|pTW*R3-ZAxW%L;9_~-oHKLjNDbnJG(~#Q zGqN#u<0{CI)cqWm51w~|HM#$48c*#2XQ$*wicR0IM>z^Ey&wV??Ac0P#G6RkpB(3# zksYPB!YbFuASNwi6z%{`jz?nnlH&8M?8saZpGEnj0Q@ z)G9o=V)J`=n@1uH{tF%a=;xyL4fNY?HV%fOc%pj2;Yy;}n-`DV-Zpc)4H=oT>3r>O z|469&Q1_(+jRip9&_mCx^c9K01oM-8Q%3mj8A;LC`Ank02N9WL8< z6Hl`p;WB9^Y1S&pk}@>F1W_UvkQ=G`J!IKe%&w{W2!Q+|+oJJaC@gGazwmh+jSxCt zlc;{cE%KqD-pz2S261yjBejI4MDWh*y!xxp8L-i+XJ>Skh5I2~Vs4`4Gtn=%*LDA$ znYoGh%L&=oOb6pq2o%wLCk1cHW4;SYkqQXk$G|5!!L>Kr^(IxTAX*Ee*5p~1FhDP3 zH%@Wpe332V0(E9Ki6F(Mk0zLwZ&j?YxC*ex4C&|-w1KI+H2%YqquWbAC{r1hnmKxR z$4FcAj<5Vb?JcF>x??zWL(jW$?Q^4t06O&A$ic=0WHe5wjdPN;oPtzR8Q=f6dtOnb zk|n%1%`eGSU-0aB>wp8UGiD>0Vo?5!7S0q99;2RjMUj@y?v?yi3$2;#7#gRoHLZQ& z_MqALl);8t>tU5=$A|A_J(|6#oZ^<7fx6e@UWD2P;*GxTasi8h78ujnLD~hli#gT2 z7#<1lCD~d2Op%!;$fFX4eyouTJnnX@IW7(XQJ-Z`u6)&V=n{%i?GZQ>x7tU~hMaqD z-bla4J}g|{9j8bZsj1sB!aKn-Pm;@LsiF95kgrjmMTna;oF|xU9IVC!QqJp-tU4Cl zhxQFkAqxU1$dHNoyasvShuA9*=zScjq9SMc{bc+38n!Jy&U&@UQ$MeevhrCEsG5(ijj+OJsXqH zZECyvw3rSLJ5Nse9&ixA&5M^J9PS^vT%P>6wn8MA{p!gMcA&O3Z zvW9JLZgI1>Q@=Hd%g(>o^!b^~uktL~#0&vpg3=n$VQY3+xG7u&4Zb_*%77!s$d9Gk zI?woNpM$6!qt@&gB7s7XHAe>1k1kLL|9o5LHm7ofXtr8=l*5xVKbeTIdKhV+CbwH%4cT0SlT-d~EEX z|AGi6)^vo;Ugrx$MKe+g#<@gLOa9tPxbWi zLTw*d>-M(#1uz>kN|nh?NzZsfas)Km68&C;^#(-40#B{E+OIc^8}AOeAPI5b8|(Tv zX$Xidqt_J=IPk&lY*e$G4>3eFxpp)&755LFY1qf|*;eeh-Y$=F-STeRGGgG6SfG)| zY-LdYl!p7-bz#9~sVHBwK-?)QH9XH?<@K>S#TyTgKRh4LdKf@Frr!A`Q!6?4Mzf!! z&Fj^wuqUYDDZ4A?9gtSu&|6+dBf~yScHis1O87QG93L)A^U>j=pEE(04=dY`1*fHc zM2D8N`#LaguLEEA&XLq}Lt*tw4gm8bA7eV@`bm)hIXC`5d zPxY=oXwEdTV{k9@31g{13B;fPe($@BCfOdcm{o+#%FHos^T^HiXSI!Drq)G_%7L8xz4y(C#Sp|7+1io zy)e;kvvi|qESO!EfhMp2?E5z4??Eplz|XS=nH%yisn`?9Q%DXf>Yc=F&rNVGMjLo$ zw}{?=BSa|hByhuKbTd%LLVsiRe&$lj`HZXCK6AF%mAa88 zH5pOc)qx6;Yu}B%{sUDe-Dswxt3h(G@5j#KLJl}QdOR%+HqQH8(08bV)SY!R-F-Mt z*>QX-KNax_I*bt;R$pr#nZI7H z&3o}daWZ`!-jSn`#``Ja#x<2ELIodECxu<_N{o0H4{eg&z zIY&ki)ET1ouk+LrJBBP19>O(g`>+qa1FO7|v6Nl;hA zD9vBLEWiqDqo4oZ$msxrPv0m>VUE&~HPf3tj#icQm>Zvk+@nIrjD$XzwMeOO;8PJNN$FV9vB%lT4k0j81ne zmrI6uTUpdaxO2jX?e9JrVa^Hk5+D1exQ+fqsq>;xHY&AtYbb~DT9!xj?u!ofJK1fIlBR~k0V7APR{yK!FDW~ z{8B1`y`vH2zopG}2}Q1Ntp()Nmn}MpedT35pIq_96edU4SysZ?X|AeGp^Q%Y-JQ8w zdjpu^6R6YiCZBh2470u|_`l82Wsj?d>yCM>>M+AM%!@{*Zr-ehCTItWBZ3!h=(E8b zN#c44zLOsA;;X2fkXd8QyU!_XRfS*~H@H7l0Cm*v1_t>+Xs(f#TlU8H?>F_dS<}bk zoAC&>MA`nz>El)o2a`V7o%L5OvIqg$osAis+0Oe`S%dz`9NmNueS-*ktiJHW3*3ij zgIu{{Qa%5&%uKt+Ph4djfGGxb^eT_f{?uIcjx6OZC}-2t-QnPW<7K z>yII`LB;_yiUL;8T=0;&K7uMMKG48MJ3jZLp=L*~OUg>hD`!J!Kb3zRa$EO<*u!^j zH(D*RXRm%+%JDo4Sf}{?DM1Or%fzJK$QB%OtF-ma^^pHSa2;vcStHcd+gD5iOf;rC zRWTb6+Ps4*zlN#t9~Kx3Jz?E1mWEymJLp7h&nu5^6tZKNkMZ$*cUg!>!FE812mr z!=KMj2P4f{TJ8^2d4BGbx!)u+AA^@uCXMDx_FL)~zX9MhRCwplH@TO7Yhe@qGKC5J z)juq%FfQW})V@_O5%D!h`KrK2G|)1C;qjv_ahC1g*uIbmi-frjOK(91V+>RH(^a+g z@VWXKyU!K2^N!nD2b3*aw0&ZW*c}PxMZBAflb_QNd=tDUun#SmOS0gI>-v;tLVJ4Q z*{k=d*3aU{`4O`PhXu6ja6(S$dOW`eZ+-V#lq9h zvtQ?kM{&xU!5|*tCPhPpZ7~uj>WZB6O58awp7*~?d#CF|^H_qykJ%_Ne)Wo>y|L3x zVb;-a^8xSJ(Q>nl9e8GE?^kzcqrnRnGy;Y|DX+WKj{aYdV3_<+{M{ga>)r~O+Y3JVf_iHgF=(W z=Ib9<-uv>c2w_o$OrdpIpKp6u0~yWA&B$%UcPX(w|B*GfSEyPKFs}PIQ2VAUv}e=r zEzdHB){k3gsZn^v7090INo3IJ`G1&uwtnprH1+Yvel zUiBZz-{s7mox1(hm_8!G=v(pjt5`=lq)3x#jjgf0-DZiobV%K3w_)5?=kI_}$k=XA zpz-~KqS?Ht?co-sX(gr8@%mrCc*Zl}(y4@z2y;Ip8w(io=c2@dr}uBGTag8Vz=!AM zP!y9Q!&4U=zk!ssS8n5gjYma05MzP!(}m8c;FS_3wz72f`@*Oi>2 zgNv56LivBC$~BF6&g$7vZ6o>wg5Lev;}Grb(29@mJig3Z3q$GnO7`mrrRIYCzpH?M ztb#r5TCco8M?@s&9&y|EfCVzWDV3k8X=Dn(3SeT(b(s9+emAo`4tZp%LO>sXb?QB3R? z)`EEJQ2rYhxBNLDV$ai}-y9TpGTS|afbdfnqTHM_A}c4aS(sb4klSi{n%{7k%Pb7T2zBwH~z)9HUyu zUn`2m)aWW!M24zUn1kVcVaxE?x=P^4SS@SJq;$6%IvC#q9Msb>Jqg9@eordj-bT1I7gIMi4cj(ruIGOlCkZB;Hjz23h(4;d^ZEkL;o&{h+ z`P+)7`ml; z=|=a)J}N+?Ky!Vnwa4nD!vZSjCBD#YwNpAuQg$s>DfKqu@VMZLbq9@%oIL735N-ry z<}w6howSTQ`1G#zqW)i}Y za&MA1a6UH1I#u?DpPxQ2U@nJef$;BVUCMqV8C^k(PC$>J>V^E+Er#KTDdMaXPjHyn z=9ynumc`%uD~tJ`!N6Fs0W6NObc&#j!y|xN?~E*_Xe3ho4W~%;wWYp~!h)Qdu{4*h z2eK0Mie3R6g5BGOyE$-^a=^bMgHvkWgyUrj*h3pN~zM&+aF| zG5x*K)s!tS0!pngm}3Ata=4GAqn8m^>R+7=K7g4~c?(HdpE1o}WV&m}cYTN#w4FD^UNgXOL0oG@2ajf_eL5=*i02Tfk?@I-lR`?a3 zq~P~yQRXp$cYAf{cBm>{1*;yE z_e;_^*+AM1hdXPU2FC0+30;D&Y9~a1L{5!yO)ie`1yhAH9dL*j^$isMC7>Z*(oVM` z8C_X>zuZ@XSExoG)<5A{_sD!jGe1;PD~qZi?3HG#8Le^XoJ3~^b{;~iJ@O9a>vF|w zvh@&_#8!at3~Y7`1B9LZxy5 z1pLv5a>?N-a;uMtec?ezM=Q0GvVV+$97l2`hkgrU6(}~>W+D5jnSRhH0jVen>S>rp zdx22kHdPAz!a$5Lzq+Z@q!}3Gtn99|fdmI2)R>_PAQme}25Ae8YDy1}zLN-$dj3QX z?GrPJFgGP$@efxSyai(fC{nAhu2b~EB2B-RaBmBcxztQm{Zp&?yj{XBIXht%tkTaw zsBp^&hHv?%cQZ?b(VI@8om*(c>CXy}0F$_tHu>$KbMSTQ>3Ct2z}PjkiFgJ|M1LE# zBNd!}6ZXOndSYry`1LlkBr@e?gD^{Z7+nkC{3ocoVIIF z2J~-f@{>6N8(Y?$Tzo?U^K*Xvfxlw+a0n6YBRVn%c#WC5Bn2&Bdz`Gt^-vN;zS0hu zI&qe*xQE&?!4mb)d+Pev@Ld~*BR>?o1xudyS#9#3lG_!!Ns)x7%mBu6YC0ShyP))^ zO5ZM_;$`Ogy>hUUQ1C%PR@EIeoFa)7U+bPE^p`@7no-Us{*AL9-23@(00iM3OnlUv z-4x6#UkEx!xw}g4Hy{EmFF22A0-jv65ZO@N(bF<~1{tbH)x&3d8V<@$1ZQ{+*p0 z_;WLbo$90&1uFix{byxkCsAAlwt|ZN*cZYEJB&CcwOS3^f(hpv4D=LP3A3nC98LvtxXZp8BbRyP#Efq^^ zYP*qo>}K#4p1B@&p~QhN(KUX{!!pEC;k}I3XwT0^{Z*?-wh3orppw-}!G?*5Q-{0c zs7~=pq}(^E*&nzkis)QqT|gh^Hfz`C%m2(N-w^Vmzarj#X2t7u&-TR!=wY84QfY0+ z7!2>2gf1QSZKaM;zg3fx5p+qDqg@o;*;z;qscqGELs97Ak<>*koA^X8IY5@>WvHIdwr$h@YK?~LTt@iU&dmpK7%`{PW?dd zZ_M=zJ+ouEt*#92UGOzvDIUF<3Ez%kmfXXG4o_MYhH^I5Xj1kjAw2$_{0_jDpGQr% zFe7uifKm@YO@2^;{qzu89~I%|JxzAYc>7wzGoCZ7k;EioF{(_+YA${IT;gTZx2gdsR@?QjMgh@_ zVQH(9HFq%e$@3xFRg>_2%=~M+tj(%p@hp#Yni&_>?Ev|0wUbTpQTeAOt_Lh~+2150 zLVSFfWK08;-8Zbq_19bzRX(S;$2jT)P#h}(GhfL#e^;fL-ln>hH?8R~vLAeruf3Bq zDk7{OWUo{Fvfc&$_}97;2?b=xRalDCn~`bqI>OE|tciY5z>>3O>?3AR$lbl3!ZptF zRZ1QW;yNJItXWE4p_%hmeIEP6N(Sy{xvmVxQ-Jr2{MXa<-kHA%Dr3EhnAV(YZZ>^n z`$PSO0n~L~e-!EHu=mO20}>{ElKW+2ztMxYlmhX zvR@S&*4eQh{?mui;C8qNvOL9ay)_Dq!R=4II;70kma9sGx_2Ocp+N#GqTH^jFuI=*#Ksg4N^+zcHp6Z!CVat>1p~W=cj*0{IjwLeZ`d zl!qyM80T$Cdf%-Tr@tpcXDElmF>hChKqhK9?S0%t&pxM~?rCLZw_V5VqaW0EFuhk^ zWH;6Fm3ksoY?1MMfD5j@e-j%xET@cTj*>NIz0JE7q%1Fzd+`$-ki?~u3ja$e;lAJU zDEpc)edJ&J4soOtW@O2cedbrbnQi6H*9yeGjfGLzhJD)Jv37U8c}s{>o|RV z(?$|Tzx>fzKeOrSEWu+ZJ~ne(-sJmR#e!Ccor%*C^ey({0G43FK7iL{P&5euYHAv; z%aRRD3;spviiA?$A@X+zcJfBy04+^CTxG$(S|m;9uen_c5Ka}TfL_{vGJle6xwK$v zuSZUH%mr*#A<8Z|cRHn2y(M&k_1$;wT(%d-P$T?<6ulJPdEhU=q@Homl7Fk!=Jf%@ z)0%2+Psu*DC8VQ62rz7Xr@c9u{J}tVL+36Xl^OK?=k{Qn>qVHVb#ovd7iRsbj_6&@ zqt}K+$p)fWkkIKs9A9>6Np-df)<3}h_J5!l>ukLGKhY_MA}{R1!Vb~Ywj6iJe>k>s zb1MrWxtov>*RkZ{e_|!VwKEZ`HD*3AYQlT%AoDft@|;i+#qgd`UmpQVwL2`krN8E) zH~lW^Q`*TrEs}3eZ0fLyd<)au{;B(~3IoMSyaC$g)Ao(Nr?~byiDSAU{j*7tg+e0u z)Uxf#{Hm^m;|}AJHD(DVPiPywD?sU|+bYs}%;_o8nx3BgX^OS?HH!{~3+(yulsL0P ze3_ZrdNYU16NM@Xj4p?H*4vCE@!%9lJ4Mb>Ti ze_>oim$AmH`Voc0OVhb~XD?}VoNF_*%7oaoC|0SJdX<0H$ltuN#j7E`F$7EWWGL?E z`j(~%%DVgucKH9OoLS2&wLNNHVIQvWtGM=kE(3Qh|NC)T$IbaTrAU-F%0^^Gq;{wOux4zV z_-ETKIGdbjbD~%&q@uNTdA-9Ow2udJZwcfbkL$Bj{ai1kx-WL*SIn3NSSQ`T7+;Ne z!=3y~N>@B~xv#3ch_RU}5l#o0lsT*Q z8S zP25syJHLn#PJdouB@9rkUh^c^AWoC>9D19~N9}d=9yeh)IkILxE7J6@HG^w7erD$@ zaMvE|3%%+8mQ51aqS}VJ;{v+*9T@3brl0N|XtUj;6Uq&bTh1H?^_^8N0PDT!q&8ap zZ9;vo%l^tqp9(EGF5=l%uPLYUg4VRnidzN-tm-Rz<(lAR;JPAk=Nez*x;a(vQ6eji zxAabJkrvlgU5@??TH+Ib8p&8B^(cJ$KhUEvHmw!0PKt~|Ce40FW>pf-($}g7s-p1d zj;oHO^mYdid)|=R%VQF6``YcOq_qcL2STAsIzg=`?-)>hit*`F^~_P@>6@0XjVrba zxtS%N*K;-3QL%J^@X3$?-SY3uj|7sNA1<7Z_Gzh|9O&1KM4gwo+!@@wuhL;LE%QkE*z=GirdtEw&`Cb|>2c+7*@W_pF0 zvB6fveU9?GLYqR_!<(*qdXNv{Ikq{|^loE?wt_x8m)Q4)Iz4C|xloYHd5-ayxYB}! zFQ2YLaArn#UdM3A-B^Lw4Tq||*f2Csxu;?`ebFOYi&g8HMejCgl|ruQL_9mL3}1a2 z_c5^iU{jaDGhlNm!T6gtR<9rCy4!al)=rziF%!v1^JsA2T}Y*li#~1&9B10D{i|=9 zZTWNdOoE=9Q~w(frqj$H=emSfVG=c2wRV2D5WtqweEZQ&Of5XdJR}g4x}ehdw z#xh#1kyH3C)XyL_4VI-6+xd8rHPzNcqFlxILVY<49W8v-{G$(z&;4=-9mKGDyO&f= z;YU=fMOM5P=tt7iP1B z1)Cyb9XqX-wNkokiXzqIw=5&LZw(!CNtnGX#yj>xfmet;R(+2z{HQD>LLlS%pJmB6 zhjkJ$I>Wo~x0S?s0N;F2JdPnq&FgCE=#QqX;=RO{$5hYk`w|wJt(BAz#SKz6x#Njb zLP2(Jmdkx)w9+}mD5}9ryCKJhqx*OE4Zk545bYu^E^Om2VPJcdyR!Ckn1sGcFbsxn zRa1V(u`N_J%{%p9p9&6VA>b?Ec}h5RNn;MHOXVj^BFz0&P(aSiipYS zylJxFeqLHHfA~ql^DYR!AOxaD^s=zm)NdTfJLIDui`Wut<%`6)oi~^aLN?w*Cu=FZ7#R46)e-J@?+# z%A$SS+jeVT^_$5Eh$kuRT-i!xa;M10$EEbOW0G8ls1wm2H=)q1cK3;wN%6tb5y&4f z@mL#*(F8nC%Ns04CrQ~5#^fUyT-zI_PeE1JylhV#%3$Tl$S_o_syXC&`&)zX4GCAx5YbHg5- zjUsx-acF&TD`}4-x9;7&*+6;N4NWbehDRLJ)UEQM4>JsPY0?p8pC9s|D~82%#f0`U zH@C|)n|CKnS0tGOC=LwrXvB}F0}fV&rAGafsI*IU(oP}{nQEV>mI&H*zH#-I9#BFo zE}cdvQheg0c-((Qc0%<(kTTsv^!jE2&_#GuP(2@qwGI~S)dard8#oSrP$u*RD5>dR z2IbOA_B_8a#6WTU>iD?4R@ShmHAWH}&Nu(rvUW^+Xvv!nJtTbLTh;khW4K$l(>g_$n=WQ13z z7BP@Q;7L*{fZPa?mzL-fa!#UeiD-gA2`-usw^f{sDr?T-6_|eUWTv+YF#+a(hHyux zNtR+iX21b&4^H(r*aCy&BA7B5Z07xxPLlKrz#T=hP_CFCP(6$5%&xr1cta%rIoA}JMk(sm#$2~I@* zH{sMuSLZNYUyS(BlPwpR_&8} z#ij;bJ%_m-#Mv#4(@fvIm#0}hDNgU9m(-9C{UF6^7>KS|JCcg-@&S*g%`h#w#{c_` zZkgDItmko>L@ocBnc0w1@Z=&Y$^86|%h<@NSz70{@J+j|4sn!L>_)23!4dZzqsq8e z$zeTk`gUZGEE@}#mZ%_d69HM<(Xbsj3@mW3D2g^e~iU~7g z`O72ZcB#O-cNZ*Oc?XhpexMxre8IddNy?X_!U6<_*EX@>pULu)=0jK_e*>YU-41(&@1z1Ss?~#s*qDm zGU$mODRi#C6T!O*vO6Cb@Y9i>q=PtrL`PZN7aRnmO%IFvvrZYE_MuCBtz_N^SV)CU zOVtfxZXnwr$}OxnA`m@(l7xX@FEDEX1*UeL?_1a;_^>Ap%U;a?J31(Uam8fbbD6Wg50r;y4&MkpSJ^XvewopS;O2kF<2|L@m1b z_>N zIwbIld-pB7n)2K+MsIII`y5PmGf=*q7)$73Pv| z)=!mEGJ*No$3&M)1xo%#UJ5Yd_~Io#BO$G)cbU!U8;XSBBg{<4z80H9b3Nd}s)KgTC3P@t0v2qR^G;&Xrf1pdb(qKYM0I35k3Q zg(_WXXEsNI*mTUq^SZMH!-#*v$iVS>AqPr)Eq2Mi9uZt1B_mh*M~N;tO$E>z$|(a3 zYmp&Rfa1)g21GsB$5Z;#Qd-1|KtK*Kg{q0)-S-v{jg~U?jNffJXnt#>Sp^;6ukZ01t=Y80J92PU)FombXrI?K#w zjDz1|OhyM2g+4IDTuu((o7YKg4z+spPk)tN*WcFVPmvc>)2Y8=K_5xVBA%?oY3>U6 z1vcvFpYHb9x;BodK5=IS$})B2RHD=(npcKZPJu4k z5N_8eiNh3gJ4SVv9-94RRUiIR&%OGv7nMM}xO?z?d+2F0ru04|Dh2|tDZFgB(19`M zPn=&i#CX8i(H;~g5l4g@F}zsh!L|p5d?y%(KX;Dd+$;JZJAppbvuWz~9@1Bf%JY(aKSO@Ek)^#vw zRXWBVxAL}sX;i%N^ZZs+4gIKN6e%5@e^CSN0FC{4 zJFvEW2Xi~8?&RxpY=>(S`0K<0U?hCjNKiGh>jl{5OnR!M)ASuJH``M>&3&`J_tteI zIC8#2R73LAI{eB#MnI)uSfp5GwtZq@*LZwK*E;n(ZF}yDNSm}tJE5?!TK`k?t=Bek zjQhG-GbyV)X%OFE87bw4_t?g6_V!?Idw;_!^+vvc9#q`&toAm2(hAmw&b~cqS!6*V zE<_`zf_&P4)_F^3_dNX9_YIg#AM#A^m~~zM)~l|sbSNfyb6rKZ^8giDRZeKnCsZg9A9k*% zk;qF?7Qx805O(}@uFFq3h$AtI^wOgA-V&O*DZ*0l*g46phdzjFR@c~D2+9Q%ACk5Jm>LH)7l{jc8CnKNm(l=FsUB=l@6uP#$ z`B{PnBj$&>tz~MQh+stCF&C>d+7wf|vLCi1GKN+UG+j(gTL`@|WUNuy|{}|(< zH85_QP|f-}%~#WHg?#3Uc_Aq2cp87l7?!=GxMlH%NG3`p8#A?)JA1QH4Jsn}QzvHhSV^x=D@t&W2!|s;~`?>XFwm zR|IhLe6PL7Z@6LEMSU4mofVc%GPMn~CEz8@E!5%f-}@}!?Ej&vrTf0pE7D2%g$4cChBirm+)XEr$#`% zfset2m5DsXA&%D?5@Mv6nRtag2B2D->NHz=7}5S|kq?@`;VJAKD7tnW%)xs(DbTm# zJ^w<}6pV%T%hE$dKSc?`Tjq(sIiW9xTwFFEMqdu;uvs;R(-wa4naF^{fI|%O>&?mF zZ}YaP`pD*L2Xy>;lo*JBMPIRgv$!Ugs#iYvb=FV)Ya^w1L9sE3i19g_Y!4pTL7Ve$!oM*q@l->Fd1RiY1 z57)8Aq6rdzPbuFG9#c%U*0{rl&`<02&)}tuPOPuoHVNp)@lbtuTJo2mi7w&+>txyW zs-_Q#Evz-sX5Q)H>XSQ(OCMXF`Uq{N>5pG@SOh(NEb%Gzk1h%kzJkwliaI|sV@I=N zGtix`g-evLZ99%k)}K%Z^uS>p;RpJ|z0WyBWegBCw1 zFOzoA+~FOgzBZk6bLP*YNA)r`3@r`7!93{sxV74CQlqwDFkRBS_8`1(uXd;MuU$vp9iq=;kvvV3r6BET z_y6^sE&7H`E%kf>>VUgY2Apds3Z4Ec%Qu_0ig}mrKc#-Aj@So~Uggqx(7+?3M2?n> zI6hT`ldbctxjU5VyFleQWQ)Lt6jI;p(4WHL0^s7)Q4O6O?P1eo6^Hcx z_3|&y{!3(vLZB4T6;ohRd)dI;ps&jO3;}(^Sq=*2)05hclREb+u*HK_BD-U!7=T+ zFRNeQ1LiH==M}BL(o1gVh?O4lvSbWbo@>}9$v9OJe(o81#B95}O4ZLj{N3xS%hvGd~wyBwd;^m@63d6q%yhfDVU8jMq6k z8wT>r=9o`qB!XC&zP8cR$f5&d%6C6s|1p^B7CpPFw`BaJher_cTV0MPn8YTdHoLUt zW*Ie-qIp=!r}Dm%myE>wjO(**^H+{g~JYVAi~*_mzs5ksR6KuW&$$WGp~vL}tMM(&C|4Ym%>i;&D9zVoawfBSZ>CLcZIqBKyD zaip1&_ZA{Ap(c=tk>NQFdd?-x(lN1C(lBF}e^a&=%x#_|yF^4d6sXH3G5&~|{2nc< zB?Y8L^y1vPIkOk-aGKtez8vM$3xJs;(3$mD{Q>%hl6|1v6C3!tDlQAGC<30~8GH9v zMh^9;YWO0gzxGz+01@4WBl}zM0i?`pJR7y{+X+k&)hPSzOrOxPqnL{+b({(o8H10j z)1Pq(uQ)l}uJTlHPj$$>`B&Lum%+hbyFLV=L6w@Q<>Q+gbqN4GQvGdsm2^p?FraeY<8P@Hxc`tys?r$M zk~kyJs$o?Pr*#*hq<`%ZOC8giy+Fe6*>0(;N6dZG4DR{ zntAlN9}>WvWRc!EuBW%!4|mQOOjBnLnfAGD-2lry)QeKU(a7T_^S^8p=Hvr}TP*6z zdUg6+lH=#yRIRRu&u>3(Pjq_n>F#J@)=C~ZmBeIxu86Zo`FUy@Z$z=x4yUr@hlI#S z+t?5^?M;5p_obc5vPa+T^-2%hdC8J+K?zsJ?-{WUZ(gPBn@XZ>z!|%s%~>vJ;1s6D zoufV=GYekYlqu@PTFJAB0TBYzM@{nQ5fQOjpYB<@i%Q_5CXyeVal1bJpm2x5Tt}CS z4&MxH{4JpjSi+M#9(5iT=y3Z7>9W0-=s;6sJcicu%}n!T>+hyRGTyYw!<}y>DL?iv zGGFtF-&h|93xKy>8LszbWEhg;3&LVa3WbSaeKp$`D6}~f`7xyG^tdSBmvc>8CK8GE z(r~+}c98^3?e{OamX^mNf3>i7fW37=660r6Y#S^f1NR|;V$S1gT}1Q5E59XrDs=SL z&ZuEw3dvvvx%!l3B#AegbrERz+0F|H!Zs=X#QAPkQ2*GEp~VP%L^w!sWJkl`5p*up z1_TF1qSK~pc^d^ak3P!d+aMDmK3c67I?sgqVgXDq{oRh^QSc)3KHn*j7W){+IDl6u zk(|1gq4gu71q`e)(_QCZha2!4&dHmu#LdWiBLm6}>K-mA@o#YAsgr+GbB+ksT0}0F1RqrV@?<1s8D>e;=1p#A{dfta2vnUKl;OWlOUf9zdK5 zO^=$eDjwP!2=u;^Vi1Xw`cr2px8JOH)Ps&JdYC>7?i_<0evHVKMAtVS-vY zZyywi)ntW!N|_%!WSs!@Aq2;Otp*hZRQa+JM5gMH2St4*=ioIQvOJ1}NU@sCF*hbw z%i#b7z1g-}3l%$hGVlMRnVFcM>1quuIA9Q`&|+wjhDnG;+$PNxg$1>SX@7_F*M6mx zhz31hWxoiO;zwMtwT~feRt~i&Y_6>Hg;GqkaJz`{194?Sh1+WU8xLWoNy-_S6m^cY zh$$N&%FYC4N3jp0l@#kVY7H2cUS*wnFpLAk{wP2O5t9eFNdlA)+7N}0KSiX(XuyRc zvj=476k^+2Zujd^sJ*mgPG$QI!l0;r;f`(uurUOku-#`sR?xIsMlZBp-2eYtWN*T zxbjxzLTCDym&%qujRDq>wQG&4y{V%CEOGwqf^6qNi*m?}CF-`H1PXZN{du$gMrGrk zngAFD%KMFJRJC_!J5?h}sz;@w;AzLlY!pmd&3os81&d=LLedn&JgGzw<892(ede(W2J*ob5nIVSr5FJJ0|>ohutTncW3$6i2|Uc%|R=j_bzW#+W7fU8O}pm zSvWZQ6_lEAe!CR^H4JUQOQ=+9kpi(nIRzkk6<)RI z*tyvwUoVtK4`>qPpZ`jc78DK_8q<^oIVBaYO>h?tYgY~EV+j$HITWP-;qmKnw z#|(5yD|y@+6!sVKG&jAd$kwN;1`=?UB0fclHT+xzLQNbe%N09W@E=IoxQ4=rZN3e(Pw{7Zsgm06 zmKn7^JTfpGBgk^g1uMNu2GrqAD;$G{uA#FCBet!8yLMb=^WipUOSHU$YF%qOL<<_$i!kjp}a7qBv@G8X)OV-+Bq7 zSWTPc!k~&Ee4^syjbpN0Xk2JB7WB-A%z>R(vKJ&E`3Y+T&(;*T>z-JsrQ zCRXh2EtNyG%$+X60f^s>Ew>{#-nkFQtTX@@<)~Ups@JNz_q{#)rpDQ{q!d>>$ej7e z4@LM9flPS)iZj>uiDs{CuVSKe)u!5TY9_wV-gyOt>cyZ>Ygw8aFzVL?M9J(Fev=e` zWVPJVdf~*vweq_^%SK-Q)2yBf8{RZ%`Y; z;o3i!M3$)TWNh|7!S>IV4!(quQC@PkB-Rt66e#;n#HTgjw=$7#6dAz$eb8Pbm158L z8;6tlr$^rAJxc+Fgt^+;n+eDQgux>%>QLX`0G+|&?IxI0c*RNHULeni#KBz}Jq}9v z`!}>Xhm3j*Ryh76<;7gT2gHTEN~fLqxd3jBm~e7g9f$BJ34_7YuDH_~@a!WBGrx^x z3k^w`CD=+*r}2)JMv51Q%Y~lp;?sC|0p6Umg3LZ&2RVQ zBs0rz)X*xkSJ$NXH%SnZapcXUE7i&`4Jt((hkDd!7hnDZj4DW32^m(;&y_*EGe^Zs#KkVnf zKn<9Ni+;X~>^kTESJ{X?ZM;1o5%(opdC&$@fz7)asbegl2s3 zE&IA}Ck@i!eCphuLWX^inCz{jV^%r3Js+{2<;~#>?&hSmbH{wfzZ`_)yvP7ch4N;| z=6&p6=G5MFH#ae#PK3_{xg6s_<#=7+{acel88%*Edr(1%;y(|;_6{i;5X*awBba|L zvCVdJM`fm>Q>SQg>CrV_!P0*#l7x!CMJGGDu_aRv+15?e`GP;}QyfCN+sf#ao7XuM zqO;hR?h8Ya{#)~vrL)G9IK7*d36^{WUO|EKz$=w^o4%EcGYz~-zpx3o8=m^1Ei#Vr zw5Ot;Px{C*xF8;~;~xbra;)bPhth=2LNz$;lYuORXEDv=Ja=nN*qyv<6A34TGQ->j ztC7f_Mp6IXHT#8&i92_^VR7VZhh6U`1ulPOGg=K){Zyt%NFksGgdi&7R(@FP{Lde;gnzy=JXQ9P<<2@SXFxAPt?Jv`SDpEk!AG*C+V8psvnk4f_gl~6c~~Mk z_4_{Fs?<@4&o+kQO$31p8J0m^@N~9`hAobvnQxpn0CkY;S^F?OZP^Yt9EGC5r$WMX zFBn}-g-`C=AXo0gp1fjCdU4EtPu=&a9e*jB#$5fJ7pRCIRaD_V38Y@hzJFi*K_t3r z-zzL1aoiy$;|q7M(Hwi^w>ZvI@pvE^Y0-{9x6>_5cZyV|?DSnD{wP$jf4U9*`e%cW z?+`}T9%_GKxGD6gdcl8|Gd7g@#yVI4hGFdfsg?K;^Gx*#M_i_2u0K(L)Aur(t`WH( ze<&VYo!aL~aj3}nV8;TX>arQXw#RKF__oJtQ9Z=}vl;%?q~RpfNPcxSqoqwjR?lf^ zd|@$|iH4;;g|wgyvpoxZMyggf@?Bi0V(oBzh}6xp(cBJ^u?Js#Z<$$7Ah}wp@N`>WoLsXT5H5ez^pE$?0@hJ^9S> zJgvEzw6mtnMAELypEN9ieaPIb(qLy_a=QzEhY5p1smG&|uLk;eRz4-dA z?_=HL*QBD_!q*-{oso*uFCJZV-{-sioysSLzyR!5O0SHBu{@~as01CF&)a~8pjI}#Y^y%SQ3BkBjxHG30j|OxF(Y-hSl_U{f z_R$2V-@zq!TB5#>9#XsS*7PW(w(LH=Ij?Bnf#0WaCC=0Gv~^^aV2~N2GfXpSeImId zuaTh*l!}$(Zok}qqxMj&{}akV)+gGe&*qdc?B@sW5-D{qxlOw2bQMNgA|-WV^z-a1 z;4b4hHJS3hR}Wm;TFZk&O$`mn*k^|Q-LCZoKHnqM8mBD~lf~lh?sT{>p4NyGStMkY z$Miv&sGV*9ns3`4Yx^Z3f5WoLOO&>mF9$^Z3cN`+iuL#O%3CDky?n9%{sXPV;a)Qf zDeZo3SOE0^^=OuPC%;}c57o1Oeu#moP&@jsiX3j}WAk^X-+4?H0Go^W*Nt9Goj1ki_AhXP0u5j}~wlB_r-PmbZ<_Wsl@u3nzZW5Zl7MLc%hh zevB;~ezTA{@-)+`>?eh`7T>8&Lmwk{=0JO-qqOW!NALhaR5zKIou&|v!$I1DS1T-h z{rDwcVXfjf$9XcT>Bb=xnh@)XGkxrN`S*SM>)&5rDqf0bC0YIXBwz93x@ez#+CX5Q z(`1Cc$=hp&8LM13Z)sXREGARNtFq}YHrk$M75FQ3eHN)5g;V9m@6783Hhnxz^_IzF zcbNMUPlHGcho#V*5ZHq5By{AJmW_6kfG>GddI4lL?{Me<$)pWH97Tq9b)Hn~V&yJ( z2R?gx@@sLB-)20F=8<4Oh5;smKo5Oy^*ltL^?#r^(cC4I7sWR99gSlPBw5&)#JGj_ zkYz`Okl@T)FRi84uM&w1dz3Nkj}k5bdbtUY^4t(r6otCS z_FM6#o!Mh%PcvrjXWr|NMOz(aJl zli-~@XOjO-UUUu{iuzN$iKGUoQ~lRc^s6qWw<`YFTV(vEe`B`T!7*YD!YcfB1JVT; zmt&TtwHg);_P9?&k^Y>kt@}}zf=~8OZY7KOtbds=nLkwmvbn(pkCwZ{q8@GQIMGWK zMXIv|zxddjQhL0Y)DuS9w0~jRpX-oq=by#)!s}6zWKxj$@#ou5sZkiY>v(>N4{zC% zgQD%`RZ|z3pkB(Sl};8fjJo0uXqJ{Zh_|FFUHqTSYW-j&E(6U+v>tZZ%W_ucDG{wQr#rggjU~6#-GtD%`xf*_oW7g zN(q$3{CfRi@#O|mHN`wb>5=z*xc>T$k|b*5$4j$VmK2_U+x(T4~< zlT7Q>;wFJ&OS%Qqao;$X#o!b4s7DQ~GT03i>4L3~t!o!Sn%_;4;%5Ra2_1t1T z^;UZdd#Y-*-%54i&?AA#VpcV06D^S{7Ui1|`r$h2J7NnC^cP-Wr)dE;q{rM1EbVFF z>77sC0+NrYlb42{fBFN&qQ_;~D}5U$Ap!!mU9`@1sakA5zP1T}4!0@mB%-*x$Er@_ zBK2f$=F>RItMS`?p39O^3F zq94^ERW`lMA+jVGP+dlmWx;WP9faH|n@?Y0( z+?LGAEy0>zad$3X%+ygBtd2OEuKEayU4s;J89NmyUwn5ZTrX}rpTB%{D*m&SGB!v3 zKTvk;7tmS~wY8kFTK;pEPOGr`cK;`B@lx!#O?FM9i{dl;D)xQu$%#1ifW#jz>^o3oZQR*NR-vn_`@i=6T|f1WJ_bK|%Uuw%lhQH9qpn6lALU zLJYx3Uza%#Iy0ar(BKmE=Ga^Cp`A+O3Jt4ZPtP_M=WVbwnmd60>@xMrE*8&!{)y5c zet`wGP*ji&6t;UmbS+t*%D=CiwIcOWhPkKLqk`@tO6S4-k|VWeci0z^4(|^i0~7&j z?&i~(ms>S>*9R{XK0aasad3b<6yhQJ{r`jmb4Gpwlr`m#7TIRI|AEk&p|)2Prtm}Bg z1f62|bI%l?K?^@=$V2->jnCgVS?^2S7FkbhtTO`@01G&Hc?#<488YHJcOQ2Ra4*{U z9Lezh4VpMZy_B zwg{@v+3(x%!8nCUoX;ji@w$&f_5IvaLmjp?P#k>^&i~i)6 z<5RYfey2gvSoxpc%UrJaFJsBlQbOIl)5a$kLR_HyiDx1a?G90-UHw4XY1^+h~*}h>wGe##;008o=6Qx%QR%VNPl$HW~6b;WZVEX|ba0q+&4NOlnNF-hLkP~+utND9&{O)xF|QBd z7=5hTZ7z*QNL~;Nij9(5+0+0EsW`(M=QKWonke%TQ6Aww$wa+mW%DQ6d@G#src-3l zUyoqCxS$XLLrf z#()zRaF8jbp{4FwqJsL5*HSXz$fNSySC_)=B2vYvw6>ILWO=gOWw{`=;F~y}4HTq6 z-M@%Jb`Bj5cw?i%Ts^e?t9jm+o1me!!pDTmzu(&Xe3cx>t-~&^nk}z!Aaq%)*b%`c zE%ffrCS;wszJ#=$t>bd#WQCh5Gw1JZ16HSbep=KG4p?-?@rUkdp%y^&VOZf-@+kKt zK0cy1Z^S&8K5$lKZ#K$Xb*q`-J=rN#L3?lIG~a)z6Z}OkMVS~G1})TX)>LZe_;a|2 zVKmZzuzXkqa%d%GE2C^A^6ZZZlVxN_Y=bk!gwftLpk5<1z3v9vE1L`u#oFGg-%q0% z=-ike2)l3Iu;L3|o=X|B;g^n^ZIcGFM`1o#;K`Ho ztV4C_hCR{_aO-CeYzVBw*D0KmwRKf>qTLvZv%Dk*{{wM;Bg3jBjmd4|h${!u<8!+0$yQY-^Ng z$j_$B00ST024S^g+npCk(;b%3f~A1w{CUa{B%w(`DI*+t+c1ikyW;P~9l1X#g7vD!>z zXz$Foh{hhY>SNEzNo41a>H;@J-BJikmyr+h17u%q#o&mDISl0Nv|86CaY-cx5%pD* zSa7u*jn2TC3Gg=k^gb-;`8!E2!v_;QkCDvS+c8?ZJz#^+7&7vnmJjka!mb84Hb)JD zWv%7%oGzUksJ^`B@Fzg3R+sX##OW=`_EFZ1K-BP+IO6IyTz1?*5`Wq8rbk0GUWVQH zcuaCCEF`qNIb+?Tk-L%DN02 zsP3PU^(ajx#6a3t+dOMUK#EF8vY4Zt zIP(b*imU9hVOre`Z3Q}>kd95jZDA(ABDe4wZh%)ZGP6}M$4*u+)GaXw2XQhCk zj1#=kTH@@qVj@#*;=1}Er+1Pf_@4_IxD^&7Uyop7d~68<+H`)AST$hkX@$9G9Rfho z(?|S>otyRCUKT`><>i@NW<3uN5`Qkz=0!nIOu_gpV_X&);;pje8irOW1bcbPkZuw> ziPeF}aQQsHiz_LRl=mJ~{Z}o%6TdZIRirdOlfMlm1Ic(EZ7KCItmTJu6#@8oyb>Rq zDqIWBG!(H7+5?71DUxUw-xadV@ora8T44BqIIE(709+vowsT={<7R5fs;{`@5P

    dYm}Ddpa`x;q6~i|FTjYU$=hx)mzZ2IfRg@P$wR$Py zr9jhq3!}~SHa1t`7a`7|`%5*bo?hY5$J1RPmzhfT^LDt`CF3Ni3SUb1;$XE%-Uf(x zx$1~CYZtNEhkHo^YixCgv}Detm$tO4Lf=re(AkR3RcDJ1<3=!Zx-qI8s5&k*l&K00YjJLCIC2$s0 zx27I+^@9;iKI3KAC+s6Qh1h!u|ADLvHdPLxoC!%8cR-hi>H#ODQVKNgg-{<<@+vG} zs{b-RRWR8{;)Gb>`sE=LLUz4DZZ*kSpvsMD`@RFC;Y?VeHbdISzH|FL5E_^ax&3!X_@zw@AvzANc~ckDKa6xA`_}FKcQ`JP;xpmOveM@1htbE->w`F*3TAhd-c$ea zIa+bY=ocLjRP`k8E!6xD=ZJB1z9543PY7YIU(wmx(&W02I6+`BYTF3H;l*_) zmLb$}k^*r0Do=SV97FDL04@o!AYkd|`YeI=xIJ2=zV?gX{7DDsctB#jO!9Wk?gfKi zM(*j0#2MR25N{v}xb`%yr{q>WN34DMvyLlKv)$vY%?yE?>LcqZ#y@A){{U;k?HsO; zhsIAF=iw(jeK9APGlg{4LLX}ml=XtFDcsw#jkDlv=ZY;iwc{%`ZT-F4pe^;DRJJ+> z?294049dw?i1{7!;Y-us*Kh%llf3V~tDbeVPfM?g*4;DikpDm#l9&PAIChW&MX%*E z&~wyPhRXsXbw>I2HSbk+0wy__2ir`0Vd;Aadtdn=A#g23T#)UexJC!rR1agPu-}%u z!U*G8mNr>EVIHAw4m?{66TMH{zr7LgycHmyw)_Vpq1AZLsp#wBN`P$~1;F@3Do&EUe+iNSbSp>n>;QqcBR{dI% zMi}8o^h}_Lw8lp@%T_YPN}VKr+%|$#o-l8_;YoXVEoP^HDui%mXluQ_>sBRPnNWWK zB~S29er#zE$Pg;~_e*Y77?x@)!Lw0D<|`|w){Al*1rcw*dl)&~{|^+F_kyEw|3-q- zG~NP!gS9KHE;{yQerbc)HhJS_h%A985iy(|#v&!eDmH31hqiBYa$^q}>3W}hl^vfE(#r;xg7gqkaLQB-!*n`~q$v-P! z*(%GYh4sDJ*LWLfuPbKlt$JNN(0nb>Z7VI6*e-;=auh|9VaP})pLHgDaX;o0XtNU6 z(tKEyK~U6+_f-7T+Bhu{6teN*Omi{*@*Tb#&Q9W@J|1<>v4D+9h8_mdJB(=CB+7^> z;54lRBZ1Q&ZAhKdt+!ql00ZIs%bA*Jgng#K-DY5H*9P@j{wP#Szf`N)cvI-P<%^^A zDq)o4r4P_pJSSnM(_x4=x^K|a`on2%K|)cCdh-!i_e~z3+o>*(r!V%+W7uv5ulF&h z~$IaXKtU#NR-PoASC=|g@(3Qo6fS#8*Ml@Wj!0NBEw;qGahQ_ z`YD!ay?OWedyVNAca|^h4?#V;^bG&VR(y6wA3uU^{wi$)+~oau&A6^HSY0m%ee!tB zctx8<`o4>-mYCCNm_>RX8C=}GvFU10JCl<;Y9h#_+{ajZZyEbSPs;gEAzr6`m>QIj z{DEd{_q4h(tqRtBJbiH<-}&R-VicUK%q$$M@COpHm&3hkW@xsU!Ig90plF|N04Z^G zz)7slA6YY}!g)!9iM89uITIT9KI+J#_i;CAEV@$vMZNozXYu?;6T! zGuOu1wEyB2jL+}3uHRo6e6xzd`Q^8dlfC|1d%RIFu1e|qT5+{vaV9|PhsrH-HM}o$ z@9H;v|0?*O%i<%IJ@ntXW&JaS`$kj=z@O0_v{V70=Wc#Han(uXY-z7P)cXB%RmbCb zZ_xkjxz$00Cy*s&DOyyl*%cpHcp6D=fC?<#>e$np3e!Npu}gkD|AEY_O(jz^^WHx0 z`@Jnk-OKUh^-~escPX7(Cj%ipZ}c0s2&LJ)NUpW;#=%i0kLVbGS^1S9qsbz`COoch z$gk-7YUIVP=8#d(dV}l`Mgu3Ix4HkBaY-W+efNXoM!fXW=z70*J5MfZIN>fROyPL1 zO2!NO_wJUPf|+ByOg7yoO=O;M{vyuzPtw(!m$hzfVx@(`=^4{TdHwtgq6Pja;gn*%slClj*%wl)2{v`a6-GW-;7lK{1zt40J~Qc2+Yf zY-GVrva|v0V<=Lo^YN55qTe}w41j~F;*iQ11y60NG>@Sh7GpH-Ss!94smwT33insx ze|Qr0NOGB6_YRO)cuMh@PBeQDBx#ZCs`))fX-UzyF)@@d;4`&mYAeuE$AhJ?yvdB4b{pG#>O`0cTY35qsIB-f*h>;;wkx1u8jo-40GO zfW&&y?CRHwm3z;9o^La572it;E{Zgxhdo>KJ-#QgL{u|#Hm{HQR9)`eE@!PNCxubWRcvO z{*mkA%={|!VjIn*)wqy+PyHKfa7CVt!@sn0GCy(^u>k5jp}ro*<0c>-gMWi>=qbs2U7;8_F|P6Xm%wN zI8ScBGn>svuIuD*&__HTb4o>iek?d#l;3~o8yOThnP$o+bzb+CV&_f`yITiTOX$>V zVU-i4I3_gk&0$oVdD<`%5pRT8vQpx082_?R9WL8*5#qA+7aad;I_zlXNoAk*Q72Mh zDGj_1uMg(2olAd@c%q}zfw^J$HQ=?U{8wAfXdF&qQ=U;x;3Fk;cqpFpJ7*c!=~X8* zM0s(rIZ<1Cd>5r(#=9x*aJqOa=WxrUAnMJ6O-Lw1!_B^LJo-DuZ8x ze@4(F7wi$>q|p2-YxN|l-31jMX?aOV0x}ciWd`R9So^c5H~U&YN7_?4*ZRJb1f#gj zQfT3Lef?p@5nHZVYw4l3VTv`Yee@!nCl|D4&+`dQo9nWlqiyP9{1+%>k9l!lG}r#g z5XBz+HF%ne=Zjma}#qu34@C}xuigV9qX$cmJIkGr4vq1~{T$7&t!+VQ{-QfIX~Q2z21Xrhs=M5{QKCgXSj@@J zEo2Z!b9HTo9EvP`wx>pda0vK0bvP(kl^dw9#=ujRxioa|y2jL&NasDGJAoWBs}R1C@y!H)`MMT*&0RE#EcV5!QiE z!6?gNQlqz?7xS~RJi)Ru=0+tHkZq*Rv~M0u!L7-wfKhBzx`m7J*bqHEH8oI2CY~Q$*)+VrjaZTxhL14H? zfE|WOUUOk^me=~gL?*Dm_Du2d<61;aE>{e~!5uZoB~e&=R|%3xpjbDy!4IAMdPU+9 z;fb-Kk>x_7I8R3TUrz1GBJ$S4F8+=3QzoV-)*$^t!pJd#LguR8qpP;{i1|q@1 z{{NR|vnxEomer@n8Y8&LZ$K?j?k~&b6{cUypHkHkm>01%DezHfu(x0H?Xg z8UY03KG`_1>oOo;yS-Nd@?~YTbNHlAbpsMfJxW>oGNWipba_ zM6t`dNz1F6V*Gn|jtb6*73Weiwk%!%R1bu42~3Y|5IEESh&C_?zu{Ij1_h|smtx|C z6ddE(MGijTrFJql#F=baVrW4BxQLR%eN|KrAd&xk0CA@HlN`3AMEH|X1pweDz=6`5 zg9BloQu{# zul@iU>m;eHJsWGreuasTg z+H}7;oolH+N%@ta7{$9cm?{<(C3bqGSkun%^^}7hqSw|3WW>-suF#iyI(BpUHNNFo z8urbQe`=KB2L5)#=3XQ7-N1qyF+;W5(jBK^xV&|sv`ckQls17V>QAh&2ekCv>y2u2 zN*@w?E{mQiJ}^+F*GlagL&_ffh+siVYCc@XhZ{cwU;H(Y2z@rZZ@rxS%jI#y#1FIs zH3y8N4XQt}T5&#lGkPH1rakUz$EFTY52uT0Xt{B){joq0qi2r+*y>%2ndpZoKnAM? z#oe;2R@daTNdjiBRC~odSqerK1((-SFnS`<`+}zU%zLOM93xiW^HZtlGwH9Q%x>Ed z?recB9mhZM7SOdKE~Tx4nDX_cUJmu$OrpSCL_lKCCO9MruWQ$=_MR86I6xKJ+F$Vf_ z#UdlWiP2bw^{C511?d<}d*`4ue@ACRxi;zenlvl3MN&!>1&Q1rf{ffO=*8BjM;v?p z7TEw}(L^1)cC<*V%G=CAhM9u%&wOm>kPVp6B$xj&@H9JsSlE1$bhxV--6kl$@@M^~ z!zl@H5-&;jTry*YVCZR#5=CfOT={jC1bb00EYNTVEFRBF>8qNB5G*|%0^JHE3YuQB z2p(~?&qDI=H!D&!V5$YL0A4RmE@iIqI-vzhJAJf9Yha#@%j6V(l{KH|8_v zC+FM|iuxR%0_l37jsYG0a-Je1g$YFQj^2LCG3(mv`EX_4RnFhu%WQYpytmJ27s!?8 zAa19tEh1!e65i|meq75EaChtfE*sW2(ifLjr(+&hJ_7H|lc%ZjQ$|HZviameS1&?@Xy`;dg3(Wu zHpL~AHwCG*TJKT5b~d8YPWm53XC2n$_lEJo=#(BZazk1Pr5l-)bV(>FAs`GSr9;3m z7^T1%AdR%7v?!yb6_5!iF&ZT$zrXkQ_pa@_-fQPQ=Q+=F-}k5M;>F!PyptrfkRR!n z#XVlRlKQDq%G%MsS6vP~BpPPM_KHWc@knd}`Cz*Kw2(sb{$qx~qj96_o;CG&Q=R`n z&K12I;WFE~K%^JLLL>BL8w5YgI~FB$1NL62(1JIBNQrJ!SjnY$V>%OIiwd7I8kV~9 z5U7^wcP<=mk%vZDWSH-%UO`zOVd_$+1N?GaY=%)7040ZNnf0QbH0BncD{xXui z@?ey650E3`vomRHjRV!Sad0|LLw*;HEwERXH4CQq$;xsjsKYR+MXdf(A3bs$T^O7k z7!+3OxIIU0!YH$35WaDTspT~!!-L%p<#4I7??6L;hH5%Rvw|7QBN-a*e%D4|X=z{* zt)Toj^>2lHO>eq7M0Mrzv_x9Yv?viohg8Dso5!7qxI%CsWnV?73d~9t?||YT6(xpm z9)#>fGa4$0>S%bF89Wqce!~yDe10*(=W2^=$h&mx2FzM zG8A}N8DlxyV}z;q)?kdtoc@h4x0bL_W3oTWRe?HR0E_kbKc@`sTYFE)7z{Pkaw^1O z@LIowE03bRTN+MW<)x;8|Lesm^uUH+G!C}FZy81#Y zmn2vFuh?@2)%LRdBtL_SKUolm&wdLi3n70_&HiFcvBWxqf3L}Gw+EW}!%W)PSZNyX z<4|5ZW7V)7%R^fS(a-0HU&(GMkML^`?r4Bpd)f-&3lCr+v^CTG{K=OKQ9^6VN7pYV znyr-2zLYx^yd5<9`pG3qVdd=5VEBah0#Dl_)VmXkRE$!4<4JR*S?$d)4ynAD=a#>U z=+69{HTcNhm9T~|8j0}(I3UJ3c@I?{D9TPfO2%<{fN?+1V-2$3ikl9xoVkzQAR^Hq z{F6_wx9+ijPkg5QkW=g+EmmB$bNRgBd#b5@wZ`3N2OYJ9T3#4Vk`k395NF>w(9^8CQCl?};XI~N3BDO|!f5LERr=B3R(2|Dd*Uznpil*! zV(gVz8Md}r8T;^7Y1wEYdaFE;2)}Gs0d1-D-29L)=dDwMnUNw<$B$BO6wlt%8T0^CJuVU2V z&gyl1t2Jf*z&M)@Bk#YU%WvEL9xYdzjv7xbQmlS{gYup|Y*4yKb`JQF8i&~DDe4FXz;WcMM)btWyHllA2& zh3v}Nxhd^d`b`aaCx*!(*W>HAg%7EU@;kr5iLgLFe8qM$S@R5P$4iDcA1M!Y{=2_z z?lKkHQ11Rxgi~eifU3~O&I{*&@GbXUdsXgpbtP;&m$T$o=&H$g8`Mh(&Dh6p8)P>% z^1T^Bt5+21`-0SR@CvGB`SaLnTw>Ucs7oq2Le7P0{AK9VH}-mg&6A8`Fquj(D3JK{ z7fn*;_N^sBcFi(ESE6GLG7$a%a$06ko8j0@LVs%yag7Cqf+%}z$bFXcP}RH=(T9F1 zJtNVZMnxPif1v1mN}XPDrNt`;aQ~g){e&CLJXHfuh&c7$8zsIFq&YYxu6K)Oo{ZEGMA>*AHj(zQnQinQ4TTn0bVo7M5Lp20QVz|m zrL&K*^s9g${%vdeekG|{z$`b_n){rsV@|V$Ywif z2+1o4;{TbCAg51l`E`C9=t4-)LAZYuSql?y2gDZd8+5FOqu6xGGr{SM26e43{Ve=t z>%y4vacO6M6b{w>eq6TP2O*HliU{YFj48#G8w2x?Xa`&j#L6L%AtGe?_={2_w|viQ z{S!z@Hy$MO?$0tEPZ-_R-j&A^(&C3v72^l7;gp-Cc5j4yxT41x>zbkC6=CqzcFR=* zHySPa&Gf3mD8DTuv;8rVO(cB%O@K;V->~yKpI_g_;w#mBk+Nz95h2Hek~-PbjAyqd z1{KM{l`4#dMfbdK7)m2M!fZ9-bh#8MHQGSbe0#*1Kl0nDpHjZ;Yc~~KGAn@4?kkIk z$YA>rM|5m#n&QRzw2>yfMv(n-_|W#_fOgYoHs425ZRv=x!|~Q%mIVRMrg^#-3iML) z@Q)p5ujn{vy5t8CzQRTg%&~_1wwH;e8J=HQ9ZR*n>*hlP09?nW`5Q|&(?C6`Z!dV2 z?wZ^vZOMGB-b+~on@!c@t2JLh1?(hmZJEgS>{BmbnSlyPMUkeqL_|zX<-rF|9jc4C zuN~1bR2%KvXf?%@WaRq%o-Q~JZlD&#O!NVXkNTzi&HmZeJ>xL6{MYg%PxR$3?Pu^^ z*9Fv?E_7GrDpjv0e^i_Rm3#6%4qeCnk>r+*)jW#+JsKf1HaS5zfh$h;q_w|Z`ws+4 zu>Pdv{m6bsZcIT)EsRF(PU+pza@M>?@6*d83bgi5L98o5v|tHDd#BZh(f{GS8Piy+ zEWx@0r$<7fk6?>y2@E8hu0+rg8H=X9eikB6|H+}4UA8XAF5lZ#uf3ryN|JUyhhtcc zo!Up|#E-42EmxPp_q(stqy2_kTfA7S8RJNclDr&gOq-v zEijD^hUH<9mcoNuSYJp)6{1nRci-ww?V`?=i^-)?IY<*u4jJT0h&89j6dtgg+Qym2*tEuR^&yAKOVR5 zs9BjSQMJaSEFIA6Q$4550*G%m2GWt1^Y1#n_(Wmqu3*pjGtJb~kINA+9zOA>>PA#I z3%R%;P~>l=)Km%Vd@iYP0MD3d*Re!dhHVyiy0!7Zf%o&Av}NeY;Bs`qSk3dw*PbSp zUN0LHK%?(v_$`nKP9tqHhDeltWh!GSQi{&|-oBh`k=L!tbo6yQL-~w`>CYWU7w2>Ollz zy}}tniT6|4Plj27Z=2@zmeZ4+2=C~?Cy-&;o(hRWcn~2gD)IXK!(06cSEB>M`olziL#4LO zXT0MzT5@GgErV%M0`b`fmu+^-ZbGeoc))dvKocqn$q&%lm=;xo;?O}|7&x7yZF6Gz zV!A=1441DyaOwqCW#RLlqvk#wkhEPmH|=^gGTt$fgK@~zhmgz)`VEoc3LDgKAQfa`EoRqpSm_C2f+k8?nUI5`om9QIIyIt)gRYXHVb44*h z_5-%DoZ?$@q;oI0^D2$iM7i1lc4b|`8J%rd!S5%xwJC|3tc)5s--v?m`4b52$M@`} zcga+*_76UY#;A{5ax*-biPpMjY4avFD}~Q2PQku--$wz&GI758J#6c1hKI03kBL({ z-S1UKDc+F~4z5=aZe56KPrgCMh8>hWW9iv3T)q48#t_dFan44d@o3nE5K)u+ysOr$DIGm~@kMErmTos%$lR2gkEgip zbVEe!@kULEx$8`>Zst4N64zph$wA$QGKUsEXygL#Kh-l6~V2U)Hn z6MI?l`ui^v+3If>EN4g%l~PV-_G&89SK;N;tVz4trP-r_jvT0R&06DaULkqP;u~Eg zo6}1*)V7Y7h6hti--aysbzf_&i@NyGr~B^$#bS88Sa;d?F*gaWy%`aA3vT0zkhh1uqBP z=nmf%^h%|g-gxF_X8u0m18Y2-_6`}S9psqAJveS;V7~B>-cd|Rrv!wd8NUPF9phRb zW2`(OHhXM1WPK|cz_a>&{OlS$AFRY^tVlAm9BRA}I#=;U=;;p2LjRpS<#yA4K|CMh zUUV=0wx;(Z{xPg;i2gq72)um6v~XAZ#~j?jZ<$YU+$C3YBuY?}RZViL&c7`tl%Bl{sJ*ZGUSh#>Os( z`&%5^@V;v_cc>p;Ug7xClitkZXD&%AqPCwLxF3NS4gQ}nFmo)|{U%Z>G3B~RUViPZ z!*XN*>d^2P>tbd48m4jBjBlB!W|kUhlVNW*(*Wu7rC58)=Rr98gfL5s`5%++PCa~+HD!0(x}J=|SA9Dh zh{0gT#kZA;cHqa<#Vw$LFRJ_FeiI{dLtT9r%rs0}bv} zjls%i4HIR!^({~ zz1J`9wF@v;8DA|gi9A2VPC0KVr;L{Wd$saaJrtwFo+*Q*1Vw6D+Bdi5Q6p(7gq7R? zcYUa_5?zReI_;s$LE&F~kN@t&Clz`6PM_Le5NeK;50B2x*{esWvkle7066T7ju*nK zAk7Uf3^?mb1#EZZJS#vg0QDH|d_KjNcG%|P@M3=>3~FpqQ&_5rO87y-N8Hq~WQ*{w zj$Pv^xb9Af-mhZI@=N#CTWK2$OQxxh`z0IWM~F14s{x&`ohmw`SQ4N>>qL)ix_<7I z9lpv&q%6F2cc`0r8z+%H*gHsB2+U`GJ<6m^v%~uL9=+F2agy~)rS#Yx|GHG?sXt2Y z+_ty5r9<3|*3lHtOHkx3+}z)OnBt@3yL9LA3e?Z^Nm>=>D{%Y@TA1t(yw5(oSK)r@pW%!>L(s#G$WKwMAYIym z%0h=icCP5YeVi}}Bb+X_z+kG4x;-!jkBgdU=DtYkM0Q9Uy^4#Ox8;Gf;vlLkSt z=NHMh2VJv-E80x06fWD=v+zYEXlV^#h@zxHgq6cmr(UPrE_M}@8crF*yAx629&~R% zfEr2CIJh-Wk5no+i`+;)jocAQA6AE6g$(kJ#oG9GS5L_=_T^FI^271m?sBmE)X^QB z3S?pbfy~t5hE7&|Ew*3~ZjrdHVONUCtYxw#K~n4!Q;k9shF}apFIG#T6JD(h%!Ez)F%S+SwzELaaAK#lg{7vZ~KOYJZ?-;njf83e+y?eEOR1a;D6l#0yK zQWq%?Le)6J`7{N@Wzp!1kh%^j^_$E3L#e#CyQ}5sly{%C!` zwFitVTDwf2`lsYr8l)8-0e>7Y_|kjN;;6^&D+kVKyCZbGYm_N2A5|5Y4%7_5)@?W# zNHQpYrp_I%(zS`=@S_8b18+8r4TMR}bfW}@MtWXmou_L?PLci1Ao=`uydMU$xy0>Z zX9c^HC8&ykI0N$Gnf7=j-^?1!5_VI^S}A;4Ba^0d=D-HYo{a3vQ}-azV&@|bY{IiUOaYlxGkjaMtV zqVXMnt|X^4q*Xk;!+8Q2q5{JagD>bSx z0D^9XgNXnl_t^iZa#5`N3nN~jRfj{|;!-|H;Vr8$KFTi|-33JP2*{gSwDT>KoKKKN z4|(S$@;L)$z)+_sn5!s)GmC{+^zXIu(*j9aQ~}VlJqKT&0Sm>#&L-*9TJ)gp6AJ6{ z0><;_a4?hfcXYU5-R)O-CE|h9gOU$znldsrJS8nun}bK-P4(fuLbbOF z;(oZLcss#xYWHY;S$hr3?c?`w2X(t&fiW`Em4%dRnJ!1L4BTQn(1a`D<4+QTI;#~- zCB!$l7XaZG=ii;#C6f(V&#&A$wX?WDQB>TzfL^#shAWc_1_SnDVCho`hf2-1|T zb--3o_ckvOO6!6RU#!x(rx})v7p=Ewa~hjX0-tzUjJ42<%nJ}Q~l(XP?0>1>3nTsKkq zI$@*7r1}QjNw|DnotIh-%-W{+gdN)k831GFFYR86=|fUqBcX;W4WwNfX~im#qXg8b zq^f3>3fsFnnib>`5mA?m*9lQK7xeO1d|?p4fB}kMrm}V1jtSYc%pY~7^-PZ2lR*8Q zINCHAJB8xmY})`EqwuzrI^Af`8(<~Aog7)BpUnXEO8wAxi;hwe3-1R=-hQsWmWfx5b71hK2F%Z=?SxoZLG;=%cjO3o&9AOxRabxI zVK*sIHE%1P@I*q_ar|XCrG~}mXcvm5EBU}9n^SO>zkb0#bt<=Fbn#|^xiJr~_vp(V ziUDf7zyIVYnob6IO(I7)YRa z_s2Kp-{o8~q^A$l;TQMSq@gc1nma|GAbe;0+b$;OM&R#1d>|GxVQWLd8H6y)S9dJu zGH$OwrM&(Akk{;A5Kq&jbkfa67>B_xgzjVNabtz!GPid@_x~Vfsd$6VJ9ptPhyAv9 zw{<&in#LB`zjo*0Z+Mi`2G78T(E%^XtIDb3k#|q?tAq_=Sc$8go48}~&0=m^sRpqa zYI#2F0oCOutB`__Co{42c)W`g!t2b3q2gPP#y@UX(I^vJ@FO_frV+@9zKT3QqR69v z!NnBoHmz)C@X%d-&03*v>{l9IMQNpnXz3>8N0So_xK12+@pHN4&tioi5Q@oMQlB^v zZT~Yn5PUDiSt=M!6iQPH4X3|J-Ga}tI(?0O14V17J@MD&%gnAwP|HekkOmNW8zNn( z>{OF?3NkU0A$?>Fs$D4@9AaCRnXxl#3DjWhc|pbbH<$tquTwnb+BmGImAJ27=jzn% zVtI8U$4_J1#?zhkIKfJHKBj^%ZiQQy?>fBRgW+eqamP>=CsNK$?M^H2REln6cSVe* z{w|^V3$jCZdv^07OhLs|3- z!reEbT7qV+&bR-K>BUHE;Cb^+U4}e-Vi0xBw(ogpGE)0hfc6Qg;b6kkr&K7tM!-qh z-L@sQZ;mS4cb%)X~2+rDLSAZ0kUH`wP!$sauI(q-QA>O)d zXVUksCj3nQc2FpTeBXGDVe4JH&i9%HSyZB1RY?DO9;D*Sesn}uP`F`)&c+m%i0v!F z`|bzw7kJ3=cnz(_!^5t7URm=A^X5Jze%N@GaK`7JH*}k;ppADO^$RjxPb)a_=m}-t!~r8mZw|^F9cTEou2J;m7y&e|vOMnJ~-JOl1*})mdD(6p=N5d`AlihRY>EZBWIPoFDNmA3NSFnTEjz={!<8JfGL?KbtVQiDT zo>kZkjb#~7Z7%vM)Dx)OvJN;mt$M)9p)P*dt4L9bpNn~RSVNbTl2t`!n3JlL%xsj* zX6jhk_q!)(ljn7s?+g7B=h!LNjD3g0S|0-k_kuqs;({%oP=V~o=!oG^ojXzaVBRz_ z;N2Y9bfZB!iFKcgD+rpcq8b+|`ZTDswwZTbUzoj6S|CP_osKOG0Exw>JHi?S`9Z@uSo)_a-);e8=G&T zrIKSqBf9Tb-h3{++6{40=(E^AjFc3$eTqr$!u70*52*~^MtmWJ^wHxD=nnjsx~NMF z9~zc-9%+l*a*XMHJM${wxz;Sy4cvCmQ%IcHd?KNj#L~z?5v2AqiekJM7u!nIm7T2q z{q9FkC-6Vj@)x{xxxviR{@NGekHK*P*^QR(&A1Rjmh+L1ODkPy84KE4j!9VkvA%|i z{!68LHgn&RO$z(npQW-M1=XvX6}#GUfBX~7o8bA8iR8+NoM*Ms4BNER5F zm0xYUZ|sE}TD?XUlohWJwOR+cGA@pD^7PknhgaAVs*(wfpsIcnJa_P!&YRCQ2_F9+ z$h{?ayp2`bx$gKM!Rrpc6UVxDc}AMfX78B#<>A9Qb3$FAT(<0kEYxZ?{4d@F5AZ<_ z>Dh`Kbjmbx#@}?woyjZL`chG1c`mIbp*M<0J5(Y`r38j~AW_+N6a*^rdezONlPixOKQcy3 zgKM4~7b$(Jp@o-}(?|!45z;mI{%%ga-YzmN51t2}WEOLCM;D$g{RO)U^2cmcN5(nd z!ktUA=(bA$r*~&^{f8(E9l^Kl5jl=Cmz_9y-qObjOdluNOviq{3HX}?chZ-(yVTXw)hR4(QC*RO@Yk zvx4pudPN5%!3;SA3`UNFrO29!fkPYV13vBBnzz*@w#N;4Ydu15K6}>i_W|hwoJtO8AfX;^k&RXvkG4g%KVQDE=rFBWSpK4f#VG!r`8zkWk;3dVrg?wRCng&;XvOs2 z1+s#7T>9~eg&T{HV+$X~BpIrQaG_{yTN$@ky)dJjn* zsT?~1<|JNW1qba&>>!Xa}VfA6kDH z*fL9}1Q#&`gH!QS7>Tmllk1Ne3r$}lbQV(IR-9#KLo?7ikj*dpIvZtcBQ8mfQXL_S zUSXKPWx7IfBQe6?*@>y3xr(Nxdwtgy*&<9y2Z_Tiz7Li|ROgGo(s$g--H?JrYz3vn zU=AO|wDbAmXS*rniwAXgZ*^-Gqd_&kv|_hrN0>0PMcXKzr4;(ES8Ti}zgL{mt{#sP zhrzMgfK)*nZ-$-fF*&%(Bk;K=uWPJP%~14Fa>|=ppC7Fh*uX7r)zoHRW0Z#IqP&O9 z$vHqg{#Z$}G|*;-X-4~p^e`{w3aWX^Q3Ixw-by?KGNy8YZu%-wUT{3o4A%VqS6&0a z?KoiNltl&%b$4Tv--I>UK|{>+z47c!?|VkMMu)-)bbrTdRVaKtd`vxVU7iXyqbjY2 zhvn)m=no}_R#48kknO25(+v+@r6qq&9fSKFl?MgXrwO`SNGYJKx%pLT1D&LSw`_97 zN`FqC*A~j?fMxVT9o*V4MHTblGZsS%2~SZ6{|M@k`*!CUV-FNqTdnT?bM@(o;m1K( z4gO|75q33?Lh_XLIl;A2pHLF{RE&)D#rF-f*+ zBx|!?&;0!QBL1LX&ahoUnTX50S5`!momt&7p?RPj{dy-?b&SGFt(OWIn{_N^Cvtf& z0vnhO3$?3c^;d{-Psli@uWx7Im{E(USDmw~2vX$U;o*k5bGG~f5yK@~?aMHU)2q`e zaPlC$;S}t+?qDSOsXUwXa{R4hD}7ZkB^Wj3a3W3Em!OEe%K!ksr1)TzNgho3{=^%63ly z2SX?2XqZ#gh(1eTUF7yLFC@q^>-P_P^<|Vd_lGgR4W+-j`z{`2KakImBO=}_VNy&L zUYPoru)3!wYGc_0-#bE&&cc5VIr_FNxySl2D%tLnDy31XE1B!s&u4{c;ne={CQi$=}SeRll_xb^b`Z%;mKGN_~(-D!YgnwVw) zB?1~Ct}a=6K=3&ojHVZ~0#S?*K4vLGXq3l`nWmq$7>j5x-COhAe>Wr~3tBIu_5E?>)0|%cT=bN8%eU8392l}{lMxqTK2+?660g>y4hj0A zz;@g_`dOyx9I4xe8*|5}N+CnXmmBkQo`)$X2NGH0G1^=@{744>-2%gJc~6HG{pmj0 zRiy=$_y5K+WP6*;<)fo6|+23$-Hay4~bip#M+N^j}SHCtc){A{CxLV`iNl!z<;#-``YPhP^X^=SZMxe`Of|j(v-r& zjtax&glIEq%vXJ-sa01mW(ZS1=%iYQ;dXU)&OJn|u|>z58#r1zc4G#@>E@%R6lS5t zLYZ#gax9RrzG<4aTSSdCZzE7~0+jIW*?Za&iTN#+qEwU$edDUwz~i!8>TFZWL1YZ_ zz1#RFV|i>%;!;9EnTVNHl$)B?m9{_u#=)Sfs=6Z)>cE0M0lG!sedHw4KmQuyyCH>J z2IgE_H|sNQEno^h%Af+yFQ&NTz!_t#f4YF%Hwhgmz*X6og!@%wq$kZW{MZqLevkSS z78wsdY)>}DvS;1zxhcFx%SN-~jU zUNJrz1je3JVssh!NQQdx3MG>LFXwwfB$%a5^*++*h3r+H&C zHVuVUdOHz!WX;SIee!boB``CXgG7yVKm#aI1va2C=BSltyb&{W&cZH)(CBP@10|SsTnsKKXi}Dt~yma;5nO%O%sM3_c^vjnG?a~EBm`zBxn7k2>;D} zvkH2HtTC!S{7kqzRF||kVc-1{2v_v@jPV_Qqyirc9(u$|=S~#j10*LDNjhp_5OAFuv6*CDebm>lw~&m| zk#{!$e3lEsB&U<8ApB=sOvU^tezwD%XL->;$`js+lkrToIDX-AT@$rMWF(SU7&blowI};XRbz>t%u~SKj9?r)B-Mh znFhxl!oMI!vp=%Zh}B#2wW$9v0`v4Atv5-f3k14m0%oK>GBA4ah^Z3lnn(YE3t45g zG^--)3O6XcEM%ulmsID~R1pEqead=j=W0l$>^2v1m!#OuWp*-TyxH8vjS#e6It23! zz-G;tWIIvK5cxSWaN!@m(0JrkJhGN8TNBjfi{Qikt|&?3=$@Qz0IpB7g+4IrN8(_dl$-#Coths(q$`9B25oOTS! z@-VE4-`-ue=a`PmYMI%;s%2S6oSw9gmYjBlqa0JooX>7r>G-{V`q@{TCZ%$41!&N+ zJo@00E)Jp|Qe9Dw#7;p7tE3u`)qrhHlKC^E$iKyfY~?MFR!FYRddXfCNy!t?^s2%D zf_4>J8{U&sG^i)SK^jG(fr5tqpFONi$Ph! zyitb?b><~@={xI$iAEv)#^g(kg_S}$_s9LOSwE8-N=9rd|5fkna3Mim0}|Z#g71b7 zfMC$;JL{sE)nd0SE}$B(Z|ErWUPCSXTjGanrFM&@ni31-DwMB+%S!e{1f7LR+49QC zqW7ixf8K;^_-~Al=Z@t;X8b}V%eGdN|>ZSkX<8vApx|x zd1efvFlRbA2xIv93b;0uf@srw5p0>Od)%N?K>l55@PUVc;8u%pC)M_n8>V@#u8uiLfguDO#~_mr4+ln#o?Rb)GD3xs8+{#y8~V&TA{>$ERgrT?$JQok99^nWkh= zy{uxb#vmvIyGrbOIw1DBnBUf?A73u?BiGTX4MCr6mH=7ApEFKX&fTwNR?CDoaOucz zqj8zl(roIVy$7Lg$`McBe$1%$gBPg%gn@xf0M+WQcvky4aXBZkv=U#1@pX^IbDB^4>ZO^na}0zj$nVb}sd#YflcEw*hC$z9 zf8Y!|Dw5=C#pUU2qYHDrTidD=S4|E9P{Ma!o6=kKY*8Y~v z?8%P_Q#>}iC~Dz9hhc*~}T*(qzq8CrR%o!@8-(OVdi;=b|vwU5*8wtu)ZixvXU18-wPW+W2D+ z5k?G4Jkzc@_ebJgj*Yv^0fSc|g+}e1TysFOpAFe9YK5_oqe6_1eLuSE92n9#e$&~V zE;sTF5;G@j5Q1fFeovUInPJmQGmdUrCDw}6*B_4a9j{!TnQz7GJX`cQ9atwJMq{*bIp-(}uhaLWJo>5*v8VYWO8 zLKm+#jI|hbyGLF*I4akQ5W9t-?t`iLqosE3sc{j%bxWchVNv>EFG#k1cDGD};<(~C}P0yYg^Bc+! z30hxww;vUOeg{Dd`>rU|2J+)0`dvheA$@q&8PBBbFGeblzW-!YAgU+^R;^C$44h76 zWnyBan*JCmpL`Llf3))u8a*i3Xztu9f1R20&RL6^TSs0979As8pYbrouOpt%x$fUY z^p4eAz4m$35&dF~&AN<1(OuM;I>XoA*u4i`?(Z|URBRiW~W%YXZ(^RqNQpEt>zB6K8D zGkIj|rn|&)MLo|mIvQ`!2!}o2*J;_U|87nP2mgy%M#@~X3b-`4y*0)o)8}EWD@Uh= zdCw|-o7eu$5Z$rUYW^#JLI5#x`N;7lSnx%Fuao z9y-nT(GDfOLMKZGT_&PGXYBu*Zr~|SLM#W^q49_N$(kP>(Tu#3eJgya20@qZ@G2VV z*yzlQWnaI!-#KFD_jfo#`o=WILPOooqs?7~o?(Q~T74Lb{t+{_q!v`0Ze*A2#YZ5i z>>Lh(^C(r%YQxrYrcQ>5Nl26-WGwiS(#FHn)#L{p4p{{uKQmWRfb<2`-{uvXpcq{|RPQyS;;oQcP3XN;-6}kv4Rea*_O%DM=JpFb*!uZO@#kaS}!$ zbs8GzE?sp8xx!yj^|tpjE$Y{_S+KH%%AQ#yYZksG4c+VhJ{%4 z?5v86MNx7`P=h=ftMS*gYAYasteBw<@TpRIoAw;9YqL*tDTg6nd6@M*cjdM5xsc|6 zW={h##5oHOR}%ct`2%5-Es1x=YA5Z)`Kn8kcMURd{#aol?uaa#9ar~DtLu+6mQn&T z_jOIi6!>s);hry=U%CI3O}c??Nb!9DQ6{QACN5?iipWjgXuop^NGDer67fQND@8nU z7H~I-7jMp9CjPNMX>yXRqVg$uu>w6lVm%S~+F|o)z&>elJ27!!*{_X31HZ^SoOi(d zJn-bY+xgAQcRDi=PAbm9v#z$)ipx#Oj;!BJt;eS{W+F|(pGdVx4OMi;RgdTgw!Y6L z*)#5~ZbaxxhNApuQ7p01UsXbHlyq|(a;_PXBFfYxjLE$m{%(czeX*aO8&CJswfPRQ zFnA&zl4lDhJK8>!ypozKF!gGGVRhY+QS}8zx))eauEkwaVCSZMRM~+@LfH09l*9H7 zK1wpBBdAPpbK@pf-T{)CwavB+^!=nkZVFshN+17p$!woZK!4o3))uI)r>3@keS3;Q zS7DVYx#`=Ezn+9vp5rIM7r{%X(G4GzS9?&jkLFzd;lMh~j4KeCk@klK$iA-Dn+ z#woEBU(H{lMEg4y0Cp)HQ&p1iC~(c3yVIqh3$qnYPJIIXU42&S*fMk=Eq}W@;)I%# zn-qmq@k<6A6?%$~whE4_8KJ)*@n^w<3(@EmGE~@2k0L#m=AC=RG>NZo4kZ2u>KIri z&}E!fsut1{cvlq@;z%ZGM<-L?nY|D45wjs`q zdEl_=`buw$t11N^PV~b8k}nX8ofQLJ3xlb6iuhc;Y5J>x<#TFJfEQk$;w? za;&pWe8K(=iDUi~vXr0;v!CyoUa;McH2MeUad@g~=e8y<7;WFXOtHfuzd0n3-#L1= zclGTm=s-d*<^jKkvH4y^Ik=V@f^TLD1~>rLi*3k%c0As`(L>{X{4TI zf2S(ZoZ`%E`g-w!55lSP=z#|M=*NzMOYK=}=#yjKn=ySqRO)N3D+iEji44>{GX>Ak zB9C`Ht~@O=99@Scg=w9mbdDb{5!pP~&2+n3VA4&Whtrv>4XJsqkAAcy1R+l|)c%`2 zA5g$d=4y-G6eh4@Qu8MMXw*&TTt4xuZ7JhtCbt~oQ~@SMdu_)9RHYS4HlMSv%?L*_+*V)r1+nC-Kv_9~nCSc*QB!V5xRrV@4U1s>-c3^IOw zAYtbgrpu(c4N*e)qYexe4+(y{A-Vct?}}&@WnrS9y;oqTv1$HjwVZdmoIkdmKAYyR zFAv;r6X`a%!MH4`S~AtDrPBkrsIH2+-oBdCXCE7Q%9H=6spxU+LmD zSU;M0#iG?3oH|0K{MjMGNr|C~K?)I9>)QQg&}Lclw!pCHs%ASU5sI0J9yc@I4dXUO zuB|^2K*ZPhi6R0AmxN7aF9|+m{;~V1p)BooXvNa@8#FfZ!`?yuJf975D9C|fI0H%1 z>&BLM)K1o`w;w52QkZmG@|3nKv-Evo=aByJypZcr3A1!9=|RbD(9qZeKG_FQw?Cx; zYHmWv=go{b_eb9_7G}XPckV%Au3Z<+N!~DApUGjm6E(y_p%m)BjUQ!v>6CCTP{a+* zn~Z!S-Twt@1V<02k+LTI`amG^0;^PPZobccXycVUN}ZiICy`HYQ%Zf?j(aqNO+a02*u#UL7-cj>bu$%RYq9R|^J>u)Y@fAwTazqx=m-X~1(S30f}r zo{Ja}FB!X@qJYLg~Y(P5LBMl673i+Ft9^|O8 z7@E`mmzA^#&4G|;r%M}IB)hLta@k(9Oq}^sf>}@G?E0hT#HNCfq-cHNw|`p|1|GmD z3#(U;6h$--j`kRKCDHfZj39ljqfy{=pxgZ7?ygS^a$Q&GDKoBGRR=5Ob|*S|at4}_ ztJAvVa`_*K)jGrdxuUWmO;jM3=)R={6q%y>_B;vWMj@W&m~ZMN6Kk=;3qz*r3Mw(z zO_SJ?>^DFlJV%aGW`a6chLVi2t2IhmC0xEp35IyL828T-#U`Lq)6N3okbF~DmyCE@Q4BnXBTOCK+O`~W3NevPF7`1p z4A}$v{>McncCPRy@sLd^=5C9aly}k`>&h=2Gtebd%_$c5j{*ND_=cPG`#Xjg(F4dZ z%ZFT*p0#`O!XeznsIol}g!A}u=){PL;lmO=Sx4#7o&oji{PvR)&zhoJ^M+3xxLU9) z5;&roo;Lin9$WBnB`}CNWTnjiit;XHF}ISGeS@4O83Qt$kOv2(`MP&Vo9SqP6! z^ekYN;Q5{ZwYqu)BYIXSLKn9}Lv`uDyJ`B|P;@QZm5lty8a1a%_?Ww_H@%yMs;#dM znR8hv$WXH9`)l&4$waFWkUW|90Dzxt4Yd*x^HFuY<=gvQeiKEaY?z6H5ek!`@seOS_&(VA!Pu=cNA;O-tEL@VSzCRl`nN`-*Rt;6EuvYj(CHBG(ek@ zmXS$JlOhqF_X>3UyG&!9L6#qHSejb7o$47C$}FsEt-a#DTmYn+(^|E}xj2M)r~3^7 z7anStEjK2aK{sRRtnuhyL|A@vYUiP{+N-HsRcOOyj=@n^!NW*Fs zFA8etJo_ix7dEk&zRfdB*P^&DvC*?dK$}3cnWTaZf&^{(Qg3Q`$&#uoctLsJa06d| znV>|zYL?Ol1@3?|65vYF%l8MXsYXWE&ARTa=D zg7HuWHM$8>OqRwHmSH_tw4Z}6!gX_YQ=Q>)-%L8L^FPq}Ca64&C7mJc=(2+69jT=L z)$|bPP@S12jfAJ4`yn~snuhE0In!4#h*MoGp4hev^bCX)L}e@Z{)AnaiZJ}>4Jq+o z;{HmXl&AyBhN$){Tzc4P9Y_x%+qlmQO34WTRb&_yBXj+bgY-V1BNExZjlU;O@vA_= zDGX~&7pR1m9~wXV9d$_Z!N&?0tUU2Qj?TlM%K!c2hl67tBkIU8k8I^2&ao*oduL?N zkQF(?L1rAgC=Rl-WhOZ?juk>7k~%nK?+BmY{r&w1_v0S#_x--E*Y$jIQ<;77rz0m* zK*hRjv!;!auXksMeDF`!b&AK-(Mo6Z&OT||v7J;I`B7(;R5#_B2riynnqZy|VHk&G zD%8}-SW10BRD~oyh#o%wjJx<)Xj8d)50EKn+W5ptn7jI(08i~Z!@WGCaF(|({Yx7c zg2wev&MeYfTnd_K$GDWc$7R|17mz7(Qf2S35m92GID&7SwaS;+@v73VL+%zmr`%06 zMqv1I$a#cU#_eJU*7uG}Y@MMLQyoPkqgfQOqN8El?9h)Db)F*L1!L^*#bRF&Hns}& zsJz!-+(Rgx@S>QSZz_;73e`=}ws(ECUcIPUV>Ly#XniFb;?F~BjyxLz^0kX(_G5FQJHLL&rrl2O9^$yyO-T z8pr;t1Ho$pN{lx-`Zre$?GLmt=Rm++qx7dZ6^5&`|DBT|mB*zMbxLD-TuoqCc+g*< z_q1+ZtBXvLr@Dgg*f6CvD~O$fM<{zzs4n&hV6S-}E?>FSR0M?_ZU>!LUR`Fpg<@1w z$q(4M5X%BX&!pYlOnL)p$5m4wUMtSB$+2!y;|NKY?&JM^X7)(qLBGblF{oWI|LwtP zgqV(mN8kZoWfw&(Dx%?VWGuKJZ+#3~0=}(;+~ZsPm%hZAJ%DP@S8+C;ms?n&Y6R4< z+bMJaSh8?FChBO7(vTyx<5QJj##qEhJiy*h_h)boo)nWjGh&M^m}9Wk*Nzb>dj zT#11+hQFCV&ty#rU@4sz`cjUl+LU51!-{BQD*4+$x&vW5hXAaJ!jZU&bQ!(t8W5xN z`<13(&u=UG>ivDGsPQ%L4&%)v3ra=lEBX7Xl_$l5SFi6?4Y_XN4N;f(&n7($STb#I zT8kY!21K9#(Pc@OTGNOh;tK}SMV=H|N+ns%t`VfdnGLlo(go#m4zGD{JpgPt$_%Y> zkL^cY=tIy8B}(DPKqS5w!G=tsz_t^3R^JZRnKDaG?>>1zH}*uO(8f~eQw(K#KHoMb z%|?Uwx(BbQ;Zotc0e`9PK`R;LN3>%dJokPM3Ps%=xZFg+j?P7`4d|V`o+v$A3zUW& zah5#~1tO)&;bugqwBbj;Uy`+=2TcR$v>K0Y+n>8*Am^=0-c9|WS*EMF;L=}ho4%f46<{PB$%YB5UE8cok#$=cI zMQr3C1i*0Kxqo}12+a+?sTdx0v`!%;M-6ub8V@V_^plOMH$!PQ74{b2GF0Z-`_C=( z3I>mF9M#gYkog=b6##AsCR&P-U?vL z%C$Dgqm}0R*9Y{D@YD34J?Fb059 z>VRacP~XJN8Z%1J1#*tD5E6$v4uVpAC4bIO{anOya?*#8L9SQ@X0umG#7ZI0h&Kks z(WVN#2UE8*yft)2Ng+XPRJ`>-#vOL#fQ)4&kY0iEzQTMtLHjyOUp`kVKcg_FGMQ>S zDjj&~>?BjwOWku=bdw-8c$z3&uM~mQuTJC&Wa$N@8P56^FanWVB|Bas$I@fs{|PC!=k8F{kVOj~ewUvKT6fs~TZiHf7k zr(!-hbeS>bm0wvax5726j6f!_@0@-8_dH-sW3-1<{tx9%x|ld2Zd_35kEHTIpyavb7&JdqxN_Ixh)!9;L~(eN zssRyusd7|xeKy!MG1AR~ng~qM5%Z^80(=`IIa$Ygf2LL(3~t?TasGYOa6CvtlT+Zl z^){MMM=#W2danAs*#To(;?}nt$88jTaJoVu^y+I!;wXCKdrRX;N7a?5)j|tMJ3qgu z@o&Y)ijEi4eJUP{05TBWBYaLxQ5ow=2%1;{%Do?qCEIw&D8>%ukoq=2bpd8gvN(<0 zfU~CT>A!4PP;z9u=JzwtFiZs>lcDH`W_RP={zymIFA;ft8FuR$sC26|6*uuYN}4SSMtv3${laWt@xhc-ebYaw(B zO)sd;sTXL8(`F4FFV>>dTgehS4!NYCyJXofuW@I|!X(2<@ez z;S&@eu$O%-5Tzgf&e03{$6@|U8w}iKFy8BsUnMcMSnW>63oyW+J6BZ*mCoka)=K5e zFmLoX)FlSYgC4VQ>f3%S`N?@R(j83^L^vTI6+P-;d?xT71yvg|8&E$BEvX${`HJLH z-N5!(QYbp|1{n<&?l4+O%REiON<|RXGsYhc7bJE1eFN+}r_pNSIbtaAv`JA`$h1jn zCrNQG@^YJ&Cl;%Gpq+Ka#@^dX4DXbo9!gNm$~o=$G1X#Hkh9&whB_b8xauv`?wlZDhTcZnyqPMnHK74T+wzBM?8VzO2btS{-dbC&L2Fw6LzJ-l! zu+zp-92&ho4r!4z zF*WffXtV=yXN$sL#we#B@5#!aEeFDX_-IuGN89Lp1^YQtoOXd8>6Iui*L{7azVc4C zBwU7tMuAiWL|K$YFq!hZ$5}cL&l_r~pLR7V|G6J<;tKR&meLqY8%(*vP~aHdjlp%`xMMM6SYmoR z)7=iq7dy>@I^2$6Qk=U2tI~Z#7dq4{R;n|rscg~}*=iz7a}b#L0VA^wJoP;* zO)Wzy!rSZ!6Ia>?hSVpR-IV z1gCvOVOC5Xu-4I|u`n_mI)L@MUs0hxf1eO+zm{jP&zK3?1dLG^!Q0~UZvg_lL%L4L z=^%X(*53%#^RHrISJ^w|Xrue+58pfvADgBRDy?qH6X^bXz>#=RRiM==} ztzEwasP-S;H5k5j)q3o9V_$;=T5?IVsXmlhZX(;%n_9U4Qy6B44IHa6-)M}92+%g2 zdYWuGWy`{Ms-a_^v!Xr#d(73bboQ#;we=lKFJk`dtoWkCQ|-1$ z&wK3^!h+cjN0)az#M6Y7KCXP{ebKW%1N_;ig=lJhq}^DxYPq8BGtoEP)QKG>q2}{% z)oDLneQW8r8f;E77`SD1VeOe+s()$Pw@G+rmrt%B&&b;B1fpwRue{r|i<|qsKmMvl zO&A+kQurE$-ZHyU`+2>UG*W-GkXquwgGn7L8PQbVe;cu_6~%b?*1+c;zHE%^iTWRWvS787Q-IAVfZT zNejX>SYJrP7T;;NQ&*c0pRW(xPnkx>_=|4&c7M`U_#nce zFnj-XT2>LFHA3xd5|b*}(vT|XE*WPH+ObIzwIaVwM zcPkkpP(HT$#rvD^{@pAkGZtIFUHW}<=!ej4pK^yRIwiit_fd-im1Ja~ZrTWgDW@F7p8jC)g^3zGWV5WvCI{g{L{ruhdvKpv3~g zxKFA75HEK)q^we&WG#vg)|^Ci1h+8uL5sGQF)Rw_#P-TL`vN&LZ+X7`NyR|djC-eX z=|UQnX0svVQJ4tb6+MMU8x9k`q+BM#(2FCqq9RFU+MykFBRuLsj4oGkGTOqyOR#-O zB=T2)MnrUfweW>qz^SX-YmvtE>r!-rXQEr_;mJy0?0s*wdp~+_DP3h+=l}N3;aZKh z@WSJ=hMd(FVeO=erVnKe@H_8Vm;J3^B-oCbd$4AIb@_#4MbX;9s(A52ny5ryY;;Nr zY5L@k82+1>eAl;6SV0<{68^l{tw-68M=(S_KCdbwjyLQ;&>Dx%8{Jd`Bj0+&ZXCGm zuoB?O1#$`qPWjIlQN1q{?`r0lm<61M`b#VR(h5|7{&;KU5-!-0DeON)SvC^6H$*W` zFVDD#)2^th+9)o~d6Rt-p<7#|n=d`cS==Kny>vpw7&N|~oTPY7@73!sThkLL`nPZ- zL@)=W`gVIwd!`#Ry0Ml6>~E)b7Vb~G#wf&8+?`G_k=kh(TOazJ`#Cpxc&OB59CyrS zyawoiLDP#rU(fQUvoY)>$8GZ}tBiLaa5{ENImee4k6hSy9)CTOIWK=9r{!Un&nD9x zb4MJ$Tq)=>S+F@~XeBr$7@~V!(|P9rs-whuf`KCcCTqPk==`HIE_2tA0LPB)U&;3X zWvs77iCJplOudh1I)&8uvT50Wx%8%Mkvgj$NG)PhCNb6Ttm~|{4>fG(Kf###eFSo zBR}8nrwGR354Y^(Q9VGIQr`x{WeDXtN-kEKk9r|}KVKY4m2(7eW{<(qR_|m|!b;u% z_+vXw_e4%t>1RwZSG%P{Dn?MmKl+y+6YiP?oD`h--2c=!c>T6m3B+sUrnY2SXV$5C zSBPAjm~Q<>x3kV0>+BM?xB&)LD%PnP{1SP$X1;?ZLG0Zhv9Nd-(bs%+f!F*Um9_N? zZHyjTzYkqq?FbQ6u|AEtwVOgoqX-_*J*@OuM1FbbY>)&Gw_Q$aSc`Z9C-asW%um;u z=ivJgL+wU#jOf%Sl7$WgUOkSfcfvnjttO~%vHOuR*{BgZE1Se~l&}s%`n{9)j?ri4oi;04CvCp>_LKDQ ziQnW3f%?yJcbtX?8n~5>wMClG*78ZN#5gddy-dG0aj1kRmC-S^w35uk9%!+NJh-m< zl2`vkxb8`5k5`!D8QajxFye~9Gk1#TDIU{owB*USW%KV|LAO5Wtg1NO;+vh*h)Tfa zf;`Tqn?=SKzphy$TL<{#ufiIL|OY!Y9@8a^db&k#-%6Ra9VX0mbE0m~8Z{+OdDdGK=<#xw_jcHgTEYr1;SiTwV z8nmUia`UBg+@o6}w5J_Z;PmjLqL3+#W&cwji&Hm(u{Li!y7;w*+(KS!&J9~n%O2tM zZX+|DFXDg1bT$ny*`ZS5%%)){Wvv5MZ5_Ar?Z=jf(k5DjCS|o`2ggjy{4n``wgWa;HkawE}ftz+Do%l zzQs}KeM6aX{lazqA;WP4oq6$&A*F)qwzSvq`Z`T;;2(q4HoEqB3kafdEvyQYGd}TB zQG3ifO`oLv_m3)tdR^aePqYWYoj}D*{%b1vuo|AJqGBgq9fXHQevF-b4&ChLnT&KF zj?D+yH3IMQFpt@NAs|17bjtFfEoRn0;_7SQ3TXcfpRalR(pYj^) zQr@jW9liu)0w<$0meW7oMk6FM(uno!w8pw){Sr_a+~VJ=EK#;=+5-y5gBxiprU~s> zat>?=QD`$!97`3Zr^AUN1}*IAp0HGRUbv*>AH34PeS_*sCb4`0cbMntZ!vbx7S76QW`>1>o?Wdb|S!86fb2NA;6#+asb17*#$~q!?-B9qyeW2YN$zJAy&KV8jQx# z5E4&DAU0z4{9O%VB=X&M5lBJ7AJ}{hALHdq`=Q%S3bE8W~ zbOPp5Qe1;is$i4~8Ji*$a7MYnfQ3kV<*HiZLquUtv=1DQOnda{y=fErLEUf4zK8|9 z#`5uTInpAaxsp0*EIg{v+wtaCQ#+43LkxNPpE1qjIme&xQG`KP?kH&9*(BdX?Hnud z_Qwd|^>X*Tx#)ykA&fDr1DdPz&os>Hd;AQIx$lb^tzd+WbpY{O{4b>FdvV8)_@zQZ zaK9{e?XclF&96)bkJUpIIp!hfc8KZUd)FAD*P`yE_O{J@OAM84;&Ao(70=ujv~Xt8 zYCwzw3oB#rh2+};GAo`x&dU^A$+7tEII6C``A$$3)g|Zx`5E;5x#KVJHqg0qQts*s zG8=uq9R3DBz$hSo0uWQ4TsCj(>E~_-yKkhuH&Xp&7Wkaup}&QSgTJ&ibD*a9o9z1~ z)HVL;=kX>dol$39Z~bg^nO|7!4}rlK^;0U-lU(8qF|}B&uZK$@ulSPOckp6T<>A?Z z(cP=t8pYP^gU&Pn2}O~asoC*xKvm_GJ$@u$sFO=N6fXb2X}Y7gKJ>k@OHQv5=tE)) z#luYTDk>ba&p*=!>wHkVaJkG>az>7Ox||v*g>(ieVxJ91=N1&LL}*80LIp!~_$bmL zW@>DH^XW8@dOeA2Lb?>D%!vASo*YT`JUNSw@hR@8v!ff#mLy#7`K7s?WKndaZ|^GK z@z&o-nx5z(;grY6hpV|6R4E}vXo&E_KeIa`KRgB(bpN2oRO#FO^joDyY6@ka?~CvU zog}QB|C#TIolfEJ)%vhE?x)LFFlkMn-!@5?YH7tcfQ^0NqTbx$Y{@ zK64I72&r(Fol;{$WF|G&WPH8q2eW5{dXgiO# z7RnXjI7*}s)_Pw{m7XC5la&)`(INhcJk{+0ND^G#dcFs0(V@ZH|14kfX}s-Yp_m^U zXX*!O?5`wmExCX$!_LLvNv=R47Wp6OMeN_OGmmpIKXH1aVTU*5)g_k=%}>3_VPUk9 zE?710pri7uu3H^yL3l-6#}UuhhtBEgmHL@lP%c5t^P4Qjpow4axmC)8nCmmm25yau++%z9-`P_7{zP!DXT-N3urA6W`o*r z{!yPwG4#6B7Brh#?f-$)n80mLrL;p_xgM)jP@`6ibBqn#-&#btPThy{$wrzDl|0{@ z>e$W~Dhm_fknRPOR3eC6IKu5oG1#FPkTrXuT3JMgSopku@nss?4dlB)554vuB~~fj z8V2#;TcoubWE-j}~{AI#p(y4~lt|L8-3D^NQ-Ie(~A zO#vyI&p0P`yrmc)g9Qs89(@M(4bAp#KYv=~J>BZ8MrVMQaDH&|KKk!8N+q^kmL%bi z;^e)oYo1n2UI`i5`cXgt1jeePUlY{CC>BO@jqnH&mT#xl{4j9) z(YXkyhmB1&M5Yav9_=r-upox5GW}46X{j@l+sDbZ5`j}yi zG@CKiMp8!{FP~+M8~z8nz<`pqG#z!x74S>;i8`^=lI<0p@saU^Eu#tNu!kGC3O;i5 zd7SKQjqtFJ8-M$lrnGj63W|3FYNW(Eg;+QKnygtFiYQp1m{N)oOJcf~Lvs5BP6;?X zI;py)zO=;$FRW9wd5xV^TX@1WwU}EcqU54fPgXl&ZOC0vV~6DKK9l=3pzR&XQG=>< ziTzpsOON!i#5yZMRTMzZcOj9_paq7WtWs2X1&WM*>f%WIiuFuSN}=Jl;YchHmG~4B z7S6ODFI=eSW6Q*iexR+UEL!gV1&yc+xWt&hkUdgjEF8dIS%Dx5{eBk6g1ICpUx3fg zED}THs*I(i1H&WDk+M=%um_|U+}%T!H_~0((8^&ar8;;=OW2U=1IV{3zUv{ruv1_w zu5i6GVL7zCMA^Vs9K!t6Ao-IH>|`9y}NKl{{oCL%-=y@XXmg_YHpBD3il3676QcsW2be6*gJ`arE% zW4U`57m!vfWbji%tzaHdPw`0?;w_AJM;Grk6H%J#(~Fp2S=4Vkk1wYE=dA*o5~9NRj-u z`n3YJjW!IV!+?#el1CNjbXt8TB?r`YG zX*!{1OsS}SV!OJKijO=s0A_$4p06KWv9z^ImNk!3T;<2f@DYb2pY37-l6?TJ`9Y)$ zZTfo(Bw={lB&$#ZVk`piV0Bw|u83_jhEkgvJ^`^s0h!s5=c(cqKt+ItfNk|>zLCbM ztPGg#@g*&FCU>Z6mj^=Gh2zJ0U-HJuKdweTk9}I1m#%XKljE$gESB#dk} zTy4fB%P#RM7ix!us>#(RKNFu69Sek7VBfMBiNA3Ok%3iof6h|on*P;nm8tmmcLqvi zjIv>%+Hu81cGq^LV9o;?w=_^_Kt41-9ph0;=Y8ds{}+zAZ$jp6k6HUDKEXvGRp{jd zEB6y*poy0{&`udVjm~MJGl^}+=aDO>cn*&jeC+`!0exeb>5DdrCioScwDLdz-n-yi zxzx(b_81B~!>B`2mM$TSaciPw?)lvs+|hIAMdmr5I+k67;dqs< zKilplA)5-a;wv9I=0zp6Xclmz=nK(q{(hS=drfyO!C>dt4KlH@(=pN|yf3|<%bIyz z^xu8q?!?ycjNZaVbkfxH)!HG$$={ z7ILCfLSMAy7tZ*Yhxn>izfgSt?w;;D*4_hO!I+UDq6JUkaF+dj|D5I|8y%|6Nx8Y? zt?v{7mNF~TUzPV$-OcatBhiCJBU{@8&LDW^P@Z%<<4RE1F*E7MW;lI&rzGRs{^1A5 zh0oiM3xDODIUpE;70)d#eVysO1?2TDvL9~r)9Hj=r4w{m1=%BKbw2_yak z@vPr7?7ty7A2o9{{X!Zyh|5csUzi_T9fRuOyN&dC!*P;w*)NigzMjY5#p+z8WKhWL zj5lYt^T+}yh-FOcRY+WG?1Gx0bqoz_j%l2cs;KgOrqOhO;h&Qmq9WgcDvz|N<*am~ zF0ZJivM%Cqkp1_{bkaZB8Gi8Sn>i=z^VUdt#$A~q_@&^tw+f3(e{Q+I$w`v(f0h#V zQ@j)EuRyWB(LQ-WIj;i5WDW=YM=kjqZEm<_#f}*UjoTfgD1nNGP=C9Vdkd zQ~`(PgrAu;HL|T5S=0_bO>z^`y=rZpmCcD#wVQg6nCo~bUh?0UvwfCQMX89b5my&~ zrTuUc@3(G!kG*M&srCV^Z|smH^3iMWXkwMiEG}2MvV*N8Jn)61hi}#Orsk$A9Rb-( zv7LYYnYk~jke^;-r1`QmIIxUW4lz{R zJF0T4tx-@{V0X{34Sd9q)kd}CPq7xIpx1wY0kbs%rO&j6)BM2Axe!$oTJE_|+?190 zQazkp*7%9UIS{^UG+Cx>uwZMG?rebf$hD>{75HV%y1=4~<~HB6h>ZDKODq{UXzo%M z|0sKUhl4E4xyGy%Y2MNjExQt^i_?OMQWzo&{#Z@p0%B)gJ%}4|wlL`5R-+xPYHl@D z|3e3Xs1&)Hf9&tK@1Rf>nqr|I3#3)lIO2m2yc`ugY`WVh5bx$tVA00ZH3qe<3p!jf zb?dj)`1n=j{h6ugm@@ zTvhN|Ko_KEc4)}7)4(7hP~aY&K6hVuP(C3p3oG`*L9zTgSi{j~aV&v=qE? zPXiD=_j{Jhi#*NQpLi$h=nr#@hoH$_;%iod9p7HD2{L83=azh^ZYEX3vkpo7Cnba5 zkQhDNhKNCa^NR)a&-|yIuZtI?ncI|176P+$Z@f8YXlR*EaGaNj9)Xf77<*IX>s#(L zO@Du>I2EF|uGs8WU}4|TgN$eR8nX`+^GjdJ1!T2$&xBvePBqGlGk1xzK#jw=_69*` z=8I?7hF^5gjGDU;p{kt%3Gy=at;l}Y!f9T#+|_b%Sf`ZF-X>LJeX%Z#gi3@~acP#U4mD~&ohMCG=w zYW;1~A!RhUI28O|zB0ZChhyBI+b7lC&03%3PsLlgBb&9QRZ%`5xmcq9A#aY*W;3m3 zhuoH5>BH4W|LzRvJk7*0P!laEj7S$EA+wbgks)ouY(l3>{ZxamGju;;pBR6Y+w>Z( z+nG6=_R%cK`KB|N_rsh8SQ;`b0L)W>;f#ji*k^Bt#in6g!qYtJ5htj&L7%_OEXH(> z>p)cZcJ;qRSdFtaf${!{h#@=cg72D2j_q7lsbA-d-@Z+Bu@VOGNF*A(kRN32R z>dq6@u(ryHG)`#&N36QA;8NjxEsRT<_=%)Yi%tvUyq&t(mgv8xBF2LWa(B>$_YIy( z-MRgiWdYky$^0e*zloXBK|RWt>DI+EjeOG;8ZU6z7p75Ocd$S0QVd9VV=?E&C|Bre zQpnX_H-f_=cW3aV?zU}_kOS_%lrJo5mf%0YSVh@Yjm}Q5HRYW9Ax&~} zDZW1PqcSO&H2q0g??0cJ;+7NBm!2kY@`{QUgZA?{jn0f;)c%Hxr8(e& z(nE(@=67OpU-}vS$oHg0huq*!eBifbG ztItp5l64=5d}z`XbiaK=onVSSMhnAkXP4BDB{qLeA9D7b*nwJ~&ptRM`9&bjB6~!d zTi^qhw5&4GBRs`j@76>ns=FkT9FsLwJBcr7O;JNfBfJiJZ%VG>Utb%}18YgsF9Bm+ ziVHCo~MDSmytR`-3AO{TB2ap35%I(j4R7ov>%{+ebkNu)He9R*3j zf6VQd_DiSy6Iz&y9{U|=7}mp{D|E7b-^&^y4({CJEzs@6Kl6FIViwb}36(0DnR!K* zy^UO6D3;%Z3G$%M$iU8MfDko2v#W07df^jOA|aDfXsl`zD&5uWGI^gea{Z$nd5@>8 z%hPj`ZK8o7-VpL#?mrOS(K0^awwzpuaOz3<42tlnaxLg+Tg-r8yjuFxmOH_j{%M)* z6nt+oquY44j&6`JwnBslsM)Oi4SDAw?6q{sQ%EvVuJNqV`}c(EP&ukhjSb!i=9N-% ze0)Ui5@=)D=96Y^(dP3&tgC%JQHu(pNI#hNs1WV~&j+j#wh4d2gn@LowXy6#47hbF z?(){bj+*2U)&j*8{nZdHyna9D4eUdsWG8ClaO;(e28$dU9a=TC{?}pokxQe{xd*-O zlH=nGQR)Hd2A9J8EQ7|`bR;-qEHDBn&Ul(~fnq4hpkRPH&dxgn!nYT>H0BI}d4A5c zfNlP0$Ebr22Z=^AwO}Y5r-SM_LT{%!(w*HExPZ<0N#!a_$7RjsU1If=Qtl%jMFdb1NO-KyB|F<(_D+JNKw4)GaVD+uY(l`2A8V=`FhC0;?E>OIO@+4| z8Q2?G)9SIvj}?p0w(ovz;ZGAR@jy{+?d*)39o@F#7f)k->Aa_92-P-At5EtkDSC4t z#Vx}OgVkAh!kaevF8sBoC+dx;AM>bIP|tvBnZTBlNoaoY_)8qc(K0WF!rPux@ExPS zbU+3WYiG(7dhr-glVj`m2NaEaGqxZ0JYrX)QolU8b7|oG4H&gD<%UUHBj)6u2gvL*N;AL243R%zc2nx60n#UtHM=L#wrBOlA{Q>(NQs<*pjr{ z&;}lAG{ut>O7)D&4?>am9>}en1*j3h6QW}g=<~252?0Tu?YiGk)Rr2vDH@&>`OI z4amYX%92%6wPo_DnEW!PG&B=WK40a2#xO=V7Je*%Gf72(a#S5`oCSi~tJy#s z{UFO6#zxrJ2AK@N=v;BlT@-;2rd>3VsQHj`f?i*+Xm%V(r{jO3f_=;#_NK>O0X1n zkf&nl$O=}8cLTVg-=W76>fj2q@rtSjl|qJJDor{LyuBtULWRN6$v%^Dvix4* z5vlgS)l@U4_gR#PwxW(t)gSH14{$Rb2^*OCC#>>({>k~DbS8pN`63-B6+YqAjN<3x z1~uQVi-7M~EHK2U(Q+2XbLRQqrl{IdF`DtWx z4dG7a;4)k361k9g4qV_>r8wVTX?9DlAw+LS0jFq5!UL(^`bbX-Df26Fr|;6W4Stfd zzT+IJxv=zVJ!9HRhdkMe)bVdy36$yDd+uxr_%kDl$J@Fn8;afd7(rYa8{2^qA`LaPWiRuQ!e}5c4)RCD4Qw`; z;k%-Yyg}<%yw4LAfTrGtNl>s=x>g-g5zBezu~>_ILruFEud1P}dJ)X1mPk8%w7fT8 zLDq1jy%uMvu8jO_C1nlS$9{{b zqz=KzY=$CiL76|rA46uK9&AJL5xbSMP=WxXH!dSYsG{w|;BSM;74^ckVD^*>6d29Z zolr*U)OjQEG*DG__iTcnNUf2B<~C~kYs?Q_=@I{wHX=*wW$~CRJ_H}3I#@&lr|3le z7zo->d&L#cX~#oLR9eN}5cCz#hwnw>BG#^4rvO1~D9G!VvUJEgPBk~PjQL9PxmfzP zs1vr7EogsBb%b5{Hia3(EXNShQ90nwNrqgb)7?N3V3zOFF-mNBw73*&9XbFa@y1=H z95t0nr&Q4y4xmWtS3t^egOyVU$3Yq^6pfQxI||Rh=|fm>I7s( zPXre^8u3L;{;wvP*t)$%@B?Zw8|t}vR4k=2KpwITq!>hz;uwAOyC5!5<|cPY%736+ zKr_|ii@cyj(Y9(rdH7|EoEV8AkB;2U7y4GCy+fZySQQrqPIeT(Dk$z4qx!PUu(T;d z7`!^-fg0yswqO(G`;{bkB+EP+qx+#TN(YX~6L?-c)$yt*^A z&3kE}Lnl^B(@T-UY*bYxbGycn}VNvVYYvT&_y3P)f-} z0V}&u#y#hA>Rpa(s0>kW>|T{lv$}XUdH@Om=u;O=>VZ~PV#7{+&G~ie-%&%{z`I_+$gv3B8y80%(<-?dntQ8EWMFBWD6{eKI}KS)j*)p zfn$S+Q}y+K&4j*ZEIsX1*?_Y>Sq>g=p_(=0cdmFe+AT^njLJdE$=>|YLA6b)R|=;3 zXDlcX^Y+hH1F(*xjZI_(4drbh%DHiD&!RFUjj)p zrMocNFTWQtpxcocl%LfeO*H8_A?;RNz4vihzjpPeF*VhT2R~4^J(DCu5PvK!d#|Ji zOdm`ZW~lhM=2O$fX@tUq&--OPZt+QqU*WmasJfg%l%<}Zi2n9Kdbk51$tL{deo}s? zeZNx0kCF^~P_d!6G`SGBaC60x!=F84{ZO@d!vMkQRl?FF{W55!@>A6gvHt0WS6$EJ zhg~$o&Sor^dxEV}Qcs4~H4cQHzU?#pPHg9+NHYvux>Q~-_Yf017MO=ljLH?vX=tO? z4zaxBC5q+Cp@Aa*=XV0%5dk$y*H4WKkoIF~$U?b# z*N!Dn$_P9^&2t#UJohj-F(2ly1GF`*pTJ|!-%lB?nm$ihwel?1&H`QT#T$kpc+)^< z7WTRAn)0jK0(cFNlRMkh(DPVa#rG;1blnd~%$!Gt#H2_vTK_SXsBD*O8N|3JBO(ssAP3@2p{cpaPyZ9J16 z`H^0IVYUBFJsm(eO@|`K1H&g*Kazq?4TugCH715Epkg!X+(0M>A2ieP7TJWcZfxP1 zJ?#!|4XmL%M8GLggH<2PUl{W2QNH)PFISU^o@-8_EGabj@VGj(F*CF4dnYE!p8g+h ziQh4_6-4zy7%e&eX!7lk(bJY@hog(9&v0Bmg*TCi>T|+luI?AizYN-@bEhhfEq)A{ zT2G%Z{Rg_1t1X!yfDOkS=vGX$kIB!hY95EottzSvP^;Tr8NU%d4pGff@r#cfG4u$J zvPmz|@g1gZLq2*>PVE{}MynQAFo4L0{OEuJFHl~ zYAx5xKdt8`((si^#x2Nua4zrKD!EPp1%ztNjQ%TxH*%>9p!;o0ETDnKhz_Ocp^D04 z2(|lb?t*VSVwq}=gYto~<-elGl=t+$<4$5<{-|4YzIXl3YFMvRMt9stXV9R8f-C;C zSninpcS)r0&AU&DZm;-`1d)I!+`}g@kyJE>&3*mR9sCQm$PR4ac zTzKDq6K)^%;4UlM-f(mXR+o`^)b3)k0u3}FPo!htXWqNyElc9KOFIZ#-ktAI%D@}_ z2YQ=OS5`Lo>TaOM@cH0a-Mpn!94LxK5DvfYl{Z~J^)s?N&y2?|Me@nxLB8d51(psH z_r*ioAKn4y(k;rsY<`kb>k~v6t*OI9DL%Pt8Gk6o>%DK)#i81$RxYer_YiM%EMVu8 z9;@RHPSH~tcV>0}eHI2914T3YfnQ{loJ~hzyDBDx!EsJ<%k7Avmp2>zW-h3+{6gOO zq~kc%hJ<5e2&FOiNutKp4&kKCS5PqUO9-eCi}U$^*|a` z`=bYsDa-68pH?YGJ#drVFG+KGy8AJ-LBH^6>`Bm3?c;@EIg{4)(cCe6fogqYqi zKfY zj+UeToBYS{^zlrTTSWrM{65tUW_Zu5gx!ah?{9 zwuSq~<%6xgC%_YrAr`|U7Q+ur7t1sL>YC4Q%7~uM$w@=y!PBm6+T1$7%NCC%Z$C`- zHLe_zcBEu*TtW`b?_{JLn2pL)DL5)cOZLL!jcH*ph!VxT@@Iy?!rl<2>U(+1&gNLkocf)1!vbwx56`saW^>RMQ=0?3M2kD zp*hdJ=t6`{8#=`llDNO>HEyNs(hd>>epZzZG-HtOKBe#67f7kn7)i@9T0)LRQHmJ; z(0t20&djhis5e!90?5a*f2G>2`|?0 zaW*v8llOa&z^&pKej(CM;(AI9OXFzF)hn|KZt~z1+$}mLwM91TzioA1XItf+pw-QZvcy3QqIkzGMMJ3dIz-1JNjJ zU0rK``I}a9IoZGd)~gQpl-SJ9k4{tDdo#(Q6XxqJk~CTpbWUvyeA@?}$*G11L>wx%J*{{4AHHy<=g>}B0bb@hBOlK(!eNoTB1 z=73`iXg)60SN?t-vVbtq{Q;~C^@O(OIGyKmpBTi*!pfm6frhGp+3wZ6=b^0cvu9x& z*B0ry#MB456ZDzAhwX81#T?iiut>gW(UqY6xP|KGgM*+U2Lm5E2S%7%|WN3eA-+bCx1c6>CA^jT47l(vS_3B!Yub$(hzZLEsrW`1=POus|3 z(EVX!KQnCUEZJu9*OSV9fH`prP5h0ff4iNS81R*_ftx$xdT;8)gn#WtzQANicph+? z8n1-^f}0iGPcV1m8RA$BZt2M@?7o9 z0ki@kLzaBEV1IPU2jkx1%ETzo*R9K$pJkhLe4DOST9D{b+fp(c8oH8t*(*W|5aLaX z2b|zXRFvwc8hgWdRUR4L(^pzvf>WH_HUDgMaopDNR-8XG_RqWG(Y(V6vWM!1`7MDz z54MUL37`G`#VCbI)C8)S%%1c!{jqaAwLiL3TP!p1<&%}8iidIMldTz0RCvZ=nXvCj z8Pv^l>wgh$AnG-0K47WT_{RvWgd^5zbHsWdONu@ex4!4qR^ul{H#WnRuDceLa%H2i zxVSFbFjV)Fue3(pQn^oVbtDjkqR>{#8bT!372#j#yubJ1A$-k6d zSNAu~J`cw!EkCBlxZu0`4OhQwM;2ev&t>IH6Lh`!8HheAp089Nda7`B#iwtC&v+zL zT8E090%&?~i$^fIZr2PD>Zy{K74oF$l&-3NQeSU2!xY5?49P7r+1#ew<(4dWGMC(=gxuv4V(x^w z7R~)qGIv6`=bD7D&0Q$>OARBp+;R!u-{!Tkx~F~82|F5hfA z$J*fajVwHrB0U1%1@`Qo(lu;a8>AM7apRZ4pP z<8tE>+kGytRzSleklWD8^KD^JV>x$N%8*^;??$>_=kmg@sHASMhye2C)Z=p_cW`5b zx*ocE)%v4n*H&7DrkY^&ER0JJjx|Tiw~W{*1{QEs-n&GLc@N_kx_~s;*`4NP-pE*J zTCVkAr?ltq1HG9P*yGxg#7Kfv+|>$aYg{l1?1#A|s8Lxvgy&In9l6HVh!FYGY)?n1 z%!kg}qaf5Bj7rL$lxukdv0=!Hr~4uZH`JyituZu3S_PABH*N_?A9D^}Dzt*V7( zY|fbXM8SH*P?WcMvc5|S^hf0@>+vY6!W5ADM&#(f2cB~aqCKgStJ1{gJi0AnS(U&j zY(Co@O{W?Jzqo6BBVXg*gIR9brKmalsZaC;I}!0ByJX;}y3ji#V3PDuL}sXATsCG( zUDfYjn7d7RDbnty5|eV+Q=|zq+ttqDJNOhDkZ|Yus<$E!@lOF=H|{5zxdz~VWX582 zx!t#(`%e5b=aW@&xLe6QfstOjER*t=E7dUEv5%+>xaW`*#Ybpn)D3Khj~Te(!`9Mr zdX)B9ly$s$aRBx6o`VDO>8Qa}vEn}-8STQIld%?yAX9dbTK^waO9maLuO-sR2*>mb zEeOqZChgs7ric+seO4ioA_m1v`4JPjQ9H;6aiUTBKhZsgp;ZFs0wY#k14Re!9>R?| zc@#itKpB57tJNcy#*jrxpBz6EVd^Fef$(RoMDkdi<)CWgruC%uzg&gZh5RhGj>W02X4084Uz9VXD{jE6d79OY<4J|Uel!MDtOKf63 z^4qtZl`uL*7+LCOhH`MikcA3FjzHcw@pEu08C6wxTGTNNKy*@)lsmp+HPJpt8cE!s zz{3KX&V8`sc(O@yNU7u!dTMwT{-@+GWu{zR2Zqd9e8or& zvi}1JjPoX_=B&xSo}ea>@^OJApF|5(VgAT>oOfimKttLE#AN0V8Q)N2AgMFJWL?G& z3aC@nJpPpINneB*-%$RJoyP_;VJ|w)L%=wc!K>d2Hu9n0_~MT!58<1i z>&p;9lw{!bq!@j1`=iD;qO^ESn7|_vlR{&We%B0lalXl)6p*`z@AU((%^I>lpAA|+ z36~os@`Yn)!Mu_orVfr4&+H@dxLRobWOKXDt6llErn-N*5lnB&U5i}b6p0>^k!SxV z8cdxd8PcSL^kPQOwhGY zVPt|w1UqK2+x8o3qwMxuQ@}Kc&rc}n_{`mlKTfBZS9*A%!*;_!z&Z_aWc z8w$lJopi?!pn;E;&ZnhVbE53X3c$msT3BqNo!YCdRALx(X*{VtObn$G-E2Cx^sZ9| zXqy*&6Z^m+$xy^W{p<+@3T%KV9KDZQH5DOz<#e59{{YgqpG;C6eyUyZ_IZt?`lXYE z5Br`_Wi`~_gQJQyzZ=_Hts@#>FG|Zr%RBzOd#N3cWS=gfLvo{He06EL!{xYCG%cFh zXyD9Ep5EFoMT|+sU~V}apKyge)wa(W*YSq=fk$#@L|(&5{EC|mSt+ZFrXF+Y%9?hK z`}41^^$x7dAf^!TkB=VJ_ZaOU%ffRZRH&oXw@&xGrFVEG6_8>?&BOIA!=F!6mVKj% zMZ3iDiF5bCSy3f%*z?&8d<{nSto`@6Y=+J*UYj8X!95Orgoki^HU^`3pe4ueqUD^8N*Pw#p^rA?GwTLUHPx8K+u6mZBVqQ2sSi13@fg_j;5mu+sZ0v3+9M3b_cI2F~ z)$I?h5c(MA%I^2DMO=S-aHj#sLMgOW`?C5fD%!K@t3vhwmc0VDo>*2vENkba>uoDc zx$#$8^W)`i;U(`-fQV$I$NifW)wU9E)t@rVfgWq6QVaA+A5Hp_S^7Q6OMB#5PYt|( zDGQvTDo(#eVD?GYJT}Kn^%=-1yq37#&!fHMWe2Tzrs30xaNQJZTKQh5ojt*sqc`-wA<8Lx4vN zGtptTqLR4SX{mop&XFVPBarC)vEtE%;UB3FZaMdM-QUYY7_Q9bnHyEvrVgjuoOkrk zr@A{a%NfE>5{JQk>%@sAcJJ~VLb66zh**jg;-vbhO zJO4LH9W#qjet}Ws$+Xe$o7Gjn5X2jj^s*sTv_}0?XZ4{;S`rE2`P8cfz(n$ zDR*L_*s$`CR(^=3amvQI$HQ(lwxE`USf-`$eB&@x%MbI@Z*&!|EBvMV^=h!EZVN)A zJB)#bOCM~R2afW?7REHr_WAHKgi6DeXYJ!D^y~K}Y#e%g^vcE#I+rHcy+kKm&DnuVlVeUt@aA(e zoOw8H^L81)L@d#i)p>LMRpOGEPlKJmwLhX2{#}gA(A2WoCvjwv2Khk7iAgGi29kGK zPQP(ctK&>6y3fNZV?d7^6D6h0{M_Y>LRs|@+e-LK^F_zczPExRbh+7Gq93A@+XgTS ztMC3zee1#ya~CgYPcw9rbn_G<)sYlD%c5Zr4E|$gW^>6)(o1@5Sq0-oJ0r!*IF+cY zEw}}WPVPB)|M8!GvTIF{#PcTSR%B{Ss=(E$+sLa3os-(2B|pfi*}G=>45#q~s|fvA zHt37Ze~%t%@5nd70u}2fRXR$|=eL~!8A94Z`-Kz1R^|ch1gQvt;A**+!JUxYuVqeF zujTUIN~qTC!;sv9PX-k8Ot6B1eTWxi^Dx{AM^5OMm>YNPTmr5qp+IL-N{)!GLt?3- zGH!1CC`W*iJopL&PTVeK(p9#~149ZvJnp^vog8tyj64~TJ-oCoq`%+V&Dw$`%q#Db9nU%KYO=#6U{jr>cZ#Zncsg6_frQCiiF!uz& z=%Er(S=QRW@s=-7e)^Nho0Q5bf#vAvq=$2G7Y^MM*6ZJ82I*Ll%`&w~3R6wqz677< z6JO(_)&`_gaagRu7u}$VN(_sX$^#;>S@ljCRl4k2^|Z8Ly^3&_Syj|NLI?5 zR#q0)$HX-yO(NLq?*wD`1#ZAtaa)3WE#&<0jJLlP`Wl}!ad`*q>>UN`%S3ux@YU7yIWGr0s)w)FfppmrR zmYKA0iuXW@PbZO!?|$t>b!BEFe+J2#C?eM23|(LZZw*Ut-nnnZiqiZ0nuLT7?K!wS zifX{$U}rWbW3^#tvCL0vlY0j^tN(@HZF;{}u2CK~8|irT;(0pOsBZoKjYN?fY4sD3 zn<8&0x7 zRzZPQmwyio)OJ~8I3a09>tls&?FN3hu#pWC?rJ9DSHzb>6FNT0Ie*oGcIg|-Ij`ob z1Q=zW|Fn3w# zJi_fW`|MWq{vEc!=Os5TMMH?}MNDQi%C){NcIJ<5wyZ~{`+CdU7*AFcOOnA|AX2p0 zAxa56qI_OHtKpyaIec$nEKc<>HrMcnDMOy>m89h#o;kvMvw$gLvfnM9Nqt7s-WSIh z=6b;W>0=h)(o)KK%!T{M;-@e}uP_WI^ZgOMntQn<-Ii5W@uVbmPnau!3!2atAY$tr<~y2RM}Ua5lJ zZk}lspi^37nq663P!~hiT+jzC5Io|Uo9HJeHcBMc*V!esMb3}10EZi(dOA2f(fU-kHlT%`8BFyMYYFi;til~1v~BXT$Ak*>%%Y}ud0wWVD#{%O^4 zd6!rIxxW016JMZ#=o3v)-Zh<1E%AT-S%>|@i6U`(Vp$fW7@a4x@j*2cXarUXMHgu=U+f0?Chx>x(qKPP?8=_x28hu&l> zzMA|*GuERmIpe013n(P??UR59ZHU(9kFr!2cF$lN<6MU&%FoILq89YaglU;}-YF>S z9Nb9XV~@y80*OdhIA)#%oqX~iX@}giq8kg2K5`U`;%+65;?G@ms-JFxqOWb9=yXAq zPs2f`j#jSvv9}ouhoOT1c&lza(|tTOss*P9nSL(k zS_Z_}6S;cx_gn`*3Im>-2-V$+(5nljcv^?Y-gn3gA9){Z2@RrVQ_xI?(g~V#8cq_i zia~@s7l79B$C5OD_als`S_Mj>ShJ?FL>~&RuL&b!?QyD@I}{w??*aej@GkZO%Ias< z6Ed-iuh>c)-x+!M;*AqDtGRu9k|Fr0Y6dc8GfOvdd^F?+#$oltTpr;dn0@ z;cJM7h)bBV2!cem?vl0^ zuq-RhG|=P-%9a|0ikpx3&#y=Z%#?kn@~7|y&=2lpp=2Z5=cCfZkF5PTc*GrAux_6O z9-o?b`3CE@PA7O|Abm((?KV}|ajz8n^XMs`jZ^;;OSld=DoSBPpQo2Ay2(5V;)gsF zySq6!^GT-5`aOPSm=ltuT7FnHSb3>UqAks6L8arT`dwdzoBK>JROWn7jPFkCX5Dsv zPDU*l8Lhv~8YD!KEl^+>t6}A+BF1 zievBtp9c*|EV@r_b~Kg~Gs^e|`oRZxgzy%q%6C!qZSWIAwR)z@})`R z_tktay-<7|u)u8dLbVFg>b^j5do5F|V8eyh1;`DrOgw&=CCprB)S+-8MmpNjHTTV( z>!ejBt#|XJB61}{Vu?;t|Hx%R%@iFcSsgP0tQFry?nS1_)rCY<^il zmLCIS^e3&UUV}O*q4lC#ZI}(a$0B_}iBhsjXcfG%k<{5Xh=!p%$!A^tI%j?Bet$jP9>_5@9iL3m>u%ZVKZ~O% z@BroAHQ16B1OeO6`M*09S|bG2c-_xXlGS_ zlpRnc#$FW~#j&U_MMW5WeRD;CC$Y~y%}w4^Gd(~r9k-wNA1D(NMlhhylI4E>netm( z&Bsu3FsmB(I?1AQL8|@E@{i_Ct#};??2;YscA0JGH=hH@zP(BK4s7_&_#V~grNl@T z!#Usl?(tjVS>|1&Wp5xc8&S&7;#u#lbX4Iv8ytxaGB=NBd(Iy2}bVR9MJ=8X!AH7vU0~Y$*Ybd!{`ZqosENExxMx^pDz=!OiZdHa#39= z7I+Sm@umo-hEDxrJG^h2EYR?HN7W{|Rh4;(IO=#y=z$GXjvXUs6x~DCVi}w5PMFjM^~lX;KuBDq!hJp$#+AljH}0 z`rHp;9+=A@e$huJ>Rm#G>nBHL1(&C0(Pn9vd^YlJLmq(9tJaKBU#8DQKwmqAji*%F zy~EBEsa&;^FRg&2e4^JPs;C?I0!jY9JPTMJbyb@Q>npcBw_p8q21PXDmoJn>JxntX zuFtky?y&v`+^!F6$6cR#_3;4~&P<&#dH5rvK~BIZ3XD3&FI`sbydLg292#)$3LC6h z=tEZU`JS8_U*$}%P0kL%MtsFWm%y_q*hQnBMkC3}O%Y}nOWv5=f6rgI{Jh1O-o6jv z`~QIk7-*3jhhA0K+EAmydFnDrDRh$0{uzS?dp42wNXQqJ29T5>MHxgXGi)u;q-X4; z(0uZpJspMY?|s2A{GkGV9DmORUiu2aN~mBzqY=ZEl^|kGJ7f>c%_Tj|?DgW$Auvvg ztNx{?A4x)O0Qv(kD|VQEr;CEW$Y7la;(qicY^b@c>_=pr;T&sJDC_CJ1klSo9cRM! z|NBE#1iCw3kl3xh(`)(<;J3x>($ki~hHmIIv*nru3r* zOUJiMROb0G7@$xK2va9jAxZSap%x$Dy>i@@@3Z${WFk(&L&nx_O*KUGIZ*=3tc_h2 z-7XWwMu6d%pdeC~Mo57SRSNebNZsa%Zl|7uFwHT2h&~y}h`Y zoKpr|aDMsSy=8eRCKV0t!G6Q*U~HpM!=KK7PMh*8bMv5wa$#HnuiD!86bS^L>A z7J}b~tfEFdjA`87*x{(AyG}!S-CJY?O-(D}Vb8mh?)+-vGiD0(=)0e(*a~!#E77-E zvz}$}yg6$v!_XLqz^|f^r;)RAjOHK}O%NSn(Wv6Es1r-TX4qqm6yrC}cGdM=G=~+I zLXykWqjj@MF(;8Kf2{ZME~rhFs3?g7;@wwSjPw*Jv`lkdJ?8;v*^AGK*9N0Xh-BUF zrc}UL^E>ae3hRs+EIhj2Wy~CL(a1l2Lpuu+Y|N~gVuYwD3{K>t$t3)eZtw^0U59cT zt(Np~_9FtuH~E=f)}|>sVGC4`)mbLv9-y;+$MHYzigrxz+E$KWa1y}%?acj6^o8`1 z^S-qF{cwNV>F30~dk@8n%n6IxI$g^EdnO|jSnyml{nvA%7zF4_D)bjK(+d){jXdWu zZq}uCxa|iItU(yr&NH`{j?vAS)+H7T-@Gu9BFnK~1)XMd-USpO*H0xtcH^_Vy%cfN z-RS_nzE5MSx7{aqx%w-u14Byq{ruN>m&U7X6Ha&+uYkPhFK!aOssfy*JuX}zHY4{Z z9$Z}5fa?#Hz)8_-s^{jq2Ui|WU|aa()Ml|p|16e#W;xKFsdhrlSVMXUpVQIV`yVBZ zo}_xG$Ngp8SY)%!#o^uU29_1U1qhF>M83^JM$ADV)Kte|_F?s%`})~h+jk!hdep5C zFHCQ$Z>wGlkMn%|TbCbsROlUaKe|)pbA+Xh=IecqsM@bP^TRsB;1Qq21jen^Tbb;l z^6ansARPrH4&5fr1WQJ6r(O3-I34du2gPuCdXrG?*rg;1LKv+{`6hpjlW0bIw>@TM z0I98aLGl!aj31>0e4TxyO`JcJ?JXFLiE=<3bMJ z897f_bT6%-_b^-^`*=Px_eVK~7iA3&Qqszl4*HXAf=-PQUZkQZdC_SGhTM~77v)o5 zO(zZdwj?L#R4W*<-z;o=eR8~Aj__-|WnJKjFe#D&zCQ^WN1%$tF|WRr)?FjJrrpd= zhI$i5B6|MvS~|HsEfRbt%ft;ZAz0A5I|uKbv=*&WFR#a<2E3(0YpfaQA6l|jQ+o>D zmC|e$S0@;S-vJuIHKy_gy|`}i4y2Sb0LSp0&kHg4llr*&?YGv79%BLwt(WGDmsZI= zJ}S<3)r@J>ovJRJwv@M*d)Xox4KTc*6&L2=Pv~zKf3Ge+tLN8s7AFSWMx$j94!6b= z9{wPG6VuYO#r8o?>_&1U|HuQ!*i{l#;B`T1xYc0bqMFiD0pmv=C|9RY2f|GPrW$PZ z##Lw_*6}hQC~0eKfGh7MV9GP3XzBJ6c=XPHN{md!-{wiy81wePj(y^nozR6 zIk;k!>DwLllHBtx_^C|W`&xz;l5+gff1sxc&$KZP8DwX%_K2EeK^u>{)qW>#gI= z+-?>B27gm5x@(z<9ziu)d1bYId~y4t9jepxcT@1?S!w;8Ge%pqOv$C9@bMZ^;Vbi7 z)yY)uk*M8w`q^`ZB%2no6hkTH)?2!)qB*_KD90QbWjO+w{8L+~6C-4Lb4QbC7E!Qj z_0=i9V`?M6o-2L0F?H0y< z=vopG^7OD^)xizi6gHg9p_Vpm?Hr*#^}X-^Np3mK^Pbm*)`P$#w%;9Xrat?2hs1v7 zJ=BM$cT5Hv>u%>BI(u@jxJ9WzGu$Am630yCb2q`PX#A}1lq2jLP2(pQdq$9|m}8An zKE>$qv}9kXg2b0qE&1a@x>w6-v)SD{CvD`3$cLA12k6(prrq{ispF-^ z6OV~QPPP(!@Oc?KF21*@e?HlMy>M4Pa@C%(V9Sn~FET~j0d%mMpZd1`=u?tMeTj+3 z@RH$NrUyo6XWx$?47^3%n;RE!x8R8sucDWSQ{S@0^1OAF#_KmZ^Y^dsss1-{y1?(V z$^$_Zz7auD=jjYX2cghEHRA_$XI?d!&9wH)skzd~8ES0QZAP5u#m$hM8;QYl7A2ic z13uR>0Px_CrK>2VZB@gm%K4oq9<9M%uNZu<)z{AFF~p73QLxOG(OONhF4Gj2?R)a` z{q&&iO$$oC{g8~`mv_+`bQs#9moOTIk!LyUJ45$e?jl)pDBgih~B6O=TOS zuza|lJ|yz2(0fecOH9;Hu4!t0Lp0Zyz2!i7l$Jrhua?|=<(;1}jVh8qZj7^Ib{t_MZC> z^ofRHaOQ*0dU)^DYo~h>14{)^0EW+cWMpzc8hSE+pfkhLVD?_7vP6P7!e`z|qL!f? z8%oi6oF2TlVinA2jHo&2n^LUZGqh3?;oggw*_53cJCrDk2t2#kdzs`kPemA$%^j3d zgVd;nP`Rw&7bM4mkOkW{0|(9x#b=Z+p?4}9}h{&KTJEF+kjlD>$n4tm%0>57lJ zgrNSvM@}Mx{C_j=FLEuNChO%jNo)i(3EE2PjJz4RI%<8j+uK{kCM0l#a?k8QQr>4$ z1Er=;JN@{qm-Tkmln_+m$+oiVW3O0ccFWN9;u}w z7Iv;^ws|CaXX}5grI94SbK=E`v*=U>ixU$&O{7 zj|}H%KzH6Z>0U~sgS3bTAzp5n3p&GQF&MR=Zki_#1dH&Ji+_X2LXDEqp&$M~p-!_F znn^7|4hp#{KtZ_u*)q79l>wDG=bdNXrlj7lG1}s@aXvWjmfv8N?<%D?#y?p~ujDrA z=wLp30x?ib0TcOW*mKxb`K;nowD$zH7}jBcwc7 z!H{b9KhoWPe-)JWXO%@bL~g{SY&uz|x23fnEJv=16yDPiznR5)?Av$PrNq+$;K;HE zp32-o1PK52(%ptOaE1fl!caPuBc-_|4Tm6|-H+nSpOJkw} zPjN?Gg^R{$Q;w#yRJh0P#@YUk?r$r}Exv90l;Ankxq*}U3pA>6sR~+L3Q~rJAE1rH8`;qT4w2}%i^gT3X1Xu%5-Hn+Mf4n4#mgXaKOFg zO4B0QOZawxD8E)Gus_GacLf_XM8i*_-7!XOGuNp8R2zq}pKm(xM34%^X*BB;6pZO9 z6~GQZvBm_yKMwrp>uCYP=xGp;XWf4%C(q}*IEiRKcLNn^DSS<%BMliwjr#m6Q;pa~=2CVL-mBGBN{{)dXdHNQlJ zC%7?@)tKb-WC5OXk8$3d;1iuUE4r#86hNppCcAy_v0ki3?9y_Sw&o#6;dNcm9PD}F zr^v8mMT8uGP*;5=sJE|L9})zvi4%uGO=@R!_y zth%vzi+j!TV&G-kATi&AD(r=O66QRO_dJ{VfkQAgBMu(2JGqb)pz4&!>0~Se0=BV$ zTZHS0N971orv;@j2dI4S3f#EK)W_7~pLhz=+QIzD_)ttx6=N^|Bdg{@mFPxA z+|!unFBH`Y^ax_hj*bC4LPsza&*)Ft+jJE))*}yrAA(YhcqiHE4B9ZH5-cX7%q_|H2GZ!6K5H)E@FL0&ij`0Qk`drDpGV z{hvoc=N`-WUg2^d*Us7Qy4KgPnbxm~s6Jx&lHgb#j65 zW&3?Nl~)bSzkz`7O>mii5@-dy0CZ` z2dYqfvtsnj`ftHqCwqBp$TmVT+)Rr>A9oey-GW*%>ZrOZ=;YC}#3;N(DZFT?vg6s5 z&%B)b`AS{{)13s6dz1FUK%g>eCqE*D<+8J5oW~ZFk4$|!2BNi2Z>at`3Ee-d0O8SR zlDd?nUsyQtD3l>{PKO$pN+g2h?77QG-le;fz{vNYAS;d??L8acMKH1q5FBrA3AP&W z)+_I?BdRP~W?2SGP;tRLmHf}#jeEEmE*B#}BM0xYbzg|iEvNRWQV!oKL)^DJ?PS_j zI)<|~Ia3C86@!-l@??OPin)mM%hLaWfF%@gi?NK1)tPd5#(1q4y89`|6m96~_w2Sr z@0#(IjmV9Q&`~hI2cy4oWG~oWW{l~LXy~c&Wd;;#3gDXpOU2ka(V7M1cD|P@OESqE zrf{&8@1w@JJ`OvC9`eLRX`yGTaCUiL7Aa%cYYg@5>fh?3&$ z6lj66O2g<85;LV3Jfbin7o*6Cr2*CPrG%s&hlGyOG)bqoCXIFrHQTP6JdsD4!6W;Z z4tCDgY8i?zVbzHJ+9#B~0(lS@EOQCx0$gmJuzPhn7EDq;c%FrctMS~_j=Yu+F0rN= z2J9YQ_yHmk*UYxuVpnpt+jMr*OUtE?XDwX_-(lsTvi=){^TJ_c&>Xp9Yh*)Pxb=

    YzFKbU1n3nmC8ayai+ot?)x-Yp(%Krl!O2-rvz#`#dJ z#{`}aJ-{3e)z;pK;#a<+F?&XPc!NIK4$}Knxnc7RbXE5?0luuAB$i0lG|L#2kQ8kI zFH#$TKpYTrp0xA;WmcWJc&uAT|a@2XT==*q0X(u!$^V4D8#O(q;@fViRuyv3RFe&8cj-xoubt@ikFH?6(P-Yi~L_?1-$IBhv56#EQdt$Sw&FFQF zjkuhoZiPf`Ghu<fbyg=M{LcK!0@21+;-0(4@^_N!XM0U!y8=0 z({8}ww(v+Jum>EG)}l{R(^1gPe=N-GsNcQdfOsbuDhE!Uo#``VwDcxvCX0EEm=#4T z6ovs;jC*6DCz?7FWcMiCh@@!DZbYR1?1BeT&tAOx_olDVZs}RA2w9Fk@w1Tf!qO{5%s3lmMRj~%-4uS@`pw{VoZj}!xO;H zdY{x(x6mS*+~+(&ZwZK8+&en5GVQ_VamEN8PqF&dQ+*6^QF=)&jzC3k_J|Cl2s0Oy z%nt#6Qb+@7K7%Ay$0gmEz*=~c=Ik+U8G*?RPal82F~wDi+eBE6h>Y5l+p&D}ElU?mOJzGai6( zjxqw1O^NJ9ENvvEX68(j8e954h7Cr_2R$o_PMyOl(yBuGhO zW>T(!aut7w5O^c#XhmB3jeBXLw+7MOt(rwH%fsx)2RHzn@yQiQjY{ub$dbkGWtt=& zV$9z#LIVK5?WRt1)KKJ><*U0`zI2DngOU0C~^9 z9<&4A$ei4|0SS&cE#qvG=OE|i8vqzSt@=|!ORrMRvU!LLnIlOE20{0}X8CysBLmkU zR&^QGhq`T=R?jScZLPek8wMg6`8!uXcw^tcJnXUog%kiFtau} zJx24l0O0aV0h-^P7^*JDi)fKr!5^J2=9W_OIvn6_=m6(#InH|ZsFcSA%*)|y7TqIZ z<`_V9^8WZ~eBnol*ld3J|P}sT9e^6|QX7isDTU!^*Z(QML=wGwYb(B+mKIC8=%RA5KQ3)r7y z>Q5aFao?%x#x_YVgW4pP&Q&2LNU*_yW>nZXAdGy(@Ia%WMcPWmOqH4yIO@xX(pqyGA^`#w3VJSx;QsHOE)Eh471~&RPoP0O4>D7Q--w}Tb4Sr zl6^l}w9H8ijJHkZ1c?Ikbi)zg?UlKYf8;;Z|@0pXMn#h#`ZYH@uB!u}C6SwLr@!0!Ae4Y-F5v z&!FH|a+7BC=|T@xseT0VUo%2bBAIcLyFeUn$t{NVIPF=ta+|u*nHRc*7WQ-9T*g&f zC7L0$ZE!jST<+r~aqrfu5xGuE7Hyowo+H0009AEaW>8syL9_eY&r&$R1D{&xjU`kaz#ATQ4ixi0#9E3Yb?Sq~JFWw!EI#0Q- zBa+F*SmqdsZle1d2_^H{dC1y~e|W%*uII)=a(j#nR*uNWrl#b2Op@OPiY1ELKv>Fw zqE=#Y{6vyeb>vhzq$N&IX)?lGq@i5fiT=hgfp`rbGrSc! zz~klQ{c0q-F~PN}b~houvz?al$WmEBZhlbbl-x23`;tfox!hVi;ZaFgHG9oA&7$9i zd88qc6-uiq;go<$Tn;%oJb{{(O})ugtY+R_y1^6^+@i$H50vKsj1!h)f=_XdJ67?6 ziaBakl-qVW`GAfY65{}F^WbGAnXpF%PfkvF;CBY8ScP$9UoB<0X1!NFtP5v0a3i!ETvl2ZB1}V~XLa8%>^sEaS|s%+n->+ACX# zWMx1@yeu1W+$19V*hfl&-WX86yiJlx~)DwWB~os^=gu zd=t2w<#_~E#wjZZ)43Dxg62453W~0(;0YI;WRg@UCz02h$5g>PGNi&;FD0H>(jyCJ z0XGoGIUwMISp5L(JJrWsS*%RkiDR>Li%-j##u)gUcL@_ZXqOY+s=a(?CLB zLlZG}%&G$sf_P9do;&mcmDc0)E&Zh>x-p^{R$`#;%I!GHFu==ufzB$ldJMdpp@!Jn z$ccRNN+xooqVeA#@IB97n5<<=#_JJlH@S@@hU)G~#ETe<3eHuD9Y`bY?Oxmr^UTLjDn_98K?(ODxnt5B#hX-R1mjHEa z=X)G~4+pI&MRhfdrx$eD)M#EHd&z#ybiQ56BgB#!Ffu^gfVO^S9Wp;E=bb*N^l_- zm67xHUo_mW)R~J5WQy@s9i6^*Z<}UL+>GG1Pu|F_5W0KCOC*Zc>P5JG zE(=8#eo{M(p8o*s^v_BysWGy8o3<{UQSMiP^_bhzHjmFT*0VFUWfB@&PtBh{UE7s&%8JE5$w>IlE(QRv# z-L*(65jrsJ4o?`#HBK*~&-KV9@0_Ey`**z}Rabv2D1((ggCK$Hj-IBUnauX)CxKE3 z8s-4A$+$#O)vz<1NWhLr_rNr5sN){O+v(bk!$>X{cJaM-vaE#d#xMrXM^JhSN^4_9 zhMU!+64u`HP`P_i6oN%frXWjnISN&AgMpK<;}v&D93weNt7>c}j$ImCi-@haJ^_S{ z%!G9f!2lkhbL&~Uir(rv)(&6t@>cXT7yA~@)y=V1!P%S_E1m&Ra5=|bdF@BPBxt^^ zOJhD?5l0B~>|q5IyY=|?kH5e$(CUsvWmakx~0jEXkf<0QlN~e+;Dzk zMhX5eTBQi?*&kc0FM$>OtxjPs_h}JVY+$$D{`LvZ;phi6K2@?8EooltuG(yu1}m17 z11B!qNni&GbJS#Z{V3<`N7b9NZ0N1-EZ)jE8duCYNOu5t5%&6?>J zA?Dzsf{MNa_-FkgCWC{B)b?o7j8@xhYl+%FKY5g&+$T7Y4^h7-WLmW=s}Hgxjjmp;c!kl12pKp4Dr#7Cv>+tyU>t=SSwrP zWT^Sc12`|v0Q^0LZqs@rl5Ivemc_3K-!qZ%EM7zkACE5&xfrG|Thu$aHRxsZ~)5NROISa;~%JFV(<3wpw_nV0gA`B>E zI&NdywmjLl8C?uAM{f`A1I*JOHa)yCW&Re)zyr2~!gdTzz@#SRJjmt20H+h8Gbs zgAW9C5);mHer=#~0U4@{S%aRM7}t{j0A{?hq`q;JlN$}EDh^n-NIA~{bBflSIizsn zYkLKCt;~2lO>}3B$p~_)SyDho?Y+KILi>9CYiUq}M-?2}s+H|?r;A>me<#lW074AA z!!c!N^FP_fRCca^W|OtgYL+&25^`LnMU#Ehit>Yjv;p#MVbGj>+4t{F?mPR=?6n+M zQaM+Tl>`+Vy7lu8+;-z1rDpd988xa4+t{MD@|GROW-db!_fU>kj1Q>f^r}%Nr9~L% zuX76PSCMW}BDRteLBh69RGgob3<3{eed|?8KBpaQe4{NPV%vC*OPHm%lH8z46KjSb z;0{RxrVmP&hV0EDoO`x$EIz+-lDx3Q?(4S>&UpZnoG8a9gPv&mv%aj-S+$#Sj=rXr zpW+K`PT~jwF(S6al92|Y#-I)8=HChsmsPwQ|r7S~GdP}j>%Ii6dZ5~mKnFHi( z0QSdI-z`xaGu4*nVTwhHNQ}xlk-s2r&l|rF;s=^$cGA}`KG^Ni=GqK_UvMLXo`p2@Gr!*VEnDqpP+Xm{fXoLuUzjU&sZNZS^w1g_FL^jMv^ONBu38PlW*|goPbVP z*WSjQY@280@~u&}po;AwxtO-*d1I8610)wK!NCXr0IgJ#iX!f$wR)p^J9BLSWF-g6 z&Cku8bM(nSQ(TglGt}zka@ywj zI&III+Z!GVmREw}!H5e4>{D(qH!;W^$j@`uvc;sDmvn8H$+Y3wou$c;{IaTu)b1b? zjQ0Gik|{IMlY24t-da3psz?NGE-`?8`{tCEg;U)kZAF?107%L6P6hzlr@voO+|*Ll z8rF@Tgf`lgZsyuz(3NltV2}^@cpW|JrA_=xQAVP_D>d$PX(qRkl0sTeLT7+|RF2rL zc-Kknbju9fcR92Ej}f=K$@xdhPXV*XIN`$BCiOKM*NVyDmH&mTDo>yq~sMF++DT%DwG%PM{ z@^>%|w0+k4o|(mT;cDOAkUw3oaJ9v{;nl|B$p^l1>OYk#73F?e6<-e?UTB=GcT&L{UB{o9zGgnh2Oik3LQqZF zoQiHbqouTny|B2DlZM*Z7yxw#-ngYJPn8{X({Scx`$^n|S0#57u=eMuJn>l8r)^QS zIdo==#KtBGoWD5hpQUrBsk2&WaqM<6jm8ul#ottLUfMIE(-gyQODQPd zcPAw0u5r|7xUL*SPFfvQlTp;sWDSKZK2gYDL+|Ze=-D9^b^yzg-Ew&u^r|Rs8Fvh? zUW1@N{d!G}3a8}3!31M&G0(MT0I{#lj@aWl{14R8a6+Biw*$0y$mjexp#aes8NeVC z2qUNXlS~IFWMvD6Jy`nl{&PqMj58NtLC(@UQvu=3hp0KmG27Q4PkIYm5fHGk+IRCnN%Tk&bgh*HGAO zp-Yx$F|Zg3jmL262l*7b0P+i~5fdRf9e^3?eSaTbl$k_jh>Y!wqXzQh3yk9!ErNK@ zzgjFZ%Eu$i`^Skw4hRRJ=kE_+Ps)~w47;UTdD6!#aU5i@^gX#={-UN*=xat7e9Y<& zJjIpp4hK=w9=Y#Xot;a`2^%Dkf$NTo`R5s|oUgG-699FllPFB(6@Eg zb4a1hum$;f8R5DRdUH%;Hk_BiBy`6hj->O=A&G#w%JH`#j{g8&{7{9su*PLj&y_>K z9I0=7)XIH|Xts=)WC}NS+gS(>#6Y`-?)`JmV?bL_Rc6YMloQ8po&NwjU`w1hW7pW8 zDKe1KL*?<7+q7r31rP=?lCt0pq<^1UtK2QvnRgGAf$n_{J!lbGzF?#Q$RYF7>ygw@ zQ7f?n%LMHMsXqL1NCYHcsmDFX7#&CFLJ+FbeZ}?T>5fGJI4;IJkmDpba1U%!Wvzw* z$tn*c0DT9)`83KY+#|_`QWStU0nUB->GY=;ZNRAE7FLPK3_v42J+;84j zYv-U`_Tc_Mr6NU&AeoF0m+xeZag6utiXNpDCc%(I2-}~&y>fbB5ydoDnJTu%FNPz& zMse7Fezb)95c!U&hz?jBDCarPIQ0YHr8^CIk;)7kzD6V{#xOZPz3JaU+~?VhtjTe> z5~^K!9S=jEIP|OAV?Q!e9Iu%P*u)&?+qfM%ckMwp9E_)ecCcOH&Tzv$8;tSoQZAvr zm0=rzMPkf8z0NW)e>xeWdY1t+!b?U_w_KhG>w(TWsCpVF)Oy>qBZH2izFyv(_022x zE6}{i@h-ptTyu^xJ@M<_gqKi4hXqMMOCCTYjyvbu^QW*_vjBOwY#Z_DKO%GJYFJn< zA)XvS@5x-9qo6;kLk#C5+)&DD z??IPeyOm*yGP?%V&U5HaX%hD{*~-T7NAkHJG26iBJ-Yom(?~kql+s320i^R-FE|;; zqjuxgsg+{Pk`FKUxef*n@(<_!MIkRC2E;}!^KDG$o`--x&lCXG%e0bh++qNG4l*(5 zX&NPA5e$rup`Um!f%NAlfMcWvMRJ?AqW~Ft{Jl8MG%bN5eXQX8#1zj_p1-XC*w!Tu z-GdA;z=AQ3fa9$(q)QSe@aP$so(Uk3M;*VHT366oy$-q?c%g-1h$;i~VS4AkJ$bHK zJG+`K3U?Ml>g`px6h+SmAbM4)a;t-PF>c`zUAR_K2nClI&V7EKwWMB`61K!J+|3!` zh5=cm)wpP&_;7jrs- zcdj=KV?O@?;nIQMpwSZpkaw4E3lEzBbjP>yp}Pg{MLuM>Eh3aLjE%S>o(JM9IU_xg z(J{`!jj55e=Y!kalj-(Hy^nI|F~XOc?{XC9<}hJvrAq~Tdaj~F9pAnh2* z9>3%H(`-+(6fc$rUwQ%w=m^ia{*;A#i6R6NnbhT2xjD$l=ySyYyoQ-c-Q|*5M)Irk zec_HtIK?!FViFwMm~Midzy@LuUrxV>`1+uQokQ+)=>@`gsq zAObk$PyYa_fJ4(VkDq27bZj;~`+hW;FG5L3BOy_jXh2&#lxIJNJ06uRNfFAPNFHOb zKto`FKrPcBg(0VXf?bib5_n^r^ug`xK~dC+%H%%uBjT8}J%7~HY} zgN$U3{r>Rl=gUdF54CB|ONkXE?!6SBGUzl@~+>z5Cl|;7_YUFah zL#$YAxEq1SPJQ_}rjXW}vKyDmsvI4qfa4sT9Q4LBOlfr*+og+gV2#P)W=4=OR7S=M`iz6kT7xEXOVsCYbzMeQ3S$ci`CKai+ecn@llYFc zqJl;)t9xi=2DAG<;TctD4I429cpQVyf0b6GYt5+`S28T3E;@l34bM%#H>X}IiqLXy zcaLm2jhN&o3<&-l9-mRxi;W`ApJ^r2JIWduQ2pi%3mpC3$DsA7l)D-zUFvVz>9Do$ z+*1Hwmy*q&L)`P}S-II*)7jngBUv=)p;FfqWr;2GbzE>daf49iYv@v!TDG_S)v}p# z0{o;Zl6v5txE|k)9?iYUok*h=`&GS^EOS29LyeIZ7kmFdACut zo1`$YAxmT&jxtY7_pLS|s|gnLo+e_brOS}SjPB1F{zLVo4d_b~I)&PS(YY(n3Qrt$ z8SBZUEedlMV%}Qrm1XR58Be2Qf-}>wr(%f&uLZhA3vUj2JFuW&?#6$FetD;1TTvsC zQ3mWjQvtEhJTr6Y-?{BT1aeCpW;n3Blw&zKZ173vJad|3u_MDG$-Kl%{H*G^AgLsl z$3lLcC>_W#6HFwDU1MC1rAN$jjGxHkr(;Mu5gBC!#CF6+?aW9gXkozzf$5R;pmsvd z<;3u`&Rfh<6}n}=gmHif^&O}MeurD6qFq|e1Z^9E5Rc@@CAy5B!_yr1HH6igIw`xW zvWA}$+Ogc9H0$?BBMc4*%N!m#p_)avpk5;^Pa)Xq?VJpasyH|p!9DZqLN9e=cR^(^ zNe1?jqvI?GBN;94?kXp_DV3)RWtBH9dKb>RL z&AoLcS52xVCAS@c$524&>4QP5?t)oKx07QGxg3u{>GbcKEG2GaK3P>GE=L1}a85dP z{{SL{9JkQtfo5zd8%h-lFitbhdB@WoYOHJOb2_E9#h6Q*ToErvIoufb<2-s2I@Z+P z)tSd$9`(+8CQRkkvOjiJM)1VvgP!N#iqghSGI%7CM_Ahmae@?Of&S<%*p3c9l!VC~ z-M|(_U8_6cQ)pb{qMQyk`ku60S}=~rWmqMS<%{I9xd$pwRbbs$Z>BLt!O3f(QAGCl zcNYM>BOrhnhUD-7!QhUx^d9LVVKghcYgNQ=FU-NYEsvW3U<2P2CRV#MZ$p`_?_M{H z%aULj08#uP{o*+scRW^gJDcI`+gH%)ZDe@W)#eg9w+IF^?T=g^TE(4`v)LKiq=st= zO~{ZaZO9G=064%L;~o0d!$x6V9`1(|2#!VsVZ@T)1mFhs814Y=&2G+S%eqvlHl=F{ zDJt(Hs;D?(zP_OLsGi1@uBUUNx<6?b1cD4?#uNh;kZxY*M22j#S zt(=Z=+>WE1cJ;0L9(6wD%WG#YtCxQ(45aXIr?}_v{P9yOT&{z~^&gK~+7V7C z4QkFcJ<-EeH}YVGfn40f*YcBwtU@5tkk!KP~# z(y}iqYBaU)<_Ts4mS9*orv~$E~4YiSgk7wP-8;H*>llXS#lN@Dj z0tsW587<^M>9`arfH*w@`<}egV`-;!1tRlfa_NsSw9Mdg$M}~YEL~}3 zjTRW~Bn%URJLjsm*Ey?2Lif~}Z6%DPQUz(G`H;q^ASefe*^hCId(cNR=s(N2Hxf!F zWpr^GEUKq?+t&c)d;1zgy0*dua+cBnSz<1^R@_9RjO`g95$S*_i@5^JZ*E=~F%rW5 zT7pjCWEejvWAhCE08EMjruAfyrSw;h(gN|uiinaf)@DviG0zz7o_@3g}D(O|+HCF(gpNEY1hF*@COIk^LTN;XDEqY!bNjx*1tWa_`N zZ%+@c<C0e(>}F zj&t>`qfe_j>ep&bBy;}&YMSY#kcMc-$j#l_Lo`Hm=I>g|uNB@47ew zMMWPYgX_?@JOT*yG~2jIJL{lb#?U_WgLc4HC2~5s=1k)Q1Ne^}K%|EkeJ(s1BeHCniV1saA&Fy-1uYzsOC}O9q;due6*&NR{{ZVy7uA}2M9Tr0 z<|>A1Tp(k)Kw*MQ4B&oM6HS}KO5CIEZX#AyGDNu{j^l!%MhgSO1D>9>otrwUS!!e4 z%o=Yd;zEh%U`AWZc>(JuBQ4vO(p5|&&hUGcty1Oz-E0E#DQ7aA@G5!&r2^@o*XPP$HiB9Ef*<+S`;}aIzBy3~^ z=u3mtk&b!#il~YT$eaE?7wxd4Kb;!qe3`)+KX_zu>%gbv8)!on?9xpVTtdrtoTx_! zD6RY>2)#RUPg-sf+~1m3c9w@zWp@;=!p=1*Gc#>=!-Je`AbR72#d6e%-9k@B*|>_z zsQ`%XB<(H+3w0~Gc^N!s*0ZtF?C$PUmDys5h+Im}-zdoh^xK8(J^uh&fu*a|mG;1_ zcPlyo4)$eHo*8y?jCMbr0!^@E1<--wCJ4~xSI^7GJdxYB2Tt?`vAy*x%`8srAS)*Y zmN?X(pFO>~>)Y0mq!UY0K(m}q%%foP-!4yYy@l?lp5xN4CT&MztXDr}3{bc`^3S;B zf`0Hg`IvU@Gt#KGxtQcoEn%C-lVhPHw zGIO369)uj`fSh$~CzZvxGe)3>UBi%FG0+D4-Fgnb^$gA{-m)?#vKMm66OxFoUfsbe z9I((k% zB57cd#jq*})Zvs6q!GBuuwb8?j&ecdaX_s4lJCB~MiL^rM-XXH?#|!|E(jSo2aIR^ zs;iNr*wC`kgQok~Wk`c7+sHvK>IbM9Je~pc?O9HxwmPWc-1WVUq_;M9QQF%?aT_Qr zBj91Oa7g5CKgHB^=~!LgQ`2yZO(UPRj(e#UUR4UwpWGZ{V&oOb8;YOrb?wb=+Bv4V zQ%w|fxU}dlg~?=!NCb-_&PW0J0o;r!8;@LYI@5A{5mJ*!N_5w{g4*6~tQc&07kLW! z%HaoZOyv6WSTkilRdOr1q`%Y6g|mxUSS((1F6LI}a0~M=VU7=PT+tU|cD>G0Jp`og z{{U$6%pl-KOBq)ia#(^+8;~oZVmyrAA4O(qzL1u7Pi*pLGPzkqe2}CTAg|rVagLeo zQtJ5xC^>Z~zKwMwZnBroS=6+uigzM$v=qn+N$1q{JW#4!snJO``WcosH+L-J2qlb1 zA!cORumo%n6$#{ZCyJ>`#KH<%$&)^zq@;#ech5b$%CQ8=K+V*sU_m5wBau|0Qd*5p zlyuxR5~euX*~&&6oPF<@V{SVSVUl{%P;uNVRg99cLE1NtZzy>(D>Mxe$yPmbnZPXh z>ev-$KBs4AEA5J8D<*BkQANlFfeKeRA20`|cGn$mjP>bR(uynVcLi;uiq<`|?kpBV z&Pdu@l5zp`>FHNaH+N)7$tTKi(M@-<)+As86BsJ1f;yG!%7Q%7sb-Gqe%OC(v+fR`fIM zYAmgD07!vpByEFaXi*6upS|731fG4(B%4|kq>8hp-Sp{eEbVTwN(Y#shy_A31hb9Tynj^fjVPBcm$XUyVNB$h&hOXp?MZ z@PW@v9lt5hITYlRR%WVFi@Z(e@eZLoPiofc%rlTaWkHNKLmX}&_8Z2m$=Co)Qae82@b#{_@01`k73%I%?_J@0amxtoaMk*1WDQ1OmY`>7`zcLDPC zs!yU7&3UeEr-UPruEYlO2t4`>@*6+?s)?;fVrhJ|Le9J7Go)pXPWC@Ga6h^|dBq8i zJDAc;L~`oO8E5kdGM)-(w9(IV40lLmL*_FfUWafhLwv((duAvp2f)ddy6FEb-A-C)}DyIV; zqbCEWIi}E9p(|{iqS!p9aUpQ5KY7mVE_r1hyi_J~%SO>%&8?JwXc4@sSML@QGYL2# z?Z{!%%v4$dAvia#SHe+8-4G?Y#Tz7H*Ws`Wao~bT8>3~oifDK<>Y(!IT)ut zLk1&ZRuV!JZgbON=ve2zGgfiM>0vGHA|^#lqbzEypza`_y|{J_#tujr!KRTaE1@by zJhyRdD+%562N^j$V?3xMu1^%?^tn+@$s~4qj+JR|Zm$S$E?t{t;4X8VoczSLG6CRr zHP0Q-TC`MRtW~wtFKw9?(s6WIn8;)qZJ8T#2^l?`IO40>tCI@SO3`NJuBi?Dw-*|T z`!x3FX2ii#8@TmiILNG}7tD20#9cKeV%%yn>X$`fD$0suh9Q>Pz<>hq3$_kUPvwf< zIxS9WlXI4bE3VlMCsUFLU@OWqE#)-GY$L z6U_r_1_LB0KKv2}4HB}{+YHpF$oid>QQ2D)9mBy9l4Fialk(seBwg4NH;Nv{)BR@)aNJ@mS?>z`+ zwX?H^Sv3QhA(f?Xm=yCffZK-9K^~boq}vWkaQN9O+}g-xOA;Pf!#>0X#_2~J*^U4Q zzJDrDn#IOc?`UpVo;Uu?`wj3}H-%XwWgwRw6b$j#XeYONm$jL{+2vv+9$Uk45^T3p zM3MdAS$M`ef(g$9lirZh>b4=cCKY(3-dZpjaz1o8B=tDpck7Ni(qd_sEv>F~4rcOJ zIah%uB-`kFb??u$9LCV4DQ;Yv$`U-nBb7Y0gfyGCqUU$6R~?BM&lN64>Wq4lNoyXS zsW5i^Yacz%0M~m^!%!s&m^?Igpd;~VOri&(EwG*1AaIJgOi^42d5^2 zentd=VtH0*#>iL9ET`s@LfPOPZrXeBF+(N!^fzr`xO;1OW_ZR%@11h{oBPF2%Y)o- zMl(q5rk^5AqpC<*X1BE=$&pmZr*2pfcqasb-eo>!rJPwv zt}>-m?E9l2mB=I?%zZ0bD)PC(m{hb?IQ1p)thW}L%rM6Yb(TLV_b|=}a7vNisQl^T zqwbF-n~o=wx;t%R;=tILQYJ{Hbt-ZSsZ-8!bM@(5H0`=Rj~67P%FaxOmC|7l3O;N^ zLtu`B=HP}WBl*_M^R;gF9NU?OAjEAamf&GoPtfu6dj9|_Odh=o5W*#%Q}f3XF*}$! zAoft*2fy{IxtwXH-(uLfw}xd~g;t9jfb$D5Byuu(jP%Di;-gEO^CbQ4ipnC4%O%XJ zrbqqSNy!Sm836Y<$6BYM8Y{UooYf_BEG-z^HWqgKs!8Asp1+ZsM0B18NBl;*$9$Q=O^VDAY*VC1F$sYOs{+QWyHCaWp{;E zMP_^;4agsO<2mYaoZ^#6q~x3B*yHt!`_HvqM4(3F4G>?L0mfA1WF9!rdg_cLW9M<0 z>dK^}v7EPeaNDt0W_Mwj!;qo3bmzbKkMyk+Qs{8Y6IRx2eS^7`5kk+B+d&;%at2Qv z4up(SlTp;y2hBOCZ*z9;+*v}BTYSnl2|As_84cf!++($2N~3Mu_VJi?N(xZq8)=@j^!*{w=#xPoCCuQbCdL}Q$2?J4VTJG zc&=xYd_qhX82MMB9AFSn>r&TN4{Mg<@`Q1sJY(l~agtmE#xv{cPdVUIDQr|rU$ag2 z$x~wnF}i@nbjr5kanDM2wxnBIn3}ci)uiI;*hEtvS%l<##|I^c4eT@0st{7#yG zk;3~CSW*u}wwHE#rlsbPAZHC0?gIicN%#FLskgF1T zflG`9ZsYaiJq>Xy-1J&jRv}Et#axn8kuDA}yyLI(s(K+t?U3siMqq@d?u!0acTSK1uo7xtxY~xEwiSpc%ftVe<&ngXH1y^}^hwk0MiSf*7p_KB zdUao+sl~$a<{lDum5$92Z3+O&j;;FrE6r^5kyhd;?oW`!G-PcgoMe4{jZ|A&p){Ja zGBlfcY;Gm9eawUA4UP^^03OF3M>Wx2YNS-odJvQ*;n0@mGaE8Tovy@VJagARq*J8% zmc0U^Y3bDF=CGAyjzw+CpEhyH0Ar_dpIYpVT`bONQ+uO(OGzZte5MSJ&PY?+zIyYT z;;%bZxz~q_bnL{NYR%-3PEX82oD$Guq>_da`8RSLPm=2cQ)%afbGZNk`y}E`OGNJ*ZlZ z3(huYJY$YJ^ZHXM_8O#}zyX|({I9`#36P$E5TNuw){qWDS%*w?+It^!{!I)9Ws0cZwDL#)09*e6uRsGK zhyo6HAwaSYER^D&msT2OlG%lRSemWbfUKliPP4`;2kx zUFmdN95Q#+kpxr-?ej^VG1DieJpk$NPU8UV^R#Z8PnIxHa6#yK$oA)&m#{6#i1PNf zLb3qL8y|Z(INX2zRRs=(qJ~qk6*iJsuQ&&sbAnH$OVw&>tcc=bxcLZ7u*k{w#yRKt z(*#ZgkV?;-hXEtN&M;WxyL1j^Me#IOtgSKGeiM7v9Yn3ZSSz#p{8NHt|YZTx(qp(@nP)uqurD z9o*!fQ`h_}ox8KXoGh$pM<15U<|#iZBOH=K!2`ATq)O%E23`>`L zdubjZWOP%79drKx*7u=m^#ft6)BFd~V{Ouo7c)_iuC?wN4;-=ls>@1No zwl_B3PI5n9pIYKNTMek#U^?~2InVf07UQLl3%PN)G04frJ5r0((G~c>U?1CQrg zhmjPLZB{ZJ*&Gv)Kl;>?AE7Xalm+lO13cp+q59Txmtn071QCLHQUSs4ezgM}gas#Y zP`UfR<3NFd&zRiv(;mO!OiOWb&ddTy&!$J#kjE8hjsUyPV0&}opd5(jMLsKT6f&$U`s74FLLC}@FYU6WoB&JDi+jYJtzV^#-L1JC3!sW3}W{hd2m$9Cgk* zjC)d)yBjE@Pi$jr4XPvPJ7G=-;wv)H)sSp#J{0gh&UznerqU_0Z!#6P54&k6k3vtU zT;sh@Hln_v3jLygvkb88M@7%+M=<(a=nN?wV*?-!p?!OG>zaU1TN$^`cSnK1T$($E7g8QVW7USfgOaIcy%8Jb-%&lH=T+Q4lhg;NazQ zQ~~e&k08)Z#<>ApplpB%83dpAs4XFrIVcc(yyGLLMo<`$w6+L?>xD1McSs z1M;R8=uaf50Q<%81CXSUIuLtc{l_uu+e@_if#BxRQ> z$`ytmk~8)6`eL1nNeZqA5;!c%NK)N_^~Y2Esd){qgL4xhS6~2bsuXjct=EuGyzGy33*m05k*p@^XB;bta@&5qp)Us@>>`kz23jY8o zB<6%^kkZhF<{o3TYFHOiPb1$XbDaK_N<9X= z#~teFa86@Ta=7PnbjbAmYScx2EIcpFvpk97>=zMoDa7bJ%}6T%h*55;7wuNZ6gc z?mYEAorlw{F+Fz~A}}DbZw}`nPJ4FrS_({6E(5BuQy~fuOdiCH_vk1KY)*=bHZuTv z@_6_6#%WlV`kegw^`b`NC26=hD09!gIOFoIRX5a`Rf>8X_5Pu$T={c=c9{bzAp~O` z$MFN{S}3Gt?OV{yK3&FUWdcydoE6U;Z5>7pGcwSKAbq&WSoVO#WOZ!te=+z_A|k6I zjO7EiGMH?zKK(P>jAEKARjFpi*6RL6kcKewq~U_E`#y&rwKJNDq$#;IDI|?qEtB z`h_5q=}e~Wv1-`7(aQ@Fy@*u|*gq%U$DsTvScjt{nS)G1%b7N&&T)V^$;VKBzVypP zb2+n(p^H9awocQzbJUP{T;rZ|LK@dnys}SnlHC}9iE@J@jiBVX9hjaoPsnP^Le0GG zIBoGEjwM_vZVDb$Wc4HKNr|fsl6f04?D_ZS5&i9;U~&lQK++tSJLP$$l~LJnfD`jz z3^6^i&<>OZh{+{{*k?d-D8WA|JdxNQJ!uS$yxAS3D9Y0_N9GI(+xtuIx7b_ebQoRpcCj#^xO7 zxd+;nhYsk;Ng3xXuZ16cj>8z^-`bh0O4^WIK@`>(0#X5uK`c68bk2DM{{T9uJ2Naq zTaAtw$+u(f`$9?sJZd>OAA18Fk9z4ijRmw_f-@(|jlF^75Zr*npTitdAHg9=Y}K!^gXDu9knANq;-%njglgF?*J(N?>^l@kpnA$?RelH_0@=KLHP6%VeHT zNdvBW(w5dP6SR{%TY@doh;AAqTn zx;BEe(`QC5yr`BS#54$5*bao}zot9lvRa+hY?G5SZ7-mj+kDDHCi9E$RK8j7N84Ur@H(){m{u%0m4$2lAmp0x{eR=Ia1-5T6P8G#FecMPd;Gm(S$ zk3rs`sV8Pdo6zMxbx=7u=rf(5;~<{k^rnaI?nWe$CNjjrHze&|xgEm}gnD4s&N>qr zxSf5x&ngLB#uY$O!63H;djZz4MKqR+smFMtB*NWo+(Fys5^{F*LOOS=Ztlk{Q%OxTTwE;n(cK;KhQKP=+IJpz9=}|Q zUZ-SQdl0Lz%X17uK@kP=%-sXVTjpK^KN(TgN9IWtL%Xo~T1$6XmD=J&0tre22^hd)NdOFS(4Sgpn_ofr zjxiKc6;+Uy+D788e)eCFmyY~UE%qxJo&|Y=GVEXjAPu-F+;|w|XQxbaOm@D6kbxnU zBnpyUlewQ6Wyc4x1EC#>??9!dtDwtrt!D|8vmqFDzzVrPdvVFh#z6ctiUju|5v=pA zlqv{AxxhGLGto#H1G&jK=qY)cr6;MkYoh(0ISZ<~uI;_9G{}ep1PtMnt}&mLbCaJziUDtAXZ_DH zrb6;Nzb*(kJn*UxGx~R?Y3Mjew<#3N!_0WY1V&&8JPrGXPCXCGX>3icp`jwR!mI${ zt>pQ49lb~K404_E`p_t}mHU|%@Vx0ClMBNklPp+Zb---!N3cG$+^xCLqTAC`N_#t@ zE9x^zz9H2Q1~9xfbHN9`aB5VO&{L-3tcr88hlS!H!{yYoV?DA)21@q9#Zv5JZ3Y;G z(=-q(?ro0yn2)=h5s*n!`E$i98SJjiq>-VGY;IuN14_hiDobOK3uG4={0Dlttqm>J z4_h=5&anV6pn^yP1-Vr!I3uwm9jUFy&8jbbnB85NAw`llbLFve&x-xBUFS$QlvrW9mn``r6iHAmdipL(|^8?DW`5*~<;Vc;St1B8P9ymE92GivWIiV0xU^ zke#$LtA|yRl4MsJHS`hrA~-k75J=>LOn!tM9FI-~Y3&ilu#$SFS+uZgN1J}xeADu) zWnn5v>B-3+p51CCQN0npJSvT)CT~eJPYiL#aMLaZ=3I=ndgHgS8LZ7>nw8qIktDxn zi|m&wOG@b&+@uGIiN<@AyQ%(^(r;sFREm7p{{V+D=G9gx%-#zg0)niQwidh&{w(2YM0YrLbnZ;l6e|NLI@eo0NstC=cfnTn(2%bR);pOSCMgb zOS>(qi9wKJI-(B$% zvUD5RxYt+rk!`goL4qk~Xl6~(H{```f!X{Kh+G#8MR-a*jq9w*X`kdiOP@mgY^ph=eF+8f31Vr~f*bp( zx2q3R`qeJOUCa6v+#YK&+UZFOd*&qw;~s!>>s2Ty=(aj=^&I`zx+-4U$kypAI*hY7me~r?upc%? z2y@tQDJP|v>QcV3Dqby`n|o!PMsvmDE%mX8AZwXfq}+s zvF$iW;@GDRznJ@%uNx(lgNhdr24tv(yqg~Lm+eddPXygRJgk=YEkfRyE!A2*du_wJIu0vXq zTiYj+kj4{yDl+o&NEt1hWGUy<2i})U4m%lF1uidQf(cegqg|#)ZGeCdH#j-KY=KdI zMby@_M2Iv#W1Xx{LXnc+byShV5!i!)(9@l)GD(ODw%r+&Tx}`4G5p1*3yx(VYY}@A&?~+9YTx=Kx$;c#w@`KmwQjU6?-4G*Qw14Re*&r-& zzX3pQq;Z17sj5t>ZSssuiFDx8+uUtT6;6KZp329NzQlXqa8xysmQFZTH3`Z*r(bdR77P^2nTS&k+%hg2oaheQed)YA42b;NL3~h%lxCACn z2UCJr@&V6UQrNm0zazKtHL441OQ{=VFvGk;9OYPj)5bRs_IhTsNhW%jn>eP zv5-eLo8;aJ!zgAs04Zm1etd#3K{({%n_65+I5jKiE!Wxx_mzCPqC1>1QvU#Vug$@3 zayHg$O$}^3kBh@MnJ}T0l?;ynpzuD z!c?fcBdU)@ia9N0f#Qu;Ll4L@Km$4Bf)s*!VCR~d&g}H5;nZznQKGo*= zaryFXk)2OG3>GJa1KDyj?@@h5K_tblCXy)0MwJ-1Ao2mp8EogV#~rD4E6io%{hX!I zIf+5cdwy;2oD!M)yz+XU)wET$IqJ&BJ}g`0>_md`)8+mle?KC9w`8KyN%q18-t&l89ZQM;YYUzy-~)Vu4vA_ zl*CJz{O>w%nPWNXGsZ?0eSQ1Zk*3+niNvUFt7aR`DS3*!DVGQvrqbVZmCikdZ)<3e zEzP#w_bgjmmUOhv>18+rJTV*|+khwa?@IPsjuhOaptohT(k`7PR|-RCcE&9EA6Cyle7!WW&yNnQe5t_zwQkBu^Ves>(PS0IT9eL9C zP-m4w%7Ap+k++}&kK6y9L%xT;a zB&Etm{#iu_j@T#ewtDBcYP*=Zb!8EEELOteC>BND@+k$JDxMfNe}mVbrCcDTrOtYl z5t6ULZcLU^2XL{-F7QOD@`bjvqlJ0jDk)v zfCe%%k6NUX=yUr?&DpbgY@DEGot;@(4)Dx)=WxeTPZ&R$u4rBn-xz_0NypX&SGLoz0N4bc}Jg(4r9DQq!sPfJAC!P?2@)s- z;Br909Q%H>U9C~9lBk?oIXjh-D}-yO5yFFNG0x`e^0!^MJeuvNQA=~?@iZq+SC+-Q zEn?${d`W>V}$``Is^Ku*jMdaHl30^=n9 zIL9J^H2Jg??vu=gR}m3~67^C#lg@bSlZt!nH`ODb)UED}jU*@%D_30kss=-h9iVae z^cAHisl$qlt##1IvGVP17I~#}94y-xB!$4>bmaFKt=e5q3RZ-NxzVq-?9xTeJVx{TsKp zdx_g-&tJa9*`%{Ii5vj(L#tZQr;S`xcf zCT>TtK7+P-tS3cD^L095S;cbnCa@Apt>t6y2{!|bVDPy;X;f=wRXgsFN`d2=C1p8m z4n{hTzu{gq(^9eRLP@KV>{8h$XeR_5bBc?WH9^|NfK_JQ&u^fh4C}3_B!$M}_`w~4 zKhC;oG}V!XMXlLUiP}LSKqRXA`gX_$wjqzUyM{T0ZgIF{-#(R{T5YSMsm&*1eMJZ< zF)Rv?yaC5PzLgkxZjEZLqbwuqDc!Y6*_@G&$F(~1`y!_vrmvXUWX@HGQ}6zGu4@|H zZ^+mRI0NM;pgr;LKmm}Z>?p|?&#C-rp`i#NPeAz}j~}R@tBQ+`_+Fg*e>#~A52yi4 za9Ey){{XL20KYyo3_#EpHo0}7A=5u0rUBc`hQv&48yF3 zUb)VAz#jeR0a8>FGdIkNHxbwIrC|+L=-^{3jt3t6bIvK6A~tZ+9C8%!Ml+voxW{^> zp*Izyj58Nvz>E$!`ux4;kAQk~{LMB3I>@cMLN<^w!Q}q{^{4^O(Lv}B%zAx5 z9Ze#Ptxs9C(qb}743pz46nvBKgVO-kl&H$1ve?e0Xwz3`3w^3wU6CY`WkRqq0(R~6 z_0N85zMT~vjtaGe!(VPy4k8|tVlUEdU96Y}@ zg8bwRqZ8}SeTeCfYF+G7+fH3XqGn4t$`6EwIk|mJ~;gyhlm_IQmraE;aeDPMn4X}%+z1F$#=%!1S6IkPf?!# z07Fv7ks_&g-h=OwK3+KQpHo@4ak4k;e(yzpVRzJ1rJt6U8;JpRR`2{$NvCcf=A?`DUes&xA>Z1yNpmi zP{-vwws|=8_M}kHFtE#TxeI`K$o%*t@uy<;*oc*2g_vz-Ju`u~o-tH}N}uZsV=8)M zk^Ur50x}HeaOJoMo_!8~l>-2~`IwMKa6iv#R{_q9pzS#09)$jW)UGjswzvSCV>@xl zpa(JN8~^|$6Z~J51B%p*t`abcS#a4I#&CN66j_yG90G=7cM`d5XOq}twP=?@Ug8(T zcxER9IbrMClLR-HW97Cv!6)^`JJ1Oef{v`skQ{9z9Rd2%8_=(aiZoIU!yhlI=iGFr zHF7nCp$0~5fHHB^cKoQg+w59+j>Rl9^8$Jwr2!UImNO#|+cC~YbB|2+rRY`6ZBE;K zV(~%qQ8tiA1ZM*o;hsI`PnAmc?u}q`})Z zPEIzCdix5C2Ku5R@#DT3fLxwB;AB&=M2y9zD-(0SoPYozasd8DlR?mJv%C|de{g3% z(EHHP{LPCysb*)3Jh#jN1Yi$L(ql!Nh)Y6lFbO~a4cFW79@M&y{R|0Zc$frSxqLXr zNCao0?0*W;D~Y~^236V^kr~~S&pG^kd*^{vfOb(C+aMV}OlLUtIq569K|#|g2dFda`h{nTJTD&a1?#wykLD!N798&16M^N?;@FQ56;Vw2MV3Cq>&KM2=-PZ@O#Q@klrgtiaE0McAW2SvLpk72z zj&qJb`sDQDor_Up3{kU3B+l$HlBWlrfD*j%>rUb5DIh9^2g(C(ILRG*oblF>SVJ7U z7ER%y=bgPrVaHHt1lHY2uvRQ4GI`Gm2Rw3l$n>cfQZ{tX3hu|<#~Jn@_2$LE36<&+-><3@JP>pZrP+KE4>7da_@Yx1vmpgcyrUQAI_5#>^#b{m63-1{{S)F z#tt!pJ9^P@S0R1mt4K!FIT;@*C+q(J>ZBJHk~x1ZR_)%zUjBNoJ8@g^m?SW1M97IsRCq z%y;TNwn6vUvD!ciMwub8pf+N z{F`ma*$GwJm;|@`M0Esnirx^h&na_h(9BzDBl7|l+@P-3z#~05&TxC@=~USlCfPV< zAgpt3O{<*XcWi$T)Kq|yA2MVS7>GNSf@8NiIqE(51Ky5;=uM|-&!|70Zk|LVhCg{R z*+CsotrBT&X&6dd9U#)IELn~9$Wp*49IkQBK*`QNohvSO_BK?amDyr#e#!^(tnJ&& z5tc^I5c}h{PpIaSrrzTAnpqeZT8-?xAev2xK>{@;ROgfL$9lB{wG*i+YGgdjBQirM zF3g~0k^*$jamhW0UiD=9kA~*fByqb6iH6QuSh@LddY{gd6HK-H%V!C=IAt5tKQ~YB z9yrGog}G6~vlfNOXKlG|a5&E$21l>*pn4J$6lL%N!xm25;flB2BRjbV)cpl8)QV|* z*ySbEDze7NGu4JN+i}l-e*9AehvPFNTaED|g(fVLPI<>VGw91XfEJjjdyKRvxDL|)#fyq$34EOzMTz-R^78qz-f%6A(&NI+tZR_8q zAoU^7mLgLlA!hlqGn0}q3gagjpjgyU>N~biOvAz;BW`yO+9oR zY-22CLPGgb6SmR^$$&HXR+mhs`j+D=(SYdRDiXj94ClXYobkm^QK7z6jWZ&gd90^6 z11d+Kw#^u#xJdYmLLIK({jz78y;DbzySzNCy zQ*0ZK5HDlK2V8eQjRh$y=vG@*49|j*s^oxhdF14ODlc-m`xP%tdxUYYW-$O&akK-` zv)uaANUCn<19@pZz0=#u1BR0)0~q748N&9ih|22c43(QmcbaYYvf-JqxFD5n+-E&7 zJ-gKz+TfP6TqfCEZ-tAKFG5EQ7a3f)OrCvc8+O=&M0p+MF^Jt`-xywU6!cyWNY5h_ z4KmS!G9+h=LhLzaJ2E@)I$-iP^*w1lh1n6WlBOx-aNbDW$; z4tjD%2fs>(zJ>R>z~;p9op`8<)aa=z(?r@*VhN;+C3<57 zgM*F;``8_`pL!OC@h(Py}$8)?wabXan*#D*|IjxpHv z&jgL#x%|y+ozQjE=-*e8u*yK>)k(FFwgAS|@ zW73*dVy$-ro%4g){guY?E+uTYD&*smJx8JArESZt(ZZ(Gc}8056I#1vqgW(XF92b> zGQTg%F|~)TXp~E*H3w#N^7&zR$0$`~-ML6?a6Vo+$@ak&nb{Y8hBB#Jf3z<=`Kh@4 ztNbJVpHh0$uye~>Ge$WBKwycp7UETrbK8Iq91rgvO=mP|Mr}K@k<_jl(6TY|T>x|h z;eZ_jaux&Sh-Rei}bCO#nl48u(ge2) zBR=T1qM-me1C6DQ+_vud#cFaWyV#3pxQ0~{G&lgLk7nJ+g2)??RPb@v^`yaQ$1G4F zF|PLR7MB&9igH$_`F=B#uBn-=#fLcOHYGJ*lFta;W(WB#NXKVCbw{YIX|hah&^pbwrI;g63tmCENw=h_UTVV0?t&BX0geiwa4nbV&PEW|XXovY?4Pq6t!* z0K=hNbUmmgUg;IBWVpAul3N)(l~`6e9OG^?o!LC8?Z;Y{lU8QRZX|c}T-`|P6wXM& zLzBtRQ=gPzamdepDWsP{smZT+(zU#{kI!j~s>O+6jriV3!*YLIahjRk=!>HT70)k2 zK36i3+I&7zvfzc~j_wOE>G| z@W*2#6lpd(VSRw=d^ytu~;AnI5z-s7hp=AliaUuDgw;&bxpcb3r!?&N=+ zK)~9;!i??O4;k-|uQjY@rLoCU9In=EMtIq-u?`Czk9Sjz?ezO0qd!toIoy zyo604^Bl^m-@ARFMjM4@KYQOCdQu&t$fg$;FiUXXy9JelpPL(p_fHw`gFr^f*dTYd zxRvC%2hG5YzsvJ5<2mGB|TNBNAKYk^Z8_o$4j#LNtr>;Q*aP6L*=;d7y z?RLZgY@I#H8tI~Of<$!)Am0hOc}Sy+M!=cW!uc7exgbEvO!=+bL*e%)eN zrkioPax$SwU7>g^xgLj}de(1yo2c^II}ccaF--_y$rcZ0%kjtI*qTK-Zka}Vi+EyI zGXP&Be)3Bqo=!Q)9XRJS(!RkrZP9`?Eb0wC>kld?Wrj5*vZ)vwm!mdFEs$|nC?y>X zp?1}}ok7_@nYL8jZ4!xH^R&0#0mt!rag0_4?QJ(8np1Ha#XB%^;e5ql0}Sv;A9v9D z_M}`=PUxq~sko2^F|ZM?Hib?@l1UlQY~+45aW-9-_1HvDyJ7%JX z-3c9sPSg%jOLCR<<-9WQxI~6lkSUKDF`sN44Zvh@G0@dUHzre2k91^TYu8fEJU(;~ zI!hT(mv;4#bSyGX2T(JL)l*2~l;qNJM>ltH@hoxXQRd3g#PPGp$h|{%4WE94xUCYl z#wu;QvaRN#v&jqHNrSbrP5>$gE%OW>dhQ=e(kQ4$O$rb+k%;6BS~pO>SPs$`eiZb< zz~p-RcdFT3(Va}XHkLHV;F%?sKz`F3a5C&R@t#KCT<6-koZDq6*_^e*X;*?N?BbFw zOfWujaIQxRbJ6lR`Gso>^)h?AY-Gc1?I7~yn{BDT4;5e)7DBYc!&#sZPl^29ez)YKN}SLj6z&yh0Cc8=v2aKR0?Z*$Nn z&O4EcQ;pW8Ms5;PM^hP!DXp292lC!PByIlyC|{VW^O8D&T*)`?o{Xv`8>7!|(tDSX z+q($LV6z1d*=(zJEB?^uirH$caZi3>&@0L&mR0BOoumC=?oa>;2OQ(ST6PPNUP*A$ zi+Bn0;@ZqmZIJIg0l46Re;-P&Yv@Z>BYR2V-8@SS&3FmGBsw0AoQ=e{ZhtCmGFd_! zau6y*=EXESnN@R!R@;Jclwe0GD>;-0$ZMi*g7>qIKNgc2|^HSA<=%YIyDoCB`=2T_Ej1D&f*(E^dIL}OH(v$8mZ!{=*o>XLu%tuvjy)fYLpbT(E zdxJv_NJGRBt|XNeiHNpc6ffQwY;m4IQoW^=66Kf&9qr*`*5|$Ow02ZF0jQM>${*TF9-IyOCQ&pdzyo2|ioyINOhyjP)uT zu*ftO6{nDohASef#`1w1%vgMdx;O`epQd|LGh_%J|;5JAHJ&N!t zrYElEhK{Wz;32ZS?;Sj(&I|4w65X@SCiOI-t8DEgg2r7g;U+|mMax0_M4%vm0pZCR z%N!9{q_1<U$%Ah|nY@F@%>yKL1Nj*{KRi!#_ zmT03iHwckkTu7~GQ|}nb-_8|qFbE@@{{Si(lTUZB*%2m0bHyVM!iUC2@^@sB+-K+wYPClcWRprp%3s=EGloGNP%6g$VB$A%!3DSbqOt`gXj4)Oi^gQ>^pgeO^D#>V$m}OO^@jDvu zXf_KI3%PvViHWvzf<{*$1CgK0y=3b)dQ`HiNqg?*i^FXSD6@_uHM%0R#uZqxJObTz zp6Wd-DM_=?g$i)^6404!3l>Ge!!~i#um>cXhgMz9zN<>j zq&nI?D%wKlgA%mT5=$ck^5Z<5=dd^wdsnbip+P&_ZA~Jw+pKLHBN-GE89y;x@But3 z;O8BWdX=Hr?yX~m)ZEK|aWo9u#@N(9&4Z4(AJ6ix+G@}~TOTXelSKd$Hz&|*~TGy#N4QXCTrIIp2LlVf#gO(kOl>;4kJ$))%me&@pEv=EMrZRbP+S`!J z4q2HA1Rk9a-9DJCE61umJhr0#8t7fu3KdO<$vYXCF)DHW?WFL1PaM*t8?#*2Uh0a_ z&(o!nns)ZBdq8UCFvLdK=3c#(cOW%w+In&&WqoJ03ru zHG_@MUh#wFi`=mxXrp&|N;^IakP732_mmIIrDVG|f4mV`|zPNNs15*h0l)%Vd4*e8l^c+ZBV9wbbr~I%+=ZGjFsVJ5}8!qoh-U zj=osf0b$50I3Nz7epR(P@>*_j;l-^V5n?2bTD_pk?3imRbJUgaCxNM((U znU**i!N3{X_~78@Xvg76`4KoKv?y3U>C){2m#^Lhy!h^@A zb6pUiq^yz2JWQhQ`W;@0sI|qqUP}NW_c~;4!0VINxocD9e5sw-dbf`=M^g98G(}x} zravlh3FLJ>uq&IE&$-&_Ma84f9zQ9c%y8Lb{9Az}kMDH+_^!vTta&nxn>94YLSE7` z;v@l-o`sHbPf@|@e@dE{_?gp5tMa2u3lwY#{v34;mTsf#@1AORHrPTHfcbW9RwZ-u zWOgL+OJqGAt}axv$L4J~E`5*tAoS0z4`5sFWnH4nH=C7aRl!!tZ07@kfJS-1Er(bl4{P5i$r1Fa$)!vRmcIByvGKlb*EiaJ7c{G01+- zzr1LM6@MI)gV*X!K5Z^F74V&|me3?A2K8w%^AUs3r@jYlR|Q+QbGn*VQ7pczXQypK zRE_y6xX91wD>+e>LwMJXBcrvshVcEO-NcL0kD25@V)7$UTpKE4nE&l3H$N zc`nL{8mM9$3_D}c`qkgLg`3eGJ)6DFqDgSOm4+A`1IP2PKBDEDQ9UR-#Wr0Fg;Bz= z1C#07C)S{`!=2N(Bmwt(p45ZPV#c}Ns#hP^{P&{aVa}?kSEvIXy?XKfMKn?ZGJ%+6 zec_G)9Rc>BV4%C?bQt5Q&vWfjA)s@(ZbZQPclD$Ku{k;RCy&!K0Ulh808j#3Bc2ao zOa~~zW>1+$F`RYoeSf7OCG!!LNLD4A9B2A^&@wbt4p0nk;fU&U+unf;WBdv>kO<@7 zwKB-WQ4^2`agoM8ywS|Xxg#uVn1c|j$>*kM=3!w z4PKj*0dR5m1%B3u=~Bw!A4(4WSn z(3M^(BT)YUJ7)tcf(|%S{op-mHD)wEbR%#@RxS5bF&%#QBftLus)YN4A&F7s@`{|s zNgRdAVaVy*{F+Vm9D5p;`d!?`XG}(z;mdr-Z>Yuy9jY9X(B3qgH?1sECME;F3JGld z-1Yhor9<;NqfI5DYhmOd!IKI?;NWLDBd#fJxn`VEvkxtJ+%u2}Rs#f&r}L&+ zV2pB4%EK5O=luE_NP-nqc|>3wX8-~_dkP-KAxLk&fb2O0XO6W6isC#n$ai3Z*#!Pr zrW%ftO{5iEgTeRgJ;fjsch9ka$sPGTap^%wX4PZ4PeFs9{1?D9>%CT z7F6dUh64-{jxaiV;*f~h_hLLT1pM4&ayZDO78$ipazkNpk^Xq3QXli}K5DQz9SDreuyiq!4mf)Spq`@vFMrl&`V1 zZ3?LK83B1QmIEC0<2mVBw{uQg6FgF~XDShXZ1*G|;XmU@YUM@*vq>bIxgebKanNIs zC>q#RRKmuafPb0r20L&u*NQ_YRalPV!@Cv)909=NAO5PA%o z_okUijzAs4D`3dj$7~Mx=t!Wme%{z2%#FHF_K!IB#yZrFD#X`QtPuHZGVDH3y?&T9 zZW?aRQb68oTrNps3o+x6J$r##uEHbR3jrTdC(aktk=q<<2RX(DKh9`O0kY1Dm@I=h!26)*IT!=+sT$CHkHnjmSbAdzap~*_ zuk)ZHwImU*%8H<oko2QXNv`ys$s z_$+aQ#(rN>O2Finh{td)Wb?v0u{-=<{Rcj@3hZo4 z=0oz0%bW}hbmW3PsaPA-jgOj81Aqf=T$azK2OT|V*lF8w(z3WHiT6$%mB~09emS5O z`jLYn*cg%WoSnTr{W^XW7i1ZB-m#~aB*qwXw6C|l1$vG_xUsm|&!r(f ziM;sCZb~-v0dO*ZLCGSSJg=bEDICSsaVG~PWP$bf{VHt7t5zDyu|JknDcl=(amQ0s zTvnGWg+j<1?_`ct_3Uzb8b*wtdc}zI^GG*1-HhYE;X$7Ij*KZ#rCZBkydE%noxZy56;{k zxa;)I4UWk&B8wOsiOGC0Jx_3XITRt>jaY`+2oaVUFa7QaAFqGXuE5&ekH?n)-r=Pj zw>S%q-N~f)74Ggh6lNoK+~7tD!j|ezGr$ypLepeL1A|1#QG~P!i-H zFrC2jka}vC0+Hd3=>^OA&e26~1V&V4IXG=`ZW zBr5IP7nRO3N8KEBqW#Cdg9b}^6N0(JH#o*RbJw5Fmo9}}?ui`>97m6pw*Bvz6WLA( z`sSsI{l#7Lx+;*)*~s0{k3o!PkZf`qzNx53dh2XVUPxsKgl=z_1mN;$7u^WV3vPd=r4Cu_5uh;5EknQ+5`iU`0RK?jmP zm7_E2Ln2JzC7kHHm+lkWhU!4)wg983)w-8erDRFV2=;KneNSzmWd;U4GgIU*A}HX~ z-f>6nUNi2B*fn`zGvEXOEO;MivjeDf>BANx?vv19}_#`XYwoB*rH z1hC+->U#E}f*$V?1?~^d;7AckFMxT$?d&r}g5411wOgeEW0e4nvG7Y1xB>hpjt=g9 zDT%uh%32kUCCUKgGGHCVju)Jsy-A=v$l67YNc@ zO1=xeRFW`NN$3dUIQ6XCxzPyQQvlk|&vF=mh<5zL(C)?w$3EjVT`p%PlOTEKk`$jS3YBUa^4 z_r~HnrFm zWK5`!8ppJhV#=Ux#t%)M0Rz1No80U4`}rq?d9jsJn2nK$2Oj?b(z)du9r0>bXl37* z=MG62<}=3PM+Z2~IF{~LNc@=x7}}sQ1mpq9Jo0htj%k8-C%?RwJE+aJ?<_7-Gr=q0 zuT1*q=}9dDI^DBIYqo1>-HQZb0|o5egJYVMwH#ub&|}D`{!u^%IL=CvJ!*&Mioz+D z85bLOHc3;AkFQ*NQ?XZ99+H4EBMs#Onc8p$GCR_H172l?PcteoHykrRJ4W2~7{UHk z1YX0p$-rqhDk$0s!2_Y-WFN0u2Ab?Fk||yAGjC?wmB#}-la8MJ8W)(-ce5%<4i&aB z$xx~{0N?FobC0Kbe7#C-wPPN_WNGICLvK^ER^SpiAOYNZ;;oSc)3IAxv&x&8ScxG_ z1DtQ%IRuRH?Lu~T3b5x~$miw=R9cxsBPiRr;WO6&FWtwv>)ckiIMw&DC_iUirZCE1 zXbX_sa8D#S9_c9Q2 z1~H$TCj|8Mr1mLaVmC&%-yCrbugFX(&$$`o0n?|_q-o!B!WbgBhGGWtxKh9ml#F9I z!)HFY^r7r0dsx4vZH*1AY^Poz5h`~1n+SwTx9eQ;> zo}I;IbE9@}K2$s9F+vBKa9GAhe(xZY(QrD}%VUCfQ)Z?0x_M!lSIZb_20{6cOcTLi zI-b8;mF9IvSE-+Q6CJrCX9&PKZOm{oHmK?Ru~fGrtJrpwF4t|S+JbCL8m{Q*^ zJ+KB>NXH9}-!D5?qXIgNpQR~1NnZ`wRzc(mZAdY(18Wu_WS*pS>Hh%gr@FY}*D~y2 zU0bb;k8EPx>{;N-a1Ud*Jm){*T0!V=&02Od(PrB$YMVhTj3EG?Gt;s4>rJ~8ZfPWq zdoS$^TeVh)%m{a}`=|ZI8STd%aap}~I_Sb{-Fp|=A7Mt3npXb+R4_0%9PyqGIvvy_ zq1$_CY+K13Y>-ZcLy?9;0po&w2Rt9rvy*L#F?_tp&D5-IH3b(FMnFjllyxLGpaAoc z{orU)u-!L(%Xkq*9PFF+4=wVhC>z|jQyKyQyNxhw~|>I@b?&I z#^p`kqXCsiax+$t2uR;K8OZ^O_34^dCi+;c0xBfp5bl9nEyl*l`NlaJJu&%WnO;{d!mP3huIFDb z%K&2lvkt4z3(u(iC?WPpqGb{WOpJ%YWNht2%M!WLp(O| zd637lRo}aCD80!I!1|I7Yh!}xy~>XAUWCAj0zb~vOits+gy42-EHay!YkDO?T1cL4z$WOp{JbriHrl49>z|vpG?TBquvgMg|5OA5p~?CtD2D?e%HqA+}B~ z6cmsUxH#GYd~E}{UW9wl^PRm%daB-z}B#~4z_Klj%@ zm8Y|kGFZhwb7I0w7j)N(^STyMBBpT6e(xPX80Yn=OzV_yq;w&TrV*!_2blx@@stJ* z7-OmDKU!vOE3~?iO!pH4(clra6d*VN@D2_L$)MI2OHz4-&4i&C{{XFw#^p%?Kp6SD zvvcZlJt;C*EaP?1$~P0++<*WGhxg8Ybpg*Mg7N@8vF>TIxnn4k%RIKx$!_5kqOlA{ z^>E)QEs>VnpS{Hd#wt&l5MIS@@FmD(i|p#EM<;1c2g=<6>_O??f}vI}ADPneHOv@QKNi&sT*adUnADw9$oy;rITdt;U z;-qDuRy(cRY-h{lJA=CfWCPgldr5bEceIZK5mh4_V$uT|ky-x4T>hIDP#Ts*D_ed!RhijYk$0Xho}~W^xOr z%WrcUOpeAl$+mdT^~#b99Ap9q86=Nd>x`~(&hgQh7Pl93$j^}HubOs|@}5^18=F6L zkSV4TNfu1)HO%XBuPpZHyOLHQ0nv800^^?5QF@Bq5t}rVUceIF2bqv0LP&h)k?00F zp&71(en+v$gn`WVcr6QGCShBNsaYM$%vq z3cDQbK*QwS_|sd9P`QpfnU>*7Jc_#+TXAqn0AvgT0sFl{JqV#|s7rJ`C7j$cM-wlU z!_1a43hnOPl0na4Gn%x-%;tz$@A(-mIZfTIt{#ctJdX6gBC{3V2{d3 z;h4D2-mEc>Mi(SxagR!yD_DloMR?4!YG(05v5RWYxj`V6Ax3^xZkfR3_6D!a&s*Gm z=ano=Z*dApj>0s+DpUr`vmB42;|H8pUQF5cWr;20nps51hCYoZHsmL5rhViXyR9G>W&FJ3iKiR z7X!G*9ceYOvM5B?5*N9;!$4f4DIo~?dvZeq)L>Fq7pX6nO|)v|Ba{GDq$ezdjis1z zob&{A=9&(J2k)hqQn?J#!mYYKH%enT;2sWp9y3dQPI{je*^wQTW@Wg78KE&@uoaF2 z6Cg`dm1k|jVSbBB`|aIL^n z-^ItaK;n+N7(1uRQgIT;&y10)maN0Ab;e4(a@h>kOlG$~LS8$0uy zhHMol@${)lT+)S-u`R~Ed!t<&JwAUd6c-aF{u|tZf=6r)wQ4D?PI}ndv?}t`cDAO- z@q~Al@Z0JZGXV+-6@gu@4?nvY<(j7x_g`3gF7SvLW2{i8c3LG-nV^qJH=)e$t3yC-VCI!6tTt! zrg-{Og%r0UzGGUWv|lPSG!1dSWjSzMs9b*zK4O2DtzDIlcT!1wTKbxr1^G9v zVG#<-+&dXj{$lEJi~u(-J7@6}oO_V#JEGKa31AkovPdN< zCEYD{4>~68)0tS~DP5f13qLoPoH4$9H4NK7y5qQhyAI z=0|c?EvICgPwzf;X6%FlGJlIa)YzuqLe-6g+LZB`NRimKP`^1tfIuSz_89t_PJI!r zDm?D;H6=0FpR{=?43USzDIR0|xI8f=I|Ic@)UC4;Sx^nb2@GsE ztSnK3H$ZX8CmjB@OI;ADQ+vqd9G7 zTbF9uXg86gI*@Wn3J3=oBd;BWT{>N4d05=V{1|C#+%#FQFJzA5X#z_N6DeN3Fg{fo zUWX)cS5+k)2*A#DWqG|(pW>@%U1FZySwPE711gpcz-};4AO5OTCX|{MZ%N7#oO*6^ z6WYpLTj|K+NVaa;Kqoxqhp^}m71;DVCr!#qFgER?Ky70Txt&N=+qp)5^BtsPo=MI} zOjZ(?R(kX)#d5`UIt%-#mq#sZ12k$CPTm104lux+9ChOyS1mnck5>~>Di4&!vc85K z-boq_;FL#VMr7atk&sS0bQRH6Iawpm!Pbl~QbbpGQq3qukgU7>#8tphJLF^#J@NFb zRH17b)x}kmwhya$U(7$v?&0wPQLz%5>7q7Llv>n?8IKAbHpm zFe-|LYa0cIF>sU0_jP%t=$#Y+GGF>9iQY|C1M;nsP6zyUhVMn2VP}~~U6=bwH zs$eMAmowA){KmGOZ>K^dQ1KOYFSrBp`eTwwG3b5iCmg|^=6{?XMAsM<7lP1 zbP*(N^FDVj{{WQy>IOi@Iv%y>E6M16gR2T@I*&wha^Jeia4n<}fSc7vR@;tu9-|#W z71tUOUlH@wvpSAVQqg{7mL4p-f(X*)G;~QzOwsNP1D<mAMToI_R?g=CuR z-1Q4tw?h@gVM-Mehe5k@ash1PoPU#CO8YbIAvGweM`x)!%piFTLD}3k(27Cx7-XK= zIP~JK;PiSKvq=ylCjbeGkc1R$ko!VmSw{ z-%RsK7L!b=Byqaudq%(w!MWZQv$HtKKS4r7$z2qd7DAp{09lJF79`=g#!dm_u<2D| z60^`rgtpc(OK-hA=K0HvhJ0iAht1EX2dx*-QcXhW#GUS7S!7VrCelbk3x();0F&$o zYSA-_r!;QX!(z6#o+O*f54}MQP6-{lf_hb0P>fttvH#Hf-$m7=)?{gJ50T=u4t(idbz{!jrgm5?~*El`vT2fqzqAD+a z#s2`nJr6=)G|PO3UB4(200Mx0M_K!muYbu1>4AFBaHP22b0fy(qOkF@`9A}TVs>EkO9tp`uzn% zeT%npjo>(oc3s)AlfcJNeF65XffCzNoTW0QHz3K$U=9fANdt`b_pKGl&`H#7RS%3| zeqp%hxFhbI_8mnLVIuX5Aef>q(3uP{Ka2Re><>>$&ZgR$!+Rn-h~CafTP!k3LIwjI z}AK6NybJGb4?QUBb6hW8aWY2 zBb~q;{ynM1wC;hV)tQX?JI5m5;QT0K*#_PtNuUI zxtnd=>Pw*HY=sC2z{ozsgU|G&0GkYjK>1?t)`l_r%(5J-9oYVRe5yuNspsj?^MjL6S3#%bMBFyxsLxU9p2mO|7{dY^ z>DQlc>p%kJHdh!^k`Ekuk7`W-%#urFv0RhK03YNjh*5w`N7I9ofuB)80P#Q$zrmST z4xA{+&U&Az?Lq-!04ZafK0yBP9sTHLgugO^q?{3)HvoP;O-P2bs*=EAnC;2ux9d$H zY^yYp#IHTWh1!`U^aHTRucc^{Z$Rmd#dbmQ?fkRr2h zf;3df5@0FD2n6*%L)-GJR%{-Fk)_@cB86j;rLeqlo;veY(&E&ZmC05lU~|aEeR6rv z*FJ)$UCKmB4ZXxkv5RBn7#xrZ?Z6*ecWH%_L)_d+aPr8kq%K0^EIz;EQ>CnjXM2c* zz*xwtyZ-1?oCDN!f$dYt`hCqBj8Rf!NCs;kclo=^Gqq~yj*g(5-*2Ll8F!Sv5s zmv^`mK$$E{1vt)0!9RsW-OEJbcS*ZxVBJaVeQHD*9bq{H;EzvUlnh}iNm%j#=OeN8 zpg=<^g4jj{6=a(jh`H6CmG=M=7EsC z+Q;)Uj7gkl9OJ!Gi+UhR;`iJvOK5IF#GkL5*yCNw_T z0Ne`a1fHWl-{%wuLBwt>jBrLWtJfa&EJT505vci`vE*l``80|gnfxz^wZjq9DnyCbKZUY>b>Q|xk$m?0R zb5*fwOe|_J-!E(o5`WsHibQT5#xh-4V++6>bsnOI17wL?GsPl|5DK1fG25qJ!=)GK z9z-gpB4HtT0Y-2!obX3~py^42*lGD4L2QI#NF!++diSX#aAwD+&B^2M1Mb~;?M)3D zx_8;2GBv?i^Y;lD8%Lo$Q6kB2HC>_p&I_K3=clJnZ(5YQjXf-2+(=&}?q|pZoHym{ zD?}@iHcVgZIXPl`bI^|4ez?sI>NLZ5l!MDsWWZy92JfKl$5BU+4BBFam^s*F;eh`D z59vVeTM|gj&EFp=R?li2#;`%ntu8-fh760D~H^T8dn z)9|ERS3r3~rq40Af(thoIUPSf)QU>X1IPf1QMHFt!N(mj)O~2M$l{IF<7FXpk$`cG zbvWonRl&&(Ss`zch$2Ep6P)9q$>0<3NRL7Q!9UT_2m$ti)Q0QVsQ$G4%C}ZM_O#z; z+mge~Y@GAoj>FU*wIbw4WXE?&I2$b-_+2@ zZ3xNobDVG}VoRvQ@Ip;VzNrj6lGaa2G!3bdN{c#6eLf33G)mLD@a#`j9C7K7z}9X}?rR9B?V)}4 zDR;JEy*jDjXR$r_9rIFB^EoYg!ZmNS+eS~AF*>L{`OiG#x%}&Da_G!zQ-2aU;FEoy z%w|$fe|qGXAbkdUai2=947!lTC)wehm4NeEaIv0P4i5*n`OOX79;NvsfFQe7MJzB$ z(;8fajCjG#aZdQ2VWg?pBN)(n{pAvk<569(n=W1E3wL6in<)W6UMp zm}RlZ0CJ}TJv#G1h$KgfB#ahukvD8dRs>^wXseUcp2{=d)`1R- zc~);J%SLvojAd93{YEfiwEV|+4%p60 zQ~gKb&2ElqZpTiR&=hG@W6R#bhDLL@8C-$a{{XK=$W6V7T*m~98n#CAiyEAq1>=t2 zLTC-p)xO(_jA7LnMq2>x&s8U{=}4|ijGYqZReMzdR2}M>@90Md-?dUSj*C)znPRv| zv9=ix%&3?+BaTY(oDSxYM?#FvJU~q!AP`7w40_|75uEYV&{DH3ov$!KAWWj)o)PhTF?!FDo4E37lXNgOQwrjx+qIY;jG=BX$@q<7Kx}M%Dp0akm5OgU4#g zyPdIuin=Ggxlc7>5*7gMQaB}tqhmaK{#1*KZC#={5>mkdP-WnrOED*g3^Tz003v~= zx9mDm6I-&#-zo!~jD}=5$m&Q3wE|7v=&3aKYSD!}GZDBhK_q%-^1%AhYrRC;in=sy zWRm9B%8o}l1j-wd2=pVbPE9SHjUy!e=85h$#;GoHrx`JxPpa}dds7^B(0K|WVeATn3ptoXp)piJjs=P=}*Y0!AZZX`0_)tUM z{ljpN5{;}R%k>CzkG-Cl`t_i3SJ15}DUrAW;ZEFPdgq4zl~**0nLZ)CTZr+o&d}XT z%ivx+Q95#I;}il`X`oac|d zp7b_m<7ae?7Pmf8mt$^VT}t4OTw@u@^s7?tVLEc=Z4g_+?1Tc@U=%9?qa8|+yoc}K z6QOF01iho~jE89x62N&%y#(Xfjo%r?y-AgFAd4u=>7XVSB% zbWx6;Mx=8IfD8)9v^LTSdv2sFkcL9~PZWSp;_T7f9POA#9u-$~usvgP%&2taaVV zSZvO)!jn3&EJSDt<70bpPdzdCQzp&36SRUGb+Qq=0(Z$8oMeNMoN(CnpqQ)6m~`P$ z7HJm+lg&HM@OkI~Ilvyjg(a!2)%izC(W!~8$#sBvdi zJVJjFu4g}HjI^U*CE24n+!$aJ=sl`Vm1lPmj>=;eva2kL0gZNmNIZk;0qyTXT}Ip8 zY*~tAW8_csu{nfiKX`GF4>;~lDq1Qny@;1|?-j1^-VUdNs(XSxJqP1bYW>vYYmjA$ zWP~~dLH7pXh3T|#K4aep-hyK6?95G0VKl6gCj5n03-_{5@$~?IyZF+vJ3R_3A(bRM zk|I$+VBCE?7PC!4z4;%0~$F_a>ts&IHvuMc%RoDu~ zOb%7T^kLUmbmI)-85G!ww zEUe3bNf|4 zA0n!Z^OKh6q39|{d)t^`x1FGlBtTh|KIt+PbIDu}n4EBU0)g`@-H9aLX!4*8(juLR zgdTs3k}yj3>yJ#+zL#Xio4LKG=~#{_B`##xA8yqObJrz)@dKwgtY=ZZ5#0(2Ya^gn zSb#Asaj8%S(8C~bc|34EITf9at$oTb@+z3*K$5zsUAbllg52jV$K^mZt*mpGTD8Mn z#BVxHi5=5OV6_1iSND#bZO8DO=bxuFO@tTPV#8>Q6w`eBr;sdrfOQzo zanSA~uHZ!gqTHy7CJQI;%8Hr#S~FBc?xETQi}>xZMuCS!aqgk+Zr&=!6mS zXQ2e-uY7;{srm{kH+M#D#k$+=5lCY|Ldc9bb_Y1ia&z>~D@aY8^eRU}xWK4ST!8;I!qw;_E_ zC^6lgC6oyTz09TAqmUmX%sZpn!*L2h&fNXbE1pl@(DkTuaz#J*CGXt9bYXVMnG_

    zt0jb>}DZpiN0VcK-k(slQl}ollvU zbkFd)$iM*bc>CljmyS%g#hOV@bwhzX6e1+_blnCY{*ID zMp;zh+>NTB?gVb=bH@XUl*_95mDfWa<7CsxExe9Vn3BOr!;ZWh5uSQ>991GJJ6Scc z=kVOmE!E5{W84UmEDhVRNF)GqfC32z>s?7%9&D`jDoYd+M-2XZvJ9v(@Q6vn0fWaq z3GdT2s@T#m$lKGN#@knofR)xL%B{qwc*`G~ARHW?LH<=0m%E`<)#k2u@LcIpM?KJ= zW*iNpB(viOgU}rEr;keIS2|}=-9*i_zk>PYNao+Qw#tk`DPh}Y2P3%Pdm2qMX5$+f z*KtQVdF7fpqXA)Wv*ZHLotswxWDXmjz*dyoIqUMh5$D%LM{p;CMS13odAUp$RALkj zxWF9n54g>BoN?6@*43sBadOhzy39kgKms}(Hc8wEU^yAiC_#G+i7qcEORLF;@71G- zwm>*J18^A0=+&avaC&HpC?k8BY-9{%$RP|+_aJ;E+sOaFueSwF_mIZ89Aj=e5&S=hdbp( zoBccN@1B~b880$zGQtmX{8YH;ewFj6B zoPqNrDfw8QpaYTV+O%bhEU3Teupx>cnmM>q2H~COJYXNXdvqWgP1u%G9&L(Pg6ysH z6u`i84nRML;0NVl>c@^48uE>+*|F<9{l>T|TV3v-qj>x zStDg2u5rU2pd1dodt!-8OAS4dAh`<<+Jwa}B_AUku0h6fUm<|!KjT@WLap7wy$F_) zNY15@D`O8JJaN?I4oDn(Q`~pgLJ6jOh+Y{01Sci-Fmg{SNY2nY5#PN#mi1OGSjQ|S z<}LzxJD4+LV)Vg7jAZv(&dn7~=rBhO^gm;8B{Cq8M-N6~dWLR3QPqC;){@m&vKwhK zA%@W(a_;ho{jE|Lij{Jb zjkqL-KkXh*(wKRo^@GZ{As_>3kTXWuMRfy`j52!i+;V7Y++=LNL36KM<9k$2?34|13Bn1Lpi0stf3-2A{&K^ zB@`DjlZMI06b?VHdfJlG=pwAHK6Kv&%rdx8-!jU$90Q-2dvG#88mfy!UX3w{B)>d| zK4SdrVg%=C7|7#sIqG>8n%_`&+{|w_(iXW@BXcp@1{g8m^(Ua@9)_=DpIGWdUg9?@ zil=@Nh-RF@8+sP#SixshTFRwSPamfJjT`C8V@ml-Be6q_D%PNmFmh%|n104o(2|mM$BfWvywW)QcyNoZA z(p;E0Dh^PfC#G;R2hiq+71Y^PsUL;j#zwDo=g%m%moi(gF*gcMGBb>mfzan7x1|)7 z(Z!3cDwAowj5%H{%Nj;nSr-xo2PZs{&u;njtqxgo?O~}D;@q)hCnPMg9JU8x!8~*x z)t9I!w28FK=F@)JJaUN4$f~|sXu5HbA_J{@8Xuv!( z5%S=UgPsRsJ!?N^k?7A6DJ!R;kL1ZLW6cIXG;Bo&ZaL}(4^h)KcW-lzL(11W3tcrO zm(1MB3@NmdoRUu5+#xL#+^eGpvSJo;*VooMZxdOB`$!wqpP?AziDG2a|u06G8m`Do4w=(%k0GxIU&)9|i( z$sVR%DPNY_en#vOw)uS6S;`-j#4;G3O5=2dxf>?R^q z@5$(=l6on};MIfN-kqlvV46%@d8sRI39y*?1P1P>*Z%<3NOOMe%Qp!GX%ou0+*^J| z?i6kvGszygKT38*%GOsfn#$T8Kxz@XM+*ci5*|xA%Md*WWBjV+Q{3e^77{BH?fM+1 zsjN+Lb17uX+7q-84$Pj1xX*g(rxg{U^VsZU>eZJv$fY@s_sjb#1e12+i|y_QUuv_K zO-o>v;Cn#~fJ1}jjiW5sJQKGha%!%uL$g*rBSni*w$bBTk+wxAYCaV0?007X;|C|P z_pc_qPHn{f2PlPTVIvC4&3;Dz0Gc1jnWR|6n|@%pA@PD2oM*B0sZ8`9_aJ*~WZv>g zC}@6QnZaUCdS{WIMn775CPd(^c2$bz-C$c;)uW8Ab~bVto~84^&rJOdCWwsER*|Wx zO$DSvKR7S|83-H=+yDvXbB@>)GkG+OdBo9TZOfnUN_R0(KHwvxeqW6U#!07gbO&Lx zxRJXojnoy9cWuc4gO0pYDPQ4i!jTNN%7Ink0YG553ZUQuGBMlV(=~dnj3pH)+3Z6$ zilSE7_h`AuRGkq=uu^gdwHGm#4_|e)^FRO5`(MKG?$j0ry2H!@E3kD?ia8%P0U-YX zjed!X_%CDftRlSmZ@J%I=Gex9LW?KLt_}{+cwyY@zi;>#xwn*jx zobKE>A28=9)N}{6OP{@=X=$me;n2yb8%g5a2smSnr19GaC+qdDd}F;nXtS#aAKr4b zbeH;1m`v7TRnbUj$Qw?3jPyTB<)w(XyEC%3ADQz&g4083BE|UKi0~Aglj*vurYg_e z3Rq1)ctNMw8!c5!LISj5K2ed$?bzq^r&^+&Eg2MPI8@l{j`j-0csb*zPUp37o`BR< z5@86zT=UQ4p5L7Wy~BE|?-J1<(%0lBAARn(!O0>I= zp(MCtxfft7*E#y}NNjN`z#f$P`nKzRX;hB~fJ+~@hw zD+!J6LY(oOgPi{WpLzy5JT427k}^o?pF{ru*QH=Ze=<1NYq$*g0FjZL`&C(n#FDa& ztO+^b40R)^=ZX?x<|&vs^Aql=&N^fs3D5MR!{!~k{p_&$Mt`R?tUHjIHZd+nM^?|_ z`PIdALT{@)`&`vt?&RCf8Yto5V}g5bKBL<;=~1GhuD3kwMOP_V>}43FlN<3PWGFkb zpf8|4y|Lc3x<)p*=e4}s5zmMuMop(6qIa-nb#uinAxI&)H|71Xy%Z=ozY2B6s{6%MhSD;x~xIVbzx zy=ayqJ;t!JF3I7^_n3m_Su4)z~UgoO`+O^Be;r3>Co^i^K6>*Nl$n-hl zvvnkE8gT4Q9lfM3Ry0-L^8?WF+o$vEQrw=USuK%fHC0l|y8z=LW2f|~eqnM*$#73n z0StS4bKZd5i5a#oP+%NojsW~U{pze}21x?}76}IyF&ro z9QXdd^azt@yHZUkISxF}xD`NxP`qB|HZQ+OT zkT8FpCR|X`O32JhVDsRc2OWL=Xc(J;ZLyYM&7AOX zew==k7DyZ@JGnR^Nc}z;v+BkApqDGXI+Fo=NM zcWx!Q?a<M83_ZP06lT*K}f50 ze{E=~70jVpLGpz>pKd*=sJF21ZA?pzR^cCPQK41HIR`jD%=*Ht!!z#WhD?L!H69>rXUz{-uRp+<7u@t;FTk}HV^nsDThzjWtnx6o(xszpH( zW;7#$tN?JXbNG7m)KJP1r1IkP7~^)}qd4UM0DJMJVBDh`7Lk+@yfGXTf)8GL{{Tv2 zWXK8!$PA2g#!o}gp8o(!V-k5hrDZ^H+ej*VdJ~R+52XkY62+Dt0}q%S1D~kIDS3~~ zkz-&LB>97}BilVd9)sF|xWc=liALD)TkFR|pXosSiHf@>#f*eT3)m75QO6kdq-h-p z1ZXBkP`PH>!2JC?4!jP=j)YzH7HJiw@^Uf`;zzGhob&il3ii4bOw%WsxDw7=1a`+G z2flmafVQMSnAJq8#ALQHg}~tCX92xEs3~utN3~7~Y_nq^arG_fLmOnN6GG%6XFQX% zbF>drk;$N2k0w39vnlzvCpgEj>^=VgN>(b)!!8gYaE+1=PBD|o0Cmj+i($QHiWW$S zBZ9@bIO90!#Ui?~n~@>f9J}F$Yg> z{{TP8LEH!(e_VTXplP8QGa|qoJ79po{{T)8AC&{Xmlhbjv%W*ow&ZnD?mhjf3A^ky z%0ny5G5JeyFgO_FflRfkvK-5sWODsDI9vuNpuzsMhPSaIxs?hb3d%9g2h6K1QN zRg7jh&mu5J0M2pFM}9uEF*HV-U(7&Ci5J&~@53HI2e9i(LwXXGnUn@*Q;ow18*}x~ zN|9()c>=Prasv&Wae{phuejh#=Lf0AIQ;4uy+u2vZ2Z45 z+{7FLK*3+|q=d8}3Z%5T3`p9z#~!_WQ4GZIaq^bS5K|nS~azr-9ONI^z*_H#5kKyMB-kRRX z9FjO2nP!G(c=LmUw^p(&)`2a?PR?#pRV-A4=sxdVzd`Lz#)`>Ug%W3Tc3r{-0ZT42du31Y zdsFf&rHPr^0Wy=cKgbEj=3isb1K+RKh9rmstVkn`nn?->5p2%qq{n(D zx*MYj8S=9Gi9NRum=V{XZuHiMRc5x_lR=Oda7jp9`GEjpFgOGrfM?c}hfV2jroo@c zBuTrGy@}|*-BNx306JDS>`0@|w-PM7jD+qPA9o*g9;cpwRI%*sVY0~`x)enyjer5< zlssf(uRXf^)Qu+H$HC>OK3~eg10ZG}F&tpzamS}L3Rmhv%utYvzBMcqDBbnTclGI2 z64JipVU$9V5-{M2PBMK|5OO*H0P9m}71rZ!R}jRkT~|0{63wRkvd9Pn%Mr2+DjaeN zRpULVQ?W9q7q*6_oJ(&M*6I;SR3V$LPf_YW4C0~c?rTp=7tZLA#Sq<H z?UThKq}J@=b$fWhGqQ-~P$V0OIL}rfe-Y`78tA6SDyyTvk{XM7=R@y|88;FcM--cEs zqKux$-l;OAnrYnIw3ZRFyiFD>%S?nGgR zcCIi-UYPD{c*e@i#_78=pS`td<&H>;%M^plQII(u2R;4zk4hGf$0c>j?_(sy>jQ3- zxnfX8@ACki$s@7#=A4=`j9jH;jg1=4WtK&My2>BRemMh$87J}2;3-M$c2Jd*Oz6CX zyl7lAd2xpGG8ZMkyX(N|+Ow3bv^puRUCYqLZE()E;BtXR7YrD6B=`2m*0WCgn#w$u zx+1n{p(R1yT<%sX4tD+Kz`;1_%`wh5)U&hZYjXU6Sy>K2R^)dZf6i)dP4wn6rLu&} zBev#%kN|chG3&t?=R9LIK?u9*PaJW1V3_kB+-w~CfPFFfnhSK}v5k3VqBnxlQi0cQ z3t)vOBW~V<)OvGO7iV)Cux)$CGjVHi8%l^8AnpO$z~y=k#YS>^f;b)PqAgoPm1(56 zDcr=Xc`D&tMHr28{WgwSy$SAWii`J0Svig=CbdOkNeSiyl0X}?oaZB_Oj2fb7Pe(_ zin0VC1zeuZ8suXu#|@sD6bC}WEv>9+D+Oqh45`UhEI9esI0NfV5Zi2sZ;#EojTR$1 z1R+2>N{zsr_Z_e^PUTx<$lNu@lCi}hk~LP`fPeuxFS9#Jk9>35vu!O|q$1tYIvafw z=u0)r+%Q=Pk(o|eiw&nFa61s7ap_sQtD&Nydnx_J^J@i^Eo_YOlE1qo<%jz`fq;2A zY~!_N+m@$HIb!aSU2b5!jbuh?L!G8Pk_YgdFQM;_v>T^w3llop6jE@Yjp#|i1JGym zpd;^UWop`|*@P=@rb#z4gMdn@&Ilg9gE$p&gL<=;b(Nnf%}FGH%b4PVRdC8TmS-$E zVo1pijzH_!3fSXls+Utsg=JS#{%k1u1eNLmJ+aR{4`V@2DG<*FP17iH&cU}1 zPb-jeqk=yg0X=S6jvqMvnm!_vY+@-D9ovqeF9o}=w^{|~)Zf#s^(2l}4EC@@;ZUa5 zkeux~P&fy-b68ZIeNOsRC#BtuIrMuu+($fXwFo(L$t%j9KJydKI%cv{mvf_%4Qhu) zqggG%cvlSI2_s*hoa5>-+zypq(oaUjsnd?CCB=&2VR^HZi;BAQvnLY;;lo0PCXT zle;I8O2;G-u_i?fr3WXBf=?WODsdEEslJA0>E(tyWHJ_heo>G|Oo9d#{Q>J%Y|>J4 zWacN16B%ZZ#`tW700YYsd*JX#AB8I!xhvmeHva%swcjN3%nAtnoyY*eKXFuYzysGD zo|Q@snfqQy+6w13*SELQJ><b>sut2#}xZ9cP-bKX>V;S zOB9aJ5`u93zyqks$;TgBcS}-vUGH*Ry)OFVD8swBS%4wel1>K%`(vj{hfy2S zqpK1fE>~s-Nk!D8?gRi1+#CbJ=rRTd549Zn3B_K^L|I)cO#65*Bh33Yy1RqC9zZ<& z#d{jb)Ne#}LWE%(vqD#}hUBRvh8Y|Nakl_A6o5u~IiW@LHTM4Q=5*SW4V;vlBs&nh zNJTj$at=Wqe=4O-?#XqMS|EGzdn9cpA$hThHvmLTGN&Z+neX?9p`uZ?q|&Iq75y_- z?WDhu6^I~s#CiTK;~TdS2HcDsV1ds{lX`Z7+{tMrdE_f?yUdU(nC1mRh-Hq_PC)Je z!KRl{wvylQ?nx8c+%UKjWY&#g5~iDHxKV1>`!f)J{uV{;UFWI4)?a2t*eCn!V%v(K z82OJF_o}x;PIS$gbsMIME#2Lfl*qnl3fq%{NCy~IILAEosrG4^dqldKQp(cYv9_6- zOQNOT;l5(yh1>`mKphAi)pFZl=TcUYZBZ|7O`n`2me7(TC7DShD#ZuOw}NtLTD?bP zky1fC?;w>HMRFY)H7oNV$Yah|o|)~<1uHEIm&)qT6rVfGCdlJbcOhUInHX?K8Nufn zro^@qNV5ZPxMq1I-tvWH3lff@Ul|;Kjat}5Q{4wJMzTGqxWGG!46C1)kG#sjnpITKHG;D27P7+M-br`MgELY}@)T&6k*nE>@C;>nW$_F?+*BWhVc5?GJq>dX= zu%6a<{PZRSkhGE*@B;q;7$6*AbzB}#Bv(u-Uq*6Hi;k;QR@3hMy+S*(jM7`XAXQL8 z!;$<)4UBV=c|9tmu1sZT%!=3Am9_ou=pJjZ(g?83!J09~*zh)k?x*}JX{$3@vr}oJ zv(F4BK?yADx)~IlN%Qy4GmtoJ<29w#%$YsP6plC|kxbLZjDBLVDup260DE>G{poXb zA1}MijGIWj=seVL7iMNq%mCO31UEcqvkZ~xO(I!!ZJOQ);<`~Jdw~qUD*o_wCy|`+ z8@F>;9kngTl+C!FWtJNNt_YQZU~r61IVx1{Ao0%~=zWC7%*}B-l=9V}O|GR-sm}!D zkCcJ^-uLVHIE_Dhh`v@j9oG09-3jQ1HQ9)}d{`k33J31Ul&m>vAIj6$2C zj~OMpt}}+ux#Jw-hOP^A$>kSU2^8{M=i2F~ScNa2q8MY)Wm zh-KX4dt?v4kWSKlj!jZpgl&BYn&v33%)ls;$8#^1Hx0vw8%fC|9;ZK@28otqoyRNf;T(@9k40>?GanIa!ewJC$wdrwrUiJkPqwbHfaL_&(XFUS`80 z@-{88k>Y0z3$O}+b?P}Jo|rzw)AAE(ElQ9dvTg_-WCL{OGyo0Fg%7(q0CI46p=gdp zqZu5Li>Sw#jWX^E`}t*KjC1@WvW|UdMW?Ao_hdHPVq)sAv}0-Ea(+NN4w=9e2SpWR zSi5Ap@}{_H<#C4yU9Oy)@x0X$3y0I(+!oNe9p z#SX_jlWNJ8n|u?SeECs^VG}CnGB@AkoG?9mbH-|ViN?;wDQvDH=X8k6AcxG}2j1zw zjGT|}eFZxiS?)byGEd|~Cz#5F31fWZFB!%`^&Ih=pH70c>#62b_gB12a}N7! zc{h`sN3bRqSM&rUDgRyVOBoZds`Te1d-hZ*@xG*}Pw^aKOYeiVsr>qARV zTVog6jFOPxh|nFp=O7MF?hmGO)|xeKN z4z87D>PIAz{DSB)c=C6G0}OUnKkS}K?8S6j()e!1=i9IKb_Wo$92tWoxTuDM*qC(bN(~0m)*`kTP+Muc_j> z#bsjM!H}qgtYKrx-JCFRaBxWP=~}ZnH)|B2jv1v-GpS}EFy*oc1<&&56p2=3rbreP zwlSkTipD})AZLy<)OPf#Wu~oTOGcI9)+}ORSz=aQs-Tm!91+fV&r;k9&VLEnfOf<{ z^nEfoW=p8Uw0>%W0c@<8=PK@U06m5?(zu^geO)ctu*r8KD!a(67tBqEZq38cf&dsG zXQz6@R&*TZr>ffyr^Q>ryCgKkZ?{5xmXh4Tn^-rEDkL~m z2Qp-qA-x?)UUQr>5*uX9Ome25x*j7rhsHDn47Pe9ClIO))HNyhr4q7^w+ z~O_oMWcvT|6ymE^U!0@ZGesN9SEn!TYKdZ!AteW5~y)X6n9(-DQw}9NDKHgBfPF zjn+3^%*&6JisO%b4!*xyg;~AMxaINqV8>nPmk%^DM>a+_<7f(T*-7bvp48o5rjpBK z+G<7kAeuN0&zmO5x-%x-$FN{~=cYP}##*+{_)~Q0+T~3{&P1QfBoaPXU^g&4w$6T1 zNyj;>r1@obapGeq2BLAf7KjiRYlTLQ;7ns{XK!DW;_K* z)PdjDg<43$t`3yug_ zt7|mP8iz(!jyRRL!5IvrmcTq5;~gqfHH@u$6xtblF!#~itIe=BH7Ffbda zz~jC+tUjk3XwO!k65<=Y;-BVpcOEIzt#rq|WGys+vWdQ6p!OhSG4<`}MPUjuZp`*^ zIn^3;J*wU8a&UNxd)bs-pgvkDApuZ0`A8=xJb{35>03(=8)$g=eDbAAiB?ASjnVVt zx1AYWqQ`^*o0IoliRe!w13jw;O|4IEmLWMP$s4a32j77UJx4lU)m0THM>iDMNzgh{@_s4^C>X zk3LROe6~#g()!Ey!Zo{*+^Pj-W^Ky5TMdGEEzt3SU#B~4kH}Jg6Fq0aIwLW-)^A(P z-gYE;I0~fYh;ErZF~%#$##Tzy;(Is>JJn|1w$kaJX1=mjMGfW3I*%;!PvP!s8VOGE zpY+a(?ZGL>`bR@)G_Y-W$!Oj^+b}RrI)F2eo2^IVx|U=wp&iq-DyHxSp8pk`E+N zCXhxhMD1eB5~c~{u?l+rxW+1Z^)1s@u|`aQNAOBF072v19+g{}wEps{vKD4?5xE4g z<+$n&4oy?PL0#_4_VCSe@rz(2kw7f5u0T`jNdxozD;Y{LSCOP4DYeRM{{X^0a>nPBF>Hw@$Rs z+aXUgX;$cYUPu1`s+%B|GKISGNF%VM%0ydBGsdHw0!LBn+JdY|ip|Iz1NWQ!Jt;Ac z11AKXpk(yq`yW~Y#CcQlzCK<^&UrrGv;c&mWn$ZUjk)WNqw=R=Xh!pljg5r>4EE3A z?M)}J`Hb8)Lk}Km~?zz$ZM9 z^TsJ#LEK?L3gm@6lY`&rdFGl6kPDb1_4GV($E9eg$?S=9NN?JsD$TXBNCN|t@9B?P zYKs>-7`JJ;hB6N%9>b?!uVGKvI}e=)+aGk9jF1RbBe&Dry){914q+DhRvSXbN&-~> z0QI_>J%Z}PoCW--#TcrvQIpq}`uF}-N{mI$%F-RmeCIEQ>T%nk&sw;owk5l*M!H8M zC|K09HW=V!d-Kw$5=@F`@>H96`CP9U13!^87otXZxw&R2v9T&ZDgn+1@e$IgrQFY( z$iD>dAarD9bWqAlkPdohKgzRav1OQ~@?`SS%RcSI07uuaZ>1)a+@+y9yUQlylEfZy zk@OXuqiu#t?9r%cF@g!kGsyl`JBV>v2;0HWBflSq^`k%$%RVGH1e}6+KaM+4yAN_n zH!3&rs3Ra8;-s{MdE#|#q-{psj1!!UagNljVYJxb>VTOFg#ai}I3v9q>?;b26-;PJ zEJy>>*w6`TFb&9w{o%+x%~3?qe3BBwAdg%F_;$r(Hd-YZ&&+o#9-TiwL+wz;G1<> zhsP&9y}jv;ZcIrEP~`l%&T>b!Aqt9&8x7EK2}lKGMr4Z%5O_U+03RZccTxopZ27D9I9b~(WG zIO|e76=k?&S1=A3h2BO-)~YbR<3(~xkaL&h91INl^O67wLH53C+UQamNO-prNC&2W zkni-PsKf$IpsNj}e8U{%{{UKAY#iF?S`jE+v8iMHv)ukZl{fBYg+`IFoT(j7I*+Gr zXk%lOe&%;PDq}q}pMIwu>Omo-@Bux#V;Rp(bJm#H62K||2p|wB5*!;Xvubj~?;L~l z9`uSJlFr%5!v66N;=`!O;QEhFDcz!yzU4`5bh}~ZNf6xQJn~8IaDP)znfDS&7a>UH z1e6|DIT-3sw;ie(YshQZMJLM{aHAk#<#XFP=}zJ5R2IH{%EiAsMtI_uL@6=M}Mz+EHu#qSD6}*GCz@& zwocpvNdvA=9Q$;msUz9Lsb(tW@qvSoG0+7dWOvOml0zT>vtR_EJ6o72ggIm9B=^d z-h!GG##u?iD=`4=IODcK^z;-3#UvSH$#-PjLzS8X#)cU=hGej zw15&eS$=0ZE3_vZoM%3YaY1Utn{goEvZ`*{y))~cneEbmxTA3b6SS*1BsT;fPES8d z0rvqph11OeO9I`<0eBo9-hfai8?6SAr+IeV2nQqsfO+fGP%TC?qQjVw7r+bLk?ap% zJ!uVZsOH*-VtwSp7RdaGrRp`@g@){_v1cH#!8vU81CD;U%``G-)iNV?u0C~nq*es{q+oRm{w9{e7i2{vm?ARV6pb^3 zybedW_oK*nMpNsSimT<3D3k7l89C&3=kTjkfyB!)B)utB^wPeY!aLk{AJ z!NjU^ySbo@M%VdcU8TSSsV9ts?fUvqwl!!X@}g&%HvqsDKs&cX?V1=n?7(l085ywN zVN;%;r$PGC0zjq-BLn3b!2sg}(2j>W(f-G7q_o6$E`Y`eV@3TNJjj9v6G0 z8A3QkToO(@o`dU8px2oi`GJB)2IU)rKO4IrQJ=z*rkzQcg!1GB?>IQe0B0R~53L06 zpxdj&vyj}#Hb6*2(6P@zGr>9Zrj_(S+ELW=>#NBxZXeH(?qc3R&J+R0PI3?F&2%W) z9J8B~646=+qKvc4zbXqbBo3i~>D2L>mdxbt#kE*mgc1>jECYj`W(lhdi=(tvAAmW8n{o>qLg{%^g2a(HYKd-0z2Hx0v9-sc{>3IYiI8QMpzExwKR#fnClB>ySO%?PF&`5 zfCB;7rvuau{puwvYHJ8{Gq{X-Z{o) zA;+B4srb?kj=dD%`8(?Y9FZ=_mpw%VA^A`9~}k6iPQdJ=MFNyToCT6=?jM6#>O z#ARaZ`E!n)JJ#u2L}4j5?#f7RK`=Nd>Tr?)kTJZcoNE`-uKh~r`a$+s-uC?o;M#tC1}lSYYLuwqTm3Yvu5dBb_VlG@^f83_ej}!m0e5d4d)0npgY-QIWBAnE>GMPZme+dh z#?-`_Ae@eW&q{4v6K`^4EhWF&k?_n0-~bzbr~GU;FgJ5;Fab}Mu%0v0{dWlTeP-~2%O_57-bZFMQleHFdJMI)5+ z$za4}DaTTOO!uV6bhLY$mYSofWtK#eJOPoCaz`6_aqrf%aqKBaszvLaKGyjbS1OLG z+>k&gs4NuZk4|$HXyW+uv^ zAwreOB=pWlL+wPjE{ka-$0_o_Y!{Fd69P*Tq-1yN_*5FbbQM)0nmKYLK_)W8?&Wy_ z`|dup4Lg!~<@XtIh}nGcfq{lUFChC+DeCk&jZ|Fkx0=^;ZOM@EGCi~N9D3H2% zOw!SZ-y;wS4xnJ19ykOXbJ+7+Zei#?@5@_ZHUUID9D>;`jBP!A`QoG@dyYt?j_eYp znpX@42+l_(iR;g{Jt=O2>wd>p=I_Hk`To$D1WI4ASGlRL8j&bUFKb=FE?bVEm*hOwlyS%b(Aqd-(>4I6Ws z&SK+HHrIv=a3e^NtGs{(b_Y9{43<9qJJ#vkWmjM3&2+7zwklvKymc`SXS`ys3NZL^$S8|{-47m-^ z?ObhAI5m1CD7SldHKVu@e)VvM5wmNIhB*EoZpN}|#)+v%-ZM_2EHZ*s7TqHbSTR2_ z;Br1zJ%{q5z@^PA65ZbUmvJgf`>4tzBI5^lJm-c!^jK=~W`CO$H?kHXn7A#Ulmpmc zaJU`0%{D1>bRBVYl0dV|7|DH#zc1mmeLJ3LE>8B0S)V1c-&(X+GI0Rd2yd7M?%O~k z@aNQ3MYQw>O-)+boXpnmXDp&sVq*-)a+VUH7%Zn9JL8e-T?$u6B(Hu}Ez~O+E|&_B zqQ@Y@iF};m`xP5z$Adsq0fKrJzD9nR6SKIz_w* z62^+kzr`lsm%rZRlj~gboSU)T7}Hvu&E@gGyJ+pauwh-rimHQyx1(bx99Km+IIT`< z@=jW8MQwMe+OhjS6)v`~L$u?bS%!B10J?ag#XZSWYiF@?Ekjd~&$ejd3&<+O5ZyAP zqc3cOoYX3DOwxFXSt5H~Mn#t9EkYJDsws{8whtI5gMrD$O%jS)qNz7KB+KvSt<>{E zB6(Xf?%LlknSeHvjGpHmY97YWdL+s|BWT_jt&&2fG7s7S#`-zKe3Q?56~$zyc2b`5Sz?AqVj42bFc<>~ z++!RL^;R5tV%kWOB=e<9sAY7Fp$Y?mh3;F9xf}{j51P@lT8VXY5~5tqx+dCo4y(K# zOA*gbrjl2B6Y!=mF!JrL!;*~3<6$d}!wtKxN1*Cz?*yDF{B7g3mP2G6tM06;+bbMt2z;PJ>ly(sE) z$;ry{>Rg9OOH$3KLFPzVSnWZ#0dffkf=+p3k@Pj3s=kMHDhaFH)k*ACLw%u4xGl9< zf|(dS{#~OS^r^FIjmV?th?2SAbNX@5rb1^^dCBJnLQ3t9Yn)& zl9vAfT;Rnn;>=2e$VTCZd}r{kgpPWtS+-=~lE-|3q*D2j2GSk+tbu?BY4l$B9V*f} zy`z&GE#prKo@l(qayPT4OGdooYVtAAjML>RH6*l5tkT}yS|pN&iW$(TEw>;!zypBb z;BW~v^h7qfwRdIRGRGH?$zuL=JJn-5gk~}Q_EVO|2R#Ws)fFC>W|VI!+391d)NZ1O zeVnp|j#VX9i*0kyBm05708dZCuuA8DJYti3ob>mx*$6DmsT@$n=DCpwEV=oywDX*f zr=@D5#_Q8}n|iYz{{UQ(8c1x5h{FP30bG;!RabAydYqDel}anA%POv0XkzM0k1Pyi zGCa7$vEFg~Wt0K15!ZKKxfObtLR;94%%WwsyPM32?r2&ug;d8*zcP$xkHV1KNnH?J z`O$%MVGCe==~x0ABq>~c+=6@b_p0SGRd1sviSHY9(K|w|{{SpqOKl^E1;$GPM?t|p zl}f}ZUD=sMq!x%}Y)f%+%&5tpyai~~{pQ9`%mC}bt-2jONSTsZR67YXFWhm0m?UM1 zJqi1#pRGWKm!0Nil_QhMQyFIAi*^UT8`N>0l+m35AT3DNu?i*vu?{AloEI`JXA2VcgjBpP@oB`9VUy-LnwMp%Kh!K)Ic{iw@ zM_{f_GH^L)&uoql>s(WXosQ}ga!*^^p?6T8P2al#U`BQFw&6;UF_s)4yTO{-(_UEl-C)C!C)*`tp6D7}Nhl9W^jtTXm_uSRg zce5m86|60NeY)aEK3O68TYGjaxd(FoL+Mq0H6Jv0Vn=o!7^9uz49aklkXV)FazMsA z0KE+>_ZoU?SC+}8c*=;Pd1VbDjj{7~ZKslP#~*a`tdxnBJFya3EoW(#88?8@xnvsx z^ZWOpwMlq+{g;urh}@C5K)=Dx_SOyaUW} z9itd#MRswxZ6)!H5Kdd%4xM?Sk*~s7vDMd4oGsy4nV~lXl3Xe1GOf=e?tzSTG;>%` ztH|vm3i>FWuG&{JMp$K-DIgKM@8fdr$n94brl+5Xh2+{QT(SE&HqeKdvV)8lD~_Nx zLHT==O|MbN3YIf_SVW!eY| zPFyhr;{%WnImSrpDcD{`n4^i<#Ulj`9FCF|+Q1G9f<^`pUT}Tu8(7&{=*mwaw{{Xt zuRO}F<;J`Q>xDf!emzZEIo^%kkX@v=H!CuhVvWGSAvpKyf3Gx|GP`#pZ$22j+0_;{ zeXNY2wI43^!FGMwUxhL~!GAn{@*!wDX<~G_Zw1aZEl$iHAMCHNH1div9F^;_}Em6>U z?zJRxPd%am36cbNED0YYWPkuH7cTvNrYc0(Srg&z7ND;2$q$$SK>xKu0&Uqx_p(`Czn{r1l zd5NTwV8J0=28~G1838lM+Iv6YS|`-us~&snp`A69D=CXk1~&&0#;hHg%JaDW(SzLd zs!Zmd9xF>(!re7tj*W3qujR*7&2tsD|I-_4oDcn4`ZB) z$s18^O2ymVN(e0rOUpy^iC7i|$sw>tatPxLK9!~Kq0?5frw1u?If*qp+nbo=F^5SM z?Tt{j(75%jI2`_Ts8UUH z$j30pN|e2vH|ow-dG2;d&@q>C?jk^2a09N>>DwJWE2*Qxb*7tX+^W}&B&IUYZ@7WK z7{FYA5}cpIfkNzOD$;Lz8}@he$no2kESWCMUubdM@=i*gq*gU3r?Knc^9kKXZ0V+* zWpeO-cZ5XC?Mh9fy0O5>lU2C3dY zMoTj!&M;nQI}3$S9eXbvC@b9ZNUaf)(Y4i)W6QgaIHAmrLLmbOVuDB~?v8qlbK02p zm69|gF~64;)3kFaDuV+7nCIrk6dZItD<>Cwnnp`SEg5-ZXuQ~2d5dq{f0{=lJCuwS z$8*kV4uq|AXUycH>J9tpt;0F_OB{}Xss0{wlg(ULGf2X;`C#fjT0HRG&3YQ@`e0r` z<{%1q8RQ(~55QM!QcB49`jzKd^VOBdMJr7qLRkq+fshAI0XuP!InDqS$xiI463ALp zYaoh6ASojxpW@n2T>k)*N1+P(*mC)DfbWvbNZZ(+z;n|+v>`igZfTZtVPRW#CQu3- ze9;nk&vVGeGlB11^(NEQ_wxKI*RWbHzUf5<}{8)&Pk2HQOk)8>qdrisTC%gfmJ8S&rfpIU$BIgN_Fviv1?F zPFUTalToInD|bDH(&y}veU-r2i?j^mAPj+@_K&AdmEz5FK4aa4lvgVxj%i}OY44;H zLeY)Uk&pv%jlB*B@lj>VXpKp!-g={>oLha7H9IywRG=UnA8Y~rD+PP<%X6w~E?6fXSf~x z2eoBUu48&?@j3}KcV!|Oa7z8w01W3j&2g+(bauQi^0Kq(w?|`^LKo!(l0o{PZ(7k; zgV=|Mnz3cHn{o;>5aS1Uzyy9+9M(?}JLqlocx=n?MQLIhGy{@1dYtz@)r6%f>dm1T zL0J>DsD~;Ga0n!E_*AH}oRS!f`*#HZkC=Oke7b^{P~Rye90fhcH2F|-GB%QQVyeXg zkPZjs!Q<;qL2exF4rY-7Ip=^+uh%{OsO3S-#4|`3<;g3B>55#4Ip0!9t}+*REZmIr z0Me8#u+*+h`wNFbxs(9d1M{dX463D-K~hNL>q1v4yAYe98W`it;Pl7!@Ay?HH@LZ# zitQ6+ko??ZZ-2v|=UOcc^&YCM`EUa+Fmuo6Ko14JeBfss{ycqiMuQsjL<5&2uRRYV zr3pTQx*(F~5TgXUfJ%Yu*RQQtB!cM`9_C_Il>&mGk?4DKRH;X(x!D6rc>KGu-bQc- z2h%wGs+1wvT=EgsHz_A@2cd5Mx%H|}+X=E@^xOG=yiKaof|iQ)ZeJ#P#1KXg%el@+(C4LGscCS9blr>VdkV;iLu~^*dUwI^ zP~)MhnWYWvaGegXnROWo0UKmCNyi-XgZ=`tW3e) z>ywVa)>4yZ>M0X8HkCLm=L07g{Jm;MDZ(shgj(oEw61ats< znm{%-8-n%2W79dH2RSSIwImE@p8m()sSH7e4Y_drPq^)mS^*9Fs;|2{c;~3c@}NYS zM;q7g4_^8D&@@0wsA74~Ab&CVQxPzBVn|%zVD>mZn4~ed`HZ26KrjjQ{7oibkg2ts z<=~#92d`sN4H7nZ$ZQVlKo!^{hGKSYz~KIPprnWF%$yIGp!#;sC@7IxUCX#CSmXii z$65*4g#GfTJ5=D~pMS=w6frtY&j^vE!s;!W@>_Hj!#Q|cWxQqQ{ndIyM zeuwHi)pD|mtt_$_78rbrgewDvEO`7e^rSB`BvYN>1OQ+Fc?0^IE*BBhn8w8=*khhBI`^bB zII#?@+~9+Nc>Is0NYc=fO^RD246b<`Kq*DI!?t|Ap!k>{|MOzkW+3uwQH=HT_47pB;~bV zEZw`V>_fnQ!#v|2wQ<_O%1JB97*`~&(|`v!Z?6LTc2x)FVc!SlA6h*} zp(fcKq>)ZI*^~VTw|vkV5TXYPNAV0CZNqVap40;xw(lfHBKY!-TbOJy5Dh4$mX_?t@ zH=F~`ays;)U^% z6?^+<1E*RBi3FH%%B&fqI5-&NkH_#dtPKK4&@+#ivjLUHbNKZ9D6s8vFpjLHaHWRw z8==p)S_-(Kazt{Cpee@gPaNaZ=}bJ!B3Bb+kU>*}ob()=p1ABO6Kw_?ga>Poeq40V z2d}5=MS|UiDON$|wiK|!ei#|-J$R{L_bTq0)H{F<<_@tn zW0eE2VbQzfPzj8WYbzBP%K-bi=j-V~r;q|5c2(NWS8(gNCyp`Ffa!KB#R@r)IYFJE5%T)+{sxxgQe)keu~8u;;HC#bo=$p$`cQ$V zxUyUmydY;X9xyY={Q;&Ck8+*O+;%G0LjhOjB=f=c@AagW^d6S?j&A#1xn~Jz7BM4d zaKX!Pcq4#u*z~RALrb%sRr?tCQkmExko?S9T0@?HyW0njJ!?qCEsl34^8O&KwfV^@}J5EN`iAwWF~ zan}_=3%8+nNR{la;aNHJ0bB!&3}g|Xyr-ba&E0M-fb2@~;!nw#8>UlhheuYa#p}^`_M^KT@?Xg0@tWG*-qjA6le->+a#>nNV zK4w7-w)cNCAKob3uH5oF4Ez2R*_%xfmW^4YbB+q^>+|-;-Z0%pc&QO3y~E0}2+?w* zdMgY96kvdUzPR+KVKg#iX{AD};y7|<-_b}s0h7rcxZrlCTv-Tco>3<|&I1w-)(8Ei z{(yf<3$}%+7C?qJS8!6|VYGY5+sXkj*fKC-j(F$zzMKP4 z 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 z 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ʚwIh37UP5_7;3y8c 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

    M_Qn|?_WDo}+gY7{nk))CaRos7ePC;Ht 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

    L=t+sG>ZeZ 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%0AfELTmJnmgf$h(C+cX!>-5-6q?>Q#J;#w`^K+Y z^G|O6A@;g?*igUgxYoL{kNKu_p>~;sqtnDRV^Iv zN6=D9#U}jY%~H|XKjz}dbsG(WpD(T24yvj-!~_bEAMQ1u2c0p~Jn~ zzoH)Ez0rqJNot+o5`{|>7_`#Ftzjo1Ah|+_4W%M>m+WDsdD;2b!)k1QJ!_r|P6jm& zQ^U3=Vy33J!Wkau8ffO*%-qd(?MU@HF|m_f_Up%X98IP;7=0_uFlBDoPo={ezx_e8aI^5CJSu<{7? zpFl@C+$SQ5Eio3=f62PcZBtYzM8_MpH}s3xhOQrR!tmnr^AgO~sCeBQKB1&cIkJCL z6cCh~&F9s@ekx9DXzqcf7G0l<+)_&L5Q9xXiMqG_b#B1+`WtIL%6ZJk6bg@{y#5ly zW@|2!dt4_Nqx25+4OG*9-_U+Z$fV4dn!qn^OmKduOpwiini8OIj{C8Is3T zF7a(YlQ@J!`)!|1nLN*MHnrdPw|x6K8R_)RgPc!miSyvrS&i2G{HJ&P1HrNsb_H=V z4q)UG%9V0Uj2&X*U`N*3*9-mAP0JKBah-;17Bx;MaTd7SJpU`G6QWo(o`W)6EU0LF z1oFGT5Ai6I>oZ2R9uAjU4W}_*@?Lo6_8#4N{4N0g|HpAxV0zrx9S%)pXZ`#$O%i&> zD=y&DPklj)C&rFbI(p(rv+ml$5}07be*i@zj}T;hyiI?wY0G6!`_9nFx8Dr?9XC~E z^y%qg;6`<`!e6YnoP5v8#)GCmt87Gn%N$ei!WZ@y!oym4Ws05l@XN zDY2F8)zFk?qFkLjxF=|?v~PnO*oFGM)Z3ZH%Ig3$_{DZ>O7rgYe?VUU$9tdI%>s!1=i0Kgj9W5@rujyU zUkaVc>t7?AR85gE3lOql2_DK6O*#Bo>mKWy*ZNNMk93-5>(%VFHZlIgH7n7T6)cM3S@1}YbAf-`Q{v5}}u=3cj zG=)nj#WPh3NERdT_#-cPbOW!1NImNIWVHG1YsrTumm6pa`AbM9RJtIuHIr1zn8wDV zAP$5g@?td^JH1}_u)bpaHs50d42x(fNK@th{P|lpZyfpS6PEdof4NxR{>YH5dlQ6$ zPEP;bZM_dS-0g#ugOW0+Y+^fkl@EJYn>z?6Wxn_NXOSs?HD*{@yi-r3^mmK=`Ux4h zQtk=C7;PmgD+i(rF?%LZ1eBDo9N!RPZdH9q2v^HF;?FLSY4t|U|&PC3d-(nHT4a-gq908muJa=13WhJ|(isi(W{ z+N3q-d2KlM-c9V1%Xp6B;KzPRbKQKi*_Rd8t-t7!TT*d@I9^7T+lB9qj?Jq)nZHXH z^@)ad&dDHsWU!@NLz?wZo*A|YZM)PIHYrGF4ZP;i-jV3*fvYJWkB;I+M>WVDv!u0H z%4gJQLzqJ`f4L|;Ok}Fc_=&FE8HMwPH%|t|)p_SETtq`jfZfU3gb81FZGWlcTs+4r zxS!#Yu&R{iKNPMCos9i$t??XD6fIQfZ}wDN+$ZR~mVzdANQ?WJNvtex{Vp?c4}zd~ z2OUpz?%Dh$8W2%wthb6swH_Wwg@2GSQ}xk0Kak@yhuZz+GN>n8xV)_faWQRrNbbCm8%eOKkw0(*7egDtU8mqV~h6{g1PfuYPb&bLW&F|Z6)jcx(f+&=0WzYz{CH5+Tf+5 z;WhQg{3E{un-=RCIj{EekuHjY>;iL`5R>Uiskfvlj|q&gm+^B~NC&`?m&oSQQfId|E}pztBc&vXK&NmnY;z2yR>#2dwe+WJMYblOO3Orcb-Z%vzTez!b7`+hk6*X6xa{I3()6q12$kxzv^UN!M$3h~evA73Wbtepz5P(0 z1Shc1%JpSi$M69%eP^IV!{yyTdV>hFESiFoGY~vcqx>uTgY|~eb3uNz2>5UG!x}t7 zQ*8^hbbOj00N44)&}}<&%joN&%8y~DzA~+@m6_dwHzJ(E-M%&2*No(<+$YB@chaSk z&nMlDjDHNjFRZyRzJ%J~R671quk^Dbt+fNa8>A3JwYg*BkbTan^mn%3T&5l2$ZEsH z&x`xY$a;T^-<%CjXyRJDC(aKSsh|EclzZ^>SXh2&yhs=HTC4L2;{aP|qagaUUOv&Y z{MJ4h&#_uXH61kECEpn54RPS(cEZ$Do1?b)zEQEF0vMOVzL)j>cqWXxVWcS|OZ#bT zEj&^=el@e(;B5r#&>(UBkiQMGX|;3Pb=3RjM60gVU01wZpHM5$0^l?Mb*e=t?FEOX z!x6?=tX^mCL^{RHWy}_cVBe0sb?pX;W~*wtU7`~0SN)IB-w_hxKp4KVUx zz$naF#lzxPT)%hL>NP3+%ySdWt77B_&??6Hbn5ZzQ}OTZ`;trK9tYwSpY2xn z8$u+16vrk~-V3>okIKR=ns(AfgSHq{aw(U%ng9cppc6J6F>R_uu*i~`9IGVfQyxVn z|4GKgoDe&&w0y)VH;H}p%jzUjbsx)kJ&1t`F>k*?1eLCD@ZtJ8xN3vB+z>JAhAkZ0 zCyLl}?)h?{mPNPf4_CN^9-=k-AsU81BB~|DtNLDZ){w?@c3eg3sIuF{Z_E*9k2Y1Q z_%uLs4m7D4lE{Dl#OY>QEmm{nx@`l*xK>@1Qk2{>wXH?kcUcNi&KoAC1VIX47ILMDb7Sie z9`1SXsXLBg!_V7Xf!R97Pc4dn6c}(hK*T98fg@{`OAZ&QBSylI-0O>iaYYIPK6s(?VFdC`N2Y+d$YJakBVd^oBLg`vV0-g8pUO6v z`cvOLD*P*gm-A?nM821Bf^e`f;xC?h%g^hJ3D9c z#Bt~T**IwHh6n}?XYj&KplSb2f*CdF7rlEB(D1$iPz<6QtD=7lL}kBY4nX@z4f$@l zlE65qt%;s}?tf)=at)L-bIDC;xho;WYZCaw@}Zz2P-9RBY0NG%+>eO*(bFcyhvT?3 zz2yB%fLo#@JZY(^*l$gns&r!7y-*}i0Sv!A8N?&k<-c$~O_wT}7d z14BA_8*X!yoSrYfkP6AE4569%W!8HBgr@$JM;epxE1C98vV9N9TXzFVGEyc-ZH_~v zJM;#(fF1_J;|({!G5&I1959@_JeCHc0wHV74#~r?e6qO;k^_>fR)!;D0!-O4$8az4 z(=^i*cN~KCyD;UY3vAf<+}KWONX>~tShYv~G66uuO%GkAD~2XK1G3Q8z%HpB{y*Tp zEz!tnplSE8613Zw4;t9*U&U`QL|(T6chKM0`q%`xC{L9RRT)4N#J+oDT~b4gj5rLS zO{!{?M!1@}b{zw&`4Dh^KIx1&4T9BxI9${Lj59g1)vkP1se2)FO&*S(koAr|!D)&X z!FjC2@G%R3(&num*8LAi`hWgR**ql4!HLTIzjGDAkjB_e8>Tpe z{Ss6uGF9ezX^(Jcw*eDAYgghrwYbXjx{k!KdXK;t7!o<2Ni;at7_C1?pErrPmD>`} z_ts%pB^}^}aSTHps*c#N{rAAVbeD5`)T%10o2tP4ce_x+`DqcjPeDsXsK?|oG|$RT z%5A1XvY?sskHpm%Ez-;saShAxaC!Q?Tw01?yRv5m!K>Z^6aQSRDJ^lr1!`97V-!Z)+po_u4JQ zb16mC0qguWKtM81scep%6^ir(Udi>r{^pZQ^;W2wcN}l3^87b?l{s){e;>`zeDZ&^ zZv8t`i(D9r!oc>k3_#TO1orbJI99(@iK1y=K#>OglmYb}#I_f;& z9S9X3E8edB7V>{(`Qk9x_Hapvb8cmykt?#BKpPbgWzO3E8_V~{yYT_+wd4${exHe@q8TLdGt+Wibccdu?NgvMoema%Prii zBqwQW;*zZ~Q)=$n`@U&*wsYk6zvVfH_F@N^teCSWTT!#2{eOUY^91yUl!tw^fax`_ zlG^^ZsZmAAUSI58GDq)CtVHX$H2zECO_L-aGv^nbMDa!kL~q-yTyqp??8%1+SB-iCwMXe|e|SO|ytubMu^ocES5 zU&%G>Wj`y)@Tu;?^nks5V7!F24JlMzs`n!|wplZ&&}w5LupcKgvF?vcm3>>UWlt6# zk$h!*mj2<)b_tuj%tQUM;WQ+!<^|aY8X?x-d|DGjI5$4H#!zUA2%Fm1N< zBgNsrerL1GL>BLqW@+BJ&(q_CYVga;vhF6Vt}xY8pXxHe$zWgt?~Hsb_NrvfsBE)Q z$YXfK(`@a-6JPQ^aVqcoAFJ%yc-|}3hTL8&sS3?~;NnULHNpI{qm?Y%tD2s@jQsEw3 z8WrC5rTlNK6Vm$$Uk%f$;yXQc&;QuvvA|bl+5p@@ zGGbn>O3NsOq}g!b9DZ65V+>#svKx365*#5E6m@uu8O5$bcJwga6EQOa$& zyP9}ftX4fqKl+^1O&9t-^Qn7IBA0P}>X*r$a~c7JVB2O}cMVBY0XuLr|sg>}>CL>A~XQ)%;vA2&J||Zcw81t-k+d zL{VfXtnPhi=zXrUk6P-|wN`E)_q1l1o-bExD%R*;tTetBtGhd~=3=@8vsVAteDdC$ zx%Yu=^S%Dki%ZjVtEOx`^RV@bn2VF75SJ zeDblRqhwSYd!uB}tmWGdjwI!U?i|JnlZ-!XUT<=i*a2Z<(tH~S-ecfbSwo$g|JO|A zp~HMqu0k4ihvbd{hRiaRbY=G>dyWA&v1L~Vl@^96fN2)WXi!?O6EGnx=33|M`WJ55 zqt`QB2fLe=^fmtS_bSv>Z*e5YWX|;WNd8ktJA5>&MgGvjb_^;ns?x8x-9PTdjk3h| zkQ6w~<7km5>f_cUTlKyO$-ZERgKgW1dlp~SOKgG@WTNT6kGOCXxZJBK{{w=OR341e zK^sDNAQ7DsYgc~dLqq!#b#MKWva|XLyvMxB2DfJuPUPTPmq!s=|5zH249HbGwJFMg zQ??C*rj^$9a6VF0HL0sLUv)M`25d;?r1aYw)Uw`xCXg#d>#|mj0inDnhg;U8>`LmE zH<>w^iZwEOrqjPb^V{B(w?bBQn}Y=2#AF%ZxgP=N%HGT87`P`&og&H5gVNh(2zVWU^xVFJJokQHOw+nN^qpDo5 z;Gra+baWd=_LZ?lTy7riw@8fszU5aq*gk*k6;?K)2ji^iVL@pq1)vbGJ|Vqa_M|;Z-3TRWb=tqxu*>GVlh5ma|x^W4z%->-* zyaFw>-t?@#L@#!!_2SmfO$D1a2Io?(n7k7!L43ruHlT%FrF9NPLHbJCpVK(>_8l;- zUVBpd!-lc$8m{bk&R6ALm$&aax)x=0vf4j(dql@kJ+u_Gc~U+xNxip|B9vodB=h#} z`P14AFg4u3OLgP1n}anq^cMB3#gA6c*{&s&ACC0&xIBdQ=Dq5LhyCiYy)KaWC2T1& zWTG#}|MsRtZ`bYw{>dMH^StjPX7YvO2wWF{?Ra|7c&$#a#`(5SOlq?F|s=7`F4BN;)j;)tNP998RpT!*1p^!m7{2j`_Po2;nJ$fcXMeKq5lEM2%0S{?OA00+26g3 z8H)!^h4;C8?z3aO-qQFrrT0P|@(e8=wmQkum+e;}%Jq>Vd&OtmA_}c=8hGrij{x;8 z*X>~#PS?(CxaP+|xaCX2tFF@Y*Y>~d&4I&_qo~F|4|G{Pn>8M2G!k11U7SEcP*i@+ z?iTPsMszz&=w+j_)WLBeTrk1&`527iS%R}}43ZU6j*F;&aKHa|F-@pN>3oFCo^hR% zBc+z$x^8t}r`!@J0aChYD<6^kxsMO*pF$MKgW~0kU@B_IoBH_P&-^$*fkbn#gINoD zG9(E)VUhe`nKa;D<9jNIdFMmf+_>_a)O^Vj8 zw>Cvxjw3v3b11~f?s($MS0fa^oMEgYaZwHjMx~49%CoFBm^Cr?^vh9qgkUk$#rGcE z4k1Nrug7HurJ)TJ%WPE@@}4*4zjrIJ3N5s2SvQa((6Z2CLo8w~>{GJ$c(s00 z%R)kFnYDW~JqX9ezQq&R(KX8i8=aO(sm8#cXgN6?QEB5vKl`C>yw88uk+%CroggWq z4W@i`r0T&CFdE~>9dFT2g;J9g00x zlBMi>;DhovL!(ViK&^u86lKIOVgA&6&o|m-bKXxbNk*H*+*)wjO`hUvzxXB6J6i8a zJ-H$tfNORd=Au$O7AR18PNu-#ICt}jg(I0cUlDCVQr|GwS+BJFh})Oy+WMP|-In+s zarscYzbaNeMjj0V9-VJ~vvFA4rx2IkOO-wnd*(6o-ApBXughL!4rVE|IEJi_TtBGb zaFYJUZ)^$cN_n5@bFS7S$LAZ<@=e|}Hg>vJeos>lZR>(5eA7t!#~ zkHwo&7qZPrj3&Xjuf{n%Q7^v1*wvQ<@-}$nztf;8niUbsZ7-AEK3nF(SuG0{Ebwfd_~h+PRLG&pyXdccGT(n%LVUE$ z&RM)VhM`O&7k^$>&FQ(>3juFDj@X>y2fr)H;pA2)B1~LQn46+Q-=^CWdzE=YVH z$`jT#+C_VP-2t2Tv##yTpncdvVoaH(++4gNyMK>5d1kovHJTpz6z|FNy$QuoT^g|g zO^*xUUjwXTvle*5vbh15DkvL=HanaZ@*{ItxGf|ro;t@*!s}|XS@8a#G!O(@EPZ?%kQ?^=a-2113E`2u40v2^K{zc-6h@+KITtav$S9b$DH|1 zB@Gqyul(BRgQBDd2El7@OyzpyU+p$sOY^CSK zLOE$^6L_+jjXcV^Mo2W$wJn~w@TR7OlQTSr3%Aj6N~;eJ-WB3!S`qLQj-_QN;EHqA zdgtbEYAY$@ii|z)^>DE}KE8-({#X;bW#hY^Z3=mtA&P58!4#J~Ictt9&R>n#T!^H5 zW*>2m31l6VGelwJl)Lx0u@Yuo+8#QO^7CMfP8P{*xIqH}D4|phB}Ahir}&Aij=`rO z*UQE$HMN?Mj4eccJH96^QAH722wO|PBlg9cRND9Js;}(|j2&{c+9t(PKMl9;oxE1> zb^bSLWY)1k)yGbHzcB<)u2%}N3&d9f^%%jGk=O~ST%mlkY=9K z>fc+El+oy#Pg~swO^r`}c-nx|b=Rke5*Y%n% zpoERzCPTDrL;Mza?{H+bG198QO2(7*`T9t!*_0RSBA;oz%_}~TqQssx%b25ljkzz6 zK>AI)L`*+GM%6F8y57f$px~a6?*8;+tEYI-XfOKL=!l@>Y>GA)b@g^*0mWg_%lgxI z&cR|-CaG(V=jS+y{IJrxlQbcCZe0``mw}=@J4}%r_T=W z^eR6qKTWE!Z}P5UVVX({uTJ-@5#;+@!|513Z}5B}FI|YVVj(uv^>rZ83TM=M)g&O- zUuH~Ph5V@&HY4-)^Oze`S`;_?G>N&W0jv|s*rv6a=s*gK z)NCA!p2z1Vgo0dm2a()D5f9r1eOl9(?2tZGrEr-E?M08*+QM-n^?6mPJZUS>m?i%#UWvHyho zjcUIEKC^B zgdto#4yU`n+ISh|qOPyhOi#sv|3O&t?YT!(Ani^gwaw>V zN}+vurr#fMd>`U=`8@^`*D7KDm=7-nWd^bzLoe)!wg73bQ&ExX=}L0ISxoNftx+|+ zeQdb`scWq!JH_CQUiJj0*cq4^1t|$^n55*f-^;5cVoA)*6RYc~v*s%4uVFW38J~sc zn7&KC)74_8X$P}!n$slz7DLB++feIjRqi9<-TRk6d5R;y zqRo$`9H-#+7IJlf;VF5QL=}B)_HQFr$5L z1r??bCA-rWCVTK9?0LW}&ct)kcI40v5`;&=9A`S?px^+h(KrcA;7@<|i9ZIf{uL?n zx-O_3^2hjncxm*K(e3NqdgPZutYxqRg)am}ES^895H$ADQ{FlG5@srYa%WSan5Bv^ zao(PJkB=8%7?i@Q*i5!ywa2VC%83Wt=cOwFUzwhiE?8R?k@^WW(a&b`%rT|>F87+@ z&`8|;+W5PeXoURE9rQDmZ}{hi=3uy%lDNB+MCaLpniq_iSWuqI87*D4QF78NDUA9+ zMOB}x8By^1CfG@{_OM&Kfs)j&!-aqy1@MtwK}V0&FcDglK+RQ}czI%Ho6TVg zs&araiL3$u4Ic~Qsj}74rGRh+TFHEo2&Kb)U9g)a!_)j%L=La6f`qO!J5HUcCGTi5i-~{oT=wR7ufCTm;~7Lwt*Yc*jO@2>}V}5;NxB4&!+qqeR;}B})d*gVseF z7@M~5INe0}>MwC{o!)Yu31J#GcU=IkAia?i+?6y%jM=WsvpHg7i1CB1nr0c( zE#V)xwqprZAwcj9K!pN0H2t=S*c%suKCthTGce^V$=w;vhym8ee)+Ey_Ok2d!;@TM-okv&F0U}esMyO4o1XU zNxqN%NUYn0bto5J7}{|*(^L!M@%RX?$P(8tAS9T~T)}SwrF20JWao*JgdxQx#`&|D zuGW5;_RbPZwus1BC7MduQG}^;NV8I}gfA^U?J$KG6~K6trl!WSXn{|= zN%0f{%2&SF>>_ZK-_V$NHxugm+u~<&(nsi9#^W%^Rp>gJ&hum7jsH8iwf9lPE9JN` z`|Y4d6$d%L4H!W^WUFYE4892-fk?^#KXk}ysw%DdTsA(Xdx_J3KXn1YU38szx;Gfz zUB7qlKX5)f+c`VWdG7CZ-O21K0+e7*qGfEV_~kJ^xx~n8bpUy>ruLE?c>crSChg?> zv}BYxP{ECe)_+6(Z1bHk5SlPRW$Jk+npMTLC`4{%YhpP z=trjXIzP~>j?%+?mB#~n zz6wKe8<5iiP!+qqu)%Tv8LDaz@8FCVJ8@){k7_;EB4!qa^r~!6u}=VK8UR}QIPft% z_$%<;j|cO`>~W>w@F4tA$mUT*z)|)_l${(4z@HbY^^;zD$qsTASU9^(08SJ@Da-hs zFc$;+I8z~~r?~BjYg59u;62N1uH_(_I?i6f()07~$0)Xp*> zUWCg2J9_~O5Fm>vh^NxTZ}bzub>%py>vo4+g+okPS}l`^Vf!5*jF>1UwdZjA5)U}q z^IY0j^OS+|azMy20=3N7pW~(p#_=cj29Qc05f2T|UsJhfAwMg{$=Hu8L~V(0s*o~a z{bNJGl+Mv9wSdQqC`zrpNX0*tgioyIKlFnW*xKUr+zS9Q)E}f7LM#-A0jvhY$lUJI z`ju%sBNiRh=tvJg95F1U&!#4SDM65GU_~fL?K3}0kObt|rF2rjwc|5HM#Ho>UiJw2 zD2iN&{z-RmF1UZf+3{CkCr}!JxltAZ~!&|Qd>Wh@; zD$F8W{JyLZw!YK80%G5mBMN)48^CE1#)1GRW~>{L5jWAz#uF9}0;0SSrN@5&oGP2m zd^~xPp!!-?*!rSDaJ|CeSjGhPe`7b9P*N}sOou4i-rctAAK{-TxwxE%k}B%6!vq!$ zz!3`u2C^IC)8zK7PW^6ZU;%1-SBvQ7hboZ2J#in7?P{EWg)?1{AnnF#e}5No(gZ6F z9cYs7fXd+6R??#cX1}FiJ`Oa`Q2{9BLue=ug8H(L5XQ3hL8yKa#|e%y6C;`@VODbG zf$T+djKBb7wmnd4+=UUa>fu^yCMRVKdgYT0Vecf+tCUi#y9|B7@>g`-dp=xpw~x=` zFyHSc!6@F`yT93IOnj;AmcNRTWIRhK5tx@-c9q`uFYXX^gbyvn;oA*_Oy?uf3Pxh$ zgakY=sNWs^C!!reNl~3|U<_Y=PgsV5oENn%zE^3{uOU`u*$qF(U}#rdqx6hRq4Uv; zOcbOaw|zm*;cNS*Xtq^@bom6Bmnm**4gL6(x32kYhX*h1G$s4# zP4NDZJx6gAPn|wMgOn@A@B?sasqIy3#~H`H`P(1ezQRO2f7<9W`fxXj(d1{ozt)S> zH$p?+%>Hn_abL@qR?m|WBIsZv#lbvFL`!7_<%(T=owPMp<&cQ>x8Ds_s#%8&`mMy^ z2>>dn_Ld5UXS}l9P{!iPd*j}R7U6MkDS-9z4LkEGqft`sFa4CcdxC!nYw+`MN}Hu? ztV*84HmFDM0y4sxn{4eq&0|YQ8MDeX6|JL(Zt=q>J)Ia5K9{ipN4FCH? zI&I{rUm>1pHBqC(Rl&=6%Rr85qLg7MMFQ$!s_Q%={c?7$OIi*&IUAG~`fZj=y!@{a zO{(|x05UfRCk%}gG=Fl^SmR*r`MT#+8Fb@+fbJpXsvX^XRNJ2LG-K{1zX^9AacXi0 z{LD_Xs?g!o%Up0k+GO+`_)8aD(wPRf7aK7;xn4qL%#Hmr*f$G!emH+~%g+6KtWDu! zus8UqrEXT(68aQ-GtAB1$?}aOSOQEaAtqFA+Ty(d)iLNl_5KggAzwM;)XkDP--P-T zX&6vn|4ZB3T`*Q#I2bL!_U|)A#zdUe(N0Yl=AMbAtK?zWWrT`0UxM&BCwjKTI2sQg*L@&P8_>j_+iRF|%yj)NA1) z%INR{bJi$s6&{=j0yLyL8zbZaYFvM`TTwP z?82T`jSviJd9McOwNK{g=Y?z?a-Ck0v*cn=7Lu~U?Yiwymq?0d!kQ0lnVgun$gTpv zVlOkEnI;qtph=r16;firj<89ANeWENf);-k_g7fFMe-iTPzAV z)F7KtUhOC1LBq;k@y>ru))oUQ5?HgK93gXl#@GB$?d5U&`J1O06-Q6R*_&2msyx?_s z8J?DX^D|fsWxS1;*|flv-P;&fX!;MZyx$$3U-M#Nqe{qw$|W~7bw(t;8^0hp!(Cb| zE|zN8S553!W1{O`CyJaz&-k1CJ&}iIHR=CL=uGj5trqDW!%_zOWx$VZjx#dXc)kes zKjV1AZ*zo&pKV?e*z_jtfOZ%P``r$LjsKAZd$M3V)zg08*Q8g6W08BAkRdNxdhslE)|MEv{5ixk0zg6A8GZ~k5x)mQ8BX0ksM zgu%p^fa7HVx^aXj8vE)>G~kq9+doi#$oPG3fj94-4Sp_F$s|($dA!9>bk5*Y^Q^_y z1>k(IIkaPU__)<`Mj zs7TSihOgJGYnqZXYuR+V4eMndAd0nsUzCXuEmYlgh788>#XE4EiI`>DYCGL2k&$+MFCDO{|1G9r|Sf)01$SiM9aoTCsS!M+akIw;%V#;nyrB+V7DUMcqsH z_lj<7Zd6NbN@oh%#x1q#5q9x&Pk*Co2xVOt;8#;#n|4W$hc355KHh#=3a>o6NvTo# zCtUZ3XI>3X%XEdrRiRWQhyAXf)GH+nf7~s8OpxN|o#Wz2!4b&3d`pe79_BrH66ft< zr2;R1@>HULbf9BBA}P=M61RfcJepFNSPl**{}XpVVSpJv)7d(HwE| z#4F}KkwZh=IB4^ve0;~Rp|&wKkSTu4dm#Jlw+6HSae%pTSK6NZ!?7ZbmVx&Z zS}t`YuQ2*Q1igB7;8Y=wIv6n3skH0cX)B*kOYAR{Gr1Jvnwd9Y5)yK>ekhL$-8~ue zPe0bBiv4vuATEGH9%$SgXrKMx`@hp0?}M5i#(Ea6>kCF6_})l*qX*OF&-%(-zMeg@ ze&m{FCn23D3j}clEN3d*MQ(l^nZ#~FGq`_iHaade{92}rT-nT9PxE;7E_^%0>HZUV z-Of*LzIBM5Z+8qV97jL#Vup5G)g!{;TI(iivWD5PyPen&t9N!?>)9crU_8>IdSBUZ zCd$n}od96J-n3zK4OLJ;i@RU5L@OUDD@jUfWXNi$Tm~tywaQa+ly2I}g#Ye5l6K%) zqmbZqUh%JSzOS{Cq`v*<`H~59eyBubo=UN_s$vWVsDv4(xB0S^7~pOCvbpx}6V{;i z_NE{N#jE3EA8d;LcLH84!NeyMcLq}Y1Bbo-&~SO;KLADHU+#&@<(Afe-YlN)UwwR4 zAHeAi3bKXzGGPikq%vj87Eu;LWP((Jh87i}6oz8*=~7(;i4K_^zzRP&`@iy;VQ1ld z_s~cFwF6%n%Nc1 z@k$=YU>;P1%Hg|3 zqN?iz6sriTlnSG(z!WwHG}n4+gzW8Ntqal`1rKvO>*5fk`)LJ6?Kwb>7DpP!K>?GzX?D%>~NGSA6NSQM1x+|uOFUoLw2!rt;RYQ<+L)fCnJI4#3Q)Y3+3(u+BUxiwJ?6EkQX%LS4J{s$<3 zp;mO^>}2t-cGbT?D{a7uNId9h&c`TNfjyfI{ZeN`mbmWqNswy;ZK_g$4JMUpc>%Tq zDLx0hBaU5g5grpr$>Q|w!8(LxAX<-y*)$_Hx@i;p?g?tl808$3o%CVTMz4(q42Gox zKKVAi7CgJybrmLLCjl+UYetv*4?p}OFW|3Z8O}zQ8Zo5MLtc2GsTOvXvHvM9obtUF z{1@rW`wFwTv^<>Rt?w)Lp2Y}SUR7&DS)$yfxA^)4DnYQ-&wqW+>54=2jP5Yvk60!& zk1PbgS;;l`Z3ga1gWh|0W&}Vtvfms?nk7-xxeU5)b@$D3l1dBF<)X?QLpbwb?+jIy z)?~!jRM@SOeM{PmiY{OZ2>ha+{p*LV*hS`5qYQZ;{vN!tVuVEE8CxKih?E32+4&RaaP;Q##L3W6f>2&||HZYIQsZplXGBe63}p-*tV}$7wb8 z$imIPD{g`c>fc;i_^sZ_JaUlMhOEm50x?nbCGiCTjyr*c>m^+EE{^Z#ZMBS7&CSTk zRt#)T09P~{9ym@aZyEH0W|JWD726+omL4yxhMPL6`SZunyDO;if@$uokZ!aCJ zCJ^-^(&^H+Ew%IJmO~2EFOMe+++V7d{6kva7hN_~=JdgUV=~ZE#+li+OX?pIwR07E z9buGI(ti0~$UBDW;`G+HSQWC5I3|dE)q^c)D8BRi3GWr@yXp*Zg3PyB0NY$1UV(J7 zyY=c-@M|+AriFKV^Q1((ds<*5Er?^6qvR2vPkdDl(VM-s9JAD4($og+0_%x+J#)jSTgI&o<3o{N1vW zc*ZrqpXuGlXrRiud~!W~Wm3)PsrL4rK&e^1iWva=SdR*FH7@W&s80{DvWpt(v9DAq zxE*h<932Y|Pyh1w3%TB$CCsY&UhmQ|ek7)lu<7{+zE@*pE?zc%$pvs^7+uHNzUtF^ zq29+@1F8h-K0u*7Uq$7SSALG~o?F#@ybmj;e)xjVp9&Z>B722@#L{{G;J;__F!a9U z;G&7F&_Y7AF#!NMQr5f4%#hWe^{$|dVnM(VzN;eS8P8EiA z%vwiSCcl~Tq8#gztXWQ;VGA9RmE94)_{V?Fm($um;!KyCm9NIA}wvCqir$87vD z8EOy?cZ=2P)jTcWIHtWh5Yi@8@XI3cLpr1kW&)yeqsi5lG&C76f>AzmgIS~iK`Ok> zGa?M1>9bB*Xx4@5m9YvVe#ErLl5L-dh10%baeuz{rbpkWOpuH_E$lFPaKe8ASC3}^ zUBa{L4{y^WG^ zm^rZ;VEHPGc24D)uuR#d3OEiG)tlfd^MJUByH+NcmdV+l;>WK{MQxvD%=%@dhQJ1V zOXq6OGGP@~ozt>rx|V3Cy(59wg#9|;Z}`;Kv-Sx$9C=ONW7a!FMk%W(yX@C-HIeYs znMSJES&a43E=`XEX@~IOK(+Fplu8C;TkG#(8`>-yXV`nAc;f=wLL(0+z_MT-^4(4i zn%Q66kXwR~&CF8kHE0Mq>>Pm>(2S0g)@6@cp)dE?kEtQ*Xi9<4BudYO&N z6yf65c%;}ckQ>*)gD@PAdxmo3E2QKq$E3@WIN4W}5-~7cYRKN|L$=4N86v@dDKKkUJnjV z_wyTB0@pQsn-O6#$G~x(Piy5#zW+Q@UOpZwb9~~1uHLKa8!7jqxL-`R&`$(VItx3z zU2LmG`_FjpM*bPh{!-tNynC*+Ne{kXaCrXKE-Yx@=#PPZxnXzyyB{I{0q#d=pEVo{ zHzBVrc`A<4P8a8uVHES4IHtK<$KXBmm;V5cKZXsc**&hjTh@eqp7efNl~xwgri)>X z?vRmT!di+-2z1(lSUYy%JH@&`866Df(eU((l_EZs25 zyHb<~Hvxyv5rv*5sr+{$hlTgjA!y#I+C<9|)*xk>5r%4f??F9Ye1c}5c@_P;CXZ{1 zt!;Sa?cRz*{lhe^G_^C4COwi3NxLA4j4Un<`QKYdde0MWaHg;3Z!j0XG5&{|s0VGL zcf%?A*KX8cy&+P#w}$ZLU3Oo)OyEPL902qd#Ir`Dl1CD1;CybJ%E@%q5=U!WWns zr{dZV@tK|;%na{cRBCO%I^iT_BQ@QQg={Z<0yq$;_9=^_L3lT$G(M9wzJ=f$*UG3a zz-hgjrO{o<9SAjsqz_7G{xE7n7+b8ynDzz)M-Pa1$`i{ChK3e^FlqG#n3R`ciU40q z!d+nk5MMnemSR*14$%_gTJd-&Fp%Pi*R58z4mVXUf`6Mjn_LidJrWIhHhn8!aYNh$o2uPp-uYiCQ4)MPf zdPM^Ui70a8#Khq(BNO}t97472??Iek|G9$#V%yH351o7$k>RH|o1FK7HPW&ixDv4k z6nsM)I;kWoxH;x8%hWB00^O7}OUf&H#KPAhyn=^$Eh$)h;91^C)=P@QJ1)r*$Fp2! zr!Sj=@TtJNxrPpfTe+(-LdkzHuC_+h6g^;tV}MFBF8_$1pmQ3#%Y-&Xv$r;W*&&HK zCe9||OrAzxD(grQT2j&l-QbOM%B4s29l-C&1?&*Mg0q{A2AY1lU*AlA`px6tZPIi) z#Fml2(jQcWK$OQ9Q;Z&US}46FpT>-a(K4F5~a%@2P}>nX_9uae4Ry4+C`L@n)CKlha#)82bDcE)sQu zyl|?Upc3DQyd2qxxU{)ZBO;ydz084_bVFH8{a1b!iW=0>y^_dCJQOuO3YWZ@28YvZ ztI%=*J_0KC$nZWsAoHD3=yW4!>E?Qj(1lRH*U<1oSjy(j<`t~7QI`k@0-s~XON3y^ zBp}G0ReR5{l%9YaejujZ*Xwub_=%9d_dwGDg&TEDCs>jwvIk?AF)7FUDij>^ylp#y zz)RefsS3Z!8>aM*O4IF={Xe`w^Ki;4Hu0$&e9DNhkP3#l@`h0cZ7yb0;Dz;T9SiX2 z3~gB2ZqU7&+-^LuguXH*D6h>_OAS3mTSiSyc58xj_45p&GE8(5k_Mk6uUqTRK!z&G(zHh9Q-yI{F!Kxk>f;;{gz_# zdsedvcTJCX@6MF)lLe$db;{5-P7`PU0r1Uy7(X6A#V~QymZAV`Y)BVOg=>>rg;BK! zf9u0lPJ~Absz{MRgqOnM`1D_S0LG{|zt>L?0;=9k3A+y(=vB!!2?2fMgJV;0D%8Tt zZ_<7f#BAcNjN7J!(z80nDzqW19}CEJu!pe_)^K(#zVdA#ttJpc6oCKI?{!@!2~#aD z;jYFA3Xgtt5&@6$7XJg>;tiguu|UBCt$zGRq<#+YWc!ti3R3BXu!Y48v#Gp2-;)I$ zf9Z(+Z~W#1WY!V{0t3+)d`Jgjzo>)63$);^cnQ$a8cF zCkv^oql(dslbf)}R{&001Cns3(u+}|l6hhx{Q8D3_~mnZnL*!m)ln?|XS zl#y9(HukSCkM~fIb}U}_p|ntDL-vp11v7}#4d2E+F-r4O6*0fo1P{O~fKxv|G}kY$ zC&Jq2<*P})D{**fVw5nSE}bev8+L_PcNt9Gk1sIU3&H?7@hPmLS~q>}mXl9h+=jew z*qDAoYB`UjSMLrc)XoZ5O1~#+S6m>BUn*pkLijfK&3?v@Gan%fu8XnN+iCk6vFyW~ z%%nYpa$%=v4=KO^JgbAR45S#!fukq+(q{ZCr*|ov$^buheYM%n`BbkX7Msa=)7F9a zlBj6Ws=#FDDWHZCQHre_r%dS2gAieAzUgp|asY%jKY)-NCyQB9ny@{gVSXdIFMQwL z$8I5@Y|k1q*Da*DQ>;C*RpaI`~rEC0ZkRpLn%Kl zojBIl{lcoQIead&$Arp`G<2HAP1TC1FB+ z8RM(?%A4=om{Mw-T}#TDM}~f!_fMx6o^~s17F;vFa+Tj?mtE_07uN6U6{c8M8}X(- z4w<*XFG6XXH45j5seCoPSa5AwjT>{OV^Iu-ksLjS_v*4K=2<7^la!zEajR}7=k)E# zO^*6pfv1aGGultklOlq~;2(9bC1!cuIK(&!(n;iEV&;_a=->N63kU5v@031$w;s#j ztBMkNMsbheU)o9|4adw$vOE=3;g(OoO9j-qPHc!;wUtG=HAL{-7S#R+Als6QP6!OF zkt12FfA&8UYAuIVJ>uQ#v zrUS7-`{Yp;YI6BK79R3n8fy)!52JVg14#8mksp+|-2WNm@9|5^+Cb++J-3w5D9Iv@ z_xRnhpE79Z%r^-4y6>jKJo=+Ad9YvHbijE9aE!!4c&UqE55lv3_Y7a2@?bf#=nhrw zaTQ_Q{)Q=^-X`~Ru~_Bc+K)gJktpvUQ|aNBU&^9ZDs$H5{sZjFZ&n{_Cd^J!GrhWV z60UmoeO4wX_WR$r7#t|=kDtbT--*k??<<9WEvh6rQIj%aavGJXLp{X(8{tk0;g$jX zjTO!#<8gR1nX% z-eCWeKduXZ=c;2?+05UyeRidFPZ{PxdOzEG0FGEbW$xR4{melf-zS_^IdHyAJNSsmn*4pcl4HuiAuf!HYneat% z;TeRBt@iSk<$;q*%YNj2;`#dSEnD&LS>i&(n&yU!^=SO_9p6kj&`gRx91M zlAkjzz6<}%9t0r>ec0r`G_`57p0vle^M?VKqy!4#9_*V5R{Z%9zR$jNah171p9)%3 zE9I-+^88y$(QOfWx(ylVyFA9Y%)a^$P^%eNo2X&jY=FHfT5E95s5IkUW?2;S%yV(K zE4if}d&F3k)evCy4_x)K<-y$*-qRFrsnpDl@$@hF9V;EL&i$)hl-ZXlZr}v#G(Og7 zbJ{qgFKUukTc+v5UEgT*G$m^;5fH?Am=gW`yI=FVM&Oo)0N+G&=^t>=p;ivfo+}f9 z75ma-XmmWKb70x$h(DdrABsfX{&Ykz%@?2F8}cCFYmA@-$om^0LvwP&TGGb-O$2yz z0ZugyY9v%78U{Kif1cK8n%HUsxg5Cnf;kJPLpru6?4ywr2{j7m&s!cx@;)0R=7w}( zc%c9+&8Z@aVM<3j87)I6G_sH)ak1hrns&h2OZ)56>*_^U=L4depJjMDAcXf*z|NKp z(y}qZ^J;#j-RXywR~v<<*g)%IVW8imWew>}1L~*;8MC>Of0<2c1(YQ>pFIjlw|wuR zrD{}=_aL2=t-4QEwjz8hOnS@x`NFg4pwzx=t9xB4&{DW)5KNtB(^%*ai)rSPkaVR; z`Ild+UIjOunIHC)ZNl6THE|+#@o0`sUK; z0?JdGd;KoL9P>ra=+fUcD@>jnHMVD|p$JWaBoD~>!F0EKNXrO;UcOAZ3ZJ!5R`0n2 z#1k5gA1!5^>^OIzQZ_i!BdaH_*k`NaM~#y`NY-cWcdYj2hP+8IjohFgLur<_nQWBp z=XKLq0Hi|}OZO?Owoxnng>`AFO>ala2Wb)lU@GXLW(n_@1ru7C^z7*ASo(7n5@}qi z7nR_S#C%iSnxhK|33=JNix?>u2Wr45ZgaSm4`a-EYeb#}{vJs6vfxZifq$>pIKl7f zo}CwOGVE&DEPQJS%uW(xvieP5C0OOb$BoFcgW)k zp2pDG?V!oP4`gPU;6#GhOt2q{VU7gp6Vb*^o1m@nygBb>+sr=}GD=vT>UGOu2HI}} z^u&D>op~y1i{^^X%(C_k^X=3$Dq1Q49O~DRlU7C(8CmBjxm&@Ae8dKr;`;8`YOLHg zKJHW>#11|^IL+_*QI@B#`Qld=*K6+NtOJE?VjHM!Ce$w`Zmhx2JkVDuNw72gd$U_i z)Pzj%@s0I_m+#bl>zO(A2aqnNZZI7@cPNzMulj`t>T^zXOTSV+He%~%Vf;t3+7S{8 zS{1N34^OF$|BEmrd;HIYbY@O(I2OkX{tg!3kZ(?3fAdf$usXdLkDiK~GviSSLIB^yR1Iay~Xh z%nG-d@rp=~G-`kU0HXbRCSJy4JS%cQes(ha;E8VIS?P}NTje(qhQW`sE3$lrp0Wl! z{G=hDjev@Y`HikNihn8&52cR|ebmgMbmQ`FO6Q_}HC&!!QT?`rx13L2JA-mNj{?wx zz&h4{S>hf&7Eh}UEm_EOXWZl#Y#txVpep5yOC_Pkm-q=ig{G{d*O6I3=y$PAgm}s- zaNE#9F^I>y9?e?p=GO;=%ojstck?dko08ODbYJb26?jat+{FZlR0eFCgycy4v1VN- zVkc#zuJik3qN6j^px>qAx4`l9j_S7HjwK|&%OZ-Wb;_&ebB^U;)33&i!B4U({pO~} z5*g>LOgu~6E!Ha@0?#p+N`@fDZMfX^WX|a)x zFhk|bw&dAK8PNQYW~~$c5y=!qSzDG@+Ck}-dKKn|L=q=PmT}1IiH{pnnP1ds#hgrQ zaI*6uP8k!XEE85(u||Tlk=s%q9W2~eF5`5ySl`A#mw{WqgYFm!kGVX#5lE($lu1{i zXl*lrQa575f(zu}ZdPZ5U73;Hp7uww%zL0#;PVY>%h_JY$|VFkje4nP^rUHC`{B`Q zqqWtSK*v%hqCk|YmT=9h}#_EqyoCRcrlg-T8}V#eYV(@M{t#j0~Rh;W*GRnsNdVAkS< zpKU;fodj%lN{AVP-rM;*DQW$v&wZrdD>P_3Gq7spRt9CBQmUqpdB^Vt;k0uxT;h9h}_-)H1-E z&r|=u3`EO4A>-H!AJBIOg;c(-2By5S#fJykl;q3m16J6-WjU4q; zt|DJ;x7XPRV$_^CPGt0Nt(nw?ft5)Hm7e7UCIHP;kfxd}d(A4sV=SDx-%o;>_vk#k z8|<8t6Sli02I(4gba$VU(fdA@Tj<}MlASK^e2iCajD1M^r!ykQD*g3EC|y6ay83a| z?xNoW4GOaQ+hb!RvHA0%tu&5S)VMA3dl;~D`4AcSbDrE~jj`kgR+ufsE}2fPcN>|k zk}uT=PuA#n5m#&=$S1;PnbueHrGs#m%ySwhuT2?4C89$VIue5JCwat-n4R({UX~{@ ze2pI_fBVTAC<&JI#^CN~$+lxA%)ASAtu{2@xDI{A>+@*kun3$2<#oV!KJ$VM!GUXD zjX6y@% ziyC$bc$sLm23%hf=3{l@E8CoKEA_uHdGfxAJ*7H#&>jlXE8Eg+dnHg2hoOB-HdlqX zR`p`fRkn+bk++I?p~g8^r$)Z(69NY2#b24#-Sd%nM3hkjh*HsjTAe6eZbS-vrBz4v zblS_3LojuVT09j5=fh%_^CL|$PIY-&;sXAOv)b~%V+qr#4Gau*EH`*_hs<0Dz58=W zqP$`u9S|Tm#m@6-T73O)E^Eh6Qg8aKX?Z$11lvNHHq$o#sk-L&z%?0r4a8J^LQr~~ z{Xj(6q>Ey(u=|*tP5sQxA819dWJcP2{wg1v{8%`BZmk?gy%-Gx%a zdVg&Lxg3;fZUr-gx`vV&Z{#E&_@wLlA7qAxdA`oO=#x<3Gosv~=?z2G5%K-JT6vb@ zVq}GBL)8bqrvW3j8Ed@3m*E5(vQmEOTZX(@C0cr;Nn}St_mgm(08P+qgz5mPHm6B0{KBba3EWbBfD)P3&W2@Xp3owb>0}={rBkdC4UI#N;F@%ZrcK1Dfm;F$1$a((5C#ME;#L ziDt4|pZ6HiHvG$R+vC;WO{(GF_6Pa{rXSY7T`)Z#>$8pxFo|lF2&Ys3H}7j8zt5F%2MohGJieyMWtg-M$j3jYN zV#rN_Fas!F+%4OGc7K8SKfuiRPuz|~OKR_2M67}87E`RRa(>D4^zfXC5*L42c%pMC znaLiS%NS-jUOBu!R?+ME%&}VY*mWr@KxHGnj){8JbVLlKJ~e7inVVZel}^AU4%a@< z)n-=HJfwE|q*j|?F5X|Ky&Oaw|M{2IHxB;G)~lGY7)2vg-u#y`_(wQ(Djlm!ijnwu z6`13>gR7kO+B0)(Ouk5wEL5(6Ka`0*H{1yF<=#dbbHN*}F4dTHYjsMOP7Z-{{LmQB z>lf12iE2JyGS&YGKALoK?etIU?BSjL#c7TigUN4&qZ}5h zTE%?Dr)F!kr%UWV)Xe=YVRwAA{xB%HJCmn=ZJ1G@)|)Z*MavgHe~#>5^+RlRi8g_( zi7GEG_WuxR3*{rD>)C&Jv!N4DLKLc{Cj4!O>-YIBj>d^_Wg~ueU#V_>UPf`Jo5oYa z7BUeVhrID#Amn|eLxs~5scH15MyZ-#$>|ShsvPMBvT3htYj6dLSUr@h+eBvE#(u(7s| z#?6CkPlmw-$&)qbOg$*Q)r>1M7Gcz@;L;;T3C z%wU=q)F|A>iYG^i=m|I7wI3Lc+`1VwkJrkVi=KO#&Ws%B5iBcsnPKn%{Dfse?MyzO z2^Fnh)<##o{+@1buQbY_UC;C>^@GFbb~(KLRLwyGIQE9!xP9$`Az{n(E70RLx^XD( ztD&#EKUYq$By*8j+&X(a-UPT?gzE)Ec>4*oP7mGS+iDNPp_wv zHV@uo}8 zhve#FTZUi7H1PpVU;&9Ua#y}8`Y~!2#zH2@mZCc1e-%_TM9@GaswulL_XJRUz@VXn z(DVQpQTLJdoqz$<g1f} z8VbmC8w8m!cxps}#T&LHGVu`&;>*XO>0w6OM~Nmu_a!$~XsTTuc{>#~LX^7M_)iG~ z%`H1Pacr`kY}I&*L&YQr_jn4Ci&unl?+Q+1vG!+IPLKjJ!ab;8EXk^&O@P8*dpdsl z=G+F<|F_Wrj<+Y%(a#G0?B5K%{^tWn29e(guAhc<98>ukj?a%1N<1LeT;O|{ zV)IT#7M{IA1`gQX&YS2Uv(u%dn~2M!Hk?c)zcl@Dw`Ub7yRSm&YMO<0+DlR0-c_NZ zcr+xw&{(CtzjSh5R6usj;79??7_Xn&Rsjqwe*;(e=cDmyArGgReFGTbt2u?wb7LQ5 zBm$7$Z0#jtG+GNEwx?wA(OsfDV3Ml|aT6WDj<4s7+7V|}QbkWG-EM3V7Ccmg!wiS0 z+dTl1Yw+rM1C_qb3sXX6%%z4li1RRCM}?m^c>v=>qG`uZP<)?+Dwry+^73kw=qFU| z7fflx3m=tin-b7x4K~{LI8AUED7pjU8EgcTb7m!{@=6zB46F_vT)(s+Sm&$g(@of- zf#xvMZC$~wm6N?^rvu1Wb`_4tQB$*>Vq&#AasQ85dFsf_Q`SJTSEB?CG2C=8tr2-Q zd@9AxC>}QwWwLO1^Nj$)nSDSY%Y(0tTXP}eAE6SH9hUCUrvH&%8V7fiz4`M9_>w=S z8<(eYms3oX-6cILyAc+}pu)-7b)RjT*)9yx!oL0<#$emGK!B}>M*87VEn~zDLcE)L zO8M49MfTr&0OV407=8yjxN)yyp<#_x@l_>?&ieoh+DT_}F$A3Sv$@X$*35E?1;A-Y zx?L4=+t}~$`zoCvWN;xYr&pKbLtgs|q6X$Fo38bn$ ziU+bg8g@8EUjekx*0$gSW7F}i=*k1hDi#YVsk@enRFa@ zb_wmi(_Upk1(?(BbfG0PWEo5C6a8F|P(3Z~xB@~BLE{S%Rmd?os^!#fq#w#B@|8UY zZ_-1*PNH*VV~u5MIQ7Rh9w5^eKS49Q1cN5?a-QMpJyyUfJ#KId6eW40JOTr2Q6P7L z3CiOWakHNZep-o*sPOTnyjIn&x}N~_%*&T1QN4Wy=wE6;I(<`A-FXFI7A6I=tMYsT z_}Ul$2IkJYwS_9Hs*tkYODCbn<{uP*XunH?k3vuT_b=Wlz|2V{)JX&tQEUy{dZeqJ z0Gi`4cI8Y?FbAI}UHX3jF+A+sRztu}A7K7EBKmX#_}|1$mQxL*y(Oo;0E%acVF!tM z>$Y4bp9I8TP#XY~LI?_+s@O!guSeP)o8yoL`nJDET`L4Dc&%xq`r03jhZnX-fpl)d zOQKO;z`W=Ryt@_K^vy?tWCwn{orWj&sNVglw{IVg^+#T@=RXIe8P7_0f;f+4`_8{> z>8J1)Q*vZuAPQjtyU$`VtgndQCAVecxO3xm%+FGU0pS@}0aznW8+gL&4_HFY;{uX< zTk36UX>deb{`R)YA6LquB9Ks?CjRP?RN-RHqf&z@IZfrie6CMw?!vl|xFegZJC=7FrBBJoGt7=NQ#-sQX=WB3wW@^ey8c^#1I`sQ{r#%<(|TeTGP3`=3*pvaeUEr1q6L^1gI0*DxyIux3qCwcE5KOE9zBVF+Nf_f@t06aG zt}x-}wx4w`d{)3c%dl`naiq98Swp`z9pv~?&Ti1r3!4~dg%wjvhbFm9N>m7Y=5DWX zR_RCHN%-gBep(;$fuIDAaE^SQcKVm9)X5{g-Ei$ksy0|yl+*Yz>WP3gP@PA~YfS#x z5whAR4w21?%ftR1%3Vkp4f`&?VxyVFdjH-u-#B~j@ul%lwpd8X@ws!N(NFrv!)PW& zRAZ@|Z&P*9$`T<%X5VJ@^qWovS^|vHt-d?o`a^~&PclyE-}*k6tqTAZgiQ{7HRhzv zVRSdd!kF^yA{O`Z6XxzwmNs^FHo3^7KlcdWpQmK=SYfiN{;@dD$wf4z`zvlHPkQpv z!Cu^tZE?A|@`}$A@$+RVsTE{ish1G86czq>vzn;VClzfR>POFUBf(wbCV)%-`q*$l z7|qqBNwZruQ}Iu&0|N>LFACZc2_P5;V9&W)Eh~)#30Z%QYJ4%U|4Iv&fo1EIRn3)EoQ0PHS>i>eKvh!KP|X@a-C##A2>tt-*WmVX4|2;pUq+ zi;sn~BBxW2cFGfZ@$2Q3k4$W3kHuSS6!^|QA28M)K3I7+nNXziSn8hAr4)r$Jz(ds z+L}fiBD5w?lQ!X0?r&LyelXZLlTf*{j;vE=tx0}#Zu8G8Kv4oevf9?DtL5;r4b4LY zOzSm#>9A|}gcCbqyg%Y04s|HsoC;$v|F-dQIdnE~Xwv_if=|K>D|?X;@-O75{=ukk zdb)|N;eugeQ()#)S0$DEUJptpY1bjsO6Xp>*Y~Xj86OKSKX^dpYv&9lsKJpp$J;3R zgJE3k|CMV7es$j5S6Vz!(msnJQG!lp{c<}+D~Nv26}hQt>_`8zxt0Co)r+_Tylnw* zcd=}k@Nzn?6J579Bl7}yB{-jo}XsTcb?1XhXymL`cgvU+3>ni2-*OZ@_gVYcviP?JgK70wl96VM+Tw( zqQfDXWHRIk{DX>=7aufiIjIJ^W{UsLN*nEr(fcL0kjfS;Jw==?%ghSHtuwE^WiEfQ z<5wR1C?JvHDJ|n?O0y5wGt8LR3s-3|Iy)tWo(Abc6yF}Z87IJnIBk1qB{a{Y?0S|b z%nXcwNf$|xl}VQBFPg`J+8$J zy$)$@`Hzs<0(jsS2y#~L!r@msx>_o4X4tqEU6=PoSlM--v1jI4Yx>Br89{gJgn^+R zhRlZAX=)O;LXi;odR5+vBT9Z!J}X-7)1&mJmkCeq@%KnleRf5Z${N#?!TL&5L53r( zI3+bH=XtOisN>-txZe!eZr*tbZ6$bYF^*(NSo~r+GQ0t z2Isi&1#?P6Q9y8>5P1#TeA-N6PbmX)(wiBd#|tl8dvC~j1|LszEVHj>uRF@)p!dKpQI?mb(5 z=&4k?Q;SeKk3Sj&M*Ivt!A$W5q)7*4!GKMGtg(yL|3p%f>%D;|RbL;k*kXoxI_f~ro(*6BDO?(a zj7J<6F4tHo0mDN_1(UvS{m5Q2IZkqT!9ZZ-G+!M+t+v`~m7rX1nnG4=XFTKM%1y#s z=Ha(^AfnsMD%CbrBg$02r2K)a2*h)4J<_Kdac(dJxqw!X*KZr?m5de3(YIG$`}LiH#Sn32Us0F!a_^u1$o>q< zCIfyu6l@p@LrMnGjRJO9t60QI#8&Z45K}*+(&9Rra}r4(zx(PWd_W}e7tX(fgCb?+I^ zz0j$+1-sx0)Mf`k#aP7In-y~GN=B4TGy7{%XPA^a!056sz*oMk%HJeC7Y}C~N;YwN z#(mO!mQ~C6m-#dbNo?NsKJe2_GAX->WedbEO%A}Y7(JEUdeT~K)-#9)utbNE73wd& zmwoK>RbSF;%`q=m#;94!WvN?oVZr|ePgk7AH%D0*2HPL-bWpEpO;}S3=rb#-tw}4| zKOx2GSa4I$yWqyxQbplXCo0z9XiE%98Py??W>Yn@A!se}?+CtDT#zziBgEEJ!uA-0U4 z!b*hYU4W`s#?o5t7R+)=pY#TGrg7V&cTYSgc9TX_{tRvfH(xWG30{2erB&fHV2Jxs zDL`z=uJ22+Oij8RIQ{tfoIrnb68=xBgH~|<5FU`1Uv6>p>ff)$cQjUmCp+orwz$ez zf)l^FE>bYkj{T=zRCU#0Z}##dkWB3#xtq>q4qB_heJ8hvb2Wkql03=U9;EEQ+MWmG zu}-|$iOxzF+_w<@sqTe z*oYg=e;>*^ul66nyVR>^C)eFizsH?yGy6o0s5NCL*q91GF%Um%J z<&J~#RzV9WrIn)8x4H?}yDfNgV3k{gql{e!zdO-=5Ka9lFW@_S#$vs^@*?%fii+Uwjf%=QcGERlxXB2%_Lia@mwNZbJDn&a)#BtK`X{{E`DxksM} z>$*Lc`n}doK)@AD>%p6X{qsW0DBe#D&rYbNIeNE@C;!Rl*W>pwY({Sjpz#KoU9+ti zZf*e)WZ2F1lz#N<4;pQs8=7Q548@=58lp&hfPEsrb*uuXeC0?R$71Z1>En9~yc5Ba zB-3kHX0|xdsu~X^an#3{PvoMK?Cy*HZ0g%;MlXMpvV|eiy5^fXmxBYWed)>me%)G| zOSr#+A09Aii=`xnDo>0jW>2j<^L&~YC!**_8|s^+Y?19RWV^TtwPkj@w7m^&M@TFr zHFp@7$>+y$KmLvui8BV%BIg5aew$^D?@rB-4V%tRmZZgkFQXL8hK&Fb z@fT8k!D6OtRdtW}1!;Vbd)6c|$@75{#OhtRoAR26yl$4SuwaqL4k@fiS6L}$Il!Bo zmEPQ~7_TB>7EAC)9gwZxm{BLU{ffQy7}`6-MSY(?u& zd{?FYPFr6tz)T0%k&_0;uN?;%h%aWi)@0LUDL<&V|4-C&0^#@^QRo`uuJh7aX5`b5(eL-N?A+U&v=f(Cm*P!PZ^E^ZNF~L6H)S)6*&J8eD(FA>zmYmhSUo zyA@EOcPg25nQzJpY7)>$`dbTj+|}rdEjwXpGX3E?%p6|!-cc^#_@}#Exy0*i%@;%| z1FgEI!nwp^7)1}iFSnZSwsMASnNK?Xz{x(YL=4h+_178wzK8j=5*`eF{4u%DB1&Mm zfAX#XTkZU&MfwfYk)E!vGWL-n&&inETAoaHistO>ma?}iTknr(E)#Y;&Y+g-*3JBP z@3iQK7*C;gb6)W|*u+d^q7Su1?UuFG4$IzMqE*xSC9aw4gb4#7JvsSieZX5Fc)Nh>*YJ7h zI)`@sS@?{I)^>=j0YUisSW|d&oi|+UP%B>KM{9Yh1z(HWNh52dsscavk1OjF(-9}H z7gt64FUj1M(@^p@XjTw~H1^A_(#CfQ?VU9yMj8#%ebgm@NSG6j=VM=N)l`S|L!*26kR8b0k<0govBc9vT)iD(AJi&A7jfgb!TYsO zj;~Gz5i0$NpL#|&lH#wggXejIEbPM2Da^D=O`~EMReF-fV@s|i=Ru`Yv#ruUmZhg} zad0~r#Y0Hi=gv$ilF}al?}+qwAg}KQy9}SB?~b}JKmgA^kES*NU5WT*?#r8qsZv5=%=!z)whE*k&c@i zbE<<-Shv zbGq4C0#y0CFIXiCVTxCqcN@FJj21z>&aqO5`YWFAyq^`v8r9GK2XIn{J={+VGs(KJ z`8HX&MR@JGt5xGQ{+vT1N6e+t8IZRo>xx)4Ub|w~7FKnM?b&W?PgL6lKe5aj5{TRa z=ylzzS0aJrkC#7PJHSCWunJu|R5up?DibaCnkI3lJ`;yyY%9?OAShMpNEZp*A3Uu> zK1zjN8Lp-2h5mhCc=5M-OD5yvX)Er*JCdfKbq-N}>)>yWDgC;EET;?&?`>BE3{rVk z9#!zow{X7`=IjJPz&^}prAp^aD9oH~_Y&}*rk`Z*R5Pv02kAidDm^=PbNkqR*CL;T zxWn<*Z)2MoqK=*E4*$9*&b%4t!K(XIM}ys~avMn;k!vkYwc-6<1MR8)$;f(f$Mq+0 zTX&uS!?B{hskTgq*6<#60oU1Qy9e^t4L^U>wYw-IceF%u#V*}zXnUuOSM*XilkjGm7SNX;QNlk5W&1psUM&xzqHR1yjrQ`rwS)6!xu3SKpnfXtV zQ3f4vWj?gN-@ukf=-lpf32{o=TfiFq3rD2 zJ@>Wz!KILT@$q!;uF-{nYvf(XY0jTG>YMqTL?~2k7l|t-3iU?WLpn5{>D<-Q1KQ5g z`FgN&GM@X>M@3^Kc3!E=I1)LMvd(sZ)J={F7(tDHkFYPz7Tj|*%os*-+=iqAP>Mnb zSJ1$g0woS`8|{YQJn@_feY34dAwbha>9YxBi(@2^HWa9UhJ0|*1^)U5@Em|Fd*e3C z!~q}qgP!59Vr&W}0M0oiJAQ8lKclUNj(7UIZnprS{=3t2i4VBn+GBW* z8YuO`@zfZVl!hv zV7a2&P()a~*p_M|69M2aYb4jFO}w169iQpNd{4jb>=7BII>meHV(bW_+B;FHw+pIU7yj@x&D7N`?F z1q!|ms--{Yy|OI<0J#OKj*)P+JHJA}?-pSPv;kagOZpD~%t~KIT>>&m2 zw~}}pW8;YcJC1E;EAoqqJpD=C8F)DcgqjA`5};9=`9}pLDI80>p7HH!_}^IG+MI|H zaz(cr-;Qr;?LGBn-1ED|tN%#5EaKJC{W|z=o(bEI%vT<~=iq57pjV_VSzGM*|8sW! zMZkVE$5ZVI1l9Ow03o;KmOAf5f!tjxAV*ynOHQ@43BdV0-W_5z=;O{mMfSa-b9m}o?*lR0}|-~3M>G)fWxcnuIbTjt#?nJ zY0HErsp^j%vyZ}n1RRNG$6v3X0G0HswQae+N8HNiHCT{* zNOb>*cz{a5$lsnQQdxdP*u(my@bQ}&z)4a{+Z!^d2v9WId{4!yZM*YV-4KrC||wi!$r zEHgpS=0SNN|DlGx0ZwMb>6i$W>f;0OL|)$ggRn2)Gwf_5%{7;7S{Gbi3|onOVtagsc$=7OXa zmclpq1|wuA@V0YI!JQZCQ-YXB%`jd^z7~+JNKP7;Qi$tU47ekNGf=K8NcjBoIZE2y zS3$kuJPS%F4K;Hn`0vk6IyrP)iKNUb3&*xQJGn_M_OdY5EqTu=V5{ZS3rGM=f*>@}2{Hssc~3!+ zg)ou+C@C*rl6O3jN%4rJB1Oq*S|V2AsP52P(L!;%(|VWYBFl(?U$6af>v zCWoe#J8uO3oO5mP4FR$w7^DdX$S5J9tggX47%3>oq;^HX=0<*K&;)r%qswuFyXT=ymxkU1dyB($Et*z6`|x$|!&d~B)L1Yf zG}sfjd-1!##K@sfH%ecap0f4U={}XOAw{MY+#?WQGNmByPE@pCsDN#$Hn)?qaL-ii z5$wprPYw;%n83v??6xq(b;K5|t73yED7KQAOh8&1ax$a4IH=wGxecM!-W4 zWnfCmsdOpOU1^lCR>3P2sSj-Z*HKmbG|6kY?lKH3eKSpj&HFPS_3gvr_Y4}%{i3l~ znaB@am&am5YI1&kB#i+Nc3=+}kD>Q_(=X4eSBd`yo%O-8^NgC<5n{Atk1W?e-7XX5 zdB)8!Omhf~>~3CArKYO+n~#o^C}x|UA|PWPvms?@7` zRwEZ;buz79kPORg%6SBa&>y;XS-5n2v>o@P0h5qtUCXozX}oo6=}QN@+8yy{;~Q#^ zby@gVpTtK7B&u>oOr92Hm0PV1lIyKIol!9axg9ZmzM&%d=xr=&SzIyA#C@nk&n-d* zz&;u^IY-I8S2dKHb@MRzCG}_HgU;?TBxGah<#Dk|wnU5G3AGFm-t_~k5c%@UmA5Q6 z&p`?v)5LDI6~KYOxoTQKfLit1L0Sp)qwuH!4T(!n=Ly0wdp!2AyMX{A#FZZqx(vm80(HgK4gn{&{T3 z1+Kh_e4Y%+tZoQ2x*Qd@QDWWKOC;s<$8wKNSAmxJi#9iP(u-3Lf*7v7{A8~c`sZ}w zmS5BCPHm8xJx7VoB{KP1e1AD~!X9FFa+G*s7cd*FSw=xKUrXrT`F0CH1ZZqN!{*KGkx{JM?yEZ$0QGkC7& zGlwk5v(-MZ#V3U?GW5LeF&^KJ{0t_&XQRJ|qB^9>TW#5l3lDhbGcmMzmYbmPuWTQK z6}&(Ffq9!TAe9!p(JwLa(2E?%q-wY$N!3?x(tDOv`HusQsk>tj`Q3S6o@;)7-r1}n zz^!zds&q)e)P_w&eg?ttVg;bd-BG``w?@& zrXweNr^Pg_Y{C}RFP8kXj0i6|J8G4K6jvDW$qAI5{!V06tZ&8YmuBIr?81fT+3(ue zdEI|ibMmLj{2-@V4#52-Uv)?PLHT)SENmY0^7kREeB+E8Tw&~kMEDd&S zS5B!dVF>)f96wY@m*E|!8MKgCjNN#xAn3b>+la1XQ-A2}Iwz;W#UsWySIJDR+bj*> z$Y>HtnJd|8H7${Dk+<`4U3HQlI<7NLe^}7{t2(f`G*|>*B|D?QrHej&I*&~CY#8mG z5_$Lq{n$38fgNbe!RIEu#-298_YK?>n4jI*sQUR7c*Of=EW=~&jfr!NCtb6;kn$jc zSZ$@)O;D}cq}boDwbkf@YeH)X{b#{vQ5_6Xm)smj0*&#|v`4v_@$BH6=2-hIvcTiKo6uBz^TOW*jzq5PukXb^7_*5%O+)7 zJ*8^i3SN{iW`GPa#6;AIW?1E`G zpD+d9!+)#v9P?EF`;`==?4V!1A#2ycTn@a@rd(E9K07PNvCuy;fKI`G&~tlAVc8Tf zp-_JmL&;UD485{@ltRYPy%(^sJP*7wSA+f6BeerMKIqoEE>w~8q>H;6usdGwQu>7J zLU>=FN00}vQv!I1`soIeXSu!0{jGoO`V_=v{w=lHG}EjgGwtM&?eSx6s2Uo;?p%Du zrJ?Q?WO)5{X%RoH@$=L|h)aC<0LiqU+vl`@6*&rJD(v^PWDbqYGqQaa!go<|`=!w+ zl*a|iW$f;zxHxuG#)~Aln7V16IeGM)!AHwga=z+gJWUV^WG)5mU!u?^Cb3o(|N9nd zY^-McYTteB=3g^f(%Oyp_tAyV)#P9OE9#xmFU+oE^geh=gxjwOgq`Pf)dL)p;KD7} zZB`K7*X=8z1O!CK`)l#J$fwHvY#$L-$GEz-my~@=>H?G!XAA?eIc?#pZD}j|2~88-p#XFpXnLaL6sywDR7uLgFcH5JBYRtvqDCSXvgU5g_WiVELqeJ->to<2{i-(J z_rfSt*G}*@{GzxyZop3V&h$R5ANSV<0=aIgQS7qY?I464dy!` z6F8=?-yp($c`i<6LkolI%ouz;;EP$=R@H+38PsD`{RRIWTFIYS;5nc##d*H1-v$)h zXA~>f^ti9mo+BGbC>E|W@vn3rrfREh?t4&d{cyo>GViqypK*9uHI+sxm6pyoygtYB zh2Wc*@mW=V!fVZzxFSz@P-)y`wT=Z4ak6c3fxg>26*Wumng8Lq&0gkAS!nBB>^A>k z&lQ~a7G>uxFzeQ;8+gaC@yp0pzS`a3^Jkm_HRMCV4m-=AYKX#DW`$GPVbSb-wCF%K`@ODTrnjcO!r9BoFF7CHoyFgd+)O`5h-;VE7CV-&CKuyZ`LZ zh{-b009(I7LICT8;%>Q!FmmCC+KkrEM45Q$KGw+;)l7eyZw=!=lf}pg^hdEoGgYEB2uLt< zawh$k?*BMWof&Tfi1+J1-GFz#a3UoUJ@ikcebJ=(RFpU{{?`|^sx#6}XNo{3fe;59 z@_qJ%q){2&-$v#v{7;V5m@D2=M{>7tf90L%4AppPDk`_4k;Qh-?(W_{W6RvXtE4U; zPV-*+fdFwN^?^SA=#PqBjsFoMH**@kee>#jE6osXB$sdwlw3gjX(Bp44>)tFKmYjX_rW@}R+k8*UWjBD8Icg25yyfX5P zYL<-jWw3qGZLC=k)XmH)L9&fG0-xmD>aPB7hiJ?>RK@m+=#INUz9H-aX(r?sLK<^? zWEN7UWRh=V6+O1sYZlg!fsU;=s`UJiz3zNMp=*HX~(`6c3bVuZ6}-=V_9|nI2o55|p8o#%UFIw16-EArRFSRJi(?rvi1p*!w$yvfmPJlm zqEZiw_ty6$q`GVeiwa4Sl8u`Hw+eXH7{iERnr<6^_f6}9XfgYZd&}t#f03qSA#48z z8RVCbn`L!>{Ke=&zxx#!CBLXB(Nv$WfU+x52U8VVO4o=C~=w3hInMnMG6w{ zA@^Q%sST9!r8$SYX}^2JRDS!4ZmQ~G^+6)KAXX1t7rDe14iHHPBOQ5<%0j}O7Z*yz z1_Uk(-@sN?-Xb3?Bx;jzM7~xk&SG|&kym|!DpNEGB^%hj*@>zScY5ofo@DX;sPS^y z9blCY-&cfcPjMx&@TaqlE;lLiCM#l;2H3)G`1s#dLj*=m@B*#6<5@K@wpRM;#9&P$ znAAw&k^bupS)G@cZ{*0NQP>4rT=A<6O-f@?(HE~ZGJJECOdfchw{Wme^L!oNuBf|&O0wwdzM8`#8NwINpoOxT|%V*#uEvSC>FmU{@EQr9pyZG{4uPJYijk;)1$=kuxR5gPqZ`}Y$Dqw&n>~4fLGL- z*kT{;0*u$zadAZGnvylD24e-xgo_>5*`k7@#Ci>9pOW`I=pJ@>o&JzimbwOZBM_3i zGhrm0Ca=Z3#Xu3)=>u!D;|({jSzL}hr*~3zeHZuOvAKKSsK?7ALPD%;Vkq_6{s5Nk zz4XF%nd~)sNx#*Ad&QD!WDMKV{~}mUPQYd4XY!-J_kWDSqiqarx!wGBW=>$hyytddIb{ zLw`Qugz~4#CEcAhjSxfakI%?De!mOqS!{%Z5%Ewei(3Vj;%nq+UN$qLiWMEp9cA5? z>M9$r!)z7VuKli3p@?xPD;FI!|(HOlD4I_e#`6(xfk@ z9k@|HUC5eT7*yL4l!TjU5ug+%*gh4H2tE_Ah;B(%7W8+?9GyrsE@X|Ct(!bD&F&iz zq(~|m`jXUaJ-;CgL!)-lSj0(+BG$EQ5c(TZG;IHipo^J1BHo?;{B$E*@v8W_W30;j z{g0_n$z0L_u(YSL9NpuU@kY5bf78Y_KSvtd^V6z%w4I&gNiSdN)hIek+R6mJPTs^c z!ay8tzgEI9_bh8kH(Tj1GX>sF*|9W6xlCyl(=Q3P+U6B8FWZ#A%2X*UOm|4tfW*{w z$j#@lsr~M{0^?%65NaNVFz`mnFE~!eQj}Du3##e=NnaT- z)lKXrwSR@PmL(Y5-xNp81#&elSAd>^O05AIL)L>(DsAin6}}FLBZF%){B2PiWRCg; zC%Yua0r;>W>4NtjCQ}Lu13V3bMlT=y(I(||TsQpC<4gb0zHv~mJbBK9H{RIGGx8C1 z+#mGo29A~UXLC}q!YEq_{s(BF4|ni88%V4QFAj^kykb0qT(iVL=Zfl6Q>^S;X+DaS z8`>FfKrKEUd-elxxbo-biM`zX!(1CCGii`x^#N&Y{BqtsS#q;23?lUXn~13p-hYjU zJz7GrYNyTN);AeUj1h?R9kZuJlXjk#nPyEvh<~0x$#WGxFjOqu)B-)?qIo2gtOzhJ zEQfz>*Hm0`ha`L)r^`>Tu2{6ZtQ9=*O-w^osubjv&&Y!?>(7yqF^2lD-SpMD7ZQ%& zHP&)C-l6|8+{i8a92q7cp7Y__n3`g**!Bnqc<@kpz>@>RFhjQY8FX4Bg4_!OFt4qX zig+|G&i8EhxAl+o>FzvG-oa$hXPB>4Wbv#20GQ`c_T^3a#_X=@%H8rF!JLJt=-MFu z+maiaBTe04QvYnqMsai7rZ#VAH9(0n3Y!UQ3=~Z+(v7KN(76uL>AMu$kf%XrISv?DnwyIjaeg zlqiCvv~nyZeGkj~v)3z>FtRi0nS*S0!G(t12{&AXt_ExNF`+BHMg*{XXH_5RUajjt zC-NdfHpv1_C(AJG25nDzE1w&i*ZZ78YXZez=+Qc z&B7d{AdmZw(x)VaxUazCM7T`368NJOeA(&n7H~CrSe0CI~td;FJyD!~^UN zrE-U>VO9`$F4afdE?dJb^PW-@<^P zGJ1`h$1wtll~0AghoiW#yvgnV0Vr|89LF)x7j;qqY`(SgDFKkLZ+OpvGwt+BAF!F& zEho}%$fgBQBNP!Fr2;YEgdhzFMVRL_)@%zorni^U;EFxvF0|^mp1b34>H;I+LAd`S z8gqI61qGpvCWzrY+Vb31d>~~vI`%VBarYnuU#b!IDB|2C;rc#50iGb_aSEFwjOrgG z*yR0M+y=-AuU??m3@T&3A(m2z1BetGUgjis<^`)2*hPCLvZf>w3~bVqQa}A=jud$? zQHEDSWfF1VX+{!xn{#kFXCfagI3E)WP~4{`q71Oh>%a2(vdqa7uEO zd8l}4>9ezfd$K$Pt=O+}m=zuOd!PlS9R&eJS*pQW5)w|DBt_B!Y(%QyC}t;cH4|Vm z#54+3nvb~iR3u)=t)!fC2^-6=DFFx{#kh;grX))DZ||y+g;?D5-_wC$x$8jq=8$f> z4G(C+Z!c6HS54FvfuG$g_~9@+{BTsCs#C5;`2n&29=|t01#JXQXxqKnhR2RH?De5q z@WjE>aRNf@1`)Daaa6u_&ly0t7LkOy@jovGRI#u}15Qsd<8bgu*bj+&uwP-*3izlr zw$$K0icKeU9g0$=7EtUn)X~nwlvR-urx~W6AU3xze@_ySxf8`j-l~=_G$UwL zjWBxnhe;QZ4)mj|;CQ@Vf^OjNEuydxdkZ>@l~_CuFizk(0Q{hL6^PJtXSiGTI|*0f zvG&{@p}1#Fz{8LCvxKH7l9qYerR2`?{Bt4zsoA!;N{^C+hWtNcj0~}+;u#}s-JD0z zOTyjap99%IxFAKKO&)9GE-hGSwTMDgZ!)+W`bi_Gi8tgC{~h^{n{mle82N zZzh`5xwY)zvrATr`?m11@W23FptL1IU9P?Bt^vR}#3$6RV34l?FkT1lU-q-L;nTfe za0WwL{lgPU;6DY8CxnFkF#9!%$nA&=J@1Egf)e|abc9v`$Sa1&9p_0(tWpEzv{u2>-Lkm&S0qMkeXPjx7_o42rkSJ_%P)u{^+`WF(nc=dY=Fivcvc&P+p>*UZ`SEMkNNT!R3 zhy8AY#XA99!rBUmfS9rpfKI*K1!h?K&8q+yJ|v3d-4G~i87Q$<_;2ba9RUkF*M@2< zXgA`UdK!YZi89pga>4CR1S7`)^Y#9r!;3LMr7lhiL`3U{+pGfc+mx@{9e3x!@c%_s z6G`a-vv^L$!qxfq{uG=kU9tEdRJh&m5D#z+vA0iLNp)A-j8G$y_qlx2vnWUK|MF=t zTqn)sgY;$?=1suUdr<&-0DE!DR&d3^#}`o21$UEU^;-pWai99bvaANWW@gB;W0Tx% z`J#n#8u`tjrZ4LB&g;?Sz0s~8P#}zl5_{CI5mNZJpp7etkZO_lRJ@Xr*fl0BSxP7= z1!I-VXHz@%7J1T709VkJ`@RIP<3=KA^%92F2_Y2c^$TUT4G(tnrbI2Wj7!o8{e1KFjkCC%K?C`Jw)#4=_SKx ze&s8whVEYC_1GU}8THA);Q^GBiB!@KR#I#vLGh`8J(@Iag56sk?MVRmd-`G6L}%;% zr7mHb!1YOD*?PYX{^;O>Ni2i4Z0cLMF>%dqcmDxg;%84c+F2MD_L*9{%`yZxR1LVb z$1Y)MpV@MFfJn!9k3gWM_Sx8`mEG?>U5RRDkDj1*sYS#Mirv|@mYSzWL>GFqwwC{+ z|00^x?!378j4ft<$Z`HSeRSPT35A2~_hWHoMGPM!1V4J{5xZkf@HM;-AZhW$zaFOa zqTd7<9bd6~Hs_H~y?wZ=$4|MqoGvyOfnDm36NR$ZJj{L(W$i2i;U zax<-8Bc@%8c5El;-m1{E?hcvXjd7OgQk5TU9fDB|a{-7mqP1&-GJS!Nqxi?jb@i|L zUVhzYSr@V^r0bF_IF^xtu46A1F_FV`w}&8%PetD2RLRitAsrI4KvkT)0VZ+aZsg~^IIqdeXoG$jJ+MY;%+SM zU^U`el(AV%UTgY!U_SNx>8t&@N`oCq1IwSzxfK)A9>nTWM9X%Y4BgV6>I0{;+ug|m zf`z!h-T8C#y>BRQ_)Gkt^U#S?@o}3#KgS=*-XHj9k$fg-pxdgb%z1T%UqAC#lhtn- z<&)mh@y}NO?mt*nK*&6Ajy_#{rujX7e9N-;dBwm+IDP4Tv80CbE~z~MK^sezA=_8- zl;S1BxftPpp>aRoF0-ke=9BJ-ZTr^0nA#VY5?Zgj7sX67Nk}OwYxH_&lxk5%K>y>P z;uvpC%p2+;ZHtS~J!WZF(vQ*uW5_q#y5s))vXRco1DvU;N79>LDB}H? zqNRwu8%iYkR$RabP2~6P*Jd-*7mG*AUD-9i`K7%IkvkS813^BnQMpXw}zV?$Ju;22Op;ZOf>>P3siheWey8GEoJF|&rF-u&*I z`GLpdr+#^}u5-%A5T|kIZ@S#pIm7T}>Hs_P{cgjb{%@3rdv#&u7>1&SbB=laS>7>- zUAxG9~^u?4MuMTgH6*vW4C05qSw7 zADTVT){6{XSY8Wrm1O9&?LB)t{7YFUwS(`*bzdtngnh zfnxgwkAp>>0#v2NHOpaTvn*z|dsVv%4>tkSqy(e6f5{66`JN;s%>cRGNE%Ub-C^G_X znwpX_#MY~-D;q2zv@pEll@ID)rD9+7bNnUJ{U|#63&-4CG*8a=VV{5UFBlO)bEmb(HP6k-IJ4y? zLsr83E;)LX_vKg1RTqsRl@_kD`2`)!O%fq24oS0z6p zLuh3`6{gCYTB>_HSQpz-#2a6?Cy-3)HjJeoobq@HqeRtBGNm(!Qqn*I^o}IV+^zT{ z`!MdN$yjSeomP0DTaaDbLs3685^v`2vp89cbb$T5M5~$1e!5KHMp7=MpueuS35g{A z`u2E#h@HBASn3H1){v6ux%lI(c;=TRKRX(2(#1_KZ~N13pZ6PZRDp#B1g_I~`0PVW z$f$CpP`a)(C$5XTri$f_zGj?^Dotuclk1G$cD%IQ%oXBFH$(YF#_ZG|iN9(RkxHE1 zl<-8=AfKy0OV?bmK( z+bMKjd87?tYt**=JjCWZ>1-=fBPj-W}Mstf= zFB2-8TA!8)TqN%tzrWUZT{rJ{%#v_Cw`*gx?1+fn)98vns4srTLDo zcD&1Ou0@^#i9P!RUH#7^V$+NgZ0CNMm<-Bpg}mQoY25tuoc~nog-`N{Ue-aiL)T@F zkG9C2Vs);BYWzH!tg4=R?1J|RT`i5yATK5^*s)mF=j$o+JSOP%w53g97B5GDcb zs?VXCA3~jZKFE^0F8s7d0VKhMIuPFin}O@uZt+33@F-fh{Tn$ndseRm8(9%o*|iu2 zyUs`-{V55Dq}=!M&p5gR=&L-3;V`iE{%h%_Wm}4Xq%D!D^g=J=HqQrj-pjRJu5F%3 z3hRIFGXF#loN9A8N*`9$r02|LzpxqTTO|Q-tO5dHueIXHUL}72Syz!2a)G^P+~GlB zqy2!uE}#=-X^DIDIS~=X}#$@eMVq@ zd2-M2pgJqS$V=Zdsn35?zU4W#G&t3)&hTbhHI@@(5{7UGY@V=%^%@So+_NV=;v`q! zgk3M#(aON(;s_@^q>QaC{{x5@FaNNYbVLG?cl4QuGm+J#x%Gd=@{{6~E(89FCEjBc z*VyQ0UNm-(>xLJ#5Z%48I5Gw8ddg*)&hb7e=%gHJ^$0jt#5ZhtM#NbzKauE;Q?K!X z-I#adBjls<5DZfhtLc2p4ry>3SXjz*vuo#Iit@%}SKIiiz4_>KYZF0P$t*GG@SvY^v=paphtE;A zVjpy4l`UVeK=w6NS}TbUcF*tbMQ&yPds3fN5v1Bz4>J9NAIo;}^MUNRk^-U84k6J| zL4y{7%A%mKx_%!_$cdHWj|F|>G4d)Pz+{J$LPjGo62I!(=`KKR4-ma zbD5bNA?(_vt%zBfygsY!YZ~jH=AC$=hb0m}2`vY1aN-9$rT$%2T>hf=hP{?Z#BVE0 zF4Lh`6-uAh63r`;(9E}j-u87}{7nb5lTk>w8`T-yBR%3^O05 zJoyOFmb~dX=dn$iA%_m>-%v~qfnnuwl1!G^4U$RgyJ(1BMbu#mzREIM(Mn|4d@XxVsfK~g zm#BY9EM0x9*7IrPcs>3;4F-I2^Ia<;?e7bHVG~BwuW}o0dT+tJjz2twPfCP`)(;Hh zp^k$m;r-jw^C#u@?bQ}P!ZZd8DXE`W+a-IBdd{Wwig-c`sFxXQJu#wAj?)-`3L5R+i%N8!OwffB{Zr*}}fQbnQ zmy!*aZhvN{Im^nn4u`E4h&8rsrRyuqHdxQbTy1t1emehQFWoX!7oi}KNnYfY#Px&JZT1Nj4(^m*r5^} zFhcl083xr7`)$IQN98&i)l(KrjgEt2j@;y}k^3kB}gbqw~uAYP+~fO*5`XQ zJ=RxmH)1Oks3r1+&MDcf0W8ykb{lGJ0V3A$%l9(O8siu7@BG#yKR-SmCRMdKHZJIM zFZLetR2k+aVRDd>jZ!aa`&3T=hcvmYtCE1h$pMbUrF(sICR<+fJ(CO+D@Il|oxDH@ zonLS{$Xx_i?Ci=gxKH;#md-n#>i>WLujAm@ zE9u}^9h+ojAFHynMI|9=X?A8 zd;W3Up65Ky^L1U1>wcLxaLsgN$%%m@Q214eK;~y3n-Epj`P$|ZmKJ{P_$F!v;t>1m zhg4<8cGv`)p~T7Ix4zjC-g%9GMp)nPLZ!~drLRd?zSn%G&RL>2ZA`A!Ev-#4me^t% zo@ecr%AN1wn{_yPu+I60GvH`&$~^y@<3y*jzgp_;{zAe>B{AWP4QT_&J`rrud8un5 z*WZLXMyskwPYdNGs6)26!FtcAf$t$Qc7Dd68XQ@iI!(e&+*~W%(M@m-N|}?g68dha zHBVXVQ-<_&APkmGy4R9}Nu!r@-asEQHH#yUn!0!!yVIaXI23beScLa70b5Pa}|Xc zrEp~xx{~n+7aE0YQCBa2xAQ)z7E)DKiM&!DDYwPN_}5soVHmamYey=L44*x4#yME0s^raaVKY z5bfFM04aGbcMiELhIjU4p0mFNj&8a#j28%k_3$pl7_|OMn0feaHZ;&DH8#ARS)9!y zDM4AVZ|mwIiyHQ0!A+y(S>^-%(J;kE4Z*#Qp}KkU;PQ_iURP)OJLx)jONzfU`eEau z$sZ0Bwx4}hc~nx^b&2bGo}|g}tJc&%I&qMmJL#VZkv+FUnsiwsR;|u1oFdaP%%Llo z*#gh88sp$GBA&$2$FzjgSaN%$oAjU{Xew><_yXZ@P`320zxrmB@L>OlOZTTWXJptx zDhn@I1qXn^gy+3?9~>5+lklwd&;KfHE~k~3aSl4iPPYGGH#}EJzS6gq6~SyL)8Y}) zF*QVgTr6amwq~GH|GXxCRXmga%#%!eQ_+C)UgZ$l2MxUoP6mO2=KldYN+rYfWYo*V zY47chnd1puNu}E0`}4O%`FVrbTrgyv{>bL|4(P%)KJpiV^QRl0&x1@dZ)&hnB<#V} zS?P{||A6qM$7jE&rChW1nonBm(7T->_3Tqu#taWu9g$Lu;<$FnTZ?q>&Exjm&oxiL zxCz^_`lBx6;k3nbjK5E2?o9?XdCZmvw;)LcI4s+c+gXL%N5YaJH|`{v{-bvKwLabY zh;x2Q)mNDU6Aw4r5AK~e`8aS!mtPPH@90>KI~=^I#5dDP$q-El=c3>_4ptUcu02fp zYbWXx0BQS~o`b!e+5E#++0lezN8|z_+Jxsn5hp;wje?M>CpKaA%8#) z@yNQ7@Bk9Oq|aKHEha9_-V5W`oqyr34xhBCo9H6|A~X{QWE3A_9v9p2oyGkUQ%c21 z5C_QC)R!f8w$eRDY~bhfC@6nixh6eLb_5`23&{Yvo7BjIY&6aUss}a%HQsAZq;{oI zX#3cKsCc+sZGyS`y7nBAhrzv7=^%k*O1->9UnAc-whNxSh}T?6?aJu`By2Ww z-f}+-2;T+^!1#HVdwJ99AFdq4-QZF)DJge}07_BD^FNq@r+dM%s~S>5^Ty|#(ynFLBsZa%()L<+%G+Ta+j6tld4?|0(W!s=!*U zx=CY@c>L6c#)1W7O83Kk(e=X9H$*0i=X4PAowxVaP_b2WHamt>N+%c&-GPp&X7i{c z=MKP-RbpQZjJFXTP}7woO209r3iRL= zS9+DSXCn!saR{>O)^;N0^Af_j$555}Z1ji%MPO@b%N7EaVN@DKOy56`V;atMdkJRt zcJcssx!|Zxjiti`X-HZ@B<^FTc&OLd5cp}EQiH&421UAKLlwoF=vPFP7Ex9WfLMoI zZ}3;{!Cf#qnxP%9A**O2{GGaVnND)Dt1^;4b>Mg}4^|oTKKbFy&f03!seR)W5Hg9PX z%a)|Z9;$ShaW(ijBtfM%gfJaeGzd#5GKVB6;lo!bHNUgj8y#n8L5fy!abQ4G^}7M7 zC-noWp%j?@5e$f#`_Ap`{s1mDoxiryYpk(A-p1mV(=vPQ@iG+MlNkSTMr8yh3>PVc zHUUiP=`!Ut_x>j1{sZzUT_Anx4OG)f+oVM;2Fs#v0x%Hi^j+uENq&&WEQPZ;H@)5% zX^4H0p4dW{a9cK$9Y(BO7Bj4Q+5lSnms=AN7ZEeU;7tIcDOxgXtT}(M@d8kc4_^_? zCe;1KAq>Q9;^hk=cwdnL#+S>`G}CDr@laan4#i8K%{LW3iXP9swSF239RC4FQf>y} zv;~av`W%=7d~mQF7aMQch-$pe1~4D%Bk;BXw*j9~Xz^`-Wpsz8URGf(rj`*Lm1p9C3I9mY&&*2Co8HgUm?JSMf^%^G9$J@*f2ZEJeO|7}5at%SX)X_Nzt zv(kwLp^>*W1RpWY^RH3<{BRiNDcNi;)qs*)^ip?T@6subx%f*7)(B&i4t_~O`zix- z73k8*k>EZYy(*iU!{hF+kg0$Fi>|3EUX`s+_5$uN9fan=6wDPA)wbvP_xMjk84~w1 zJ6D5XFe2ygWR@0uQp)%E^u8nmkEBJd1gKJ@5ZGxq=<4W2I~nw`Nx@C%SRuXgfJZbY&K~}O?XA< zy#tzRql0oJ{w>7S$8^T4_#RdZM}Tq_&$+ciQ%^sO0>SkZJ$0RV;l@6&@oq%QF#KG* zM^0*<(7zjZ65H3R;&}7e`CbP%t~gf&8!VsZ+T5%{qr@@xEjv#~pP4`LNE1)_l`3eW z0V~#=W?2ffdBKTUj|!QG7lwaC@dzYR{- z&$HAO4RU0SafZA6O9xe1HnMUcDUX(IeL6pl$Ha z;6z3dDW!xfGPP@m!M1oqAxp2`;e|~>5&$oNC|6HVXP*~QQ|W(cfG*oo+aeh2(UL3} z#1$nV3@>5DVD~MA$zGT@XB7tK^*L51Jv=GmY$8G15PF{uFA)tLTHSWhKj=XAE|Ie< zk!l$MemR+MPTsac>4V!bybnhO`T0>tx!@oaY`5U1tf#Jn6FJ3jxJYlBIyx+{s%0vkIqD?Qb#YQE zx1~lmLp>ZVPWq_*{jp*M<`#UIlV|_YQuA)9D#rNjNXy(;o>GSExJ7H|@nwxwr5F9r zE~=Hc-H)t``4zHF*{vA}Ts=MG_oX~dv!VLa_Zs3v0#k++YrIsa8LrivD>%e0=cWJn zhA(en>WeBpp3(9B^NUgKS9_{crXxdBC1$R8g~Ubg-=7>212_y5f*X_^bL-=f4eiG*P5_KeAA75CPFG+z~^6KRor3^C}oKMYdam>xD6$ zywI%Mw}_%Ue{0?zp7;Oe`0`(HxL)!-W zeFSIoUJd)_T+>fs2aJ2Iq8uT3j|f&v$7{n=9BY>9D9#lHFM_fAdVyGaH}bYYbA`3K z*Vt!oTIm-bcdJqIbi#q-$x`@*wmDW@uol~yDOK`s{@ZpkXMIg07tWAgFfJIMGHWK*X=x{)As8gSfT{0W`pcZJlMdix4K?E$T{H)103#JIocf|(9y>vz7- zoE*pZ`%Z<%#|$K2y&p4j40GBl2%oCRA+eBfTw1)IMdSE09QE^DKdH|AadV(60IUsLj%3!@K^Cjrr{ z5828;%AO6I7njkP;lgf=(bX(QHZUZ`eYCJhxYn4(g2Bddmh?vO7gaDZ`L!y)&1Y~y zcb=@iHITrl^o6eJ^K`$b2)q3U$dd{*#R(kR+zUwpXMdtv^ov6jnqk_w4$(M1jK-qM z@0UFF!^tZqWtSQmte3~T$T4*ysUk(^77>YM@inzu8<}CZA+?PjKO6M7ck=z3J4fM% zNk(UR--&3}%0u98oWPFMP|c0Y0VDdaFO)tuIkjd!sufWjI~F|+J)!5R!mQwYuEgoi zYk%{?b6}4Yl>MM_Eno1XB2TM&yu7$QLe93$c6e3m&v+9e5F!hgul=)^=p0P_&B?S+ zwb&?saw@f6wG=6E@YC>p(G5**^dnoweh%G+FGDYFU**c_z9F1fN!8&@`+irj{@oPg zzR}$FgW5Ay1FiPbJlQ{8(@0GiORXUXrovgT&h8>9fjcg_BJzHfGGX*amgY+1R<7{` za&B2rq=a8z8+Ty)7E_0_flm00@I-|_781yxo!qmi^G1xamufRGRD8*4kv?FLYrL&b zRC=0VB5I=R`5spD$87bGV^k#MwB3zu;NqiqwB&!JzjM8R0^TP)5;j-$d4tKLNnDqf zSHb_St^6!t#CKjXree+ELLEX`c_3@27gdfdE5hMf=EHh z29#SLZWKPPZ%B*ff1PDJ(#EAIVRC@m{s&t!IU|)Ga^n*Z&R5I{rm<)Ymi1n$GiiLQ zZ%YXG&Y=aZ<_WMX__LQheDL6*^>syfJ8czwTJ2fn``3x=4t)7nS?K_vPKY#PBAV7- zRDM4{<1eQCLrz8>!cKJ%Vy0>SL&?G=HCLjkFL)|&2K3WB*F%O9qR@uv>{>(}l`*rj z#9F#MD9QA6SIa%@tu51{bCQZY9dn-w$*Maq)_qS1O!F+S#up9#7!17>E;7=Mw1(I> zKcE`XrhZqYI0ag`317JBhY445y?*esgGs;jTv(IlzdD@_vQrRysF9hm&g+4yr+m{C z7NAkukbloT0ju;cB$u*L?8#EnI@ZOMrJh0Bmr?-bZ9j}|F?sMXwN#vK(gwqO+>s$( z>57;kVlb#X-m3j1->@xqa>%;4wt?N8k5f7&+UXM2=29JRxYA8|C%%;io1{ngG894g z;KQxrJ6VtUWiGI$-{JldD4+I@`F!$Pbc5D?9l(laonL~wJtddw&czd_l+ zrW+epJNdkfL}(wRB_hqby>5%r;9eAfwtiNb(;)C#UYeU#Mr*x3G&~y5S^Or(-+Aov z9gOSbMnBS-HxlU+Y;qxMJ~6)jI|_a9B3VeMh4s^wr8Bb97&MW2Rb^#q$>>SdmvjR` zV?FXlP~d?m4zLEBbU&>m2?%xk!B_q3n@!N&w(E@>;YY*|CD{hGB(L6j@vqs|s9mSj zVK)1afKKeg+DoA81MI3IX8$73D+XwuB9{dZk^=WG)GwNus~8=3d=g9M-k#oOLtPUq z>T?aWmmP<<2LOWNJ4^d>X-0TDe$fNx=i@5c>cSJ+sn|zy^%)*@Bvf~SnBMPaO&~+| z6A2q5`$FiM?eR6gjmIhGbeJ&2^v=S7Mv35DoqHjs)Ukt6jh+V^E~Uf9(L&yKeL36_ zMZYC*{dvSerW0a1x-bs;;S;_P8t6|z=3F)Gz8;YnuqrbFF&gBk<7T%Y?9c06}g%Nz^=Nw z)0STNp}#o#l;$Mg-`si@3`))6=;`=2Leg!XSIq zvioA(9jU3_KNU=6fRIOX_!{1uGdd`_Ma5nsAp6{I9W~N&neh0Pb zpPDs#zFw+FnrNiXH{@NsL>JuPr4E0+`KrNK=AHm+L6dqlzf*gNB;>?kW^etlXKG$a0wji%8wZl6Qa z$64l8-(7)m<MjNxwUGQfJ z6U@4`$I>>uix+N;QyoJ;+Yj#^@h2eY05@eOy{@GdrvfEAQg|(O#aYjFuo5kFxdVc47a=vlg=N0OZ`9$w#{g)W)xkG2NX0t+O+B^;T8a$DKWXuF^n& zD2ff2u$V^+hUJ8AzfJyR(Oaf&%W>}W&vnW&H8T9qnn*-q6Pu%lmX1DR8dX@VpfN@& z+?r~Ls>{$UDgCfGKaUV}8TMNADE_7QO={wtr%{f}*La5}373Rngu=Kle3?DsLT<5S z8Rm1_eB7sxFC*EmB+#vlYSTsZYO~q$gbks0DO6j>E93U!9#2`+Hp4mB(#ACQ@}9bS zxOlobUf{B4(n|p^SJ;H8q%eUmXTL6G9Gz`^991gYkqIPl0-L70#qN%7n|w27>l)R% zfvxcC?MQ{U;kxSXGn~;$7H`p(j;q(b>o@uQ>Cu`7vn!61_FJ#Ug@zYlZZzI1*tKFW zE$FQKai9Fh1ar0Dwp#4P}2f!fKx=LhS;N@c^vo*GmXMxncy8F zsbx+!N*g}}`8*9|O`u03E2(CVbRwCaEsT!6Mq22#6KOgCp&}J@^2k^p48VLI_HI^o zxE1u17*^w&I&0Mpyn*8&n$zT9&RcEC5dNplX|>$=U?bRokkx0tMY@8@rXXuJj_+hY z!^+!dpRB61dkLD;anjOgtN&>E_W(e~OUa;dVK+$>Ue{JW>eOhqa~?{U-TXl~rxSR(pSSOs7%yqx$uw#j5cq zYc>SVO|SuN+tzS~t(;SjS_Y_c?^&VRw-4t(1Jdq-+^>q?82<;{s>p+45*ygTTJaD=@oAm^Q-@&a{U@wK7*A-`HfAX@dSEh}{Z?kYBLWWrukC=UVv31ivitP?-l#ATAjdCZ45UW; zE`U)I2tD!0G+icx)_Un^x0LWShWi zWOkf&o|wR46u}kB&2)PFWcy_7Knzj-ED#!go{~A@?(w8fBgEo61_J_8&^< zbN*;0{^NigS~o)4{x;YXRET=bIQXm@Kdz%4v0Kp13@|*8|EJ8MN!`qYeDpl1rs+Va zRvT{`@p*Q*%kDc=i(N({$GvQCo?y-PV=Zey{Z;)lG*SqQjRl=0Bf(80?EJ#gk_ps5 z$cagX;%T}xl;8(p@*C$KqKA;H1iqNL9W);)2;XF$eWFw$=G<0IRN7%J_=KNR95AsF8a>W1I2Kl>QOcaWqoywC`A zG@EHk(e`_D)JEDuya@wCa4^TLkdaoLm_7%;y*NJiuV#}-rlOEkF9wleL*`Uflq2;h z*|bd03q9T`+@rf94__5g`-8J` z-`7X?w%Yt`hd6p{Y5R4fi4$5|1wX?XXVsPr{9S3ueFhep9mYu0eW8UgjF;u4PYFL? z_JdHwT_U!)Ka&Q1h^|!cruz} z^z||YAj&wi6{;I#dQ*Fs7ii>uV%tbiG)A9__R&4K&0(VbJhDxR&^iDqE}{S9RH|DG zw%tP-8BE$WFRm=;GjHbR9+gpC!JwuVAR_wEqpCa-d~1I6on9drY~s>31&mwHGU=53 zD<1kFVg@*fwfi(#8$oD#R>fri5BY&m>wK^(Fmg873qICFe;5-}S|I?>XrJL*jGQBK z-h7*fiC9XKhyB-goIXNig89!Nd|?|Xxsl3V6W)gs=Oj|Q3+HeGGdvm+R^psN?~0S@>L;nKo}&Y zbv_?Xaf>Sg;Pl?yz;P}vjH z>T|pf1Pm)>Y`gWFEWfJ8Td|H(RU4JGOU^0 zq0WL?)mm4>>yJQhr#HrG-=@S*uJTrPTJ9GuFX6!uMZrD&jz+{bSb#wA7{)4&@;_rG zgl$s?8dUq9B+9TLDycw7qsR>>ewmwVo$Ij+dZmW~;n#372N*8)uRa(K&VT;nhWU<~ z6U1PH_Ty3pan6*>wnyjNdlUbVTVca-F1U4kKH&wp^S0D`}wz+^$ zk2)_LSphG8OvvXi7r*~8YVxcL6=(3kuUjqIb_&&*ipWfm6d@}nz^Av7X&VV4?ewWz zqqy@kxS4b+i%QO+*Y`jAoLdn=&u5K{L$*(=T$z>a1EAv5zCv-b3Uq84jT-#z6w#;{ znRwLa!QIv>p2%xWqGt#wW3;96T@O|A+)S*}FRnS`B>i(hMU&>9aOTI>_8))#UcU#w zb6X*JN@A$uW2jg{0`lpoxE z=B&`xpa8&j)rSot76lzzupGrbxUC%Q{3&e;aheediMK~^4NJu@EL+`hq`Ur?&3rz= zMDz3&Sa@O>kln_8nWz}i8!0^T`0VSHC$$H`eOv&8(Ue;Z2g)z2#3sz=!dw2zlnD*+ zf^c#dX#-4#rDt`tX^U7&L+pY(WdP0$TKYk_DiFQ42WoSAU?TBSuq%#I0Y+B=Gjkf= z_xrZy8@g+=$4v%pXbN%(BvR%}J)HKX-~OkeQHax@(*5mO%)hiWiIcFlFK4!{YX*N9 ziWIq)|2brk3&3lP>_#I+9DFSkU?(P-BGXgBzRkTt`T$0{^u)dd*!F@x3!^#%5V#1T zT0XFbHSAyfJ6CkBMJVpi?awM!#gj}yRh42BGgfS!Q~_V&N6G6K^&4rWXU87DE5Ls< zW>kB)qH)}7zGBnC^jVQ|KD|By7Qw>AnggN@bbK$p_4|VkuPgZTd*J*AW9EMVGmFlP z>t7$Q{4`Q-6QW^3ul^v4aOd^%uOAm)rH-LwQ9ROYSe_eKdXp1_Dv2eqPUSoVqz^%B zxTkQh%3s(e>dnQJX#b*pXiIuTfy+Zg&yl#2#gyX+gN<8HECQ8V1^L1Xp2!dQ!wFoLyNj+l+pkZ!RsZbH*2_lU-w-)Q z>T%xtZ3>CGMtF6X*Tdzp=Iu$q2Lfr+6q4!xyej)_-zxRkw>X#mv|DYf_wVGrvv+@5 zq-h9yJeqKoaqRt@s}Pc)$@{iJ-si&F{DFu_`+HZTJTHIIi=GtfvHjTg0sL1u zUBe|`-!Lu2hVCTYF3$b{kB8-)2PFHAf)!2ds=W6)sMwdhsb}_!Ha;|quyKzbr1X}B zaCr~7Yd_!rQzMMTlMC@_eV6>On-kOQWaaeA!Yb;`O?kvtmZwe&RRs$ zl&))Ki7is>j6PX_MU0$*2HJE*g!ck+Z z*7lyH%qIQvdchNKIIqBgVPd2BY0OvtkWdM_TcWP`{>j zmQM5?n^q&Mt}Wg16q4;8QTafz-Qj$P1X7g1EErF9xYWM=ll;?RwnpJH{&6F>X?j(S zNVp~xKd*Y7Z=M|Ox}Wa5KGpQhO*#Zo!xPV5^gi)vP^2^+Ug&KssEcvjS+JW6yA6MD zR$%q=!{to@8HJq_&o$@YLHJMOW_vuH*Gb-C9RcJ<^5fyq^5TY6auMHbZB+2y>^ovMwYh^7UptQHWw)ag8%6%KMNn_}0|Y9IlBo2B2g4Y(-11*OcVSMbM~w}Zs?ac zC2O~T{Svkf5FUt_L2cDZ_aEvsXWL}jzN;cd_D0S(2;|vZxqH+)zNyGzu4K~&+0oDm z6O9dh?CJNiTcXd$rcT;~Rw9MWArJn}JL0a|Ak93dzq4P*jkS#UA7D)d7c1 zl`$PGM!!JcFQkS0D<_wz0_#k!#g35wSf%deRf$RA6-xAoaSE!^b8GGV*HpY6w}rwZ9?@K_)LMOU1Y|JPt)kMAu{{$#Jt=KQD8}b z_)pOYowmrlWSpm(S{vup)iL|?tIa+66oHn=K$%oDl`2@O9X}dUg&rJ|M7jv?TC8+8 zaMoS8|Jf9%OG)pvrUU~UecXHTQg1MF)Jz4+*P^0i^c}QI+xy0PWj?ld&5uy1klZ_# z7gBm$>!HuNaT-n zrZ%=ZSxB7Px;=CNRXSdtV63fr0UwZYylU!E^O^<)uWL^m!X#AQKWLr}S7RyB&=EF@ zqz>9%PL_1NC)i}NJ^~)^Uc`*F(9^=M%d^Y^niwy?-BPI`p)aXzg@q&c#l;`=&b7rB z<6pIuLWg)CdOCKMW4~YCVx)c>=sQ(?kns1{jC5C8j*{p``f$|7K#{7($Fhm4a~EXC zTb*44H^*|^v20$8vad&nuSt@8FY%@L@Eu5*n$J@Q1~dr?UmY-UwJS)1+N0Y5IBD+T0Xi}N)1#Tk|wclPWnH+VItih2&mT}K+ z-Kk#1hYtoTs|eng@8M_9g6pj7+Qe6pvk#Mqq7qp?PVyvCc_;CepjPh5WVUZ>=SzXd zG7oQ#XThl!-qDi{vhd6Yuk!6}7oCrZ{Q=rFN*beK_*vs3u>vhdu`t8%v%r}YyhE=E zWy5Q5^G-RRM3%3qKFJ9(950Ekm0qYqKV0ii^Z(~>tg~K@tj)CkQm>u!SaTlaXs0&X z4pf>IX4Sutvc;wEmfTJ-5@)pfOEt{<`%LD&TzS#U5MKP;xK9Vb*oDT=%zv*~GJPpi zdZB}vB<-E%ihF3bDs(+0XZKLxLWoI&IeyW7+>~t?T#h7KGB?hgS;P*iTwlw33OCxM z*~5TYm$igQs++Neea4jS^_$Pl<3AU4CYX$+8gg2hF-UIy zVG_h6HkNv2uEQq8F^0|VVPXdk2EE2N^Mt>(WiHD`{qr^TomKQk&&t?3u^e?E)+2?F zf5~M1+C};$!=69u!UtJ@jBaWG_tDzR?35cC`ahL&H*=LbiK=T%kTF&m28QBV{J`bF zN8=CpI^gv23)_hPiX8jrMkZ+ftl1jrCdX0EYNnHr(N`V*lkHuhgekSkFFpKSP!dFZ z#+P8SLY5uSoM-%uOj<#^3E&35S6^(NF;o4^#4mg$2; z_C-cm&;DP6O_WQ6xy`4WZ66Ds@kq`(@Y@k+;v)ZK18(*U%oOCO@h6uzLV7tXp~xYf zc$1>HeUmnT(e6JAFrr*Mj-?vjax!T6maO^`3C#_NLmI+|2m-b%X197_6P8 z6DD_j9Y)fVtz3!X>` zTgspp7<3a~silbb2$QDe&>6EZuWAMe;ph-c4PvFqcE&NV{@ zJutg)r*nuWQMTobIlpwXtvQzye^cYZf50pMpu)0p?vEV-J+}#KNN<=F5IQ-cqo9?z z{}&gvC|ejdch21VWSRx4FkPUHmAZ8Y8a0tZaxe@`jJzN)>vfx+7Y1XfLr!T3S6%nN zFZrdWh9p*za&D#K8IMqC}$ojjenz~xAoagO{ zmEkbmS#g_){9bw$E0Qx?b$*}lE(Y;Jx6MEL>v->3=Ubf#=heM(|DZVZM%(0?^{!&R zr3rr1nBZA1G`xgSRL=^kZ9H&V>d|JF+_|FC*q=wX6sG`y!Uyud-1C{{^Z}NN)s%&Y01GdS1Syg?YW`UVx~|S zGqhLmD_Z^ie%ucM6#09;DOF@8#Z3^g|Pw0j$am zY1#<$6(5FVp{^zhJ89h8OGC)`4mrfhuy;>Z;Z4vRzT`;WJQ33MLY@-4On_dK|1`$x z&b3Q@qYCUHS3W5Eu*0p=+J-Xzd=fhdW{oa}me6y>_~AQVDR`~7P`(KdM$7zNxpnzl zf=SA&!Akaj_U&Y^!21*UM~DO!w|)}oi=O%iBl|@S(*X4QZoCTPVdU52zxU#`m^RcDJIKRgv4!~#jDUZR{01^mtAliIoDq~@8#+RT}m)V|cy z2GKLQFWtp+z#3YVrf>$^(*nU-w##SvmzkEfd)OJ;jLe=ji9;9qPV~x{m>b0b<4$8l z+Wsl(hav<1W3>UT*dl%4pI-&{li>X8XR?k)Xydmt6J}YL?%OqR;f%uFX?kW)^T(;$ ziXlYPmbk;WK!yz520srRaz^h+X0zGNe(#2LQQg4j^@kU5p*TKK+N@>BiMHp<3N{Ug z0~5gAci=GAJ{!WK7oi31&@BcFQiASVFUPJ06@YxSetshtF{8+BFoPi^Y?#1_K#!5D zM1?sgCn46wLLZ}I{NvdkI&3P3;W1kC+wj81IBNUMCL=5uby5N;2`^vyLBIg06Kq&P zuq6LMO;Gv;k~X;i3K%sB=6UU)H0R-YFk;B&x=MWfVeWb!qweL34p9s`en)5f4SfLb zCoU+%JPh9t8Ih~nfyGnrfvfYL5T*&3#TFszFNlCLhKj4R4|Du)D;@Cqt`YkY;smUN0*mL`qT+K)X{x}^>VtF91byg-Agxo? z#+&iZ)|uka{gW892_rE3X|G~f&kS(%y**Z&IM$!iXjmecHEIOM-`6E?14W0L{L7Yc z)Ia)M4}u?*Xgd*^I*$D+c$irOG0Jr!3QA+YQxzo~T!Ri=!Xl(9*+2!{z4vly?i?OM@W6DO&_?NZkIZl0BC=6%Y8P` z04Rig`$5q`=WH)58K)CmN-i{l-7rlW%`?j6TB@EUn1&%1zUfyP(h!AA5jDXL z*f0W<2U!h|J?e+NBqIL5f=Td$w1{27UtWW2%;#+Hy`eWqvyAZMFwg-jx?Y;|Kp3#c z6Q5Q!cpF1KuJgDMgSB@T)?NUhc=^z#HnbhsDW&sfX?k8cEu=~Z zMT0b?R&i)NDChw=1{PD%`wRLUmovwW&V8HO>H&b31Ce|U1ry016@;zvfQywU~ zMcF}k@d(iaPI_OR)5oCR^w8zi2%H{~>gETGmWl;yz{m|C2MhlZktIqPi_K`Xz>S@O z-DX~)9&8uVDfFv7;tyD*0kKkL0PCh^+%z(6Y`ef+a85=jwholfXUfAe55P7VtXGn| zjDmsRzUX}45h1ttSsvHSmsL;nL?m^75-0o-*P516P`lO#nt`scQfXYUsaqbJdaq0o zLMjZU-y#g3#8v?~Ii7OBQ;85+2sOu-!x`L6S19-H0Our?nc+dEi>S(YeGVy282t`_ z-r)uC%8D39&LLF8L%^^L_v2$xFz1j+il`LB$8+?#b5S{alm^AKiQG9pUxY)zc!>Cu zYNo|VosC?BYk4BLAA2(VH2)O}*z^Md;DXtT@PkLF!>; zCvVwJG7=Q`+6GMn|Mp-wv4sR;@~&mECWPSK$){iK0Ew{Ddks}tO~>&+0R3X%!J@KJ zgwF0>DWunoY}yt!U;HP@T_-hT<+kACi%a@EO0J~NE-L%dLXx`?FP({94qMP#u3Iya zHR0@L1VvNGYWoLZ<2k(NV`4J%EP2Vt;~ZJ_&iytSdYY+^w`1{A~=OCt{mF~sv)Hfhv(ln*33U>~Q zoLbLgS~pyEY)(th@%>;SybaN~rMPPI*+_-_cnnsAYJ9T6?@hUNS`Fq#Fl%@3=nJGWJJh^>N~%V7-n~UGvHe0v~tljyf>DQA>~MjHH-dbQhl?rQoxU zCR8SIh<$xnr-?WtVt!~WDS(AUL_9=_xY}3f{rB@Yt9g25)P$<%b~Q>0>{3mA8D<_F zv9w0W5ak!{J*qz1NZif`9#&lU6$1CqbhSc8v!SyU!*VsV(4na@UR;n-Kclgw?kf;= zCIKujk*=pv?k)Pq^9gDghRq|eF<7VxtYQ(v2;Jhie$j3Gf=WabM(Kx=GOAEfoY)u$CBztk2KOV) z4*PM_Ua-AwKxC$mIVF<5n8!EV(s<&KMS-s5UIv{>+s`EmN*k^3YJ^F~&yX>&kSP?Z z#4r3TWTc)SS&6`de)^J)du^UjuHq~7 zPQ5j6`4^h?PoE;KMbM*S6`)NQU*$${xC{tS{jths>33i8Y7z-WK*$HBM2hMI4N z9;1i6+IZC=fUk?Ab}4;Tn$FmVXVu+!Xl$%n+FhN^dWGMv14aG*$AqbO&z-gg+13S{ zvF18S^)+-ViA{NoCByMBJ$1o4{=+`{@>(6@xH}Xd^1pkVjO6yXU)1)@*;42o3riL~O=;?I*na z=h!UA6Z8)MCNs365f7ky2;?q@_N()C=)B_%u|) zoBfkNtT&{E4S~fHX8PgVW3`VK&m}H^B)WUXDV?Y3O_G<;W2-kx{UwZyO2mCBA$<_f2OL!BTF>xl zZqv5%ak7YffPf~{fk&GJ1aW2zYj$}No*&xuF*8n^imSndDvWEe?uu=UO?@F`t5{52 zGm*p5J*;Bf%40x?K~XrjK4Msto(t0uQ#r6;_+|LoP3Ko-nLiqq9f5g^0N+F=|jRFw4n^OsZT`+YWhTMn>fhHQ?IY+=*7Ss|*&&T}2RCpAu;diRSE|@ot<95@cYi&dOOjAN zfb8)NGt+{BN6ia;~Am7j`TPe)hz^~SUC=H1z{)atC&A-|t zOK7Fm+Dx{w@|BE|js|)ZDRslA8-i*c=?*YCoNBSW4Ow#3x_PatO(7{)eXtSW{Pn`wy-*_7x|C>J2V zti8(i_xCs6gXoM3=R3W*y1g%Rhu5%~f~T?z7vUkWcFFa`J(fpnx55~`+#8tJ7B$%M zt$IJ|Z>0?7oK&DcB>G^q?pFPd`i!~rg8t`^`?=&67R<8L+th7V%B%_zzKr~r<)@X4 zTQ-EbcE8t@-exDG^wZVhiD7bZt%K6ohfVV}`uCr0M*A4YX0#c5NB!CPqVR;Exe3r{ z-(B8uSyX~QS6BR){z>NNFB14{4SFs`tJtzN#pPxlkaK; z>|}E$%X>NGY3i*-^|=^#(*NNr+Ra|2Y`ssSkYP1|QyA%i5gqP|zXi;U2tpm3pB7=l z5y4fi&Hbn{NHv_hH+ri5K*S~4L?L<{{6jWV&v$P!VoAR^UvfLKB8j?Vp39;hk9<4t zB{}6aQfj!TDb7I8y4yg}*P?Gu%*?WI;-$7Vdsh-H-z9DJ&m&VqnV7>~mje-Do{`i| z2q}Fh!MP~t?$M#LNlTKIUHYWXTofuP7;Q??a<$WtwF4POf@c$NibySKa~M3Ls>fg_ z6mxkU#`k86vQ$|`2*BHUsWRvba}yzE{OE*_sXk;fq;$MnV>wr2x{XBfbP2qcc@^MT zjuwMXzw<&N^s_|=`O z&+@lkE%ZmEOdj}z2l(Gcwl9dcucG#z!VE_l%zl7bL_e`dw-c2|jc1 zxkD%8FC_6+=&DZ-)8TV&U;lmj=m9*zTq8c3k-o)YY5uK+yVfyrGI^6MnnmK7I7?D_ zoJ)e#{1F~7lo$9O7h(RiYnTjFO5{mBVaP@5)S{PtcLM?{Pdv1iAbGaq8=n~s#ae=H@)qD*dWy!yuQ z&L=nQYL;nV)4T#nta6C zhs=@#yWfCOy+Ydu3efA@8Y0~hiR%;!zx|?w>7CU)klm&qQiOhyx@1E-fcSN0eQwgr z3tCN(;LlQKN@sg&6+(3Mfr@UfAIY>C72k_gIx=k|ij8OosNe9jm%2Hu{u;E$yfu3z zV!FEYAx)(!!uUC^z0=HpdS25@$rN`?3edHR&b?}Q6s_=|2VyF71u9#IJ5Ri9*fUa> zlelKn%U{&xWz@;AqR=us>4B0FR$mqkZ|dA=uH;rmn{#}9x{q0^7@nxA3|L--z%s(jHZruQGr~cm^sH?Izh%i z&9mf|n=~mTzEjR4M3w{yhwIS)SIsSx~Dnyf}7cP@JDj7$jrtJH94n$MizFXbIWJxH+;a(4B`^FP%L<3 zL%VG)`jaQCU-9pV?eE9E#O=s)8?-zo#E&B_A2Ihx@F>B=EY(OGJtJf;-hg%{2~?KF z!u*lMPlLB!AuWbnW|!7VA`2b!lGC1SpM6VNOHV*|ZTcD=JFPn*)gPCb2N?cq(~zmb zs_=R#iCV+8E@_$J?0TuzBY*DDXw-p>`lo^y#?P@AmWO?3CJ{Xd**+LN+pC z5Li75ecc!%MB?&eAzC)?t4fS}Hl*44&C=fKNK!_|&$yO%TX${~Ld)T~xJDJN!9Sg^ zp0$cj>ZhTQ;YMPa=^U6%b;(Tu#e64c-iSBdko*6E1fpY;2y;2kCzs!hdF~EGK2s4^ z+3I+jL#iwv-(^mWK2#b?NRAOc;s5mkd|+>?X5*-uZKWrR^99CgDGek~2IdwMah zwq_&WHWedlDySpJDG}dldpa~=U!#}b=SdFUN#AVZEt$0uU9RUPLirI>J39~CKHl=< z8QF`$HAU=qwcrPAYA|!ai@sW{^*j2ccN`^~p2ehQC?K46VgLO%jIWrz{bxWHy`!%Q_K%`#=#&3Zoi#*@xP3*R zMW{*y<67@AQxpEQd3s4x$&!!R8fo;1JPyVBrMm@)wLjdcue}#{wcdyO3Xx#&z(b}z z(tX`tCREgl+wLp(vl_EKj$^9PSIpzkFE4oTN!L1@e6QnM(u?$XJS2$;mUryc?hYZJq_bf~cLWHs-Py8dNMwq#1+!7x z=%%>JrpNw*V-B~JQ@*Jj2p32Qh9WC|)T?S3>YLlzyn2hj9jr0OOAr0 z)Wb%OX@+`#T|MR|^b)cvL9wz`s`p4$vEmfG=f`Use~mubcGKL^N)nwCsy8Q@7vAZ= z{q0#Gzawb|SkZ;_F9L z48gkY81>#*&yQ(~8XXo{z;R-hz9C(=4)M<-6gw*NW(&c4WeajnsI^uf>`7O0`^cwyKiKpYi=rjdQWX~ z?7GL>9EWxyQ<>JW8OJqF=M;r~DrFv9JeJ(zaZ0-$HPp);eY_THhk!K0zCR+!$zNdGQt2g1EIw6jc_ zMO$<3{ZT!Ktns6K!}XMF&Ch`|f9QVKj!4oXwT10O7F=W(#YOu%bt4HC2wvoyb_+_c z5AS>0WZtB|QeUe$n~z-ZtaL$iDyR^rzI*0v`cG_L3!h3CJ1SAjOYE5l<$5`lRNm^v z6mi-I^zw9db-LvtakT8~0be}a)^S;18^5+Pvp@QIDDSS6+CahrJwzy8`5Nb@zQmT~ zk)FBzLNadc;9r8A-T+O>;%>3#Ne}$NV#+E7?F^i3umOz(XBkdSdljybt3QT&Vg~5k z-4r7VG#@aRLY4$6n$CPZ#>m2<>LUziC@3WK?CmwcFp3Y`KjECe6|A(N3jQDn@*)HI zw^b~~wgMy0Qf#pgmyxx3bhN8IY`5d(?Q^gum(;FUlX+B@SX{PT^e@*X5emtlKsFy6 zlO`h3Urh~_XRISAboGf1P=dTtylHNh^oOfKR0lNOVpRtlvCij%+4Oa`#)3W`(Lj4aln%yl!+dX8M#@3w|(|PHw2=8<1m|4sQLvTNVIP!aBe}F zL27}kxr3#6Dd@ZiEVTr+q*anuzyNR#GH1EZPHdGOepeF1QOera<)mBj2b{~gQ0pkf z(uGa-`S}ot8eqzz*=g47j z{Fc%zBqk4-cjjSLHMx-B|08Zr53|Ah3=e$`^P& z56a0VKPJ{w(n5mIE(|THnau-6%^9@tXXgVT;wu+m;wkSYaSp7Rq^ooq$3QlK2igk%-UEMl4CBBsX)Me+lXWYaWni!|2xi@-NvMr3B-9HxGIVbawyMqo{+b=!D09s{vNtuG%Fu;v6n^ zg)Z;gfWp`HF>9xfNEmJ^|E54v@3nJrXhZEP>-?LJF4ux@Vk76a=(Oacv?#_cg~Xt6 z&tqWUq}#%TW^a<|LLN7*wcjQwH&{0IK`F=}kGJ{3h`YUIak7MsIb7%{mRH@NP~p!u zjF>nF95@!L^x!xJzejcSHR6nXA+)a#fO^dk^P_07X?NAEjcbf9bT(R|50eQeleL*P zs)Ij@CWCUemSfrGzK`R%qI0ft{N_@gByvU=~AjY9oij|l==01JCfh)fONYo8E z<(33;yl#-9BMIbJ8cX_JkOL453FG2qePd7v#!SQioaQ(~#I9yVJ&rhI53(uJM({*r zsS0AP|H0k-rbzB_A3lU!gwm1$G*~O{JPZa25x|bnRJ*IN@)i?9ceF^~ER4@*hO(~8 zVJ=reY>7EgPkdS9=>R0MZ)HKdgX#D`5ThC!hSXsTs(q*CuU&%1qXs-f7~deC(5apHk=Ps4WXirwlqz|Sv@OaB^5rkpUivEN6X4FZv_6_5?t;A zlLzRqS-xK2cir$=w;3<^+-OR+kpEXNWP%&Hf@0d0Bgm?jsuSXL0<3aGnbf_kA6LRB zPCEF(Y9UQEFg?wJpbqTqNiR8pv&iPI!^87oaD*$_;uC1-D$tD}xi>CV>c&pbtqQ!*4Bf?a-UMYV|E!X&VwkC8@%0d zTIQmi&G?{~R#w=Ad|G2rM%E1D!VD>aT)@v zwkZkRgJdW?i^y>pYG@iNRGCi33I%9;E5QlWBA|zVuynq-+|ks?@+ag7(LR_n$KkJV zYP{bL+j|RTy#96LcL=p;j2?uh5QGHz8Ika?)1BBi6KcyW9KrLL@K$2{^nak38{poi zVr#a{8JQd`LzZxumb^z7L4nqdAB>e#^z}$D3kqt%a@M^w(AsF;=*lLItguSN!t?{j z3vWRGSmP9J(lZr)|JL{Y4HcVk)Aa#`D0B9(7t6h&q70|Q$B8$J%3q`9i9oWnJor5& z_9IoFN9Q^G&@8(|0U;ZgeYAuGMn>aT{8X?Wwi_0ys7uV+CtYFD5YxwTbo2gr)V?IB z%ki#7uEN;&;)T17T;!F+BsBOBY7v+a_lQ+kKmt^-84y>MCmg zw41xAWw?L(x$~3UvjjG5sN?|}-%CCzcDi&d3CdCK5qn<8hYM0urisz&vPLVQyMTVu8k~`uVp^q% zfSbT?DAOi7>F!U@UrT~IW?DHu>=UQvW>YCwnd{`jeH7c?;9qydLGNdx_~L81LQjL< z=YXs8o=28G8#OYvWyi``9Ugrz>g!KVPyOj--jg$wOVcDsE#lJ;+sLfjh+5M<_+(?D z`&003C-mqN^GQVEzAdFTQc;brz8PP)1XRc{_1S`MQ%{qj9$AIR(8I50kZCF(DCciB z4%TpeR2;?0I{&yyJ;Je^svOFZ9vrKCaCY+v6{G4l?k1Y`DW|wNEqAP{*gz=onp%+h zNiq8>4n;aclg;SvwWOi*OENhYm|+c`P*BSxRq-Cv>I8=NrK|QDgC$AYxZ4u zalyK@jty-@b&Sr#Otbe4VmEnL?mIUG?3cht2;XI+F4(LJa>?@gMNTI!bWiX6VhLJ! zO|q_EwC?q4DImAYibUhg^g)HtMN8J3`S}AQK#auvEJ`PZk9dzX`?jS#Z$Syl_ z%Om5{&4=lqaNq1Kmp}K{N8PpqS<1cJ7;ZFDr+A*D5Iad5>HFxZ|J^;QWRAs@pG?P7 zo~5EG%PQR*zdZYB9^3htZ>PIxm!aB}Y(B5uI@OkBBa^%`@(#2a=#2kCOrZ4`%Gr!7 zZ_pVzuMfd9N|blYE}Lx=N02uTgO~Ra3~E zMHo;l6{Cs8c{3-H+zcutiIn7#mSIiSX2o38kg-Bn$4bA*vyHPV zCFaj#eX7Vr*0UEevlHJl9ume6HVms!d?OdcW<_BDUL5&Lp-?k-J*9Sx@hNX&o(CTF z&F9rGac9(`;Z2+EmRuT zn8L|4(@tPTU0ZqywZD4Bj=pm`u+J@7Uw11}jAmEkx6T$7V?!5PK_Pg?uYeUWm^79Xrm4RqX{USA7}T+I11OV@@+@v zzzW^=T{7+t{e&W+dlUO*Pt z$CVFU4021ym-TryY#$Vc7hY^$EdmD<;QYR19eQKhH6@Qds{~E^P%g2s`J!6_Ua|f& zl-nJrFy7Z(vk%LAw)#vV^P_G22RSWrOvi2 ziL6*K*5YCSBQt+N{%TjiFP!d}XySD5KgeMfra*KWd5qQNjehZ^?;M)$sekO^Ov(=r zH22T-vYAdl&}h+Ht+VyEO48vLXv7GsiQ*N0It)WUnI)-~x$Q&6$+3wZ49e8M`)JjU zzS2;9TDGyK((+enB>=ueV@HvJpDEot((>ot|e}3y7ETRPj`KZ2R8Hq z2^yarV+_ftWaPo;C&g|no(#pE^_lqI+CO4@`t5U^W@~}4Uv-03pJ_jtg$aL!0of}` z^L><&K5XOpUcNrEK=HOpZqn2O5dH@^j;FSk=vCsgF@ih!?8Pp4AaRp)C-J)yH|_hIhP58}a2gJfKot&?9!KkXJ%Www9{hzHRHf8T;_hs2TB61PAL^{l z3EC~fQCjhOD^v|NzF8lON%E8AQ|#bIl5}B$*<|yXa9Ghr;jUx}kFp6J>gjk^@|=tb zaff7j3pJL{y{)|0y;sr}wx17j0e`Sfcjfy6o*NDRVvCiGQi&AcVqU13XK0NN=WEn| z`AS8~B!)iEr#Aat0omsA@Rw4>-!Gd#@_N4K^`eFdY2*Z&taWy7;MLNH%HuQ!KfCO0 z&oNmgGws(QEs09zI0@4#BNtJ>Z=<#Jw#kver-3Wyh>3eD(tl;jcXYkuv}DVEz(&hya)+rBmlzQJp{zDKuzdRBkBtK^1>n-(~u z^@n??-mFw*jznvXc?)y)!d?YXD0wN+P(O5X-_2U`))?kT8{`Ft1a4C_Lq_v6QcYiI zIOd+YTRU8=8$Va+;+S_=qWs8#H@D0A{wiQaIR5n{g1RJ2H+Vdm3zOARnB&H=%lL){WZ^U8NmX|nJfQ23LX_kkI1Sr*0F_J2#lQZPOB*yN(8w!P zJRCIqU2=bse~BubCS<;N65^0UD3BYpPM+kHJv-2Ji@!efmFh!5ypYQ{k4sK;ul71c z7hXZ}OGfx;ZN20p_Gmj)(w!>HV(1|+PGS{yPlU9%I{TDZn})MBo{Rmd=gqnGrfWX- z!N(g;e{=F|gSeNplS(};X_`Oy0>NZL6xx+{>|TlB^Lrh_D<*6@tcW*8Ft*qiO>go$ zo4fA%Ai{#RCU1)~$0b__df;U`5u7T|(yE5Nq`xC{D1qyi)3;*SrHga-b=WK6t1prI zIbi1f&OfA^>G}W`oXHe2vj+%cO7h*Q65_WlbMjbixOwM~x7Nm(4W{4E&T9BQbenRB z)bju1<-(?)gDUE;$v$>tL%2&_z5XpityU7(vELgaS_IG_><6mbyhZub*?3b zC~*}^3IeV$tBo@8Nu$us3XOf$gzdN56joEhzSPk`UHbV%l~`%EUEDX}_jTLUQt3Ai zuSL8&SAvTaWT{gSrSs#@lXm(fs>0O<&Pf!jEehPDes>aakJCN{{alJ}4|x*p$04^D zC2Z4WmlInv9k=*!N%NuuZ7LPogxJc`OIDvr`PdWB^esjFV7Xkbd1H(ZwU_sB((e0k zE045zWb-Ww0<1tkpdjK4^S1IWLpF`gua6VHkNNcX(n5*5myW-Ce%6)UX<=mK!4gv* z)n;aMK8n@vPQ9AJe`{;wUF~JsbU0IoaovOOufOFS$ck?)6 zm-|F%;tQYTsxy@qKSa-@Q#%C5$)03C`N`}BLHWFjOiiK)J&EubRM}Q=WaNtNf8}#4 z0aRoLo?3Q3;r6J4PwzWbbdPC^=eLPfMvz$d#Q;p9_I`xCEj;3&WHjvClp4<-mr;MO za}2_Mylv^w5+oyUnHV*CXVcDz=38p9WRKD|*P@X}9nnWY4HRe&*M!`z7XMLGQg_fS z*yXzJKN5dmCqYyn@|rKpd?m#Ed7|Roy||nDTROSg9EYzyJ9_@1a29{?j&YzI|JzTJ zQ;Je&Boe&KYYOOtjdH_EMK~Z)%-Bg3;iSQKagjIlyRpki&Ym_ zRzp9g^RT2|Z*{CHLveXj;` zFS`9p&YS~w$J-;r`(GRYV1daK^@RUG9p?_QhpFsUL3B-IndP=Dw1;*gFupI9~VtW@#9 z+`L|Q;9}&=*~j;dbBe&edn_*1qkSu9I~_-k`+l4nU0lYpof7vd%}yH@^#uvgQ{x|DS(Tg;onNC#7EL(+)`t$x3AxU)#2aUCG0nfiAdMANmD>leiK$(<6%8zM;DigVR~?gW*yQ#^Yb*>4G1xgnY7l;U1le1mA}z|*HO*E z4FyOLSLB9k-4GzQ$JER~3*bM{?F15GCXM*x3M74ex*w3Lclick>pkGTZGK*aKRqV- zu~F3a=;PH?z&}C(ZK)%;3kxKRh``~>0t(Zw(YzHhGD;Dg50ps(L%BEw06&LZ39N!c zxzR?V?ke(G`Y)BaDRW(=P82*6r!J4O$wI5%nO|mTU10!w1ZC5gkh<5OW2WiP3?SO` zG}&AVI3ERm@Yz({*I(3(tNdW8Fg_GFdJV4-`y0e+tpQp(SqmM;jc1d+L%BQfVOlxR z#~hhSPoeP|)0q0orZub&5eRCp=TTEj(18^+hp?b-a|bTc4i6xhvrbam!zD-yaZ_l# zdMrx+MA#VD8#8glH$0h2En{J}%nC&UoG4!t5?k6zWSB)Rs&H&Hm9E(2VM*YQvM>En z9yB|eLD@jhEhvuT5Y+tfPAwZ|-~cE@u*T#r^C2!P&gr!%mY#1?W#&S0bFrhT^eLzl zS0EdT;(UK{k`29@kW+J?_C;RF8bGkXUDPLgvewSUz=t?{oY5+rck&;I(h(M%dK`jj z2yF%kPG%drWGSQoLtnY=Al5+h!4t4*M#ErDIuU?eDTzXZu*X#NICdz-r; zVCnFJ57^#r_%u?iYg#TSs~ebSUVc?Wrtm>M31^Q$C?`sHk}bv4JO~&kX>V8M_<}p?SY+UN5v_3t>N`Y21rU`%PVOc=7uM+%*Qp)C7NJUiib_n$#TlDS9fPRl==x; zu-7n*yZ{1vVL(#K{Di8?%@_9&#BG%B3U$bt4*`bHGAX7YONvQlj@CxtY*n)>--q=) ziZ0N5B6GQx%>(|YQ{E#p56AE27r|dNq_mRZEvk4S2OU~gIMAxBzCB zAiE=&&7-T%2D%sPIt|oXT=^p~1W$J#CE_HOj)j*xteH3+2q;rTAt7ezcad+8u9KRa zYSk@|5X(14nL%$Fc z3(#jMEHGFy5RwDv6mVGb`aKiPm50L~9i0zgUxo|R!eB(ypMXX{HUF@aP3}Exxj$&d z5ggST)H6b-)xV)iqOBt`>YSjbff+bj#L{gld1bVgVU(%3L7rW!;Nwf2qorsWWqBD~!x^WT)D-PvRYiSQ7oPP@8Qq#| zgND^w_y%Y$E0cAARi@#XObPskI@a}RC8$sYla&vW{FQd*3EmkyGl2a!e3`_b$IuGp z+}CFR24Jh;B~kc-l~tK0jzZv>aI;phEu)EC%Ol!mVBbjyJ3@}F z1U)#iNIyQ7$tH!`5@<8Q$Use?!e*6_M?fL>^-GgwSotg~#8kgqWkFI>CK*=WMC(#UStb{ns5pcRkVjB<( zn!Lb${L&FR4eq1pB=Uv+2U^c2PnFFGMOYAW{pf)_Dg|@Mg2oe2tzG~=U$Ui@jnfCu z+SI(Yb`9)){e)7u-NuP80khJub$PJ1Gs~>j666}A+!4X$YO^lGPQwL_RuXAWDs$CV zB0S_`qldarqt}3gqeZ&j-IY%JOCOE5mK^}8KpQX}%m0BKfJLP}vcQ*40@zfS=|U~d zlSwP*qA^EnTF^7iUUZjGT!2zqHd#iAwBWou2nO402Z?NDGh~C@eGUPho@!^p&!r#f zj9F{?X4s$}m$W{#xmS)Tvlrts5$zm2aPUyNoSc0kR6Pz21)l~2STBbGVU6f@GEv{6 zWA^JL0r2f@aWn**cKzlI>xU$1|24fYu`Vz}&f*viP!#k4SrsLt31WyTDUQG!%@~g_ z%m-;{Pb>2>cphEWZwo}eq9c!vW;}rhGz1+L4G7=Xvc%eO9W}9b=u4K|K%jV0nI&4S z96=9Es3;xu;3Vn$a|B%DvnSASDWXgE61Zd2W)6`jR*{g4plovkDKrF1#?dDr17#jNrP=JK_Vx&nJ11@BuNbPe1$K*0m&<)t(YQ z9euSq0I4mX{+n(C!qsQPZX{y%`-k_}hMCM^Z5^WdV^F#?;MTwgIu+b5E$M4PTh~Ww znXT}~l?^MVa(=w`ulG~^a^L6Zl7}4gy*MqI&PN^OL@r;-Jo_<23lrsAi5OvJkY~UA z|5rlpmMOXQJ`b>DEVnd0#BE z8`Ao7>Fsx(wv4sY*JUFc$L)SIGG?H@ODXYfpRzrG)Q(HaV~i7rR+4F?+=HbixA z<#vv$3#>4>6P7Ko(ZtY=tnSK2!>Xr4%ayWWUtVgc|44az@kj%rl!Wm4ECI;A2$@wQ z)y%O4*K)7sXyhf&IX>=w)UT-xd0R7AEXW?b;{O0kafn7_z z(d~k2;YnMJ8G*04k?zGSPqFbAX8AM43F9tNZZ02K3?>9(#w{sWI~2g|y!q3U5*~&8 ze%(E&&x(OdV+N<2Kl}E=USU0_rk5D8;>;%;#OhbFUN|B{anGa7 zsqKKNKZ_KlcP^`~TP;o2y72Qer%mlvx!Rdw6HTYY#n)KHo4vXCXGta!)Bc0c!hG!G z$;6wugdfL=J_n+Ld0%FWy7QklU*P{<%U@Oc3l+A&TBjIGp8tfI-sN$0nYV`twz_$} zC16R?kG>klRNFu5P%4j2>EBY=%f0Zqm%9ji#~a-K=?j}n_8whiXllP&U%-aG*DGY{ zZ=C}VPCtL)tL#JC$XVpSw=Q~&xzAS(axGL}ys^Ixr9j19j*F0!PZL3mpJHvN9w_LY z%e3>J)oQ*!<-i-9ZtPjVrrRi&SUdO28*b~Jx^GaiZ$*%q)>!F~=u>}<=D$yT_x#yM z2VCH2CjZzy{SPcZnWu+n)n72t5aiS@q*bMs{8*+NeN~*{=F`}AzklOn^-1YOCI1bP`G z>Hvul02VD%P&U5WV(qZSWV@Yqtkl6SI~x?nAv~-a$EN<1m$B|fjC5%5@QQh<{^*Z_ z9bR9VYF}|h!>i0d+EdQOyDd-OKE&|4JbSLU$a&8@9`#-WB-AkqMT%~8e&;jn7}F$U zgnxY$SQzeauzPQ;wG3hI_@E!-!gH&QK|8EhSKk0ls>KC#7Lt$N$2@SQP0@^AukiU9 z`JUD0fZSv%D~VHOYxe6ovhqp%z~r~QJLI5xZY}c^IX~bdqfD<__H({9;-3z4{75wW z2QHhsbI2T7Ud{9PlP0Sum+W$Ix|^sBB@Csop4nC=CSOpOmiHn(uCZPyro?+@we5&w zrZx}*?k9~1^XE$?a@k!*e@yE?iw?D0adeZ zCN;|p${)eflvj>ZzPoB9O`0cUxSADIPrtMmA1VWXvcUxfH> zE6|RnsoCnpzeOHz+G*$XjVke5j4SjbA#?e6WMiCVmmljRt@e<)yl}Yw?gjF&pQ!Cj zZb}{hD`yVebmj(T^96RP@Sta8H59Y9UQx6OW?lwMOGJoQFKwYG5`O5Ll;uH)eg8*k zOp(j`-KEm5>eZL==U}m}|3F&lzQIjlvI*YKwhmE;jz*8is?rX|rysTbwOZW*5GYNG ziMyPkCGs@c1&Q{?#Q#91KBCU|+Wuy=F%J6iE5LqZjK30vD#uzDP^zCozMm-RPw@>gP2Kx2}^Q`G$4#v4G3L568s?jQDDuI3Ydu#^~2^ zrEoA3dDNc|s+A`EvzSTFyM6yLl*v*L*eI{k9+o^;>?r?!D=)_6cU6pW9={<@nnCf{ zT?37b#otTRFaF0`e1|;WK5P&xsI%|^9Gw_8)2GRPnx~dL`;NnW>Q;Q;oS-_y2XQ!G z#>+7=Z}9A!3zhxKKQ+9(4ZmtQDoz%s(nEcWXQI*8$_;X0ZdP;Rrb2C_@yVHZoaVqk zfhi9@RT}daT=&Y5Zf9h0`j@Jgy%Q)oybP}=Ugq%Iif+rB7ZW3Y8ziVT65f4sfUOt~ zdZRMQ0pL!ehUfN&c;|#AjTl7A0@;4fZehXJO!JNb?R`nEsDZ+`goZdCG~OLPm`UED zf(9;t?%s4e>;5M-gz{zyjQ9MIIK^uO9W%^)GrGk;^-HD;5}i0eKgC`yE;}G+9zJTS zEyNoZ`yz2W{kR9NUjc|r#hZF{kaYG+Vl@HtR2*$@W%?1F+3G%qIT@ZIT2SuSsmz?- zOINeLxIa}p*Y6%_I=8+0{6`5yN z_b)oHbXS>UDM6ar3(wwuS5;6|!bG>J&dhtfT}~cD7c8AvOVx}ANA}-}*V{R(3niB@#}4UF=^ZA0W?!-W}ZHQj8+}R+N2l}r6=nMNMR-c z(px2>Pe&E+`~iz_NUxDW)pEvoJe#~RS-~`sVoy#byW7M}s(RQm?{WQ5F+6@q78m=M ze^~srWv(9s*pgyed8-}b`MXqOu=DRn6ymlxxC?4irh9I)p}ZXr3Sr@RrKOqT84eNb zC4(=->h~3k-(r6w=yMAqrFR+mudizjjg8=uRoC%X9_@n2B)RTE?W%}d=701y3306m_WHH8 zhfIf0ZW@bFE@*V{zDCZMS%NziBbZvPcxu2yT1mnf2?nj{UQIAqe!E{XxF;7?{VM%z zs=LHhekYXySV)9!4SnEQ8X9Q0)oM1A7nO~onNfksUyjemV*Uz2pJ6Jwy+`B&y`P?x z8tiLm^HPT>fCw_K{eOLY*puUTzt z*}8J3%&x_HF}`Im|E#FS4xh}Yf6unp=58I%>kY9Su@T#m-~NTbziF^P?FP0Ev|Wl1 zXNSq32i6zl55AkPjqLg|-Xj_$@V&`6I^BzyZufD73t{7Gw`j7px4W(AH6+1K0$WEL+zKSm*M?-v}EypYroCL zV?uo#xNoTIMQgD|$Y-MaA=Lt`%mjxhtJ_B|A68I`j}rp-IVk%4aMic&y|w;aTzhLd zZt5Gz_Q0dsV<0~3qvG^Go{@$dM%Oai31w^we%; zsY~G~B@tO7YlqmGfv&|?Tti{1g&R_Kn^an$bKd`ZI`j3(+JlpUy3$sw6yDoj4j(D= zsZ%+kf7uWk zX;0hM%Iy5IJIgJeYF*&Q3+(qtRmr>rxI)N=X#8Xz=!|zK_+1wg>yKr1ICWTicBgi9 z&l3qdZCh&1S>$tV9PB*(kN;&-Ir7@i4p1ce*eY~$O|li}vkP_R>zu?WM$FoX4LyDO zFC3@sUsim^EN9*?)c;n3CF!FNFK=ZfGC{vIV56qLc>hFr!eVyqW6C5hOKxhqZBc6_ zdLemai5Ueokeu|=+>&m7ebd5U|Mc~j)2MZ0+}76Y=o&AZF)=u*D%7!wFLZ74S9h0& ziRRSuL9(;#*U>_y3w8gyib|&##bn2@qgRimk8$r0B+E&3UutZA)D4|0WPU7o>rQ8{ zsC${J$+PcSxct@Wpg?lWjX6>QW>slf#+n@?7#?(BJ6!ffSXWl!tlzr ze@|Pnl|po8@v8qmG)(@F7tu{-2|OM@w)_3w_`E`46DOx4x4-ldHxRLk*s*!eA)R0< zY^!W!=%ySe*0GZcM-!?Y1Pu~@#m|KI3Jt{aazxY!@z0RF zD0hIstc`Nr>9yq4o5*q87SQ}8!Z)MD5C}W9!E=Croc^8HDUzHD+Pqia_#>V*MLRo| zLA-p~&J!w5U?s|rNxo`yTu>x7nhCz!9c&x)d>~t)XGJ6 z0sQ|U!S|vXW^^wcDa9XL=3Tk@EsaoHL%}Wc@KXf|E!cdG>i!ch+TG&<2>8iaoSQ_P z*jR0$B-V<00duugh=A=efj~UdY}63TllgPvcaUzvUBP-IxF@bL97x8~Elj<#L?)&a zxh?=}IiEW`t5%pY9nxOpgDoPZVmq$xc{i3BHdf{o>|I{;O6cHvv5!rz&^4% z7$-HS(??wbemM4~$M+CPsmDtEhTmiX*Uu(m1(B8+zS7ePZAip1VAA%Oly zpK(Aa6=^&#p8HePgswAC1Y-CZD4zIszQPe6`77&ILZL34^G zxLgJT=l*#)&@)1G5$?^4!C=V}b#y=6SW#UD*i~yM=~7oxVz5TuiMYri=yZ1D-$lgU z*ctu*rn%D2{C(C%tub?cJ2xR$lBQcelT>Ahk$?kboH*@yW*&)E$?>^IC;@8Rlp}bN{}Y*4Oxfh0zJ-*<5s{e~V^Xkxlx< zD%DM>A&t9wus<-5j&dFYIoS8%I6+EhWu4<8;7u4Xh}%ZZlTMjYfZN08;8&|l21SdA zI?VI$#2T5#ezc}0VzPKVz=zW`-^IQF+g?0hAj2hogCjmrsk7vni{KYqWOyzF&K;it zkKK_bgZ35Y`>%nZqBn*ctq!3eGsBS;-y*H3Hgi!_1r*RL+WO2N3J*~PTk@cIPX^ae zP+H1TY#u{%$38gRTN|QiqCl0Lm&IkGAXmW($n}6Zkk5yL`q5j;B!hV$b2q-T~)#wD2#$uM}ZG_-rqkIWynr^|OTn)vuX~xl!$53A5QfG{q zK*)T0Yz{=i!STb8i^HK>$|vAfZ@{xl?FKA)odnRK#~g zCY!jBK4uNu)arJnth+rO!&vbNP}7m39>o&tw$H$&Lr4ou%Y(#v`_uNQ{!`r0rT)=Q zNqsUg&!VdK<>PY}DTO+Twqy|J;(iMyYQimVj9mUwFaR0`xKYa9@v)|nuJNy-w`ExZ zu$`Hs+us3M`RMuLA15v&DBW1CujkE*A_DF=3C^Y3yoO3)xV7(*>4;y(t={Rh1DfOKh2Oax>Zsh5IrEBcNfpOZJhs)L88Cab^#8zhSr zzSb2q*jz##^OZ(GDqO&U8SE^h)kStJaF!s*UzCR^ZTd2+OcIF6sMJ*eJ;|l~MimdM_C@i<8x?eb>sgBMPIiJ}WQ^E5?(YT3 z^E9^7C6tpd<+bc>w}T2%QWVe@fV2j-HObXlc@V@kI*{b45i~D6kW&$c%QgTur}4)d zn8gcQkU*bweNekgsn~uD5Kh+%6}-(Hj}O22NO*jXv712JkpkB`wz$fi~aa>_1~=m zD&V)XS&BVXCH5hj%@@!^luC@MlNF&z@}2h&4i$_%res zNee3i^yu!X^cdK~i%%3`a0FHpgVlppNAX{@0g4D|voXGA(s=w9$~L@{#rT~AjX3~{ZA$eAwG0eH3% zS_~BdghL#MD99n6h1a51l}+AVf=}yRO~~8}1-0K2Dl11c0}6a~lw9@^-*LoF_3G*c zBt#~!KY9RC1Igda{#w~xKG0JchVwZJqvg=RO7`4r!w1FMn#xUjjJZNDMJ~c$X`U>? zzi75f`7|tlD&bpn8FPAM)X=A~yeDG-zZZ6s!N|TSYUg~J`uXxWkaa(7o?Lo_*gy9y zl{H@A?9;YoekY}^t;|PUGdvu#T)zKwWYxp9aE9A@V~iG9tn__Mt`)1^zr?!AdBpv? z#P@)!|J(a3Te$<5e2kwJzpUh{5VL=fs{KRrjdGcr`n)|GHekH5q*Ph(R^?dNkoGjR zsALflEHq~Nnd?(XSh@XioKZcKKHn>!fIt_Vyz!J;SE_}2Qf_Bf%w;prvd6hagG2nk z_r6`8e~3Qf9>=&?2UkzE4)}d-it=bI~jSltVgaG36~>E%Mj(F@Q7LY7{(t)Pid<>iTdgkUSMHixUb#0+ z9dRd`ZIS`ZMYP4ymHn*cyM5(ZFQ5x_FGrjco$m=V+NGZ@B!9;9?sPr-qlNh)l^cA6 zoh`?cPdZd|4U;7sBd47aSoQjK!Ty)JozXwOpB}~es4mJpup>%do9pJGG%PoyJsE(g z9KdkHa4oOQpQf#gg?>Tx|I*LHoIT4Q9@DKq->mo&)uIQSxcnPQekO2U8@jpDJs8>h zmd9%SQQl7zU&hM+fT?RE`bMlCg}4G;L#+1tA~;aXwQJj+fyY06%1>+kPh4a%nv-{Z zBee0Y<{KObk`MoCm%ZjdrID{fKO%~r(<$P$Lv;pL%uRT&MPQe){g!OxOp(N+EB)o` zL2*?xAOH0e5Q{EZs%f<8on<+?D=LNzJdpPkX9p*#L^g#9FJ3N0)-&fXo(Z{>N)$Fc z@nl%3iUaHZ&Fru--mGT6Vk$zapDTmCJ?&*2$P7X9s%BiPT6e$aCo<+fSz=9A^UvrN zAlb5Vh-eR zDml5YNXbAHj%8Q*9>`c|^a=GeOP=uiB;ezXx}(&=@@t!l->=-9WtaE06xa|5{0({! zO2}M;4{}VjSw48N+uf5%i?dzzGyv5A-_v9L7@%~p2k^X`c31$TgOr7oE$I!Z zDvJSVH?HZDH{$M1WR?Ac!_q=+D`YYE@oQp-J#X_4{jc{bN8^weB48LiBQ!&8d=9G4)n zK9^)a$e}y`uHdORzk`*`P@TRwo>=je&)Eb#$LIWwyQ__j9A)p6yDm5J&(0imFUHJ0 z*!*hz5Rq|7j;KCA3MwU;%j#6I2%Y&fhI{&!Pi{Q9#cA4SC41*t?>9&f&xbtZ8qtf$ zYJ<15;f)Aooaijnw>swQRgZoD^}($`IvJ!Njt_vZ9sFs|FzfT~&emf(;eDk%w=@kP z*iG<}F{JL2sLRa>5;(!YTG`(EgheV<yA9e;Wh-X^COc0tNK&9`AVWQ<`PF_#_xxHdUo1$a?a?W z4*T|bPsP{f^~}G)9`*NFH$CGB82#JMSQ}h|B6;+n(*I_fug|5GIJO!VsoT2x>o5UQ zovJ(@pDT5pNBdEgPj`;y;I)lo%591_dyVO|Rc@IL4c9O#3_UD~%vYNz({=pJz6+{a zwqU8GY$=|#R9UJkRFYpYmP@35e7aj#e5Ec&+FI~jN70@C$SWc=^}*%&Xc?Nftj4(G#SSF4Z(fonSfzOIH(CEnz<< zNu9pXpdapVUSthh_O*cFX|Lwc3F|lV=00xVg@=@Q%KehN;g$2h#V5npCf-q7Z;<$B z5LJUaL0X+oy3h3euO+%2@AB|9t)#0tu3*B-7`5Ca-(L#KDsxS~uPrZl_6 zDQnd{OZC)#g(U$=^DLpoIS!$!QGY9*v)R4XEbDek>-}&u%IY}XNJJtY7o))z#PI9q zWi_8CF42qF7HyvY!P|F;K_=I3d3xU&SCB7t)3ZqLQWW5z+?RTly$Q^Ry?zzwYLJ9N<&jU;9p_SoYRB1g9OA>m&qA67f@1iCJeH zNno`a3ihIBR&E#?VWTHzRFV8eCfv|bA1wlRi?1O3=2}0vFn`=%jzNmtq%$A2%A{In zwYzd+hM~|`w-858$PC2MbLU|!)a-^cuRQBE$|pMpa%E8ZaG64S$oNPTPWM3fd(pDU z>gT&Pp8gt{W})A|?u_#*^g_A^7~6tHVhpV~VO6YUrIwz)9M>G^;4>F7i6EK7J4^^R znc}EzIWhk3b8~^)9T^i%$nw#gi)ThtGGY=90hA9%q|jOqAMdMu~9;A1Zh`?T>r_O-@|W9OIKVW|gwmE)fkYbWI#?Fu-aB_4*YuexI-6tIHnTI5p zHsBuUiPkTOEWUkwNbcn41g|Bdt_#nOL$2Fse`svysQh-1hfrdW#Bl$MX1GcE{J4bS ztryFKZmVA?#G*~~jkKyxD&_Vh%Nl3^=C!qpTcfMt4#Y<%w_BXihK#n1UsEO+e`WlZ zuy1ZU)+wL*S1_-yUtMkez~0pUcD`+(+988KEqiBb!rvCP_N&#=3fCLlp=Y|WqnxqK zE!hNnAoQNaxWZAH*qMy)U7a3k@1T~Kw=Jn zuv*-}MhU!=WtnkjXLRgr*n#=QYow-O-wsFx83RcyoIx_CJXmTSRhq$v#2UcGo~gxA z5uzc2a93?wi=X|F@0i0xdBR2tpoe1ujt?u}L4DjLBQ$yjoewr{L!?c$U6-fn4|xZ9 zMJcr6?`xI_rt3Kb((wL^uW*3>lWpY?@a6yG2^{9qg2)5KZlUO(AdfCT|yuZ0N{#SxQ_4@SWuUCcX+))izaC56EL`DMmqt2n07^k5c~POyr*_p{Ah7Os_};=g{8)Rc&UyP&2Ig z>HlCQqM?oh+D004+oeESic!u&PUs5iGKSB(cFB+oN)v{h0yw_MJBce9ODG2Q)lMK_ zU?KCLD5QzU!knpu#2aV-AJB^ywtG|ETAbeyFj!RrbM|EBfZ>*m_{n2tkopg-I4mNw zrEbjWF;r7Rf^UAC(Oyh|Z+*SVUpB6dxCUC*k;XQVCIavO{+2RAnz@u+JdX_!0^)yn zOM&uj{s>9!+kB5tjR9*JIvqnpBk!nTe?ZqTB|CGRzjy>qPtFr=H1hrr!0!Vk>!!Al z?4jbl6R@_*`r53tp3qnvm{b6&uVjI4G*KvTBrXJuy+|a9KbsOxpAO~+WhQ}p%QP2! z72rZ6F5M+a{pk}Lkm(pSDm^TLG@_XT_5SxC{XTYH(STeHj00mYE=_X@ob;lr6h0=b z+NlW}*dQ<#FoY%p=`m4Ne_IVlk!Ct1c zK04++IJsh8X#`Rp`KH|@LH7Sgj6%L9cwN^u9Oi5X#Z+o}(m|NjK#($mMnPT3-y)3U zchxW|Mj0e+=LmilvrkD-=YIfXZ*EGpl2w9lZbBL6=VnZ4JLA#>ScRcN42isv#!%}m zi^YYg^x}$}z~jtb7bf*VaJ@mq=zb#yfU9kCpp-;eFYJQYfX}U)6xRTPln%uPSS9lRn!u8J z&);anR8I!m_e!YlK-y;!nFQj&RLXClM>^@LPoVq$blXp=|g!joYMZAf0?ujdr=(Bk$c z2XG5j0mFOMf&`I-$UPLzyqxHK?&3}{ff3w?S0szY6jkPL2s<}|SoO&FdDqbsV5k^W z4GGPb^fZ~t+Axq&PS^5P2!oE@48Wc3|9MRLTAF$XCvRbXbQJr2iE1fM4XG z{bTyk8W&rLLLf*~2+|~yq)Mx@0|IUIW#Apau5@J7=?I19n{{%D^YCYPaGQ1dGFLM+ z!N54nE`)lQ0KvJiu4)0|Td*yc5P={jBgz?bJ4b2m8jt(8N=RO{!~M$nvB zrxq#s(4vHuZZOZb9x4~%(qIJavqb`>?*hSuf6!=!Gm2Ta+|V4yhXRZ2=-_l~=*muK z))v(`x!aK69dsJ=^B7FxF*wKvv;n;WHXH)ON1SQ{;8&024H=9aGxk%lK|}rCtU)#S^oQZo_l*Y ze>u>KS8nT|&J{tTz53+(P{@HA?y!W4rJA`lF}`PwI9kV_3y9uZNhZP+_th%!?d3F7 zISrh1IDGiwO=+fTpIG?>y%o@1HVUG8+z2On3*lzPD$Xlsa|vZPOMt4g}Jt1VsT;O9(zKos(#pxo9SFEa{b3!%{VyRPuQ`1#HjI7LrOXZMeEhv8L4 zflGNOJUkypU+avQlu(+B%9d@au&Zzbvd~J$Q?TJm*tcX;C1hHO+krmTF@fNWRW+(O z20Ol6de39xh#2C%6GgZRXv$igZVgQ|n z0`uECw)|__B@##~i7IZOrI z1#||w=n^3TuzxP#a~h!IL;%qE`Mr3M-NR`d$adZe$s8o1E{pd~XQ#C%i$d%Y7by%Q z2AfujBLP49X1E2HP~9@v)cDHHD$JZ$IS7nkG9rEY7*RCp3tK1#%4Q@HhT{e@oEIoa zl0o<)C1c=Q)g%gvgf@ZMgR>z3lHDK=&fXO$v}`H#8L^kE4-Sa!H8%k;aJ-~CxLZQ$ z5Oyuh=i%-DmDA-r$sbJWC&&ywtojqLs;jHh@Arc_aJe3|W7|BHU-B1xe00B?q)zT+^VnR9z1qkN3lN}x7J-%9NF~=+& zTb4M!;v#9Lmsc79yC%ZHQNMsetc7h8kQG50FxnS^D-`@e}@01a-ni1{m{S{()G9m1`YVeJ+FID2-wVzY#l0iSw=%Se9TF?dqCC#XQ1pGbd!@J zB9u31OGng8r&xhuQP5-;9sW-Vt3+?=wNU@l<8#%>{)^O_seZR?Z`aR^`9-tyK@T)T z(}o@pm9pMu&m}WdM7h-g75hHlP~kh>Yn{x z2eUZIEi$gunsNggXYCm^m#42UiW{0&GPLA=vE{?hd|3NVoAepqzTHT=k$S{bIl|LtP&?{_sdYqxo zL^y`(%;>nnWM}K!Wr_K^B>BM?l}SIk!k7bYOedxChq5cbm|M9&oc1czFTHxu1gv-H zJ8>t$k|fVBla&7hF0Xu0X*kT5^b|QtxRNZQdc-=oVEL=+2>GT%Yd2J-ZSz|0-d|*_ zZ9X)~ek^cb_V4P0#$Rn2NjiN-#B^l=GoG^xB`O7ydFsuO2p&1Ulh`ZMisnrWq8(vtv=G&WQddU@LiAM zlKx!#>gJ<7f(#;*l7ye9Q~J$SGt=+;M9^0B#2~F_k%7Pm2S>-|SY!yC+0A3#q5m%u zE7~({zAf|fz4Ga>>zJYUS=6C*>VD1b^&`m3d%h!UJvx+(N+ZU$(u(Q<9rlb|Z+Gan zM@wh&zuaFN-&dQ`6UM$Z&UoDmDLIbpH1&d@>)1HHa-ZX zE?SeQ$|el;9Dgw8i&R9D#>^XkQrf@vZE=P@xhe6FV}sqftugQS+z8URY6}-Mk>TYZ z{ocUhPX)~Avzq(ALceIU*PdWm=hs0tTD8#y<%w^Cslqk`aCA*^b8augb8jnqF%i$& zinJ_qT*UT)TF*fMN3uqwokm(hv0Q*NR+{G+G8icF%r2wEbf`Rt{bRMzpl>OCN|gKG zL4QVvI7Tn8f3QL4uWGlVEuVdrzuh@$#<Ooln;nyg=q13vL(L&oUyyljYs9C!ZfQ(c8cR@CLhj>H#()$DjW+d>e0UW-XTJ zczAT6_V90v;2$6FV?V92XoFwxXXFdKjvl(DD8IJux|nizv(pny9lF zEf*_~;tcM8sQ+u6ph#$~wgjPBjsd(Ech++b>tFnv3M9=ey@*CJlk^)v}Pm*s*c!c&UIEQ&*|>`9|lGF4sKB!yZtl z<0CcIx0d##$w=NeV4q0(fD6cO%Fu{69qOr-`iuS^{FaHVcK-zQK-gl!*35bfOtK$v zQ|!*_xa3;(Id=_k$*MxWX4wAneX;DxUG$?mwC3-LNxld@Eh%Y!p8W3Zx<}sRbJK3O zf~(oo!jdZQG;w$(2iz&$Z>w_GVho~mq2icZ4KWP)o$|Sdxf?Jx$^o( zi6w0p)VC7xKQqz6I$XWZNuw{BGcs zD>gVa08aD$Z+=8t23<<2o1%RYq~m6vD|O?gd~?%y1vF8>;XOJKi5!3#>~CnYun~oa z_1VfBv_7Mn7BMa{v(iTP`w54_;^1J7m6mO)N{hJypyt(cJo1mYG}m@RaITcnbPFw} z?DqGz5S1A=k~y7cDDl`FbHDGIazB)d+s#sIw*3ZN(gyKvHAYlpRrEfGQ-K9Q&lHxK zy~m=>Pp{?_cb8K8YWf{dncankMXA0UN6LTVU!JG$UJ(q5yABmpL8AsyvU=d6QDe_p$}f7N`qOe;il zaZ`$6n)>3Jui>9aDDjhSt(B#v$N1t?(YZ^X8p!Q^k?8($F14Q?zi{Q8!9F&&8`<8h zT+i{&LOeEKG?vS@RlV-7d@7&3IsZjWq2S})zHd|mC}{0;I<=A7N5z*}Sr2%Oy-a?{ z?PAx(G1Tx2SbXBa+i7mGdk^~F9bFRVaD{|rw=yo+w<+^=)w}Ng{>?tsCwDVqy0Ros z-~$i<>aSB=6)d?mfj)2h-p*4Art8kTzm6IF52&rQ*G+gR_!#p$Eq}>X*rjSUpog$| zkMH)P?=R8v7GY3Y{8$y7?I&ImaBRkw{i$#5XW*r8(=uPXWOdqYohJ}~KACR1RpneJ zJc~9pcrVz&^JE~d_4kS1MnW9j(6fi7vbj<5ALDZ&>2wSAd*X?6d>@}T+(~6l;53JN zd&L@uL0ZOSgc*Z=z1HXt)nK{X&u7f?cA-G0S5^_O9`4=aH7Gnc6#F~;d>{vG;PD6>V00VmIHe6akZB{ zd6^UQ%49y)`qcd4^K}ZJ-lmqzY+_LgCd`|OwD5)KPh^&+%`HLHyqR|~>yquS!A`r1 z<{B}@mRIE?wVWo*2}v|h^gd<|VWKc`@5Q<6f7A6o2$6g{%q+wn^M*zkkqjL2N~_u>JJ?IW3*N43VTQT&g^KdTp=1NSVFKGKIgLG zl;HZvA3YZUt#;xJ)}0=dJn+Ddr7c-Mm@(>Z_SoBl{!WI$exZH)U*E^l#sU#sQRBSy;bT?U#{D=CgJQ+xO3VpHQHq|}?afE~N!nyMAnTLT$Ew{U+HFh6{k z5U()OQ~@0bW;=!D@YIi+Pu&6Db$xlc790sIR(|n8AeyCrkN#lrHu&Bw{|gKA+fnX1 z4NIQi#uro%I+xqP;;sy1Z186Jl0WubzciJNwDsp*d6V+qbZDWx=&yTNZh7Wz-=@AC zzp0VgR$&Z%@pFuUE4phm{YyJ(&B&3?c~%q06ofx#05O=|KV2tB92oRqS)2&>QR=)B zg??4@5M(#yS?tGJnXW6v(gFxRJvh0})a$Jv(c49*vlgk=3_3E4??!n*%@VPCLY4ga zhWi3s++rq(w)^c*a535pUXl0X#ppVi#CsYAK&1Vy(kKP{E{Rfn-i3A9X2^7i_K&$A zjy^#y!_Qc(tPxV~{}w537}FKUeOs7HNldt+SC+vrM(&?i?c+Nrm&^tVE8#k`#Gc*Tgxh#%A%$ruJr?y0=?UWIuYJwNGDWc1t*UjPzL$P zZ>&YHX(Ut1sAiP1q0^;Xo-QKjSwWmBILuk3Cnfh{=y7L}{9eFwPJs%*SpYOpl2FV- zRd#Q++5VA+!0KqyC#yxXgmCB-=m4d5vUv@bN^BWWzg&MfQz@y0Z|}`T)7_wCZBaZi zQrxF_PLuYjlZ;2HCWFs~gDT*!zn&S^qLDAsm_mpH)hDgMM7s%A;0!_8pUW@71rlOp z*4A{MGfogbdR&sL4GSicH&8UXI+t*jYnfo$;4TorGn^woGvU}x8c+X==E)cT<_{Cs z<2?g^CPk5rfu7p}Z81AjY``0BL&ojDXhal_o-bzaB&>wGT0GB~2EdTozj#2(Gb351 z;+Pm>JRnOhg7F>1nM=66LBkw^gOxBISo=sqgn?p%F_uo(mer1cYi$Vf6?AgBY49Bx$uIg#FT) zLA;69J#q-9s!wN-S&dmnDMmlbYEA6k8lOdTPdHJ?>vEYQN$ulnCP2Ik|98kJPsB08ajZm$0 zxcQ1og`Ep|K=h6Qhe`MAkAl8#SE!Gkm_fRqyZPlLui5lfNf*%#LT}r zlLN5u=}i)~dC_#0Sw{)gyeu_u8#n>aQULP)H;6N-gt9iHBwqO)s&3M_`H@Wp_YbNm7#D_!CIHGnviTvG^~z#EmJp$UX!T7hTufbyoHhcl1PGlGtVNekyd~ng)VqDW9 zV7vc2x~2SNz;|O%Dem23#YT@nAEwRu3qsAebt2r;5Y8%ZS#Q8 zLi*BhmCJJdfP~MbkCzEyh>#MRsUzPCUuYc5{yDM)maHhSmrM}mPzSr|CSIfph$6j7 zbq%VXz+7%ZgPKDd&;zbB=RA8&3LqAgZ}{<29(;+Q4kc( zgwOCcr%EPP=gG##y-PFQ1Z>BfE`3s@@cJ$&iGe+V-RLKU6Z3!UPb5{iXt^k83+sn zvjKjf1}Q1s)GbsS=`sX`-(|YuWRgadJm6;nNf!%XIx(!%(M0Qo>mOb7viag5B-c46UUbsD{{>o*gJn=uk z-S(C)r6-_izJC%y0>fe`sCV4#f%6;)QpqMq$be8ix}fU+@#w}X|heD3me(Aq`h$UABVJz_UC1lHJ~WDLE{V*L+7Rwu8Z z7$^O$7c%N9FH$DK7>`{_0A*T-4nJPK2GBy6mGCx^M6w4|Jy7?O1XH_tw3TAb37Bkj zUrDkG`E^w6O>`)#LwGxoI_eawJPL>`Ntq`wih!v(aTJjDM)w4@=nPX!96=+>a?vc8vcUipYX35$~ep{s!zhFRA2$>Qp2e$7k^(5V80arQ4E97s%5PqjZrY zz$PS%!|U{?j~zjjHdIoGusSwCLPCblziiv+KcLbS@IMPZ8oYhM_YwGMIbfs61sej} z?)a8Qc{C<;41zW`J<&rW7#Uk?l2GNjV*hp2y>;^{%1uQ|QeE9^4@elzv=46-LrhZ% zK+FC_*vA1h&a3AFJdJs@xtkzSh0;mmYCt@i*bp@YNsz`lNTE~%*1%878#KH^v=tAZ z=O5pDNl+5Dn6Acx5hMZrri7MWTmX2^CFyqg(@ukClksu2eY6*eCso-(n`UcJXw?I9 zKSjWualCN>ML(7Hl+CqC#l51c42sc32$5!A=#8NYsUG;G8p{31Xa(gr29@5CWPq$!hH6qs(eOJ_Wrb8*hD_K4cfdEDK6sqW}kFT;Ow3X#nc-bT9D z!A?d^?=-zv5F3cxOM69m%DP`3%;CUdB3sm20w8uW9CQp0DryKhYC_-8$uJRBY30ln zi%}CB6FG4qD$#F66CH}v>bE!a%|Bkc-sO|u_aqnQF>{StR(Z)NVCob1Gz7yT83|?~9c3v`1gtIs%mOv4TLCu8{1Ex#d zQewJZ*m&4%kEgflfWdQiBI!E!!MOFu%yKzfMuh+@dw@X9_s#?j5q#uRqYrF|S68n# zH}2g2MkYS!4ewgLm2Rg+-^G44Pkx@wbYgG}54&5X$}0XASKdFp=b9!BTF1h50E$R* zlaTt|7YDK}6Cd10^sZ<^xCAvWgtCux!Q;lHKg6ljWgz1Ls1#}?OvrKM>@_hdf{vTS z70ta{l^Z46SWo#5>y%m9-k?2xgG1opRj7J`n(GTudlCH_)K;P6Zr=R0$PE!_#fskh zQvD6NqQ?1~Y4Y2y{5&r4pvu!mqf^gz-SY5iVt3|v7}B_ti#PH>?f2U)SLfk6b|8V}olqi6j$yUpBtL-U6en^41? zJ#`=m0tejF#eITeeZO^ZUz0BB?#|L=+}?>FKwTcqHqULi+Dlfgcv$o4;M=IEawC{u zg@{0TiKSJ~KBh+5CXj9Lt}bb<&z}K|n&zP*wQ&zxmIKG$Oubi*d;H~wA8q)V!LKc= zf%lJcKNTXWEgW+bvdR;ET)JIV1JypxHfokyj8>K%Y{tHhHXgk)9L%fm{nXo4s#UJ? zcAy<%{ZUjN^MIPMOtXzJQ>0t7sB%xof!YgpKI=D`%Y(MMKfY7-XU^~-k=f{FZF9f1 z?&Z$%ptkjaZ{KC^@^aj?%iMIEJT_k3Bdle1Mckx+V!-V!DDori@PnG+=qh+D+$w#U zn^&Hbws?}N?Lhks2^Vk>Vu+7QW~;rA@TyF<%ACI}lWHP;Nt(C2NB!ZzbDMX+yKTAx z*$Qwyd64(>0a-Gm?~7}s9v7>JACR_T-;L;^^-tzUZkem`jq@+@(5HR*6$U%2%k9}9 z-1>QU@Ab;TgIC?(+Z|Jrg zxfM_~Q#2^DS#uqVcFW1g)mC#$(?PB)_Iuuak&_;6C}@%*H&?pH`L!MJ;%5sv1I_(k zk+qT*eO-ELmd*K!bQMC(CG(AjPbJ>hxKjOK?dn)?wU7PvdamH``v;*1k5f(9t^If? z;`yYLP;l7Ty!%1jt<4z8;E6&@(DI%jJ2g!5Mr*?zGt&*V<<~^V55QFqaf{3Z(3bVI zUid6Kbldq`Qa+k3m=b|k&wmifu-q`~^SLaq5@mUkJVcAgTg2nhZh49Afui6ottp(L zd%_uwk(-<1PrW5;8vkvlUpH7xmE}Y6QCy_>vB!P?2}*5^!i_za!&bP5x7x+ zWgx|4!zlcvX?bDD*M>_=&8=x8CJEVcVtYWZdj(YSJWf1?vft6!k6@jZ!#2F z%$P%OceGCF)-iXgMtP9#Ct-cxjlWdktwS$fP#*DiY18l(=jz=Hb?El5{4RXIsF;jU z4w+~0hrtoUv4n%^uBK0qZKh9ru3TOrEa}&8pc#LFS z^!B{dgJ=sLE6DF=hD5ms453+9r-Zsptg&@_{4X*Gl;Xixeih4=7d&aBxx0C~6ApgD zc-f$_NXT763zHUW9#hLaHMV832onKQO>xZJ(B$FsWk%uW{C!$9y6Dmqk!!`iA8+z$ znQ>2P4zj7sWP2evy%mNKQF|lL7>=$QI~JPn-G@tUWG(`X7sW|h0u zTo-;+ON+Aw8iq^8G?%gi&-x0=TSXNz3fP-ZP#c&c;&^>YhqYwLLD)Xc75taEm3l9A2P(p^(~%ydr9w?i1M&S+xh z{Mo|k$=lkpJr+H{=z77ObP~Rm2`ThWIAEmeC5NCw@2`~GPTo?2HhRvB@mFNiX;rX+ zy6}Hq+>gwIH$8q&LD~FS>VDpa5V)2n{%N_&7lZ}0_4vI$6K3fiknduUMS))6Y#iEC z!)}5zifhM968oLY=Y7{y4wlIG3RcJW$rmW+*z8xosYg~iui<17onL5+k&Qex|KybW zQ9vunu1p95r$*$8H0a)Z7B*26;D<<-UC=mr*Bh=VBr;jl5mH|)pEL4xQRhp9i*ix? z^qV#fTSP{*TdmxcM|O09t(mFU?Nx`pi6S)NpcjiYRr|;+_i8iGyZ@u;+~b-0|2TeT zW5_*fGE7shm0N7?mvYY~mn0RUDOP@D?$n>CS`6R6uC3ZCFFkh{hi`c|ReG^ZwY7Ht&_!4;#aMRD{ckj>N5f zk#uypZr9KE@9Wr$MISvLTFE8Rnv5ZLov&v|*^65care5h)E>_$E;|Snk(c(eUfbyW z-qnseHwaFO6v(Ab7ZiS@m%hg%nR?!C{8G04WnBcrN%%(XpwdtdLqcpN%0ka{iQh4A*e`iRm`!5jU+&4;YghGR%Qt~DT!2AC>n#o5ppB=W*mvVo9Esnn|N>JPfhp$ZXUxn)p)~&m$&XqUH_BW z?=f>F8c1y$J|WG>o8)d-TCxdmRlHS-zOcFEK3#X#Re7=H@q>;n&vbyul@HTD#i7H|BZ5< zf{Ja}0h+^lGM4$tBzfa@o%P$9$14wQY7v*Ldeu*_IUk~qGCpfeyL&c$aJ%+#=|r2Q zuWU8`8Uv7HZAG93&4fELrv4#_)O*}hay*=axWqX;!l~SSq9FOSGh__y zbHhDQB3HxLp2m6Y0j|3=d)oEo&&P==&i8&Wu*`wVI*im&-1sL^zc!6$lWr|Hc5~K* zOnWIolhu*G7xxNXV9mVD>HL%LHI*kH!6hPZ{>l*#CUvn0Ov^|=__Z$@6h5l*`;;h` z(gT=b#$1?{++TqCIm$8o&KFi_ZEl4F>?Jo!p5eRMu>sZ`+6YBTLb|z( ztElXw(F;VYIu5%XXJSfo)o7^y!tOu;L0iJKLOITujuN?iI5$mOOYdsb%yp;y8@hKrWKZ~w2!nZD{t7PmzsGfx zAzLec*MMz6&W0fq2TxrDzH`9E&Q)u3adE33c<*c~C9&v&lT+>OJy;FM54G6Xb9{~k zUU%wfW-THFN@I;@OK$G#s1$+&gMiT-0(F`aH=Ty!F`;;ITs_Tu6Qa8|%$mu;G%=2J z+($ZFcWTQUj%0+jh=b!~GGYl(E?hf&jvqMWQ-~+#yaPK1mJ1zJ#I-c%GI?hOG#!?Y zd9*%jWuwFe(LU;=d@%8@%vrb3ZPsMk3wshzpl1AK?Xh<>_;lyAhlGajh*sel!s#R? zqI@)w!x6+G^(Aq&`E77T!zhXi$NUZ~r3zBdgFwA2m68VJ4H;ws5=Fm2bclxgJku#p znVHJ-1QCcM;bQ+zCANL5=L4YoHvq1_L4J2VA{|h@!qG#f=$qGxGClx?iXU$JurhMY z3*~rHY+lS>$XS{I!3JnfBK^V4_Dte{1rw23s9P`+29|7tUAnD%{|Zjl{9`+uhX`fU zAvS80iJf3?q{Pgy5Ed$wC|Yc#&DjZ9Go6^+>Je$O2VSf=0We<5;qmQxNL4k{Jv2HH zyB}Ty#StLj_5P{L3_(B?^Rgw$qOzp9xFay}6DCNn+A+d;xASFB4$SmPGk;#r@ zh9T0p32anWYXTg>5_=#sPY!|@z8&;es~s$%l}nwwC<6FJ(=g+KKDLSWWh10HE~ zUz6k01|W?tV6XioD763}97d^w=YRf6C;g|fiVI~7_=%LAYGy-d)? zD{glT9CrAD)=s`WJU13zq5&UZ2VQ`=sqWdO!9uySVnzVYS3`~4UYqqC^ANNyn*8!I zlPxNe7!3w0QcYQhjB3sbc={$O_8!-K09acMFzne1s?goz8gV9qkZ3D-kQ2RQE*cBo z3?HL8?V&bkQ}ORO=;P0Sp<>m+%cKdttAt>TU;Cbc2pDx&4TLc9EGm8`&xo{u8W|*q zw@R;nmXQd4%K*-*|A5e6J>j9?Dw*>jcv>{n2WYTrFhy}qDAJf5`Vt~==-~Sm3{G$>?fm7|9=)Px!i_3+h zNp@4_rnvDKru0!bOj$P-ROEA^PC|kqcvf%4U6A+$Xum}`J}%P;>Inf{@kYq0kkk>4 zc_!_*qyNnRZ69(MNmgIqx>}OZalFYD+9WGekRL zV9rUe5{O*fMPRnqjD3>fq4h{~BN+@O9~?Y|B`H$k4?(^1@-4hCsoq;2?4=L*cheq) zhX`xw^%#dcV(C4A8`4K!nFP4GY9nfj)>{{q;E z9f_#YHOC@^+rV>f0EFztWcGt#puSl^RpA_BU|M`9)~Dm3LvmJa+ggJnX%N0QDR2}~ z1?kAn!)-=kPPaZwQZwid+5G0th1V z6I5Z-$700dO~FQsmA$CMFZ~*gIgCQ!vR~7Ki^q7si3D}Rb#8|!;rbrkFfI0rPz6O4 z7N{^&b?XhxWoCzE&C}i$^P|MQTGT5>8StEqWmA?$#3{OWuX%V}5~tv$sPK)M118l2 zi1vwkZH|JJ&u+!^9B=~*8W!B1`G*h27BCTPTFv_Ob%}{xfj{Kyb?H!O!?G=}(r@+^Yw zx*-%R)U>||lqo2D;~kt^Xr~vlLObpms!vsOMYJDERI3RTkiY&PfGMkE-3vGu zNe3WDQo#JLHrCI4cs2(45d$$D1I7DMAkfqS+^C2oMDVBZNfgIMJ64o_SmKCHzsug@ zmMqCH?IF>=o9$2=4 z`48Z>2YBK&4B6Vjl{*jsj*q0m=)tpQkS$QM*C!eUU}sL&9oL}Fvtn_CA*6`GLT@k3 zu?pr=i5VSYjA%||1L~SBWO5aK1iV9t(u;QVz>>ozX~0L8WpczXr(sb;%7Gs~m;2(~-9|(!n3b=*hh@6){4)Xwt@8#D7NwY3AA2##?da6D~uqXf| zG})2t{Et_cw0S!a^+Wo`>$mcjhvS%@z6zH+UBuleKe%v}iub|Byp788llqU<9FC^!+}d4KMD3fd@KR&N2NR<%TDxC=PHN zt3deop2wm>9DNf2gIU}p(>E~m9jOQDs!9?Hz#E8~1%XT|KsekMD=I&X*8)3bc+JHM zV0^yGJ)pLn$!eog1^0!bD8U7g4E4hfs`J`lKR@svke%b}7{Z(A)b<^KJ+E^hGerMR zXL2EIpDP&BY(?LFL7`=_(neIo|8aA!CU9zd+n&C@#&^KjV9Yz*y8(>cL(~Hq`5Yt= zj&tRnq3gmbO>=zUJQLi8BN)3W@+I~(lZ|WlBo|yKntJFCc-6Dxzfr=j%AK)*yTBp( zqugsdgx=BJ*AAYDkThpIkd zl8#pr!W}BdG2$Y@o14cqNo-*%#8 zI=IDC&G&nKqsf=7MqoSnU65)8F2kd+R?v~w9G*78zb)n%x}&O6wY^g;c)3&|A?3ZQ zT`_4EmS8s1sAe8?C z$>4WRQu%=U(7jG6fHT*(c_D?{_%`hKM^&0Kt>rb=g~=iTebw_lFL@>;^mmhUK=14? z>+prqQtw@O0DLj*joPL&@p%DnYuPJ(-}V;dHdHvw@5W6|l+6*&;>Q_W8bbI zO9lrSH&?%{Nmus({?H`F!J=T{qs6lOn*yYWE{LUd<~DhQVo)_Nt;+T7Z@kZyJ)kFd zX5;G9Ews~YR8?vepx6F?Q7)rpH0$$si*@OYHcztT=HUVTi%M>d(|Lz7thl6v*7y#1 zhOr7G7$#NdBj9Ryu&bdCvpSxlJv6srv;9$}6vS0c2+Ql2KJ!gAJxk>2tbZc*zSXZA zq&MlMCrOTG7}z@CLga^mMMbdiZ*9TGSMoVGU!pA0)2R)O;v#R-mHYxv%kb&eS+)E4 z#6;I|Y~=jQt6}3tcLqTIY3#x$7HmTKBrm@C61C3a6V!Z&DLBQng7`!@IKI9Z)Qy3w zPlicNl-y*hyr}IMJRH_jDqMB->oBL_!P_ojzrlTbP<}4-9GT;x6jQG z1zx1B)FJU2Ml2mX;=Dddf%87 zN|{{8?7U{2tu8Hn72tH*w0S3&Sr6$*0!!RbUFZ^G=%x`Cd&Zf<{+yGK6`}vObd)#b|dJEgDnyTD4jW&*9wg@5jGgm?3wy zkqQHrXL9tSf5)zRN?jK2#$Nn|PQN3&+WNa&Fn~gD5{c020w3N? z^oYxNfh;F)#(e$w`%tu*VI1` z^wRqJEp2RG1uyf^N$DLf4zq|HEpy+^p}T#5{@|-tjYCLlY?#9ELeg;ah03(dbNaXY z^DJXK;})^qTn{SJE?v92rH%~0XuU@A3AH=o>|ga-EiXS`wTH?$mm!+wyb4sT`)=^y zef#Rp390xko*kGj9Gz*D4${Abe5^M3_=2qO=UStWfBt-ol;-@|PBG_$*ch8Bn$CUi z-L5G#uWvoPyqj2f|1R9?@W%ABpPb{*PIwHz#dC;$Xg(-1_04id4AmiD_LVD_;VX)Q zWbHEqt#hskPQO%6Ek6uhD>y#;`-Hu_{XG~PYU=Dkqi(IaJnf=^S>3{IKHoy23*GEK z6oq$6ACGG^Y5kt%HE$3~2M_$?y1V5$P5>zV>_)T6ke8F*D~u*YNrm0t2Sx$~FLy7;Dh`REcaN@o)b~0Oi{=GsM z&+;9}sAAJY#~XE%2RCGFH6E>0#1T**Exu1YYRLR_SU=;%IY`Ppe#CKeTweb9?N=V& zJU(1lPk&L%i3He3Y1wz;#DJ)A%d=XqxI+9$#q&X{rmydgho!q>Z(7Za7AQszM7QF( z>BEFYWdnZ&Pq!00x}R2>#ZM+v$`|^7KjY97Pn3ZVTM9jpo;k1T6fz06%R`U*&p2pw zuNyAZ&RLRFH{080qN%T&z2M(vQ<&vh*iWmm%isGmL!9K;QSum&Rh_#k-KV)Hq6<8Y zoDretENvA;^65W&;Ln~XPbkud!ctnG;vs=_(l5mu`ZdK5KI#HQSufu6`dwFtyqXt- z)hYBt59YlO=Ru&Esa(E*B(lAEtkN%;1nelCFmb3w=}3Nh8kuw+_L+nCP-5`1ruM5V zwTiE9sReLnjC{y48rD%KM%EIyE~~$MB|X>}r)wnpYR4@0+3M40T&FQq3%Ogu2Z3*@ z|8f;PT`hd&j3rOGo_K+ViTqg!O`RwdPhVlr_xS#l(Xr-wwnfq=szh2_9f!eg7voe! z=3)zs{E>#o))aS5XZ+DDx)``>(hg>jTQuv}9s*vn>c;KmKsq zwL*UQJDXQQZQM;y6RhWFLh2mupuSaYZO=94Aj_OnP($hDfr2xE_2->S$paPqk)!aX zdOs?1zkg2OocmH%mdAw|-gXaF&*u;@|Bz4$l~p6{7U#ueIK;(xRW3Yj=hg%Z!O2Z{lkpvQa3JJm%>xP<*n=Ou^ z1s@37f8*{Mv?-=`YYQc!k#4_}`Wou=tI!HHp3nG+UAe$5G-fy$70Tt2wk0z%EmL<( z{54vE&=PuDU6Ssx?`!(-o?)^VHFzfITeQdn$K}qjR&*q306KVY`<1VfNZ9LlZQ|!# zGh?9egSyp2jV}wDbDM4f`RH>bvtWvbKr-g<$@8ErNY z_Ys)fM4i6`NqfIP##6;=MXFOqT;xXPO=z%tck@%NaX7*P4&8dgTJEiIb9CgXwf8t3 zpcv8CaOEoeJFIU^^zENn$$wijj+-4WBu@kUlCP;{eR8On&u0(z6U;XV%U?-t?hcVcIFW*s z+PoLPy{C!auWDQU-Y7KbWbVhXhSYM zl53aotj;j<71^=jfbzD{1VNi2wVqsB)8U@c8y9mm5qpAQxCp8wvv;!g*M65xH;g*R zjT@T3`eYaoZ<7i(GYsovtPb@=Hd$(WwcnOorJHG7}_pujJ8)S>)&!JX{{(L_hZVCM}uKICo;zYWY1RNd7^Q;VW&YJ z-m#ju{;;+=NpA7kJd3{Hc#3Pq>8osdIx+@WG4Wx2gU;wd;q@<=vigKqq?m+bUzdwF z^Bqg;31D*8j191o$!1a_jo(8G|CtIng>6RdC+e9Ndp+qqdgh7m6mx2KY#R5De9Acb zxy9f6*uKC{YW7l^i)32?(m5U5)1^vIh=0>tX5aYWM96nj4_-Hp*V>Sg9({??i2c%{ z2j*{_*IVB!77+GAtpde)lb<)%YlKPN(mnMg&;Q;t$@LReXdy9CnVEItc>Ot1X7}luyvwfT0!73sj*MO2R5 zP~*F@?VuQ%Oi8bfZ=4;amp}c&YI$2l6F)jqZC5qYI@N0au>5v6FV3;7E9k_4WGlS? z3oEAv{PwTMYH#cxXo`GF`Fi}LrCD8qBW4Rl-a^W0fXVOs-@oEx(kB1@oEPQMl-*68 zHhWs=F)sf}WpMb)24cnG@elq6x#y%s>&g8ynf=6vxX1bmvmS+ds!(9}ryusV=2>w4pP<3He0&pL=~m62&jTv*2p=lau|)ctmStpZ>T z6h{F$vmn8F^M{`Oqg*e(H43bW#&EtBIa^s*6}sdU=v~cOnC}e{i3WjQ6>;fOW}JR+ zkTW`l_sX~{LVf!|e8x4wC*O70L~ZY8ikL;5xd=JF>jJCXYR4562wTNave zE)li0xxJmsWInbr@abR3+Pub*hX%m&xcz5ZP7%CZPV5QGSl!=tG|4P1)X#_`m0hKb zTmd>eaAf%TXRJaInH|bWEMMWs(Edf%q$ge8Y%VlUP~!QS56OiA(kn2RC{oybCE%f) z^sa?T$0>5T$F#5Er0eajywMVG6`$a#Pogj1r`GjJ6V7N)%0a~eMRKV179uk4$G2rH zS_yJe^E9-mH+XrM9l>|eWEnl{$YOLb{snyfHPhF(Lr#jcENHXdu3zZHMQ(&YQU(m! zK9CR;L+~RpZy1bO;NeISFac-C*800m7|){BRs_}7zjS`0z891z%Zl%lGi2J2o3hz} zytr2Bdid+;L3pW>1KVlY;x4VnZt$iL0QRIGBnhxu-(h^v%(cbNi=Mkh-hnRtK%KwZ zYMhfs0h`v2-Np%G#B|xW)WdH`{{mQKb|%X`h0pTy+@AYK(%=ZW2^u4+jJMto4e0}@ z2#%m`^E`049E3#sx+S+cZ7_E*l63yU%hd>pb1XNm?!6}mG;aw*3JwW=9mXr3E(GVkIw?3Qtki*7`m_HSnL)($5qKf)KUw_9U?u7Hp}RJkSt^oT zDtcZO>}GV-x@Z?ACr@^h05fj6DaMRgtw4=L@KT@bz}}GycX(XC1!|V;fJ(~D$<*Hc zlY^8r2No>_%^RAS1r4!RzG`_Hj%CT9e>%F%Bg`yC~ErXB)^XTT}`t}{)Mf}sC$5t}W_Cq#56_rX?KlCtbgQZRh3 zCwvnksk1|Z;_?GJ1*cm07*FPQr-6l>yPV4*~!Y>7kbuL^oWBa^yF)eU z#YztFioY528ueK4gMur@IZ4egIVo6zcqCbOk|(!fEp`juKRBGp^Lz!OEsFHfYUxX2 z_Y-T8qJmZIZMkq}J|syo37g9z#T@mnGm;>Gcy#0rq(14k=0kFQ#(|zhg4o@xb?sI) zP_48Fu4``0Fugg{t2L{EASNHvV-c_bFuT7}l?BJr$rMVOJ5)yknl29F^dmv*=;IF5 zk1KOgXNkrS5koPejHojG6b3)_AseFG?3M&N(bP2wS{+XnpQOP1-<8XuIZPfgJm{40 z8iEh!tT&e9vs)=YKr|ey0TX0Bch_=Z=bnjV!eLyQ^ATr&fGxh$J!Y9R91)Zn(1~Cf zrB}$|&1>%iq2wrrI3>XyQjV}f2s#|n>Xq!NN>dnVGx~Z;(Ef%t_qk4(b}(XWi8NvS zu#(To=mtDV^*;a{=@``JaQVaDxDu=$x`njtW&Id;VM7YO;!NZS1HHz6@Acy~gj2g_ zxJ_5#82?#DTsTXIB|!X4%EN>F#}PrAsi8hAQG3t?5n;Q1-Vl%Sbk4W+UMu zG&PO+hFF|gs7L`HI0u3A;ID?Pe+0W7=t=;exF=KHe#m}^1#mNy$!O9GyD5BJ1380~ zzbD5cRE$mlQsYdO4L!q~+Fk)pOVD`0M>^dU0hn>54_h%&+z^6Y}NVpdg zu|E$Xvdl{R6mGP)${&_Mj*uOJ5X#~5&i)y7s_R(A2+QHSadmFcK$7FnU`KAX>a;OL zK$nrV{WD)U?w9$U#xXF0i)i6E%+G)q_i~Nb1Ou-UGsgbOnMHt+dwqd6n54*%k{$Pd zy@x3qF0LKqq|gnJconMRhM9~`8+qX{v(W>RhGLexgE;`ef9KGBh$W6qL~+9nAqoc2 z`A#|Q^o)D6Ztq)`u-68ERlYI9Fa?ja1!e7MGDWkt2B9nPKlb6uZ137b24s1`*(u&O( zI{36ul9s}>0tW?1#z*<9gnJc;5_qxtBs&kc0`Dvt&kf4sX8>YqN{DYWLvTk6+{SHN z06}xJFaH4-o1Sy9nLtpC3EP1koDhxo*Qnp{hfzY(Pa;CHSr8oiLI+g!Lji%>P)DLy`sRseFR*RAlXZCPgrwpM_NbVM}cZcIjYaJT=*++f}CRd=<=3Vl! znD*5z%}uJ4P-0dz1<$>{T{s7OTEikb{&1H|Ls6SI*rR5Kmj(;e9CNSa5|kIX9^l_W z26~kNJ`v z8NCNqfLfBvjw4z0;c-;~G;+O7u&o(s0o5KdiIWwG3sW2>Ac+ks^37J=YTO&YV<2L~ zk3V?r&M-=Q-u1=7LVW^C;85|+_MI&{$gLUmX|99|YP<&xR+d<-4G86qcsKBKhWW`w z=Y%UM%4nh=(J?eMyoN5L!7N!Sqlh0~E9{Ws__40M2F4$tb>&ksAfqt*>5O!wRex&Y zLtU+OE8DXzex9YaU-V-ShHM5ZIHUv}5cgK60PR)OaIE^!} z91V@e^NCnfuX$EEl7ojO`K*dX5DI8Kg~ zDBT`OldV-NH_?f={!rTxzvK57B{!QM6&WSpyDffvxhA(D^%M>03pTswJoGb#R8Jiv z1uZHr|E{bXy?J_A+)=>HQ1C?iKCel3yx651XFUZG@$jVl#B#NzlJX&y%!GRCi6ot+ zobcVv*V7+bTNfjTC?T<1Jr7HZqP|gZF|squ!~DK&J&WMJS3&tG5OtOP6prjIlo;OB zdH6EpQ+!ebxhW}-juz+g@oNpieb7Q}h&v%Hh2&-?iO|7Z?DA&bh?B#ktmkKxP{9vq zYmbXRsN}xD=ZCL##MwwdXBnwWISbdX4^>xCQ(oQN;kmIw*U(B=OK1_?jvH5w^ZG$f zP8TgH^f8{9dMf;H5=mD-QcYa2zLpdTzUIB5fY6PdR&1`UA|{QeJoTqR=N@A?dyDHf zyr%AHs;Hb(6qk``;s;GHS@Vne6g~0CZXdtYcJ$DGxM0!PmcUz;U}x6O2C}p0?9xjh z761CH^&|sHp5zM8@9l4Fc0%C4!2+KJv>ZuXO%oZ;WevAuU8zBaCjBuUCnVqx}BDjm?hCV#V_x`JVf{cS2tJ zn{%FM%kt8KO%Y9IMPI~m>SnqHk?4j1){cV-X3K!JO4wFn(CO)jEE#BaDF#Wwqzn5B5v65fm zx9@8su9WesD8Je$EB9uaZt!G?Yidf} zZ`$q2y8=1PK`q8>LGPbggq@$dh^r+hrO0(F-1xKw3qKo|mYz_o!X|aDYCr#9&o*h- zca8amf!i_lSK;1|!VPCNN~85s>|+LTxk5TKn0C7-zs1%1{vQ*4Py4P$f!&c{N8#Mc zHJ6-`3qfrMSD?;xB;j_jxZC-h?s8ArAG>5SY3pZ9;&<`jo14e% z5sDjeu9oZk@Q31$XhmvnU;G<#RA0A`z4IQyDZMvA%ijMsTd8eh;YTI`$e$&c{GGdB zdryR&F#Blttkc56k+Tgvx%eQ>UnyVyl75+~llua+Q(ceR?946HEBy06>)kHcz<@AUI z%ez0;A4VTxMPyF=Xe*P+{$zq&KW)(iJwM+?EOg-EvX0!~*hCEoBgdN=y2s~?4HM=h{&0wMG|Ai|;!>gCh~B`*7{hYevvZddACb&@ zM|MhQQXBFRi>m$W+-D7LccplXK}M$~_6QPbf($ZV%_8!og8~ij%~NMI5dlJ7;bMV- z?K3-hoL){#3Q3c>t~w2f$rY`@oN1b|tjx)d)1I!ghaXdSZpq#7#xlPr7#{vW-O=~2 zd~nk_BB@kdzoXzJg^lKL^4M2TXdtIcLG7=&0_Wdu{Ea{)1976;VAjORu3YXw@08a_ zKH3BLI~>%p&lvn*)|ydux#4x&dW9v?$y!XvngMI@hxL2D@YAyR)K~M$B>RSq%ZJJj z29(gKiL+;!jC#~b(ZW4~#cmQ{S)Z--G(+O`g$1kc{w~OE1;rLW1pWvC7mD-iP0}}$ zw>szM>RwQgmW*e57t48mw?AD13$OC@+bU@7sEwKzi_%y)oynq2&)L=wx7v?>+Df8L{Z6s#VJ=8M!5uT4@HJn$?v1hKj{p>rt zWKvDAZF4g;=aW%uUl=D;Hq{pqno^-mXK&1Emo~r(D{5C%+)P-%Wr-|1pu2MDfML}| z`JNKd=X$X}(mgyowLB7n#r;#R&1uZ)E0ma{4pLNYAAh_Y>)sTIGsa$@njN(D~lQnQh~}DBA2W!gU-c-?|`%FV+N8wA%|adDXJD*ST}vk(YMx`IHN0b zHx=t*TYm_wr2gG*RXE*+hge{?<_pr)&$!nuuAEipGZ6Y(n8}mtHM75N z-epjWDEe`EQTF0$C067C3s+Ur(2$Q@8AgJ*ayakKhFCvKPaDq{|2Q-Co>Dwgj@sbw zxEEvc5Pf9?XlJ-{9-jNhrZKP{o@RGyKRYr7rPny!&~gg6)TQdYO)tJ5{lyC}@%az( zx!0#Fse)-o{XG`)6fOGzR{H?luj_WU=l4FEkSmNohLA6*#ak%q*caoO>uRsxBZB>8 zj=C;7bQGy>F@%(ET70_U%nsgT>EA;-duZeEV@25)VEebypDM&)q!FBz zCXb|HjF3%q(7f*mX(C;1(Mi02=M%DUfa|;ABaT468{muezc0Y%(F4PtdgBv$OftP5IM5Uwuoz_kvY!(Y$NqiRNg8bhMGqHFu|L+mTELA6~gr z7mcv(s7HrJZDppd)_czS?-lkkMeg&a6eRbToU6CWskndjVRG9poi>ixb(=Ez58&S| zn;*V80@#>$ZJ6rwN%sEhI;sqHLkm1w=y;fM9zisfG#I`%AEea+mdR*MnUnkxo8`_% zQ+uONa*un_9Z4&DCZ@%no(698j}OX<_JYc6GV@X4S@M9&89;6J7zybU*vqKU6!D;9$NbT zo1pIWE!dv1e;X3}{go%><}D5!IP`a=n~PgQ$Ykt1+$uqLfZm#FP45i>7yxnUZ33QEnKP}4hfam7O{lUI*gW@ZWwHul54TO-( zu$ko^vjO`N0o9ZgW3z1qx6DyP*t;)rV_n7Y$VggW6fa=Q{H#{CNoqAQ?=@Af#NoY9 zL`*6<*_dindsbTkpn4LMQ}^ArieRMgIN974t0-2j43A3m^Jd3Yf_|VRTq{nk&-@K! z`Aq9q{k`O%9ekG!2)UmAmW>sRLET8v*T(+UAS@(?06`93 zS#U|^DD!#En(YDZ-v>?ccM!WH|6a7D21T)Ki1(jOk=a!c;p0IINQgggVdxRQxt*=M zZSH27zm&mwud+Aoz`duVhj(6ua%Rw9ltt-uO30} zZRWBb|9bK5n+9N`XK&SP40t|!UQU5ljM~<$pZ8G7ZGV4I>$z+L$*fS^+R07%&=q-l z$C&|z1@tg}nC3Vdes}XK#-dU5I*lgPuDqKwcH49b#6I*$vj*sexI6 z_Z>)_(GSQXW-vKFRZJ88(xzOoMo(g=AWTzWIq3zEV zu+;`XB}FD`rmgx2)woGhMM8Xcal-BpmbtMSJ`jy1GL*~QdJD&=yv{uZRujsyE4h4} zOwIAMf)r#n->C!YzTL(jm6#~=y;>UG|ePGJS3?;!s>*u{n821WJc5(xy2-2V5L<@DU)e?U5L zewNRf7)hPn*bO|C0#;&}sn>mss7w2<1Z0yOoDwA14GvXPucFd%tt<5P{4VCDq+7Gp zJ>SCvVlNX>d1}L%oV*0$YX?EVN}n2LEV70PvI^3LUQcR#mGTgx7>o;ocd#+-koxeY zoH3~mb+Z5Ppbv7&Nbp#X;$y@R+yeay8wW>@YNCjld9MX<%iDURDKZfxr!&bggQcEN z8Bnbm3uvb@fa^pOxj~Y!*lp731L`tJ(T6_Df`jncldHM|@bssnVkq$LegUOzcpwUy z_$96fuW{gOHmMu)-o=nk<}%<U$n98A3`;$#scbM4=950!1uZaY0@qc8x&MKrm zA4J#6Dq`}oFq0=}E`S5K#Osif0(nacd4r&}zllP+pq-#e!8DMaf-q{AAgOK;4_*Sc zY6LE@q`0YH6a+-b!V>&`8F?Pxc6Yq`p6Gb8bq*=I1VUf3-xid9rOPbr&Jj2&EQ%CK zjK~Si0ie$=iuBo0SwK-+# zt)X=|1RT0CO*qL8*%S>GCWZFGGNu1`9{ubM&^THkkp8}VFM8=+ZUHn+>RRr`PW&AT zc_)`i?ujv`MQYRlM;Sn!byRPaKts_;-`#(TCMDd63!fQS>P`_fLxGU%z&sO422;EC z0Zj6Qk!pP%3;9DWv(Y{#TVi{!GaUiXUFz9o2d?t*s6ryw6Tv)f(nbxD{;p&nB;=T_ z(SGcFBGqjoR=`DO^GxYMopW@GUyc<>A##H<;IjJM=CfC+_tI%rWInhkNN!+?d|AIyOj2O-FSP}U4{d`CW-()4smn-loN#(&XnvpbNR2IhC4w8Jsb)S8V=!CZKo zHlFUo<(FvgxzoO+H_FV#g=aC)%DL~TQB@w?J(pe{H=HRLZ-kxNC6WyD5Hv+6EsN^z{7l{tsqc2?}v?BE4 zCXX?UCe!PV7saujyfl$G!bz=5nZ>2u+*=DEqJ~?3M+TYX1Gik-2ZOr#aIa#hwEPHW zD-W1+VMQ8-KTM_M3mX=}V7@8&;&f6=6S~L)II8b>^iXF)xCBx@7VSM2NfRZ2S$pU+ zFJ=f9fdP-^u-It0ZMSdpynK&6g4Jl)#ZjRJBXZob_j3+vUDSn3KaAk$gHXv+bz+q) zpGN@S)^3w+{Q}-4J_Xgna-hoxM{8aB=-IDHK zlWxS2$b}y$ey=4WGghr394r|KQ1R= z&ow>CF7G3I%pDR8fzky*L~Ga@D7!PwWFaP@>DWnjM_uuj5?M`L_GiYTlmpzbt4Xd~ z)&DF3!Jqt|gyE!Q{|BHA;Ru4Qtcnje0wvm-$;#^|h@@vQ5<&d6NmX?V*=-f+Oc|3R zwA$ES#7Z4XOw@isi8NuH8b~du99jYZG>e7s?iejCCjm!_;6Q^~fxF z>_E6~rTHsNJIyS@)PkwhvEeRCrNbKUkt-OWI7s);{W>;(W>m{?jJ z&*T;q7cmg70&lxeuo}n!(^X784()S1|M=@Wvhv@!O^tYw#u^9U#q(!O7%i(~rTYNY z&BH=&s5LZP_)7`I`kqdl1#nRRH>`;rzMth}>gb#k^X@?VJqXRg zZT}^3?O=UM2MwqUmWw!Is}0grk5;tXg&U&?{1^Wk>XtM^`x7nx~P1LCjn>GVx zjv~O??&nVi{dnv|Sm_e=`CTySvKv045*48vASp<5k`2MgKyS_wcuKBw`DQE~if>Ut zwZE5%3Bls^Hq3Ap>~RL2UeCx%z8g_ys?md5W&^-qmzN3vRN}-JH8aZkx1%ms!+j5RA#p#>CYzUl*W$wuG3fDM6ydD_cGtc z84k@n?g*oKdlb9ip_QR$y>^s7P+=2>10St~KWF2mL)kRj&0hh^{3YFH3VyxFK(KvbR<|aP-PtpI#>eRR=62q*7nM}*7d1=@ zcrIBFJ@-GTUt}s_E;+l zNrAv0wQh5?#(HQ%n!?rEW)6A;T>1;EaGQpo8Fk{GJi=YKq%&il6&VO8Kl&^62wv|Q zH0K`9MZMV+$Fh5868+HrCF7|%7z$Q)S|-smxfvP49?DK7+1Qx( zRK<4^aq5&1K1uUjrMvHw(X}t}c7_YFf2e|(!!=6HU8fPh%6|tMAD(6&5*m~ZyRFx# zz@(^s$jg3G^gHh}W6rXLr+C6QyfA2jHjH5YZt8j`zPg@a?2syxhI#`Th*E49?)e>q zZ#d;Nfljv>W~CyZcY>wR*De@6sO!6PCm>z@O&tvgDVLGA|Ee|q94nJ#w7Nx)Ot6J{ zdYp;+vuOK5yXwj-j@_OPGd6}WTtj*wlb+w8b?Y#q;Lkib(sOujdRd^c_n7x(-@l$@ zw9);J*ZP-I44XON3l252At}U9IoF;P-{&b64)zQ?i3{d>Q#>+p3lmhK+#^(qkk)q8 z$98k0nd)Xz(@kaK0%o80h8m; z(OKq$sOYviHMM+VzivoCgh0?Ixdy--&JdM3rB5 z5Rh9ZmF&wZJFzEb*lST4nleF4mb>xq{v68wgC%EPYdd{OC>gn4Jbv9bmE-2#5XEqT z`lGM7t$xN<;oI{qIE1DNXi2L4i|jP5&}PzljLcUGr9(|0kYd$GR~f(x6Pt zomZw;-1nG97Q4MyYIW&AxJXCv``5P~_iLS`B{V{U+-~&FWT-t9Fc++U5I{YT=)A@O zHm&Vf$oVLmJ=eV1)_J)#)bpG&Wp({OAS&E1T~K)~se~$`;@29qu=l8YPSCOFiu@(;&;|HX(OAA4O_IWhNFEFw_cshc;Nz)DAvx8Iia+X!UM&+aZvxs{KG zYT~b$7&CbqVQ*at33Q5t)iBpzX#>28;R~GeGs)xu&p0FsZCzZ7+{>Z8}&o`11fBqBhphNwO<*fC8fGbVvC~I{wOh+m4 zxJ;W1Ja-&WeaUX#!SuBX^sqny*Yv5U5~rqK`B24Pw`9oQzFVP_1(^!4f2 zs*!dvV+uwbZ_ajv+k}x(@J7Y#aaw}C_o>@#`g=LfPy^ZCr{d%ZtDeE$U3F4y(E?vMN9cB?!VQ!82&6dHN6VXJRvtduQQonbqB2e*3s z`ay0^qV1W_IldpIGSc^q1eG+Q=}uvH7=;RtQDR$cLF(o?ql)9KP?UWhvDIjgB+?U_ zC5rz(crInqeOZ~%{YDN#cQ?ah4(m7|O7OPZO)V%BH&ql3WHk$d9`fV0HX47{h z{I&0#2HB0H)w4o-6pdOL%UZsc^f1-^Vch%jmrkDTndboax$ea^T5oRiDY?Gucs~5I zy{7`9b8q0scM&a~Bx|(M`#)!Qe!o4zk63Dz*Y@3u`(eBB%M_oTkySXjoNKP_lR_B| zt;c75C0wyLHD%hS!M;i5sv63h2Gi94-fO|>9nrO)b4_6L1NqVm^$hOLm9lc4Xmcd9 zr5Y*EQDVUUr-9Oq!O6my@`5~>XCu!wdwnB0qs2XAOx(AY`W-*ZoWNIJDiorVrm<)J z%Q2@AX%-6EgreCib&YvP!Xfm7~*NOZ*=2mg8tc+m1X*OGX)=9*f z7n5WqBFV58;{I$P%!Mz?vG(N&&T2_$NRJT}1%5$&##f|xAT$%*)}!qVfQZq{6g)Pw z#n8*duOwvo;f?SLqjrv_qL`TiMNH2AA$xlWTWIXJIP zs`2GS#cJ^SLfV9d-G0Q>KD;3MD^~+8eA|B5U2KAvA1~daWwN#i*+RQa-{Z6zev`$? zzdjQ>r(O4p?AgX31VUoFjedRR+Yn#EtW`9LGuNES8}s)tAUvlc{%=%=jS-wzog_sOO`{NPm7@Gvrm78 z7iuxk-uE?vkN)}47rys9-rPcqzI=9G1S;~5@@P!gJ!fkVYwCGhWIq8bC=t;2Nc!qT z8qt~Pwn7=dlXK}ybyb?r<2T7xtfXt>-$zUE0UB7xD9x+*c*kR$DzF{-kyJtHDy#Vo8z0U2l{{8vGuHp2ui_ZXC*; z;av2<3Uy?wdkW=zR^(vzuZIE=+RyD1b}8r4q#vRF`Bhi{-f(l{z4_>&y=GlFJw?HNF1WZr__V4iB+yOsIjJs!~q!Z1O>cL5Ta8G^FuaZYP zR^FrCMhz^h^B9pFiGyF)diTKWt2G-1lobkj(ul*{`5lmSM?G$g^lRFQMeJ z+C+HWosb?yV>Ps&NyXOqJ+)+vXFM7KRc>PG1G*ClA2t0ALfQx0sG4B=vItTVp{S=+ zt#McToOV`rCg42OK#*jcA+UylUxWbb?dTq>^vkA!zVon&8vqNFs_jR<)|mpa{9FZs zO8gkJNH-o>SP6ft5q|nGvmGyvI~dhD)Ue#Jm*VFm6HEw~|M`p6i`5xljq|Ae6#Jer<2A|AQUWOR%K^)V?=I_SX7LUhoy%^c|J9qr%<)*$D)P+3U6viPgR z>>>l*?S0VH=2`cIm{HT%PYMKUqCyc)AV1oxO)Zlhj!c$v7Uj8L6qK~0!=pc-!G)h_VJNNFD`a0dPTV4~T_2<&T?A8f}xEj7& zbN!%ZwikkoxXlahvV5EaIp%Cu{I$NMHw*E{B_NE%ldNW$RK1A+)p^6|6oz4+1p06vy-3Mfon$O4*#g`pSHeU`>gli92`^%Pk{)^zwEwr%_` zM3Y{NU&~`Q-t}RL>GY~dKf0!nDNpR!;3BT|gB{OsjEFyj@ON$;BncrRqUAYpZ~y@V z(Z}p1_-FW&|BKP;RBhPH%Z+Bf$m8Ha-kEHFg>1gATkc}lcQV-p_tK&l;hD}dYak{1 zMy2*es3`l95*Ynh7~uSA5^Le$cgB1s>sh)oj+2Ww#EZ(%V=~YPkV;-Q4XrbFWj*XP zv1O3nnT90;lAICdeu0kTbu&gR+ys@4rPev{OR}!t94E+I?M0?eYxs*#Y-QUEU03jP z;`wekFuZ5Ubb`x|b;6pM6rbnWOXh|`gO(bg@vhq|h6VgBq8;3o%Z6U0SHOr$+@KuK zEhI7CT!+nbS^~uZ_ZnZA+cg6dX7&nS9?PX;kO2m;347Kv&q&FjI`J1y z@JnYkxPQg!Ps6sPa^q56#d!2LRa2oS9uVNYHOWUVOnOykkeIQN0u2HiF*Iwz-~ z{qbINpaGIM>xX%=RCo_K3Xr>CFQu*eA%_c#EUfxIeWijv-FRaNABagd+xH84Mz)gr&*U6>3LGhz%NE=;2kw7A}ETjI%-6dx2;lK6?XD zjQcf760g&49G)|Ry?{Egv_gsAV#k}yOhUHoD(Ud-zW#8KJgsH9Ucx2Fb1+R1(=vZG zA8J_^G9CsN>5*<~P(RCY)L{weO+4?)fw53OuFPb<+2ED&x+p{&q+Cm#vqykE-;sTX zm%zld6qsKkI6MbdGntuJ2gP#lQtH5@u-Q>At+aSu!+r<6f1bC0gj6g?;I!Up^g#7l zn3O2$@Z-H^fTNz!uJ{4&)u8q2EcENK9TvwXyg85k1{g-3m2w1Cy}Emw**Iwlt`pMX zB%S{ihyniPE6HLVgGZ<(6QI%zXPxd?LIYQG^{;fczmY1(f`R3`du+ll?v9XLDsBGj zJtSXfN+HC%zD^QAL1iD6o@5JL-WS3jK|YFG8X{?c;?DeiRQu@&%@+$*2j zU>mg$uZ!ZTgxlvZ!b!(fU~T)|Gl7jr@cUtK1`X6yoHP`3C>BPb zH^6N&(Gzzijm&ap(57LzY)qHnmU4>i1}DEP48_%(nk^w!xBz81D9PlUhP7kbY$L~+ z;pavGkB2bIGcGPdD5VUDWrF*++?7dMiUnSsca~0M10N_4T1-6JzpU}x$2u-yTVaV) zN?@(`(aUgl7_+_5%0h-|n2Hgsl;0+~!S$kAOV~R=?G3x*(PF5GKj_MI=78(EZb__y z!$aUjiV0bHL{@xK?9~MVlad4bUKm)m_@W1CR%v|je**1H78ri1C2(`z|33hPL|snI zFFfWWWiVDuU>}x;1XkdTaquYc@BavZskHjNw9Tr;sK3edFd#{ zy#(3|syLJbV1--Y&28EvxC%%(3M2ow3*`7321}Y*%{aEN!H4U0ugC2V70K)2CKsJj60!4M_77aY_pc>XK>Qh=ULJJRLZ;tO6IyweCIao zs1iCo72~@?-N;)h{w8+C?UqF8xjnrIbY?_L)nCnWrUsoPjTk9=VOrl|kU6dtY0IiCAw`^oLl)VV zA8)W{QT*SY^%Y-W6V`OrZY28TdjD?jDAc@h8o&=5u&V6nF!C+rk_4{mD?7+X2@j<` zpQC`by_|17^5`6rvXOkJQLA~wq5(Qa)9i$!=3ow#``i0HOiR#ay?FkD!Neo^tE$nL z?5i5xCA`JnY4qNWL;^DJ55JPByJ;g~lyk9k`rYDgK0n@UaV45vMsHm7H=##z$2S_< zMDQvZuQrmXGuQT&F6H(ZU_`9=pO1vkVm(I!&7vL@MEZ5BRBlw~|A4IMjhk)CSS(%* zPmS=ZUznqAbZINy%{;+&Y&~W;xnHo*SMlfNuug^f{B3emItXYVLHY>irTyjTz>9Wc zBor1Of}N1Rvq2mJl{RFp%O!dzRL_%uhU0J6e7&5(;yU6)0wz$Ug$k^ z?x}Uxg<+uUG&LDO;?@}ZS zJY|!RG%aTc?i16d4(ImR@LD~;xD>&0`h9A}pSK~9CM}C+H2@#md%m& zQKG8o-KGrKw~h->%~N);{myS2v0oi-yOk?Qy9eCsq(^ltsL8T2rLRBxPxv|Eo9=M4)CyqUSsBC=fK=1>YNCbMQPp-OcZ0m+nCH48! z>o$9}%PKNMh-EG|P3L&amATkoJ8A*m#oLZj0o0U(k4X*USZsGpNb^&dJEgUWfA%g3 z`Vt$Jl@VVNZc>t1vk>l+L2)j>4g^*;>hBmv2VZder*ZeW#}}Vx0xwhB%bp6*KN#$~ zh94RhE!Un;tTmYG_$7WlJR8yY?#bV!lj6>agDvxE)0P5Fj1>c2o`m>R6v8-mxEoOO1c}$>ZC1vDyaAAxT#$6@jMyEg zH(MwXe75X%*qenqu~4yjE#=*(g+q^j)l`(QEF>b(C4a?nlLb~|x(6zZ9=V@T%%s0YYpeA9?u$$-GrhC>d}6Mu|G1VXlD0Jb53v<8bU*rn0kM?)pfaJW zGr{+)?z3A|DGuw3OM}I@Cr4OTTix3jd^5<(zlZGsmm!ArcVA2dVNcFh=a$qE1o`Re zRj#UdcqdUYfI4A&^IYZiLL*N5X2~D#;d}0FR>Sk;&z%=lAE7RPkJi(j z@r3nVN-z9dwl7+C_Cv!B*RB)89_MY_#P>g){c|DWZl0o{%#T2;g_6+ri+X3uOUZA9 zy(n=h4WhftqtB6kxxU&?(I83sZ`H=-2k#|GJ$^=pCWL^Wn~2=b=JxWEy@i8EbKrLU zPcQnT2&19fSINg~Kf+X&_!6qHt8@a}N`hS;lik9Wmd1+*Px_aBhvtvJzO0YEcI67p zRqH+`Th{s9^-q`54eKIVV?+gi3+AfyZ-qipnPpwYg!&EhJeFNGxyUSdkc-?ofUo# zzi^!x<$@$$dvsR(RRK+Rcw|TQvH}Lpd~Vvn*>5k@)zyTLG8x{`#h#`5Z}FEr>qRZ? zGk0WM4NiDRg+Y*h2~ox&hE(c`?*hK_~)q=tBD%DvBt6aL_#Pa^D;@x6|Buo`1P zj%n5;%~YQ&fuOA0Ds#wvr~ha7wo^dNVouZ5Cz-9f!fgzZN{Ll}#LUo#0oA+nm`kIb zP;a+`*A~1=RCm21Lvj7s7*N1bm3G;mXZP;7alE0^df0_*!@-zjl1a=q-8}O8wBcm#!W!=X|oN zEUmg7`SaLYHbVj7zE@iu=uH*dEK^DmZN4YWKiug+LOJ;GO=GM>**X3Sb2iN6`JXQ6 zy43UP#f?vVM(hbA-`!`eQ8T1SbP%PV=~pzzm%k|nZe8o^x=g-t};xD;+N| z9ieY9SdU)M7r$6FXO@eLJ3g%u6lZY8IuSo+tUVT4K1K##j6_HsjWOyAd|U3MdU1%n7^CCuL~V$u(K-> zk**pf4e%5@zVRvGcJI{ZU-AzptskHEnM@fAQln0ywbgx3s)lxG-9IX+xpMMFDAN-> z!>v0``c$l}e#&~96M;_QK%qXbQkL%eX{JvnQBK|P?%%);TDGXn-{MP#5G(4+r#(mzPX2+4Vr3NwYI_QAt>iZGxmBKJ_Qs^7km)18Y5K z)Nom%j$DZDme%OODV?$J+58LFNe@JuU!6e+q!Nbe#qy=;&^d}+e|4(qOY2h2>VK@Y zXOro5{7>Y+RNv?=8dMTtN)T{!H#GG}FFY|`H-yWr=E_Wl;zOI%Y0o8h<3rxxw#6K! z1>|-4_;}Q?I9vR%jYNyfAbns$!_P5|mNQ>pU~Wy_RSnIed3VXDy$og!=v{rNz^M8vEAB-@?Lj$GmJ@NbL^nc(M_+3 ztq9CVEFO^EWhq-rwi8CuIGw^;LC9 zBbnWSovyfSdcI4mWVUuWX8OufA%hl8Ie+8i_0_HZJ1MofCJUO|^^4K`b*ira0X`j= z$Og5BnYWvY{WBsP;uk0mE>=@S(aG<7;!qZ8H~qLwXP5f6$&J~k#d~Y_cb-mjr6Ap; zM1D~6!T&)PnB$3fiFDRhx>!w!>?U{Xh@xAiFs-A1J;=gd=8P!EWQp*3Qg;5tk|CMr z%!ryDl#iBWhn4!1%F#*n(z4zqtn8Z4Gi!7vKD#-DnekKG+&-N5vsb@%VZ(4e!he(T zMdsUOf^Q2nU^1yY$a(yWF(Am6>PQI`pNYN9sz9|(K;_e|yP)Tb+*5;mW& zeJ$r%CbHG<(`PQdV>u}6UR-v!Y178G?j<02uiDc~SVFY(FMZI=y8ZI1B(tm?jy3FJ zSm4Fns0U-t>6H7cGt-N#8V7yjI>k99e@{X$RPK{uq5Z(=qzzV?Gd~>X7Bx5k*2eXA z)*f|As#qm-E4!a9dDKs_g^en;KIwOK?q1~CF;IghNnj=sGE73tY*TK%ed@$~rPFM} zaCdtFQ^qdr$KR%263jjBgK2GDy4^NX7Msrjm7ssoZ9BYX#5t8*PfY)!wlGjpx0!D* z_>TT5mAGG_otfPa3+eR@uhn5JfLzr>0r6M)iGL;5mG;2Q&R!?D@-Lq*s2JS;4>0K` ztWSOn&ZmIf29S?^>XNe>GYg$js0w^i{!qD+k@gmFpMEH>j^ue=q6(ZGJt#dy+B>gN zK@w?{WgbK1rQ;N6npXs9FLGW-qa)iWdh$oF}MAAG9Y3aYwyql!Hci?fT4u;F9GQ5oQ4AMYa1!K*0aV z@my<94BX#1z5$^0gVUX$Z46`&)ZEr6$64ObM7ve<2{9Z?MjGLOzD_SS`jL~TADK7pD~1%aM4lz4nDpmrrC3){7 zZZ!l5MgcVA-(bY@6DX$$Qd}@#ORbGLR2*vz+_xCNtc=4cfw?gT{!{TU{mP^ZK#n0_ zC-RYD6=6SPDtYXys3xJc8~PBHlIT!-&ldHt3^0MMOXMs9Wu$PPBH3EP)AhGm{P zkfmJ`JpAf%Pfil0riWm46aU6Mn)yNK&ce_$Xn+CdujfArY-&qy0UTLLsiRGp*#`=Z zy*R>rqw_<61Wsdv!~jjLe1NUM@HCkI#Pag9xJKX&^R#J#z#Frcvu(O*z0-GgvFb;wBF3U)zPdt6PvKUv=k50O9GzFAn6L~A!D0BOK@Phf&UV? zOTyZsFDVTNq134Doh*Rat=VgxQv0I@91xW|C4=F27^tH}=EuDYK$3Ph!KkeVYS1g_ z3!Ad_+5>?$(4WhI?3s-O;+hFt&QMf^_vlU~;_!)%?=-WL@K9jJ45{ivCAac}!xj{C zp!4Bd>v?FK{MdsQEL5fdEZy3xPVJziSzQ6`*WV<>BWm{r!olr`hCC=D4}yUEOAUik z0>aHl?b+mP1jwJ|0(0lv(Y<#?lJXhgkP;j~85c+!C{;&{@(ld1)5&cgC)>?~*ykJk z<)-6MWCW9tkswjV@Be%TjozH)lmxdsGUg02)mWs9r3m;+6lkLaI^1rybh5TChEc8o z^0Crh=Z|_q?bJg;3ira1?uyM;6jK$dXx)B4Apj*4n9i~S@+NHRH6vF@k;5QTUa7&c zUfweiq=B4!6jxEP$|&;eI$6xdQ8E&+sd=m&2V8lQ;ZU8yjJ1Y}#eW;Wx9 zmc|HzrS2o`I96Ebs{n#`d-^1jpq{=74(GC7u<5qW8wB+bZW%s2Ul!4|KvDt&Nb`(y zrRhpPdm!yhDgzbvE|3Nsn+$4eURw;rnqAHULo{MUDwoO+r_Myb^|h_%$Fc#$Rq zQV=rPexMHb>L8?o@pua4c)hRJ$W*}4GIzF`0qn*@^Y$;yL~n5L#)cohX(JHXW;p<& zp)%Gx5|WI~e>(8zAD zxqeR_9uXba_4^SpGxWy7k`8pay%@?F8QCAI>5$6ZAm3T9&^HHGk-r$Rp5P;&o)I+& z*peEH*Ae{cdAbN6>dp;l<9yG@WyOb53-ViC@db3B4AHoT}hjBWa6Ofj|*fBWY(zqlLZjw}8b|r322u`ZVFx2Z#t_ zk$Fj2G-zY!8R6A>>{oz&-iuZNvMW;APxN1?IXXE!{3j8DaCEsPv2|S2!;~RUww6u? z$^-pY#=)hMe2x$4Ga4o1qH38e2ut!6w>A_b-V)px@O>zeFfff?8$JxbR{ua;*0B<% zMi1NChy{GFKCZ%D_iR1*v5W2kE)3<5)|3lCdmqlaph4;nh zdI@I?5-*b7+BP+L@&ZAZwSkW zgynw*Af>ZSaNo@?E;gN;k~_Q@$rp=gtydD_=iAm-bKo((gcE8z4^kt`LdMd2$n1PK zg)fkCY^nfn>_2(sNrAro$zPMuu$N>-7&8|<#Pbh9jQ!>iR*zlN39NMFjqX_{VkNe; z1~;=H;!34gaV0aE^E|~l%&E))`b6&B7#(yNRY(WUk)8)jQN*DR&p`y72wjb0)I-D1 zfU$Br9QS!YY=17C*O4FYN5Cnfw&wkHTVrPNU_0+kWPh2{&MWhzi; z-y8DvhHZlLF2EfBcPMa1rtS{lZfJ1j5>09~r;Ih`JU`_w!4I#qIF=3yM%RU+-+l5d zMa-wC^NklhmK+RPTo0Z;o<)DvU7+mIrf$?KD3r6UCYk2A9&Ts1 zqOKbL(}B2aG4LU)=Opp50NEgO)vI-q0Mp^Q-}2H$^1VU5nNoPSXT9CCg98qQZPpim zCm&2Jc#(4`01f-4Ait~sme6frRI-IfLJZ+eHQl^lxg*di=C|A;W!^S}T4>D;@fM91 z(z-pI*w(GPB@9sdZD0XK?N|7#tC&fndsJhVc8+0)lQ5SOInWv0&Q0vIe==Dxo73(u z@xTzZ**eGg`Lhj zL_e);G{5DU8*Peg82Rt56!&EoWgSa62Aq<0~YM@&zv z2ZTC&l#j-~c4?)D)>&Tr1Z_cn$UEsm^P*Pt{fU?4zHQaoo$qPN-T*|7i>~Pf&O*AU z64LNw1GPDt^cK=PcN*$I|3ENkOqL&2qbEN8+^{2POg~-X79&@`(Yo{gsPT27Fm(E~ ziGptEGk)+Cc}MGk!+iT}PAjnY^g;NR1S0Bf8cZ7cnpFz`#&Mg&2 z>Pz_ru#qD~vJfz-d{b>6W1~}IQ51bnCXS-f%$d3Rt?dtW;B;cRfw@R<2FSM!33BZF zjQlwzExbP5ApvQa_gsdFcfVUM6ROV0{tqagPW#6>%5%Rz@Atj3pr_B5B#S-LFEofb zwtxH$?>z~He8rmErWQ&ktW3TdsY(m<)e7H@Ut5@{Xk>3L`c}YsWPD~s^#FO}bYh^9 zpIj65$MoTOHH%ljmmEKyjLp8bKDN?&II_F3=Apk^^-tu6qv5aIzNom8Z~R!fn#4kf zMv36evqom@np<=C$ocJ`t2TB!^}bw^{^YL|rsDLbK_-c$Bg*q-;-+KLgDanQnbV8( zyc@Q_vz$e-tGcX3$2aj9cEa6x}k zJF24eP-6GsUwqV8wtv44Z-eaBBW}!3d7^e;q$ZTm=#DccTHo^+v$(0A-SAWUqoZ?l z&~>Yj=Xb2}hw`yg`p$(63X1NtStKy4@F~~_d;fwd&-RD!8UJLcJRHFn zi+!ETT%?j=qZkjQMzL+et8fD>^5z4JI2jeLY11EaYW|yj)3m;Y8>h#(FOU7{$th1b zZOC81cmfDc?n4HogeHx%-4_o|S!D~pzjNcnpS7#_%RM3iLq^h`JsGY28)Yv2j$dUl zxoJT$DJU3MlVrEjh*MaU#k(E&tv^u)6?X&P>v9onF^#hAj4JLP_+Wj$rz~cc)?GJz zPm8uDP%m5QV(od0Gs1YpF!3%-!h37`3l=z{&Ifz&k6Op%&xaTu82A_Liqqqtd!(3E z1b(aR`$QAIRi$zF@w_j!lJu`iv1Ix~h8xyT{o`V>MTlKSK-Gcvlkf2_LwR@a-~TgY zw31tFBb-j|PEd+P34--1Z?n*EYOj(F63VgXtQvm$Xnz#z`SbFzZx@&B50}mlm>D!& z-H9P1)HyY>l`SMYSaFmAZ+@Xn%TQL1gi(}7ziRkgLjFtqG3DG7+l;)tk#+8%YZ!b9 z*-~^>kFt=}<(98atCLMW%evyK8-zCRoc&} z5WiF85+jrF?n3%6_KNeyZ$>NJIkvY@(pwFAZ49HW-XMnp9HOl-R)yB`Xu7%anV5_D96iEH)aN0GTAX>Prl4#D zc#?u->3!2zWv}Bil{ver&)myo)#1d|d2a%tu%UOqV;-esLhTT?Nf1o>G8djT)N+I= zMEl)I(O!9$s%K@tVBH(l(&eFM>as0LG(nf1qL)10XZW#h->t07+Q9{FBMEz-{kLt~ z>LXuFUL<%tbV-lDP##5IZ6BmVeiFU6RJCU09g319`sMAvMJqkUiP?bbvBlY55Q_FJ$XNAcXVr(SZk{Qf}`gs8hePYka2=k8CSq6C-S zj7v$md6hx4Yzfa?h@d@5|DsOA#yUfd@%G{atIua2&Ak+HScWOG$PgWcQJXE;LhU=Q zXU;wuev(_R8HcQ9cg792Zn-+SOAUl$vh$KXN~LZKoz=3ks7S7huAjlR4O6@<3x9R} zew$*^F-1F_yxw9}x+askhnb7LW-w3^!?>Y<_GrA*9X(&6G#_ZY9S)gPP5Am{42j&- zdMB5;B;8h&t!@!HAA0Bbr`TzAp61W@8?N-KKK(e@8X?ob?ddZ0I#IEB9g8g$T!eip3HvjUUn==J<8do z0V&$YN#d76UK;*qwOlFPFkT-}yi$B~w*u^lx8spoqL9|<`M)x32CnKQyck5cKW8wvPBqda zH{57CMxsxK^&WqYr+N_U#Djg-U`>HdCx+s>qGPsWVmW2gI`mKR6Iv}-N+C(z=X;|r z2|2}+ni+C8ldStnHVVfCrDPGV&cZWw$gK}*Wf#7UbU3KaB-cD6wTnNn1TPWPc{Ubwm`cDiFORL0C%DkQ!M2AJg3v(GVjmmNaCWNMG2W(G_)z|ZDPSeY)b(|T887|0i;OBGmx zLq^9UZPQovaYhN(WheQ82XjkCtOc#ixB!nY6McdZDK*rH=^v!qW+qVJk|v>Oi(J>C zngqQCo|FU&8;zu|wMqo-_texU=#|1WS=!7%BK@)8B2>$Vju%e{VE-OVAOLH|-0nUj z7tqo%YSiMOz*TmSZg4RxFG{<~5ZC%P1c9Cg-60qt?vYmYzt#VsE6e@zl=1lf&8%Xf z9XAp6D`EQj5bG&z<%IC+A|-0*W)EKqi%oJ%U^3nQ2sUTLVr?%-Hl0RN)b@YjScp-Y zNhwoaedB*#0$-JGO72RC=I=j>H)HGWm-9;Zq#XAH#C*wcj?uL~FiaH^Tn^QTwEpkR z8!OLrLL|B&sqz@u0&DXCW_<;LxHTgsmC=&Q`;~m#lr_+EAY;aO6d+d)mzdfdHfn!9 z32BNJSC08xzav(6^u%7#QRB#Hrbn!waE2|{>vy~^2~7pl@zv)aY#h-%TUp@(I5v-+ zSCL7377!}Iwxo@L*xG7Vl+pOg_tz>)jcOXwjMjPSIrO1D)Gil$e=P@!*UU<&h82pU z)y;sm%95EWvk^RIXH!s7P-B^ffNi0{ChaK&ro=LEJHwR&aA<|kAe|$EJjVqA zUVQLR)2$_vwz#DZlhbCaJ=^5|7TDRB#N*gCj3=E3z~A+hkgmwxDek@!@JBn_HVB3< zNo|^p3I^EBMOb;&(0w?Ew~nnOpsi+~bR9DW>cG^504?(jUg2J!^Bo-*1K z84oI1r3i6R8ZSNLS2JNr#p~=6PVhrNa4HaaLe14(CUX<4hq8F3pvIKK=P1uObd0)> z?F8WYYqUC5pkM!DdlMY*Ik%M2{t{Sbjw-Eyg|~@k2m&NW6ZOKq)&{85JX%{$lwfGf z%gT|V+a3C&pKw#!DRQT@Vt5}E4l3u&$lwrr@$2YWh|>jRcn@IXMal7|{fViq7yJ6^I94r2wrxQs3=#r2Zw{e<>dI=2G`wtU_&)&W%f}$dp7FD`}WYms^U%2OrNWkAv?OY(j zx2=7BH)RG6|Mz$L8o;$~+3{qxE`UiZ{%UwQQi16J966;Spa{v*$OU~!xG8TS(#d<@ z3|MAFLtSQ|YFUJE0s#2W8_n|60-EkVKi4r-z&;dQjpAKCzI(YoUw9_oT^4dmhHai5 zg+}w>d3p&5gnX!NzC-~-)49T3mdT>CDX%lbG&3}07DBpy?Hjxqd@AjSB^k`Jzyr_8 z<58mVo=f0mSXZtnL3_n-ymf^kWhb4Mp<4N$B_w4yoPqR=+Felb0ejDaXFH=Kj0V8r zjpUn~Ee2lkreUY9Kz=Hplw%*!rP?xj38(JD5PM$fgutC<;9?tMw5(Xur`u~Gep(ig zMMlYM*=2?BfSwPzqE6)q8$8w=6yusGyE7L~uBt;#Sfe%AG$WKM5Hmw$j*|E^4_BOa z0*Fz$pXRH}f$9!9+6UjLHa}+oB3V~_M*5dMGArSg0%FSnoT9kwrB*xf`zC;cuS{5s zvNPF>pj`xZ;2~lsWF$=k7--M&w?OJM8MS&DwH>N>vf`;M&uA$>G)OQ%8wW(Ib(9Pf zSXHQ-TZKB9$YP<^TT=NzsP`hYU%A+9xRji~ykWu`T=1dEJ~Et=zBLmIs{IyY+R<9N zAclP==}$CMD^xCXp}s@*$8>jk^&;u47Q}tS@vnY z$z&C;{+TSXq*EJOiI!zDEjAWMUXhK@01E&c{ zQPZjV@xjl437STO%g#Oh;=r#j$gG z%S;zrjT`_@BDkvvIlYYJRT|kx1|C@ISWDq-AwAJFY>}b45xZzA1R>)hirL8`L`DCx z068~QQNtM>9&VYD`}gNsGnt3KeKlKZW6(t=6 zGU#vVbLBWQ69Q&KFnRA%-(tN&QO&)m8=o3?ttcbnpWXAl*bS2t-+z*5CeBPV6FrHW zTFJ&u%U6Y7eR6N4_>r>Fiaf@4CJJ}B_+AojgEM041MsQxvCdrRYm@u)sebxJi6n~W zJggR*8Ay8Qo#bL515F4YsG4^vz6Y1_Th49$S@@tYYc|Myvi{!J%eL=wBGW-RIP_4q z!VFoI|Ajklf`kjL@!igpml7zK=prDJc6Zbk!_*Nr0S{eT6E3GLBsHvr55K)s{0TG; z*W2Sork3VtwmtR1(O2&gxGQIviSfZ<#v%?<{MgV5rS5wC~A+tRIHa+6g5aqS?^&HBw!7oUi_d6h@er>7O2K zl|%tWTd44qdo8pvXMco7@sqS${rU#Y1{b>fyFvRXx)y=Nt?ZixpU(5=Lky+B zat4hc^Q8>SxuKN!t4!}@53*7t zsVKlVJDHudci6RT<^g;SA3)Rc&J7pbwsFGqV%kZj6C}3%{e4diON4BaUq`YArUh>h z#OMVkx<zjl1uNxiyj2f1i)o!I8)3#` zgygo)7ZP0c5mv0Tc$L=uw?$9qo7?5e9;6y|ba43~9qW4EJ}r0~!f~M4_WY&jx{YIg zp=ikS+@M-$UM_*-Q=FK=NMxC#G&qdgpZ_*1F+9b%SPNm^WOg12Gq%27@GOCeovR)H z$tHc$$s6@At-?Hia4Q~iXuo!)afQP_qjBtH%JsYPyq}my^(HkT|Bs_H4TP$3+xQuS zv5cLJ>`~Ta3uBwXV@ugZrHm*PVn$>igp$TCY7DZavXv|eBQdrRp6u%kW68c{{lDjV zKl9-@i*xSlzOLV;2^$|*Rq&Y{3M}=v{dY&R=vj_zm&)Lq9o_t~8xoJd>AQ8FR*g$% zt}L7HbY8x#*rPqkQd(X3tPbthJ)AQ3@~L#9y#P`gtBSM(gOT}_l{&{vbeGQ<ZXL6*dXI|VN zGkwt{w0vg!!S&^^j;XPk8FOK=tM`U8q!d!MF~9kju;wj|Lenm1Hu-;_V;hKZ2|7j| zf-u@#=I)sjh4$C&A08GjeJ!eX)EJz+lKkP|MY4Y2d^(Mrm4d9$u&4LV3WSQ=o!tpf ze`x7-A;Ki$_s#N{k74(Q9$Rru-&_s}$kcc#@RRsKzTs&rgZ<2>O8U6Kvg@Gzu&TbM z7E%6gk+$#B_?EsegUJY?o6xM>*|{rKjFO+~+3Fj%8i{PZdFIUqc=_90O~)SJwsZ}` z(%{Bk_}&-9NS!cPRCB z_?a2q_4!*^6TqqE+*g0xUVyz|KApC4*sJ~Ixi{FmCbe^7*B!GDs6OfyBof|a1$0zM z>f}D;&y4-02(e&R<()N(sl)8b5L6Cq4L|cY$S>$WJg_Y-l=D_w1XVylg#mqdyW-ZR2&yT?AGKLJUAuha zr1sb#wCo{?<*!W{a9OpW1gs9HmBV*5U{bid(g;p2%Gg` zzq&z*-D&1n+W1p5ST%xNsrp&F@fTe);t#^yTrd15~=z0vWtvmU-?!02>FKa}Rki2D<>;GT{4INd6S18Z3;nO=?OV4l^lMA zP7OMiNN zl$GrCzVg6{Cu%8WxA5%QGe@r9YG0ddLraAZ-Kp~;ek^;dKhF%br$74nWJf#b)~#x% zNZh$+-(!UsYi&9f^@;nJ&v-5dM)E4hMKM*W-3lw7;hNOK3^km|P4} zxVrgMx{ z1#*vYO&ZA^%vgj%g|#U{k0AeIFmG`tSmVIR-EYb|RPeA4lOqOo14#Dxkd zj7O~8DGdL6Nj>bPxvsv-mtVQ|r<3A*yB3eQ{sztNCE;qu9iJ@+5fY8MxpgovH~&@3 zq?bYm>MN_uf=T7UFMLcAMpsTv7ZmxbRTY1|GBpI`i1dm(EP5-S77to?-|Q*>{q_FI zzG=gTOv0m|Q=bbV7Yn+AtS*-#6zZGyGyS-bEdnhsN*)D^+oa9qn0>VidI;jO@ZpW} z)9C!;PcPJF?L3{SZ*v+o4u^%e^vWHo{x%=E{PnQ^6`}b+a~SunYPr8P^r6DqEE}Ur z@?>(UNI=Cc&UFww9q1z{V*h42tQ<;FOm%@$DfXr07RgIC!|@XDanXUqK1FNE zA)*y^`+vaQzUQy*$Zm*`gofO3;j_gSPwvUHH8wDNwxX=Pd&lp4NIt1qd`r@ctX-Ab90tX;b_w6R7w)vp2>MvO8BQMKt`U$jv6X zEep`n+T8<#*9eo1QATeaKjh3#A^C`FhO+8K<%-+8=@Ikz;gc`7Ij3fWF1JKh-x{xi zq-roSyjSfi6bWFi`VgNuc}S{Z*DN)b$2ul0hE>h!wExyMfB(QoVS@e5X!#kF+3cGp z7&GKDhxaR^p8ptBK`L3Q$0HNtwUD8E9THU0GojR%o=M9E zLE@l*_JJ)Q@kDafnUFxeSJHyaO z8AF&5-`BUu4R0Ll3 zMTh49SA-@afMh4af$*dMggnTo{ObJ99eTb@IY{CYa7;GWg^Txr)Lpyi-pFUk5E?uQ zoInX0j37K?yIp1Iupe*DKr{=fy*iT{2_Bbdz0>>?iIhHT?Vvp7R7&6zx@TV)C_d26 zfRHmitJ+35>}0diKnD-DQYIK+#B@>KJpG_bQdp`8`e|fH%~tJ6Xn+M0xIL2VautlN zyM6I1@z+C@@B>>6P;ekjh1F5E@__U-SLe4$-$MP3ARoKTS>x6K(M1O1>6{+~=E2@b zF+C96Jg5J3mqy>+R|oQ3`DGU^+(C9udH`4i3Yc|BpD+Ome4pu1q)0%=aY#SogOVPZ zJeYh4-|DG4P&7I%Q{$(-fM>8@ZD)qLtRw&t?#Uu}v`A9q&C8HF2XR$Wo7KD1YA0sA zjR~`#3HHeXo~0A3+M2TeWKk!iAHtJ_>|ny>Of}`cx(QMW1ldYpy1Z&Ft8HiMnA!7; zzmu}1n*Tckem~M)Hc!$~rv+%jwk45@n+sve4`pl$cqRd zyQTgTNc_VVlCne@+$>~R_r+%-p;A>lecr#`ab+a$&X7P=U(XXG1YlLccEVsiuS$ed ztQu8DFC4kLdgTNiQqmie40Qg1yd|r|XmP3{sp7BnqwykAKJ~!y2z6LA_6(%H)lFOu z*{jkQ*@YL~GHKYb607h1&#A}#&RbFf(knPP2!ep}1My_uRw7+$$r!KP^)t0GVsTMt z0gou#+U}3ZXh&TN0UV5JoGeff5CEP_O5lu%peXJ?%oARUr`+7y%o_u03rzPUu6x1c zEkZq3+TcK{kvHufIOJ#U<^eIZ1MKW)yjAnT9N{%S-_K#l)qwUGY(AxX%HvWxcKLz# z7ALE9uKn8}N2S-)Sq{OTMg(*2`S`@9JDOEvoPH+3`ssRr^w`tXC%T7j194C%>|3LG zYDHv`SROLM_2oy9XupDnBdm=G{2qEEbkM1*3zKwswo7xT{kN=R3G+yVi zJ_tvC-(B~9qpTf5S^E7NViwTO2RgljDf4DPu(2?kVXDd^XYfxzM$w3gTG55uSplmA zamj`ow_qYX|81+7D|&wZi(bPWfKVYZbqs<*zg`^xKGZc}(#ZNTbzq$-5{^XBb{N5{ z_9;2vX=f3#tOp(=e`O#G4sSql0h=!Y_^rS-!Hc<%dgJ{>)9NyW7)i+EC&i3dkxT%- z;V5zn8%TrLS9@OBl}Y9@0=c?M3<^F6brDu{kh&*db#;}7BYpcHkY+-bGiPB;tPU~j(`rp6DsW(ImCJ7-PqLBak3M%f?wHnZmWTa(vxt7+!4AaY3{#xsa5DNbVh%5k& zrf6y9=RroDJS3|6z`{_>*`J-bsFXe`NcCWLC-c^!-$C7^5c=tV7$2|` zHKilP2SMBMd%W~L_ROR4XHrC-zu;xPwf}+uAa?RtTHLK2wU7r`lr~^%@Jz%u)!VBpMBO6 zU||)mB1|VW0xE@&6hdIq8?9y3_ZRs2KzWv4CmPoZn#&`xsh`z0Sn`R?w62XGvrSzG zmY;y?tIA_$7*{3cjNa8g#4U%*E;3YPInu$h*vdR6&R+~RUlWxgGs9);cq6%95s7Y4 z!Z)y{7|wXy1;C`5#fFl3&(P${nUUlDZU?W!(NF2pa=n8wq&n0RH7D$WyPz{p_Yl*kAEDnAhaP}XO}`<|Z;Crk#^tly1y0|+Kp!ifPW$;Lhh zXoxKcYW6DQU9iT%XF^QnG`tjueUVehn_r6?c)0@!=_u!f$|0eH$8&gQ*#a>7!5LWw zXnI;BwnkS6Nubcmd{Oecv*hS>P&{4FQ1#_JDE(?7R55rsGb8D>7|0)4 zhQ}$-wnYtenq6#ON93s^Z-3O@l@2-T2RUprsbnN_OeYe=fLpHJj^|$ChC8@L zMK|Dmbq;sI;!?QAU`_#>U&vX&$+;bhHxShzo~T{ZdBEXf^e#12=f%U|vSD6Dn=a?8KxtsRXocTkb(t=06sp zr7%?J@bENc8<;5am1pj*z152>gn9X513nnyUy zn{730jhdKbYsEi=cV@M5yADK=v~kPY)afGOMJN@m8ne!8c5z%!OSH6{Y^;N=Dqz6% z>Ug|^eYtQbQKcPwyX#g=3`K&gVr#d=Rb5JpZC=v@NJ;5C8q#6w@lH+6he0JgYD}d$ z7mD`Iitpi%Xoi7lcx?|+l)Tcu!1Kav=Bc7O&cIakB5qvZTEh3QakAatFFy5EgA3(m zsZIU2n>=)Sr@P;+kgD6d;y$Efp8|%|@+a%7#DOm{>FHe#HijIdEv(bJTmDN{_Da`H zrMTM+&R5kjlch*gJ8xX?UUrLTC*tY?_d%Nio55XI-iSYGUjUTSACLac!6k=$O_9%n z>_c!`%+S$M#Dy22AH0EAR4Bt_Lx;K{1y&)LC$!9G4fiS`m?wVV*~P;`Y`TYZpQRA* zIWhT)r=n0+#d4A(4&M0HSNEiq*2ss{(qb{A=z>y5OhI5jK$l4yPPUr2umDm5c-4-( z%yqE_Gl|=V+k87>^?k_(vMiWUa?1`(dT@*VB1N637WQ#Dmn{<<_6JD*U@1(-(ty>5 zzT@v*J;V9IYoycAql>bgUL~wf)&4CDDz_8NSwwOukFdDgu=Mc|7q{H>@~fUei*N?^ zNuOD^N=tH?6BW>Y|{Rf zTK9 z2H~eNp4pBlDGx|mv85w{q%Xskzi#TbrkeQc?yJx58t4D!+PSQRh{t>1-2ZVlw)~AZ z%gO3QDL*)IeWN|rW5T|>V)@I_qx9xSiTdI{iP!k%WbnEc3QnGP&JFC!bts;zZb-Oc zRXSFdM#yTjE3$d;D@WHss8b$y?J(z`QYG5}L&_73Dk5NKO-|Ij>~4hH=@gTaZs^Q8 zd)BjZss_&g11JOVAnK05(u`o;iB-~^{Ym5H`NQ;YOmG)Oq<5o{i`Dc}gm9$3nB|~A z0?WBRYfbZQkNi~!$9<>J$KXKHQ~6;fxT1RT%TW!=hW`f{Bf#mO(dsKTv8C7Gm>Awv z6ntqpa^njiK;kWnmXHF#<_C&7-jC%MVC#c4b~pUpS}} z-(QMk!?2x1B3=u6EPqc}@a*$OcJ9a_$b2~Ji2VU$Y<(mKOq+~C3{N1LRerw)4 z06Jt4t$eG4{L=mFmcPxOmcLTreJ+&jFQ07HWhFDRX@osX`;sOZuF)0fWwh#*Rq|RR zDch||Vo_c5oXU^SC^NUMvYLqG$#;CNVs2$yH2b^|wIw^so7gTb4g!gWod5RN$ zwU^A*V~K{M4E_5Dzj{b-tUgF|_!{&rlLfC_*Fn|!OqS05%D;!`3kg)QS!SZWjI7qI z%rsHa_fr*&6*=igWr!IEv*|u7jFxDt%~kGz^<3H2i-Gh5cpt{C~E$PphiY<>*`QX&e5GWTIyeS^*;Jk zm2&pn07j%#CdfaH@L>5@hDLhgM%I{9;k<=gL(aE?FAi?^?%nNB)zmup+@Fl5iXQ%c zcw1=P@|sS;R`=d?|DD#k`Q~SDzqgfprCj+_Q1D&1m~z(-_SZ4+?49`}E@V-+%bSCg zmas?lO`9e$Gnbxe!ll17Z_uQ-NmZ^U+)mN!+&$+Wa?Z55s z?StGFsF#Pyh#uK#S$#s?6}_m`blFr#Eva(pm0Gm^nv?u21qrrc6+aZYo}Rr-n_ibI z?>UJ*?a#hgbo-5FSi_Cac*}@QEpeke4oRPEU#T{gfS$+Im6E@XHXFV1bHXp4)@%x- zw~w(n3{__i%oA1Ve)bXqzC_6AJGSV{eXDP!=$F9Fv=DM|ASm@j%__6k{`@g^4cz<(guVmg%66$wER`gi#5XCbN>+%==Nm;&5 zlr0Y-bR0*V6zMDcb(^Ck>`Yp;o*9rn`?%m{<4^(bgbJ3NL5p>nWuy}~2O722C#3H8 zrSxq2{cu<)t~UMoKS1JMi!=>yI{4T4Vg5qObGG~rdTL03=zsb~M!SZbJ`I!Hp-K@| zTi;nX{&DrwrB|;yrBe$SPn~}1;3LbPJ%xp0aV<-|{w9meaSj;}iKv*44(TAoy2U#V zanH%>HE8{gsDG}@&C3iXj8*c6np%fJ9bosGN1&3kEAzjiAsePO+WlD^Y4bW?W7^G; z)bT-e{h2GA?4MA_IB@DS)JfB7L#}!B{S}mPxUJzEra%Rife!`PJ1F)`a?+mYa z-3fc>VQ4>epQZ1WxUebQT!Qa-+scPKUJm1i91HGTr)=>basKfCF(C30zdKH0Clz|U zHV1z86j@Hh9s~vU)rOsTIWxg7&R3leoWYx*;1R_yb{JU8dC#fgo!msgMuw46tY~6M z&S>-Rutc>)|GpA`8$YS@DKYN#;tFmD3mN1f_Ai#oIEu5_fqpvq{#;%SOUr66dLfzf zP7w1_Z3J(RYqS<=t6v>?aX(>r$@GzI^D!X|@cEJRC&?C0VjzzUY@FxEk&715LEB-xn z^WeyuQT)4>y!rYe4$X`0ad%5u40S69CBZmbWS`UpJlxmk1Chv=yFKs%!khYG{_AXz zSRH+H9nHyu7Z#7F_k$4Fy%wK52G)aMP$$;LPo(U#9(*3(p@ObMD8q8&Fml35s)z*^ zb<}1@@y2r1gujC{E6=yz8ZJhH@m-lkjX0DR%Bo_gn9Vfjhl{&BsG$lhPH0m^D5VGd>{b{Fcfqwn&PYEeSwo3LSbV%Ct)C+u6c0b>- zi=3X8x--;sl2+AKIuj{Ls164HW}C~9tXxwlA$&lJpTILkT(4Xu*PfFHdtKV0zeNW# z68N0^N(y$ciRS1W(-b>~F0JeqGJawd=GR~q7XRI7(5_jC*SGd>M)Zjs=H5iWgAOvD zlVM1Twbrp`9b5U8Xf;sJ1$n6Do1cAzByzJ>wfZogb^%FfPQ93#4>wQ@ej zopc-mUNTM>wMRW%m3qxwAsE@f_=W3Kkx+3r(5+7QGz@O{YbqPx$YU;*_=Jb7_eSJ+ zK_tBe99-@S7Mr@XXYud`xtgE%GYQ#VNpbt;e0l5x% z#C;l=oPu=bF+pwwdt(jpNNU<}iTVvdf;{oFmlFhW_v5iKxpGn8iE)d1jb3;)IInUK zm)>Vk#VLdeWyNqaM#B(0D+kul=S(TD0B9|t6)b#Y3*7YvMM4@_mS$Tt@)!vOw1NDI zsi{=&SLBU`HlKWe}q6Tvq^h;=Eu?JNhS_kt2>R4^9gL|0FyVNj5cYmrJxaz!&>h+OF+0pL!_8cGb#{bAN3gp@uSgs^^J zmjV*qL^&j&!m`^8GgQVHQs`Mls4#8=4CMBNL};~p0e?FuI>6eQJ$en3I)kQlQT-TN z>>v-)9KilKP&5fPsO}BbG{0orVKCumE|RJ<_Y&NrAWDy13$Sz)u6&%50MBfbTI7DY-k!*HJn$XPXx$@GBJ za9Om5=669GQmY;zBo(oPJIVbG&HD?L8gZ)qmWqZQ!uE% z15`aDcaptN-Ih)~(aOv>;6x%_1_7OJ6vN10i5h*AZc|5Sekll;%xEDP-J&SXBHIbv zEIpdss{Z|i=6JAl6`m4zmsUv;cX4^ucn0#vbaR8tGWY6h;NgeTNl9Td#LO0`4?JKX z;l=RBl#*d+X&&<{_HCbo_>#Y3Gd7hBbIL-NmMjv7A=Zqs_R;T^Z-F3&de8{ld8KAf z(;d&eHf?ps6Qkg+gqUyCcH02g00KSox6Ypr3Eb{ft(pzu6(FclY|wD4DHZz;OK`CS zd~CticWWqz#QCNg4))}dI)fBK+Q)YtwBac&lB?I*5?4eANVk_GcZbB1 zb!lMZCzPF;4MYoBxkZ6u>dI+lm5|*a*!l=29Ata3NN*tc7?}rg4Em`ekvL-wbhPI0 z?W1!4zc<ufSB-zSa-tA0fYgW%Phkexf&zdFMft-f4E(#r$&_UItvXL=cUlUtKE}V{pHfxW<~u z(?S=q-4=Tq6*p(5%MBCZ%0s!_R8+D_F_q%s(Hb+Cnh-hhlAen8+{xv<@cOIAxbMYZ zW8x}Bs*spI5fWC5;j7o!uxFR~AHP>YGS+o<4P)=!lk1(SiHDD8{M+tMPIiBJ@k%fe zq^s&*tuzfrgw_I>5XkR0na@>yN>d&D7ukV&-N#h*@;F}K?Sy<QNbmtiMMdvZYIBZ{DgZZ^wAOI*K(?F&7nQaDI`@sGC8;M+B&b*GxU^If-qGUx z)CBOT*P` zCH&*;44L=Y*2<#Mn5mf39jUR5BSLG0PuDvvE-{p|EO)a|DTb0NW{DO$Kx~iy4-k{- z-zmv+G7oFdx{_Bj;R+L?4sCcoSX(q#V5P@rqrGGHt9sF^1QkO1V@`Yd-cRBh=f?y( znM`L?)jHmuSYvlY1}>nNS?GGrhqRr!_;bP6ZlCS5Y#LfE__zEu`~3wI-5n6E*+G9f z^zWM?-l5A6`HH81-gkJaLX_0I!6lEix{ABDw0Pl*nvna*r$@{@q$_)Wv{qipUzzpX1IMj^p({4@>P7HpHjM%96Eg z5z!Fp%LzX{4n0l2+lZH60u`8h9vHyZPGL(2w(Kl#QYEClkDFz+7*E0*?!O+lt{mxB zTF`l>(C?x1_2h|onKTF2wyo_a4VTCs11hYTWp%}JX<6ZxfoSf0(5yAh-On6!@Se+P zO}CXw$E5PD`}T4*>1>>6v? zovr(%Bg_t5z(Mga^w4f0u(Hg@B>UbGXefaD`nHaL5t((DelDQ|<=5(+@R-hxd~of# z_^s2nQ$^4ujH8NNXX?N3rKArtDjc5$WGdphgkM$AZ`?gsa;=>5A@$#Y%?FbKNUpKa zx$?%%OLKAWUZv(%daBjDaeL4#FAPaOg_MA4X35uT{Ue$7BX8A=+rLRA6!F^LJde#+Ag5}Joba6rG3z{s z3F2F#%-+u89}+K}*%UeWU~mvo^5c&1W^KYZx$|w)ahGqEAtrSn>5L(bWHQ@+SzMB4 zMk@60Gk=|MJO5r+{_%Ue$cBuh;Y*`0sB5L0F5iO!^`)Q0H5Ysf+~+gV2!AWXNYVe5 zEFN7EMNo@+y;bFOkM)j@xKG+bYQ?qo@=r-~;TJFOXDg9od>OC&!}ld@4cI1|`A z`h~>lOI;~JOlTD=5_SB%-dhRO)75a=4ZH0Hj`wGA|g$W3O#}( z4s-MJmKFy76f2z$q z=u&lQ)C|%0LSJ@7AM@YHyxo0PzTCb_IQS3OBy7d}0&B|0iz+I2P_Nij)7krHu=bar zdZ3hJv{3WTJGoMF)|Y?nznaXvzV6}XD}~NCYYGjGSf1a!Zum2vibP5Q<*J?!E3s31 zN}USYFFR{AU7w2!*%9oiqE_N}%u3ZhA<|ebCZ?$0V=TZ%5xKr<(e;n-76uOa4w0@> zWWzsp++Y=#35yyg#n+ZyuCg$$5-4gHcp*3{Azi>#CzzC8*(r7sF88TO!2g3Bws?}9 zY?_P>jJ5(;WmOMBV^H+Cm7uiZ{~|9#6;3_)peO`5Z{Lj8XAS?TiNzi$Knb${sS zch+4OO4fnUNFjVHhrkzC?V{tV8g$bI%&8iH<;1(KC>x*Uqu>9|HXE`H*IA zR&*pgYbe(z!rf0;c9w2Fbjz-*ZxEIG>tdNcNf6im861WA^WMkF*_k~R zkBxi3>N0%F`B_ITuf(2bq2TbigM=c-dfrwA1+|5~v6`v%)?Ah^&*;K8m&&|bL|MEX z75cO=^;&)Nx9iRnIU3Rb#=VJSuqyCEOn(Y|8KTcUJ`tYbxH{|@#8aiEm|w%xITJUY zMlgNwF)XdrmxAJQofqNFseN>uRDh{%IxmrPRtwKKGaFc8%_`)bdz0!rRxtTe=kx6P zc-uFr&^*shj+5$;g*056>o@kON7!t)`NZV>46{DpjDMe6{%lOr)b{gFYFwB3E6(*G zLTgazlx4|$$ljY7idYL2^ol5rz zeE9lG+Ma#DqYc!>%eUmhov-M* z^7JlJ2Au5EmW-d`eT1bi=EUf3H}D5X9ZDYY9eZv(io09?*Q@ONUhV6$@u}AE`kP3E z#DxoX`%dyX@%g%9{?1vil^(v9`Q;w`R4!u9BHTCZ!{+cD>BD9aW%zLZ$EWgaf!4O7 zo0(m=#!GdSb*heftZ;;^@&x;Isjegi@kG*v&!sXYM(r#UztZR9dz~VjQ=+c_YOCCG zZFdom^rxV$BFoM`hFs0YZsNZY(?%kkkR`+Da~*K>LCfhS=iR=+v1Bgk<8d{-c4VCP ziT2m;pwwSg+B-j?ipB)e!PPn_E7l`DsRnMJ&p#8A4ha?81thMAPuUz)rLr8C zh5&M7A+!oRg88v0TIOmT?{1bpP4wETe0EE&EPM(t6g8sBMV8g#Xl(YkA?AuZZ2Cxd32fAb! z+(KD`D)iq_a>HaTS3?kvdI9Qbp-#IU096;%LAvTX^pue@pxuN`ksN%0{piRzi(6Vj zbNiv;^%p0^{PgrZ8H~2_ok6myDA*JOY#6`~ru@k;1jSYk?=yb`%i==G-JVM3p9>drd1x3 zIdeWQp?QNJrW%RS11DM+PKVZn_z(311TzflT`PpB9yr1wqDL|ObOcDO-R*~t zS>?p2Mzc_wJnJ|x`~W+gC?}*PR;?`N4)by&G)*U=e&Z|2S7tw5ImB9C0~F*D-$BA9 zWe5~YnM9a@=eSl*H4x@{7HG30vAgfU2*$xVEmIM>FHF=pwQ~hZb2T` z*bjwvSOjD-BDX^Q582RkGul#BuL`_9@#kjy#p+}j=_^sj_;~n%Js2dlvg-p=>P$e+ zkEBzuC651dZhC;TJK@_Pq)iCh{pDLhiBOOAO7U&tQoPFLxR`M<;sAr; zFQrpeir7ggh((~x%bVE{-yc#-K*cVh%ft*+W=KOoi62mfF{E*$a*F^Uk*5Ua#TQ9uV{MgXo^=ySkqTg#8Z)f0a)YLxIHVbF{jX$WgKS{XED&=vs78SmTy{ z4!FihETaeG&(IO8hr4ZJ81{472EFskWE{~Z94)ZVBM-;=p{cnxrdcdKdEk3jyq_!b zdmKZ$VawzTj(SRS(-`2Kh)d3bPD6*6j37cHOo0*<(6hQIyA3hdQC1<<&$!i6L4e9V zk=0J|AW@2U44S26t%K_)G4W{k=Otw^4W2qUuLhl<2A<_adjKJxVkWV3%mGL+xk1Kj zfz90Q6;m`%kkTAB;?C$Y>Lw649|(`|nby>A0)@jm*Ees8i96E$3>l6H+9hYY_^S{_ z;Hlpy-wDW`(Ef@sImMk|hy@$~ksZd9VD&XdwCH#ByH6yODySeQIeGQj@lO(q*vKE1 z;UzSn*dZmNS>X)^tBa=B@Dt_C)TPz2Bnh6BPZO)s0qx=7BbJY!arA;4kPjM8v_Plt zA3uiKY@ib%vPT~riz737*RQ0EP@9`?Dl)8w(PP64podhD`*Q1iy4;;QtwN~aLs7Cf zbTB0Wz=>z!4Wq#`g!{Y850U8-V&+uI8J!_5;Du^2Y$1GuRX+js8i54mj@jT2YU$E} zHA7)aDN+w|e~kk$(=@G)W|dl_6C(|-vb>SbG{p6L5JP8dw;_Mo{8Xa0!TP%JNRZ(S z&jydxfssI8HWmcP5XP`raTRe;s|WVkD5xMd95IOkYt&$LwcvOd4Ro$I@U4^G5Y zZZ3zqfn}>A?=vq(Tiq!Tw?Xr&i5AXew6p3pF5&xI9QJs~OFIjx5OVxcA+Iu8#7z&Z z{{#~JC0lew>;8lvtfQG}cLA`NX?+SWfc;_eBNZtPO>%bchl+b-IlDjC|Eo*iST}it z|LuTUe!(am0Xwul#-~b4i}3nshaLq{ck=-dG7JY`xWu%j1mIn6ovit$=#|`c>vxH@m(^&NR{xUYP|d?8hplO9$Qm&l97XMa~?GyN;_n zGtTy|v4ZF=@V^&){25!sokF{1C<_lgnx9@FY6a3;*(AkWrbe{He`_O44KX+UhKL$4&IFRzBERFM<%I|{Dl3B}wIPa( z2n5(!4iue;UJM~F#->Jaf>d+;B$g*&e0k1V7^`9}H~o5b+Y zqkhIFcklOxRTCpxed4pPgBYZ(McyX*&L-hN$JDN~qY3CQJPO&eHe9sI3!5hk=PCs+qV)(%9V%e3_2(JM#kGYLbd9plunRSb$PlZC4KE3IQCQ z`KlSLz`Yk}zUP5WsaC zm;M-|Y__sG*eHg-iW|z!h*L)P9q3m>*xu_#U+&cgSg0Vu2NDy$19P28+%(N%YjgB- zBXT<>M@l9Dj%jcqN6AlI&8};*7+I-^c8XN93^W1oa&XH)1-RB9f3*gBu3s(f6jz}@ z|7-u_sP-pTYEgCh24$K-q{u%aYbcddZoN9BSnd@?hN^BRq(Y((Wx)$SIZm7j`>0$X z60=jt;CnY;FN8!(P-5^&>)sCEf*Db^j%9xjL!>=W%CuT5(60}6ZgTpGP#0!WNL!*549+X6 z)gpJ6hF=49mx_3^Xx$LJo+;>(eP8V$x+^(&n}bI=`R$nw?^S3%XfVF;rLkv^zq9TW zUZBCFSnpl4!J>(+)kPx)fR=T9IcP!qV{VVLiDUvCjpWSY{Z^ZKrZ5qVFKx z*&@ukGK`0b9t^qfYR<`~*6h3-{JS~5N!ckX5bXw6V?^T1pMw>?YG6vDB;0TY|IHa* zVGu!oAO#y+HKVI8FpBh)9KN_u>cHq$Zdog$s) z$nLUB=F=oIFOP^M^7Mk9(nbr%5k)=AC5UqkH5YPA zy$pc{(NcEw{C7*klW(xCK1Znee2>|V>d^BG3C9^3&i7|Xr_782_V;Hrb^OA$Pt;6m z_y`4l{P6AV*?8PyxUqthb8%BtF__O=wpm&^Hy&@hDtRiAHxuH%!}zbU&PZ5e@8>y> z==r~qb9{wWZjbyQaqPaSZ(qD%4AzCnk6x$v|J3-Soqll7t*_;}%tE^#x5vCpDOHb2 zp+Mv5B{}TN!Aw*?Vd7NXSrPf>L7JraHyJ-&S}11$zY2EmY=V$($vq6sXU5$vx5L&V zFNC)+rSjYzlVDq<$S%kFlGV`7q*)3~pTd2lP)B=i)Oq156!0}-+{tkWgc(}#BZN*=h6tm=#Z{c6SdWZHN${M$u8 z^%p~R51%-2mf8%Es z#@1M(M#lEc6e8JTh8YHBX|XFsvK0y$WM2lMG{&xNjFE&=C|Qz>EMqAnJXu4Heb1V$ z@9#XnKY-)qoO7T1zCPFWzE<=;i~W)MX^^F?s3uhja^RS{{X-3(uSWZEAOAf5W@v}) zIn4KN=pV|KHs8g$PRc$-bO)GiyvbRt__>qk6WtvAA@=u+`Y_R!hnr@}Hg=V+L!@tU zcGMtu#x1n5Q&L4nNrd;Q_o+RbedmL}S>9T^I~;fEPx#w3RytTm?u69w>{BxL4mjPA zedM3HN0|wij#5-YTs#@MsTSZcmL#53+rD*)Tc-m@mnN!@r>pN?K03mmZA%US>sGjvo028} zF5nGY26BckoZAq_|2P5_IMe9qUQ3bpPK})>2tIys z;`9|$$;M@e_nsyHBEFVrUF_E=ZMnynce2Z1+@TRS-AC{f(@E4>*@+1nF1r4Q17&Dj0u19#JvLL3ui0LYc@xImHyS&#=U8OB`|SOwy;) zl%7*Tr-z0e(q3wFrK^H?O!0p!59qy0xo3g#2p#KGjC^4tCnAhq<5bU|FY=4G|7XPE zV4Q`U0#CaWZ_nGhtjv#HBRUM|}jCCajvx(gV#d)i|qHhx(2m0BPkFYK@qZ z`L>pa^dA!f7Z%TW zzLP#YlnGnP8(iBg?ADhKy&{}6dc0@w^_jNSlPdp;^JISt&J9)RurTZ*x0)ym^x=Q> z5=-k&rSL`I*%mX~54pnku^?S#S!}+mQ{(DQjeC#z6M9e3Ap;go{8`HnzSEZN5>r39uQPJ|NWu* zRijq?!z?mrbd4X=S}v9th8n1dgs3gjt6w1Sh28x6*X?Z%%emHYVP%%R+xCznJjc(< zNsVOGhX?78*sVj3kzUnN>YY4mw`MLJ0FskJu=t^9p9y*pOIi^^&4k`l%U@w3gI9SjLjXq zmIWpE&vVwFv54fUwD_V?Zuv4}uXmo=YS8u?CFO_~BX@;!XU#W7k3m&`)VgQnodkBc zr$}mkcF}4$0`k*)B4G4I+U)8=kwS&R0v9v}o~jW#K72OkC}#wPn%Lc7*URS^zx=@d z2MkFzavO>&URewYG~0yv)eRzHqVHoH_k`COvi(@Gr~9{fieu8VfsJ7DI!@Lipiy# z<4*P$OKvRj0A_dZBR}&48BLU^+U1?@H<0oip=M}6=u8nP7rFz8;S9B~1<;~(2ChAe za+iI)zL^hv9c<&`=Y$RWK>Q>AzV!#qY=!u-ylbxkl!7Du*%i7sLsHA6%hVagnV1mo{dzzdZy-PNkl`by_D~MXi9z6* z3GV%%3e_s4X2$B`_sMGl%|g594(29FTNVPM+fP3QJXafE-<7P#(F7~$K|pIh*8e$m)#F{Azszc^(ceEql27yla3}sQfk?^T^GC{9dmZ- zFkqa!I#1$D1|}&s!p=2&nqa35ze|9>FyS}ViehC~bhOt{~k z?m+tq27Xf0DEM~ft(qtCBp1u{&- zbs*@h7`085?7r(zs+x2fRXY*z`;ea39i$nzT^_DjQBM2I(u_2G?Z!>w>RBp7IPDK2SW)B5`<#ORPwZObJ zQ29-C8-OisV0s=24ZkCZ6cIz`qKMu;fVE|tzFU0ke%LeC@rt_SJ2taa!KrhK>i66^&#h%snn5HP8%E_T_w+hIkNH z0d2bmJw^2sdf8dM(*wQm^5qW;-Uu1X>OZyv;F(2AQrgrfmi?1-02Tq&+%f?f+8YJM z0)Jeyt~veAuzW29dHimTyhbHn_l!|eCJVb88|ww#kQM1B5p|kW%_fLvBwa1AA6G{2jVw<0 zmQA1M^${qTGn8H%*tG$i;@<;KYkAJN=g^)?kefh+T4mJ(Tb?*Mg$xvo$T9Pjq)!2WKSEkJK-U&3 z$Gfabx+Hgyb3S4N6kDzN>F>W;-N^aR>u?VRgu=#752RSVMy-);I1D;t@2W%G{55nB zk`5{ba*H@|ic#+irE1rxz@5-vmy3y2kNdN-HA7?}6sbW%bMdK1DUo_j%F^ z%AavX-R;LXxF4~LdoxCuE-P}Jl!{4257Yw-kg1V_u!edy*#>W{N5yPx>Z7$Ytdy$7 zEuYBeE`Kqfyj%opbbcH)C&Z6|Gle72jrMC!ThlMXyJ4FyafdU^VW4-AdiHebW2sd9 zQVe+O^6B!fY3gm#WRe*6<{U~jK)0t{_J7@bSyH+2b>s|Y-rD#2OuDD3I-`jB_XtVl zE>sv({RM#iUcNw~NV6(bAV2afB9cjFBo}>`(~nVefegkvD@0*}3la}!bpL9x?xE4s zI44+dLm?LWMi4INUc;7k4*SpG3}C{Bnx|hFmuiWIMhcoh=|(@?}5B&Js;+gfoog>^fOOs&HkdF zf5qjb-e13_vP!0(jA0M26|}*PbMqmy>Fd&Af3utr$3E|pw%wM&$a?Ua7X6j<4>JNi zJctQ_9;{5$(7?5W-!&6`7dQ7@_H1u$K^wnd{Co1M1Yuuqt?Pmi@4>fPBkCZy)AU8e z5x~h^NG;~Sb$b%4e+h-a%KRtEL1ccJyPcD0_rn4I1LV)JaPZ2jIKsFmcvoN=ZzOTn z>GTbQYiCi&dq5%0f16z_E{6_LypA2G{!9e+!k?Ui2m*sJA-10-vB4T_y;lglp1eCA z;g)K3kOz(S_eU-@B!LsA_;>K}SFm(&yqO>kK(J!G7U7Uq%jyj#uk<$x0#bwMeWDGq zt6HoD^o=`00ulLk8#gP}gT7tl&(% z08-a?bL%Ups8Z8oX;9D1zv7U8D(vP50Ds*bu*dXxqFWtB?heNmT#5E>T-ZGaYXsj( z%E8onVL7_!?0iou3Dsh*EJH$11cOiZ6kPE{W%$k$)PYOt&q^@MVx(EHUr?8XnFOYp zOBVo$AZ|_2Lz<16{ZGGt#B(yY0OM!EYmh6%Z;bXp1Nwft(?wMvrA6+#v-wE4Oc8CJ z5;*?Td}3M!aV=V@9JO1`Gv7}Kvq3>n3w^hm&VzJta5x82RUEzi3(eX1n>uL>Rmn;Z zld^>8tt^}IlYZ0+ihyCjH^kX(peEI2ms7K<*^>g;@nhoH2!9Lbdd{TlVivFwSclp%621M0v_JYy1AXOTLMe@C|e9>WK>S{?J4X3;bL;; z|BTz0ymb=wxO!%aC*V>@{`hph{(GmkB;KkM<_T0tdUX{JyZf((#q{S70qugkT%o8!x?*Gg9MjQijqrZ^@H7ic;f)cV zQt~Y?)w!EOvp-08_Pa1#;8}CQ?E`3NyR22z3{@k@)v}zVkw=iQ7>r-@IN!*3NV;v`Xs(w-wQe$kv^h^1VzmDbZ zwU($xcwBgt!4+*mr10dkXK#LfRAO63PL~(Bl#kU3`bwGnvacnCaKLy1^Ofp)t8M~; zL0nt&9DT3>VF#k+8gb*}u=%!WEhi(rcO6CP1_tqcU8gs9zEI2OWJ(o)P+&nk)x(&ZEL3@PydO{}YaPity4o#y})Z||d zmfO%f^nfT*O3{;Fa{%h=1Ls2bc@9O~Z}xop(8*73ngHXxz!7Y||7<&(LKoBFl~p8< z^+Fl-r@LRv`HOG|&|KoG=Fo%kNvUby0Ehe9Xc!e~8WVHVY3M;#xFpmiz3CuZfx&B8 zsFyqxuLP%-hA#iOzc`!hqoS+C*X~*waG8XVoNb@hI(96vL}=~}>ku}FGou@S=Dna8 z4x89yW*Z;hiYV&IrKE2jSoAYlA1@jA+@>Sf!@(S2Zl?bko6AXEi0QHS$M})Wi6@#% z2zv`*nC)Hb*OaZi#D>bE=CQ<=IcYZ$_C1i(y1v7=ZN+|9=@<|~(L(6(cxy$IYhrp{ z?yqd$TFk%GjMm*Vt@=~;8+u#9JDs3?;Wp3fQk(rrf%t$G@|U~ouc&rz8R{*UHve_v z9AOA%r42h{(>jp7Qjw+4{Y`ps`mHJ9^v#NOQx;e=ueNt2-YIrHv9F--%Xunx^<(v2 zwdusJ#UCHslb@th|9$);u9ZMsujhRF%NPAE+_crPef@#7F86%j;)#}#FMo25QKhL8 ztw>(O?WAbsj6w;CFOQd8HTn88<5M0lrwdhP>K!(5FHe0GX97r<>q1%&c!cX53%QLA zEAik4v)9kA%fN-yccumAL8acVp&#MXrk5#dBFh2^g1i zeq6Xm99Vkr?oV>ag_~yz5jU>*8s81Rar;!7c9-4%0P78Oa*}1m^P538K7REUF_$zU z)Gwes{JKW22OymNl~4G2m7PdF`Ii3>NZp(iJB7#D<8X^$YmKt8M_GwTpSGw@4%W_9 z)CVd>v|}_BeUIJMk0p>tI^H@e3cNh`%#*s~9=|+9xpdCvYjgRC3U)EsDCD>TPR>2! zqetxM^QX5=ubRz)Vb_#?cEp@2L?fBHQ=TC+e*qc3vERK@4jm z_eI;Ejrvk}*4$b5(ZelKW8LBBr6k{%ra}&ZO`zool4x5BWi-@PA;UNHr6s|yhK0Ri$>75d>nA1fvAGYl$>wMuD)0|s9PHjnGO&JD^X z%RaicsCD?MJWY?%+&XYH-#}ejU{zQ6ynt@9>W;+plkYvPVMT#L$6thD1q8OeG|nBG zRMXAud3|hCbNFKP>FC}(wANU%%s&-xS32~(!^OS|d})UGud0pAsHdqhg;v9VJ7){_ zUerIQQzB&7uiE)rJ5qGl{SUWEd&e)Ocy{Q{Qg-3c>$k%%A3ax+;SE_^b1z}*XKNNp z>TT$%Z5N)kwtDOB74CU2##iEd|4pIuY zUX)i{d=heyQ)u1sAW6CENghKiPD3zY0N09eX8!xGOX892Bl3Xk`G|FKCw^_A+blsa zkFD^AJeo`K17Jdz0R@L#botCw#U zmau73u+*}$?+Gq&p@klqI(^sJG_R|z=2A;`l1EK1>gT1_Yc-!OJ**NMm_{P(hRc3_ z5HD{Ir=wqTadHe|=9zQ&EcIA z41u5hucc(mw=_gF+nO;U%bfpX>%*(@T=lZu-Z;ZQ0AYg&&lQ1{r%1FZ7#xp_NocVB zs<$DDQKQN8_84wIHZ7k1T@<0rXTlPcM;#4`98)tmzZPq}#Agoh2>EH#gIPOqN(OQg z0!tc-+w_C9Kz5|NWIm9-`uRdlN95?(!*BxYrt~0Bq8&YRjEL}&jb4|N?ha71|-feKML0#F7!dF7?S8Jr<7%fQ=#8RFf31o1dCbJ&rux+aRm$PuP{8zTdS^3U1$P=ri+TeldHp0*U!3OO4ku=gbJj(3 z8YD@vCTOF56exw-gbz$uGT4uCR)oZ6dkiy}V$TCf$jmSSojX3Uy{VRkLOhaiMJ%Kd zH3xQW`RU+YSx&!)WjiQG@T!i))^Jb#EC|NKMG+pv+5#1mUoC+Yf4o!!_~!s$6gAYk zdi0%E@e}Kdj4YtwrkNdm2?hfj)KA&T4VVFCsKN<&dU3Gtpj?Q7h0+qtG^dHm3k3E` zl>i(qMQmWZOzQ*6MmC;y2IkGBnN}&*@bj(yaX~IkGnZSvNXH=9e4GNP_hEeom0L|Q zdz;UpKhN^2n4!tt;k_WIJ!N$XhsIBrU2!?i_qme7WiX0n_mv>xzEg)_j4)|l)AxrV zbNqUbCWKCQwg&b>DWWvlfV9g=UqPq=NE$Wr>%?Ezs~sMm=V*mfULG+K#zc*iINN(O zWBwSFiaVZDbejnlN!LaGOf=nP3B{xwgW0KFKbbRR$gyk^XJvZH+o`$A?SMz7@1QZt zqoI=>m_8;GU-su)jVN#9oG<|E%`5t2Q-ib;^p$h(rfKM+W3IU16ydyjj%Apx1GHy zy{pZ&QW1INCGdK`DO|)SkgJgkoYX6i|KuOa>F$PIeoRk0ht6S1*B3+dZ67|U=?aAz zbTazFfzr+<1pxidvle{a%C|Blf21M&$$c>idPxHrS~nX!HDMX3UoPZB8`^}T5IKw=-&`%j%=ng`hZOvf0C+g z?+eiD%B{w>G!;);&YChs-w9D5Dq|5K!d6ZkF<_3_pPJ}~NmQv&kvagc@UaK6@_d)R z0czWdC&AkIz)@?*c2CpMjO0H>qN#F}7zYX7mp!NmDooWqsbLkC%3pPA@k2 ze{cq}eJDiCoF!8*{GEbgJ#!H=oFESqdA%SkB+*WcSi66L525zLeL^%*IB|iRACL$H&4kTn>^3%65HL&=bwEfMGg^|q+=F;71F=tibrJ_a| zy3@p+K+tp~T46sS0$~F?^lsLzvnKwU@93cE<1pl!PmMYS89)L{b4OD)Az#|uh6bD> zKi)BLvW@~$;vtN`d(oA^%5assOD!9>+?!0oOGrE=`;_4}w7L&$YcI%AOoDg!y=sJW zbB+$z8H{dnR$s8ZM}bJ{PPM`eaTZMEBXTBo4)(`s(jt0Sp+dQolgezlAlX7yit?E_ zl7?^rh>z=Y5dPn{y{yI|lV1+wur}6m|7$SBPUQ+#W+SNUxDDAWs<5F`KTuk&ZOyK$0ReY2dYgCPt2D6ios_GPR&- zHr0PkO6VFL84(UHu6^ok-RJ*7!*b32JxKSLr0ygX!> zPM-++&k@Tib=qI5PX)oOdPkp9p#^aA{{u1fubp^%w#;@6oG@NC*2tu2r)Gg$Yh3`j z1$i8b-<<6RAFq2avDI$)img$@CcAnkD7B7V!?HV$zz!*=MlSg4;|Qx&j(%_x@ZWxOLDBdW5w?(q9$NF z!e`I(A8nFutJA0t%qtUDgBse~xo4(6LT}B|2ARBm@>K^b0}jL1Ku6nTIs0fpaAw{# ziFZu>krGGRuqy_9yY%I&c^dBBL9fjkL1lB)-?xnnHexXNL=nk7GayqrdAT7u{`&s>Kn3Un3zMWdj+wX zbXm~5YYZKBQ)zsP2PfmHF*kuUGm*%q3IWqO;hqPSJT)E?4u&HH&2M+Z&7O}}8Abg} zCaH|5_G86D@q31wFIYA&Mbr>Pi}09KEiYg|ng#n~_Md79*^}Z!IoHnCtm=c0DRlJG zLkb(;KE3jbM$x$i)u?T~whWNLuB~dE@oM@W;UK3WoIpwQkyVm|bO-1L&yx6hdy{<7}!R9ah8?_1P_bjK{-& z_x9O9Y>(gli-5rpG`%$v3{W!(k(cvW(fn`Q_wlEDaO>~BgWKdqW5^e22gOD~HVlL$ z9H4k604v~_Yn=&!w3-w3?Wg0SK*B|xN7QPOB*9~AuNZ3YmT&s#G9OP;!`j}>Os|Wz zy|aJS^Dex*s(&Y52xdQ__LxWf2gr-x#f?*D-B2X#D&aw?OCQn75wM#O8? ze7EaD`S+!=7zK=^hSxSCgIM(vd&Ge_K7)LNpX<-A_-NrK-nOt@+r|Soq!m%)RN&%- zrWlxlhIL!}#ZIZcnMg6|Ys9mi4LE17im*jm{6+5C94^O(pvkFM!tZ(6BNKurX(-vJ zD|-e_K6^zXr zkxnI_Q8qtmG$MrL#f{r|pD_Bt_>hiLOM?ffBp|>Z)Or=xwYJH`zxG8UtM;2@~n|P0dDdO6{EvGwT zE-AWO%fH$?rsD_4DvCCUqbQfoOK-=DbLNT3M2+N7-?+n)ze<#K*fp~HD^yayi` z9m=-PTEh4b_M`O2xIKkcuz!u~&<87JpECab%H4pt1#oB%@o7d{1~rR+(tXc za7M|oSgcOMSZVu_t04-#`{Z^_t*K^R1|P-?A)Oe$Hqz7QR3$0`gov)~a~YdY)z)y>APC^L5&rp_hsV|NccOv z@jJ;*HK*U{)I9%)9`hw-nYtCvUyS^f2dx$JE0LQz%9}(JwCb#{Q_8UA%G6-k}WxIFOkb49sO>YB)NU(BSey8cE>+eoct z=^gpbMX9$0qutGSf7IbRYG+=JbZVF?CbU#C!|EIqa400Xi+ts{*r%dALQg`Ta)0+W z2P`{@DxOg{Wk#BvdoX+~pyFnFO0NlO<(Ta1H>)7!HAvr)?}a?Xi%H0XTK-Pi@2~FU zJ=;0(CA`$U*n2rwe?!bJv^6A7Lkf=M!}Q|c2qX^?IWL>+E?kv9(frBDr}wtk)o5D= zN;oSHvJi8;V_}X~W|(d&S~apexWc;@$LBneIoua$N%yT}wK1+Ny2|{ljaM~f=VO1T zI@wGKri{G3o$&3l$M%T(r1}aoosskjU-)H73A+&bKOiysWTgJ@lMhZ=CS8$O$h=iG zc9A-0fT^9#WRtxUJ+O+i;yq`KfjZ zKioTsVT7-ZR%D)EDEfNnRwduI(1n_;hc>~VOpVv>G%g^f&vNp+pDR{7-f@_8d1={Y zVaW3#Bdp7`=${7(%P%o{xt)%6?%6~91W#FI(fK`t*V2eN4R35bFRJ{W{>9-nnP?X^ zf6HRI9(Y-u^lg>Riv4_bRq4*-*)|eyO+wsJ2DuhHM@)imwDqYR`UYov&`5gyWR)-= zhGxn=`{iHz3s2?=m%K6ZZsQBXThZ>b3^O^;Osn2AM$d*O2cFn@TS~FN2*g&)#fWy9 zJO6q9*kVZX3GMOq82(E_sp%>ajxhfTO>{sQ_lfuux2)T>*EM-whAjvj8bG04cIZLv zv&lL~z^Zwb!OFWl>4Zud@1qtZbj8-@i?m~mw+3(nuand(TPE zL;lUDf*Cz1?r!1YM3?&zGI-jX{m+Y_to?JJZ%8QC5#9HFq6Zx>&xYhEM|fh)rN5jb zqo2M_K=V>P(5{Kd@cx`(i!Zwdp8VKvzhWv+ym*!eBe)++UbyYi`&?fHK4q4o`U4wLSbNBp>mH!85(mwU6@d63*buKQn`0q4| z#$llh`3qnB#Qb@q^eb~dz~Dor!>KDPj~ik0W8faF)$p-*Yj5xxTqlFSu3uQ>c)shIM-c0(| zFA7f}#qtOHEMQIbrE;mF40f+z()slC)|iL?1KxlFBNkHY5<1*JTzD9=5cw9;g=?Gs zufJpaYLeu{K6yA9urX^J5|2~UZ0CT9CKUF@IK@yeOZIlSD(rHAgoZ{FUID*HEOx=E zE@$}{!4AY(PLg<6b$k&5B)ChSMHZ02A1MQDY|er%FoMzzoB~7ARLg-!V3&U!$pXy? zJ}qxi)o56MS%4Cd9BU{0@#ESUX2%xl6j}N*dZi1*3{vDfCHOQmXa1Yo9|59!4oj-o zjjw|ovKz?ewgIW&3E?*6A12SmfRI)7*cxu{8_*mP0%?hb7}4X*!7kf&9gSi_CQISX z831p854)uLqk`HE_jEr;&1~i4SjEVYNy5it+Zr1;<~P6&SxbcsDLP%qUkNZf_cOJ_ z@l#Av_0OGN7hR(patSQu)JX1|D8&)pMK^Q)K5im+a=rynw0Ex~Ajz~mD@Dlv09F01 zuOQ}aPl>`*lWbiOewYe|!$p?@jOdDR&;YQn1dP}CmmG;Lq#GU; zBWgl1`S#Wig@PeMFmL>cGf?9;fv`3X0iD_#OFCc>y6yR}_1ql}SQ^g~!(SLs8m32p zEmspTizx+++^U*-+jFQn!*C*#qDPzNrAViyP14NU2{c3n6YeQw=K&^2KztuBMI!Bx zLQbm@1T1d~3KWN&hfyQ7aHPI#=J4oU zc(Pi)lZR)VZs31-&Np9c-6VI}4ECNkP^)60CO{R9P5oQ_lLRqNNy#~0A4TqY0F=Vs z{=Y5|b21$KU-*|^0*{TowTqx@^qF-zRkThab7OOF#*y;0PyZ*Coyjf>2gumsMh=1+ z$T=?nkjwz>0EBHXP_hhRKzWqc=F) zv!+)6WD3;SrXdYZo&_?D(69bk=-A-II9ajIm*q&HCa8Y4V9MwniNEI6B0<$+RFCly z3{|(XJXP?+^qrmmYPrh!E=4TZGW1vUvw)e0-WQ|qj;9X~bW^B{7g{X@#dMKGUF&k> zoep_Um3pIrF$sBKO4W)=i_$O!8^cXL>r9rL!f?}I{k!IS)_6IW*dm9%94h9iJk~Jo zJ;EcG-6&5%IfqX7#ptTQlJg!v%F7OgbIZ1WQIyAdtW3G|3DCPCrx4KW%K}1X0zr@G z8536q$To=tf8_&3t4Hv1JzA)A%~wG2hRw?`0X~*YE?AQMg5pML1e-OI&hIbnTM}%b zMp!wh1KPudEBOL`{-*;vy~cOGy9clrV#fvl4>;Tp#x=h^P)BF*HEwPZi%F-#+1aJp!!bA7Q3x^0lla0Kfbf|z_P_`~@DciFP{0P(GOTeO?LvzmeC znGY1Pujz4W5Vj9UQapVgYK~qB+iTeA3#Zhfi>Jvm{Qt?WUwTXe>1p`Iyt4OF5Po|% z4aZqF9;`&sFl70evn}+jAji&Okf!JT4UPjYLKE$ov2*I%$pls=nOf1Mp~gRFT3sjw zLCK5rV9VhW*Nl5XBO}yjVRu{3CC_?>Oak09X81-dyLWFS!g0YjU~*CYV0MmmHrhHf zm*T!Ur+%KV;Is$Pv78_yeEV}kxnS!kpH1j&npe3%QD${U6Ez&!aBVFaz}!AD43mq4 z#t%!IhKn3HK5WjKjR*M)e9KP&C(%Z!m?Ug`+dQb!Q;PXH&QThAvS$I?l(D+ob-fv; z)1VW1(0=>UNQNG0xcXMx=vO4SNRSN&0XC?VA_cb(N_Gh)coab>l(h; zcpld-b=LF@sCi1iLGJAhBBcM;`zwyXFS-aNp{zLu(@Z8}QBM%VJ2s!W^MnYHP;sP2 zOlEJ9u^HbJuW!lOCYX|T$rqac>)FfLE=Om^QpExgguka2=o6nDJXM-S>PcL%FYB~L zcQOF{o{#+-1)_Gd^#aU>S^x2qgJP{sJH#s_-N-w4WUm01QK@yGOUB)Y`^UgqbR=*h zBVs2S9Jh>W-@T6O3N@H;2bVgoQg|SsK3A-bk#EDY^nA5WW^(YfuJlK^r!gpmvIm@$HS0}2EvnPSlVKC z00Ns^)X-Z70v}q;30{PNZRkIC& z%cl%VJ4n|Eyskra1*o^`SwWWu>!Q_wt4uPur%Ki?Nijc41J*aSR9VMU+V0brz;?bh z(3C!mZ3EUM%bx5C%pf+j=A}W8 zm;1h^2f+j5K|Tjm&4QO7k9X|gvMAk}k7|dHFJ(S|X z@KkVK=+}cpkH`|COLDT!pqzK$;>B%;MIdOF-c1SR;Sb=qM-Aus(Z5Z>9h0jrrRn=V z=fYN=!`Uh?2RWUqLEPan{r4nwH4}gZ7W?h=)Ij~V(+?M2D*?Y0XT=r(QAe!KmoV3E z_ioUbT5j)}t)!bm3^P+t^pFjWrF&RGr~T9dejs^yqr$qpAp8do{R)+CV1bp5 zk#m$pDYI<~8l)*hCJj+m4*vs=t3Z_kse8}wfW=%zT5{M)C*f*7R~28?I8qlEw6)e@RrUGY;ha<6Y$#)xV({WiPvvxrAu>+4=WO)VMA4%%6h>9YX#A=0T+|~Q!f(NCWu=%g2 zwD10Ua4SSqh)?V`T-YE^R}uP?<2h*PrU zz3dy&6#}Goz3_?O9HP>?X!Q5iUw=ne=MEk``uv<${(!QN%0a$bsbP?D+G~-&(E3{bw6+65$@bOnW)gcH9eYB$Maa`rzC+_ zr65Di@{@j6nM(ymTSQs9(7#}8m{uUZ%oLSR(?iRi_+;Jt8oL4Mu!>qWpCK>Kd9SH5 ziR|UL*v{!9LeOH{i!G7#g1j`L#kp|Ee6q;!vEhuvA@EfakNp=^45`E*UZ=BbCj$ z^hIv^fT+cfmJV$_%AAf!?0uF`kO5Qtje=7skm+Pj zL(hXs)vJg^)i3PWI9{BB{-foMqKLUeJSM_x23TLg`PP64*qMQ(#U`50@i&XFdgt@5 zea^Fz2yFKB=846R?;AARu8Qze{TMC+4u>{a&Y&qgE_auLmY#g-?}D^ILMGPwY|5KY z-dht(^a1oTi0{6q=mMp~$d=vCLaXWxx3B zxSZ416%I5Yhz1t%8_&MN&Xe_Ri=<4#8fS>YZz7&t^fDsEhowc0CYY}7gdaIoFI!2|J_Ssu4$sLVo zg~;h_C9UT>ToB@k9TJ3MaqYxy&Uwh9HriN%EL?i9f2z zY?LHhj@rGXYJJG8oBzgnO(-5g*bOT1b-=Bg)`TwqdOvnQS|U`3b*NwCqprsJJABv3 zWB;^22yP#L*&OYhf8oH*i4RY^DhtnQ)ybgW@%q-PL(Q>N&u$Odzwgm(y_Eaq%{W>7oSRX_#tiz0eJkWL69+5*0;Uj z=YGYOT%>&TPg?YsG4!5eVWh>om96{l9lu(h|E==5Yw|W$f z9e&n&&E)Y7{pZTXU6(9tcdE(Q^fvdnlcS%e+?c}ICO{{&Xu$n-SoztVyvtWEm%Rqb#7-6Edt!#)UL9- zzzsCN!V>q%a&y^_%E&HDRiB%g^MM=gU#_2stWE!psg0Y?WH8rT)my?MWW9T{PWxBf zPH!@+@hz_DsQw}K2ps_&Z;Qy@kali5*L(ZU)f>N67FD`C$y!Slr;{7P9;mU{=kK_) zUKE6QoSr^%i(%2Wz4dvla_jTSL!k@Cr0%KJqG8UdSuq+4p$4N1ZbSRJTK1%qj`2O2yyy>sDkEYrsfj23l!E(iy@j0x6O{2s4I_aA5q=wBUM-i2q#)mGjM5_tW1aM6fHFk5Iyv{e$9A}E#l*v+HI`~|F3V!q` zc!hrHdxg>CiY`T=&PM5t%b*JdA{C+_rSD$%DJuNi4E%bV-yb&%axbl6Kl}n^<9JKF z1{e0iQsKpaEU5f)b&RT=Xd-I5KR$z~2u@Nk!JHahhI*HQOw`O3$~Lqup;53GELqr( zDk=X*Rsq);a91XP@2ed2B~>a3QjwucZac6{5}*d>HhJBC#AuQZ4}5ZvmlXMzX<4J654x8=YCT8i?pbb&UmoE< zn`JvlA*gBybN9U$ptw~KxuIqeyf-?!?gJdmJVLVwFhz4W3jOZ!vR6+>zU>;=CexzS zjlMw+THF`asQ&E&p>t0 zVB()!z7dedx2dTgkzt(GmmfrJ9G}|>Fh4DjLY* z%er@9Hlc0TiWR69P~&$PNG&rk@`4=hL)5N9<<%}cE8@&>$Be@5c5iri)muHkCpC3-)qQ1c9CF& zTG1-|#zda_+#fyFQC*hHfj)d(cVYKCuYv20Il%v1QueDEix=F52&4aK8-UWiVIKIhCw>}*y>rvz`zeZDXUXiE^g0gUE%@#QQDS@_hyu{LjyrHD#>1i zzla#(i(6i+J6kZ*HDGl9&Jnugpvw-)Ai>D|#6lJaed&_jB~N9(X9y^2tMM85%EwVe zWqBM47uEj=c{Mx+5Ef2BL7v%(34wwF0HKS9{?+)5r;^zJ2;%NTFAi*%WnqU#zyJ(s zj%)i1%6VSHO!ZgM{`I=Wh}kK+yzUOG1raI10Ja{)L9xhvmA-!U7QAJbRLR~K^1P;= z7(Qh%LGG>@8WT1%P@J4VlarEgHV|_&p5$nC7~LmJ*6tq0qw>vdXt{-`X1=tl-7P1B zb&&ou9Y~nO!+h&$YaWo-bGrgbEUMB%TABuk>y7 z-irdlsvYCn$%smCbE;ZVXLz(a2Q9TCII%vX7MeRpr|nBlF)&$IY^DWG(WR3M-DbZe zNUiCDYMm?~4i`3{hJOcwvQ!(`1054+0@t$gH$Q6}tj|Vc#AWB3nM!U0iMP!@CU%g@ z!MV8=vdQHRya5|6!}$ri9GAHAh#>yZxd0r9ax0j+1)QcZn2}z-7aG86RuUp=5M`o6 zOjm+ZJcoo_-~tkB3H0o=rIQs3&Qv3w+(A~+bW4s}-@=r35RsyhvE>sBOADDycS!L8 zO&a`s64Qjx%nV;lPTR7=kd# z+uE9k1H6<7$5L5+Gc34e_TTi3;?~pq!}gNlk}`;r-Tq|&e<7(Z&C+hTcGQ1qB$qNO+x%F2m{IY@WamLtRaWcUlz^bx?`3Qx%cg?eG<^P#ktOy@p5_5wSww_i383G z5$`dnL0rW`{N>WlsIIy!7w>#%NXOqR`fWe+Qlv zU%tJCC`7wfskBR|rs^8HIXn9M??n=Z9QFu!pgJusNu(m8)z)%h7v(e~Vyv+J#$W{y zuw&92YL+6c+CY_$OmMXrRCwEC=+v)~sQSK#ees8(ggbDdS{Ht^l`l9s|H_Z~7v>Y? zZ$iU@np2s&3+2ZnYY}-`<(bgEB7C+ZvnN^|1d|ay+mQoN{r`h94nwwR&-c#m1b_8; zPq^;N=Qx$j^CRFwB3BM5#}APvBN_m9&IVyNU2_s0=M$2+b{U$RjlLn~l|82cPA-`+ z`SIK+`8}d%uKU*$xNfcTr3TGt&}Aw^w^ToVQo%tnA{m^+qan=;vJ$)EDq0G_ht1n$ zXLCT*%EAPfBXQZ@<3u}Ql4O`(eI6KpUw4&GBHhsLa~xWZ9k-YOc<<&8QWB5Vj|Kvd9i*lSvrpy<3fHtpVa1HKfm)189H@)4K`?iw@OpU% zmf~}HM{VHf%AFaH9%{~Hv@UWacY2+hq-!Ncw0!Vwo8_QhdU^UttCwq-GC%{x4%`FX z!c!;&YYpr-&b`v}O#%w-jsA%pbQ%prR?a|)??1vH@HKtRt*(e9R zhu{OrY_6(4zy1~|aaXsR=hc9Z^fsnCJoc4^M2zGwN$cOhhJB7@MtIN_(Q<)~cCOuw z@$r^}&_xQCro6u;5U1$j|7#N`H$F`wpDxFX;)56csa$8F1*0BY%>eef-7UW~sBfap z`@_l^i}K<$eRQ4%~%1T5pb!33n?fXCOACZqfnOl%B~(zi#n>mG2zNq z=3nYfjPteUVG26C2fBAH+rYO3@5<8u}i%h1;Le;q}9k8ep|78mnC_7e|7V~q=}?sNaUuA%P$ zr>n&~eJEjG=sBDuDTR#aTpVWNP92ydqzT-*0-h3eiBUJj`BRoba7JDb|=6 ziE)|aH_><1tX^;4-XpcVI{@+a9dITSA?eW6#)vuCsv;P~?%vgNWX(l^TU7?P6RtXZ zqJigm{r|Ucmy3PcJL?wk)#RGlmX6{Lfk0i|4as9fZgo}QH_vt4HEu0u2yjZ3b`_Z1@Fr?oz zZ`Ja2la(s$QGYPynGK;o1+&nEc;6}WRN17YYdn0tLB<*A#M_QIRV`w?^_jh}V9NwD z+1w=F#{-sF*rSq*Hh=DGNhVmH@698+8ZIsF6*KK>C40(!TiX3ULHj0md>Eft7}XVj zxPLYmE1`BIe;?NAe^44^diX_BnCC2P&3u5ah;rAA7NXU8sBcVCjm|~1DXiw&`KGVK zQ03_lPJ23|I!eJ4c9bJ+70CC*M2GKy@(=oWU8`UrqE-fz;pZMDBp5kGjdW9T+EFie zQUfGp2@&&x*9OdQWdBk+3WYOTGx!F(7x||#G5yiHBUsPA`W)TO3?-X^M>>3SjFB7L zU5HrGn8|8FX?xCPOwQ_|+LWM!IgEIJoVs;B?awA1INVYO+ayAeRxuxjnS{zWnJrdp z75x}p-VdhyDGNalA{ZSp)&Tlb$T?6h1=r#n1~lV_LuN8vHJUTat|JHFnkSNahy-YV z#M&_koekiVIz3?s(2G4-x4#(O9|sf6?uC}Lv)K_Te7-2YwUz636T;2?HVXtTxPr|T zNUo8x7y6ORdcpG2&=nZ%{t9V27Xo$i)9Ctf%|3CR)xI zau3n=5rXBXcmsE#bLDPV`?g^}j~l0ZKr6ZxmUW@3Wq%jcg-jGw8a9O>%&nq<;d1xH z6T92cY-p(Y52jj-%Q%M8-Lf14(%H%Zu4=0S!pvQ|)Em!E&HCEpzKq(A`R5T2-gm|9 ziP5R53b&*Y^8NgN|(M&_BXZrEbQUtOPp7w`^gbF=hDg z%ucLSP?d;Bp>kJG*dC>x*5hju^VAHy%?HGz6$w6Zejc~wg>sc|3|2FyzigW*B9+R| z35)6vsAFkWx+nM6KWwl$8-1<^L!DUO^pAJ>J>tdM2cG*79A17%>-&#`O?Hdnu4A2V{6(Lk`OmCTdtNN*JspwS+iANyXFFc ziN@^n31y6|wk=>yy~npUkZ=@ZlVmW0$_aYO)*VL`DEUgnL_U*T>@Qpie-LUc zV;LcT`LLw(o+O+fUwth%K;t+|Q}Y8B;YI297p;8F#W*WNEl1rHJ4QonOCLvQJ?7il zWTg7QMC!cuHsxDNKTli2EcpmvQVtn8l;996<@_nIL3JrSR;K2Ho%q3yavd{sNA~gm zJa;Ov^j;WjUo@NzYPLQfysPyX#yxzyNzH77U5hRDZ+EKNCujeIW@ z<=r>g2c`)9K!T186nwi^`CASny}_mCE^7i>>#ObfeYr39t@5K_l;*U3r+Y@u?6ang z7q-@1tvR6U+nsLyd;47U?XE_nWjdGu5a#=wH7`;TL={hQd3|WSRYnR~d2#xMx3s3B zIIj{~8@ z_W8=>g;jx8=BY{TPL~p9(w^A&+7m13;WGBH%qL;96|!q>?W>`TpRshWsdoYv}vKmy(GNTVM(m1{&E#bkEWWI6_;&<0?BXFFHCe*mpR>ZEG zo@k@4Cnp^XPYAKQ>q=>i(l`ab6DM z&wSSw(%9jKJD;BJAtH-I^%qtuUDZF#SJ?OzeRWikk~gzYK}GOvu*+>0REO9xC!pusO7FnPU(twrAhWbuG61g2uO$$hwKj%eK;Zk(ZA#x2^pk#`co7&nphQNVpa{ zvM&^}VXlNZou+H(2esS~Jig%Lb37Y$haFfK zBK%I;2_yI@L-+jcZ=ZeawSMzq`+BPrak_wMs4*?7(NmQ+zqL!_c$G}L&m9+4QoP3K zXRRh{r$fH=cZYr5i*NIq({MJ=C!SWXXkgznvvi62lMW(kOF?jN=Zt5-d71gMEsEm9 z)4!6h9JE?xBgqEd%C%HMIvl*qk00$#zLr_KDLKvIqd{qWhxNww)^I7qT`xaB9d+6o zoB#Usdwyo@BneiW@MR;N(VB0GigF4yH2hf=|KignO5g|kUFIe;q?$0D>HMm^Kzqls zYLC4mL%mpqgC9;f8y>rLyjv?F_|%L0S(=ZM>)P@T+eTF-8*N^@{j_gp&)N1qhWbEB*`@$EwcAI{Jl$vxfMUaUIYd;Mr7>W_!mq3XNea+q?LLh1esN2-q5 zN9fGvdVK#M)D>$%S)XaS;1r`SZT@J%$lmZ1_2i;_SD5?9G0nuB&yjWFY&TCHF)BT1 z>YPgJ^wqpShyLg-w>T_EOlMhsUntP-?fSgyezDieu)a|HQKc{sio3~LDlkw;dT^^} zh;qlSHt%FWh{oY((J#9je6}W;W>2`|c;}jY7%MY(2SxuK=sG#L`aA4~`0!f!UTf^= zHxDDpul2=pPjJ~)73@z0R_xpN**2f<3vOv5+R^qm$nTsyS6-b8lF%=ld3WyoZ$Axe z_0@P}VDYJu2NI3biqyWXZ;M;j@)-Lw_ zs)pfu&+3OP-x(E)ZUh34L-yg1lNyIs zGL)Vq6lr_o+=&@=@%8VnWe%9hRgykT->Ux~bVnWf>NRhS8V&DSTuNGd>VMF5-5Eyl zM>0?P-u-y_h+omzz?JW{pX%AKeSe50{d1d;%Qw2^t?Yf?8C{#%U2yHy^23uIp2V|fL;iG$;(8^O70lgFBA&w^ z_g#(GKOss^dF`8SbfnO$Hdm{QK$lZKJzT{^<3rV`nsiW|w=;Il5K6y!!R}`QaAHEmVApUabMh zGOg`Awx2L^+9B5AaF~n#)M_&DB=xkjPV#pbZ9HXc{jkmG*ZqzJ8N{9~dCfJITH>X> z_2wmMwZ>$vVH`MbvDC zUG=Kb1pUwRrJ()G8NOpYeym@hZMUD>WxNqq;k0o;k~>PV8`qZBj~X5F`MM#19Tc`DGt+mBd8Z z8ia%bKrbB5 zx1~Lzs0EFNKZ8)gv!ha!mP{T;*out3Z=)3X!Y6#S_ARXh<_?0D0fz1gv{2g0)B*n< zH0u86ofcnMBFX}dx%ldAC0^2!e^jD7!P;N4QX1@Pa6D9<;D~RMuIU zkE;&{W+}U$Dgh^&sS{>Q*<#u9NLg?C;=&>T)@DEOd&uBxu7zMT=d+q5(1&Mk5`2tb zla&V2?n26e6e>XLl?1~!@nvQb`R7l>t+(gH^#va<6fXsdjQW5ZY^3-y1;VUoE`Vx! z3GXb|`DSUvbFdw|VB$jN&hy39GEi(>=R@j>_4B`1HH)K=uXZ;7fZK+^5s=)JtrU0m zsIt^KHi*=1cF99dytYCx!f(*4KMW>5a3=PEojVD=prgupk}-&b5sp{!Tw%Odl}9;d z*G<(oFpcd_D~p4v@)MnvTZQQ$Xa_lkpP^gg4198OAa*=BFYEVyO8IarC#PWKK&#Z( z4TP6&_Z#E7fLAV8H*>|u>ZEU*(f^(g)2d>)0SzjFFYaMGmra!&S!zR-sl{@E6BRH|&|6OQMp-=$JA2>t6d|BkNm0 z&aXO0QocqG`Y&3oC2!4R6sCAX1W@;c1&+jui44x& z|JSV*ATxM%6YKZXEE2)-COlPkBiF_X7iV3j-VQ+SP4HaSo7Gt=z&tlzBe+)k^4@NO z?Vf%))bQ2%JSZl-cN2#i_F7{sEO8J~31Y(a1rnzP{6}q2;nZ0voY5`d#vO;|s1nN} zzyqhnXfshjB(^$*}*pf}&Vc!#^IGGi{nLNfIp{AD5!!PLWo2(PEk zM(0{Y1bYrdgTIzzJlG0ZZ21=JoNqBqTX>PZO%Ou;S2+h_=Il)73fDo~yv1$Dez?)K z+^1XvR|S(lIY8@_fiCy3PF_5@fwD&XP;#XNc6c1Q)UPm3ZtjhRgze7&A|9%xVmv!P+Bt<7}= zj?!Y3u@wUawC5|{IfN%(X(lhP=T>d>%0 z6AJx@{pBNV{m$BT`5T1CFo-YdH1A zLZn73I&zXKSXg}8PcAZVat>dpZV85hY^Cr7_W#e_*3%q`tM7NP-ND%Xp`;VjljZ+Q zR$r=~vYra=sk~0Ig=Z<?%k-zMc3V+_Pk$+*;Aw;cUX{idzoha!A%?hs+(!s<--uY1r?;Lx95 zbE@I|Q&6}BE7Pr~kowwPJ7zgBO`R8+X2Gm!%GlJ(S8tRYNdm8G<*3dK0}Ysa-z2FT zlczf4bN}8+sWA{!k0uEUIOaK0al8wvZt4|YSO5mkG^^`+fJpLf4##-R!!PYD-zoQk z85#DW9V$rq!(`7=MRD5jZ8AKVl}ZKV4%C{-W3lPFeHo&oQq7J7h4347aeF{?SvD%+ zgn!!{EY9dwwG#AAzkC<>!t6}jGzZl%OYQM348yN30@Q?}g0`WMj1#DZB*v9Mm9iBV zdrks}^Lp6YW#%It%tB97FxG0G87yWdz>af|cd7#}NYv%#))&|r^+(2Seab}3@2RC{ z5yr7({GU%pDcwnd&Da9)YouW(Hl?e0?T@1@e1cF&GIE17?l(}{LRt|UZAgY*rvw@N zudS%5t%WCb8@S`B{LozZzb^K>TD>9TM?he{;pQ5w_RK1lJc`xFB z?cyXis*IV5kQpo}r2&>pgWXAOcQtRQ9>`}fRh?99194V0cOLi-P2nsu(LISeW}d46 z?L#!+Y6K_^pgP+k24sW?vEjm+c8^p{k5tQ-2Rr8iIMSA#pCirjBYb1fhjH*`y+%~a zmx-41vmSIqRG6$Vv69*!8tiMM*o{Z#c{}v!@a>=2mQB zqn}I=X|)9l6GtUy?WHQNdEEl8t)e{@dT5CT6k&cT6I$0iWl)%X(YJmNFanY!5G)0h zp)aorqDp%OyCce+R=z-_Qk=4=J&GrwW3)N?Qr?o2o8w9gE6+VeR*{NKRs4@rNbpRkAV~}p<8?~|tx^iREX3+_^G!GDumZE(WL+2l{X?P&|oX)G;tj|IwEf@FSLP`+E55 z@tW~q;M(2+u^#N4byJ6ZjH_x;i_wPLR#JbVuP&MGVPQ=`QSv9p!atogOZag)2>C)> z-nhEN`&%ocd{U{Qp+;?PJ@hx6JjNm~FY~y#Tj&QEc-2 z*dP0TA?I5^Ik~9R7kJDbL&=QI2hu8pel+>xGn^^Z*XT0daKtPzPHL%~m@x5l*YiHINj z5nU+f-JIj$MV09ihPcEa!klI0SxYA-fQfpbB)W@Fh$z!|-~s#6%5luYQ-tem8w6%c z&-;Goxv9>(`mk~26{sH^U}r&zMeFH{dd^8JgaF>r!G|_To#oH&0kDv`koiHT>f4I* zDWzx;dziU#pQj+Le10s$5g@VT3l%CraF(zD4hlzoY%W;oCMS2yfI(DqHg~qx&6zD< zk3B#4Ev;_w&W{=Yxs;EBA;ZwH`|XK_&r+^_eHW=gbc?Ft(cWFklc`HAdk~=A;t7TC zP%Kt7g_FHuUUj~Iw^aWU3;9j2x3zNix=CsPob40OGm6_4_Q|D;wB(AYFJLcTDAS$4 zw5yAkTFywy7lBUM68VToMz>NzbixDzKuc1Ah4F^n+@6uF(;z! z5hxrISd#uOYfoQSIgX5=A8OS9XcqQ<=2s5?-_3doT&VU6>*{Eyp{Q)&$nmEhU56Do za&-y8f@&v^qsaQ@`bA23Rh-4VczZ9)8`4SMF|pZH!ZR+^V!|}^;GWODHK1%*nRj9# zi*d7w{Ki@0sB7s3uD#wtZanvtU>U6dVKKAU^INyxPbtV1R&K70{ z`~0r1r_FWKwlnV)Mx^VRwPL;cm$G#cmoAzfK_r(iP5?;IVZ)nNfybUOJ^TIn^G5AI zPbt4kY+BYbEYKkT_H9R>@j5cT?X}G-{*R+jer?p8BI{3U_D0+}yRMV5InYJ( z-U+ttyK;wQiEQa;ild(<%eU{XL4?X<69Y*yrwk9)m;vHss{xmjv%NJagZN+ghKc3) z;44igJ8wF_fjcU|0N!eD!m`uV(#O&*_{7wr=G`U!}rdWZD##gRiyMxv_pQW^H0{d0r4^b&_tiaxn8v;Nw& zo`jIN{lm;6uaLZgp`^i4vqy~*5>JeGFkk4d^Pzv9(N6DDK3a47wpJvT#5B*HiW`2` zSUaS@SMAbV?b6pP!8!$3gJca3c$Z_<=d}+f1a5T@w7sS6`VZ-@{lTN^Xo^Doqlllz ziY@t8mf5LQa@E+e$G2`xxxH^o`zne&a=G5BYs({<{bbbhw)BwM?Jwmlc@7yj*15q4 z`RjT=zMp2EJ-gTKY7S%9wr|0(5)32bu<+B3?dpq%)ZC2^2K2oR=k*2*jFSUNHOa3w zRm~q`_yyYgnjmkv1O@T+_%LE&V?=t+ze?oMBah9U{!4AVcQVflDAIFNHQ_2Z!u#Wu zYXt^!r)EP+9yv`r@+Zp@Kr=kN6U74mJ$1F?^ki? z%#m|5*KXN7i~eKgg4CaSpmc(r+}v-Tqm;Mv(3Y9+uBYC=FuxSE-!Kx&_y6Y@S25mk zRrJiZD(+I^pR+*TgU{7yNO|rZ8#zC*S|C1lbXQtyNeyF@n{x!tmYebZSkUs_J1thX zx`uE8W|2N)FIUq3;iX*?m@Xd>sGX8dQ!WV_WM!^I8FkJE`*h!46w2JywYnlQGqR$b z?lyOw4viZhck$6P(fGV7GZmacOghXjLUJr#NFE4SW$<%UUb9}b9aD>E8D4y`{A;yw z>D4vHCMtqU^yOzGT-?ubD;Gpf&2wiZ)w*u^O(kcwOUG|FsMeDH(G2KGUwVk?wLt-KT23 zN{&{46qhSut`$|;@!P;o>LxMvA?&^$8^nPA%$#sz21n1bUPe?RFZf_ProppRH}15i z@MgVk1Af$4#ySf&Y_3yR`rTBoLYUl!U-R*(gl*Et4kf+9vGQ6FVvjO9>6Eu=e%LgU z84~QC3sf1}eU(c#M>L+Og=MMbhH|eTyua1%juzffu-cl=BziKId>CdgKl=Yw@#u%lwF=-`!W|%{*R_X+ zF%+8l8Tw}D%CwaR1hL<>@C%WYczdh0G37I+&w3`4Ns{X$YvzgqG+FECVA+h{0}BxZmi{nrxRUHrylvUK?21YunhgCn7+9%(BK5s3E`F`EhBK8u-s0SBwHI!2q5f_434}~tv-y) zBgXSaFT?b%_H=QPu%56gUAi2_3`vO8Z7BeISKh@Pz#jO8OX?mmW8$~sKiHm)V#hbx zKtf`JqZ?dzYE9c&V%DE;)*qzy;XPydtM}GFxvIlE0D!DEBdi^!P`=q;h@OTSv1fX| zdaG?Bh`UyNXX6jhv7Y+vT0x8ZSVz*wGD+9`o+*25Y_DLG0e z9dJ`jOl+GMR6#P$0SATEGwvFqzkThWcT6V0UxaxXXw3acfWOrJSr`9ss2^5YihWDg zMB(ij<>-xwHg+o_>=Ymvkcjc;8NcGmip0gAq1DH~KsroqehV=qc>?V6kMW!Kxeqz_ zRxW6Pi`Z0Qkae!|PXD}mUo2WOf$_G6G8W$k>TI?!4~uiCo=akIerX!Ni@`|lpIhKA zE)6qPi@v#T{_IWR6&Nn@X}QI)Zv?eBewysWRsUh;hTQJMaY9(7HJiQlct>_&PN zJ-B34-V^$}5F-UqR!n$wM&eiopuCn5(qHLi<%7)}0!MfOV`*5?fO+R@+CxoeO!k7& zGDlL69ZmACXQWq0Z-hH5+Z};h)eWYgGA6`PN96} zYzi0k=U30)kvkBxV!J}=O$Y>z9Ec^16?-!h*i5L62vA~=o7n|0Q=*>}3#nEWL>Bd9eUn*r;1uh1`txTC*f^!0O zf!FbiiF6q&_qM>-Q^da^|DR@Um286iYAcsIjN8*aGG+lzxkH8aIEorC58&15fy6^x1j0WQ^*ktx19QwpTcVQVtU%QyM7~j$ zs3O6q=aBxs3&-yE>Gxzzy0-mdN}o*-;0SQg&8c3(w3A5PJ%~NJFtU2rS%F_^x)YIH zX?$1}a#8didgHq=1+KxC34TjH9aU-!{+Radc7x`IFxRQ>U(Br+qGih^TiQr{Z^@*D z1n;oP;MMpmN2L`Z{n>y3TJSv2bC9{kx$eWsXpQUYx72&Jq2nbRYSXH)=lR#Oku}Ft ze1eX*X|4F>l*`9J5-t>D-6@c6)IsRw;b?jsMmOc@8Z%7VnT%0U3lfac(Fz-^zOr_o ztwyzp0d?aTs}@D21-0Z1Zf71Iy}2{eK|#`&m-Dw*bduVgbiiFxl;c$0$lOZbAgReF ztbt~`apa!FBq{zx2f({TJaFmL#}b_XxG+_}`+mK3Ag*Fm8?u|*hxDA4GK#8#b`qsd z!jgPJoD#h7z3AQhz4`@ngUqcvOwdt={a$L7^8j-MW38-|qwo|pS}yF7cQ$E*3ax7O zI&dv5UGmnP3{GA%u73i1AJZNGB)QccH6v_=zbO5>P3&q=BhZ}Z15aa8^^VZ-Ax0bp zymH(jzFHu0@vme5q*F?xl@N3mkIPe=ULqoG&jvFj}FoEKFtP+>p zpM+|}0QFPmrMpjZdbL%pk_VLK`3PS#QZheItKJVC7&e+mp;U|88KWNU60vHovmGQz ztZ*B@rEYA`;ju7&)IXjF>H- z0v-1dWdoydARY(4IFSl*le zMk}@<14Knj9I0grNfVYl#{Tmd^0WP)!d;h=B_)kqQHlKfpiZqDo(^|+1m9)ylx#hY3 zHvXqRHAc^Ze#psk0g1LP#P*Oh-Af@s22cFh+3dG}8Btk1T4hQTRoD>$2dvm1{N(t@mC=4TUUZ~g6tYZ1#SO> z3J$%4mNsYFTH5C1(n43BFT#{NHZutud?!)BkXnv*A9`bjFN*q03ATsq5JIacqHEtA z2kBWZ5jHAF90O5xCgJ(9C(SCP6udB`tsVK3tJlx!Parc^7pE+cID3i>SxRfHqu{ly zH-T*7i1ox6t9!r*78peX>r*(P4T7$>M;qzRAz)~GR$Jl8CDBKtT0VrOmq6pB|)vlmgEy;oor2a4Uc^GCRYO!dh|Tqgen zTfJgIy<`o#Oid2z7tEmMM0=T5(ks*6s75e7xiAThSuvW$tVrGNg1y{>^}}|KSBdio zqxJ;(9ZYPKl6op|PRr0O%o}~k(27IGNT1R;qWkk^^YFz`n)x>-K9Z1GZ_=L(JbH%3 zZ2h)w!p!nK2igp!ePSAlo?HK5Dl^d>SAWzslc_^YWp0myusA$D4KOki&YjL$c^5S? z_64Hiyc}v_EH^*Vj1mzxls}%t^S77)rgyKe84p=yBtzF9qJwi9(;ZduR|3^U2>rO;;j*03(@O4TD+|wI?T95Qu>UgxFqYn;=2lhJHyG<7;9rHj@ChQe zV#|eYC1@DZOVAUu)AwXdFL0#rgEHrlLbrhaPy^d{aQfK*&DpAIqj|1RG39F2{xu18 z=5D)M^ChOLFSmu0#g|&tIjlMmbJq8_2YoM7b(qgvsscNKy7+(_yZ6lg57JruvJv)W8;{}?bxl2O28i#NT_u~r znluWC@{%YSoJdQHa6J!(a78?2DV*)A=HQyrfRX@?u4R+1~$6QjA*=g z?RUAtcAK6^DM1wIoxQDpz|8nwTJNj@px``G!Y0NHepqAlJci8Bh#lMZaH08@+~@FI zUHR%Wg8QqD!h} zVd39XD5wgJ<6~ndpD`RBsRlGxowN7|NXtt(VIK=8Hy-TYh`Y)Y3!bTXoKioWaX(Ia zbpOI+NSn{(PQQ(I4~)w(laFvX8aK17RRMX5a9Umq!_RDm}h{~7d9ZL`|g0(|7}RxB^7nIv|Jn>N?m;_M14&2a)hFtPih1}^ zBM{oPkgD6hK@V1Z+0f6ZE@Vx+Dq)g#&QapG!_`wQw)@x9z8LgKz3*hg$@@fd^+8%4 z)jv{N9Uj2(haWVcaB9qvACC(k8x%-*l%9F=-@}f%+xF&Pz5H;3MCP8xXxD>Ik7|;` zbiW?kq~((-p*gu|KB6*i{QQ9Xbk_0jZWp8f`S;Fa%c8VAq(x=(q|!f4KEZzZI!Bh0 z%)hxcnBC0&lL2TSVY<^(to48XGa^pED()R={+jLE6quN4qN*3rY0)?-jDLN-jg_U8 z{(E}nJL%N>9Jxn>&*`pwlujUCbKN}dt-q&WXw$Y6BwfuY76!x&I?T`B+P+{t-uB0M zIe9SP&fY%7(NkBkH(&1#`^xas{&-H+U!y$2M0GaM|F>kwjKirq?VWx!#{!-7El=4g zPs_qHSA%BG3Z_2x-F!xxx%lTu$d+L>V=I%rud=V6Lg^(?X3+}k8V-Pj$ zxiWrBA^LwLj&SRI_IpmjbxH>>UIdx zzDN;?|1%$E?Cbnvy=b!>I{n|ETxpfNpsOhV_D@wx&ST2ph6Z^#h74Qfv4XTFDD&ho z8t&%V>I*xUd>nUgEPniIZ8AeN8h`KYk)6kkPrffIOLctxwyrSyx0R+vPp;osEsQPm zliz>kOLn97!MH6)3!BZ%ITKT6tFlcgvMD_xPCup-Alkn>ap*6%Odyj8#ifF^zQa$* z8@_C*w{x5|)BOzUc;qT&e)fbZOJTAJm|*qL+yz|hmRH$v2X17ibJR1APaRr-xyE0T zpY5&~OK!obv^Cy;?~2JOMj5vfTdjCv({7vO8{t48Eou zFps9Jo1_x-yvMT@%1ka@KUbKPyvQoYoYaoX-7o;v6&9 z&dt-P|2&b+hSNfGLEnvQ{N?|cR=Q;cGwvCjwaZ)EWsk#@UZn*DIC+N#t(SZ&mZV23 zjsNK+!75hQuWv(i)wes*QR%#nL{N}&P^L%$^m8|+V?x)q2SpHFB=;A?n4wizLR-0f zJwZeJy6{05Z+ayDu;q1Fv!>7K6>T#Ib<1(8_;;AI9-aINv>nn>aaF;Lme*RtDw?~v zTTS{gJ+MyK%opYP#CUBPao>1;qWHcuL*Yu3=xbp@=k|5eeQi7rTdg_N;;H&5`

    Mw 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 W+G@~kn^sV~TR+Gj+FSki;{O5fzY?ne literal 0 HcmV?d00001 diff --git a/docs/.vuepress/public/img/bg.jpg b/docs/.vuepress/public/img/bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f093e7997b80eec6ca2d9e554201f40e9b55e29a GIT binary patch literal 246625 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/.vuepress/public/images/dunwu-logo.png b/docs/.vuepress/public/img/dunwu-logo.png similarity index 100% rename from docs/.vuepress/public/images/dunwu-logo.png rename to docs/.vuepress/public/img/dunwu-logo.png diff --git a/docs/.vuepress/public/favicon.ico b/docs/.vuepress/public/img/favicon.ico similarity index 100% rename from docs/.vuepress/public/favicon.ico rename to docs/.vuepress/public/img/favicon.ico diff --git "a/docs/.vuepress/public/img/gif/\347\214\2531.gif" "b/docs/.vuepress/public/img/gif/\347\214\2531.gif" new file mode 100644 index 0000000000000000000000000000000000000000..e84d8a288fcab5f8ef3470ac21f0a21cb949250a GIT binary patch literal 170358 zcmcHAS5(vC!sq++253TW(v{FODkvagXworAN05L>S7}NSF^~WuAcWomgdTbT3rz?; zRKbdf3fK@)u^}kRiSGT*-tWwwb1`#HR<5%CxynV>^Lf5MQ}g56I-XoWKj8aAKtucF zhl|OZ^&O(kZC~GQti0X0Wnlks{?mksbAgVPZ6JMQc<%ed7qgF+zmLvddw8$t`{+)k z!>TRx+^X&`*;S^Km0#C>9d|q*5P2=CU>K`y^U?NfSX}N$-^&R(4cgXz{wrM}`-}!B zmSV0|e4db+Ep)=Ba(+&5uUY+@*)<3M?unOA zm)0Xca8}LTlRgjbH*{$nc-8j&`Mt`n+PaQ=Ww&&nHc170_e`#iKYGuo?|1OJsH31o zW3=Yxv2NUZHLqh05ynnjpI9(=4{Xc|Om369)$)*9j2&$r>%RZs`q;sTwW1R0ND1|w zYWTgJ!j}dP?1E+=a>JdbA>3Hm{klGs%>M3x^F|h@V$-X3@4{t#8%dp-x<9q}p!b31 zT%(~Of^hG?d9V8JC8qb?z|?(RFUa5D^|n^ zYU!Mt|DICH-J>>g2h7DhT|Zh8Kb;QwQgxkme_`{>w)IeHOiINJt2g)isK!haN>t_U zleG(J9hy%XT`w}Sm^ZGJOzhAzOuWU3E1Q1n5&rm)MRNTUc}~l7Jwo5iyMcS}9xr?) zTAgP1J}hq?-6?zUjm7DTq46EN^#|^~HT8%ey0`k3$u@k>mbr4SV{|b#gLS)Sykq29 z-^|;OHeN7M)uEE>hn_SJ%)EPh+;vg^mEC6q6IB;g)-#x?i7!gNeeZ46`+GW1njSs>a*I8r;dm*{@G4u0O#i!{rkNdc_x34^!SY|d+-j1X-JxytR z5|dJO@9C!_kLvC``Iz}`BDd{%SXcXtdQMi;lfoDGQtF?aEY4Y~xE_|$&^Gc$x3>Dw z)5gNdJ3})o>Gh9urf1HjXQnmICD%UbyZ7$h39pYf#FYA{A8ou-8lMi#ypKq){AlF` z`1_LI=Cd)ew=*&zm>k%P0|R*<%5OrDD8NI2IsmW-zy&Y>0K_(+5h-oPX7-U0LaJ_D zcG*A@TG4`G)>1x{B7V?yb)cnUBwg;<*pl|iiqS0W{zSLY)~fM54ZAUh3c7l-NIPsL z#{A36snR1kasZ3#*ohLjQ<~E@MS>mDM0O8ucD*LwARwPI=u#p(%x?B9_swE_; zGgfQ-koUC~@RPCk8`tZd^6Ni0&2b`(QpICI5#samq(#6ULA7d5{wLN*#c#9U1NEV= z1oIE(1#>zm$vMG+q7TNuHxv7lFlwjg#Y10?=I#p|o+xOO>N2~Jo4tMH+Q;WTNQBtw z`u0z*ahYl!Q{5e3-c0Wb0!YlwS)g`AgSU?|I3X{l2U50WOQl8B=1sWu9(PJ&kSh-i zK1cVQG5z^-BWq-aB!x`b0>C!hG-Y4Ny}0HEzT`;+rT~UpU^K&pWyNr*=7hRD&&d3msL<6%JS~qwc9=mF1;wD!9p2ElR8YLK*-ll)ZIt z%K+hVzG4T0R99Fjua{W#UC~PZVan@yC8Totb|;J9V!r=oXi-g)6~=Ju zKvQ3z8wrRh^81`JZiW+VYt6TsI6owFZHa-NR8TxE&0@1P?}_Yqio+!QCJj9Ht7%-H z3%Ye>eP`&P#`pQ~dsiyL-i3Nsn+j`hJJmNT>N){bg9yO&#mI-YEdDIb4;wG&rh7ME zW;^|EzcmFV96TvkFzu${@nmfH=?@W%?h@;J#K=j+=og-2}*P4Aw9}52h~ddd#WHtV{cbU*tc zhGM~5;_i7PY(4-fYB-gE%a)Jd)>CMB)qqSgQ<7J{#NwAt{HPPFy#Uwwy!RDeKG|7m zQBs%=6z#;(WEftubtrFMTE79U&l z8JB;!3tn)0rxGaYTxy)~IiLNn5t($l)h;!|I0FF-vkXsf?+5up&1TVpA$`mNNsULt zZ@n|aWZyms)!iI*Jn$Zrqf|w)LYfjo2E)cx^3@{VwjPx}nOl1B6->bsdukmRF*dV% zU!K33>a?fiXxI)QXn}He4G*W?^)_YZS@}fYb3}>1+F5WWPC}XlUw#Rc*L)yE48<#JR5(zqgccg31(yH@*01 zY{Q<;wL}d_j=w&^pvRR6GkIB7>t1FkRT+1v?(TJ<(~!T}tsmUq*YOw{A+Se@iBNI- zSQ&*Ia49;Q!0s18iY>$3Yg`|kS>SoJzr1>)RfdR9456eW+( z9>zT=7h?{|Q3;R6woi)|7fjY!y*y(ioZyJ57_tjEkz&sgec;%5MZ@5N+!F(S1w?k^ z%DE`|6O&ih6|XMTx^DoS`wpq?q~QhvzT~)Oy{>OL<);c`ymP}%KWLIFK7X;T!>LC= z*aSn5S5TV9eU;Jjm=_4@`P}7^8@jY(_2OQ|V8HVP8!=Sj)Ay$6Y4v`Kxb{fY+9@em z(qXI@U(&^s0hWDt5t@hliu{7}WuzCgNffo4KN=wmq#A_gLw@nSO{dO10PQ5V*Yf_l z!j3Y%#^;3lJ1>4RHJn!WMPKTbziEjp>GsSs0W^S)+w!rkma0$Vxl`5&=hFG_PKFNd z@Z{zxvV)+q)9u@8?pSD1`V*Y~azt;;#y&ymGSJSC;!O?C&2)+Vufr9hY{OXlOfN0A zYJeRv7w9BN!@?VO+V^06)>l!ba|uVfzD)+Z8_^TgL2olVCM-Tsf%&3wdXYb7=#IcO z!W#tgy2wM)Q^P#j%Z3o;NRY#Bvb7jq6WDbLhxP$J>w6Lx4bx#1IlTllnYonQ$U8cAJwtM2-bkf zp8L}@AMWKV_Os-yz0>awsRnnJQ7DRT_;W}2#|!Q$plkDXf_1w-IUyyJX_ z*rRCOj%VLeV|KOvj9q{(2gj+?>8KR5!MCq#;~?ortPZ^aK7}@68uWIZ=-uEn^c{!x zDavC`DlgtqK27jrY(PSLb*^_m%P2Ww4pxxWySM)4i%C9xN9;bVh>bL5`U~;wn8Hz0 zR9ZQoH{f+`3SP?5HEPNTCoaL=((9!Ych3G6t$2hOu^k-hmi++ZeAk)N`WPMGYQPP} zcW+ylc|>$Yct36bbo<+@QPdvw?}JlSQA-XPm!EzI{&J5yE_L(HNoaOVULP(1S&dvu zvYEAyeLaGye<*tx5AUu9Iy|y)m-91pygWh-gJacdAHq`~%BHYmyI)&0tX&}I7F#!qG_gD@1s@ zSYnqF`K&XUnUr{JV?Th2tOF#R#wG-FE$#7%VP<5AU(x|KQiecIWhc#jO}M(vwUoqB zwKgvJwIhka3CaM}wRTeati@ruWKFZ=<@>0MxTHd6GAlf`c-bP5n80jDj?l>_a>+Hb zRO5D91_j8}2C)&)Ds3uJ4$O*lZzV>zi%^;VtbTw@X^s$8@iB6;^2egv~qEdG1n7I?uSH&SBo2hr5 zq9r!XO}S~t_%vDnjCJ2sMIEz1PMT11rbyHtB;q0c8yT9LiHD<( zV@PyG`Zc`&RYRl!2Y1Y!>1O1T35cSZOJqv7WUme&9o9f@qdBGMxGix%gbVz@XhN+| z7U5Qodq?iRHKeV7_6O&j&ZOM_d(eQ<+(-$amty)Tf?l(h#orMxE}_@6hK!8L4@Bk` zZ}3U`r-w-7$B*jw1m{tc^UWSzTk*@@KoqF8r`H-4nq0O6x=aW;;m=)EykcmW8dqL6TGx@jQ7G`} zI+A~Sxfh0~)q?rQ-xjr-#ZOBVBh9aVtunXRri=F7D}4O6uzlmwQyqk6Bx=~axX>Q# z{Pw_DR7s9bVR{vCO_@;^$pGu*TY(GLM{~CiC#)cg4@MR(ZW@$~YJw#Tp{^8rPVtrt z-1!C*1Pqj76(xOP=17#8AmE00NIIc>w=N7zE8o3>ECC>n6Cs0m{vl0tdv)1*1f>5( z85LRHJq#bKMhue#cH%+Cu9Zq_0JFkM3yaEGLWNBoV%;gV&#qK=E@$Jhy*`m&4iEMs zAkcUL92=yAtM)Dgs|8n|SpfyCfRsp}qidB~0Xfn$Oab0c)tT$Sra6*8UI1Y1j~X zhptYFuEr7gNh>u8BoJ+y?*vf*jH}N=Ifu?6HK@7`q}n%81y{w1HUa#VcodcdD($SA zqc_aq!4q>0r7P9hs_3>k$V{D}j6u!bdr%C%s@VlviUziH(5e76FI}73524$10iDEp zBo~wGTJrcYqZo1ewQF-Qt*NcEi4f2zBhLq*Y0n1~EN^(PyRr|d)^CnANnr#LB)(N4 zcF^1Uky&Thsg|EK_DUUFs6{Yix@DWD{W>|%fmv%pJu4c>zN-tkU)O@c2m%T2%7A!Q z#YqQt&a-WcR(V%{<-leYOXLF-<_bwf8iRDh$0oKS1&?IU3IT83Y|~3&pIB=Xzz9mw z`BNgWLZmi}K((}m>(F;7mHK9}BR6DQP&UEm3k4x{w{8%HVDfap>A>ayIlgjAeAK*9YSFyC4`9{`$J1j&|yx^kfT^-}+9|Ywlwdtt7`e~^jY1f$-K?mG7@q2^In`v% zZ2b`c<7?@%^Mu3DppLm~b~s2`5ul0gz~r(Kfzh zH4I^ghD}Iy%F}yRih5LV5W8T+jwiTw65q?fp5-FI)X#2lk~OY4cW%JBo;n&L@tC&EBe3P(Fgw3R*3N&xF`4Y1LJhI)L)Zi8AegQn7a77c?r za)|x>H6kQHCT=JbEvCU3(C8aDx;3D$K4|1NXq-A|-aTmLhV%&f z2TPBHbVE+8R`xGI xGq^}>D7}8o8^57r#avSh=8}@ZW1~v?b_H=Vo=ecQHTzWTm zfH2a2X(UP=oy-`{=pJRvkCtqWGPk$^_|bHq(YzpmGR9b4_gKUHSSASokRA{rjnt^4 zn_|Y>8RH$RgBPWTE(D=Fr6>Bk$GYfa;cg>-)98WK(V^}MMvPqc7P?d2_`a3UjN9Za zV-jmSGB-c@ECzF8YjR0%Y6oWEWz5ua3>wIoT4hWu%0|3H4V|2J|Tqx0{=-GV*qs^Kp8LsDEdnpIsXf3h^!aQHo3ND>oFbuw4 zYg@*bqFbzb5GbewV+G_OwH6;XV=>a5g(3|usal;1dgHlXHNs9U)ovyc4-&hiyav|> zZjqn!PA71jK|3yCAjwok=3C7t+0%6SynL$;3VD3D72Q7Ni|^B}=%2qu^xD~;gDDb6 z($qUXzZ}ndI%ra!7k)0_hw@$*Yx&Ac$#RSylwf%GWJUyI9l!tl-jNEDIr4CSmkUs)ZYJ9 z4s?R~D)%69>DB%b=7yq)L8tSKDqQ9kC#X+zftd{;{s(CU$N!5ouyljth0@8Jqi;&Fm3y~U2gD*3fYz!luXR_ zbnpm|G{PR`&vy#tL}8$#Guy83_Q@-l0#wDrKYjZTq_HtP3dJ1^7b_sSY3LlVtOyAa zUesD*<(ZBD7ipw1UJHS{%N9z~-UUdji26 z7v@0BtkxpOI*77kN=hj~Z0+NqGXA4x2|Lxx1qAiVUZ{#AL|Uh^7<9sZhkQ%t>L?&xQb0xW}v0P$-=IDu1%s zlv`!MaB`mF;pEPvIM2+Tp*B*z&X}IFnOQ7jH>{GsjutI6y|<3~Ce?^-KbPq#*{+B> z_J$!~tRR@Mq-dgTJbp?t%#Fb{RLimhD65ma3wkz5_}m|7-A+xRZ?10-0IzRW*DeQFH3y$rLa9iVcRp z3EP1*{c1$)6oDd=`lI%6kbI@(mpIh$1JFUN!cNoMV*-cbZdQw42jUXy%7s;j@VEoV zGzb)hVcoq*tRbrBOzuH@B1{%HfpWEeC-5PdR@HjHYJ^m;oh5g#2{HjH@XOr!HDETR z7T>Hvob?r1L?mv06HvUkEUAs78ldB9={f3}DpC&P+m7mqyXP7dbjKTJ5*=C5zf{_6 zisr7O%5F3Y^q+B8JtZ@JsY$w#D;rcOtG}GnJTXRAm>{^`iC<^aX8UdTljaRbp0($T zeZxwROfH|KfHqWZA(c!7k`%$`)|hkgyKWPryR66b?71k9qSH7nF;r3LM`JWcebAz; zD{^k1s{|}*`@B5cTJpWkiLu1bH!lf6)6}gn-B<@~`%cGN2bHg?aZ46h5LIj7f<*Px zwug1l?JMNq?T(})k+a|h>U*lmZU-6#Um1HeaQ1xROJtim$mKos(x*ZPlb{Wj*xH($ zjhuH#rgk5pg}SRBx7XDEF-jl($bm(m9sHQT?HR+oaHTI=gz@`U&*m$3QgSfh^^PdJ zI<|4XS}R}f4d&Ql4ypWOg9GB~Bs}$5e0ihXn;(018tvsSMAg<(`RGuK8O`9YW6awGuYZeQ`VB?Nf!rrOp9{r}JFIdk zCRk$ZH#-uy_Y&eTt4w5)aBGvb5RAM+T)w#l3Oy_zmj6)CMWTk<7Lh-f@;E!*YMIPfr%3EhILsnmqDMOB zTLj|yT$ag&BMG)~cd?=ty&bs`f72jC& zPEyZLTB?Ks7JydUEaY)BCyFz*$QT+yqN~?cQQnDh4w4Vy4 zZX`1i@#BYSwLE?xCG#Vo#Z+o7I_ZO!4?Ew&gP0hh4OCd5QkQ{R%cm_!e7Ey0#0aTG zBCQCQ(BzyjPPM4=qeUQK2k?|8?c@i`W=E;lT*M*9;#7<_rhMbtHA?)_26+yfz&w<+ z(rzv>o2D*)?Q~?Cj&^!&IG8h=#`BNUtdtKmV;hHg`nW!Tq5AJY_UG2Yb~X@jU;$y7dxOl@Vp-Ts;J;nZ0KOa=fmCZa^Q zlfx7cS=Yj^ty9y%wONYVMh(+YcS5Y>CSRUkx*~_RiOoJR_=hp<&2vgg*()2NRyv@M z8`+0jF#8Jd_P87e7oKGJY%OQ4o28xh^Lmq?@$eqh+dtRG1&UeldOn+a3JKGGo8zH_ z2`Z8*$Lxo93P&Trt6p-RhxNyVe z^sz`#9WwqIRhzO|)SR3n)(#)4J*&Tr8$||;Z))|tWi(4LvYiv}`7_kE#p#cb0nx;x zO{2xl$dsF+C29y5w*Y%y1z(KIF0C!OqeJ^DTGDtUz82{&0V$x8OPl=*%r~HeE(}!! zHK&SDGJ2o~&n!#MJ(ExR-~ta#z<$v|v#Qe{kK!<@Wr^lxjtIC0X-7J}TtyeAK31;s zZ?KWnU)FLdK>HE=K2=vix4eQ27o;e4uKa3rFi$De=+!JOF^t22}gIvJyK%4|w1G2Wiy&gEW{G&%T%Og9{aO3&m!kp*+%9s5%6w=8?vb z94o1?8iyCS>WaWJ5x3VMV>m#oZf*3dD;C63Dwsc?RtgJ<|EX0qj7L?HK-jg~QVTG* zuwm>+Ep{55Em;qqhTK^Z3`gm?uOTPjG91>B7yv)J-77@0X-Tzanui&L`Y_3WH(4dU zwN*!)&%BUqUeZOk1~e^OG>T*hzsYJWdt84e-}|#9TgRfgHM)t0%M|yl^*ERhtxKcs zW}|;Ld<$U983^_YBeA~vtFC#4u2iaM3tA1`s@nKn5+jZQ+^Iss{q!5qKnGmTlev}z zXHPl4R)y^&fNWgjjv4sL{g@06blw*$w9urtsf8grYDu+D|A6Rrp~YK(qlCz$enhLw z^+zud=6o$p!ELb1>?47g`UQyCEvyi}+;RMX9U6qB-vHIaT5+w`U7})ftt}uxY}ifp zwjd-4P&^HfF5Y}*I_~L6v1?st2J4p8)1PkltGv243Z}q`A<@c zia;$XfaqXokEP(v%UvOJknHIjmJ1@jGe`s-AdiEb3DIv4{sS3C+jP*d6zJuto|i=+ zBOEk|naWS*d;0VCqGb<~4uCCmAefM1b~kPYY4)z$&Z0g#0VZuAcg_IQ%7h>YyH7m?0h`%)^Y|Qq6xb13dt-Nuv zAl_=wBxcae4e6ymY)TmRiGdIp!vWpHLG#1sx*?X*H9XAlZ{W8}9dLF7yLJz`tq$$y zANJH6&Ium&SshM{;Zhk~+Kp~*q8@(;qaw_0WDL(eJHgG38O>*m7Iu%)8er+E0U7F} z485^Rx3TJ&Ka%lFYD5G-lBtenNsqVcjkh%nrq2%sx}mRkk9WI`b>YT>x43>B^lipy zuiHf4gkk9_`udj9)P&6V*2G=CN%v3O`!SQV6M`X($@%$7bj#o~=_%etw1(c)>zJwE zm#0?rrlz{4KCDib|D5{Fm?Ry!vmP@UbotH?^-1%tJHIFH0N?#fGVc9%$*B3im5kMJ z9%PO-w6hDf#uaQ2E4r&iCU&1qO%u@y~_hI;L)cAvdRJ*d6rE{@doc43gzCZmv<$y9@na$eu-!6 zpbYR=NA$arBgYT@Ty4+ghAdsb?HD+7gDWzl6txBX)S$AVkutdFWm*ciBW*{dEppT# zUs1$+O?jkEdiJtN&!+BWK<|D1fSJqO-SaQSp!bug{K^0}PckUoNPsda+7I1;O&x>? z9FeNN{;T!P>Cm9*&eEt5d<&S*BRDfO%YB{$(-86t1*NGTynCQEAJ1qS6uFkkK#!N- z-38V6s7vadT4|O?f&u#xfx$mO-G#04Qia2*5Q^HkWe~(YnQTUT>ryb+l+HtUiZ^p zG?_(zjyP;ad3S%AVRfKYA^M<=^085iffhsHDYsoJVxt9`w{eYPa97I*=#AzlYFtSrm(x&g~-ytSk`5&pgw}8=XAc;)UtCeutkEP6}|$ zLMPvS2}mEPJm1-7j$)g&d%08*48-uusd{Flo$8Z2cWFxAOFN)hdME*FQz1?TWosHb z@+2dsr2*01hcbIFDQiz`7X4Z-=54JisKAM{&bO}SI|r~g(tV)sW|@Wwh*J>GfG3#a zF&D(^`t8>QWU=b?js!KqSsc~QtfF>TPQ6YRy|y!#Df&k;)_>Stt|d075u8=<@0>Wg zinWsBlz?QwF$SmwoapCbw1l*(FcaEZ*lN-Htuya`g(>$wd|NpzaXDn_O?W z`;_(UGy9vOn**wfgYYTUhFd;}bLT}`PA#Z<@dao!h4igCzj~I{p%?ritSs|z+|(YB z4}k*N@$>28-tn9MRSsg$J;f4Xl+%6zF$h-d3(9Jf4%-e z&fS$Z8ux;UOB@ie(@W?zR4C3Ufk+bvurB9t{Nr*ROeo(vFFy#TNcTNIyp>yZxgAV8 z3P=OKY2zsQG@BT*)wQo{?_4jo7W=L0nKR>z@mXF?J*9poH#SZbpdXh$iF_&dd{99P zVdSz||3FN!PfXwMlV}}LTQ{z?vTjU*9V$<+%S;vNsJ)%<7uZx zgv!gs;lx0L6qnnN4zuL$FovOL9LA|>newH4q#RZ1W5E%TPrag)d&Q|QbWYTcb=&+Iz0JK4t98A@>aU)_} zxS(Ca!Q?j=?ZCRfgFE7`sb93CaJ432-C}#C-u+S#7TX{VTFxdOnqGu~pI+S6T}B9V z5_;Oo^eB)?Ij5D+M1GYl}2G7f=9uqhUZ02?mY6`f$9?NIHLuw9*C!Mf_c zkwDa@*lA;m@fW;VR)>j+I%d)S;*Q(g(6@USc60Vu=7;n@t2DlE=P6v$R1u&en|th>tiV$l2@4LQ=_wc@QqS z^AXvZPW5R=*3QOD0b?3B%(cvtTKs77EM$zcmlJ^8#kJ_AC-`s?6Qtz$NK~qJs^KAw zTx4ozIC!j`B13?eQE7(Mlq+l0hg=IMQCfID%2xZ@qITL?IPf(qL5Q6ge>`E8W!1cq zrV|MYY)@v5(7uVA2PLE*7Ek}VarO5`Iz5{Lib5S=r{BWzFe3#aVIGI27cSGc5E)Xy zB%w|7>!fsJCQ7^@WAA>z*%lvxU)eT>Z5>mOXaEtgfQl>8b2 zGbX@|r!$F>L|6?(SHfIVgf6a(}r#3gznxS(OQ(18@_9SLkzDY94w?jc(jQi|N~LAyE_ zyjY~mFSgI$&DXC8;h0dUZ#8*dDo2da*Ry?m_IvsRuVQFfKb8^L}})8IKW$iWWK^DVZZRm(^gI?h6~ zsu7g{(1ieSh-&S9Vof2f7Do^W=OG8c_XLg?Z8TJMI<-XU=42O53HDJzeY@rw&RejDWlEdGPsoWQ!eTt< zScptK33pAwr%m73^QYKgtEt`eU4qEfV2y*X`v>m(gB+ZjVm#!)H+jAj8Lm8C*oyp+ zb1O0wp+X1nuz*)=#0IwTij6_t_F`K(JvM;R1t6?-n4>#wnNT-Er!EIPP6rIL+CxGR zMx0yeftbuA9ngB1FAiXn(gDHT5N|V_1#~2&;ht*iEsD$FX$KzIQkFhxL18!KDc+|a_>Ki zjgKkH?daYwN6vjO0w9Ti;S_-BH1fHWP%$%LNv(RQ)5(v6f!q}pwgp>|0Ei&YMiEGk zzkf53154!~8{noq6d`~G+%T=v|DujVF$0IJ2D;D#JnGPx|3e)ZH})Uu2p;T8>9gP$ zZJi$EQ3pYKh>aVv*W+`H88T%Ixk&T5O$_mk>PQ5jFUbu^V~l}5jdK|jV+|9;ps_R3TxiQ5$>{Fp>kQ&nr^5IRCfPxg z^Q&Wfy~lU7OdPYHT9u!A&6rx57pd-^`mi;n9>QJIyYrPF|F_oB z5MuK0*3oKcHS;g)xCi+6Y9k`y->sv(82$fQwejHpq}uS-{$HvM0`pI`p&e)SpR6O? z04l+=4mZqyunwTGO*=pu{?*=*z zcU0xND-0+J_5#X$_r}l^#&+j*dyO*xVI6|e=J{$~k+zbfWtp;kexH^7%JW5|`}akJ zDi~EW6AS(Jrv65}tQdVywX?(vR%oqaUH~m9x>jqEc*2- zzP`+OBKiSxn9l3YUbDfzCDzI)o8x&>a7uqUTQbG ziq}>ffG#KiIqmZbUgs;or|k_xEtj}R^0(2&Rm3-i7G%$q4Ey8tG}o^(p}-ed2=JS{ zS2Dk{ABZyo@C)s)Njh(6(rJ%AUz-Rk zZ6|##mKAgveC{PCW zsS+bGE0#>q3&RAhc{yPe(?~(G@7VV3smnu1xi2s?jG2V;aX$Vs#EZ`tHjI&Q|#O0K!RobBKm0wal!KZ+vD~b9ulV3hpmuT3D7i{^>bjP0kdo~&FNzkgBM{M@Hh`TKxfCufg|KJ=nVHF(MXJ}d1| z_9+d?Kddktsdu=4f6P)ncaSEet|xi&3TF0=)U-3IUf{LYf zNsR12{$BfiT_x7`d)y&6ddAdSB_*}HhhI=av)RI@#6&;wTbF;%U_71=Q579Oy=N7C zjreqrqQL}!|C55$fgSshq>OVGTo-HKsrtElNxiLLAr&pMOzOs4 zg~2>@hk;F_U_**sFUz3nlP47J@3D)$n+-p7Tg9YN908gq znL82&Ma?wTOwD-K@y(Ub0=QQnyCijtXC3Ep2*99b<%l20OlUWuu5iC$8n4>;OxTC? zbBJD0O%Udynl!Ner~nfX3>Jb)j}>kTz3n5otouL*79W859CsR7uP(BDu_{iBtbngq z?>%qO$l$F{U!H(qfTd zy zzbRTqGH6~x%zPGcbK${BPR^6-Q>Yymcmg8$6Z)!E6#n*_+L1DV>V_j^XM4UwEV-;f zlzNHtZN-q(7(9O@$FTXgwW<_98tUo9*_}bC!55>KCoSPMhEgjSha*%Wz>o3v)?^d3+(V^z-|o|v6Cj$! zIDMkz0~*~>rjzcQ(wK{p-wi$@7Tl2A;2hMm)>ri{AW`FG+;Bu;zpz!r%adk+8IPj@ zjRnRD8Yv59ojrS+jV1+ClmHho!H`DZ9Hg@59;twQ!`uD0JwjsT;$3(%5`EH}=+nd- z2AuV#q6hC4l=n-35RsgsjGm(u9&ngNVr^y<)ngWzea`206&9WgJYV!gp@o|9q8x}& zl@oRnC=r6}B^_&DOl;V0?^7@gA=q5jEf#qbhuC=fF}YH1uPn!-`^^YNol@>w!)J7m z!2xS6D8~hhe+XK~oew@P{d_BRbKpA@@>Y3m_!A*H9J96bL@%cSC@I%5Mu>xz(C%&uvh5^kc3f&-4p8XCSJS z*FX~7%SRK43kE^`A0I)wnOCeciXv3w-4D<6_A4SAyc$FT-@Wew$N!Ze@XJF6c)0#U zlyuHXAfBf%f}eDhg3AT!PCTD~-vQTm>XE|hAD_5@*)Xv4ezDnsS2Vn;yKCw=Fw<#4 zMlj>DPm||(j_ly}jhs6+uXnmk2yb4Zkj#IjPDwEs*b5s^epKam9iA}$K>pzizIN#P zu?pBDs|K9c7x=}OzSfT+s&xy*D;%%3Pryp2z}s&uvzo<8`&1SyKQMg0{m?C(2|v*n&kVc}O8Z6Y$y&mB$knyc3)v$p9w#Q6Vb+#6Js<-AFE1g2Zn` zADKlZYbP2o6Wwhwm!=aNW-a5i6WPwRcmzOS8_pjI!Q4!_Z45manQ$yOIbIu7J)N-m zJ%KxGiQ%b$GhAjZRgr^m%fFiLe2uM?Jg=QtNKafojIqO}v4v@`BFQ|X;4w}4ddw=8 z{4tXJMmv4#Fs42-J^N+a=JK^K+++vSNC48(okZD0z?2De*ytr8TX1JSy<(95(K!We zp04!>IpUX5{*`Z28zjS_O1Y$8VM64PmQDHTKO-|4d6{Y|7JaznSF8-&wnSDJE-UAL z%116jhJ)Ctlg>xY+{MjG3=!nZr+vJOw>!hIGy}V7ib?maXdf&6M`~`FqbL7H=y$}B?_&-Cxepnf|6-! zSUwS?UJszKOrkJHBL1^)9ITomL^xSuf4NVnfHy>OV5cmY7LDalh(xuMH!QZXmbZD< zu@GsmUDU6GFmK0=Bs1Q=D4b9!;H)K!h!@vG)4w}mi?-jIzw^^}rx%aEW$d4YPMa4U zLcnU}+>6E25(kQwbqX3-XP>DQYenw+{FcaTE53Iyo@^%fO_zLeBHyZw2UkLp0D28L z=53wAt6Y>JF-DYE58)4NKhC=%$JgniZ7)~WTw6k90TH?kB8gvR51N&mR)^42v?$N? zFW=7#Iu^jHazGw>q~l<`=0X1l;(v@)l0F02>*f0&lQ>|0P1S+~WMT|1=ns0}Q4e`p z$66I{ufnqn?;lkpVxf1;-+-fD%_g z9;(%|>}vM5)I{%C1T<+f>v?fUqbho04)V4z)|+>{YX*)tK=u1I@;p+ zj0o)rQpe7l9XtQJhdo~>B;-c4rBD|gz`OWK3hv4+>N**MDID+Gp8Mk-LOl2Q)NNA+ zfiZ=@w|A>-6WV!W5*~ca1q#ln-TuXMkKkLD)9pTew|P4i&$W!VWWFRE)Ds6$LHEe7 z^#Zp3=^pDx)Y?hCKgN5vivYQS00iled%RH-Dn{R2c~Uu5_fPjYUj{+odUi;2em&_0 zu5xzh^`KLEJqd)jY|$e0NzD8gdZ7FCCI)o7`Tif;-Ycl-e&5?pLV7?#uhON95tXh6 zqy(@8MWv~rs3@qxf^?Hm5_;$@KtM_;Vkk<70HGts3L>`#Y>1$-Qbc+Fc(1kBTF>nF zV9&GPLuOz&VTSo$`CQk}bP5%O@7=GC>0xwlFhB;AV0*3F)mC}l>X?Ium>tBvBcd2L zW?uuR&uf%-e7>&^+wbFrqLO*PJ-|pc)OkacwGEFLE_rBg-x04q_nJPh_CN9oFxKD? zM1(^D*5SbEkMi4U-dxfz?K%*T~)Qk@6aNb>jJ3^TW-nBV0g4u^I*T9r6MF zGQz=HLo9DzE^*BVt=d`mJh5pltZmF?W9 z%DX?T<5=DBI_nsfO#H(-us;3ktb>Uqtlo$02CNe@*2ZQn8apUflo|B-pTeavpCxSwY#m-c$OVRjU{Ct3cO$M#v9 zlD#+kx05k(;7YgC7W;DU7&vX(!*KiVl;xXr3pr9%rfU#AQKx%!=-8d&kFoMwS7#Tv zO?${);Jrwdy~U(y7rMhQ_f=Z!JtL78!OPW!Gt7Z{i=*oBuCfaRO8|Qk? z-G2fA5EBc97xvvjFo@oZWQ1 z+z*&`DAR@`wtif!D9%9V#lsyny5mGMgXSuWTeK!`rX;G+Mk8wQ#Vp+-#VRyBS7WU^ zUhme^IX!F%)e(?Xl*a`TioCiLMt3(@Sl65^AkNoE&#b7Qxmg8BDxH&qHo0FUM&?mn zY6;QWqp=va@+O<=>PA@?f8{h2jhm|2(J}StCIU$9VlzFXS{IO1NXnRNXv-qyQAz79 zlKE33^WYWxHn!b@0)mtl;D%GxAdmSt>FY2V@p@O}s~n*SM6s~`*siwQq4OIN{^gb# zN1c^1^IR&{6uJjyVAWt_2USE;tT$Tw8Pi1NloO$vI&uk)z3+B;J-Mjro&Z!DNh?jBSJ;v3_~n)(KEEnRZtT-Hcaa)Uu^b>lzr4aZQ> z{~h1R8-Q`@ugK++l*7DPbv|r zO8<;+99Ld&ao*{Y&?n>F+;q+e)GnORq*#9*y#A>JNH2AnzJ#1q8jM9m75-Y0!}TB~ zuJVfPWcLF54kZQrm(lGn7RAk%dOsgn2yjRh3#OaRdKN+CbPe{;Pm2^2K^r9>AU&5p z1%srMLHQ2&`0ep#TTZf&4!T*$a9{v3NQQ06v3ecA5%*b1wcBN;Y|IeGny%XE&N9Hi z>x4Iql)VvaIu8wInCtP4Vz@LvR^~S@iXx1{x@XnStj9N8XEcn3wyz1PQG4d2T4TSm z4f9edHO(NY!s#y2r!xt!G*8&A+A$9md``vyBqZZ=$E)_hcxIGa;5>c6=FBDWtKORM zU-BaO^W~>`%bDsrdhJR$pVaW%MNioVYb z$ZAkq{3@31br2fbd+zPFfn2TqzUm=Qc+l+T=zSL?ZHTi~gYfvT#+N4_S=YGnUh@Li z$k$dH3Z8}QSoH!^792^N=V3Dt+S1fvukp=leYQ~(q#1$ zAA6ij^I#xQSHbSb2KQhHgRZLl_Z6nIaKdSehw#VW%FQBtWkzPz9CEBBLRi_*QU+|a}Mj;suQy_qdPCk7GmL|eVtOd8LEdOV!{!L?%( z*e(Ek+eV(JM&}-m`@JKdB4g+=@d)Ing{q5ZR5!UYCWbVs>*Dzv>-B%aPpo+#Ziqrc zCh2qc?|)HiEV(vp_gl>oQ5;lPea*1Ltr|JrUsa#|OV0qua>rR^G=2ECnG_Y4o{%^b zx)^A?gcd=LkbmZp{aZbuxLTM2VH`iF;1@RZ(ch>ET>CuI1&%e zKMK*;jX^)nb5pyy;cnKwJ%wMrV;Vf3^6X_t#Qch1*WPV*+gyi)WXL|_d8|A8qC-&ZtM@7Eu_mHeU$pl}wbFM<`L$~n$R$sgC_FRcZ*Lc6PM1(wE zY@wX7Q+wd*f8`0|c$}RinJ3LwS9s=TzpaXDc-E{0mMo}C+77fecn83$Imc}(xwC50 zo=<9y1lgSl@AU=Z8=r!D)ivegL!E_@?(+FN-Mjs8HNge_W7_o>p3Gf)sUwdS?L$y0 z9jCdLF9=gn5NXl@F+tD}=yoOY;jNExrGm{_qj-&aJk2n1Rit}OiK>{DxYqofZf4V4hIsW%D?N@N&-jROs0vR@K%(QKnEIplly$@V^@jZsE2R6B z+^5fbfym~EV4rXu+;O^Fk7>KkQ!?qhJRU-Mv)?5fCw2kD*S^PTq*iau9)5#%42 z+@S(Hd5VeFU%94qi;sxZ_`k**7Yiqy>~a=ZN?6s~65(&xR7!V8fZR^x%Y1z7r`PlA zr&h_5QW>N#BJTBjag}$ju znwU|a(5T=iRI4TGf@xGoBf>N|%DFtsq%Ugo5_Js`-N6IzaihkZjrIWIGiHb_Z0I3w zG;}Fi%kSdB397MhtD)`@cts3n`!O$Fs@Y-;%Nw090Ba5+jak%Pez6^m@cn}^i6l|` z9B4Tf>g^q6&7u05Npzp36+=&W5uoAheQs-5y6GVD6gwh7B8sl-bb^F9uoR*T$SN$F zW6lYwVyJR(9OoPOfEyxwiGHpbwKLd9`T@Bd>1>0GzNUt-WW;I&LkP%(-=+y2P%(K@ z6wt9~1xN!64fI4hClI@liN%fZyx>IB*?8Bbu=~iQ4A+FmZq#cyge!sOewIFobXK28 z((+51mOmSTzy3zvsgazlF$)&RCmWe12Qgwk$vYjxrhH+ee&{B{#t~QUrWAjJeKCVb zVHuETfezk`VjlcUFuI(}D6K$X%^gn&QvO1ML_<ZEDL*)eg6 zUzTtRFM#}9~fm| z!8WL*DYp!b+0@&FIH#6fu0+^@<;?v<*UOtzkLXcf=45&}2JJ&-1uUaZo{N3xmZiZ? zj+Q6Lx8OTDSphBCz|Mk8inBeJ`E7zaDo+rv#B&9i;Vn5^1XqEL(<8SmH}g1(E92QK zO#Dzz!g97pGhEs%!ju4gf8FI|X3B?~*?B|RhrMHu;UkO80c*_A$1e6`js=sES6LZ? z)eXK~=}yg|6kMgV({r0!atrQK?Mi-MWo|1f;6Vj*6VhnRF_w=q zVVf6(wd9>yV}qrZa*w&`K^vplB88O-VR(6P`#G|ud7i@)$LqNkuH3@B_=i0WFIw`McVqy9DGz?Po`W*LB~(hBiAUv9)HHzJi1;>Bv!$_@=* zk$!+$pzw9--`dtKu`O`e%%n^>H=k2%gwJO$fw4EW9dCBK!*EZE@gmFX!HL`yO9Ng15 zj4iB)l{2Zx*^5LJXxB@v{j3tfqwY^)BS10{SdR9;WyMJVrHNaM3Kn9f{Z^Js@=0kh{S%u#b0+=e6 zz?Yy#&o(3pS|Ipiswj1A)31&LOckGI|E&^1fT_Z2|CZ4C+PQPqx$9eX`?{&}XTh;D zB3rKHQsW^j6~L@_{o zqXCF-81~xk<<*gR4gky$^a%dI45A@wcS(W2hW3svbBfOr-uGERoK9MgWt8+3w+IL2$K4TdF&l= z79H9@+7EMC-*=R^V@j0=7{GjEdL&PDv_ElZD|C2+%gErj(YfwXzSX_Q?J|r%@eM=u zKk*GwiM@Z~8>s1?_4vko*KGUPYvqpl)v=dWtpM|w6m9+%et%;0?o#{xN6g06)%(A! zZvSh(G4`J*qu~D$Wz0D{=9dwDG|ZxT_{Y__d~M$F zlh>KjgsPy8VRf-bqJ1Cj--|tBIDD9N^g>RXy1nS`V9VJBEb9_TiY#(S-YPg_+U17i z+H_w|VB7%1*(}Ga2RhVX7SdnfZ~EzY*9{SjcDQ`qOnc^slt!#2rHvX>OO{HRI94I%| z#DLz$ymb^5E^CYQQSRDKr_i+GP0=wj7C>*Ke+U2RhD~pQtcDn1sU(`InEKf1ty?Pn zsSl3e#9lAG*suezRD%9nl)-4$wA)z)pbU`>Oh6LrGC}a3kN}?>yDdG?#6+jsWhpo#A+%+Gk>c&uXG}}83uv9Q6 zIga3!HwQnk@`+#rNgdH@!{Vk;zh`Vcz)}e$m;|dv_80+?&;gC&p?U#C9}#!|t>P`a zN0LWvlWOp(s#w9p@y(!VY67w){`YkkRNpPnS8~W6oq>8O!Nbjx`H$P?!Amv(%J?8L zU{fyMPouM{d~2M_bfSYvShT_OvWDf7isOM_wByhr(Cr{Q31vRLt*S|$ETpbF( zwig7dsNx6XB&DLQ47J7bf0FEOO6x#tx}f38VBdK%Wnd3YhJv*b-v?#w7O4H0_*+#; z0D2n%O$$GsU%Kw*)gl!G^fvl@&<0AErPi83m@wbXW;H4x{a!7)PVLe^R272_0fFF* z(J4D^>34tC;Wo%2WT!S5g{EoBt1Q1~SNvXj%{%;&(9xdGbpE7dZqY=0+Y~6{i>_!5g1zotkZV;27!2E&h==l4JN4_6ynQE09PH5kBPlY)0uA)yP33h}C0HuC z%W7!&!2$(U`RJ71Pj+>@@BYkNqi<$y)Vl}Y--kevc&*qLit2Ibo}SzsqwL%}O1|7| zZXG@o7nmp_6y#a)!K_t6>Km9t?x^UyIx2YNi3~Z+Wl+C8wx(|Rk7nOZVy##1PDj;OtXYo-9mcN98X&uq)0UF;lv~E&H77Q z#9bhq3J{NB?+#(XY*3BjN{x8y9m5B;_!K2on4Ya>{Jpfi?dj4IGxDCp2ajNj1JoBP zY%f^on(lWlvwEY4P}F~vYvRq0?WvR&vF0gWD~4@0%h43z_ngqWvsvEEZf_v=@zq^2 z0I7Jar`NNE^pqxk2_O|4vS_9RHOL-+3c8AfL%FGopE%vC7CFbyRe4o2zSqBOtfbJ4 z`Dw>4VBZl=!pRU!s{cAjQIMvLUtHH(g!%_|;1jH&#hm?_?2}?U5YB#YG;UyhqcjYF zj;Pa9iMxlP7k5_EH;2ohsIXp#k>O3eFWz?&V8eFybr0d@HudB;3rejd&Ot&@?O&5r zjT)inev&uGcSlWNF<<|U2UI-eR!UG4_psYx^;${!JWUg&m#031Tf5fR5IFii>>@{U z)1{CLmnB4$4aCz9cT;ZX-?^Vh5$8~&WTbuIqrZP()}aMYN#G$dp%FmI)SS_WA$2OH z^G{!Ty2Ln%F-3OAvoA$bERp+2^7)YR!_G#KtW(SQwu40Lu;&k9_kKL(xo`U-tLv%i z5Pr9*t)TAuPW;s84gLc%EI=dS+LZT{($|quUy(JQeTm&+LxL@=nRtmJkWJ|=Gy+^g6 z_E)K(*q!r-j~);yreD)lT;iJG)TJNY)QLrGg{TP|9=6HeagIEus&6P138M#nO0%B# zF%^lJxyV;kBpmSb7Ca5vuXFdd9@V3ArdR6yR>>cD#PTL8>f_Blv-a629p6{tLw@kX zHG?RRZBqAzXLxrud0Y}dW&Y9!)z`4G^AgO99Gc(y)ULH5q|*q(97?)KuorKbf-}6d((^P*L5v* zuRS6+?{KnR=xSX)ZK1Lh#aNnacpp0I>ig(+3*}u`YwT%z!6F|KwPsp=d*3V7F7X?+ z_cfgEzbCu^tr(`Pw(BV#{&2_^1rNLT<@u)}r9{CRNS+MVg$xkk^H4N0hm1y|{q2G* z25!_ygB#Vz(n~i?&XCs{$%+%?Is~Pa2bUpGKt%G6G74sbJn@dw(s)8$o@|Y$0&5HH zVCwDbH!u~{maE{+z^9L~6sRgkGPB??9bJw{@@#KrNN#p`Ow_f-?8o+$mzNJEx+cx`qT)hw zx8T#U&6ksxbHHxfV`g@b=voBF<@)P+s4T$*h#L?$1XD6E7n)ddDz`j0C;2S}@jeGa z*mC}wlNTZHPHs*@TvQi7hrO8lraL4zY}wCM4H_B3)LqVddo+61VdpU+ zGfppawF2C~hRV?d!H0UT?_fhs&GKL5X6MC4Z)(aD{3;pPi!0?9^F)kTWlNQR zCUsc+-1`;97tv5pdi&Tu^KzVr;%jQX* zg9SGfSt&s$y!74s86~SOaJp?BuWBGgbH^eh0!qllQ7 z{fAUstfW3YTs7QUGirg&14sqGvUL(sKV;dHmu++YEUv$1YVy`tRpo;!WTAzG`!h?f zcOGTM@4(Yr^Hnu3(YGG1NXV;Wo>*AyS}sU7^I2%UZN5@F4G1V(_a0{jMfIXjp)(HS zIja@NRwp?Hq17#avKrMexQZ>T8=cO}t6e}K0^e}N{Hp;_A@KnlA(UQMP57Z?W5lua z)D9_dKCFIKzy81)vEDjR0tkfemD4rmd*KW$?%Or|oI`6U)y|x+mjwc$T>n@N5k09! z_bcmKiEZ0@AQY=~TQYF(pq*Zo0NkW^X9pE?*dOFbK^%Qv3(PL^;~R1%)^(GsfNnx+ za%42E>n8jrKsVVBOd|B}{7owS!jAiotYZqz=VgABdT9VtP(bSZ>S;R0htv!Q_7Fso zO~rQ;MsDrHf%ai*0aB6XxlStd$Sr2UNFN4-`Nue^R%*TJ+?qjdbmqvMdeG`10grP2 zhiU>)ibf>}&;cF$n^F+l9jTas{PvL#?I?Z+oZsTG#z(aPt_iN8&9jQB?+&;opb}Z2 zm*hYO!TB8y5*?!>?R@7h`p*tvpwU#l?wY*v{5RKx-z7TAMYm%R0I9%n?Eq3i>ip{u zsZidF{rI!nO&z1LKD+4A7RBf?dm1=BhNIm^^F4Lg-mUAii|)}sq{6}wwacbk%}Y{q zZ;!TDk6ulWVSCRO(OzS#-b_Ak9}v_~?sMSux_b2is)}1;pR;%G@cQbaZ%ojuW6-n5 zO9a3g4osdh&=j2qY8`zp%)ZN313=3YFi$R9iF%Ee9T)8%0}T)p2LM&&@A*bh4LmHH zSsXDxKnFUa%0p>ZL%{6f?MR=DurJaOoAF0gDe~$KOYA-3g=K{gvz3S1goB>#z@`{m z=`~obJQ6i!lQ55Et?p?}RB37->0BN0s2ku~jq*k%y}U*NRR!zQI}FS>m{|Eg(T#VO z_nxkfwuRlBtQk#cyZ6Ft)c+^Y5gk2hIresbWIGVuNE}<3`&U-u@qe<4%KuGPQBHvt z{EJo00E!yiz(CxrTC{lo=VKA_BwdY=n|lfBJ7lksyhJV*8=s8)_JkIV-SU*qjFu@_ zUtB0V#Cj_7d^E!c2j!1wKX+%nPIHnKyiO+qFP&t#j**8l2b486lBM6%Puf)@2~!Y( zkGD0|SrYpu@9@EpGGv#0Tr?d2ICrF=gnoHw(`~nzcSV0@7dMXAm&HjR&xj2qKBn!Z zMo8-Gv92K1btJn-x4th2{=bbBo6oV?f$Yak_9Dpmhn1z*yyBrU!buIND!GY*i2smSVe!OzpplQN{3dTPgMV;{arr{)Ola~ zyh~VLpI>S47xlCnJ=4JiTP#Ya`gFr`)j(mOyw~tBL@2@MYO9dQ6s#OCoPrG?5eJ|k z-rU(C#RL30P7cniwpS+UB(p4AaqyTjTUy;#PLT#1kdvS4c6w~Pv@Ej0>-xg?ac|mY zlkweyKI>VHf*-g0QY}-n zuQnE?)c*V!m%V@L{T`{Esqs7s(2k}vvP9btcTL4r5G`Mgetqi{N31?4iRhlW?$Us7 z`zp}vj@1T%7~RY7Od)Z`_a}^h{iGe;qI`p00T2qXxSYe%>eu^d8HtHrF{5=rK|v{y zdD{g8mdh|&WOswAo$L-}+3%mI@>ekiKS&fiHKBqiv_M1z+`TLKoP%sJixipBE!#>G z14x7tUcRR%i4(1}deH7F@MEn)+Gb#Zv6jP1R778lj${`>b*M(u3>2Lhpso{3*aO#a ziPNx@3v`m{GdcqlL`8GEf^kytn?92tDd=Lq-k-{D_J%eeeRw`Ml@{eY zF@tp!-$csBZQJUni3urmsOokjHT%CFxG>I+o_s)$im~;07;=n=m#}jfcw_q|Stj*4 zY4zIB!OQza;sja>JL5X$58Gb8xxLKLbN~%=O})xa+5dT6I@j;D!E-glf}~8XR|bvxv04Tad&9{ z(QE3Mm{<1ONn~W8MLP4r_IE|2r`J*!>WT|MJ0z87alqCh%Kv-gyKQAdA`u@C1xvZ8 zD}0mX$H&IVKnr*#?ODXInRJ8)R@(L_zT0EzdxKqm042TqDoK`Pi7pI^WY-P1{1`A-{IEA zrKov7DfD|o@fb&EB&=GeeE$q|H>O2GD!uDBbLM@&4sS;3&WMd+KghKP@(a)C)g_#+ z*=J;oE>x(5r5~oWTN%W>T2rW&PQPW?RKr3V(03RH=vJT09VY4y&S`fWW--G*$G(Vt zT5#|Ct#;)H7`xXL&&}+Q*KR0*Hw2t)j@$7u&=cSf@&@ARGBwpk)yQY(6PpeW)>KR*Vz(WRTGT3CB=?U2`c@Dr^(!L=y)LTFopE z9%xHTAln`9q;pc0r;mqfL@N~nHeL3S;b^!O}O5qp(h_}1|>j&fm%Ns}-SKaJ{N z-!IV&sN{`@GG$eSu{(#jeAq$eve`WhY8;u--U;fEo4H~(IUcd5umX%^WIfPxpiZFF_3 z?(LZB9***kHOsYnXYo8&L!BX^^MeDAGT)*U{^H6ut{m7tN(TZ9&{0y`i4?U=fA~O} zQuCJV70)n-p#An}8uMdKv~0lsoMYNqb?*Y$>Y^^C)QY6#Ge@L+9*Sn}pj`_1!0{4{ zhXor+whAdbOt&Nse}4&+CV>w%e8n_+-^tumu*vN!ezM@ape|JU=1!_Yi?>MhU~BisE#r9v+ZwG5ZxfJ{O}s_%hst|dQXPKG&bE9*Re9YGIo0U zjj4B!_?}ecg?fmH>DfETT`KoH_d3ZOU)WQg1U$=QI5QpYY!RG8{3fdMSB@OrqFUnP z#p(p+tsIkwD#k3(J3B!bVJU{*ML?XI^jbKw0rDh-g?9AW`5{;(?61n!VD}>m!XuGC z#>y&1ic+kGjV0UMa&<HVrbjz*;-JcoDY|8!HVPBRTSMUF1K^0Di ze~Q=`Z0anB$9#MTUX$Ag20|4$@HHI7n~N;R-)I;|#ATDSp%H?k2n0UT zk%b02oDWRF@MenjJ4zN0E|`Sz&4RB@!Un-fkx0#6q8=H6&;LVa!WkbXdM&mkzPMM!~S z+YxXDx0tmZ5}wy%vw3LI!PxU=H=a3MKoV%#K>m|X>$(mJCBy;_z~Eb2)>RQ|4mEVG znMMqP#RofjPS7vppi}(l4!Af!d3u&SG}n(_F%Wl=hkAK7PE!DenZ+J4i!Yt9BN5}+ zY}8i=|J}5h+ekY#db}o!`t^G75qd()tW6s|zRHcBogLYWv{MztWep;waNx#f>X2^Y z$i(i2frPH>=xVp{o=7!xhjBTPU4q0(dWv?4gYG%Ynl(_o z&?DLr*VII;H@UWPcU!ci8!n?hj7Q_mkq;fVM5Wo?aX9Z3lDP$!a>$;9SBS7B1|JG> zpwC)$k~5FG!Y~jA}EV=F6KiHqi$~dkIjQ{*VQG~a`n0fa&Uw@E zuose-CQT)r{4AN+Jj;-5fOS}#Lo7M^_5yTz8FKeoMBJeHRaE{)y?h+}kG{b`NaDQ@ z;NWBC@Dyype*pz502J_$2~K|7Il9NYyq>jZsW(H`iGn8!xo&ar3jq(}kH`V~=3ex} z5uyb`J~l7<=7@f=ToBGqydxs|3YGfyh|j;a4?-4pg$1Y?08x<56EPP+6z3pI=ZeGy zMQbQl_EW?yR1Rz831Nqz?rC$BQF)F%f>*P78PNN{-9dJRK)yS06&XHNRg_ zsLLsJb`l{~iCxyOAhnhPKtW@&Y@gt!nv29H3zmcsMXAhK&vOdX#%P}BTG@$flWdU( zWq`lojXq7&&1P<68-}nB#U4+ZtSlVPhkyYWsLIGkqOfwSt9RC$bH3lcSJo<)q)e9G zv?!7OEVC+-SMr|P{=KR_uL4Mh0;`9P*RZ@+b1pYkT#vCUr?6wPrq}`$hOUvINPszR zA0F>sXikd(L=yz!-jkY+m6{B0g;*e6761u?pc_%!$K5O?yy3tc!^;A60ADNlha;#j z>Qo9ZFSME`V{f<5q3>H%l@4R&0FHn^8+{UO_x<)4Dn?HLhy1JpI6~<8+j&0fm7Dag z5D`<8wE!0Y3J?xzm|$XEEiifzlqvpH1p%W6Tmz8jG+E1sn*Hf>S^<4d0rbZ5?Pe@o zomlTAl#XE3>wl*3$B8I{+j`fxjSZ|G;B8P(Ygs3fv>q02(ZBm2iB1OOsuF~u z)WYy=2HqN>jcjgaG$%Z7X5@nk{XxgWfIR12;|C~VYg58XSvoL!05|wQKm?JXNRo7+ zQcH4JTiS<~B1|iQ5&&Uj-Qd8t0tN@SZGH66(bhha-`)ml2bvYU>h)#?`$Oe=vx3tB z{oMK@L8g8U+X+M~fIujR)H!R3nQQBO{=9QR2_wXG0nv)_=j`=p1*0oX?aoVQsTs@8 zH^9guzw<+N=f|I&pAEV)Ib2LQbi*pwfz>5x)h+GSEgR77OzcVkK!RHLV_b){dMDUR zL}V`)7S4U1&qa@NGeO< z&F2d&M|7m*0IL8vLPdVB48PmT5PJ{^eoplr+uL;{u}jJed)%x4%qp*q&r@Lb z0vzG274O_?zje5c<2?2_b5C%M$~ERd_|$+$YHuWv)fkmjv|3k9ur6Kn?ZE7Ui5-8w z&MMeSLm5+pVV*-dfP<0`bU_F8pAWH=2W6CoOGgJjdknJ!hHL)~B;5N?kdXhs2@T1btN0zd(X-681kpg5UodNT^TN`=5gZCK=mA;QR+j7-|2xI8{e>I0)_h^>e`g z8iySj(I?N90fq|!Sn^BCK&o|LxS`rCD?(a0{t_<>BY7#;@D~M9FkfR;N%??vkU%i= z*#>|FAGaDqoJOQwI3214fCR69fCR1Cr*g1~Sruu8$ef`dS*=RnG}!j{uhU_pz~iag zyiWq^2A!^HXHf#|9l(+f@L(|wwicLJ?)WC-i1F8$M1miP$8350Pjw^w$NP1VF!^qi zN1hq5caTT)g|pR~D_D$`O0*J5Lt<1p^-NVIt3^8RW-?uoHXN?V3uNi$+YA%R2t*&J zD$e;ebaaIm;JAzQtAAC8`}AZx*W5V&1yfC6g68YUW3AJtiwXgCqkln7(|GAu{Jio@ ziE32+)E7M(ee~&EjU8WB?iI~{J4qEg6^ajV16>{2tRYaGd}+5y{`yB+fSY%b@*spe z)J6!<*iw&p{CvJx_RdjdOy);#RgHmR61bZH4HVY78~Fpmh62sHjLDcjz8U6cOhH7E z$lW9IBoYlF6>yoVAMt{+RZ=QI)KD9pFak^+kH<;pj21f~w$9yyHU=&(w_V{6;T z&}}{M#Lce$4HAA#99vTxSbu5c?&NPpxsSHTj@wcKRq8!dFT+?pJsiu$HL(grI8dti zCrAKB4>5>yULaM|>#3;zzwm}KMv`Z{A%@Ubi|K zBEa@TPl=m0<8`Gubi>ACiTjL~-)eN2D`KA_r5zuW6a`%yLW%Yg&DMaPfg}((SEWUh zVL$n08{KWAdK4ZZfYF2OIW=kbLD1^{;AUy~$(YUG4%)4eb|@=671FmqCPO48tW`FQ z(IPpjaGirj(}tipx0>lKS$-H58<%)BO}Rk(%s%5WqDX>YH1v>Lg6?rre8k{5Y0$6V zB8VYXJcwVNnC+iGcUxnFRC4V+fv{Ew3?y<`fxurE&Z*XimwH59$9$Jrv`td`sZ*LS z~m*&upXw|twO$8_ctPw(WP1& zg=5lW0?U{#SH~x*y&XC8ab6_Hwg6TVjrzkB2HzSp$)nN|wA?XKow^@5XI|VZ(9^v- zCJjKdLij#q31A95#{)+KsVLeXrm#l8>T#vu+0}QJ1E*7uC)E@pe*vuvqS-~lP5)ot z-tBnyY;2cLJWD}(zX&{wpWGTFBf4>Fm%9FgxcWmFvc?NrZ?gj_tyjtJIXv@DS(h7- z41}(jtB#(Ht+8OHY)ctLs@eKc+KcTK7WYOQs8@)r*6s2Nx>dGHc$ZS`!v@Y5Ku?)- zE@BzI{yX;R9DbGy-RJW}WBKx?qdWDXoUE%g&kU>GDLpC>;e}gUzJnYqoLpMQo@mQ0 zi)`Hem}wt~W)*_G&v%G_8 zlov)_QJT(lvlW*Onv;W1gD)+mi%K8E(>{5o-i=-=lLw5H{iGRbk?KvdLt7-b6~lKl z`yf>wb78=}Pn`0u{-#`)sNixcsA{6qu$-Rk&xV8D+(FN)o7v7gU*-%;(k34zW!@8<>Ii{j(5 zUNHAbC@*QFf-o{Rsq}BB$)m-BEwfXsvj&#nLAPj;!aXR2iJC{hEoqzG#*WHzTSXM` z#IVLLEJf61IyQkbwNOr`0Ag-bjeLEr)cLtX4bSot--4?(W40YV1RYc*g60K{h_h3* zme2)<&t;#k!|yl&cFOyCxUXVpIpON;gy zS{?U({AtBbDJ?rj{IL+8glpb5PC|r@$cswsGbtZS$~rnimvNplnVrR5ayvUsm-7?h z>bVEd#BHDnYvr?>jmuo)`3lGO4nkPFD=4-|21?OPV<7)oOl-c@1HH5FhSkf4ceN{9 z`TO;16w>g*DM9VF*SvvaD>C0AboT6ff*!UK$V!i26QSGXHr*6_UYD#f5qqW)@d`l$HuuK-Xv^84pd7nL6|^)2C~}ELakJ++&^1A^!nJ`2 zat?hv4}I5x9=;S>#lLn!CvKZ>Z0H{VaCkN(Z!m60DR}oFU4Tri~oHnu1Yt= zn;U<0Hl6^?2!MD4KcR?q4(4{fL7rAHZgG2dw<|ZHqdBp|4R%HDq$w^j-87!FNJyR7 z-8z^!*_>D;OuQqL^l*aOCvQIvoZ>>%^PJ=ndGJ&1a3+J+KuCHrarsTKC6|>r$4)+s z_e&mt_v+FLv*S`+X=7JXmV+4pROnO-?`EAjYl^Hyz;CA=6nVdUiO!f?LOsxl6weKX zYwD(Kk1dH#m2bINRsr6ye1+`*^}K%gtewyOR~W6h)FhdRM`y2PuJ0S_uTSZOdYYtf zLPau(mwy}yQAO!N6vFIhP32G-@7bx}u7h{!T+A3qyCoYo(7cT+$dGrZ=(=a5T}Mk* zUfSZ8BL4{H6~}nd?0pQM;cpW1IZZ##fe|SMJ{Q8^5^kvCGL3`6E7vc0k9h2j2tJDQ zIsJNNvbI9-dZm)%CW*~GvaUJgrjT;~>*6Ova@NfSwVcxLQ~(`C0+Wc!`J+wghBWZnIuqsa}rd1j5}B=gP@@KbV5~w>LQ+yB9omUw@Xv zfKy=35HS)K81eJl*7TUYj?DdL5?7y@?rX^-Dg>{e``!g#fbRy0JP#>a3MqO~Db}x+ z^LMl1ZAf7dUS_ZYPP#o)4i+4D&ka|wEF%E)77jGxsoMhZI550+9mmOGIKvrN*GGfun6$@^g{d4hy zL>rExaf)RJEy|+wuv)-=fK+n%41yhE*~uwf8Dvsu9asBnod*QzSNY%ftDNFR&JLZT`@I#y7f@`B>aJSKrqB`Q?_+qec5oy|!ebEEX{ zU}u~!6HzOrSx64OKDsX^$uW=7Wk%)NRc2b00MmgzbN`$U;I4+BL@Oc^ilo3}c2(5# zl?NDAe=i5#KGo6TTQ$y^CX=hFbLgz9a{s?CexWZl4gKt34K!-~;vaOX04{#(;p%gB zmH8SXjVxB0*+0*H&aErJxlb$+%qd#|=RWB+aPF_ znFqBWJ<5Sozru+v*?3^?~kTcMs0Wa>#!IJN;k_pfswc*oS$^UmSF z*8{kQ8Y*Vr&qf#LJ8Jp0=53gxf_mWGZ(3=WW-_WNPbhn5`<{I;iI9TWK-lhqy0zk$M3(rD6zEyV{w)?N=UBJ0-5YF9f z)eD=l5u3+qDBD`qsF+W!g9MKUT{d1k`%%dkVLYdH9+uL!7XS$WKve1jMh^j=eQwHq zyYttZ6=Ki(yu*1P6#*rK_uQl3Pn6f3*B?;Rf92n<{r^7|hjJB>9shRiEByOxpyvO& z_CZJg=e35{|9!3DvTN_j|7oqE87At}`*Ce{e`ovh$4z;bTY^)^0mY&16H@gq0hkS> z0<(d@oj>EZLeDZ`h8%C}NTkL%9`{YX+lGpL;b48^_qyUR*w>Agd}W7J2it6?L*Xh} zZZCADkIVwK248tu9kHAoRap(-t`JAIJG+oY^HLT@(Xx$3j9?!N`UIJ4#Yfi<&xJ?rp8W&4`A9L*qv>S~B z=YAS0uF>w|0WWlX(+}fz+}A&!8rEM&)-zsIPn%a(S5&s`8M^$;u=B&6>&n4bYP&y% z$GF*6aw@R{Yz-~}pgf%f4fnFkEYYWTFYseQ%v!&UcORxIvUXVKFHZ#JP9_V2hUgPHOHCpHs(6Muf44&=0bdVEyeDzK+_qbV7LI7nW|>8a~| zz|Y=YqF2cT4XrSAzb0;eRdxBW=5B-$ z;Bo^Cf(zv6&2Jq#K8OuO_V%jU$=fl1|N0cACYrG2sStQRP@O8RRRD{L>fS{ja*&-C zkQA{!ijxeqDG?;4m}=8^3y0kt?vt~oUvDszGZagxQ8&2Ap_^FUq{aL!R{dDf9mn)H z!w^bjFEk@yjXqSp3=Nq*XKH71&L{YZPK(WgQ0Q8Y?4eO_nV+03Gt8|?!K){r(hTr& z$JXS@=f~~TOqj>td}jQczFD})hr6m&$X1E^*6JT@IXe6$yYNGg2A9w^&DN7l zb&D|?IV>S6;c$|hsQuK4-~ZB`?BqH55FE_CcN&VP%WZu@V(HzxeA!v#jw{n_1LI!M z#q@kDHC_=kw`+#+h`Chb0?lEpHTwxb5(}emEnD;s;I}qtfHd8A$xW*1`%aT)W)<-w zp^23KLqtRYUG$aEA~tlpRShd@x>VgI{)lv;6`#s-^@%ed78a_0*ELYFKwS*JPy)Wg zcEZRwYM?8?g!oEgCHMZ7smG-jw_J5bpSF;?m2gt_@|98N_Rqavpl<;X!M!Jf-`T<99x)7 zOIYo83Hx;(s%ZU`49`MDZJKwodjDA1h==I=QM#8{RIA_}$2SXlp9H}X4q7JvhrRa< zYQo*uwbLL8p(OMs0xDeyA`*%UNL5r+qzeI&F4B8RsG$ndd+1$5kzPWNf{KcYs0i3V zELcHNd7t3Ft$o%yGka#AcjnBT@0one5;x$Vcy4TJ71ZHty$JEPZi^lsf_ysyRFKY#!5GwK-4g*Lm1$ zS|#tKc6+gC2QGA-u~vQ{NrYZ8jXHsRqha1N@m5h^Lz(3Z+ZR|2_I=nj5&H~4@LyA9 zr3rWxS7Q#l%o#|~i-{aaR2BzbWCRUMA_mLN^uDTM1ZC#I)b{S+`SQ~qe*l}r?E&Fr zAH5JOq_coHOBm*PNaMJ-iiFM(gk)v5%j<_M|iVufAoqMwU@m9JTqoz(b^)r2v`;)P97{81j8+zEXbPmkW_w20k2 z%L4C6xdq)+A38F3GBX6f)L7lcW%i9ONjO@%>-%D0qY;AVCHs(w6B&JJOgi=;hssZ} zv(r_IS#nb!dF%0vcn-Zb4yAOmY2GJHubt06@{PKxV>|cdIgY{(Zgim97Ti1A7dV7< zR$Lv$XYufuFvC7shqX4YkjuAOxN%9;P%j*t_IdvFVDi2ho16jdpjdrz_pG_0>9}e} zmdHq=!cIr7&PRtN-~9C6xu{v7h7G=g;k*@d>h%*07nd}5MqE_bG5Cv3gCV5lPY}8k z$rGMh7nh>@c(r_fcK=;W%JQ?byiuyWEvdWsMpC@Erfre;ZgxSZRX_Bdl<02Zjh-a0 zdIU@EUq+Ww{6yL)S(@wVCH#cJLR-^Vc$K6f_C)`H;&qWJM}+sqp2vpN#Isq@l2}OG z+}h2xzKSZz7Sy4Jn45umcJpuja(jZ`ADimeoO@rBE?}=y|hSG$Hr5Gw@942URF#7Aj(_OsH0iUJ)?+FC`ruQGnATd%X2-KFU zkt#;mSWrQeBsOq$!&?BsiLz0aA~#n;a|95=fkt&yYGbs9J6(6GEF~!zWb|k}EA)q%4BNXi2`gls!fUSJt)6R?%&Q zl-6~0$9h0|Z8E+y$d9h!h1%aJo-#s6twaTQTEulTl1l`QZ&5UxjZ)_=lkBVQ8X;kY zMhQ`j)L(G+7QwV>OO`9;Re zo={YaOtanvr+5lLaY7D0YD!1*oi~=$WM#9bm(r=@XbT~g9aAbL0Om;?NmP_+Eg~;a z(;l5OB9rr)g=z4McR|D5SU@F!^bHlg{O4u?UdG)R#zoIL|1d`db)l0d+h093(8~62 zfxntBgDse$=W&@9RJ#>0dEPXy@*Cv-Jln-@d15kIrH5Fu)l;A4{bPv{TQnq8^t%$k za4S-z6)C0{)Fg6LVhit}&z?zCRkg||2oae$k1v{&EgB^iEpDopJj;i_gurMIbAI!D z%fp!HAk8!0g>6RJiGb&)asbcwxxoj%6=O}=@!BN}G#s3t7_|ChyZ}@Ju&+zfuMt(c zRQ!x{b3?4d#fzKW*r|!IAJ*Dd<4%q8ABnL2t0i0-kfZc+NNqqaFSOh>vsw^J zrw3Ni%d}=I4rmm^pk+Yd^RPvMjQO)5&3^CV_ktJWa*+oC?ORvs9|EBTV$(TxE^?UbFi!IvNZX{O$qF`$Rdi<;EnIfau3+?FF{l zkGU2seUXPvrVeOp`Nt`Ql?~G zT@xyip)b3~8`-s7cPJggO2f2(dlPKcpay_*ufO$S2dDuoc0)`}FB^MbX4U{`mq87{ z&a})~kX1sv$&gq#Q_yr0+||TGF1>EzcdX+rGub170mm~BqGEsZ{B$=4sCzJ-aBvo( z=w1cXJ;a7L6sUV|T4oT6P4f!aUj)}Kj6ZPWu$GO&@OQ@n#WXt}oWhJ*wcI%>hk-&1Qa{+i1Y^ zdnahRk6QPOv>n@M+xZvId*H*_2^#}8ThC<0BHYN1M9L#;mSn+ z*GB`tHU=P~biniGh5dZ=-Z%1CSTCLZF`YxJn>D<9$Og*^Vgo-0dZq>#h5dl%1+)f) zehhxt(EYZ82xvyysgKHdEoo+(!uvQT^{t=V*Eks82 z9uLdej2NX1uNRD%XbnG{1+jtQ5#dp@$)R%VQA^KJ;y-x)|7Z<>8*wOE?jG9T;ZBvQ zec)m8U-tfs6KtmuyZ>L41z?!5(el4n1916IHGnP&Vg~Vl%k#?rW_@ute{;s0|CQ$} z*e+K77oNA>tPD4FxrT<;p@+A2)$Lf7Ae8Giw0eqI<+=bL|ydS>3M- zgVbQD~z_E$GYhvD4S`)3Gm-v8lpVuQO;tgyfU`7iu z#PGVd#q&k&D(!X8|T2`y2o8gbod%*cf9L(5ap@&XM2U(vB#NBqk` z@XP|o$tpV{!HJ3cf7Af_zHs?wF|TV@?634$Jofp8KCh^NOS6dk z13ITCA@$Ro3Yf+CuQh<~aTdt$xy9zu%eO(%Lwtu`e0UJ240KwWV&5PtedA?#&rQK9%0PuXx_t(7VNpe0uS?{A>{mt{R zfhjuR`K?C4d6M3bmk%_VJU;|@o_};;GXz}M^fkaAn5Uyodi(S9a<#jTwe+ zO%~9!kAkC|BWSMNA?-$59I>8qd6ROgT39$Ez7ZUvm|acT#&$U&va^&`+VS$j-q#e% z$_23;f({$7_Y(3JK8Jz5k6vX>CdCR|Je4ft4D9`kfDhB&|GLNndICRA&KTfzZ#s-F zWN$-$J7^xOdy&uSEc=fPqkRKZST@9CWoIDj4>BAI{Y!S9Wy3bV5D(i zk6~t1qtRo^T_w}*JArDhhh!fHUuQ-EE}eZLAM{XNPN6)xddIN>NnGOT8Ey-{F07B_ z*o3q58<_j&VwUR4UAwoDkTbRh5K?f)A_vpnyEN|=pBVP3C|J@OQ*8$JetkLTn>;6B z)c817pM;Ko7QYvpv3bm+rL~wOnX8{>&=M-VSIdl{yHHMsM}GAyp7D2~#;f536_==j z99;5C+61?~ZKbb&)bJy~WT2;S%&^-z1B>fyacnm$IFCx}h2ZZPtM0KFN`!wjPdXtt zui}koSvK)-2P1q(2y!o$566&=e8SsGIk3ysd+%jcj4c=)K3&f`-I-cbty2HSWT>80 zenmTYPlJ4)_K&aVlQhRujc2bKhbd^Qx5;H!EK+1Oo?M4_j%Du>_%_Vno6nv!ZJUfMtLAlT5QulP>|-ljuA~Iv^2w^N zkFLxGc6K#UwpEKi$(|$e$CzFYh)I6(=A<6ilN+uG0-mB1EZ*$2{t8y~h&x$OyboCg zW1W38$5W}&|EB1|*&CX;XTr+tUfze;W*2qjT<2ln_~SkH>#V=pb8(y5R~o$>aqzn| zp(regQVc2lc!tE8NYv%eOQ*26NnixTpUTG(9e(YB7emIXN$UFdlk^@?9%7r*@0s?C zgws!d_5r&lOOqH<$JoN?hlBc4vS2V%OHJE{sqFP1(?i^`Esz!+K82IeYgc*)w^1M4 zNgCyE7MsmYTgjb#xxdj8y1jEy%nQ7hDL8UWjsc90ukE4m_$IjEB{pw+)lQc;~+`5Il;oqm71Quay0 zo{43+i7CWfvj)OKdNE?qt1XiL_PU5!PoE^@>%j{WZwik+9~b|4PDJ}jmuj2Ng+?QA z9ikKE_vxd+@po5)C62y7Z}H{&H)j}6;PnoX=NkJ2=G9OUa?g&x>zL(9SJOQ5dR0sy z*ua02p(`*Y%;wVb5%c~li4j7Di`~kXT&v!6S3G3-&%xE($7; zJMcmDGQ(>-m;be%u8$Op4N)_nkS_O*nWCs&(%oKb8lsTTt_O9nS`bz|euy_uZU4xr zfe8$|7(1mle9O19m*A2fL~M5=ht9?La$L$i^y11O>e@vJyC37HU$!^u)u&7RF-YCb zxn>CKiv7WjaEo6r``#ZuW>g|{&Q%{b`945$=RiNfWmA4&HPURF{L4-Nv9@NLRudHi zRtCjGbRZ=AAXs<}TmD)QtBi5~IO(NJ)a;t=4K=c}UJ$=)WI;N4V=sGnXU&gf?|vx#GXd!>gUDTSs;yPg1(xQ>@5%AAd!v)n6e5~ zf)ZF58}GKHr8X5Gm=NKcci7)Dffk!UtVwWDOECPc+gD*A46QXDhT9~?kvijI1Pvkx z#*{otULNH%-HRj;PZCVXTsO2^KL{v2KR79G9bL5KFGfj_?@UlrO#%YEnv&F>M|s8? z%r_HHb&WTdO74KO=LRQtSh8%(wJSlzUCIlrr^T8}#opY(_^_Tn>3 zmflxRYp6hJ({sB!$>H#e5aU$dngIKBZ&l|Y5f$P{+=ccXX&i3JFBoC=bPt|y0eaMn z`vl0@f=YB+#*+IBi zmyi}SAE0qp)&PQY?;cP3JVd361OPb=^M)VFG?4eISMG9 z$Z;8xZCV#TcVAsKB)i=;YkU;RO=C%#XYLEeCc@&sLA<{~lDhJew_^5g`FS%$4u7ls z^&sE&L!b`kY#byJ@K zN;fTrIg}oSl%?t8x)N1@cu(leNCu!z4X6^QN@|qv3@yaDmv*O@@@e1#y>mOBVS21m zit7SGOw0F$R>--R!qdx7bd`U5b+AC_;%2@bH>tt^`0}y}t=AP`L6I%L_+wtExp$?R zd%kpcg&Yv?Iwp2gMCE$QlYBdpRh3g{IZr_q6VxFV0-to^gAxv#;OyRa)BABDO#|jZ|y)noat8#s1l? zoIUMqj4#aZRNbSkoPAzsC9v+?*K2Lcs#8>%pgwN-H>fwbR{~I9LpKyanSFf*0CifU z@l+!d)Ui!WP$y+X0#K(m7_Rd6e{WC&pq^f1-pzMh2RF8pr-cZSFpZW1eSNTENNwmL zB6rs!)YoM!gzU!?m^ zo0eU_r91udD0p$$XqGtA@}a%~4W#?#>J?z!6TZ`SB$b*bvWkA#?yih0reRR&%^yNr zB;{MAG+Xx;(okT=aBEqRP>3tWU+tkHLrD<3jjMJOS9|bRLCD@>D`c+~R>2I}ueKwU z+k8RD-n0W`?1KwCXta)SO-$ql2taj`MKG~PIzh(X!={{>v7hR^MBm|}*&*f75meX_ zJkb%c(Ge-%8DrBKZ-b^{x()H&m0^gquY1KQK{l`=Xfu=kC8H#GCi|9p>+?-&Zt@OR3d(Jgn(i`S-HmoqrA4SN%_h?5nvE`k7x5 z-QKl#YVev>^f=!7d$}e&c27e0K*5E`&ZIue9r8oXuF{f(&#M2uWkKWruq|Y z-!UXdZZM7e7$0`K9LGLO3@ci4P$ym-j0(o$4l_puM?c(C@`-ibzGoXS?#X+_)`gvKONpq!>N^Pa*qDg3M9D z4pI7MWt%NBJ%+!d&;&aMw@cG*3LkhY!FF}O1R@!BBG-tFYuc3)DbXVVSq&k8=4 zBkTImFVGX`u^${T^!9s_i%n%4XUuec^yyvV5x$~ehHxhGD!O-E46oFhVBIF>^JEmo z!TVXlS0Mok2z_wOxlW;Psm|i@Rqwee$1qAIj4q{PLPzc3F`=O$(!|%V5PVUp(6IqW zUwkLpV((#}3+CPL0}<(D6P)LdJ6=_Twj^*T()Ht!8%B6$zTTmO5WW5|)SaZ~EQh zDI);mZf5HYS1{4p_&Dd|-SckB@K%p^f9sRLCQ8RdvhfC%QDfIpb+WI%&u_mIRd|oDWc<5hVW)@gD09+doE3-BeOkA@ zqtz$fIX$?d6l}Ay>P(#XWg=sjGMnUD$Zpo3iiQ{U_}Rue^t@XOpCVjJ%^cA4Cw7|f z9;!LOqqoVTfjuVrF8tM=XF|uci*a!*+EWJvz6+bLpYpzqTGH%$XtG-`DV4}FB1h6bCQ|7^7ni z3K6cR%?NWbNh&mnPEu@j9r9_jmSpBxHSS=@}dsQyKyi0(mwO*CW^($ zi4$_0-VjLg`IjE2^v#oFN$sM1L*lRL)?R7tZOz4$Z9|a9agk*H7(s-W{)+X?*Br?n z*LMe0y%Ux=hu|SEq=Xi`Nd041C0VBwHKGQg?+w-v??vCMP4vi8EqC@EDAJYMqa4fD z;>e-4PUo-;xQS|e&=*701ONE!H?H4L@M6S65UWV(&uZanR5%a!;KDv9Du@3%9lt<= zBEoWo7SGX6Y%|Gt`qgxZr-UYq4<~0!QFzo$wPj*uZFvlXx-BnVP|>H>WgZ(DwZBbg zRWD*;dE*e`PHBd;WF$)a!osV1q5ctCD9Ot8LcJWbowAFW@a^KO>PNtkWjTTIfxVTApH2AXY&oL5ID*{QpeEG@C3>;5@GOaIT7jd2 z5%**F#7)9=kV)#tmM=K%4u)#jieu!R;$VA7t`2k5TXV(qYWVJ#%Ew1;X3q|@(2CUL z+8o>ygFmtG#Oq$-`~yukd}pXq$om5cHVl@kZvh+WPg4BCUY(DHix|*9SF3I7KesL= zp{?_!-sZ_`KS@a>hwp&EcbG_gd*1!?V{;{JHzShm!sGqudI)6c+D*!x(%i|~+!wEl```4~$DsUN zzRQ|rtPO)%!0QtcvTN9I^`dQ`5 zgJ2#mzJclCtPFi{T7Zoa31b9G)gW*)`j1bO-{eMFxHyH<$j5nu#MUEp@FWB0h@A}G zMtq>OV7Qn#+%n+=7zN<-hbjw36i}lL0%Hh_gT5UxPHIq#8a65-R!8u_q+#qaHRjF8 zBbGX9^RdUq_wY=`oJJo0pcXe-0W~KC5wRiG2`A1lbmIde8u76X4F9v8an4JJn5}oy z1kid94Gh_Q5Wj;MD@brYEW>QQ2U=2qNbmg`XaXujY9U2C-Gs9L-gu7oQ~$ppr|yLxyKu2G#Hk*KlFM1GuS_*>#x6tDxIU zXZ;KjycVg|Ur3YBFpp|ePm@BQQix7SR%yD8f;p)$Gj(|;<;hZz(yO#%hN&N2!)pvR zCxb6$uczdWv+W)U{^2Fs`X&07C6@y|ckirdJnLc5 zbDzrkJN14tb0>+Tl9XwUPKVa17tLpu=OwiLgTLJqVKU%eA=u8t=K8AVUO=Nv(YXNG z$Eexi>i$?OWiv=lHX+&dAKQ5;5A&we;pzF{USWPZIIpq{yC9T1L(L6;n6DlZ7C}oc zP)R4crQbNmA|uY4+EtKh#gU<&PZKK4M8l`G;WG1V*1yZ{wCv{7A#LzW(QXMltSkV6 z699sf^7c{l8jLyc;)S%W=zGJT1bzn(nR{4BKu6_m?k##;YZpGBZ|%nJkqDbe%$r>; znbn4WR4<(X2tHr+RJR2o^uKM7|CZTHG=$;`Gpgk95uZK;dOK1(glF9oiA0bS6d zeX;c!1}>Krn{OR5PZfJz245(~X_Wm0BR0mW&wGR1DH#Oq@2@6_#NTp+Qm zbw|-aXZh=MEK1)iB4n|W8WrG1Nba$mZR>gRJ< zHBGzb;A=KBjf%a(yi8%fscj$a$mT6vJF^AivER!9h|hJE?yRrn8M4UOgWO?St%Wf*b zaY{GBT7n-)^VRE_8-F=-;uQ&eGp}azZ)e_Vs?tfPablWzHkxV+t{8f=yp;p%c{Q8e z)cM3r;LLwyFr7JA&qHl)H1UcwYuGePYPNh!`ZEOY-2$Y!?jIrewquXlj`U!3nIZT# zV<63GEn-{J-0lc=k4U?P1jdOOf^T=lVBCA!Tc_H+R<3$uI-2nve#{X3RgNub9xjj8 zaJ=g1!F|r7-8HP;W1`*bQM-?Phrdln_G;(FFvKOzF2kt~pxyHdfp+gYLh8VP5InK# z4y02=r#;RFo{-#`*wYC#eHx}KTe~Z>rwat=+rxS~3wzo$*-KXPsq)=-#Ct9^^Z@Pt z8`C=*SoZAY zUk|pg_)!m#<||>nZ#4%-ZFFy}U>B1Q{YV!3_K2z7t#0?gK*)ZQyCe*33evIU4)z~( zY!TL4gxS`Yw;2=^9o#G!6rH3`&JK!))0>2ccG}W&t%qdT>HY;n3XMaG|B&Xl|CPoo z{vVBR?fm~o8Yj6tC5?@ik%NqA+Vjz$Pf(vmg4sNh56egbTMYaCA!xLbH)$bZG4-Q( z>}|_w9kRU}7D@RkF)YFDNt1cz!)dO^^yNfb_!S4@V9J}(4-?6{t}cTaMq*a@&whB{$~^Unm#`Db_$lBCmC_iKhHmDVEh8=*~|3hBl#0Wf6V5Uzbe_P zyocFEzo204vJ8AM!2%|5#7p#2Ma2CDDd5YY%T;->f(h!rIagPoT5%Z!6rOZxxdP&^ z419UfYq@G|@6GzE8h&NdqGXh#GEwo$SJ`2KOiAcbxjz0CmqtPB`?6p*4T#WYW0JZyFDi2=oE6I^E2#)_+uQX%pn% z|E6&Y#*X9z_1;?dM|#o*QnW;&wM44>Tv3lz!qdbAAk7n$>};Q*9>`1hT%F&hAmRoW zFvMLB^3seBA{_(Le215YPwo53PkPdJH;qSO`{+X-I@B(TBfHnYcHRJ&fYzh)Yiql_ z`OHNJVfvo$eyrO!H>0m7R+buxoOhZ+?PLz<{fM(rvW={300VkUte{*EVW$RJ4kp?^ zo`;oL>hW{mrnpR93HplR{1sbsFiG? z@8J9@B?h13AaH<6(o0E?ja6|FH?7rGJUwDQgg(W-nIL%Rm@SDjmF_U_zm)Lfw729l zwqxZKBYnY>3ot7Zf-`?FG)dx&{( z(5wr!7Cj@J9b;@@{`~yVH4ABrke>Z`oh-`EUEAGGXE3TRWp}m}!@QPy7DN*vP>SA8 z^9)@+J15;CH%rA_<5m$Tai8k2OWA2Y5HZV4C&|H!A+;b z7}gpHQn*&H@097#6Q0uLwrYOGb2-PMhS@wEvU`_^Ct_cIDiC=gb4n35LeLYh#OuT4 z?PNQXOH?YfjAW}xcN#B_?XAX9cg}MrO|dSWs?oe^eEbS?6f5F)oI#y@yfw;R4#UsuQQ4#{l z91FPYf99IL0rZZ5dW>Jf4SAdr9__t;y3|zWzSVBWXiE1rfqts6{Jgdb!PMcxjIV(+ z-w}kK*4KgzRd9$p0$Yt^2wZn4h5E(Ml1 z5{Jb>^Zf2fzLuJkar;)RahkCUo!opwzPTHZUX|Z(&#Yo7(lnQE#yn zCDrgLLqcABi~Cd_gsr1Xhh15otDGB={J3k8cTYy5gm*fR@DyE1yYL9dbZbCEbIEMa<#f_Ii`6 zLu)Wvc6u_tbx-*H)W#n0k`K3@eD>gt4iw`A+s13!bF&UQ4r3Td)pxSW(Jt{R?E5G# zNOtm&`*wmOfP-67+)=`QeiJSLPJi;_QeK|ZbO}M3`RGnEqtL8W6qs+VWQS{VV-`nkIvqH;KV_Ev~WF8UE}z z-618>elxJK0meJRu|D%mC`B_b0s$cy%=*oK?H?}g=6$&SIA1ol=WghG>(#KQ&?`BE zF`op2a`B5-4D+_dC$rQQnUpL@Oi6_~0PD)hI8Q!%gR6_I!?3 zcMX)r$3WI%v>7^T_}KARWUE}`rQBFpTdavpfMzENA`o{Hr9CJfcA5Z7p`&=H=;N-3 ztvlnMXGYlz28gW&+PcI$KF6563Rats^T-Q7hl+NQ(cYS*O8^i)`7B(dGk(W>tX!=} zm=P1sNt^2wvY>Ao66tOk$72+d(nh&)Hz9o{5up4fLQoMM>R}oA$?&WZO1pnPp=2hh z6z>+ZhN)!4=DJ3%W+y#^v!~4@^;)vfS3^0+VkyB%t5rzo2wM*$xsQSYRsE*+oSI8C>*0{ib)? zD^zk!jqPsdzyKoKJf9s0L;Z!(#hJXc7>l59f>HG>!SEUNYclCgmMpQs>CYd?f38V{ zKErUjrF|s?v4+@t%A~$W1$Q#k&!lI}2qyXEURYuYAbP{l#cK0U zOBp+8@ES+NP9i&quz!}ud@xeoYn53XoH_m%oQp%v@vLUX*%!UD|AO;Kka`D|bZnNB zY*xzJ#l5F487(Ku)LH(WVmHlY!g+cw7Y)#LZU`D>Z47fnXPq<7dG$c6k(N`!NICWo zGS4#3A5DknCFaZ1^7EEqCCjkTM2`E~d2v=b6CIe&DJ_n=JgmAsQ;wVFw;1Q+)AQA7 z`JMTN@}}(5;;ef~u*=$iu6m333MI}{UrdREM zU7_QEYnVs;WRclJtw~AR%{;-kTB{Bc?cODFtrL9W^#o8) zCzZs^imHQp`f3BHrw-GJLu!>ePW z0*39WR8Anuu}z?P&K$Ns(R9C{?5HVqKd7fKH0k>wSkqz8H3Abrg`ISnd4i94LNibgIeaOjn-Xju>q94C8BAZ3nL0SF?j=+7YOU0n*&9ry~q>>{mK~D?e9Q z#&qT0otH>E93Hjrf_C_5cKCYyZOlnFXh7qJQ(Yxt2#QEIxJX!O(_PhrhzTnLuDncy zBU!%Y0;Wqbm>Z0^+pf~$ygo~!Ex_WbdqzBxeSiNKX>w=!&?jXk|ETtC>(do$4=ZPOnw-_3HnAB5oNdN7ZZ zL3f9h-C^KP^1v@lpImGo=k5Oe{`4gsItql~i})Ci=vdJ~g^X@)5Q1mN#e@wC_YR^@ zw2OkuyKSqu){v+tZD;t9fM=6T?+~|VgTjv?tU^6rYZ&vRW^eegYD&f5u6*KO={)!U zAf0PR|Nr31Lm2;quDtVqapji85C6%P)7iKgduOODf;%bTU}(I|oD9~W6SUI>1;#A~ zMkLB37{ObEbit2f`0|;{_JR-S9$=(xM;HfUM+J8F-!9wpFqiFv!LmKOjHu8Y*<$_@ zLa)v_+srP6gxw?Q1IPNmbgYpnxAnaypYwTZkWQ|)G}qJ0F;<}J#ADc;&mC=YI44-P z-!YOnBJ5{Uzg!*j($O_dL&{oI4$Yh;-q13A*liZFMiku7!Nwcr3BBl!*V%f4jh0lo*tDVRv!&Pv71faaqK5(SI^x!=84_8j~0JrzHuJE~FtZX}Z zLYTMr28})AXGY2FtOn*y9VvRB|0|te_VR%SZ_&A$Li28Z3&rS-|)(tfY{@R56V3Q{_Cve5;Lj8^Oc6cfud~%PAum-pLB~xDei)A%hF#IS2 zz_)@EiOli5*hg{(sq~g1$;W>4;vU8j`!7jee=ruOYczmcyb#TE?OvWW;}E~QHuOA1 zf@5>LAnM@b)w9oqIV(aLdhG5*oRDC-Pl}9==+`paL9#ASN3f2$EeU-q?t7uIx$Zajy^?>_BS7-X{B{=xkGl?^!VNxJdDwY&8*Z#=j_?|Kn7hlctBW|LLy@%ICVeBgAxTd$t1{)q zoGuhSb?^7-y}&Lup2#{$UhbR2PR5gDH!4S>d~sHbKSYdhH$OsShkpEcv7_}Vn<9p; zoJ;yH=L5i%L(EpCTF49Rp9+>tu=4ym-P*j=!ntr~0?UhQNtC)n%abnAGgg~~03V)` z8(FU^QHewIyxPR?CNkXX#s@KUm6Ds&L)9&ka`TjvWo+kM=h^0`5?J?^7dc+n_ZLJy zb1*AwoT^^bV4J#d*#A_1_qA4q&^wvFuzZn-SBFIAPg*^6s`g>n9ObJgTf=S|bM0q6 zUYd^}UPaiGsn1RMLZMiG2#@iZdX>W0r*dk?VVQ+;2FsAnsCSx4_>#g; z7;?tB>R_ZAb`$izwp{o*B!vyT@1oe=kP6o1P+=!I9uLBOYa7f%ysb}f{+yPyb2zUX zHAvQB*X3zB-DrKm2GF^A=^&kS0l5IZ6X@4|^&YROf@1<+RIS*|^qp^1q2=9p|8BmA zqXBoX#lQWYgF*(&2=#Z75|i2_Sq0y#DiP;iBx(1(2~Y}_z4VAbUVdY6hvfaJ z?7YiOS1!bmp1QOLQF)t;qEwdRJyG*R$Gkb#y=W+@wz7y+hBiMhUh`y*#b6BNkY`Vq z9r6%ih*#MQvpakN(*O+@?xd45uBpQuS zw)d#3PFq4AG7vnfwBEyWBu0NRM9b#Q!9$S&Xep4&pyijQpYp;u9nQ+{b&sw2ao)C&YZ2ltoBvCH{>`r20hL2 zTe3;T44if|tLEHc9CUn{)yi^&cD|aVAI=iLJF8W78RIPOlsKu?85g-W@tn{MqhwTr z4SV8A!p`y$xYwcX#1Kc`n#D&?dDl79U zH@_5S1l7(_l3gRdc{`Rf`KdC*U0QN3BGBqp&JQ{&=jLbJ;|}(Zh`8yRV_)iz7eBps zbgDk1#E5-w#PV8vw+hnT;2;)nz>vekSBhT>j#n=+7{qt3;~UR; zWMkV^76rYJN6UgchV4k`=jaO`m*lUZIopa+wNX<1)=$6U@RF-Pa^hNDN{#k?7JF!V zK_3_T^jk}VOE~--*S{)2f>P5NYNV5E;arv;IEJ35A$j=~lp{Ex%^7)$M&AECK&&&O03RS|zjC7=sX@OP zdKf}tcKgHk%!Jj<2Xh*Egpy(ow8fl9Lf*VGo|le=f-QROSQEn-Ln9C4TJUQYdTc37 zkB(Ydi^1=UGZQ?34vsrwh)|u0JBnbZ&%3^_fj$q48?cDqco7F3L4#{^f$Ol-Sg5;E z`1YxIJ=fS1>vq0^Od<~orUd4BjJU+;E@GnKY=Zl3r z$7C7-R}L!$lVC_BPhPaRQ4lULW)sdHPe^K6hZ*JuIV_P$jHLN5(F@No&4gr7`mGrE z)4Lz0C+@S6W4%-GKp85ff?-uLexB`qm^58>x24}DL(QW3l$#Wvig9n5m!Z09{w;=@ z1B}#`&V;x%mW3IAaYCBpp#6>3)Fo8P93jMP-uLB~fXA?liatR%?xuW^Ntz;rd}%*( zG*`KP5Av;r?^Tubn@cWn(uli+cn0cJ&QxTHk)|0WgC3k1BAtp-hXJ_%Mer}Cx)j}I z5mQf=QVo&pvOSW(UJpZ6Qc;9WW3LyrYGB;HV*S#`zi^zydJ(wtx~zY?ax#TW?lf|R!{XO^S>C97UZg6*8jIS=CMLb<*Vb4ZYEX11N09SSlmt|~;?q@mz{1l7~? zun@TVR9;#aEd61gB0gVnDrd$!Gc-RxDcu5y%w0yBFmw(}h%FPxsd=?sd1(*x(jOKy z0qdQf=Lkf3dM@F&C{NE0?8rR*DLX2k@)58&DHE`GoEtnLKW~(t*SK6j%P&a$(~?i% zA+rExgf8+fq{|BxDQ$}9bdMqn5;MoBIbhSCVU@RcwPaPOlmSFJy%1Jbe3V!^r;a;J zy;L;J23&cW`j#ul<~=*j_6oT2&=PoAF<|j0-!6U>Jn#yYf~xlmnWBnbFXO5&=I+kl zFvf-ABW?_{31}pV*ZFZzl_|cauA$3$UgLHy6c(MLY*!C4UoF?F&)zOvrlP?u*nA{7 z-8T%Lbjvc?)+J~EY^8ERsm^PxAP(ZDk2tc9ZnmV#Uk?D5{OIe-hw6|lYAM&BEdKqz zbUo>~eJ7K}?Pn{LzayNkV+EU`*Tg*{_aMP_zSGZ8e%C85V=E-&$~khWO0105@2ysX;3|%fKFBY5Negb?g|-`^_#_sb&7z+X~l&FLO%z=GCY&T+Y1n# zTP)uDo5hLc_7uz^EDS8c)mY=|>gz=Tj*C|xki)qg#x-d3gkoW(UE~DQMzA)|u!iqy zZk)VM-8wQ?4n+A~Yvz%;L5jZ&i3|YG`M4j-Trs8 zT>Of}Dh<0q`)$ctHSwJ!8ruYos}S1i|W!5A>x*#NoR#3cFe~nPYRnmA7cJ7Zv80V7ezDJ?Y6kzbop%mA5yr_B3Sot@JSdq;nw3 zrF(k#R=fJ;vC~_0{xs00W2Uep+Xg!y*1sgu*R$GN*uxa%%Qn3$A_K!7x)Uqd`IRHz zlf~A0m=$%a<{pR^9WlvWWWyY!!#Z@ZJ*IOOVJ$c4V31A*MB0DQzlRPAH_|7&2gPjZ z_1_02wdgq-LsD-B{6dH1QvOAhPyH*3m;Fzo_)8r8|DJX^=f7>2@4)=;+U3IkwOvj@ zO2qQhbhdMgddfI%9huw9A3zni#O=j9Mr!`vhR^%+$ej2CZBJb+@mZLYx8zx=$Nv_^ z|2{HjDJrz^F!wJMPow}8FN6LE6nB%16R7eLwCfc#c zfawJ&E(HPAmaG3^JTgi=O8sypZ>PdLV9R}rMtxd*h(SJ}UCwGxtKTgjhVmIl6e40& zxKlp=`y+F=$Ktk*%z29z&8Fqr?sj@3j^MLc+uT-zjQB6x@P(na5HU@VT_2D5;FUZ+ z+I&bVGDys28(D?fE|-7T>60!WekE?qN_@3P2Q2tw!o$2YBYwBbmHup(%kdkMGT?>A zthYPVxcL7NLE#Chvbd7mqUkdm#(fG;`E{EB*95yaI_CuA76&!bP`3x z?f89Uu6f=&vT~5$J)KVtOvGj3hK5t|*j-u+xpL9+54*sTx#uG+n=Oz;Va|8)ku%#_ zq)%Q3gYXp7X>n;Vfc;$^n|Sz#U{{h#y-X-BM%Yph_f~DldZ$nHkvE6>DR)Pex=)aB zrVvz>#h8ktQW&4xjJN-nu>)yJX=lUd!61B$!r?TB(ZrnX0uOubr^?7x@@FM(*N#$m zUCPMwoI}oHuj%YbxRlUHc}!`&Vp7oJXJ#48r@v%;$l2Lv^M{dMQ zaiJt?4}ZNvn3=BDIM{|Vnl&ZxLtF@D#y55PK1x2~d8)A{v?;>U$rD8;N)d{UZJTI{GJ^l_1t*M#ogi5Q5{!tr-!ETii^b`Dr*T!Nw*7aD-$?s&lrjn zungzdLp~PO=sTRdvzt}2SpJ2J0KvEuW=Smn=t(y^dydD2MUs;-;dW@v`-t@DXF=UK zXYR;*+~F*`8Hdj=v4~qisH~@pPVJIAGJ6&}aW0_hNfAP_gzYr#WI!YTw_%=J-FHxX zC51gA+|5db%nOE8T?rh=F^%HT1GbY$F!d&&IF@j7)u9=_qKjcaV!=5tent6-JQr2` z{=mr*1m>ryz(?(wWGe?u2;B-ZN2N^nPv9D}A!n4pvHDHo*M_O*jrRLBaR^)X|Btoz zjB0A(+q{#IP7A$CRR~3l3W9(bnp8CiN+@bTREi}iN{0Y}&<(vq=%E^V6$mwg1v?-r zC<<7yQqN&_@IL20&&)G3Yu@+%ny=Yw?R}O1^%LOvZVugmBaBu^z=m&xpsepxAP2|D z(Ro~SYM!T_c%pQ=*vGVYX__nBABmm6#_#+no{I0{d(yY9`@>1W0MnbVTQ1pYxYN`a z{zbhrpy0`1$jZAD_RbBla-X}7oFI{UKb{@5zpZc&M%OI`LiLCzRxZ#cN9gXeIPGnQ zRZ%ClcWKE+%1qPaOi4IM@WcSQsp>Ruu)m1ZC05xx^3iw-G3xG06zF<4Uv=Ua9>3V4 z4e1APeJZ4}Vmc~e(uMZidnHG_}kLj_;0z zN8d#t^tw?Ta>JrVArpDnankK|H`>169{6yWZCAj6eGWea3FBBL~`97Hr*cW`6 zI#>c&qCEl*oS*;tG<#i*z#~3QIt}ihg~)^I_c=Xyy+c zw>BqzujhfUdFOjZJ;`QV;MXeQ?=^b6>uHwg##IP{y-YJ-KUrSHSws zbg^4c-|LKqKXNi=q$cd)P$yUO1m!0Uy_v(RB0)$B@XIG&$ydD-^h7r zd;G4SmfKowF~8brwXr6vi%^l-7nb24t_80v!l>^3L$11!?4_5g&zhPvsyIRuIhR=H zk0F&~yQXt|6ZedZhz8v6dbwP`T(?{dcVpZidtqe5&pG*7vUPngioHDi{lyo4)eR#j zc6QLCbWztM^ibxfYsvCV)VM+XJE9DC)RW`n<-zQsqxg%zNWA)yeVr5xcqf)w+N@JWdX{ShJ; z5UI>Sg^qYXw}{l53&k!(n6V-?7a~tTrtHR2)U*8)PF&fyVB$bV?8j0RI8g~FE+1qX z$LLb$5b(D1R2>!Gh%D+sKOS4luy+C(OjuW!Smvq55f8U1-$8Gl{RU$;W5-)-1ejeg##M&|N*d1L0UNjMO;8iahx0xq*N!u(SU2GDMSiRM)&{~e~2__r@* z(^o;M`*YG)vw<4%c2-vCWLDTnZ0p|a&VV%Qe)TAgfuTgxHWoK zPUm8llAX}uKm#FAZY|IoIM404SLfsdTkW;0xj@H#yaNId-*2mJh3Tw+9h`kz|W z1|V~B&n&q;cW0pIPRiX!$>mPMjpyH&%6n9mKl+z~AIE|ITr6;2blS7HzZ#n#ZRHrk z%8MuQmEqBVfd2sG>3AMd=VI~BLLf|krH1))5-Ky5C+dbc61TUf4^>1@1s42@FknHe zfN}-{CtaFOO zfQ|Lb^Y)kN1eIFG3(dv>iADPKd6c^*j#94w!3tN_WNSu z79~EkMV-eCCd7(YN0(nhAZo=b9jr^!mx=)afAj$&WwQ^4URJ$^kG%`roa33%Q$;*W z(AeJ!p5Yx{g7#OaYJG#u)Gx2cmmUf#`yHm+sQ`a0yyQ@|#9kN>f>%m&ugeHF!Y7FBSDwOL6IL^g2MpPv=5kZfW?}fQD!Bp@1#}w;W%C z9IqAoT01UX3M{_!keN@cG4b(S4G*x}Y;vhIR{hvieZpG(SLsr&fG3p!0v=|=74V9b z`Z@`g8odUXhXWSa1#N_vf>>RX&~#R{4W{;FF%-F#r=u;6{?5}SWFY%CgPZo{K}>Nl z+IZuaNZwsCO?!QsP^?-Yw&&{j@dn%jR0g`S6UA`;>-JoS(kSK9tY_1tozP_N(kvC+ z4BVbuY~7yQ+WdnRPigkEX}i+Jdl``NtX4BX#)DdRZ^?LS!cE8Ec0k6*12P`ihUeu4 zq<9ms7H89*>C@3b@5ljUJg6PLCF4r~8QRIpV?SdB8Fpx)0v-UM;RU;UghJSh!6vgGFz{Mag>JcRvOsOU-+6a8 za9yqrl-;}fwSb@;+ztfg+W8oQ%Ya_~fI{AYq3ZwwSc~Hu7?&P2>+bJz9<bJi7Q#3z6_Js0{$OE_;3h|_;?6Esf4 z)c`#*1}2t#GbYj!_>sFOJtBR{ty3kw9-_s@FSAFS5U*(dpI7IjRZmU7Mn88c zruek4M=yvo+ zT}>~3g}cKYLE1b`jRPMz{^2|_CP-iQ${U(+JS1T}1txM)yTtbU(&iuCeg&+LFNreQUc%!ufw+RAIoRBBhbc2C^8J@1TIeM|DjbDE_z?-twxydh znD~8q_x0Q~-QP$a%0F54HTjP-=Gbnc0d5$doU=MXE{h&9k-N!@o|&27Kw37tZugAR zF57;i60Cy7B#-5k2x)w4on7!rWen!YiNzV%?mMQDtb9+^^!8}P3(5^S%_BRNjBT9b zmu$oUlAGMq(NhAN5GTFq@0tY4nWdR*K)APTJT`bGM9b<)tSBcoASDH~{KfkQcMDK# z>;Tv+_t7yl3pPuvynFHb_q^0AbLQ0&jaR2c42ubsGiJJ*QJNhhIZLt* z6$GpPKg?$ek=JaDmM6D`|M@-JnIJ|m6O;8+5iLfOJQda!k6u#RTO!g!s~JHDSQ!P!Yea3=uYLZdWG0546Nn&B&|YQI(A(BXxHL#M*W;pIQ|W7 zg-$bU=89@#xoRBFqPb7#o}{GghVxUK3?78n6LrVH@e@ZPGL%XgY5~p+q&bsB3M5cP z1>S3kIb;g*G({@a5>BYIB9O7iKe!h!JsCN&9aNPdBKs2O?7z9{&fBt0@~l`2!he51 zUpyUu{IEf+@dc#@gOhbGQQksOOhUbIyH8CBDcX>7opg^gApUX&>3;SE+6bqvF+rF% z4gkqke^T+$eUhHAos^oqP+#6jKpP=%R+wNf`yQpA@~C&T|I}iMMkkC5F0{3qalEfQ z8G8w`FB73DunvU#(s(3v#p2H{mCacR9k84zoNHN9kSspF$L}f_q=Ge{`sU_!rKDd; z4!ZZcx4TD)UZHFuC-_=++&LzjpS3El@sts9fZUp;8|&+(;_N)N_po zC+|d=y$N{WHaW0n;v03E{8~aD|LO%v0xs}T0XFenzVaZ!;i@-jeD^O(9Mcs zQlQd9%@yzHXAZl>qa~2hl~v-2`!r)wck30ljel|{Bm_Xd9y(Xi6Pgx}b3RmTX@+GT zZZW5pJaDp96q_Q0uhvKKDAh;h#=W@fqM6kpvKjZC)=B8|J#&O74trIp@FZKNnQi%S z1IF2DcqUc((VVJ;mAQjJVcxmoXRJr~zRNS;&{`#L-gSc$e~z6llD8KlB&nO1@yQ)j zK2XdiQV;ARx!E;2<@5zr!&i(r{V%I7b!&SG1#<4Ue;e68 z_|CC+_1<#CLP^#+oV8$}X=x$CnRM&(t}kmXBd2mD7=IvFg4d_N6#lGVUiwl#2@^n` z78${Yy*tZ59nL2$*Jlh3WZkz`M216`GJ7`FL4C0g0m0Al-}$UVaC8^_)QYW^5y(L$ z1XLSVBKGyb`i`mygOG5jF(!26G1`17T$zQcqlLS)g)^EF_m;zvj)6oF9F7djt#lV@ z2<2lQ5?Z2Q0{937ikMzVJ}sgE2a_RMI#9sMdSE4dxEK*pO$m%J6Y8QzM$d&RFMvh$ zB0dy^kZoxJoFkKdTJ#WJ%P$& zno&IC4l)DxGTkfMO>6P6lS|i*=$)#LrR34V1b)S0zyYBDKQfVdd8DpO#n2v z#PzIrmw=@C39=N^=l(?UTKna7;InBWdSp2|a5?DDv>R*fH}p7Ydwk>goCOSq00n$jPu1Zn67M5>mFWLW<}qyMKiQ=+YH)bm2~^pO80tD^u3Y zgZDpjCT*67XPd%sR;jADDd?QklzH$TN*ZYgl_df`V3jJv1Y4g7dj5@W0zld+yd&RJ zZ5EUEOa?@#x~I@~AKRZ%hzQC~%MiP*{ZYdG)P9H=M1A0 zv!#@b<4$PLXx82=zscn5t8Tw#|C=Rb;(mDYVs_#p>hBJH#5casj-0T`Kuf30sMRFT zRewP6x4%Unpzv>J<<<(4z1I;<`O951VzRp)|c1l@zjL3*5d50?%0$a&G63E#|-9()w>vU~X7H zgAV;2){kcuRHiw+;l1URxnW5H)P4qlaL48EBjf|c`P(^#_a+M;FBN|IOYPssfuwVb z3e++~$3t%AEBSGjVT2{@d)RFH8l)S+tz(w3=K5QUqXpGrT)Ha z?{!3DbIYtpb9jom8}QrS3j_Oc#?C3dYHm3#WzO*>hpUSTxp{_Di0k;wZl}~8(!s*4 za_^wLlWS#mKv2&v%6U_C{x+qgr6K@bA@#oeG7!|;*@R~ApI%Hlj$t&=Tms`O_4Gmd zn^Tnn0K$Fz1c+SGz%B15ntC%EbY0@AnZed5gEdUy*0vmeUNsT#TN$e>1ad8?u1Hve z7XQ}yqzjbS;EvYn>^I1p)fM$D=IQFnW^Zm%e`z1q3}4mlt!59T>q|8*Ku}LFZR!-0 z08;iwRLY}T-z!J}!G=ZO{jk^Ia zQzKfy75R~Tk}NfH1CY{7^NMWy(9jMj{7qb~4W;hn0~A-{fFEl`W^ zYH_Xkm%=9n|5M?EV)NQ#ecHQl?LcWhyo+0!_oyk`D$REYbhYMlOY9|&evrl#CX8lt)tLAVADOE*8xn*jk%!if9QU?{@3FB zdd~p;R({8=7wdeVo_GJ;T6~89ak^ozH>EeUs(0OmyZ8=(;xU>iB(Al|1w7r=3lZX$ z-DU5v8}n|p7~FzAU;`RnpqrO3@zx}_G~W*aLUq1AC2Ft019qF=zsvlHstybd^WQ z@Y(M2f0yQ;{#TV>_a9aH5zvBvbKO3p|3PstEBLQmx9tC%%D?gdh2oA^`JYw(hjtk6 zyEkJJr=W(ZO5eYKIC!ci%KYbt45p(6%&g5;>Ye{^ ziiT&M+$nJ`*NrqSp!1n^nl(B~j%cv-Ecw_LHfmSW)Mnz7(meD;)g8*efEa93CMQ5a zGhqpw_E<;&AoZ&>N-)qlRa#@7pW+vlpX$M&p8G1^cELjrvOQ?u6jN*Y6h~#YxNaAE z-Zz|=g=Yavb|KI~Fi1$5OaTKzm<^Yasle5QzYq^TVO@ z>bcTN12Js-<;{XJMA-k7)bBm%3R2jjxZhq>*SH~U0aBOjd$&BV^KXi~2qJJ`&7C+S zJ?%~LR)Bq^?_Ows?mx0nx%_$kb(LV7{sZ%)k4xT#$c!29Y_Ta=|32f}w+?XKVXgEDS-%JnRO%KoDIHd%N8%9L+I-FCo~2R`keF zP}&X6NaI;#75Ai_NGt}!wwp-p(4IzZo@d7`c5E-7`nlmryn8JZi%e<+npl7ZZ01-Y2Zy zZ5b1zyxT=O&BcKcrIlb$ISVB9`k2S!H&pZ8<-X@;9ivDAvjM!M*P#0$DvH~qEfX$K z^b7|o^wUJq+m*Dgy)=aD4eY;Xj>ny+>HIN96nI37sqEuW4jt5fn`mU@~O1==M}%_$w!wzqKXL~eU{q)hp( zvDN3{jzloV_#SO-Q|dAt!#`ZNNhP zO^8_SeNi8~8tasUA$Dd)1gcVq!Y(mvX5I8LwoDnt@sbr@=<<^J3FSVp*N>ky$38h6 zzUZA|H|JoslTeGEyXK^}{r>TCg65fyvoP~bqGC-iQ%cBa{aJ*GTdl_sMpf%=g6>47 z%Sqhli_fbk49PXHa|G(uYq`&jiT)yC(Q2f?C6^=H9xK6dC*(YQG)L6kTMpFJi7EtF zjj2Zp>c6eMR`&r+rtHgq(K7F^@lf1xf0Q85CvZ)B3_;CB2>N}>QT|4PY4EilYRHI$ zrjN#~-qRIZ4m}r!(3$$<*mhV|w@<1P;1hJW7N2GZ zHFUE~|KqHY0%dq(V<>6f0L(~rWAKjeN>md*rEv2*+_Z4lUQ*B;StTdGVeTeIa2Bo; zAT@}bgRW~6YR`Bpj6Q{dGE!>i%h&}1X5(-^YPeyny-1rnLA{? z#m@@L;>(VQy~{uyKN3$dH>AmKsm9x0g6=WlrSxlF5|y_nQzG&fhkG^q6@! z;b9(q{3AH);CJzw*Sl@hzj+G5qEJo&OY;Gr#Z@TMF%qPHqv+5x3LC);%PcW3)rWpd zoM54G4fz0V(vrZr+4t}H+TwSIB%Y};AyPy41}xxdA>T!)8?tL52?YzDD!gw(JsYdc z3Xd~tL`KCg1-=;Y3h3TdpmebH=tx2L5xu40p1Hzqy^QF99kIw)`Hrd@p1UKT-e3sO zw0I5}8?R42|MOR?MYpE*=gij1m)X+fTOZz%`6d%YmN_E_Uau2=y}Fsk-+%d!^rT&n z=3I(?jX8FIe-lPqxB(h?{H%ZTXWG#TqmK}Y=Z>mkxS2nM@);}QEurcl5a=*7a^r0l z?Czt}HpOk>P*I66h5}FC47h&;xqLo&x$S~zvHwP;wF#j68Rur(P?h6hxr`7#J)x;( zN}eBB7=W~c!VSmK*AyZ^LLFCpQkdSMLQ^`Ef@0QG$}oBkf@tF=P&$KHVKzn-(QzlU-I zT}6L298>EUa}7fmayl-us4E_rg1$``#9lIe8uml@suo)uE(+c*l{SUsbK{_j{LjR1 z2KZ~Dg!%Q192C;_OeUYmcDEA`1#A>|-Rs+s`bbpz?!_cIY=E9x2(l?{=i-_1?`cP* z(o7a3T^-Zw+hT!zbPLb{Tt~+4II29(yWT%t8)j>B4l#yJ^^{6e$q53S03|)*6(aqB zeb#QZYl|ajEGpAwubTgPE6o){idAZ4M<^TT9kmo>rh|nR6XRPVZ1(Hi8_$+l&8|Xl zv2ZsCx#j!e%(&e0f0_YGm~1Ct&^@55FS{^@&OmwmEB&YN3*sTef%)5)K!D1>BR_*Xgn+Yi_TR^thU@4N~%=!I_=As@X26ey4b3Iz`X0}sR* zBvdPfl7s*uBY zG;n`_#gx3V;<247J0e}OpRb#}|kdha(=BZ%37F%%2JfVtVSA2TxUO z+cXxIuuh50rBg@4TcVknQBm{c`4ahA-c|9=<#|)w@_uAF zYH6QQEe3p?o^;x}Iv;@;zE&Mu%}ghi=dW$8++nVV3q#wj6YGV+4~A-J)y$)yTE4Bp zc`yPig0CE%(oLSJrM*YTk5*=nR&$5$Se{g2Xir<+H(@vs{lARoV%{Cp>s%CVBU{u! zjH@5ttJ^QtBk7_6n4A7U?oTNFRV@Vpa{qA_ko#lupu#d-%)2;%c?WWTR_SOE62Pv* zF#raJ1@+;Q-g%a4P&SxDv0Ih^9rVsK7Vr$dY)Us;E7U5xG@hG+0$T+kz#)BcllcP_ zz>bsc3bn^U{^7 zd97+VD1e1qP~Fu|;q?HvLeYKHvv57?g33=yA7FXO!#mx^}R;ZmoCq zXmk&_bPxWqMQ*?2f_mrEV?pnE9}Io`yyx?l%KzF0y{}OK7y_Ss_@DVuyT)$m0LVAq zp4Tp200(Z~1@)n(=UdlbD!;pLfY93-*t_b(kIL^60#yDqTMjsB-{|wkv$MU}60-eR zAgS-}*980kO#6Ko@JcWn@}M8!y6Ghj+;i!Du-*ep;d0&7yLqv;y*~jzKygsccF_6` zTiuK;kTRgIJtPhp0#rV6TJ|SEai1R2{n~v>cG&%+P=mqnxsYK##dgo`;R}YCTiT~;dH2h~B0gUy(9RVdh z>fdCzCmxlemUPJl>tF8tb;z;mg8!T&a7DxQ|2_Bb?vrSBST<* zVM#tow@6>laRs@-!ZihE1X4gY(!8D~Na zCSuKi@PB45?MRR6+w?DYNpCaul1kq09!cjYn;X>wyYq4aZJ>Y)M8-@Sl(49h>FC{o z$60%W1`9go)Z(#OuHWK!P~hqd463;F!j4lF#94DMNknw00d}PlAib*(z^s*oBKR_{ zzppCp*gjQyBT;%pAt0Zg!oU_Cv$mZduFak;tp;xChj&ae0#^CQYSmsT)}WeZAnF!zGGJF zE0haF5S3R;X-<6&DDX?R)hC_q(=C#{180wRTV8PA)r6Rn`BWm_;^-P`ZKNl!G*+mf z)NicWeIe`q`x?36;U~=PTFh)m8(Ci56$IQQ#5W2qJ-rl-xj>#V#^l~{i&MX#Ao~<5 zCz231@XiFdsvkyyYv4%l^Ts?J7I}beLi@=pqr!U_$~ZWq05}3!Tryk&U<+Jm`}FJi z}k%31g^{L>2` zPyMm()?fmYt$lnSE$iUdaOkcCwWLqU$?`}d1UJc|Vw*0a$wrlg%5&z|qc%T5n`6_Z)EH0JN#ojjZa)UqXZzg|eW z5lel=pN%uzKTM+MC{B`VGdR{KzCfffrxoO#hBdSRbAVNbtr|h;Q+Hpx;(A0C>_LVuD-OrPF)1``JYjV6n-$ALS{v2*tl#1iz*@+Fyq zR5hazhU3P?hE^$WAB^P8&44BbRTR}TY`EsYH*}?8hW0%#flAN_{=ELP z$<3+?Qkm_Myh{A1tKci@_1E^!q#8Y0RSSPf(Bq}t#j8qZ1_{{dp^kg%2Qs2hfXf{s zSa`ge^#el4vvz1n z{gmXNSU7UvTACNkBo1G`u*+MD-%R!i)9UbfVb3QH2|p5Ye)&?--}(^Luf?J}$%oJ` z_ z6@}K$Q#v&hcQov~oKp_UHX279H&a7v5G@om1^ec%gZSC)Tq!IqK0Ql)=rN*nYI#AN||lyOD$RZCV#3$(n0{knh{P+?jpCYDMRZ?IeZttHPx9 zYr(EiHHf$en~ex$MG8Jf%jq%u(1AS5Wr`#_Vq~hCf)uh2KFo1AYqrmo8Zgk3;g4E zrWGbK_+(D@rPaB-(mU$M-^}=qq>zsrR@&dc_-?QH_U-|k_5kV#A?oFJPW*w886Mpg zbG_a8d1DY`Jn-fB_;pO=4t-+~Q@l@pda36$6+&@Bl9Z=du`=4<;Sq=S3gJUN#lB}K zmG^wx^_1oIa)iT3or97wu`Pyk|US z-*$JQ+;=Bc@&V5Mc2jr#)w=V~z78GITNVK@1y?{n zMd=Yi_JRU`loo_$Z?oa~ApKnC=W?&hu@psxSspY!Aga-}^K`y}sM@AzI|M6m?|^K; zZR$JWUY(w=8HPh|wjWj8X3`L2#*z)okNufkPzBzhyaHXnr{@Sx*5ucG4KcNt;1?DW z*C(k**OK~`;A_#YP5vTQM=S4V-t!edU!86{GriErAaD1iyjOQMRemgYL@_zCcSq9U_b@xSn&J{u|%UZbW9i$YEtnWv94GS&kb@{$poD??wvS{ZId49niN zXZOQ?Iy$bOo8MT5jiUJy!#7SG=+%FIfAi;;AoEdhNfdVGKa~WtUW<=`r4t z;TN#hd$BRx z{Gz54J+6Iv05?3gKzuz4k-oaayw_G_O6e_gCbzc8h#Q zQg(Ktzh%-3@#I(!QZo^uZwcK)Nw%#_4rxZ*T1Y6x-sqgaXaMCq*@rs0boHJj&}xra z1Ex0FH?Uj&g1{mW_Xk$S^3Das)wNSx+k>8BjUC46f~zUOPT#}%#M3hgk76V8fmsBa z$;p`%h1Jv|1$sIM^(i1(lH(+^IcabY80eo&lUGX#ZjUXAO$}hC2+#3qEv6YQ8a1@T zYZk!!0@Ffu6T1h}tOGN4^`#eC21V|Rc=h^NjYUSO2$<-U*@sD3i8&`?sZHt#Vp-}t z5HioMqAC|+3eHg~aT+a8{0oU0SDXNq8u8?5#v8|7!IS<$gads`Sy!#%t_Nnl89`pW z?Nl%x(QTTU7?+`pijK0%zQ)MXX$xwc@x65>Bd01oV)4AyQ?DdP>hy`E$7$)6tEnZ3 zsPn_QQ3_!f)V$j*4>Sd4v@Awkjmc9cKyA#iFhyeI&!kW*z22&H_I?V`G&sM6eCkzj zhF&n~RZ#f%b-|_r78qT9*OA|;diIub-u*@TgT?b93}QTqUl5q+BNwe$L4I}=ZFm&{ z*226LV-!U}@7JrCEELSi-TU`p0fBEnt{CX5S_S(1m{uF{hP3ot>O)QPW% zv<9yJ<8DReT#>pa7kip6U426zljd9%&qx(dNh>?UJTO^7SRj^2*QC6!O!uymGZscN zs>T^pP*J|EbRl9jtb2szJwY4h70G2=~Fn$ljW|xQk0~c!5O% z{y65XwP-Tv)Hu5Kp*8C9->7+ozz7IP$>PQn5%Apc`d;SYu564{N<- z%FW*Q=!f3bmG8F*b`;O_MpQ6?bxVY6C?GXz07JnI&1~%yds^*OP=ZoE+wgr4Oez6X zFpdadH8cR8f6I+eW@LQx^rs= zHR9h z`@^Oea1@@eGr5k!cyH>G@~}aVid)ZoUeCf<&!_dC&lC>U~p=$g1Hf{ku0U=kEm@Qk@l}maDy8HUB0|QHJ zuynt2BL7}PwgHg)hXCFELF@bh@0o#js6pfI!DEI)4z5Ed07Id#Q{EMclWSEH}A2JY@?u7#A~+qtf{bGmOAPIK(mZO=$9@%G7<;?FUXyEhg-^|hH& zdcn3xIoo3LtX-_dA5I&ztTQ7!lx(zS8COsu+aJ9CvA<30<*iUKLe6%A>^_tzZ(1nZ zapkPeq251V65$5V9)28%H{{SjsjG?4SyjA!(#m9D8!+~tp0@j?;HhB zz)_H;jfTEf+j11VNBOOk*l~Y33ZrLkB+Ak50L*v>*HMT!uCQcny8qKr;L`_?bn9=A zePD>-c{GGo`D!$a+rnZend+zJ@HYiam_@9yLIxY?7&Lxtqm0_UZt6JX^PqWH(Mef- z4ct(x{>zsa)c#6oPkjmKltaI-=3^;~uq&E2&^GsrCSMv6)4W_W;k;|FmHSL_NGzy& zRJOw7LOfr!WVICzsw_0f9=*P(3A7FTr)zSQ&YS{!C=5VkPJd*h#K?WdFxB1=HXLDg z;Y$CIc8nqT_JDf{xr5J9d(_ulRmwPWN(^K!lrt{%&80R(NQZ3(TH_J;?I={%?VCKv znf>*gJhE+ha5%-lE?dHmJS{PT-YkCS3u8orRb3(}1b+Fa`J&EA#2D+bsFc-`P2DrLEochG0;i@+6n(1$^Z zgR38ghVJ=25@{jIf}Q2_PoS#~8-CCN_^wSCm^Ov2Z>res6k(N{@rl(Ru? zIk%gvu|*c zNbydBt=O!X@8&&+0i}n)UI4>X*{@wsZmpOin~&^_;ejbTr^Gn4gGByB;8jg_pPg5~ zS6Xj*NJyn25^Q*6XJI=V`^)Y0;Qr%M^9y|k#%HDG247GpT?v&eiZKIXa=^_l+Im}&8;gVxn%^Z0AK;xy(rb80=GkfFgDQ9FE z`G$JuEAt~aQ}#H`_>R)DzGB``6TN!0q%XvQ=ghv+e5TqQx?w77mw*A$dJaD)vMV zXi2CFm`$exXU|?X{?fzhPno<%98)#qJ07DxH>#1R@ehyAm_zx>(t5b}c4^M{wl6$Z zSwou{d>KHPW8JH#N28QlXONNXVo_nHM%#9rBco@B=tG4(;$`cnp1Du#H!cumi7DIV z+n*qy_7N^F7^k+EpNS!%QM)$Qq79(NEQnr^&dj#0jEb%11}+5|zrK3GOm&cA@nR^(}&uRL(qA$~g}R*hh~Cv_I8t4$Y?N19`` z7!hCP_DafPTT}>l7yoPxQj)Eh-2?5raPIk9P%l8Cthm+7=K+ie;NS6k7@kqWxIBsd z!>@6uAH5!m=SkOk(U`ZBaz25~JsT3oMUU~O=Sry^zNT%?a@eex+37>1wurESi-|~q zANx+$rlll1yX=M(Bfssm+Ibc41qX~6~A#jo``=%L< zw(D2=x}D8_8$H&K(0dS5y_d!7#Oc59i~1<_EZat>w`17xSW5W7dx&3q--O#wuuAM% zp<+ozjcgVYdo>u77Z9|69#@-mbnuhT8h{3*e5>0L`O?P{%D+60TtaHUvlkE1zHGOW zc|p%gmxF&9u?*H9gg@7Iz`ue?zg>?suGN_jnVi@2{x6;SBW{FkYF8c%PH}*a zFWdFO%y!zv18_P|$A!k~SF|GzJNDf^-)jKex(Kbj+I)GP?<|ABAW(pzY@{b8#y?Anb&0B;`2!_JHd>_h}Gx(~hvR?>@D zIT2|{j>KkD{(OS4#=$ft38(SAyH>)3RHC$z=)diUeF0ISxJw2Bwm*MHZTdqbJR=!& zvGMFoD?Q22MgV zl3qg$RrWgIKuX01rtR8XLhZ=BQ9BdW%}K^hdhhkpKS@f{3rq+02v-+^yBENllIbzJ z>Ctcaipc3F0@J8b$>l3)I4QcOTgcZpyoUla947-xIdCnf8;V{5^PUHeTV;}0Ax>(E z!DO$1Us1OkuQwySzlnf-SF^4zQ*9i*cLit%b!3eZ^#MmAd==Hd0xQ3MT8W6r7rvzR zHm2`;W+Ey}W0mTFxsb9Ssie0nbMcr3IlOlOoi~|%b0I9HBbw$ETEK|v8$i{pW*Mx; z)Pi!0SHtB9Iic^OC7kqg1M?gwa}-uWi`8=foZngdF8LTrZ_|K+r`ZznmsimldeN#^(Z4MS zj4e-bA-uEj$1_y@iov7RLRGJVk0S_S7Hk;kH*h%t#nRRgiK$|_pyH=whLShq$8vJ7 zeZD|YDo4%x?{Wh`2+(#e-PZ}xvo6(|fxKhzb4>_biSk;8*n`aIM=-UZwBvm=?kXV& zOhAJl19ShRQl0oxVkcw>Q%+Fdnl@k*{^9`?$cmBoBsEa$wxJJZM=~Xmjiovfv zURC(M>MFYIygDX&3R;@WB&`|%<%S#9ncQOsMtaDCtBG?>tA1ITGqaPz)Up%mVlkeb z$;*?<20+SfLA9;=m}q@aS2Z$tHSpV`YCWl{kO_BAP@PhBZRcnWU_}IhYM&|B392XZ z#ninEsveuF1+0i(QPgMggZ)A2>bDagU9105aUe*A0d02mJwi;u#dG}T?k{q zZ8j7zT5W=nrZdfO3dq_{_^M4?>sGPhE?`15v>gIW2s+5eAl@F=PTevgQf-9eYT8Wz z69Uv^LumFe?%=i>K=ogvc!5@fDIIcI1_BK8wf??!pyZB3@&Zc-4Ff__%1ssAV3|m;UPt=y(KxRw0 zq9SK{Ter3h6f{vrsXg!zVXl|Z-6zP$7M5j;UEsP78MuMHAyB|ku)y@|1D6ET14bVQ zZ2H(H0K1Pda2MY%6VV4?vNi7X@7(Bz$PVnW9mt>z=xz)U^M{0#GexZ4HB8QbAYt|Qk&MgsCjfHi~rGQ(noK@Uw#kRgZa%8Bk~ zhi$M8$gY@}X-;y;NEczmSaukgGq}+`oDy=|>!XS9M@-CyDWg`dKz6jub<{;@xFUbF z`i`(k_h|jbD2B~u8ICpQWBzm*YtJ7W&l~G@9V>Z0*2g#ICv#`8d(^?@4kv%~VBVcO zwxhDo?~H%E^Xwlc#D92_@L~EBtIGRDYM1wHuM%QD$Z0gOoxIjuWmn9bpkJW=2qe56 z&h*Ye>C8U8iS>`}$Q7$~O4R98G91e+DZn^3RJfY^KZ)s*aUWb7Xp4F!0EQrN#_hQ1 z0h)!H+|SCd@~7yES=qK7)Tpr?wsePt@8@511+D)nX4uYh8%&TgNY?E5HaC{_WYD}M zCgS3AuPYz!9cK7{aqf$HhBo_cLTH@+Od2r12e&##rUbWLdIhB-PT#xL<^S44@9w77 zw_Dw--(T4n(oQWY?RraKFp7>A=|$K!rLdUydwah*ZzB$#3Kko}$^H-O-uo-*|Ns97 z1R0LNg{c{i%9&&i92KraQ=@W^LNjw!YUaue1r=v#4pdCsTTvTonz(UfwymtxtgNhT zYs=3Adp=+5{r-GE=X^fzU%r0;zi~K+%l&e_+`?et+hFT|>(_W z_=Saf=GuUz9NIzB7$5Xp%8QIJrKCyMJMm#+16GQuKc$zf=p=;Mv&=C!S4nm zH-TM-Ix6$LlxZU8dqAZ}x5lO_k8aBE@)-fNhQNhVhD3}FOVcN6pWH}k_C^u^k6Zl9 zSTZqvI(7mQQIMn&Sk{66uEIRGIoXcR*HasK)&5!@bM~I;LD|b7g)sbnarebI{F8 zd^5%~@n7H%4Wd{&uy&Y_NaJ^8hy!bf5$zO}En-VshTAApX#<;AcAf_H+%XQkd76(* zFGoY~Br`SvPyH#ILG*?ZBuB9mnetWmCbx}Z`$*^XyG@2c)!Xv~mjI-Chr}>k2_;Ro zKMo3z2%l7SLyd9%DBlMX+9~0pXB%cdX$zxGyG`=MWgALE=w@d#pcvY3YX5_^p+oSM zGhf$*4QPLx4!_-fENsES@`aU@>S}&?^&u+DQ^@M4_Sad=y={Qoptq(q01zU_<#+oG zAGV|$jxC^iYM-WGEeVBk`jT!isugE(X&&#szu_LpTnR0-UTjX{yMd0k*Gwg+&(^`u zO2Zq6kN^CTd*it0Te9_zn`y(+)Q_!l10Sv~P2ET`)7avFi~o&DEF0f`8Fymm;wW~w z>&a=XYXEM8M%U@DpFK8=D;j#DQz7B_o5HF9gjl&{%?3Sq7XfS@hSDW_z8fvYw|NiB z?d0_ss98{3R46#nDO2cv=>DM;4Ah#`S05gqkV1tDpRZOB{~B*+)`~!+9jK6a$fR$n zun=~ZH4^JYCmpFna97jItK{WE=?(4R4RXExLjjZP;GbtKr<@ej6h5S?RP@1EOX<=( zx257e?uV)-4(jeCr(hK*VS(U5aod)4pzRZNwkK-gJWpkP}T9uwnN#yf=B{XG1Nh5E! zNjSI)uM20^9M}(y88q_Ky;4v@X0#@E6oJ(u(}xnx>5X&UcEi-0LU)()rEPz>Yb(88gt_q4!V03cJ0*w(G`dd8>{WS zgx5$KWfEYML`&;bI$7_egyX3HZj7-*X6k6Ux$1<94eF+q>2didt^}zRI;V|Vr2qPL*Fx&^2R%V6WA(v zw$c70=;7k+;Or;7!PEaoQjCeAr$0BFKrgKj3Oj0nH{j=gE*nUc^@ z`uaX&XREH+hFM61vLkvcp{uk}^%q3j^Nss%veV^@iG4<)doZTcwFjJ+-UWo-NqF0N z_aFwK6b&rd znR>I1`yv?9As+VA5b+be1G5@dI#M4pOxgF=@1(q;UM1c-gzM|QR``~d*dv@QvrL3(s3opb*hf*=;Dh@1HfOs# z2ZD5+z3cYBEXGcNS7}^|{VFs;@Hh^n)EcBCT$n$<<%b zk;2a8EU_n#gMaplZA$0C7MO|hxKF}A9ky+EtXm9C1vxu7n0X%O(M462MZ#AXo_5o) zNq(dQV#~D~HLDEe9q4_J8XZrhf_b5_aSHR05=2fGaCsya_teFE5WW-FrR7VU)$QRa zYyEEXJ%}4jUobK{EB-mp5ju*k!6I!GQ?1fN*4c4{CLXy3f6XL{uYXHe*Z$;7E(tbD zT797Cztv##G)O#UO6QmB&0W_{NKT76f6SkE_(pB6P*#5Lh+Q83e8>K$28s+qy7fZa zEOI)U9$QX-FoGYAE>_MOzA5&Q16ooRUn;dQhd!i4eSceuIVe<9@Sy0+;ImIMRYym7 z1)t-0GrUe2PR4plkykKV%~wEPCr-Z6h@4S*^I0-Jf_|J5n;n*bL_epme)g(gIL!Bw z?mcU2b+M$xQsHbx8roFX;_*yqQ3?BwT@Oh^K}n3d+GvOtP0I5ri#+=*=WP32@YH>H z3|eU%?uNEHD`o(`X6S&*)il_LDGoW-hC!hbZ?4vFOI_p>_-Oz5Ik@_u$2N8AraoIW^Iy#^0ko;UDxu3qdop#y|~|u7rdASoAF+ z3G?&xT0EG-p-IjpZo3>9F=hKBFWH!I+%8H?a+R4}%SpJWnwZSk6U`wJSViIrR)VxkZiCMoLpb z>-Nb)v;FP$@!>rPn_i+wA0w@AIfb*73IL3;DH|8HbUEBp%8Y1!7y>q`w)&yCm z3NTb(qQjz@Svd?a668h5D14rV4%lso&z$EYLR_=31zB12zV+^&R%8eGmN6y|Wa3z2<@1HM^Ch#bQRc^4Esfc1DgpDhF zlcZ)I)#H_{X`W3{zEN(3T4u+q0%L|w&1DyBW>9TEY9OGngqxn6$L_RAXnNo)C6mzPPjLqP@2tX|l(!2<5~1hNWlF}v zsvtqNg;>V739vi z-rF$8*SVM7QvNWEn7V3UY~f>Ef6xxL|Tt^Z|g;9#gP(2igN5>lZq!cCu6R)MtZg&&5k?h*lo1L2Qr;A-p8J^)uug;XML;{Ne zT~5>!pBK6FI_LgqbC3VQjXzpuZIKh-(Pvh1(vldYC*=$s0wPDA|11fPmTAL1ssqA| z`X*9X;IzVI6ulJ*L0tU&3}N|(+k|fVf@=A5T46j%y$H8||5z9RFq}lV0Kgb8ym)Y5 z>+M|iEi*2M>+yd8#*TRS(I3q~t)Y4Ja`8SKP-~!H1$_X+Y?$qWTEk?!G2TI#lYX*D zP;oqxc15Q2%IP0X0*iv!M%{xpOj`pO6wsx@EWo0O2oeMvHkWo3y=fFw8OhB+uz~PK zDgqc@;5x<#u!cvSKq9f2dljG&PXU0zytHTXvfs_C0)Ro~e*PO^H{naUDJLp zx!=H41kf7PyZTKOL;wf@SQMKU8wD0c$Urt)RbskN9o)aov|l&4-;mu;81LWlv!CdR zbZ;26o*XKijwwHo%4b*c(>zDm(<2vtj&J~t zg3@E*2^^2-LolOtU8BH33-ffomFW=d=IBMwu?t-y?DQc9piy{_Wv7o_6CJ_RN5pTA z62r$A&Bpm%3O?|3`d*$`}Ih zg$~Z(ANb-OPgUaofG;u#^71lzY65&wX9JB4Q?{t$Bo+E^P5+IUFCS5ooD~;KRSqoE z^;`|vA~9L<@pWSN z&qo{DipZr}66402O`F2lYTC_r+{T;k}9*eh92GEZ4iX8QA2A~D> z{jc}^@-C*2PhlB;xD5`?*Jc{Hb7|X`e%y+K%1r~s29#E|mGXMEPrp{rBMyZ^J{wN~ z4#fjqhwt|Qhhk#rD3(l=(OnV+RXI=xlsF$mNf^@lExQE{MYBY_h*p`{?>36SmJnOR z7YsOnFE9_u^i35ODvmV-nKgXDZ(h9>-mjd>l-|e@QjL-&K3^6%6#ULqfkUy4?uD>Y z?t~L%c81dSE%r;LsMKl}X2l!w&0#&sz3#DDvCr!nJ?Z6j+aHFWkt3IXd$>G=?Zf*G zA@6N~t9Q%ez2$g8hebJvHpT{PCOv(AVJj27w5eJq4SHCmID#Ev^YMJyvjOGys7?c8 z>+^YS{Kx6fY{;G2K^v#M)peq63191!S=+^V2S>(UZ1c`5FnKPljL9&2oUJT>>xfSN zineq5{;2$Px@2Cj&<0hFTxpwwp%EkF$FtR>f_&K^5h_xV1>8C0=eTcejen*!QnZvl z3F~`c@r?3H7Eah=Y<725I(>3s=LgY+;1}u+b7%lm^i}V?oucm4a3EtW#g+FK5e6~8|SaR}!6TH}h}s__E?|c|CqRcBS9$Q$M^r z;nI~)BEaaX-OXA`|!(Eva-Atj;6cbQ1x|YP1)+msf0rxEIOr zRX}~Vv@;Xll8-jaxP3r8W{QFlGwT9tE`J7YEy5<_#ZibvQo%?nF-;cqOeUh{MT}&c z>Vu>QAy@j2sC4Vom8GzN&&FbcH`Dt(#ug#MmUeV%{tu_YDt_;?FdA^L5`$V@1`SzP z3n%vcXjP{7i>WSy{dQA%Fu$bTBgY&t(;D+9U@Vg%^doCFiB-(#nmS_Q3KZ9+k$ixcRX>zVJ;Z@|f!n;9_Wfc3dfs z_PcZE;LeCV$ALv`doMzVnJ6-;M91*WWx5_;&&YR~J_Ip&YW75;mgVL4*)QgvYZgLb zlX;!EBT?BOJ9#z#8#HFu%X#&l>{PpA%OKL#=?=e-^>+@^txNo|sIHVdMJL6t2O_iI ze~uTWn@6(!E#B2k3g0qZ!e&fGnvTf(KK(Q!)BEizzd$Ng6mc+eQ;Gem+O>`5Ff}5l zM=iu~9vywgXVtaOWm}4mOgpHxsO%k&C^q$B=G=Kg-bdAyHR zN%B)kdu9DXWa`Etlm$qMMJBZG)ZQn^$SXByPd)$!)S_n zcx@VTjD@<9XwPD$G=COhvuGgeL{~CAqXx<0+DI}|o5KN=M{AryS#eXh;M1z6;3@uT z^a^lC6b+P&;__3f@o?bCpqX_#M~^bB#wcq~&0S6p_lHNSWzbcj!|mxEYH39ORG@SC zWZA}xn=;Hwvm`Q}N2LU?G6A@8Xeu)U0kVinks_VT_N6UPCB2VI44*ppTh<1PW*#GD zLJNHQqnMG69TMkyu)!+I>)D65B*yW2lkY;7IlpOWXqiQnXw1AYZw^3Q_Z&sMU89WBU< z0w@PBNUrw${#WNuuFny_1B)!kPg+5G)@I>rnTj*%J|o%YwSr|xl3PL4NZzfQP)VcQ zu=Qc<)d|gO{9l1@?>I?Dy|76s+&i*#mUZ?O^%Ia5Rm)Opq}O$GWG zToJD}x@L-gC8cO@jc&CJOW4TR5ya-LAfJ$6BCc%O68#iW_kOtVCxS8e6}u&+z|+6z z&T6#hUIa*Ow@d0}lZKh%8|oREh8OPIWWBU;DaO&tKNT&i7sZYwHsAu6QfT+1{i{fM zp0|rv0t#kqXt!;O39?(?oifcT&@YSTB)Jvp)tp^5g78;3!?%k@%}ZMXO1IR6F1Zz3 zpcX{OOd4-rn@M9ZNQNSzzU)mbIs78)VcgI zG@AYBTirQ~!m64nSY#CfI30OBP$&fOI&ih&g+lqMwS%DAuD=5mH}RkW+qxL5nuw6- zvS%VkZA&lKCf(gsB@i?K!UC$tal{_h0gguF6I&rJs-{u{J@63vEbzSaZ0T=l@O8PO zKS9cYDW3%Q=C3hL1HfD)q=EPV9z)H%-H%*UXBYS%{uaaaF-EU+HXlxH627wYZ6NDL zYU;iuuFUC*e%l7oH{4ob?rq7I0Hcd)uF($V|HorX%}wGk`ek(prKrm!w)yCRw1`H#q>`i2c!N%egA8bhXW+ zS->}VT!3#3onGS`lNq-NFyQimfN!9?RpYxxRyC`D^u&p)P^yLSOKN||fkfekT$p<#wQW`=16YLpZn zG`L57vKJU^0Jj%}(?O3;Ly^JoCm#P&qa^m}YV`{ojmf@ZYTr@7(U{?VTXQtb?adaI26|Cp_ne9(=Z&jIJ}29=p%46hHnywdc3cCdOf@Lb25L`hI=HH}@L@bWf01gF!FQ!M?4Z@|OLFIO% zO`cG*)>_+Zyy>Ed9lCwgdld?I%2DtRnkVH9vQZgh>_ zjJ;kfYSFTY9ul>j8CQI)Ffs2r;e{D}!Jc?ME|JhR@$TmYx_1!37oXYaot`(A**C=5 zH-38Fn0<5uBzB`seiGU}k?k>wD4vKbniRF4@O(6hemjYHg8_pSz8QM@1bD*B>2`H!RVACN<#^IsedpIh~=2bv162GSmjZSz@v@Tl}eGKea~lC@(c zc=wk}ocrFtysmlp+#b>e&%XHQ5}QeNgDdBo9(Tq55|*)RU-BMIlefsUb89^^c6>&8 zUq2_}tzP@dXPbFNk&RDzK`^<$h9a7g+}SxlnyNaXz0oA{1f(}!^XWwQj}XTOU+n4! zhihHY?>Dh`=|p9@eB59%F;=q6G*kEi$#wGSja|`=;xdiH2d%atB0a&grMI3Y@bC74 z<47UA8TyZXXpX?qAOeoYmpuZ=A^Hb$JQp|`_gwFog^BSJ<6&y=u)}g|kYn^ON5dk_ zmoKyN+zU6JFaSAj{(n0fsqsVFI1i{8{vVJ-rWb%5^AISyX-X90-e{FwO=7J%8XzF6#IgbZ-0&k9J*zFkYnzwQ7*4tU)xFW` zzT(j>DUG+_18ud_+(oCNoIP8W7mPJ#tTy3*^YjhGmJ)>c0OeQ98?_|?!>Ywa(V zI&#S~eHh|C%jzB%o$^g}Y6pLQo!%Q38#?l=*f8Gz-qBwxNhe!{w|J3nT47%Yh4jPM zf)i_c#^vy*zrGECCl~#J-h^u%VS{-I1gj?R+yF%J1s5b|cijhv5Fn0*-@dW4b|o{om@Ltp-Bc{LphWIjf4;}6d#0gTCfx|Z&|nhXQuQppSKP_OMi5gqTQ)> z?SqplWzbD}{mZCp^6YIHVm^mOyjWOZS)spW`MWP_mBse4Iz~PfxwMJ=+jfBGa3XR+duuW2{S$S}IGcXjH6AjL7 z_kEyq6;35TNzLk5<@=~qfvv~_mdQ~&ZMwkSROULny`w|lb+eRB&y~)k2E^| z;M1OA-ch431!_(;l1T$Ll|&(1^6(L4DZ)u@-9@yqkp`4+a_FVasxH-qfN*V;C>GHgOrTWozg{XUx$KHTWL50R`VaK~w ziq|z%KHP>_sX-dQWmAY2?v+J31*mq&2 zjm!Ei7x%{>^5EicYV=`5Bp2m#jBg4qL0Yoj_-cAgjIAD&)_7Z>lwu0_5l==gR_NCq zO19O!+iJiujCzX`#z03Laxa^58_SLZ?aKwJt+7j*l>A({6$^ano36Ia`%6>WTGB#e zUR!17ZC%pMT{`cM2U)3s$P!jWR4S9#H|lZc^pS7P-#SmkIRUJpBC;c$XLcHc@=~M7 zT#+&3wL&!$XP&(3Ip!s+09>@xmddlK(oVEh;Y^(6M1l(`=|Mf|TcOM5~Z!mWr4nlHAg z6etUm-Ju_OuXdZb!@9Q@tEh6FU4EPr@i@MS5R08b+U1JsdGTs+>96}!FV1 z0EE4gWPz-?`zK1Gc5p9BLT&K;sb8>zI+4(EraJe!`l9#K0p+bSrSh#x)Cd!^hxa@z z)MT;}wIXV06s z7}&H1*MzLGk+gOyTclc;CW4bMSmn&>m}e!51b?~#SJXEj_Hw|?yq;WN&Dh^0k!pbV z#-I>`U2PoDbb&awfNY^z2!8)*pZ7YuPTpmw6_FF)PQTE*WHjWl9}{pAGVd{XL+C6p zywF|}N&~K8z>GgUcUE}w;?DPbF1Jn%zc?L_<@Cc^LFO7-%9u)8wXnFtJDr|p zr{dOUlV5W}EnnrNLFed}#0~Tv=h}&-`{pEh-7hBQIwt}u!A$tUfN#%Mlr2f{Ya%(Q zP2znoqnWzCDRIg|TW-R1XFlGx;)tmicfD9In=b09c;OI%3->#lHrZx5^LU*1SR|76 z(CkE1CXzg?1if9B_^wn)w7R3Sd9Dr9=OTL^q6}-`g5s{`|Irw^6z?Lx!9CT zEo67*7=`|wSGaWMxuyM_VVq=E;Bu%?I44LBf2!^dj4JHg8Y!x0P349Kp5gc}w;&d( zgX#xR(=U(EaQ;%Py{XucBN2YBAHa&s4#9W`UY54a6@F;H@Cp<~V9|_Ow7MCx>=eA? ze!@~XSl5+~UpQmXPBv+$8L@Pp| zOAXAehIZ#JJYq8HAY+e?T9WQU^btO7gAfRaUD&rL?wv~Nu!MOdlDElHPpS!Gn!0>M zl)t?vKe?j~62Y!NJ6mb%L^HQEKkWN!G zU-{E#_;g?Av+rd|a!bjd7E+Fqf={!~6{#lvLeMO!$*YV6q8hVK6$(QN=S3wEYM2-K zOzIujM^>g8E^B-_w)|*TktO{V2|CNqk~BKokI0U{DEtbMwJ9Lm$PlAmn@zo#S`1_~ zSAmY^Qkug0^JjQTdN#W;WTpxwV~5dM;s}wqw9_lZ(@Z`47b(^HRhDE{&O*Q7sHS^u zZpjRFW%($~4X#s=SZ#2A!2;&iksAo`jHMjQj?4qmr~TZ3lxAK~bUp@T@ZLZDR}{*$ zfT`x1b?uo*Nl1QDZQjA!lpbc*CqzDVJ!|2aNJKO%IUxLDRHmidxpOHA%TdPXZ3>bL zSY*UWWrVLIVXO5}!AnUn=Ru)6QgpKYL}fH(H(#$dCE;C^vExi((}TQAh@`fFLS2M# zRY*~Lz>dU`qQ>>nv1&!VE5~$MI=4^R%tsmXIP7k>G^J(sWB~I6_E3HW^ziDeNkd9; zqg&ds;bIz^R!wH#j<(UK5F2qlxYAds9D{)QJuq}5q!iaX_*~H2~H(1SI$&2bZ6c{iydNgtCRkJNJfUi*}DM*@N159-F`3fQGjH)2MT$ZIx#*#GPn)nuWOGP*Fu!)?Lm#o z@yEm0gAcqeT*DYeHLj==a!qrAK|)IPKu7aZAXRc-?R-k{cx}pK{icuKtDbArFMO}K zTZmZ=AUtp{cs}L(Nsg;8SO2w8plKkeA`7>hgC5imw7Wv&Tb6CPF9W$7fa(RaZ#w~k;Han1y7f3*> zk6t>s*1T{tX$DM@}6ZhlF956M(gN*mILvOapu91v(OQ zXWA}^bk045Zayv0G%h}piV)n@sDDU+S#Ua#ypEUyP-=&ZW9q$)2B&9k zjbz|sJHe*?6eSS@fMhWHjYUO(p-9`3;B2J1)<6q+zzQH4yuK4_B*Ot983}!Q!4ih) z{l@J69gF?MpZykgf;>eoddNE#3OE|pO9OumMaGBra0cuFl0hB1ha21x)bHXco<$y78XI0zsd_lSJoaeiLx$REg&+8}&x+CNKc zgl#Gqid4mp0wiN)tWO$0oUMhfQ5b7A9cyC`gp3aadZI6O0Yj0|tN76qqCkNi-OV29 z@f^=zG(We9zWCE(qDyh?=lCtt>t5jDJF(ZN#wBdo*QckiqkH?FC``<;fm56lFJdPq zPEWixow$5;;@#r)vp*(2vabi3-1r)M-R<;^?^@Rluip4Qeq)dPKS{>uzv~*g|F61+ zW1028l8lJ`Gv*=xJ6+@7Nyh)6uJQQ)W^F=t{V!`1lL*1uB#JHn-{~6M1QCtj`Ycav zt@-K_n$$<@cq$N8*asRN49yh|btEb2N+|axG1LkTQAz7H4)24H>Z7s3G8Ozo3OzY$ z^bFIjk=|C?DBpdeqgmVJb$65<1?JQp_3d7ihOG6$42Im;?m zW}QIy05i!^weC)VJh&#Eg*6lYVB4po#Ny)oNv)VI!J(Qi8R~=DM2Fe8z}R z61Fl+L1P7JMx@cV*1akPg(Mus>IQ4Pu1R|_r^YnfU8s<v6)X}#?(uoj(* z@MRC}3c%S=fJX_Ojj)Qck%_fMnE2 z^(F~B-WeU$!G;i_pu)voU5WHAw$^5ewmqR%<*HktZK7dVxQ3QLH$25m$KJAZ*9_$^ zk`Y`4lr#a7@ooC#eb#iRWG+zB9J#sb{zgYhS#UTb{KJ>osC)bVV{NiLGy=nK|FbqR z(%n-Y8Y(rbKUb4a8k@_z0<2AP4rj7oND6h8&RocR6R4mid*S>0l~A7X;sEwg$KvqK ztzYg)_C|Roh{D^5m<}L$;Up`10w5VGC)gjO-*{09zj~e6IcItH!=TvW)1_VjVhC<& z`u1ANXPEZ?`kit5kSFz0+XgFx$;P>;g;<2$Ot5kY@Y0%qTtB&S_2A20bD)rDNCl%J zT}1^JvqU4!48Wy$P?FtJ)My7~Qe8&WE|gOs=qkT@hvOP^`TBBWa_%Vdr}47%$T;xQ-9A zz2(|fP`h5T#en2R;+%>V!E($)?xZK1Z?1X%z~AM}vgw7cxjP?OQ(9S&Jc7}@8)pxk zx>*m|Qe)}tD>UrpYH(k@lsu0PV~t6$GBFOJ*=_8=UQ!_{WYsw0`zMWeIi9)rZF})| zPqGVjtA*3bN6s4SNlgbU7?#B|5+*)zOef9FwO^V4fId4AOUctAE~Fs{j^?NkHeuX( zU)rq$?DdcRcg9<>lU{6rXiS-_vz$=Utj{46vM!3MGc?YH&l=$~NqQ6a_NVzcmM^md zthi3p$>+mZ4>Dak{d=upuu{dIPw}XsyO8Z_%ImDVN5u@{FIUN21mhFy%A_;~iFn;z z0$pRscq>xP9Cht*-gZZd@J9SN%H95r*t?L_%GNuT!_<1hdED(L=s2XnKYQKhz^Tw$ zVzV}7>ZtTAB5CD|n98XIpsc|#L&w)LbG7u;<(owbrSJ#0`m9&5On7_=ozQbM`9*UC@O$v?tjlqQ*cP`{Mj{^ygakBf3gsRCvFJlZ2l4t?R8iP_OEgbwz_#>i z)I%Nj^}@-k$CbGDa&H~>jwXG)93ctI)Uv~LsX3{&uXC<-Qva+GKWD23Vd(dtSYP$H z?Oq*h^$aa!wIkUiYD#E^@s?q=$tjgitccqYGwuW3Y-az+5&#{o>+S|42fZ7aooZ2tJauJnBwvRP_A(p&+aLhl> z#6`P>)N?-;AQ|8%*c!#xcR(RvUzIl8DzHasMW+V0_T5uf^B;`HLAiD9!CRjcP^_>T=(e&UhoZI&9g z!w2v?nGt#WO5c;HU2uymaDD4ZvFCT8gN?r%8eVoepI+#E+Vg@)-3pFO^ zO7u;bq3(sP%y^NXTOr4m)uqE$d$;;>7Ki68FT<5S^!9(2;hy_tX>eiVsL*PV7~5X$ z!XfMKwomPfGC#+&Hby=#Z@0Wy9k*)GHo06Q^rWA?b7)-XSk#TPyLL7B)0W$6L06xK zwYVz|bl=r+2)O+87tcU`BjrrM7m-7ec5?XG=hDz2xc%>M0oQh867x2uQO@4;+tUj? zZQP@phU_i(@sRX}A7F0uiHsk<1Czx=1Zxw7@RJbHBb2=yJPo*wspsl@h8Me;WgpB- z*x8;y1krT;X_g2SfpFY}VSi|eW+!`c8^Ye5OgE^Zi008Bo+AD)=(mt zQO+#eAfkxd0Tpf%dH`iGzoOh)^wHe?hX9#8AT- zwsIlKTCC)`3K(bxY`0p2+)Z+!yE2L_VUbjZ2IB85k$h6VQQ@uSb>@%ihva}7`5o+clv%@mhB-*QY3I2bcVrL0P8Ot1PqLBmMxZ? zPNAe0;S-x&6UP{~mHw%b0P`Tyn+Pd)7f3r88E&#rOIZenfGJzf$e<_8Ez=&VC2|as zU$@(=pUTvd%{Um9X+$_z8!p6~%2dR|57wl;tET;&BF#=^G6_s*hlF(LNqC1%#8jpv zk9la}jE`(qyd`Xvk)p`Wka>^_^c8)pvN8uy8&Vh|>$3@4L;#YJ5YCuF2>&?+BD0zT zpn~%m;Tc~U=Y(p{s}L+2CShLWIJp&(eE)MQywnx79Nje`!_g+UgqrhuIn2%o@_sqT zumz)2Ky<_dcQNyHmi&G$oc~J7Jm~N9l9hGuHq195&(95pnell#mF|HQCcMf$WP}MR zFa|DyguAhv++cTw(|X!-t7UU=h^%|hL{0{Xr8{5_IwY!JC7H$rdm!vZw@<=0!en$?f2- zC`cVL;R%C4Uny!%$;GzA2WyY)T)>YY1IK`c#4C35dUlR$((M4Y=Bh07J~A+dvZHCF zxEYytS>}Q!LYQBmc3hoUjL#{ly>P=Q^|Q={#!CscNU!zK0tT(5IiSF188+a?)<7_F zE6Eo|bgvOPr73xbS=4uK@UTR+Pe$mPs&fxU@EDEKB%4xa1YDacevVlNXcbzcW$OR3 zJW1{=ZHWjZ+=t&`7%Ll>mGj{eOs6IyN`N$&6}I0&g0mWh6;vX`$hh*|aN4((azAA8 z#TS2XPC#HEcfst$FQ!V9S>^W{68susV~aXqTPZ$rqNg9}>YnF>PZexVa8+?@RN_cr zRe*aLWRo4h1e-r7_d2+sWbppopl!*#MLAh zRskBv*}qA~C_pldYh#|Dv89wSghW}XCBlITKlCgAax#``OKgSsg$<+MYk>t!j$Azu z@VxO_A{=GvwS>I>iv35(;I{jO0whDDdJ+&a$n_`X0$-lL&{JD!;(GX*T=SeUx;3zA z!M0I4OX}tM#?lA%hgrTK<+w(`dq_-EDn47*yY|p_7OXClv5AZR(eNdZ`=^+pc68^W zdw!uigCWy`)&x3Kjo;)1KE{noB;0@P8VEl3(ZiNRS8tq1tMaM|CYpm!gIuMd^qU?GTiwgXN^dJ!~p z&B@6Aa}flc7iA(3unGWX#0Fu`inM3+(IX%MD|GWr-Q|QAj_Fm=o0vADKV+9vNf6F%umM7?b=suoauuN-6Kd?Lj zk{8^`{+*^Gz*&uLrUMoVBD;eJfaQs{R+BWaJXspZ#;K}%_HT;sH|pv)UhLncFhH~$ zumVDxo=6~~X-x*sYCy?4E=2GJeSqOB4TvWHbz%n;r=I7m^Y3lmAbWF>YS+hh&WZ zO)@_4|B#H(KP01N;19{rHWiSJ-)kgeVvS^!t&t4s8p#M=BN;YpBm?{}PR8wjCmGfM zuO#EY3{MpPe=|I(`JWn|e6bQZ87MtW>)*qZ+kXvD`u+@0FhIc*AQ?x!t+f6k8AY)> zF1UyY8~txd23tTfE(0V(PYxg%J=CdxkcRlp_*(P7wkH@=48}t z#>|YQ{Ox3*e3?u^H^W5G%>bN?5by;O@oy)?cdeW8xM1TJv1NgikpOfv{&F(@?q(RF z%!p@)cV1128Z-E@*q+D#M>j+IrfT$0pqrt-tPSKb<}-nAM&?>K!;GaO?JMYJC`_G} zzP4g4=w|E`bTc+h&tqXgH$xO~G60f6??QsMP-Fbj4QlBFP%#tvs*Ar`Umgq#p6o1% z4kfk-i5v>a4m|oYyH~p}>)219JDJa#NHHHH4N3Gj zcNW-ox~o` zey375Us`lCx#_fw8c`vymlpVXhCFuoiFW?T^&>4lm}?hri1NazfzIdADYxc9=lUyv zc&81DYc-ET+uKnACu1ILysmN;b!tC-H&pGh2|Om3%)cG_sJ+_!+&+hs?X(UJoC4fceiI&eaex- zD9cc*60~!C+$zatSmHvuDT%sH>-xG4dUCfjb@fUN64e~aWf_nhJ#%M(WW=^KAi8={ zq_=V#9VyK+pUbem_8Jn(ym)(-eU->DkfVk1-JPC$GBJVi%2HYIM8W+}*}6W*C9#ca zTJ_FkO^GQy;{d6=c0+Ex(RpTVXC6mJKr+65KXAI1(ws?lRVTi2;Tfyc%E{6LQ$P>e zUz~3ZcS<|$$112@L1FKZEkXR+%dPaXM|kbG@y6u3=qDwdh<;l_ES$BFUzd- zYp4vsCo~$a_#uuRmu~Tx(eM!o)NTsxU2=W?uas|M`tT*|uch33Am^>=e`y>3h8pRjU^ z2ZPr6NWOqc##G^e>&K?}pG7dY>Bp%&R=zE=1h{$^^e`J zTbXmU2p0+Kz82eKe`|Q>-gL$IEi9&cXdTXriv(n@Nn!noQi!bc5J9zkzYP9tv509p*};T4i!{cLsYmcTXii(_<@z2OEHv`ii<+CEjjHNvW4zlEWy1qiZClN(6i>EKDhxbYzyq(W#fPaP04{vFa0 zpP_Z?0G+QtF5HFPD*xseFg#hN4(ypqGMJnd7J7VYLsu#Jq>JR^4xbSwb~%1U+Z?=c z6_o#;&0UH*nwR9b4BBA+Vd73)=d%^5_%@(&)9(2ka*PDs;Lrpz_B8`*7%E6lbA%OZ zdSAYx34Qr^l4h@SUOHABGI723Q$iYB*@CnE*H@;BSS%;T&R^)3#B#h9UHKI>QK;n2 z%u#$a8}7Ak<^C3luObbC!2@ zeaclAcp|3}qCVWYQT@gG?&5o@Fm@c~&Cf0AgeOvJ!{qZNGMdH<-bxT<6SY$-%^PP|B zXB96ae;l^x ze!mm1NWw&rkA<31Rcq{S7(#$NC&8Z<2C$78GG~bf3{Q5s?vc(qvwgwAoJq6wr_JA^ zy;P->5hzO%1{_5ngTf=ZbX!EA1F$ziCz=tQs{9gHs}gN%&U!5;QV8?|1WYmUgl~jD4|y&6zL#Vsv3G#qoNd1gQC*Z zfQmFRkU$7EARtu((m@DCsbc7%2*C=<)QAlg6+0rzxx<{#^US%%S!1s=_C7Dp`2#ZY z`gh&e=lX5~!Ox=#h+xk{=LC#P3(mnN%=QN~Pgdg5R!r4ooH8`}>Voq|Cq{#RQd}h_ z+VhYHgx0}xxygz@%0rJ*nQ`IR6tfhYO_GH0l=jo`;a0jT300h!WRsYDZa(oo&&5M7 z>2xl3r&;P#v$WyU(3h3*(wu}ihxoZlxB7)N^Ke*DE38pZsaD2L{Li*2z^S>9; zSy^;g1a=)Ky+s$mjAXQ;bF3~af0ng`&QOLjq<=U!Q`7C(ScSX{oe2EsZBcbg0ndES?NCm<|(RqU&t7Mk-{#cg% zbDTR7$)#k4WE^%0pk3EZ-{x$$($mO3_yd#kJ-wR?^$4KZVB(E(FMzSh0gN!-$=RC@ zP78Sqp}qC|itrb(cft9Ii_{;mJth|idA`R2Xp89hQ$)HBlh`$XF;+2ek4es@O4c#v zMY36ZCSyzOd``xXyuA;S)F`={+{`@lc&XQxmwx13cFxTISqpc8JMCtI4=??HY=3ju`8(-0sKdP8l=NyMt zD59}whD`@{FYBh2+ajmh3h5E_mRCiP1lk$!K~&{@c)_wg;?m`|-Hpihms+UJAA+M3`q%nFNS&J}mRZqRD}!4#TIwMCB%}$ZZjZsP_DK929R- zfd@xKSn%+q3Ik3>_#0Tv8(>+80f)oDSF);Vog}NA^5Zybc}3YctyFc&MGTBpBHJr+ z^Q*x9(?81^HGe`5PN3DXBA29cRi*sBlgJAz+mn-l@DTl~yX1=eq$+Twy!BP zvJ;qsfXyRH7i-@z-HvkPTq}F>IZIe6t&GwNaCGEn_O15hrmzO>4$iac2Hm${d*YTs zsjRqA8Ec-mJn65q9M!0|uTFVodoqTENWZn@;-M#B*I7SGqObx?qZ;&FF)#mZY;a=Y zZ4j?)vtPpxx+XU%{zUBfv#lWrPuPX>P9~=DuW7%<>eX-z46YxWK@ci*?I_IwL2HDN zgL_>bKn`M^?_1e{(gXR8nD^N&;h|_faJ__$0LDg4Py;YF`Yc-iY-U_J(Ls=OgKLeh z9mq$*tEX7NIbu7vt#FQ-sFb<_Sbq=%gfVXKlWJP7>HH$BgSNO5TmP+W38BqCG!?!1e?j0zo+fC_;jZ`TT8uLWO{M=O(w_4ty^_9Y)ha)FJ7^5uy%CUq^Dc z3y5s+`vB@7sq}M9`rWN?d!zdu3;VrPaA4X2P=~Egy%2Sf1_0{V+S#Z5v~Pz>Kgq3s zPjvs@6%XTp4<!skSM{Un;iI$-n1a>wh8}_?cE)5ZN&3MG7>a z+}3H0Lnp4l54hWey3X)0w68-?=g?m@8ZcdBs+S0j}1rAST6tMADnc~#$) z(#GEpmC$m1AjW^Pjz(1LdO2Ws*bomdyfzchG<#9o^1l6fjwZvr?^j@AA#%S#vL69C zM>KoGJ=ovAPYr}3wTSa(en!U^T68BIXV3)^22^|S?uXt zPWXcgwFmN=(;*Dlya9)&aT-_~8pk)3q!>+qKiC!uE!qE0w-K76I2irLl?{7l6Tfkq zAcGa|PrA1*-x!PP$AAdnpOFn5h-^Ijl#Bz0H;Y4fVdA9nkH`jv?%o;;lPVUK-I5j` zOHmhH9&yh&sOY%O)NKZ>iBB^8!e?B7l&B$i-OSn=GZLvp?xI4Hojd>huF{#2yJu9K zkAF;2zYAHlYjUgH{XcF5x^R_!TF9Ft|v0mEz!9hj(W0s!MfuevjSc!^#+Yt)*pf+w>Vd zG>ap%PhRe$=(dti8HH2RA^LJ72ejwlspLPjHLXV>q8~Ms*NLw=H#F+?OGDCNLmHAp z$EbQyB7qgphx;%&QCwfeE&rE(~E2JjF6k5ar3U3ul z?9s8jM%6Wsqo_+g}0OGF4sD918tnqIY5qDv4fYy76o5W|OTz zZ^Q7`4vo9oyJK!=p*G#nv%jiA>qOpT%J?3uFIjWi8njp5A`)>jMJ{R9zfMDxatMH$y#`svlkeP5>H9rO3l zCEmR7vZwFyir@#mKlTcYCb5 z<>uPnRE9?z2Na>Z2Z`Wf`ZCs`ja08X;AA2p9*#ZLkPBJ~sb zqEQa@I@Q3k7^1(h7a`G_yC;TLTq~Ct#{K%nhI*AUZJBLT|9hLhvS=q0vGroN*rhuA z+E4p$Jih2mnXl1U5L^=+ZK+Afjysz%0(}ul6ld+{RJ!{}wvJZgy!O~79^37H$mV5=R6*1)e%Rb$shDkUm-Cr!_;*bETlXL1GdTMWj%j}F_#n`(nd6Y*xTl5s( zt18D~+Q*5!=Xgtm_qN%@+}matN~ixIaF1P!+xeM{oCw@_3$r`+N*Muq#f3Y@II})> zk7c4XWO1amk!g=7+}C>h^={H^JYqwU$riHGN@Sy*bu9U6j->i(xTQR$HmBAzxNE+< z>}z0x(ev1Wv-v$TZfBqGa)L}8+#Gl{&o165Sy0^GrCo1(ODb6laz>JZxOyxbqq9L< zIWX7eM$e6dAu)tFFLtlS7V4|W1LSMg+;4RS_ugsftW|`e!?^_+U7Lkv4X1G3?UMJSxWga8nyrP7M7y; z7uSH86Y~_o5p{T>w*a;Gzz5pnN1f}kEpB=2l3aI?@LXdFA}wcZqp!;rqiprRCRT{e zZ94U)rIG2*t2Nx~&z{2^?hykyjWV5im?AG~b39pK9o+Nb0iu(AZd*pdS^c>Erqjq- zitGZgK@^FdYff?lUPwVd-!Fs@)Vz;S$=(Ge0tzGb(OipCB38ZQ$@IH6)E18}W#Sfx z(UX!3*1P?l{b(a<+MKsoHRb@#^bn{@WkemV^Bu`n>s!8-J-+>=gx9Fdk1#sb`B%!A za$%wF$%RLYWw{-uqjv9Ui^t%po0_*?5qaQNYjWr_>dfw#Dp!C*eVLFN7J<^E#|aYLOv^D z)>Lx0ZW>1>=|wmVFbaTaO1?$U>C!%g(_WdSkC{r=gr{dcPx~>O`kBYv;}{OXxbCOY zf1pKlNGy?|FzKD}_FUGLKGp}%WW00w#s`=||BR9^xE~;5!cA26NT{ zGYcYq+OTXqq?Q@ z>VM?#;Uo(j3x>1lWU|4oYc9*Wt~UVd5QMv%74(3PXsgK}v+(t^{87C;?mSagp{NF# z{@p{jVEMK4TYt0ttfG&|0eE;H3x##H!YWeZxHeJP&I_j+O)V5OLk|)WvfIT)UTJqsUB#{frR8c)`d}U5rHQGwkr6e<;WGxUn1aN%<6hM!36A{p%*s_Se1VKBH5q(5a z#wQ5pTglofDi#Jf#=#K){3ipW4 zuZngN>*v7YEGpSb)if-80~J7S3k$cWStD`3Miubt0PhKk@;FN)zEbY}b8|JTWz>7bH z)NNqb0J-C;K7RBe;&pz=320TqGhE?3=3Co}-$7!t7JO44*8grVhj-V4rONoj@;AA} zuZ#JM!%3UI)r-HahmO=DYS1EZfYsi~84Z3JVLzGXUUemEbaoRbxiUN6!_Fld@{Y0`{!n~+5u)w?2zzxaI^ zJjIZSxaM`Pn0JeKwLoEQH1pyB~3`$2% zLC3BT$^4Oy<&~o-(tvw>?A%_A5Mj%FZ|&4uCbfbw2>>4tgQO-5Zu|n=gVN&4Z#~+5 z14KoA=QCc@aDSa<#doRC--Imv#XY`R8njYxE{@z>E`a2KZYfpBJzg0|7vZnJc~m-9 z{TKH*0j{%}bcw5Qe?7Vho#TpIb>UNhPl9maV>Xhy6(|1Xci_9NMtdzfai(CYLhRiR zmMW}naRYQX1?gthNm%LwOO;(I^CQWf z!sf=5&&VT{u_jU5jyXKv%I?jm>Z=vjvAP3;Ry;V)>PML&h^XZ_J=T@==7Hm^ga_Px zGkLjc&^)t5I)2^DT$Om)DqWWS+Sc!Kvh%O~4@hqM?~k+cH0`(i`#9@CnZF-rRrwzr zXI=aLdqr^;Ha|(^@5fmmUis@dE3p_HXH}}kisWf5cPHsxz5hlJUlQjGMk*=~1m~3c z8V(v?7q_skJyb-RYoyOCsvo^l4Mr+m4|z6upCm`-FgFRwbnVduTqVf9)zmc0?F>@M z+@x_u4L>@jPH%C75KgovX4U9|uqZ_ZcLr;DS!GnpdW}@U^vE1^(V?T#{+%L3{JH2!Yb9*1(TrPo;pWD{>xIOHGdGvX*?yLM^P!~Iq3Ts z`EdvuGnJNRyniiKP87Zr|D0SLBF9QGG{Es0N%yKyYRahEUg2Gokpn94cDiofncOc+ zZfyxLhIGzPYQ|cBhWE;;n<1(*J>6$C*3H{JcgmpI&e7TvK35uouxKqf*?Q^eP0{-^ z$*I}QogqnuG|!N^#6g>*CnZjkHAQ|Yz=?t7NBVwbtLx}> zg4}4vK$X2_w^M(WEDDz;S~hRYM^Cn8m=}ur*)KV$gfTy5GjJlS3MYHqO4g-yfYFLK zX5@gXu?)+9zX%4;JS4Y1;ZU_xLgMhsr;%Q5q##j1)6Dhp` zFV_#|X>IpYkGR)|xY$bHc3jGaG+Pbsw0>R}`tXi*t!Ll!zK~_=nZ>4}sc0RmUZBEw zu^qm<&7S-6qxHBG9F;i#$^tqJj}>pepsIDn##Bi;VY`M>KysyBy7f*Y{BVTy4+0c& zvC5coH!s<2(AL&sS7zV^l=fyl2d1uyjYXn_6bafG%|%HqYDnnw|8PCBG4>kMy=1kK zyF%5q+gi?C(UX*bS`~F9#tasmHXqv(%}zAUI#lJX1kjBuR zsX3e-r{T?c(4`%Qrx9%St;S9TyM#6R`|g0VGfGF7lkV-)pEnG+anH+McjI2+QP-SE z_+4=gw0~6f)_o(i2R--ozp>6Ek z`)$VSlHUIDsxHFlo$_xB_i=Ai=lIQr-WlvzOZMJtFJDNVDxTMy^+re>9LbVhtiIbfcbhO!l3g09?&j`AABuV!v zxeR~Yi{_1$bt3Y&IqX0AGwJTG=iS(&^K)`Xt&TKIQ{_CuYSNPLNhK4A0kL0eD;0)r-a18n6O*De z)_mAKZJkIgX}({6)%?bvpu-=k=52CAtBfc%#2Z+bzf;!lNP$F}Q)uP}e3E_N4yfAf zx6M`5*92n6{g%2gdunvAA6oEaIjmP*Qz0qNbw0*Rpc>Ct3BFgc!?9`~Ztf0?xSKBc=xhb{A=zRfh z3q<*c#4pGg0{r+*o!Zpohuao57f?UACq8h^xY%)yA#Y}NV+#w}pi7W3)jCpiuF7}# z%6<67SJph(c*MnHE^wx2-)sD<6g#T10yDe={hEW0Ismy-=V*j)b^o@H-}UXB;QP5P zd~}WGdwBo(5e?o8yk7( zbzB;$lF`*HLS9HnS*D13<|4}R2r`v!&8MAJIF~f*`s-_g9fbLij?B)br;r(M2jy&A zL0c4g7N5YWpaJ6}tu;00(D^4mCt230gHm4qA7q@3+UDO)N}awJGw4G{G^Au^ltwIzE0XR1s7g;nyDx1 z6geR=H%vN%@y^M4Jvx0;ZrYd0W9NwBKXhH1x#=5bp`V@7iT>$foCLU@%YJ}8sxVlu zblC@}^WRt{Uyvf^FlkbT+*GI|JENpeL?i-R4#~V$fzonzK1j%zM?(m0tZ$wvMiGuF z%l<62s?2N0E|})o7m`z#7Ph3!r@T=}-SXptQy*4)Dr2J)!jYNfg%IVM_!v!PZFi=X zp;NErW{LJ;F3-ab0c8UZ-J6&GAvb%2?uDN4qyueR+)2p8<`)l5g|{ta20GI|P3D|% zKI`iY{0>Z572`$j#SOFRxe88(Z9=(&`Xd)u7+hAeXH^dR2knW1lV%l>OSs7T0dAz6 z+2w?MnR_ufASpI0W9k|15+?t$c^*9=?)gQ!9s9ieMh~&JEorawSzgGbN#s|Z0vd}x ztl_armsQn^=^QGk(TTgDQ&@R~X)x)$kZ5+bt?+V0&MtHqU$JOYBI{0-%iMCf*)X%H zZmMuZJLZoFnn3E(Dzi)Erh=D0a=WS$l}K@o7>3HE^ZrDO&qD=0ui_==3*{EFuIue7 zYR;{)MJ~V2r|HEXq+V_^hn*oBh)u>8;YGk%5;1IkM+;MufBB2;hj zDr}zGn|Ptz!G=YwpblYJbP;X!216wy9EhTQL|un@NVRq#1atXI58G%lca0K_c*IkP zI!FK(h-tC@@;kh+=&hj6K^AjNDwUr?os2NqwwTM&i~o<}0m7m{+F-#W+hNhw6~^-w z#_Y0vNn&-R@}tA2WhOA9;D#|yVC^RBo5?`1|WA(DnU}T918>`gp!g~EgpKAU&&ta zJC47JFN0hKen<5t{GVY_BU4G2NV5m8^FLNIl8@Gl>?>bzsr^}v{$(K@|MRAMNQ#lRV1)RmK~@gHvSO&8^j)fmlH_2Q zO*#V%MR*W?k!khTdP$P)BXTjc~+Q+M?1Px~I6%zyb?U(!lVqD*(j< zU+3GQsE~Oey9X_3Xn7omiwT0b@KNEAR@6#cG+vni13MPJur10iK$NWPSjxeUMSxI; zG^7~FwSpZButM-{vTNJ2f`oa|Z8Z%(>er-!;!%uJ=Tw?TpgABTWYV#bBwVThfy2B* zm>2B|l5rtJYAn+Rz?3BjBEm+wER$|%O>~Y0Rf4=|NC(1ar`&@Ah&o>6#r1z}Sy-@X zW!PfJ&BX$kuL+WYzsZZkfnw9dcl%2o#UU z1>B|Nn+qd1F@@a69o)ZA$2>Rq->BoCeur_e(C?5AUYW8``Vht4E^hxTzr*cce#g8f z@H0`*se$nI3yTD#chD`(!nammC0h zQ5FjEwjeAzJuW>x4k;Rc0m7o&##=yG^w(Gx2#fwPMg?Kf)Uo}_6Ea23(;%yW#g54)39O9MA1gcM#ngZaMo7&pru}rowkCScPXj-FaSW`DuS{2y>9- zYL@HMgBWTuix?;hGW~Gi=6N_yJ6fS(W*|*->m{qUJ^Qpg6?i#C<=5XmM1;Po>+d*w zmB^*x)K>DM;ILs|FiQ)GYCies{xo>f>5fCy>B%h^(HT?-MrBk`VzV3(>hfh z@gLvkV;}U)D`6HE7Cy_@-|N;`{36>wuN;E#XU9e@uJ%+}_f@?+E)GBA7<+zM4D>kW ztZ4`lIXkqk%FPXlu?(#wQ*6BK7SQ7u*vP*xzWOD|Zis;uONyDQsjt1BaK$o^F|pS~ z?D@iD@r_``5+=9dwciD#o!*NqXm;3} zs^T`S;lt@EatxPqyIC0kb?h3pE_dQC`?}OLM`G!f8kx5DG$5UT4IJ8UU2(? z5#(uHGP*74_t~A8{;T_*$)kI81{IjiDZV*UCH9y=$N}6tE zs4Z6TlVX2GMh8)Q6A`Tf^_!!{4%#wgWAQc;+Ys!n0>WQ6RQ!`cj|1FL`S$4KSx=uf z>3GoN==a4MD2GZfw?c4Henw`ssu2BNt^eFmVHt=Ahd{GNr|q?6Uj5NvA})`Tn-({Y z%+yp+72Z(!z3{wm&wEanywovklRrXtX;J(*d$@bS#_}G4`>d?2kM1;8vS(^*Wiq|)|%=1dEAd>tvNhd z^6OXXDK($-^}X9CL;|I@tMDDUu&xAIcXWct7CaWoSC>>IiTqBe*eaNpi1>ZQ=?eXs z1{_2=>RR&SAZul{HCz z+q18ZzL>R9@8-Q8hau2Jt%SB%wF3y-p1fS+i+R_S{kRvo4a97dkQDg5Am54)WiL5p zyg)kUjf%c%h=Y#YlcnbS%w%qCa84xN`*glHBHQd$o}NCxIOGLOMC10*^7xqpO-1kB zRPFn|Z-`WC1_XpY(<&*}@b1FpH+|X?5G9gn4<`wAYc@#6f_dEOaIi#t<<A1J@q2KOS&YwTYH-oBd-Y@*kZM}jj8yz*-2xs`E0pvrc8MY+ zm7k-9sSZ?=@QiA5@ii`%xLFRwIMJBGjfM(l@opjfyQign~Yq1*r^_i=75-DUrG9ZJn6Xf;C>09Dgn~$P{ z$^~qX^$R(j2Nme3=OlsTgW*0oUtFzTi;d(i5|sYvHd1!-9*+h;;q}_vyD{$jax?TBF;dLR(8$9MWBbV1>$3p9 zWq}~^drzOKkD-}ab40zv3tPQUM9&%3h+(HzE}>dU&Tn zhbuAHEx6(8(Dm^T(J#K8)3a}seT zo`tJ6nRm#Kl_eb9{d)D$NVNoTgF2>j%TBdvRVm*Scn7lN@dcv80|L3>a_5}h_@`}` zdcL(pnc(En4jNqtZbYhkYZ%kqo7`iNKGyQk{gtTk;u4pp9womA`W z*2rx`Nzg9;Q9$~=(e&kk&sT05F}X1n8_$jSMSnL%JIY5*mTvoXEaqBH%>A?8K^!+p z@_7_!Zm_8j`ly-lin7H4UmMVWcmx-nhNE=DhK_~FeBBGCEG}e|dUdK6IHGE@GG$4m zX#m56yZz583){r&93?8ml*W>QHnV7M{V)w3 zX9yb|V9G+KrLY-nHr968Kjzgd#)utKfxu8TNpvD+N1R3bL%t;qX64T2Q zg(5LL1yHY9XjHhgtS`#fBx&RePK6a;ArRXPA|Cj}-MM7x2Aqjga+_U(8(JihByyF@ z44q}(oD4k&iR)8f4CBbjiA=Tb{fGB<-x`qRLvl>=s|=~lTXt!@WN zX-5(nOAv`=CS1#; z8!?WF4Y|leGE7@BC?*U40M$XsSO`y6az>=hroXL3X-qlWuroG=!&bGW-EPf1{UyzK zCONqOva!Q(XitRT~lnx6Nv<@2qhit!^R3F2cTx z9R6++Ib)W+$us*hI%!7$5p)*TP=ua`*V%OHY_@VhcC=Xz2#)Td=7iYQ)Hzi&uoJvr42HHn{iFtlbRp8K>xI+)V)+3(i2uu~SA}tjlBO z1^o_48&bjYkL;II)M$m&yLXTx*uq36T}g1c1)Q*988&-dc9~Cj<5k?CSd`g%W+otX zQ!D&(Pv~Wllty-uSJNde?_BMql}*bE_K-3WKa4N6UPRmd9eY5~ljOiWWa^&WjWXU> z;vro#-v5Cg z_{unN`UC2ks7(W(F9kI3~In6OZF~5N0#WA z)v~L?ypZOWv{tz$lSg&%`8w^lcwxu`DWYnJ{2rOJ_@-gKnWv3Gvz;qu9xPktWrT-g zi80i5sQvKlyVB6GJ=bh;SApl@HL?=%0PsTt{>lFOm1k&wTvHvfSuU!w7wP*nNA*egvAv<{YKvoG>Rd9(>px4T76=BJQb6eE`{2*M-C{Tn7BOdJl ze$*Bq>Q>-KdXB z$K8K>9;_~P5?92BtA`iaO+haeXtfG%LJYacLWoQ-UsSiDrtHWd#q7lZO+4)$uRXQCln0uoTebHqzxYIbNn^-Z!C8G@ep0p|Wk<|Iq~D-Gutz;K$v6!jG!|lklTF7E$yc`0*w$4q^Q- z_)%IU?(Ssx+s@WJDF88Q}>W~);2{U=2O_@BXw{WP#cCTC+5yq_Fnm| z`@6R$pT>v>Z1@c)1Rj1n&6hVF5UJ-gGugY%hY#| zu488J@2_e3;2j(H7yRI@3U1AvA~<8k1D|!>DBzxa!fOh8qT0!oZ*fYZEUWG4vidGH zS|H!ad)s>A^E|lu1l`iP^m8Ho!5i|LgKmVowsC;#$! za8`vI5@Iq-pi2yV+<#7iqN@>c#mz~5qud#a5Bx;&x>9R#a#Y4q0 zVV_c;uVyrlr?6N1kr(@Uri+~5`2~`kNpF_>7hcQwIDeqAj45*o zeG09vBh@{+_H}uoRQ^b@`J2khkjlF)4sdkR?W)omX-%m=fFI#L>XCqVVJoTVfqAcB}=UTfkafFA=@L4MkZX&pvm0ZILX_E-HVNY}V_;LfQ2 ze*e<&PwJVqdZxT&J3L0G=19|z>cLAP3O>Wbuz5*7S6h`rjm69NMaSZUDWpLJr0>nK zA*CJs22QStPhGEU>Y>82i%PuxDwQ(ocJfLLmKip~*kUF{{#AJIqPJ%uvYYZVnbqCD)2^`af$_6d zm(%NhzGq(CKKwf)Yc&t%5Us(Z=2UJ4dabfB6I9672vRBMlNIYUOiqyUh zf03Is*uVFuil>92&3oTI-z&=B6}oV| zhFHIp*j4M-H$EjLrzaxRHW(8e{+QUwIyQP}B9Rtv=Y2b3KZz)5?>P9v?o*m<#v{to znW0^w+u=-smf~jSjk!H`p;tDP8JZ4ak?t9%`*un}VR)vKp$Zk>kshK0puuytaJPi?7My7n*!oweh2XWR?b#HyTDJ4>o=nQ+<< zzGPGG#Xa-o%a{3EyL7`*+R^XIzJq=JF&8Hzk(ttU`u%dH0`%dJzBtPl1*Ft6*m@B9 zuoW9o@=hYft6qV+WXtI4X&9;9*MU6&qmbuEkZl&WhtpV8Z0o&vQ{Ki}-?m=sk!n)2 z%X-X(z(D&2d$;*{YssWZgO*Qh^m_N~eMXaU8rOm7sCx)UweLYD3U)OqZOTvlBWv&E zZYr8LgkpV-?R1BDjV-q)H6~GvTC9GG9E4oQsi0xL?;^ZaOZQ$Qw(-=yc&bh6+gzV6 zd3W?h{G*Yuy^<$e4ahh7sWgp^uKk;hLyw1M?3^EUGNRV{)f*r$w^z$Fl+|d|;vaH2 zvCU658`u^TY6=ido}r)O4_;;e;rjJVSNOYla0k~5xxTeaQoz;zw9n`Fx0coNYpD&C zf_tvcXKzeb*T@71X^rc{YQNg|$ZuCi-Ffffsc_wCpU*v*9{FNl+O>~zrw!J;@{S!` zm-*gjckn?-t7pDk*Sw1{Os>x6n;0LNzTU<6@OnG1!`jzjX&o%o`srMr?~gcC*S@EI z4SgCOTx3gO?7n)Djmt12lJ)+39c}1QFRavjtfopgO4fg`gm!aeBUm6ZeM237devXOAfyW{+OeqsL&2sZ;-E{l;(}oA|G~kRhKY( zSs+m>IO2R$U4kg`SrwoQ_r(0W<#NmvQxBwCB|$=e-ny=PJ<_zY8x!c?SfjENE9+Sx zL19VDZUIJzA&6{HPFluu-(r@$^UJn3a}3rUmIuURUXH6a`_jtfHi(mwxEizIxT}e} zjLf~4O7FREtxaqTuQ;@{KiHOm=Os!e)?q@d>)Sd}ju<&hnU4O2Q?dp<@Rk zJdKH;H_No*)F5X+_n^tk`-xEbNi)lv#AMdzMS+*TxkTFIs^`1>&`yc%t=)$|KSW*; zJB_v%dBFW3f%t+$d|xDpt_r(SU#+*p+LFJ%HIX!@E-5-JK&>O34GScEh%`O>q|EtS z-=;E++c|esW$;PYMsV34S9-5|htnMV+zPq{)W^6343e7dT)tBMluqW4MM@8?;+2n_ z!+E&&l8FqHuWew$S!5-XKTUM@m%0~EZZVs7Qu6QB5E*ZIOk-f$#s%+FBVuP5g&z)i zbS=N|ctp{Brw+$b4j{T1^n->S=WnuUYxjIOcK`+bVMU5B&3&>Ic5v%2Dw5jR9Q1WC z$nJaO?NWH-*@#MQ&HM7+qnfU!Br4Kl$Lb2|GshU|ZhwG1rXB<^OQA9gXVAGjaAr|p zTCwhSI3e7*mJ8Ly)7F{M*3AYTA#G=~XcnzBHfQfSYM5Z>86$sZ8zRj?f#wiK`_V^p zo22=#4Yu`nbBE9z&1m4Vi3@tyHXiNP15}k9*?(i)1w8FM9(D5*Vo-u)ux#)6Mg6{Gp>h~)~ zxjP-087Nk~GaCy!r4DA$sD;F9I?S>@kv)K9u;L#O5!sbk%SwjsB*tAmsR_UmQhX?z z?ulod;nQ_1QH}m?Q52M8c=A(!|uYXpz+1l(m~A$6Hd%`><4W+T+B8?YXDVC8m|zA>Z=SHiX08C#Hgp#AcoJ zveWQylg#%EX%%6}-~KM+3aqEOSa?;sBZW2XnT}ONh*hPlpfjTTFz%Hsppry}rw)f_ zC`>s}SS*z)jDK!u(_o6`lzkR2LsP)?=bazsWg21Z)+`TYsOF`M&c>Tg*{cyUutR8R z6R7SF=H`G4Tbb5}&=)p@W7Vo?No84z&qce=u#{eBIe4OKb+dP4?1b3E1ms9DHVet- zRoQEuGAwiL-7!MX!_WL8z#(^EG296$f#$S@+3d4la;{6~oHow|{A1^2YLs(A+N3+R z&Af|{Ls!hZOvyfhW-%3MqEk6uTA5>T(NM)a@aE4IFm4jEwh!gxM>rM+Sk}(xu@&>P z6yy6$<2u9WX9#e&d+r_Ft#v>0**`Eb3MtLzXh)|tv`l;b+>kD?ZK32CC7x{#5K19~ z5spiWMkaCq9aI|Z}Oxzl>g zLaxaESLfFA(083L4OgZ{^czI3)dItTI3{{`(Fjx z2e)FApn`2tS>j#I_&fF>ioyA{by%-ZefCbxlH9;6U%z^028td`f_1bDw=ECxbx#+s zb^z=#Up;C8*+#7cfF#GILUJDS<@L%XS(AJ+`e0^z{SvkUJ|P^o@FN3%`d=zsU(aS% z7$xre^^mi)Sbs~Oa{()*IIz{7UF3m{%YDgFDG0zTbKtHG@*icFY-{TC8VF{`R&_M0 z<2X_Vjq($&2iTkfxF~DcJU47A<@`XSp#lC@d!71<@G*F8`!DI7%U<=mkK!l-535H_ zuU#;6Z}30;g~OJa@1{;oS+~IPm2b_f-ZlZ?v0GV2XnT+%&Szq;3|_nT3{CC;!vaC!ofkVg$*)v|Tp^#Dn?nbmryNGR90*MYi$AwwJqxNwtJ z6#zU0wTW+4tN`%93xP*z0it{bcvP8a zwmbyGmicRMaAo6Iq3yBUAhbOk!QW4CA=5XtRk&hvTnPX?0AE=NdPo;a7R~o`uu+lR z9*f#uvrgO^06a`qfCr^pYz26@xZzc&`#jZgBmg`>$3s-u@n~Z8d)Eq2v^LE59|XXI z+_$tcZ1Fe5SZefb50=_#2#O#59x46ah5h^I`pGH-*_^?sXhh7?pd)J_&Wb18wgmHB zi36F_0C*61cew+~(Ebn~_$jx+Gtq-Cg@ci!gV_+?`Dh;SJpSCau&qRsM9WgZI1_5BU4Ma8lr95=I~>MwzIXWFAB%zrpLT9hTp4SxLeGKhCz{4*U{}15d|9=d4G^XkOKL;L#RD6pQ=O4ghr1R(Z=?1Ff zE=1R_pMybXIF&Ky`W3jcz}N`JQ=h~RW?1(}8xm&O=Vay|JR!;I8NKDkUwkFF%NRb zz-HK~%!%adQq2im#?mW%!1y0Np#E81#JA_7Ywh{KPq-SVLdaYLb*%mAk;|9Bre)wA zL37>0ucSGZCz3Uo#_3ObjKtCVZ))xNa`Mj@K^rJ)_~}SuuqWj7h>?as>ERRm)e2|d zGlD(ImsNN$?ofwQu*RB3)ZIsO#d6m?RB+kv$!Z#d!xU(@6Cz~3!OJ)ZELjv8)@6mP zrw5FX{_A2<{}+4j8Po*Z_uD2RjR2C+n@CgXqKJed(z^(XNK=D_t_DPk6hjCQs-agk zD7^-xL}{US#Eys>Y=EL-rzz(O`rOa+?)|=JX3y;N?acVq(GMtLUF*00F+@_=h!~L= zj}r6`Br8WgkKQRD=+CRV4U;qi91k%IpOQQ==4Rk{u)0Ng1V)FY{T~>aK7ea>&+_Ag z{s503lSjb`SH=O}Fje@gpR+_V4*#k+=j`p5siLUm?w?MIY>7`WB`N6O1HP3H zU!Uz(=EJ#{AN50}7Cx?id%(4?aFICh>v&zX5QMMa zZ1VTol7AtQye*~p1zKTP@#M(v2LqQ^0#@sv>zYX_s<}(O`nj&70#OwZfLJ2z;3xUD znTCqs0az9Md~%2O;#>9h!WF(xQ9@P^h!X71O&9IWaZDqyTR~e|GJ=G7QxU5ZC7WGL zW4gufqk!!p;v*yEG6-3-3uOu+PsFNyJ7~5})RGc^v`F3kfCLl38A)#%kB?$(L2f^& zKBEdraIT)&k?qYRZS0UJBQF|Yp4GQ&+@34Rn*u-NoTPY+m>4TSojfW3Ld^WSS$aA> z;uu`yuBniEpiW`LDYLhG3L|5`WL;}DlH2c6=t{qLxw#VkhBIu5O2rf_Y+f7}B3aUR zQAO(~h%#?SJU=dQ<(ghWT&Hkvu#dsFy9!C8Lb&+6ao+9qKQwH56J9|c*>2x+6U00g z=Pxe-_R(u~z$t*t9lyao)~P|R=dU~on$;UPopvmx`YQSth=ADR&syH_`}J*B>&cUG z1CKVG&rJ#V1D9_Hkz8_nbvi^GF2OQUihPdS zm5fbyv0--OY!fBw8?@KNgs1_PWz%JX*hY*g-P-PBcOgH|3o%RI@+De$bOLt5CyW2u z`QBE?#W;QHg^KK9h~w5NNTOXmrAT#Oom2p!YSR|hkSx3JnKEh}9 z_-XC;a(j{o-{1F8ZaHvk=n@@m2KjL`%$_2ixuS02Y=k33KK5#{pJbq+^;?hn?~#1( zOlQPHB1U{qM;dAfuRAtZ<<_WrC2WP7wRMS>n2}MI!%m3}%}sj%@R(C{Gn)vmZrSSW zDIDPRd_{y=@~p=|&~N|4FKp)E=^-<7=s159y&-3-lV=IT&FP6q`X2hBWropjQ2;S$$)YhOAE5ea5}FimhS|1yM|U}G}yy1C(i-WBCW7^>>sN?_-!#%wrt!PEkCQjEw0(40M@F0rJO5hjY zAJ>$>QpN!udvT1>0dYsH_FMz*TxgX?goO8w(8Y2HbR}I-OmV4>Kc$4?bqH>?-Z7N^ z%sAFwK`v5!F+?#vL{HmZ>bYI+9+4TD0Q>G}KDl)*9M;Yu^IWBpibXdnmqFz>l`(N- z&d8~Tv?>u~(6%3CRBrG8PJ!*6L$;I-g%Q44&hX9)<^4bjLG-l|2 zl%t|$Sk^IO`sMb8w0pycO2-@|F1m5qmd~JeVKEm$XEtI-%Vd)Dv8=Ky&Y^9FcM`rQ z?NQjlv!#57PXc$*t9E8n+PapQoNll!LR!r#2d9$l95QjY=(F{mZrqNExUmCY-dAj) zpsnrhx}B=56bitD!~-Jb=YFmPtc>7pV((M!n>^+GzhyS<4Sr=}ofTo zKbn2Z$lq&_``PM2uBr9!aOxeq!pJSlfzobv+8i>CXIpI5> zgYN3%UO!^d1qu5ca$=hosSXt`l;-jEZczIp8(GmyJzjyZ3zx+3IO|1O%tUm15LcrH zOnr&0F$cbEkqf41Ixz+ulhvk@8tCWG-VIh>vNp!XnBrk(<}uKc7;9$C<*W!JMLQx1 zYKD$6BJx^N580H*oVO?Yf2O?b<(ATjRmWf2I3`QkkH=kHJalZ%wi6q72p@F1oB~jX z4K-LumdE9B+*mO*L?c$35W78=Q}O`EM>w>D6jyr~_i}w8zWrOM8S~@QRV_eCa-nIec{F@_|HvrL>kEwL)pQv#hd z76dgLDp~1xEf#mTAS&0>t+dT976f#< zJnM2YHD1ak-J%zB5S=b|i&9Ctv@)BnwXQ%D*?=6M%VYK=WLOqMr>N=bXk;)orZOnQ zc;0BIPo_m)=2vE>C8%+LfCnw>n&J6Tv1t1zG@VIZ+xdNtq%4=PY!?><|D>PxV%CnO z4BI73wI}}wZhn4VADmzbamn=(hZ038h4yLo+&KXW5z%3K zEJAjiPwruMz=1*J@p+oAbH-(%v~kV6ES-D+PA1>Pb{P_3cyz{+veNgw-zIs*KDpN* z2~o^^Gj9#@7t3`;>zg_Sv9qxf^!zCciYeg|@w>Cn5Aeqo+;l@{m49)baCGqs;wSlYy7E?Zev}}TOE=$rK4}a4YUiG~3P33!J}Hx^ zD-g*k@uE2KLZgjh$K!1rssV}}>MLlCe|!#zqQu5Hg;AOuxtI{u!!75VD>xMms0QLK zhicd+!t4_HbXOn;bxRIe!xSKBO^Fgcj9=F2lt{yCVC!t+nw!h*`EQ?NqV()kDJXG( z3$sD_T)@x($xdvJ z`O;3G>I2l%kX44eGUKyuopdzr3hm0cU}fZW*LZ-?XcT~xr16p-Z{I$l@4%y*YS^^pJ;ua_fe3FDsmB1kK~Bd!5op%i zz#FG{ICw)dsmUkJmW@!_Wyn*Um|;SLAc^n>5-Mbs0iqop!!6@o^5DE|CWw_1Z&}f9 zabl$tob$5B2v;2>k+K9P)eV=}%3KHMSPUBrM1-usITj7U1`0<_U%(>4Uq2C3O*ogsWwmdAns z8DFjV{SVs!=WMZ^UsO8(_#6`>%1nC4!uyWTPg~>s+FOZ;5x_Pynx=XDI$b$z<9EG? zcQX%~(9v$w`DwM|D-R3m-~JESKybiD7YA&RAj)ms%E{fWi(Md7Dqqc+v2d@|aWbWh z9yoZWOcrjyax$f+?!63RucbbZbz86AbnkvC9(!I+rc`@$<01>KFP$N;xz@8yw%5eH z*EG4;s;$?0fs-sf=+5mw3J%Nm6C>cR`U64k1E511(gr_VSPe3z=cjp(w&9Fa`?U-= z%#XGn-@dl~Gw$30yaS<9L+ScMneIc`QbRqA0r#naOVhlU*ZOn*1w2aKhkWTn1^q); zBK{RF1({M3OWPe9H9Z8|xe+d17;&r~I^sTn_&fq^4@MhLZS_Dt$dpEp7FUl>s1Bdl9oQc8 z)we;+<8>PogiBvWw19BwGutK*E=3(}+Kj_OWS8OG7|6tbB^yQmH_1k+G?&(YkPY$w zR5_~u7qS64GFh*9Wawy9(Z@KkoojO+SS==`PN*$f+O~)|<3P3e<+2u^b8=v-oQ?Vn zJ&;>a;qJ@VIxXtY+asYUY1>KSiN545CRe3y1)dIc>^b3KSP-25lzC2Yvb{C?(~Bk; z_n#fhV20i#(cz|1x{%c5cuIjbl--%(_hS4g6T$1z^KpI7uA^=FHw}{ArgR{x_ZD7Zu%-OME;?L#Lqj=1Qlbn&7xBZ|cT)fRWJ_DISG6FR)`7?kco|Yg&{P2D^Hz zQ@>2Ux;{{Jk1dLjQA{k$MApv~9?f0veph`3hI^ND!?l+cFi2e@MBSQDp5vAvNH{5X zZ__KUkv_4lGEr2AI2|E(9ai0tUEUp6@8LuK&=QzAr&>GVs!$WKJF(nIY6%*xCO;jA zV6{xj$(_Ca`>11gfZ1pQH1E?;QT4XYUT~)6n{qg-{f@G4T6ljwNom(l+4Kb|SqUlA z?xDaZsvYl}LZm{^*LHmj7ojqS;HIG(-7+!B_9&d7|Mdjk=!*oRvmjAbbsKNSdq6g% zTGUGYr6xHlN0)gQ5_KMmN`~XQ#w|6z{P$$TT2lL?DdCuDS3sb|Q`tZfnnSN>-HG)N zEmY|>r5=U9DhD7N$&y#!1wcs)V8SBx6Fm9S0OAZ^|FB$m0sVYwt~jS-=~chkb7F_+ zCZ>5?9(Mj2OzhjQ1}Bz?&3uJ5@!k+bi*Qbi$TXoaTuHCgSxo3!K6BDf(b zOBPbNf{2ajG9V3Eh|I8w64-8uDH=xG9wI1_X53e!fmMs}$X!=%P z-J^daK6bTe%g3^=ghD?&kL7idGfWhs(Sxj%DJN{=S^F~AH_4lKhHnnSjj3gb92zAE zuQGPLEZmtAx^^5cM1wB3?@XO~ddy5_PvNmQpJ~5u7%Q&KwQBbhk~6}c1Il9ut&I<) z>A$`rFAD@jp%i>(W3l2nQC?mB`k-^CQl*BR({AC)j^9Xr^Wp3S(owohq>}ekt@6QJ zM~1)TTz%gy$Fl64DOVCmbBo~X^V1KCb!!~A zkBFgj2BtRzYIu2?rI-Nl$n-L{ukZZpC; zQFC@Q%OHdae4CUPRa&Gz^O;$)s%P#(6yz!aix9qQwJ7AS)=(FeP>x8nrx0#|WQS!@ zb^kjuT&VtGs0*}?%6A7*>Tq!2`tFAGcB^o-eYM2;vdm4>lpM^i)x*y`AK{RaA0#vL zT@@x|uj9|mp1j5Vbh7!i+$G|J!n0M>=|I1h#5pxDO}AKZl7-o4W(=3OJ4sT{L5*Gb zXsz$_aB)%gW`UNIS0~if)}y6yTK9uUw`4Ytsr;=c`a6Uu-=}$uYRr$)$R4lWB&#W& z=tPFs$$i1@uuxoLteKH@A#Gcs+mp768bMmj{g7+p6+(F>j4p|_XCH?}Tf|Ez(mM1~NlRdd0bC7$~-hTH;)7n6rVcE^>a_#jRskxsXUZVila zWfR6$QZQv#G>)3Rj%m&By1n+xY_q5TbBRl0>jOgby+SXAqcu8>5Uyv9q=oz^x2@J7 zLL!Mu$?td!Ea?Nsg1;b;&^LQ*md8NrQ##lw_O9n6UN?qu&LRD`olP>MiL7rTuo~*Q z-ki=tHcLhyLfAzQf@;TUy8W&s@Auks(@nAOs~in=@P$O(ws8$f!XBz1{K3OTidI&Y zEpGE_4UfTK47^$^v}@zOJfk(@J8fNjU!WO={$ThF`Cz@)^yp?G)63Hc8h}aaqpyBsz=lInh#uYHN z14Wn^|4GBrryx^`j@9Xegob)$EEeX!Gd&Tb(s7;;Y0_8C(&%au)P)e|tg`M7?7^o?hm8B~7jcg$T&UEeqYBqAQ@EK&6B| zyUk{xZrNbEz<}%VSsP&tO2o#I7+5_ET`uFwdwdB=SATrO-Er|GD0u!r!DCPdcqd6? z+BmsKGD#CrcH68^cts3u4?y%q7&_oAWaQel$vhT3@*Brx<>}l5_Q*wmI5sk+22>GY zS@1v^f$pji;&Oj)thuVW3%F_o;iJsvnMRv1xie?@le1tP?U8c!#} zjMz{D1ev@}z#L?fg&m@zmuw^$6fKUp5oZO#fb%T2gXjq7a}5w`7TVUI78^*5d(1+6 zqLJq{64T5BG)oz6iiv{;hp#xX+~V6 zCGLcGGOHIegpU~|VJ<8tYXZLEO!(oMa<>=?PRu?BaSv?jck_hT-d3k`Q(Y|KerU{n zX4of18(@fh@s7)9rH(%0ZqB`&tq}hUe;G35uVzWRo|%XmqO6O>UQ|qov`^*@vlLyV zfe{Y(kiSS+noluB!X>5*l8`nR_z<1${SEP?JPjg~{4zIPInQ(zpRT2txPARe^tyJ2 z_U`ySIx!ar>4uYs^oBBIg)Z;gz#TZ9SYv#uxsM4@aP|#R2r^uD%bCALv-X@yJ?s6X!Ue^KCBXJWF>M_ugtkE;TIA+bY^JH!X@g_k_4rMuOgjguLRs zYz1v{H9O;QLWT)<{%bB+NDxX8Aax z1ikkT_tl0x{g!gd+lpAV*}#u;+FkQkbF2#cmk?-bAjp?I8Hzr`%wlr!t|%40W}=w$ z#NEt-oA;uN60{0w^oCoxL^0??EC1d29k_Rao#GcoT=Va_Bos1=c51@*zEUy=yA+y> zPzBsQMDK&n^&FS$c1V;-3GC&bGp~Tkv4S@K2YP5IssZS+c)c_Da$~%nuoY9Bx>9j1pX)6I=AZBK zXTH+1E%k~$rR6^2d}5B61USCqQVfBG`ErHduHf8%fmBj3T;M!Qr0d^&#{|ffR#u+X zO%e>arg!LuW8#gqtsWrK+Rp+LoGPX@7u%X^23yNc#{$xrqHNs(5I70SHMK%t? zOQfE7l3%xSyY6qGR5uymj?z%Q4vmVNE(K1LE~`_FO;zY$!_^R;`j5JPZ@H=_d}`#q zefXc&r%KeXOE5UN!=6zmait&aE8W^4)LIQx4*6)@;A_OXW`53kMb0B{Kh^j3?{pyx zn46oTaZrfc)WPiFifoA_3X$!n_q2ZRMxgZXc10%Y(g{pXPgZN3_x_Qa>Z@>vKf@LK zP*NbwZKUbiEA(;TaZKD4eA;koW4Iz@p}3u`@87D)q@OwWo&!4G>o&Uu;7r~t?INNs zOtpCI4faqHZdgIEfdGapH03|61AD6#NE}A3O|5nN**7_XQllp8A{3A~dfgJ@ ziERu}?N}#4tZ70!X4>u))Pdp3`Br%Rh;RcDj9c2Dzuouu0xb=ugoUj=?fmtp+QDeg zCG&g_?_3_~9Fn{>)5>#%(5`ux`&f8K>bq*raOLwBzn!=%4B(S=4y|^sRCWGtW${XN z{KGo15uB?mDs4O$=_oX@2OrU+)yAU&JdVX~8!%ik{2M5>9Bq|s>jlFVJK%9(`wsH* zIJ)=UB=$Kc_qta1)lc*t1s;cC@9Kuf;R%K-uwL5;fdjmK2c`NB`}a9V^tp}pfvrmx zZ6GWH9x**&LF@;aQjW@DJ7^=*zYH{vCy>DjdcV-;-gE9;;3Nw;F>4ty5L!Ku#U6-s zAN-T-04m2-eO~H9dE)5c1Zyb5_FrT}f8=^KvTV(-qI$UT&qnwt1jpleC^hnUdaQ2ExMcx5s%rYSP5M>D_`9}o z*MQ-LweiJK0qVw%1uNUn*|8L2O*eKdLLgJxerHy10(s_66UdZqzLO0yrN73bL8i23 z{5Z&z?!RmI6bFU=r5*pD4p#)=CP~T8H;Jd( z`TuOV;`KibS8mA?(g^>rv}5Q0PCG)?MC#KP{&(7O19Q3ff1w@jYGy(n9NHl|u;bf* z4p&HI@EMhtf^{W9BQ1%n8S0yqU9zzc!0lNwp$3OaSpEQ!6Yytwp9~amqFgr==_9#w z)z=5GQ)acWUCDVwudZ}kbr)8Ky}1jE*U?FbYn!w5`BAFQ!N!w`!ZmV)fKwFhV`N(a znK$`PP6=D(j7O=xeERo z;f8|Y%6xHweSnYXuD`>Tcbwr0QEHdWRL*hrn@Hbb(HwG?HDeItsuG_QoA}aflhk(k z$ZFL^zlNwNXH|iG!uuL2`90z9Z;F`tNr`AiIY6Qe36k*LPvxK_KsyA~|I&`Zd3I!= zLO2=u8Qf!OACe~4-Ar(OeKi1F#2t>L%2Z(_5%M^A_u$!~4cbxItm(Tb7h&k#V1-S_ z&g{Y^+cFZimBNQD`z>u*0gPN#{j*@R5-8Q5b3)^7Fn~~8Jb6Tc9m3iS2McULb+o2@ z)NfMHqrbzI_V4_GnPl!w-E|t&qsV7a#SVrRJUkk7M1=eerB3ANy{!&_qQ2QJ|9i zyrXwH`d_r;#;9hq{fFZn%0|#gW%{2_zEc8KQkciMGprt=K{?4+Z9A<@m96XB-Et4 zIfN9N_L7g|ad_45mKo^@xRF1n->+2}8cr_&%!xSThoL+^e|V*tB&!zlNJv zNOC!5spbtAC3fpO4jRu~kLHT{asJ9=kQY5p8z-hdM;GJcSD7=!`|NJK_HM0A1YUx% z@ehpY@i}dNWEc~R8Nab<|8~=W;D!Zkb-IeW&<#f;GG-1c3Kn1+q!^^ajb+^rs% zp^~1IeB$cNOw1{z)|#<=S+SNZf3KGBPt^QHRYh}=c-z$jiZV90M0P^EUOzx6DH_8N zRp6i zaKEz)Ml|ap45)~(Y~n7d6Nc34sZiph*u6V$-&39poRyM|w(WGqxlunxR*<6Y<5%GGs#y@@$!Qw7S;*$e=-D9Yh{dPk4n|y}Octuz(|*sA?t^4> zbH(Wkf=Mz3abo~+y!`;5%=`okvV;pZuqdXd=zK0r$nr5I%K6oN@j0PAdlJT!`ki`* z%t!m%wsQ~%n+w0`vS!p>L$70y2_%0|_qr0D^&6-%77W$T1vrM%#ZypAA>XB{=In+QIk)jlao04y2#UJAX6?Dr;Ir zr@Z$T!{|oH@M!73Ms!;tuFghc=SB2}l(L2mCc_Iw2X(5R5}HgWH&eEF_o50bq6gw7 zcuz>TmX1dKFqm|=+d?426pm^j6d|2K8ZQx3^f3G9tZzjk(XXF`@eIERlEdzJCpRVY zbG)XA@8U@_xn_eNv+1ijosi{Mh`m2v-n?3)xI=keFqd(t;~C-e^)m+O6y3!GKc>D3 ziW%&&S&59_5^f$e2)lAbBJob^7arCu^h+5RpGA;Rz3(?8yVZe%iw|wzdR{bSg)Eqo zG7la^GDTz>&~vjst-aizazeVxhyq$cH7z{igVE!SNGT1N>LgjcoI^M`5{G>ZI6$jC zc`=xHp}q^_5KrdV7HqO<=&4;|4)|P(jyJfxNkKK8H=QIKVPh7G5!RuxbQUFY@vNPq z-4<-DYVKJJ%R|ngu^*gpl8<8FAmjFF$2n1B&eJicnXX>JVZLH^g$%MO7^JYlnU;Uy z4Fbl~GJYl`{$&u<0ica_jlXQeVG!+1rGk}6a5;4h#7h-XCxO8MiIayQ&l9P(rSN!G z!Z%YM2Q=J*iXa#!mV_o+Qxkj!6UTeG34aU@!z5KpcuuY_syu1t8={?xxge9QDhBTx zJmpSJro;KfAaO?QWVKM3bvedslJbCQlU$zCXqj9-c&b1wHBEu?+A=Ahn7Zo`_oLF( z^kVV{%fz?26!v43wc+J!LeR&dmkEO@E6mH(x0flselYGhL1L0uP7>P1!k{#w7R37FWqIdi9i9kJL}%D@XP#WPP+Q&ysD=-q9n0MQPhuBBGndOVwY75Y zyy6K?$cf9#YMiA=i)RpBGPZBeZQk5f)QPOWTf08<)?^)X8_9 z4-P@2_`NR@(8z%=AxLz7i)LPNSnf4?k|QlY3>Aku8Nm*L{}zM-mE-6!Q%*D^h=suh38e6W5(Mb&eaCHE#TS zpwdtT${T=H)Ws##J=Q^3Uyt)CdfJB)kU6qZ=O|Xhmhey9;I}Vv@-5jIr~q)l_lW2x zt(?+gf-v{ZEgg#fH`rJ#C1RitXNN1H#OYm0KcqCN{}e7!^PNxehxrYz zfh|j3UnzYEtPet2x-K}7!!<*K87lu}8_^P%_2+bs+L!ty&{>BG=|JURlm303@N|%-R;^$4QxAzazLu5b#cKO#VxORVqNpRreX{F zYJU&cew?cMJXPD}isPEHnFy=CiafnO#UMy97L_+74*Her%7uf@r#H3MvsP-kfWcv8 zdyH-5NUL-8sWi+zEj3aPyIVD-T+a`n2F+FUtC7=sShiaQLlKP%Zf=l#+5mE-Pv2ql zHU=usXSes<%X}jUZGL-`kEii~#$SUY>gV?DY**X&I;oH*$@dsTJqG+KRumWc12!~Tz}h5~T@|`2wU;wc;ed_I0(kZY z*vQ`i8*|)DODs}WgK4oS6raTW4I~b1qmeT1fDx|$FW9)O@CR&YFgai&;C6Xy?S5Jf z7w7WIZ8HEi?9V(1Mc>lmW+tvftDFz&>(QC}h13ZqK zz~e~nv99i|pXlAsp&C8!H>ie_Dz`qYN8evyA8)U*RIizTuVqB9&1kRPT5lGu-zNg@ zKizLZ?Bn!CfyZGxU?bBv52yxY-~qi)a;E3FJC}!Q|4H|Ld_=!@b$?bD8+aT8scVC@ z4UZ#LpEs1Z6s%Srum=5Y{{~6{?MSai=B)XGTi3;He*>j}YQSxKgc$?*s#wNGwWC$4 zFUPho&>h>RKiWGz+{zdZi5LP@qfcshV0!f0v~k%2wvE^HQJeJrh_R`*G1q{h>9sNT zs6eRH_-prZtZX0W0Bs?5_r_5c1PGM2jZf;``Qbla9)4#(vz!q_d!e0!XEklb=zMsYGALrTF} zb26lTpC9fBpm=ZDwHfFeNxP+g63n)4WJt9ZB_u^23?Ae1>s6%u_v;i=sJxj@J|{zp zv4{&{3;(lDk!G1ETTcH^>y&gcPKLCF6oT7r&%R1FU-8;Zl&kNTO8>J?Nj#ZK1sPJZ zG1d^QQ_L}jqFKSRCjYrk>Fdg6NBnpr@c!Da2#5J26>Gk#^qZdEPs+9)dkrCNK4@fK zH}GYsi*elN;D_cw64SqC%=MdUfOGGX8T32U;S3hU1z61wi4WrZJ(<+GTlUcK5-(PS`1@t zGqPo&q^rce8NeOIpzW&J%$eOztDQtpm}Gjf#PGVt z&EqT@1-DX27)i&uny};x-%^%l>G7cB(YrI1*e)n=gy(q= zOv#F+wwU%j+EUSISzqet2ZQbUd)#tYK*Svu2B5_`(@AFJ_(5> z7N<$5svyTTOxp6TRJ3sUS1p*NIR0L;=)zo#$7rMbs_Kb5cnyzo@6)rqZOl0xqK zoQ60u*u9rR-Xy-rMj=GI4U-v^W0mOI-rjEMA4Gl(!5FsgwbUZ95*>vt9AuJjDsIsY zi0wj~$z9!PA}?2e@}!kfz&GYh24RG}>@#%a;hh(KEIt-(8#^Mj_YfnkNt zy;vh{^EbJ;B;l|E;unzP82^Y&Kp)*M>ytge7oS<0eEKN%od_ zzKjwLzaP;WAML^qci-E&i526i-oxFlf0szs8TH-d$A3xHJu|by)^kq=iZYi`qudbf zc(dRI-0Pa72RGY6!B)tm%s|j|9ifZ0llmAjyX%#>o#7Q+EW&WY zKy*dIY3UI0E_zO{{fVubX(CP7NLE#R*goFa@%nVJBEPD#qHWU`Csu+9Tv-@uK;YS= z`prxjFQK*#zKIUoJg04yuT+ZX!ApKmmH)Dc+(M`l3UjV_UWjApTe46c^m#uy+SnPA zV;&!M`+@L_8Q1!YEH{7Y6A|)=C0&@|bJI|M7(pkKnpnJvgE5ZBZ$K>}o1}Ec-f3q* zs%l+dAIn;>=MgHRHY06ei8NRh>}|4su2Ico1I%T1B_BM6)WIJ5X)aGa&MqH-rN5`~ zqj{cqRFD{I<&!?bGt@-cAAAlasshp%538>GWTOf{ELf|5iQn1f)0n7uro^dWs#L(K zV)Eh{e1>L5tKOCtQj_Gl3 zVNA{lGz&p~Ct@EIJPDP+JE3c-N8%9f+$aeD1c!IhpU)2OuAvI(5dkH+-}H zFauMo6BnM+XfmZm#EN>GJ~>?x-F;u27n;&K%IH`!nA1PyBD1o9UJ~Z}VV~%+tMC>T}J;J>RVLnUG5dh^7<$mj`g-CvXJsv zvYaBh$qD%aFbo=5nMqc`qv(t%*SDL&51yM9Z3;v4=7OYT)zfvDHqH+{b`cy=YA~}zlAXZMGd+#?UCKz($ z3{;sSIjKC+xt~~CV;z{(d@3H5{t^^M8JVt}Q!8PYEfGki%$Jr~ z+fQeW#ALeVW!uhY`7=@PnCTy!Gf!I?b!*Z@M-09A-DmvNQbk2HK=&)#6V4ZT9 z7407ieGy7KkxmQCH$_N<9?2%ziY^Fi zfYY&tFn(;Yv2O7`3|bCT4DPA)vwZn{lN(JCJ1euP+=PE~3r2~%HJ{F62@o<)tdsy7 zLw)gvQ6iu9aB*?mXO1VNUS(g$=6oNw|lXQb+H1VizH=i}Yx3yR+qF-pYAP|c)0NfNn)lgb3N)=LM*X!b z!^Iz0YG&Ty#5_>1b@eVQ=l`^(m^Ig7o>o4`)PYN~X;|)K5WZEQ_vB?C)k(2xX7Kn` zbCIgoS2#t{TZmn&F_{#l8kAlvk>M@XS|@G8J*3=V2j(a1EX3W%+5wswF9o4hKN>U& zDnVXD^N*IH5fYh>;UBy?@(OKO#i(W1FG|$?xf^?Hn_?;Brd^c|lLkABZCb5FHV~`L zs)Rcfj;8HG$;(t6UzPZGVZ*R_r4kv+sPrii|JB9Cqrn6KBd!2W-2fQLf6NTAmg6|2 ztbI#}8!oJ>O%aOx-?}91rC!I&KXL|%M=OTs>C^TX zDjl_MEra3kBdk_X72Wr~&33qw0_2RYEj~cb098?9d#zpvyMXmtvhzz)+dp!~j{@8k z?B5}Z)O43rbyq8vGei+C5j}gVd-SGz^m%)Y^m|R+xxuMf3(z8s zfZMwFdjd*P*zeN@w@9u5LzL61dT=+V)&(TPIgWGPOIRP}EE zqr$N%U|+Y5JzpE+PU~jtkH4<&1nU&`Lfc&1_|xiJz~OjQ-2zU{KCo>DXIJj|#fK5)O94mw1&Q<3@=t^Gb`#h3l z?CsT+W-0B$O1IqutPFc|U}ZQ0DX0`z<13F)l3(Fs&?|JU+ z9Z)W#2#0bdrqADi1nmS?M&UcCJ%{5#NybO`VfE^^e=EDe;A89`-_fI z-|_vVfVx~M-m~4pDF@vPGL*%xBKTwu!6hXc-)~d#`vWl=Pyk|F|L-BjJ`Tii`vWn; zWrG8N5}DWKG+^s_vaSv z%QC3jKS5KplV4Q->6xEDw-SY&q`F{c{vX$tj@Q?74<{5~vy?n@Y67jm35%}99@*g@ zRZ#`PqH{D6}Vjf^w+&B}xt=ddb zX{py>+6G@FaYIULFp*!wDC(ZgD~bA?_C!@xJTw1>3|DB3o-qU8L^TrK!r>VN8jY8Y z8fUidR!&bjwvZ<;KQ#2Y-WcjCbyOlN#>(93^_lLWBioOJweHn0%A_i6-QsgNZLlOg zi`jSuc6P3HMk)aUrJ5=@r5Ot!J7wJMaw)d?cwr!JL5~@w~rx&o3y%^=R*n4?j3m>#?<9{^2US{ibDqJX| z%VA_M;QS>H5xSBic;!)L&9Qu;!; z-=-r^2&0ksuU@=gXG%&Z=_wjZ(hty)54V}5^hg|gy>Sl~`o3GTndVrzY>0sRMT-li z#aDKia}^a*oIVdd^xHObn9wxXF1>tRM9~;W=omxBI!a}Ft z>#X{Yb;7c@zN=@w#=nl~vEJjXjQ8hJ&UQ7!Uq6uqj>M|23a78zk<0GCR^``!UzzRx zn%_9W!ACe?%Bm^2$$qc@p%~$(Pwwr3-O(pmT^M=#y!N%+4Tw_w5^=KEzzOFWdWPjH zd7tDE%+uJupupOBG}5@pnchU@mRq@w<}^XdC&MZd)jrDYA^hk&ck#Fh+_dp${-<9H z7u3k4p1HGS`i&7YOB&Z0${B=&&2aW9%kRzRv2)|R^ZV$cGejj#I zncOpf8X<|?iRKr}t^2q)OSy6WY2u_TFZ4VmtA@=ba;Rus$nV(Mz9r)Ewd}{0$_$OD zGXEp8#Jmv$q$b%$>UiP;+4Hc$LhM!u_Mr!l6}}%icLL`) zJBCxHu|yszLxoKxj1CQ&Zi@qjEoToNHwGDQ4fRtX8gof3^*zt7h}K)o9}!&oULL=H zK~V56-xDke@|z9!&G>{&a^AAKiw51MO75sGhM~sC-ryjz58lT)S|r%^hK{&B_m#PZ zRM&9&6y)(T32mnS%a&*;zm_j&@8cx)JAbbtA=-AG9s~1ztfQq5fX1My@MA-SQ^N`N z<}Gk}gR^6_eU(MEE`c4IQPKSFhR`5qQ;qx_Zmq`a;y;k!iV86%f8Y?8&idD`8u-Fh z6)8>OqGseAG5UHGsqe~3V@XJNPkEmHtfCSm>5} z^n2|1L?qTI*Yj~0DI|`3Mb6>cgB=Eh3*!#5xI;Y=ye4<46*~oIb?RcY7ox^;fB9@O zt{xtdA4U!coW@k1v4Ru^%3z`rmHG&;vFj z?QTB`xb^q~&(>4?q27y+Lxia|q8cy-XR-pwhtlon3^GT}V3PU0QHR)@$01R&OZ)u^ z|hrWrHh9_h`f834jGBXnmT(5eU7rg+Z!_|2|p>W zGO-SpvAzMZg5P;;a?iTYkgYFw4Ny41q=XH%u_Q|`Qe)r7d2dT#Q=m4$ z-~gkN%|NGm30FcV6hku?+4N=vffL?S^fnnAVcq*DqMQG>*!ZD@$0x9{)A zNlYPVae1PkVe(e6U0EdmdW>=^PfjyM=%7=k#o!N|Q_`p@F^wtHmdOMHMh#DqM}@r{ zv~qDyotR5eXA;liV?N+5ZzC`FhGL=y$q&omKk=4+kmQx}!~%`W4}T^?b|X5^ZW;Sk(r$5kMPY0avHcc8M&AEUN&_tDdqRY zzXF@n(~qv6)%~7Q#b86aEi_gdj&=0a-k+!aRV(>C1Fx0DGfM9 z^J(V`7qP+WDJRS0N)|Gn35j?bW~KmrC@tZ+O3LAhjFJ)*v=@`Co^?4Z)g$ndVRMYq zsK%Vk5r{B}E-Y||J`JQ5w?<5M`yYEC?5DFMm!IA74dy%%Cj-ibUbBkD0zgTAIQ*?rcLiGzlR=C9NQW$c;_y<$lRh~zgzPa9TF)0w;_!^}zHxGw8_ z;0rDFfUl#7L`TNgQ*-UFvav=PqQMN%h&?5BFhLKg;!~K!D*TISTm%3FY%xf_;9hdf zTKC69!P!^&2m4S%CFqq#Y>|Lzu!>f3itHwftTAXU8`u_~0=?j?`MfJ#-56t=j6!SI zznKQP)(k#Fj+3lxVX{ z47nw-ZDpFvWRd#>qyTNOy?&vMSY(vRiEZ23iVwcJsyv1`Cn&|1=xLW6cM;X*z+#5V zwE1O`f0B(m+K`sm@(UW`?;aQ{P8O`0bpQQeaX+OJA?-w9hs{EM>H`W(97f$we1aN@ufc&Ku!cz%GMRxzXhGj8IL=M6s0G(bw6v zuZL<{zSlU&*GeVlgDuLCa79C;=l5)m-cap3j9`>e&$^mt#`#$upIQvsvDI&13&=+I z3?l8Nb+vc;L0o;I*D(;>88d=Be9aN;GPte`wu$|G^}%KJ8ss*LRC>L7dwnXcdefVg zQVJm~cr%Lh?DC8R^i1D1+4lOqkOq-(fmtJ=S+xYGZ?kPjBELcQ4My`#?Xpp$z^p;= zqY;Iy+Z%Jwpw(HB!jMS+e{1)!kvBLQL0wxc6v}V{qu@ERHH0E z!_V0xLZ*1%6zoaBT~c_c7^tPJ?TzV`KVw(%s)X^v!z`yIZFRDkr7u#%l;Tye54pQR~LS_qTm=i8^}ZZ-tv{Du#2&N z`HHw7X(|uTYwlu>ObXFfYD^ZMufYtJj%#G?5LhN*|t#yAs@YOraFHu}O767y{RUuGP}r zY=VR2Lf+)ZyDg2u<%Qy`yPs}!yQ9|U?5B?M@Yn^B<8cVR@&TcIdL4rVRm$hHicwe{(($b;2Io|y9Ka-6b{{U#<3fa)t zs@ov#2-)n%t^4|7^MmONf?CS=={SjpE!|)DSh;Pm_f;sOib{5EdD);EIPmi7%bIOZ zi&tF;zP)2_DhR|N?LJqPx|&f& z5qHAR#G9QQBwR?kEiuWxHnrgMl&z9 z{wzev;9gdk(OQeBfjkeF1FqnbUgHF7{qY@Oo&m9+SE&!57WtGtYlqX6HfbYCvU8q< z9ydTdAB<&|o4p!2K_7QsHaHg`aph*}%OZ44H(!!O`EI8szG%G@%hkPd>wb4hJ-8TQ z?k~U`^WtOpqtVDMg}EL>7H4Hq&-&D1p`+<9HqQd}lzrZ$z1uG6_uVo68VB@)(k-6N zFpWF9P?H)KN^WiXM?|z%IjBYMI}!`uLpXEweW;g^kA`N>>=v;gTbyDO8?7l)g>_vl ze_~TW4`1122pzal814eQWxZ;9zkPldoYDwC63+Idy8t(6>N$!yIYP3Hs&izfK!&tB zQ>v})L9H7k0>L$Rd--~#%^__CXBf{gI#nE8HD-OW8>L+=a0gw(!+Q2Vv_Wxy9;o=O z!LRC_Px8)Xt$mhx2YXM%9GtwP)L4seaq@8-zK`DWRFTQ7bUW(nIO5_dDf0!l=KFWY zlg~}?$ID>eKeG4tX?S20!fql8lcxqRN?>jt5}v`mE?B`CE#n@|{P?)t4{LXaoC@uU zi`e8>*ue=?3EotBIF0~mq<^U{K3(}B?&O#Di03Dd*mfNeo$3-gP2PAcNSkudd5m~i z*};E3XTO{Ut@1c|o@?`nZ_vmW#fiP&WT4G7@iOgsnfEpt;0*4`QthwFKn zZM|W;u`Ly7jJ}?%Y}p4Oy5Rf!xAbJgVlC!yQQ?O4L02`4n07Wy#Z|fc;4`84_Mzyp zh0n{^E&R2l3bl?Y8Pl2M%RqLOJRP`5Nsp<7-?P~8mZ?cHW zHQ8(JwP!b=+a#kG$g-Q0W6HfM5gkqR+E0AO0sYr9Av_J84T^8%QQ;46Pkkn-yCl1v z7!@##mOQ@v{9_8<&dcnFd~&#!8s&UZ?%75ZG)m-x?!Ad8dd=#0pGil#PCa!HS_IBf z@3qRZ$RaZ}E4lD(BkleAonQ4W*zd!>7X0S-mO>Pt_FwSdBMOlr>22;Z7uBjw(O(V> zOi+dF4c&J6X-Y+D9ixtEu0@nw(*i}k;xHcsY?Scvid1M@+PUco|Ih=w)}c2WKAh+d zC4V`4Q(+TMbx$Z^Fxd91=tf=)S=$8amA+n8vF4-1mY>h1PQ)H45)+l~o)>cF5mcq` zAd?1MpEJgLCxYhB28*91K39?M>N(uFu_4?iW?Tp>#ey=DKFWCJH=`D=lsCLgCH5!Y z6EKW{M|OZ=U_@MbXMDR|o|AYf!$DN6>u=wm26!NF&3oD@4P8Z4D|koi6Xc}CfhV8# zM83W;5&ZDI?1GYq1#J6~Mg{Vrj?MwT=qzQo!)WUyMD};xgUK%+hWyyNb=CQ0%i6)1 zHwUtx4^Ugh&W3)A2{i&KU7=5(fFAf^Qz&!5l|VY@b1#^ zTjprOB7IF@DDMOv^97-90MiHRdNx9PoT0dQN#aA;mdri5R7P+q!+4gVjRq`&Vpc|O zV9_5&MXXU1DyLvR$}nL^*)ao7I@y62Y<(;E=|wvyYP3Gcsc<3&RIynPqi-xq&4 z&r+Y06dj0h3QV|Eih>SW$dg#0J=-{IUEadlZjQLXXGxDI;lEvwuueAq93>mWH0Pol zn5-WUl9dKc@5-h~S;2n~OxX<=;nL2HmO-m!Q(~4EQ<|evpuNIik3kabE}&b=W7kkG ziwP$yOn4j13D|{+TpGzbupgZw=A01AOO?Hk*r}d&_?xhOd8|Wg(rJP)Zwa;97UP{A z>YRFV5m6Zw{%Sm%818%XKz4n3X4xyIJ?&CzI(@1zXCpr1=9#P;AhRNzz;!$!lc`g& z8P&9SvGHDRX3W_ZHF(}cN=ndy^kqt%m-RLf*@%@(594LsHG}~U!keJwkF0?OD=VcJvFN?i}hZ5%=6tD{tMvVm9VsmvB^{PSk)h!sb+=?KBsKLHfEIq;~ z^c&1Hn-%JZz_t*Okq{^u0|j;rKq@q;#rCgZF0Wx*Vnw0yMOAu5VWYzDthSBB6y7%c zbw^U{uTgx^rr6P_^o*ceQtUwzQiBwQ6@y|cJc>{x3aUeA3N4M&4vizI09q__i}d(K zWEYVG8l`7_N>5>m|L}owM1tcS#=9jBJ`mgj4=w^a&F7+s4LGL znv8n*rRvG|sypAy?^mE1M)+WE%*`Im#ANzw!-()N)${U2(?-=}-|_2A*e_aZ_D|IK z$k+aE`#z1-ORt!A3$@D{xVE9nwE=i2!POi`0>@4vK~+oNBdDC? zVsC13zy(UE6TO2Hj4`-~zK5z6w7u$bJMbJIWo+%* zu?}=xlIub1WJ>``nOveCgl6VIkersSWbwowEw?7&K)L!1APe_a3qT~aTSjMF)mbfI zh5-&dYHZs|epCTPhIKpKMOm7YBfu3OKKwnyXjFiK7RudUxPsLo#J~bR|WU3eMN zRuBgPyrLcO3evUf!#)L*j(_utfc9zI>!aA~_Z2#)L)xEJqIRu>PF}hS92p>b(!Qbu z6(n`*%lW4;Tne1jM&RZs2)OANK#ZVsng%NVb6JwOR6W8A&oy<0W6TWzF!!&3J~tsY&s9z8caSQF3~pi6wo7SMd8<`xP%AuXx37l?Abr7^P@TSe7IWoRiqdn@0uweNJ*n z5IY&Txhp?w@wvDryJQM?!VjF2__43~2Tqi#9-iR_=-eH^NPhbkT(w?SL?K7OE25dh z4<@TDZp#aJMQ=FZ6?@nx{r=z;uK}-61iV7*iRwU|>e9!JPC2{~z$-QbUhz(Dpqs;+ zie}bT1R7|Io5=cAr4LQE9}XEfrtosp>+XSgl^i=#1nS)VX(&D(4kc++ELr#VQFgOG z)Ml>JdI#nhr*r!P>H{bj0)Qj~d4yB3K{Es$FaXbiGjzq{KmY5x>z)3{mAWfcF?TXC z!)=4-904xn_;q=8DJtxrVkbGlZV;ty;HG3C?1O*YKwq7i%Eb#xCsv2+3M3ht?^*&_ znxVCk{mz8>b`y}K!G?zTZwvb+$=LL#Btt`b7cE&R#~OL3S$~!EA4?1gnU%V02{??a z-XO(e&Mhrkg$AHdifZi6?{QkDyQJ+JlA-Hv+nu`f>$u)o8H9z_87T z^6qgz-qr;7+{vF`+=aJ*vS_j+lt6kwxP^8BUd&Sw9=Y~c-L;NSy;#&G?Zc81ctBI} z-8~7~xb?=<85(rWiB?c|o#{m^*F$3D#ok3-9AAS_-CqL=Crt8vf~sjU^SdD~#%4*j zHCDGmEf~*`cQVJn)$ev$7eKe2GwWpD>)X_}kA^2h(8Z4Zx*nTCq`b$eXTS9CNZgbN zu69A;grQ}V=-wBTzD8!E^owOYIE z`ZM-U5mFYj)@H|#pYBtCu6`n@an;D33j@j|2(fF}YIdF|L%h}FWjzx2lZdZUOhg=~ z#tY5!vy4Z(^7{`0GscO`zL6K4G7`$|^d{Sz5h|(LWF z?gw_8co94&$Wa@g=6xtCGuRY+C&#TQTC^-LUU8anL3tCS)5~Pn&QwHCRt4l^ZmEU) zvAY|P#Jp+maCi|n`a+s1ERpn_`;mf>I_q9Sc?DAyc7$ND(po^As<*_VN z_(n^FFhEyA*I>@CFzHxQJ;brE!r({S!Ssd!So-DURhUP2!^_#6&09~pUpCSn=E;+HCm-{*S`5*+ZwVGq5fk|!@bFW|(TtR@~-c!b_UlyAKG=5YR? z^Oe_nUL?^~YcL^B&osJ42BrMnm49p;^jB`W-D7h0jL{(_Qo*%{#Y|!8?*%J$mX^$* zfTlyOonJb?CA>u->teq6NN2xq^bb{~(=Hf35b67J(*0$y&JjNoyes-tZek_6asL9W z0XQdSD32CYT8b_;@*Eq+j%XTh-ILhDktAvzUKWd6_4P4KQSC=0Zj}cvTdmGuuixku zhjs9wzD>R;O=pE?RoLCPdg6c?qi%uNqC3W2eR1jNsz9?gGfN#uO^;}G5iQv6Cv;5r z8?;os)bfpO?_9A@{37?;wIYI;m6uO^$BKa^hAKptzO`5?ZWekX(d)EFH6?PxtlW(Q z>7OF8nh49i-`gMOscUM_pV+8Nto6jbgvI9GiIwI1*i+BAJ02R}klHQR97j@mH~hNW zCA@>Ynp)bbMbC|r&%S!)zKLf2(@G1rq+KH&{*lix81_Q@Q_X-@vqsOBc4xT%OEi%a zz1=G_{o<1^N&3^i`)qy0z7|>4Z5@x_iRM2ZW)CgyAVn_@*5XgH&D4kqgWH)o!{@Z; zYxCv&Ld0^2R_ERIp4_Bvjo&M@hO92mj^YA|XR7|9KKr>LRf$O&fAx;h(RG?(v93_` zAWZYt0&KBN#n=onqZ z>g0E>5?&^2Jfbb!TK%cdr*sqa(j8=v%qO88Prf`3%CFeJcip0Ug{DkQDZXIB61Ay=lM~2UN%*@=!`PjF&d)8i4LJeg=NNq za_z}Gv87w+C01|}i`i&J-^`~+TH-}t#FdRYCNJ&CcjXyLw?6q_0IGLU+nbQ1N-;s%@LF$)bDXN{G?@vkh|R>|uFVP%>AAa-*2 zGeQa6n`HVcS*09?$4L&NmAGhFOtNJYR_m3;q2e(f=mfa z5wT9#@y#q3)J^77!2knKN}Vn{rur&z`@{jwEE9WvD*0R5Cc>p@uMkP^#66kuYhRtu zhot+-rFjg-tCX{x2ASK_(r2DweJ9d`oe_lb*f&;*$6KSee*r#1%;EA3=0tE3Pk5Jg z;+dfI?FU&Gf-;#gnPK0UN7wpHYNVGg2vMeUzLwB~K0iHjupQ@e{EG+VB5!##;{ialX_PFQuZ=PJaoCaa0oT|SO z8d+JM(>{TM1a2#s$PLL#%u>&5Y6%xxZi#RHlruG$p7AZRSNO_WZdUfwOAkun`!deI zRL?#o%>0VFqBO73dBU@PJ_~3azBp&y{ucSI)fXHq@i^*XJfF6f-1kJbP(=nJ_V6DB zg9dI%&`0ONFrgrcFHEDrElDE15VZ;j`T^Ouav@}5!mvuaAUG(07ML)o?gD~A5nVTb zmGm6~&PmL_U!_6N>qZMVzGi>;a=FRu>dCAtXP^I#FI?JShNH!YvxPKqC5K+aJYT~E zwTlpi)a=zs6X$K)p!RUfrd>*7pxWz{>CGL}@nh>ErN~r)}@G+IYnkMswAC?gX zdq0(s%QI7t9f<@Q3`(&ctytjqWS54@m(YSsFZ?;W0DjMkwz5d6BQviI4}B}qlXv~u zSkzC#6wzSdq6F+N1m`63RT*G(!7VEXsa8rAFyx+xunnGJbLWL0$*t5{3Ar>Uj89wj zR7J@j7bU@Y9qOceE?MJ~F^UhW=Z30(tEhNdfu1qK+fZ1yo?%~1q^ATk631$OZ!3X8 zYd&a*uLCBlqnQgq39$>cBAT^OZ0)nx_;p>jf!x@e&#-t-#(tNGj0YT%ADlt?Iy~52 zkPlUECV{ZZVdv@}Mv)%R>y&nm0pOUP|odrq<;Vh6DBl*3`sq^LOG;ym#^|z znz{*v;a<5xz&9u>9D~vX6c^y4#Ikb5^+^_7lrVGPu`3)S5pWESh_H7483hG!gyIkKc0mK;G?x__q#vYJurFU=9lGOi)a}sU8UQ0J&P;T9&-R~I+-@9^7;?vRZ+X1(! z5^#(YBBJ}<`W)i>c2xCUBm-B_E0AR5;-^npo&MEq zwP)%4_hzf&t|-?mNy^m_ELZuc%Aeqd#G0Z%8IM5_Pe>_RqrBwF;TV0LkZv#ZjoXk~T*nyu`W zX6xWrWsOdvZ;S?Lw#GD04Ji|^H5vKh8~XYdr#F>Oq9Pj2aSGCqDVI22bM(T6eZu`& zKa>@u$HD9(8~$vgcup^vU3?bIF5XHF(2KW?NAv2=1R79r$TgME>%UYCTnR|)mopK1 zkLPez;sdo|D6KQ3I1no-5U#rTKnFxkJVCBiIJ#YsYt1;BYbu-RDa4ah?xhPI_<%r~ zYv1hy2PJp^^+Cx`dDJ`e!-8CE7S8uYfQn3j&{&}BYm@xVcFRw{{$<55;G4?JkOpoZ z@}vh)n}tEcb8itb0B-lzpHV%q`o{-;0O`lu5&irh)b?wS7cO}q9U)tUuGROv;a#{S zq+p5;=vsUhEglPt8%;(?oZM1q_i29lX9x91nm=f^%7SL=TZ=m&N_d7MOymER-uJFsH(d#@^Bn<+fW;Et{?4G){Yo2VsjGR+#KtJx`w6RA)m zPe}M`^C{HZuiTg!9|KkU0E_PR!`M6j;gWCq~S{~12Eprc*e@Og! z)IzPpX`6OGDKYEYIJGEpz*MOgi{bNME}^X&+}3$9wiK;PDut@3;Sz_l3h|mBo2F-d zQ`o&ZN>VY~?DY0)Ca%4uYBo3&{+O1eq_t-Q(ZtpzcHUMB)LE4t3>_BJf;k&ZebOS+ zj?VKl0lR2iy1(r=d~`-gw;{|DMuZ|eaP6_8hK2ya*GJBxj+4uHiIEZPd z(wisGf67TYJ!4TJQ-5Ys!nlB3$~V_vW@xoaWX&tumyoTye_HUbpwHRv_&Txr((j)# zUC2^ob16kH70Ch&#f$L$)n0$1ZlQSNpoPCxlt^F9s$xR=+WoWG9q9Lk{sm_I2z$He zV9COI@mF{u_kHv8U6|v1p*ql?D|qpi-8B(4bq3ygg+#}F2N)79>+v>mIo$FwHCWCkXr?a}PU!rb;)?toOSLYBa|O%zHH zq>4M0Hm<)2tG8l#Z^7+zu2?>=d(G((uzJ$^S4BGDuby)R2PG~SiXHH~*E{$g!A?+8 zg-{LEbH{>cu6s_V6R*yy2f9FTsPQ+pAKzZS3m{y-H~l+G%0e!*Xdb4ooRi zSN=!TO#iEvu1IywaTebs5Tf|*txBl=SZdrlnp3FSymSSnT$=BQQBrvj+2d1W@QuxN zplq~@BtM1c6Z&{=btNu-$&#`%90#>`p^Kxxai5BcC5ToAJ_g?a}3YI;K`AA+?Jg z*@jZ4M_xDpf4_YEd}q(yUOi8OP>gI~m(IiZo#T&$?e8dSZk*q5?LnEDTTtx@qJ2D8 zX{;6EbVSX69=m7hsnBe@!dy2ue032db?u64MKqCv4H2h3A{- zNnS@~)?^Lr>Rh(cs1KdzZpXSs=OIlmFNf7bY? zu#`v~Wv>j)%VdB$1lM{f<;$-_UO_pZIkAUI4PKuf{56C2z0_4w+5J-iqy^>r)t+YY z0vd)Q^Xe~21i;tSqbE@GyOPkgIED@y*>DgEL0~|$)u@GG#H0hqW_tA5jZAU_fuZB& zrx$1!!DZO-7(2#M&-EkFQX-bJjP)52V570SCDLFqLPRYReGYoi0JbYC(uEhfdohBA zj6#ng6t$zWsUpYA7@OI`*;JUD+L3xlh@aYSQ*9va3_4SWfpF25fNij%K8{@qo3%Z% zOpZ9p^FNM;Xy`^kxDgTu@khp))j&H6VXno&PY2q8MF!gdmcx(8;$6y}wGEk%VrK^H z0o^AxHoS#V3zjG2u_=;Juwx&9AWFRAJjWTWv6<}zmO@^O@Ix#c5fGKB;` zM}q&pm{K_|ysg}l;C-3j!nnWaW7%p}MM4~c(3A{4Y_ejFGnw8Csp`Fgnh8ZXJ)e{Y z^A6T~m9j1?#wf3pTlyw$;CpnavSCtCW{i%r$)R~+>O=-$A*Ztvw!UHoGNUTJ zQXW6UhQ7*(cSd+xCt9~Ao%hbHDUEY}nI4~&m9r}m-kS828MRy%PM+PFnU$5@%BmuP zrw1lt?L~qK9+PDl=bc^Rj0m($lx)d9I18;haVSTMm3a@*V3-RIS+H3-7RYEhwQO#d zezA3K{I|?%X6|~2NJEJuIgK%yW{6S4-2QKg<<@?d%d^nUw7i_Hi5v;&W5e99Wzg5h zBOX1?ex{GNp02JGfDH(gu2FWpqQrZsgxLlI z*;U3e2KtL^T>eEiw7qwf<=H>Oy85tlUeS*roItz8-ACvsxF(^NL=Tn3*@z}gmVs#o zeF1)38`2b9PCHk+i*WhW!}7;+MU+Lyb3P)1RS6ANBwwAhq;btU_gAO2y5;COqna6)Vj=fRu*+!G$bL7z^N~%?A)|i<*4t8R~$Ivm9>qr9LY!cb^B~rXBh?y zrXS_GPQDVFbtv0vVFf(UW3(V3PzAv)i~mG5VL0aN*7~)}A)Hil^{NjHX}qu-?&8I6 zbmN88AQy_BZN1bFxX~ZglJm5uP^VoDyl3cLnsqf)&bQz?6L-NPLrh=Ie6-#^L{|Va zsEvq9WW9E^ZM&3AL48HNaPomBp_Tg*G!+5vNPKJscO=cQ+8YvKnynXk}@A! z*|s&iwIRD%0+`WIDVYag1}px3S*toka6xhnE726veh!cfPNOZP`OqEUc7P~r!xvut zxyV>%!3GpyGp?O8IWPgq;9P%4$3FgXecHAYRA7;~b^*zlZwKKL%Qqbkv6VDHGNuLL zlC5kwntbDvZ|76Z&KKKmd~&_9@aHJwd&obK3>t)J+)WheZXXrsG2}V~MYoUm>iWlfHHrcHlk>CWKR?W~J)q=mp7^Z%` zyK;MN+=M;tfZwyLwyuy2igAyJasM$l zVej~UDwtigcJSh-c!{~Z9_@jHE&~^qM506cfea(NV=#AW@X8d=hcMV=IheLISQ0u^ zmOE4dMj4|w&bUF(yA8tXh8o<4oBW3DvvQe~m|eV>>j2HxX^}S2 zY@J$a24$1UswU8E9Sdy$&DLeRe>fs}@Ly?0^?#IRgv0ax?zFzcF#al+j1}em*G_BZ ze~xA(ssHb3MlMO^pJ~RM76kUivtgOTaN`u>r%!Ko9yJ+BK=Skh(SRA*H5yxq$%E(LZ=LubJFS@T-VG3?2<%^-))6mO5%OP`OYRM?l~>_h^TnZkh1Z%* zeUlsd##BAvqO+*p=C#x~ID~&Oj@QD31p=f|u33nK&!|S%=bTl3ukuAB1k!n1#b;kg z-DGo_s`#j@>cjKC@7F!r$f=d$qmxq+-4GZI*A>fk4 ztF(Gy(s$WKu~i}*T$1#Mz0}B-C-y{j9r(JOSA@FwPooUoLv9d)J{V>655CgSOcLJ( z(U9f7`1*1y9dGcgD8s+)X`%!wsOP(f6JLJHhvq{-%&~N4TOM5)m@WPK?#I*eRn10s zEcV_nd=aWJY_g%zHt)wLegO9e=(Misp!N)GXr_509l7_lro?_O`g(B&Hu)AU$07AY zsU~U#YNTD#F`kf^4P!5N4u0wSHW2(qa)QK-l8F8wH&5#?>{i-HxS>Zfy;S<_2w`cL zF=W5zz8-G~OrO`aZr?N#!!t$Bqq=&nS@bZ-b-$uzoLpvQ1>Du5!^naZu-G9|ox zqAOxhm}`pXBO`va;bnOl1irARZ&*`plzH^wTY!n zfrEG!T6}*J_@}&Zp~(?{Q8e1oJ^mSTCpW@7_l|+LU*U|BrJ}*mha}_@N#SC2zwE4z zE>S_O5i)2sTSt^!6;DtSEw@mWPcU%uDpJXBj?x;hJL~1PXZ=?ve4FUNksQ0?-!|f` z`y)THys{Jn$mK&WL$*SUv+I@gaWRLHTyc#KtEi~8Iv6{`%c{HhEFYOQ$!+_S;j@SgYE)HrkP&r-$2p zf7Z&u+{V6$J>}+%zTFcv%ve1Ank}sZ@xA?~;=a;(A0G>!KqG7*ymT$ph;UWn1T@ zjr`WE;Wx`{eCz7>sokZSYl0AZz}bC+e-x)nf8`&M7? zDm592&r3AQEmk?9bztuP{+a3VE!XcWPqCwpul-i6VbFvLB^~}jrH9F@JKvXiq;r>1D1U{Q>HAUtDbKqehe%;qH;0y5kWVsuo-# z(INgz&;;pgYmQE*-lJ$KApc$RC)+BY4Z#s-zmhBnFAjX2p0EmBC$V{yDI#dPE|;DE zZHg6tX4yp49`7Nuzh-FT%#VA&m6Y8G0@0=upLy=BPzf-!*s5h8UckQa&M7=xxOa(0 z4LlO|5STmWveELZPTUR?n^GoB3&oB16z8Ja&<){Y1+xS>DeC;ui{aAk@4lp;?>tv? zZASg@nhhc{1rX77uqZqaCSmVy8+XY?!sxe_(3jirwe1?R7<8ZM&gN)6tu5F!G-b_t zR%Dob=dg)YsKM68#WZ{P45HcnMZm7;lgcKuI`Jf=L(*=C&n?4BxSzVG>MG2y6%pYw z`?NDz2*pcc3;yn~KKDSV%G|vd5y0{)*nJ+y+gnA#0>|fCGHS^I`5BH;%M>_1HF%fm z`GNlUi>sNt$Y#(FTFzGvIFPZZ89(0UY z3-PonL)eZpxMQex8g?&lFW5}%H-M?K7}CY`atH*%7OtR0I;&yJ9!3s$hPWHRn2wQb zf)F?{(c__g%jmv~XC$XDQoX=VBzo=q$%8GzrMReUK7+PwfZt=lY&;8%0?2|CC0Jol zm=F$K=^=`)7L)V&d|F_P3KNlL6}@3G#zZYPK{7H;HkeF?mm9z~v*@sgs7m-Q zGSF~hax!DhX>qM(@ZnwPB8k|ImvNlM%VU313!CF&|GVj(3BI|*qSI26iJg!8NG*a14krsP%~%N zh*~0r8s~_{Jd93nd4|pBriV_XMU=*WvPwTUkr4lol`j};WP}->`;MkhIHAruXFNQS zdGT^)>_o<;SFsLXz1^)g6~7esb0^`cSw$16TwGGFc6h{#q&Hu)2zcf*Geog-HYFy} zt;yE{jVz~xJ(P)IU(2{=oxQI-exW&AkEvZFoE?YUUN4th5whg2QMIZOt`OKS$Q2$#G*nUEHN)JLahLl>HTQg~ z3$v?ZIn|QWQK+J-j8_$f2FGTMYR52DFDt5RWAKr|neT=&<~3p)ENfvoH4CxTi<9_u zcWje6{?DF)3^yW1BSOcBBk5b)9n4v)Y}Z*V?5V$_3I{#NO&yW1Gex5oE$W1PYg4tW zRu#kvxCJ@vk~n-_+~tqU;?U}-`cFQ!d%5+$1Q_Q~Y7&qdy|`_O>}#+$n1$FH_^%-b zgc>0Z-yGNwCV>R^A2znNK!DNp`kHG&T_p@s6W#c6Gr~0vVjYe;w5=9Ui>n$<*~$b! zEdmA9qS<=1d4*cE{Gt}+u}xsIp-h4J`QrV5G(B6P7Mixr@ag(}wh}fhi1}+)v^Lyz zxMhV}09sispcb?mKrM=XQ44Ad!vJB%ZV~3T1XB^UzTzbzZ4>}5_zkw&O@D!l!9Y^9 zHo~3S9;*Pm?|S|IFKEGy{7A>P%y-;b-gaG>)gB)QrX#}FL6wAcjT`4(tFi*;UZ-FbB4@?fTfZPQX2asqmMsLa%_%^H1podY+40;)-@)F@o_0S5PGx?R>T} zz959Qe%{s%#uqAr@kO_W2v%#V``UcBwn+D8t)4n^&sM?sqU+wu_+kfWt zcWdN!Zj56nG+f`lP&nwc?warUbwuJe(r3%=p@1q0t?vP$SHZn|mzxkc zBC(z7B`o!lwffR1eFvxd&V%eKI3np7IBzUM2`%)n>wiERupb%t7z(g4_BROj+)-G-y9 zOq1qtMOCJqe#-4j!`;RsH$M#YhK}$;B`CQgBU2+v1wFSEZ{8ijDH`8=5PDPSPUm>X z%?BbKfM(ngX$6kYk)@`h)ivPweB1F4cO>Kg6G^c zS$LL8TCrqjZ5BL4tI@+1dH*?Naaz;ue~&CWxH8RFvDD=?dpnK4ijU;TbnxB;hQkEN z;ub7)@!R63HML`1h2OtO^+ABnc8Y4I_I$U@SA36O>2Lz*iuGcz9{yM-Bn+x&t#6(LnFkY5N^7&o@CkA`j=XPSc* z27l)Ao=(;0sqb%6o~P+j3ZLr?r1I8U?5F{45+$)_NT8n+n|~Qjex;J`=+jElw()`V z=C#hK$EszxeT-dCLu$;jBc$bL*B>r%0&NmmRAksTwZ+ncRE$Os!iIgOwtAiIV-to%GST|><%ye*V&baV@|*^9Nr z@XNUUx>6~mf2?fX#$U@+~@QMT6!ms)5!lP4_-fpcD zkpgaUjIM<|Ewg+ADra#v=L_E^7*Zy3d0oxo(|G-Ni_ciQI$OAX2*T+zGFgYOsd3*Z#_Q_&+6y#YTP}kq8zU9tByy31FtGkn?h%*SA7k> zYqR%0*kdSeJCz;4;fKDz-yRt*vbm^mWMRly_a;b%9OJ z%S$Llc6)M4NpH_UPixei)8(h^82hGv=?U2YOS?%@l}`^A+h-tr(90-@9q9lqwh!l! zNa{9s$f2iBE8i@$yf?8g3D65G`=bm+aQZ=rTa`#I*ksQ|onT2C$H^8V?A!MHH8m7$ z>MOKLE28UnD3@}4x)kgo(Oq5Pt3GK&602xq`9!E#jFVe>i}{12TPRm|eYwB8L<+rr zQWbWb90A82N3?!7_1eIp?@k_z)aQ*=x>Ozm^9hIgD_ird*<&sn?ru6h8NDi&Y_5(= z2gwj<1<$8TTJjDo!kUD4h4?vb)K2i?(>Re^-&jh#DK`w=;t?=QPYK02uURJ8A(G$D zb!b#F(Se}G(V|JYqyw!hXyQcosrZhyjmIucvqTH4Jx?h(k95a2Ke&1S#BYR2g(;}W zU4xT82jiTI^fHK7(b*|3xC!GW2Tc7QZayx)>u{J#$fG8}b&H>f#6fA*bOcw^6g<5M{=lW!Lqwn>Nx!m%t@<$xLX z=C9bRj~p{vIir}k*nWD&=II>+((WqCKkC9o~BKwAdG>0B9Y$E3?yBX%5B%MZ; z#=}JcQsi}BANTZvJJ+2C3M^f{xAUdW`sk0VA!)NCFKFt9s~vj#mTSK zAzqIoGo1DWgn~o22T|eE5YvmRB9RVz7M2yky91+yG;yDfPUD46q=OI%VPSgiF20V( z2ZqV-AX|av$uXXLuL#O`Z}B{I|DuQ^h6lc39qjjm?XhVqaOX4*V=G(}g$7xCt3Mn2 z>JY_^W{W1?g7M%w-G2fcz)cD=Lp=Z-O`YgAY*IP`jokHkwDBtU<{$SGTv>)Q-PS|5 zzCKC$?k-}$n!>9uGGLVNVxx8I-e!(DsYfu_@1u^u*%pbZL^I%Y>v@X-<(Y{t8{EPs zh()4Y6=wiJfxO6lAK#_4C9t`<7``)UIkII9T;k8Hb1&-?k>G)sG!z9asuko{&Gj$- zI5s5gx?)zb^J}iXC&FTx2pN5<`0UdMX}wLRsQLzCdeX&BdlUCIcYFzLZHwJ@l+^X) zghdj8rG$ygQ&ba-a|`mDpV)VZbZ@$0rdGvTAh{j?Dj}R~LP-$Kw^Gu|XH!XW?h7(c z2VUQM+cMd;WvoDRn>bFVQ#*7EQVx3)H9duRnsgjtcLBGc6D8!aElgQFa7sZqE$nUw z#$emC1upzi0_WW&Xoy4Hx?YiM{hP;+&HTAUNZoY8pugsO9$8R)ZtJ9wiR0bjh)&Ji zu;|tqb)jo-PLwgCK3^BKt3p1{J2HOva;&1qw`TZ7Gi2a9CNLD= z4p;ahOlTJxv5|C*|cO z>{Iu3u7SBOQ{FrP&XP)=#SwZqU~dcZ@!UiM9K4W?ECPTAC-HnlTrlovFM|>W3^|gL zfG|cFlOn#(BTpW{h~lX8m7z%%WCS;18YpHElGLWix!*|Hi#7p4w0$yxN2svW2x=jl zY$!wXz|kjEp;Zy|VFuZhkX+hM&bWWJdC^)9FLVP3X--1b1Dg*lyn80ucsaSrlX_z& zsl*{U9g)bo4-`iQCuOWLiYfgODK}>554kB9sOKI#Sn6O?mK?|myrdTn=gK3}7TeR_ zAwUM)BU$R{v;pKLeEN-dmOfnj_z{g=~DBV*O?!-945 z;#ZI-EE&b1Y`u=eiC4KdUkH~f<})<%ydu+{I;2N;q@33SO;ntjEdmZvJ+0#?gdv>AHZ$_HH@jN2NVVG18WjCB%Uv7 zh$KeU{nf)DiU{!P(&Ze3{ovm%^;m9K#U2%s5sr2n5F?-($@lNYwRaZsr3+?JPrFwje@DV<1n`AoeXJ!W$}R0?%auXhs0!}sCyyHJ^w7`b zfUBzwlD+wrd#^ES>w6r0K0IpNqKW>f$?sku+!~fU3RmgXzdG5F&Fs%W9s`3Edl#4~ zUEn#(AP%vAq1fX~EPe@t?Of{?!UM)7JfxfBHRQV#;4F#U<3@RFq{3r#EKfpw9pD%E zI1&UDdMTSHaB5dq)7UC>@9z=@FisYOYQ1Zze1R~0+}OZr`n1a4=g;>p#?3T}*l^p^ z2i*bh0)68HFe2gAO=z+W!Ode2GzziDT($NcS8PR0Ap!5g^Kk<}FxXDlC&8)!!H5S4 z2BFw2s*CG_bwW(CBlgyC1xsA7gj&k2`oBF7+tEEuIA(lpoDRv3wqj6s)Pta zq9MkNE4+({<7h!+1|)kksxj6ug3C~#)PJZJ#ekpMykAYfQ44&eAlRflGn z1DhB6jyen2X%8NE9#jW98LYva`9T-wp}4hSqC6KsWi`VyS zTB>gs>PTn4TxnSxhiYWYxH#=wG%B~L7}`e^qJe82y!4Lb-_Ww!X3TK-YL)Am%EuR1 z)wL)yP3oscTyB(oNR-*Vw)h99&6wB&wm~S^lm#u=QO$okt|jH29p0vFy>o#Xf)rQ1 z^Zbi$+s>yqW5I9*o0%Yw!IZ7WSL8cFy!HoXNVwyR!V4d_2a3W>7m`jhK)bX3`$N&~ zOXfthsIrnt3U2$~#sxRyqm-KGOBq+pe&vs_OH%vZdS<~)G+t%H#{Uanw5ymN>X1aFQ6r+CS0#w))q&dt>Z`w|VnBmExbK^?-U_KgOcs>vG0KavEQVhW~Y zKb>a9VD|T#fK~-Wf8&elYX@cza~Hln4jSI_ePAd<-!5O;E@)1A7`0yZIvB=`2dkZy z7OjU90r%o>e6e%oWvW25Ge~_Sh;cqzTWTnyw@)rH@5);Q?RdlL63hBRM{xeG;$4YA z5aW51y@agA4xs`6)jvf;7*X#Aqz|vW8yuVry(fOdK_2Y1wFo(WOCa#)X_?B9`0c5o zn~YTN&8diW?-ve$>#3j^E>xcGVep174)`p<&aRJvyE zJOwUqo=ki>%n{s9lk{IE{(8g|2DRD}`;_KC30q{CVXDER!exjp_hHEG5HTqOg^+zS zN!S&xvVwdX!_1;zE|(!HYq9VGD}#{gB-ltUNCvM@+V?Bp1wt82W0lZ$oWg1uQN9?_ znJ55Lamq-vZwHD0g5%YUc6+_ioUCZDFvDzbiU%9m?zqz4tNzX1bwKxo?3+c-!Knq= zm;Li{JvAMPlICfl!j)_L7_gm%M^kstS9sf-6$>IiWqkaB7u^M1Iw^mpd{jkLN^!*U zU6?y2!ns7D;GP-wq)Fg_9dMAuQO}ZoEVa`9*{Wt=hkf&>+(aQkaeJLnnu)R)>Fx>B zJtp$hg-`i&9)rrl9mf03`j7_mBvI&t-T1Ff%9ESZc4v%C*d!=tGsKxNZ}fzZSoyKM z>sfAfXT7Bgx5*}b&m#Iy3uVguZ{>f-qIj6II?{(lPBI6Rk~Tu8~X{;pkp=(}w8 zG32=vNa`ZKcLX=)2oiU0Ry%ZKsxGmQfP)fUGv^iWoK1``;MAQn+wWwX7B^a9C?Tr2 z<$kZ@Miz;>4^;HZFsMUETr zgxVIvr0QftYCK5&JEhe`O(b%xMQ}^jS#m>~54jj%$Dn}N4mNclRYG6%OWlgnb`9ul zaFZO9lM7Dsndh+19r4%ABH9-%YN7w=-n3Ps3~@_AYZHAjLFJPs%ycpPbl4Lkw?Q$K zFGHls^hCfu*>@Uo2ed_57GkF)%T8QauO&8@-qiMLEUfJW>KLS-eOuy#9q0$s;!$q%!-FS%1fs!C!Vuvq(?6^->Yc65!?HlBsVeIFr>4Rs z8;3PvURR4$&#gT`x&84$@!J@+UrxG%;HG|2BR*-yd#UmCvIa~3jw6!7LWw-pj3(6q z@9n?$fzW|wU~RYjV*{Y!@()McPfU+qxYls9=6q(S8_YCcsSPv8N!Vor6{(Oc1s@31 z(|RuDU^?IUjL<}`@rTVPrqsD41P9C$o`16n6?t0nG4A+BSNUDvyCpMB9fJG>rR(v% zfx%GktN`3nl;kZBUqf0O=P~gqetlHh+azbK;H>eEW@Rgcqedr-y5nV;#8m`%Mm_I~}@W&8HlFRQsw6c|>dc<3*g?5mP1x_Hce(gll<=%x%7CsEP zY5}o%gE+KI+;l$e2;5La~45&bd+MG>O3_RD?`tZAykkw>aj^`99(6ACv8|cjt@DEbvlwTY94H0{ zg~Zgwyh^*u%{9)T5_kt>%5XTI+m-Y4UUuN<8cdht2H7+ML{yEyDC}8fDbni;;f6zd6-e@Z7ebw23F_|PsMLA(*FLWWfnp!>{Hy5%ZBNo4 z?V)Yiwd32GvbMa{svR-0aEu!ubK(;&C=eP80tX68kx! zm*~)>=DJdl7rvglZwj$!osF_lH_)kN@(k@)Wjq?aujTHFgYWKL+jfHZ<|#7u+wkUJ zul5}oH3F6({!LBr3TX#9_T>+%zSmAgg4?yBGw`DDt*9Vy#Wp*mOYY(z(rZ-`05M7k zl1-$`vWq}v6RyIJ*Wv~Z69iE()E*ppp96U>F8cbVt;v_-hXG!}iPuI5KIO&l_92_8 zlP?kiW3lHA9F7@*DERgOtjrOoAj-)air@?d90n#JDBE=s3>FVt`7lvC0%Bs3z+|ArL4tT3cz^p@*i6#g zdUiaK8~;%-aT*II=A(4DREb6E!DVtrdwiD65eFib7y;Q6aU_*XYa2)?ZI3rO1)Nlc zUZc{OM7nhiy=?$|ZIM1qM1@V!!-95Kc?Pz(TgkDL8xSC_478d`-_Q0ML|Ez&Q&f1# zTp#)kD%~mwaffR;Y>~>ffEGlY17wURGnSo*v}-lU7hI}iL>g&;zJ#Ef5R?AEx&4Vq zzxa~;89{w-L9XFaR@E&SGwC!R%FBpkffWlKX1pM<3UNc3bE%LH2I+d@CM4)=zHhWo z217M{iHrCak)SY?q@Zhlv?eW#fx3uIoS>4oM`n5sq|ZCRsTR;Z>uw2_4uQKhvQF7E zJ};-M>XL3GnYwV0F3dQ!g3Qm<)Xlo2gBpkVu!4|t!V#w5&UjXn_IxpO)`Do~d(a-A z0~{m)>}gI79=N(*v) zEnt5N7L!2E?Vs<)t@Srrxl%6VV2GowJ!_( zp;Kf!e=NZR&3x@X?5iiLSAedg1J0}o520#Rem1CF&FWv^0&OD@>?f;7D&eH|h%>i1 zj=_dMU178rVDpDOUhxlIga)j0W)-c%BXgvR#$XU%QFTEPT#E9wqtA|m# z{#OvgSG>LKvt{)OjY8iUSQ;Dn7H#xrSk5H{w} z2p+@nKd`w`;-3jgP-J{FQt|lpPc3IGwHh1nP2csJeqUI<4WJAT@#JYe0A&a=ZhQhz z#ysoDn56pYGdUrUw_&a9JurTua|2}rZ05@tjdE>88!`qRKp9i*mb?v=f$h*k9}xtl zMnrD~P=?>*HYspBNvMH;hlJ6RXpJ^V#?<4*OM*Hg0FJ@tS1PRR#F(2q0geF_J--7* z&pR#F?r>lslD|3iI2yngpr|P%$G@xn$2EXsxO727tfl&Zq9+!L+I+Yj&@ix2jdf0k z686?h{aYGX=jiI)(s-xl&?TRHwVF#^hU4y*F|YOFbX z-UB&L{&ECY+|OqB8yE-yXkwTAfT6sQi4A`_qP14Fk@FnLoL7-D=vQ~|*D3DDjrSj1 z>p!GDVC=k+!4Uo{gJJux42I=eB|n2PCu}z^wLf5RKXK5JHR!z7cV=zS-5Kd+GZgT5 z27}(>%={#BmEJrv!KTm^0@F0z<%V3d^@lonHg^d_9G9AZvgv| zI{_`ge&mPtzYeQT{U^sL`)_iLyV(yct8bTT1nyC-#njv>Xg0E$4ZB`zS0#qJqCFFZRBU7UlubpUcOBSg*>*+hGC!l`P`GPs2{&14cgi61Ie=bY1$p1UXJBG z7%(kQB%Ock8}e@Q2=mgPP8{+y%H%i4&~p9Y)^9o~Xn8D%7~OW^8I%HdoxIs~>A5Fv zVtwbQo82p)pII9uo#83(dPQI|OOKY~NH#4Q?3&v>J)fMmI1HSLmK?;&hrmL2!(@N$ zuW`n#ynQoIS+i4|C-P6Mh6Fq3Sb`;N+d+~T5A<`|>(mgX#3_gSq!5t-Qw92(B+ry$ zfiQfLHsjmEHS^G*jKQwZDx7w-& zhOy)1^-Z3KZy7fM@Y74dp ziq%d>QEJbY11`qMALxZ$=fCAyHzbM~zB{3&`0jmKS7Oa~! zuzlrFG^ppkp5L8lE;6M84ZWX4-3F)$wCx}YYXr$u=tR=K3EpA1xLG~k75!nGj(_#u zT>hyMiQXX*3|mY|tJp^o3cw5xx`vMCICqrm0SWFDJGIX$#AwP2MxJw=;)u$y%7Q3{ zms6n_@-Jfl?8b5=pe^>>rjUUh-{(T_-8>(%XlwG?R6=zLveLQU?xX}E4 zV;~8JS<84)GRmfv5PlzJJC>6&F3!n zI|E-nzPD8|@X-5F>EZ6D(b5jSid!_hqrZJQy=7cM#~DqBgktXqssbEi<*s=#X!b)m zFd`XB5${>m<&j$42jvcNdJd=?6Pr}r6oqFDpvR!chG-b5xkX=nC@G#sgbHR=%Zq*^ z*%&q>5Xr|Y#U3#zYL&)@;X%lGgWZk&M@ai8VQ5O>h z@GQb?^2mE!UtNV_OEpOwiY5D}7;e=S-}?d@0vuL-3J<4pZ)@C5bgloF`TNgYMtO+zCBMxK7TQnQ?3 zEN3G8`69#@dM=n>(vT+>zY;!i3LC$^9Rj*t@_|ylH~BcoCg$yxm;0&@m1Sx^AIC7! zH%DQ&-VWd$+yq_q)DPXjY9@{{aIh)RHF=Dkb7FZx7W0_dUiwsUh`qgnq;jxA!B*F0 z4ocJEq(;nq3T9P#Q>3D=<%?$O@cI7DT3&C>^fe{?VSS}GnMCDQP?DFf5lYO5G~+~| z2Yoce9OJ$vWPp-fY?bA3c#~s2_lZ~guGe~~o~6i_AxvNPo;miU?@Q=vVnd?85S`uU z(D+Hn!s11MpNs$LkpfCv-wkC@yzP3k$gTAK9xIDxih>t z)djfX*e8UsZEZNjmiCq`dl0n#s;uGj50>)N`Q#>)JDQAucuYs7-20?>Bj4y8P{&BH zjXivgUDJ45O_jwTc4OM`=<=l+!2S$nIjZlRo| zJYc1T>jn<1$}CCyfSu>}C|?`czf)qe)|o!PU|Z7Mcj01kg;daio^N!b1my8?r=0SJ zFEDj2+|;vQ5Kyz*ZSTob5~^@bw=}j>(tc~k|3>wrPkvDTR!Z<;KxtK zh~he6R}juV4`8tG%Ka@XzAj2Etoht2)Xp>lR3c!y?5X1L&m*S9ScB*J7d#PXO0aSD zk0DZly+e9`Bq-m?NSf2@UxyP#0;CgHg|vTM8hg36JJQksvrT;*{vB2i{lttna3HlD zA8eShCobv;%hd#nY8O7Cf%P{TLFunTSTc?nXv{U3eM5aso`G+4Z{+=oTqA|o1~a=H z^br2r1P)0vA3gZiJAi7bg+iVr@30_lx~?}Mfu5_~ne8zhw!dHM6LYb*xp&eHWOU5y zh^^CED@j9J;*#<_LeN}Y+}6it&wVT``a~}#I+Y>#t(r)PAwJ-yfRdV6G~e5gnsl1D z4C{Ph@bcql6WphA--a*fT~`utYzHk}SV`7*D?of}IB@*4OGd1#m&mHnAPl$7KyB?b z=yH%TQiUJLSrFu|ca!=rj;G`ti!N3s=Hwkm=WWI+3DCHZEvtFF`GhjryY>QcOT+X~ z*97r0;w7!`MQ1_n@};};bO!-PNL5`?Xsg5W35SoQO^97Wvh%n*yV!{Ab?pLa?rxPU zwv#p1H@8WGKf{(xjf#>yFe-Bb;)~2L;fK0(9#2Ty*v{qf@!ouC_Q+xj-gJ=dy5Oe9YnZme#2dCHCmvEZV%&u=N8gMHX8n0{Lq zC-gx=_F&qDDM1)VIyiIF7BS^1!SSQ+j>S{xqoNcy}d3B7qMUCcPYpReR z+ioDTldKyax_=G7{L>r{-cI@YFaf|C^n8@Q&yllKTKj-t5to+A6>w0b(IX&u3woXpJ!1g5H=n+5 zG1O}cWlBsg&$nDMPiBP*v^$V(lTcyAWo-I0?g6efy!{Qpt*C;iLNk0vngVhWPohA`DDn*S{ABj zfaVilwmaRH$@C5t_~MYBf~Ib#WopV=(j3zHWMkbebB0UO(9LoPO+27M12l}?webmy zSq%FuL@ncjPqw%rMb!kxCmZaDL$ct_x@kv7vJU*+!8kE>Y42?2I|ReDAnqXT;9ngK z9`fd^EPs5aUSy^p($Hl-7wBLBOk;0t_Pa%}Zf(}_wp=Q}G^X-WR&t+{GF+IHUk;gx zx?$3_dbc=vsk8Y4>M1`R(oH~Fz6Ei41$xOH1vM*>blG&xbH1Fgq>1>zx8{smad2&9 zk(oncF*7nZH&GlEWoucKBp}=tS#$!Oe)&xynVAqq*wf^J9KD*}d$DkkR_GZ?{ajPr z*g;u7=ARx09mv&VtrJSxR*-WRq({26r?SUG)D4R9SK4&*s${@gc~|x=f+uO}3ecP+ z;}YI%{$>o$k_ba-9Y8R>}TBaDZ%JQ59#g6?;(?{}se=L#pVZYfhE}Z;5;RnHs3v zO>$2ECL71}uBw8ro{YLm@DnlYyc)KRg0j;36AWm%C$P4% z{}#4x-LWoo+4=Ma--xKI^RW`R?{w{9U0viV05|H7Fs}(OR?pmnVTi1vje!Z#GFiH{ z`u(E@qeu0(>V$e%uL0edH~9zubS&wJq+nk+{2IL~uuw0c*hp7o-8Vn{5|uYyHZ-bCf>bJpW?XGJAc;wSn;Bu*?IG|?)#Ze$2kEHA`;$Z6Q7Ez(= zN3qw9gZbxGOU>1b6iK$$heNmB5PgTjTeD&B&_Jic*6n4AdA7d zcJiI%9{n=~A&^X18*1-wrXe1IZvzUT5xn}y$Fi_K0U>mU5PBkXjc1{$o(1lA>Fe-MHR-5%UoGq%yhz_a;o z#$&#lf#h|};b84WU3@nqsC(N&SI^j0fN6MlL8JVoMgXR2KMIRJ4n0en}#S>7~p0YDxNpQG&7-5oSxOOTW|Gym%47P zcJ-_!gYHB_*Ztx5|FtfWi|JEy?(0(QE1B;-2e=t{&W8;*eWjTJNUjIzt(ST1E7qJlOuBjIYC3` zVxU0I)0{8}bTESCheNc7twDp%fSWNtG({W~9`AQ?7H}0FayJ+{;5_7=GL*v^^1o#; z%n!6X_y2xu6K#ppf7lkevyp>vbG;>l?s=V>!p1LQo{Ca6Hp zb8aH^@oiA*#Iem&&>d6jOBgU1q_hHsp+I;36KPcZcag^XP?LWnjc}v+yBGgK8hgS2 zMj9BKejWh;(N$Pi{lLS>!cK?Ai#scmI{~gIDb^!vkQ9~+Nt@E7m3n240(!bUlZtZ2yU#m z?G!Ayu?4=Uf2~65X3|`*O`IJ*mdXu+fQq0C!RR6obEG;^5G>MXVZ#n;aWm`UBaPu9 z){g>dxP(5NXDZ!ttPH&Qk_~eNi7N+a#<0h8Y$tkyW~e7yU4r55pf}acxt0$t(7P8m z;VAqV27g)NzOFd@2w0Z1KF-;G>4S;q856@0hrKKAAyV4w93!kVJnq~UGGJvaP}Tlk zme5>_ok6>dfg%R?!Kbk{8K&&8Xr$22)qv{~qAPD}sz0>9L|E%>h{qly;`6vaI^&pX*r&*I>vOy%|8wnB8N$ z`VdevCWp>R6Yx@dc*3A6TjGEc^P{i@#zI!jjIU-iijjo0%SC>*xbY2Qr;JxRSzF&Qzh>Zv^`6?Jpu z+>CXX-PVl-naZ59pa^<+gC2 zq`a^sbY}W*opIOL6={Y0R;Qf5SCn&RWbE~B_uK;gSAxozRKq8k%A4hXhq~)35@R9Kgnd%b$p2Z*`B2pnAIIhagcG}rYdZ9g1#7mii_01Z; zaC<8Q$EoQVK3JDbnOZ#bQFt-nwTA6;GypI9st?_xX`EmkPaGsw;ssEXgOVHw;z*6r z?b-ywSMl=2WQDBxDTvW(-)ZrQqv~iH?t+hf#R_l=uq-4)sddj`7ecR;RT=A84e^}P zI2pRkxI3#234YE2E1y}tnqSybu~u2z39%zim~v%L5-5@}Wh_LuyO7C*+*aUvyVMsW zOr-kKiFpR~yoE}DwU?j37vuvI-7giAO((ag+=rMlCEfWc3*zby$^2e8V7W=&kIE71 zmTa&&IOKf0fKp?1BJBnjniVsDYC!5?V;bH;125#zt7m-8hzY|CNKNP2J}k~Tp>{^2 zFIjFqliEV(v6}7Yr!(WUHpRWV-v;?1*idDUAX{8OD{7sJ9g?!UI6rRsE9l-DueZ_Q z=QZVV^rPFFeQl$t_fqs#n3L)yv|EI~|Nd1c1p{fjyC=LBy~V+Mfu;xT#DG*vz4lz@ z2}hTR{@CNADA8h_jue8Q=VKw*>}0qyf^hQW)u|`?9~W4@rZSSy0NBTIdK-PY5&u1C z{xihwCen*d-Ua-C8TY&X{oszQPR4^X6iIiE$VZmE(!37h6jM$;ID|%gzN=Q|_{VD& zh-_FAtNcMfPUJnYfU<9W0Hl2(hOFVT0Ua{*PZkI7a-8axW#{F4sZrvHnBKZ38Nx zK5J5}t^20O+ogg(BAzgW!HD@ye$3V{xQ}4i6iF0?NU$gvq2u#pKrckYYd%DYCu`3p z&IYyhd8ypoPf?bT1~j>R26#IKa`onWh@h1Xg_!r_#6T6d_eBVqpzVP{tuKRyOsfSG zdQP_}Q~E_zm%-j<91h$&(QM?rEoM&hWh`;*#32UtfG7CXx5;?O$;lhW?S>-P2;`{; z<_UAJl2B#5FItANZbY^0HwL_w+jov+C@GRq$xP!rpDIX&@6wRx9ex03itDrE7C7Wz zoreYwh3DE2yq9k8MeJfE2u&$bFkB<4&OatnOHa+YLiC>*J{7CYcX9mUtvBkBfso(U zS0`$ZSN4&f>MH#XjXM11rAALC-KNCE-=b@-!~0YH{WBEvQXgs2Zrc5#i=q>Lw9G%h zkc25lmx_IiKh#VK-qqnrr_Nk5n9%op_IX~a_j?z&K!PreICE)R>5+ByTU(7_>Ud@k zE=cDkIx^N{-JvgVH_gK`jucKpLVkXWG>;W#*DL?Hrgj;ViMVjeKA9OdCLxTwbf$1B z?zQI;p7dpL_kfiQvy=p=4v~2CWnlLk;sYoVjKf5sl~9Ds(lbY-LEhr?B;f~_9_e7h zu~GtI@gMEas05L5IEVson^%x61%$%OP>g^jt{O>vcgQKFv-`L%Oz$9zw8D|KuDoR&`( z!6ou1CR2&EXqTC6T48%wNj@25p5Q=$r_~^tY)kQcdSj?SJ(YZI24%{ot6`I?XW(?7 zWJ)EtBZ3S{La}FP)mS)(N;5Q1VcNS5QEK?fR= zPnRuSIJDvXWD^4Q6_w_jpO#SxKQ z8g#^?KZ0=y3glzSDT+ytd?=fc8RzZ?it9q$+)yElDflFcoUX+?Tt<;w#z%{AbBD~* zO7L|wL!dTOT0^Y=O=jkLWzruA!K)ToTC(x6_)MIy`Or*S7@p5I_KjrT!DUkhP`hgx zt2LQ6D^bc&VLsd77}&~66Ld3rEON|zazr-ph7T?G1d}A^m<@gl=J{m6rZbgHVCM>Q zBY-&w+h49W3#^;tp+PdzIOr0T7a5sf%E>t|o3jic1DX8z5&R?%ndDdyF_Jq_6D*F* z4~cM;)xh0y%g^;KNHI@|qoteh^1X5Jq~-WhSzNYmVe<-PQY}>j;SFzP6hLAkz7{%) zgIi>a3#(~Is6`zs6wR}K7iZyux_b8L;@%bHQwx}oPcfNC3B&K1&i4F_(`!POG}8*K z*CUD^7C0Y8fV2`%(OdOdpeuJYQqxXdnYPS$OFLDfNUjhl{-9eFGm^kU`+cI3XCr;8 zEpnYdm;CT8cpe%5z_$b^vy&HQKrYx{UcgLpEVQn<{3?<>B3m~6qG;5kteIA}uO|3Y zWQi%^RDuT`_R$YNT|!bRudpoNS3?Bw2Cy1A%dXI;{|j&6)uF-uJN+nt#M61aY!5wm z-{^+8F^_t@sSE%mfKf4n&NB|%l5rx$e zosbxM^-f;(YY=~W;zh6Al~3)w2lJ=rod7P%{@$Ks>eT{0jHu4)m_k0TxR0&nCqJ=O zaldb|&ik1mD&USNc1sx>b#+(^Ue!jlcY=-uVT+6KG7* zxK^v~B~;X8>BkygWn+^41oRI|6y-`4(OavUfh~^YblOHDjCpO%_0XHAF*p3XmN&$WP5y$YjBfJ{ zapQ@4>TyE%(1y5if8APaY^>W0XlN+5SqHUy-$71qh8S}yg(*V70_Cn?mr_vAa&*sc zaYLzoL)^gj+zs#Hhd&kh;>P?B@scUOm)2DyOZ-!;(7RF+N&)N^k5_p*f44Rv*{0^E&Qd69GXyD`?|L;L540)>Y|oCiXkhc7uJqgli8 ze=kdz-6Q=3u0<4=CNEM@JX{9EFy=-ZfD0vSBYybNM(@#Tc|Otr)QoPx-2n9_ID@G% zqY&WI8W6)s89!q)>b^D%%iv#B?d%q6x8YU-?uODtgAFh)8O556iDr!B_f5VB^Oq%y zbCQ)CNJHC>3#b{NgfXrLx4*^QMq&n*yKk?__pYtoUbeXfIym(?pbHv1^})FVadYau We7o?^sW)pk&}yDFwYz%H)@^UHy?mqa z?%`C009n_>#D}jm^fPMKISZ2I9utdQD@q)TI)6O#jmHO zQTkROcgDWfhah`u_^3UgfQ;M#nM%k-A9aKY4$-#)bHmBV;BcgicxX~`ih?CLij)aN z9>X1!n2Ig3^NJw_Rbu+)zY-Kzu=t_GdTVG~ zX4OVSk2~m!cTZ}Y4i)@iSXtW5ihU@SUaUYGle{|&K`6#B`);j37;e$yNg~^QZ!r|U z;jykL`H);`kK@g3gi0JP_n|LQkMH5$cnLqTG-{h?ze$AZ#V~p+xnwDxp~i7@{6|R$ zi2#P}zN|b!msBcAe*oitn06jfWlElA+shB_QoHQyXs=T|FTPUVN1E-z?KYO|-7Mqn zO}lySyg9DtSfP2sNN@uUT~YJFOgV*F!OqKK5Mlo^utQy(c8DaTi;`T zYZxf*@TO9$cy)-|wx`}sr&FWmqU#INzWvD-wP#|Zr^?nsYZfBDY>x;PG1xPKrqWof zX=q5eTWZU5(S1r*BZJaCCiAmhh;}N2=@^I@SbR=5wypY{Va90DoBk|B9g}IzXR(`2 z$lAMU$D?!wKsxdzBFu>5lJ@ew6IM9wdG;c$;OHfr;B*mVbR~WiclBX$)Uk~`IQrw| zVTlZzBNr$u$mBUb3-+jrspVCGRA$~WQFz0=4rv>%HmlS*~)Zt(=~enLVAn+3VT)x#TQuR z(M(yU%3YjpMZqcv(SBY~wckh{Q*G>_$CqqePUCa*^*sRPKhFZwb)RZ8aMrrwiwtUV z0FW?01t?os5|lj}S^SOt^e`9<2A_*SB0#dtLcmVSMscG71Jlg?@2#`o0`WU`!5~^> zZF7I97l0XiNwTE^6$lev8;;`dcbkvq{L(Uinuhu?iV7u06%xT}UKQSaCO!=JhM`|A zK`GFE({kSaz${-_UL?DQb)Fi;bKwsPLVnLx<3oTQiG*B0CB@~cgw=1fz=^`_rP>K2%i?*_mu%>j`x7!#vnkPHGns-~+`bE>zXaH=uWpuhm+m@- z3Z7^Vyteu}?cdg0kstgvmJ6EwZPdeAL+nu8<@M#1Tq^F*t=(?iLye74q82I1wD?$U z#{SHe(loj6-*iCI#OB~yn^Yo0VHpm4`CDcSqQJwizH_0huDNQs>I?l|-s{r>29D+u7w;=b_Mr7G>O;N8n zi{YB>52?Wvlr$U(`8%ScvXmogeZi9fHiyjLK9sz$y0%PFJ&Bi540!kWo$_N}zn zY=UYF2kQ?vrTghh9L!4WJc7(@+7o-hcp_@bwj%Vw zMTjz;LSt-xc*ubqDUGh*^g=$zq53_cY=MaQ=tm^zeUdESSWo5eX;7Bud==5Nb`Jo2 zHhXyj6OHcZLKkWN-IK{(OB^3fPz_zt}|eK`K`it5M`Zy7OSGs@RJE=y0R*;G7(u@%N7p? zKZgG~Ls~D~urYjUtejOshL~ata8**$dDThYdTd=s@T$i4J`zJ~bGKZJw9dZmQZGzf z7!;qzC*5D(rPf*GY`2(Qv;%{@!aCKp)j8XGOl(ZCQsdLH)VYRFgb)oHT0YQYrdk%3 zSaDayH=H-Qfn&M}4lg?iTI*hVIGIcuF2C)Wsx`Y~p?JVr=`2HxE3ocbCN_V&-0}Ek ze3}}wJSMo;dG$2Pv~^?S+%Ku^cIgERG1~n511b0UvOLiFlKD~hO6$8=fk3X@XXmC@ z{lBKp1Dj)?eu?=t@cYL(0dn>Uqze=Xf8u&IJd2_#F}9@2pwJN4+67Ox52NOV;=9bY zPs>XZ@Fj%->hrEG`J}#QU1)mkd&q09tIuvx zBeh8)iPEF{$|lLY70pCQK-rpt6siP-!n?fW=RRlP8_!NMefou5oUq*_&_0Y4z;`(S zJfh^{wnd%Vray~`jC-~#(i}{X@nv}s(IP^OvV91iKjH)7t|sM4OE@c4Lm7wf{gmNv zGbLB;VjWoxwr4uITBey6&dIOYzcgeVQ|e`bO7>vz+cEeL)V+$*Ud%if>RS8hEZ=gZ zUKx{N1>wtf`)Cjub>D)4;3x$|VjRNvsIK(w0j5up2^)Db^&){U`yzr)VMmSl8jy|q z;)hQ~Kt}!h(?~s18LD$0!gRX@t3VPy!3I-fX*N)uxySZ@Fm4T{n-4FDhkt|5x{A`R zjU(E-CAvX!6%0Ln)>-bMf#hVa7WnMOeMIJh-!m6B_azE_r(Nnj^1tUD-Ji{q4ZP~L6#?$hr%qv@O3*1yJ$jxM(s@EI}hBR>KRw{E-v z4$*{+m=N3U{Ijf?dz$pK6f}nALKi>%IqAYI#^=OA77qE~cHzu@xQZ?khw<~L7N9Y^rFR%?zcr&=_ld(#Bzip&$rt>a;L&j|p zmTg3vYXQC^4Pr~;-K0iS#knr%4J!SBgFEHxKx6XJbTbzapZeiICxtjs#GR z_F?dKg-49Sg;5Ot6~4JpRc=JUT{eIjE%K9&346u(Vg8jvNl2y_`QCy`b$d+hYE1oA zOtmyR76X1T@1MFF74!|Aqekluf#B}=Fq~jw4|yPk&9UVQRuH(>czfJjrd_I-e6J*Z zHh~8_I)2$Fel;t8y*++;RI6_#$Yze*;BDx3Mr^+tEz_(|Mi$e(Ri6w!S^=br&|Ag( zgD&D*F1U=uoA$)p)x_HNvf>CV**J+)-J4f0MK>}DVei7jlPp)_{#%3qDhw7kNtN_XmCjC; zsRHCVQwXC|Pz-5WbU_CDN#71plng#^p2wIENP8`tqJ25^eG$fo!4G-UjHA=Ps#%#z z`B9X*JP$LC{3a?fn3CuL#YHAX8)c_EXQ!J$lf^I=OHz*f!r+#9!Ow#sw%5`ypM;Dk zx7Qt>FFHb1Ixib1$ns^f zba^1m7@bGKcPdRZ&phOt7jt5Z0C#0TWELEE?J{WSd{;PJ5)F$m$(9;|fo0-ad!=6O zW~xZ#4f2MD5<>1Kfd!KyXBqP6qj{UJL8L~`Z5;qFI(}%M%;q|yD-_eJma=UpWwIg( zc9kMbc5^f$-jiTq6=pe>DRAxpUsr;zvI}oI3UAj6|6UiaMdvR^f$%yVn1#c;)w9pv zAR>E{vIygR7MO5b=XX363msLZtf-LX~GoPzx2iIvc)&;`Ace8qz0C~*CF{x zu;)m4=Nh{mB~`;t#%Dp)?_IRFB*^GU#KM?1dE~AjTdHJQs^V9wrcpY?4dz`hrEe@| z$1(^hKIkd|m!YFyANi1C87^H*K!|`=fZ|dZBE6omFh@YJ>W4lqIXc%`pp z8pi}3Atp4-)%mU(goK@Pd599a10V9<66=_f8~}_j z0#pcRsXAEkZDmDN7w7HgcV*Mp_k(_WS9e(vg47HCpg?m)Qb$+7+;+uoRC=zXMSdqx zcvFhw&ms0grQSh-C3$Nl)N92ZYB?~q{W%#At9=9fs*cwHA4hVj<4jK9n*H>eE=TNi zGCc<-nUkV^N49>?wEnXx5h^=D!jyd8l4!n~R?NcJk!cIxiVK&kczes)QO;04(wgUrlUFQ4qu~jDZbygJ7Z^4- zf*MlbO{KKxcWfiegy)t?Ll|QdpKQ}x!faP=0!_(^w%OWFDepgs8b(tQksU(FR*8=X zIfn(9u~#GISa5kLL((QZ#IcY&C!g^g#7vQGxnd>#JKnm9d~Z333Qc?>3$VF@aJK#+ zwk>E-%!{1f20N#>EC@0PR?3;7RNb%5C$~)yTFgk{N_44wR*bcGhgnLOFo)UajuiYs z6j{!KT!`Dmdy76hz!L9*PBb7+x#@R~v+_1N3VwHBnL3MqciKB1 z`3imD%!DPu>1`&4kcq-caqy*`9M}t0^j9t?!;P%cn#h7U@^!kiiKy_xk-m^b?>byS z{JF!#XLA&!4|2DUDlRX}!kW5K%0$xFbAjYY#9pRV$`8fzqNISh3v-Mm9ORYF8i}r8 zjA656t|8=I3mJ&n;hM|JG-VQ^aIRDAfXj2qavBb^Jxf0Ir)SB@L4sFS64M~R;_*I3?Lw7hFv8e_1i(sXg> zbSpOYaH8Vp^X@kIkQQi)xo9Y0lB8;~{|R`RLzNr_>YZ#{3{YI&)Y~=#?aA>FA?inR zY6o*>`yFd3L%{Dw;i#*GKdwVQwSIL@OVG_qZmDWk&zRr9JnU zire8L!em;i+6Y+Gi{7tSz03B#z4305REY=C5=U2YsuUs=U=)~a?S%U#xedhu8a;~$ zk8!_lH*`-%1IYxhwpQ%LYjYct7a{{*hg5pU+WEN{yheh`A38i-IlcJr!vXw6DKo+oN#cB!?d zd4D6?Vv>%I^OQIEj31cd-$-Q1OT58$+=_+Y^W#HIJWF|u|71AUk2}L5J?B@^bvsyV zW!hfgqoCfK)-O%Wg9Y40Bl3S%IqQ<-MnU4dbZ`1(aFsV(bs)#Fr^1F)^YJ##?y{9q zpMkvi?)9a^;`}LV4ZPZc|jyS(mV{?l{^YcNZ%OTdcu6%0FsZ_ znrO`fc;H?FnjF=p665_f2bp>18~E6lxVDw? ziwE?CxDiYmJdNpm!$=?M4ow^g%v#$S1(8Pa{}h~R3z)7y(-}EC3-aa)JWn{xOfqc1 z56ODQJ{-NnwL3u+J;&D&Qcal>fv7yxC9?~yBiY4AbKqlUl8=B&T--%;$mZ=k#%C{q(x2b7RL`GN_DPagx~2{NVpYHY zNe{=9@lNmC4^cVieh#?kg_GcyFZEs;?=Nu*RbKw*sdBFs^*$j3;(1A&=`*UnWkg*@ zA-`HZ41KcdPil7Y&Ru^~`lI*7Mmf{%!I*E@>f7RxIbb+rNcq zFoBO7NqQNU)n*7^w#~#m^VTRz@cwg|T)GleD3CF8C+n_>lkZ9RdotJE!0r9(!kGl7 z-U(0D(eS*F5w`&`w_l^2PYJZ%#d?r)VPH|Z37*zqp`<-BOBi!AwB@&#t?}=}ZTNZ6 zOUlP$o3A+u#CrJ}I_2WtWmbh#J(ZdgI%&hiz=RoIbNp$(^V#he=JQX?<+G2^x*}rj z7qp>xsT9E$2-alv&nat4jMzE$7ON@>IF6EWYWYV{-}YICq?kHq!juiWM;Alxa9)B& z4<}6Y1s0A)YfaD2Gc#*3va*6DC5c$sn7CLz5b?3CiAqR3=bvF+|ETm_y1ZCN@6lr; z6SIQTiL&Oq=AHlB{fww14=xqj%hjq&y}C0~ScMQyaIGXXu!L zNwkQ8rCtd*g8P2;j>UWtELYG5=aW{gr%V(X;VKMWRMRIiWtPUGf>+;IPZd1QU3T7R za{AQCWoB8X*+m2`knjzF3>jO5EKF2$Q5v z`rWXzImS%PQ&8)3@of1nd6PT|2!ue9n^A=3lI#G(;-4vG8xVf7*uC8rHCG&^xr zDtPC&^P%^zPZwq$f_g-?mf+Yj`ApVHU`pK0ox%Nt&m&f;hAMn=0Qm^>@A;kGJC3#Wg7 zo7Ev|z~8i(`6*eRUT`r0LhIA#^-e$`7%{MvZW-rB{C%hR@@@iotz^c^elGqw;u%F4 z!H=cn>#~;w#otN!o?lGXY{^63pjEbo-dZ$=<~&L`uB6!hEcm606Ha+Y^zDrcRFfy`p+lQCoZ}1zUav}1XS8yG|U=r`U|H{|0x-Z!aO{HKXRl*coO|802^|5+aMKg&z|&+>Y6{%_0U zc9^waRR2FMk3|JavE+>Sk~4GIa>M+%NQ;b0L-^^&*Q)@!YEgA&%xl(He&G?3egQ$G zAf|sx2lqrrrDtTCh(p-maiGFPIMPNutGuGpTwDx8j>Td^%c@#h!_h4H4GqOMZ{PPi zpuwG8g=9#v=Dx`(Lp0YAHh~Glmo~jtuD|)=<3Ro*(=HP}dCKbgvB9S=XJ5|-N%!{f z@j*RDC%;wC|KiRFDi3WMu=g33QjT^<8a6O69vxJiT2t{56_n3*&<9&Gl8BH?aGk|s zNK(0FoM@QWV}RKPul+4y^uOe+#0!> z)x@U~YarzKVLaIujPELmxG%dM9I9RkbS~0<4qM3~Dv$U-EYG#V-Os|)*~HT+yplz$ zok@$4@*~01$@V7g4oZ$a$630gPkMqq%Bzzd-}fU66k}Pn{lwVp^blT$7HzFgoiz@u zTl`IsJaGDBol4t~G~4X|%krK%?4$?!>2AM<;K9%!Z0A4AYnsVQ4)pgr`6w5V4s-i% zP7q|7by(;7pXDXakUYTcUgV1F@-JQloW~t4y%=HfUMKt?%R9^`x=ycHf6>9P)T@ss zIZyJJcxA92!5l%0qcnGYMLlOkd3rGD!s3UVi{W>q?ssh9MefFl3DXb6e9m_*cus|K zkLMQqllCM)iI#WM`jPT5gEkkzu#(oxA#`7wfuX}c%d>L8fDGK%xIkthRY1HAs}Bm? z{6dA5hfIrNTPAgOD+A0y?@*Dy%X_p&NO*Wq3fG;o=}Y^6Sl-Tmmbd)R@}$^g|5=_p z??1~+JF0SSsX9^xI>ubdh@Po&|HpWZ>yGvB81L3Ly!~f+4bupxI?jk=L?JZm3XeK~ z?D+ZrFy5Q-{}^vlMfNbwOy_?XPq@6o<{#tb6u5V*FTQ!w=(=q#0?7JL>}Lkc7E zu<3r4t-lNVnyvkSBb-RkA?AhaTcSpSlAV}4y{4)Z@3$l8sElqgcZY3Qdm%Ks zSwHW1xH=bY5fvcPKehxa6Vd9GYRaw=QlQ(n8Avp6yw)OD_pWC-B{0`KyW;HKA_-d7 zxBGdz_TofrmBKeCA3uLVj2SNc-s78>|H=!jO|yCtEc5-$05iljn$K}cC?uTsL0kgP zhq?-{ZwiEjWG@k~HyBjRr=0%4(XRPFNAUps-Z(G9tQ7YM>O9)sVDC7r>bJ`62X2in zK3_@@_}<%5H_H8Zh#9v);Dq6Q)5GPBe`Mt+2*AMm;+M@~k`vf7O^KV{>Xwo;6b@!@bW8B6tk+WW2Fy zd2vzYHlL6-1_rdDl=MXUANQj1`%RGU2@B}YN(VASG9meC3&~3g^jXqFfG80v3)C1X zlD#&jedduc_+%e{r0*W>KVab>O;Kp@M5>rnqos@3m)X%EEfaAqdVKmUaYrD*PrL-N zM3*l4s#5TuaoNgS%lsUhzhnL;3n$mT_gP^UOzRVkCZ4L&`Q184R67lOQ3a!u>(ndu zTC8Lea4b*pTP$PzVcfxK+~>F-QFI?wC@@uR*e06*oi)%fcaJls6BB4quPXgJz$mpj zA5zfXn)cB5L}y=irG5Ufnp{%`or5ig@(Dll4L=4C-;BJT@ogE{UjDu3`06nH*lV>K z1%_1-@j8>lM&-$`{Nxj(g?*_G=Q`DxkYAloFl>qZ%ttic$(wiF(n=Km!ij2pE#zCN z%gO+&Z8Hp@(NeelXuTjzsj%*s<;7e^!|!NRy*Vc<)hhdhkyy+LTR#-%MT@``>Xe!t z6RBzJrDlU42#e1%mLeu4a9=$ZHlEB$wzW^(cLu#V_<&DI)*dO=+uhET|AAf9%m1^I zv`+En&w`ci18rBgLMPKjR;ixhQq>)!~yEi5pT$4oeSu>svP8uE`z3%Jse8&@j}^(mFGc2G$9i}?MjB9FD801n4Cgg z@~c*yg$@*(Z+;C*72|hJ~e?kQVVaI?XeNQ$TEbkJyx&k3o0o1ApnU{{SVmEwr zeW6Ng2v~%R{|MXmk?A!c9LE-spJpvwVF6+{rU~ydM221Wfyfc((Nac(G7XV0v!*?B z9zy$M6=fRvg51+_RsNq(h;D|JUr2zD|qx<+ziYc%-8_n!+f0Lr*y@6ry$XSp;J43$W5pJ)R|W-fKS$P zvk6tU@1z_*^XmHj;XFa=KdPg6n7Bei!=-3PU4C#(m(^y8RM0|4-kM z<5RDuaX;$GH<2LZjw=J}o?hzBVO*Yx*FyF3A*|Oy`A%pDM;~1nY9}<=7HEc?{dgzj ze?kP42(KbZEPDgh?YJP;q2H6=OmIHleN}Y83|5$=pUD zuSoHEI{ZshsmG8(9r&he{*%5qJR-*e3nC?FJn`=Is}bG57bC-_*YlYxJ|^Era`QWN z{4e)V^np_HV1|WHQbdx#RbCfw)^A!UxwxSDiu0Ns_*T_oWEiCQ*_f;nZLVOz^vV#2 zhjBbxdGS#>z$w)aBL$i`089^pg|YWI`q9zGOjsnnU!Q@uDUT(dm1cWZEX%nWOk5H7yAR611MZiO z8#Im^_K6#{k4uF>{v6QtDaGik`3W8RmbZb@q47@-xR2#ysb>9@4=hFYVuSTw9vCL< z`y?D@B^=wkycP~!HKty^N>G`zX@WsY;j#YhzAZ?|*AX-O$fxgr#RklR?x2$he3M|= zNkknFAiPZl0~b@VCsZ)klMq?ZyKZv-4SxwiRnR~VM zztLY=W>>bLD#Nm?FKI0P2kiWOU)C-=-bI<{31_k>roV0kCCMZU|AOT&!0PN7Sd>J@ zsN`E2QiU7Ayjx%g`n-ObyexRmoyN>M!yJB|xVm9#Jzkd3jvPL0MpOq=;yD0Au*~<# z#H0Bv4&-K!#4!W;ktS*S-Y*%G3XVGpPS*;~t_#kq^2TK1=+T9d!=SLVoF^SQLz$SX zL+<5vaRIkzaIef=WcZ2$?T@%L|wb9XWM#?vGVBdZQ9azY^)364}lY$#q9|Y!RxnDC#GN zTf4$+NwDM3l3Q)vx`Kxia08Qzq03Ylia(Zt1CAypj zKa*+ZLGS$<-d6+83W--)wFftZ`#0nU$JndN{I55u*^K|5cf9JL*mTY4FxC`v72$TR z$k=Z9h!v>|l_8ylLz3=(*{W40%!hVW@I%XqHFI89r3RoX3wEHtM>*hQr_X zEZjhrjMSAh*A;~N4Xz>r>MfeAlkdBFH|l#A@x~V1=>@TBl!IF&Tq&A)yQjJG#4SSl72Ml$4}Z7f=z3W<8=F=9se8ssUjBaTYF0v74LaI?h=UZ*nQ%KC0h5Px zpjo-;U*6KH&HA$-TjIC%>%}a0L6QC-7K~v1zqtll6ll_s;op&!+mVyoaj4z~D-(KR zsO+PewQvO7=2#VO$;2gjm%*`{Tdk4A3g0b4au?bYoJ&BdR)OjWx_i5T zex~k0r|to>?vdQ?k=O!WpnFEMyC7DG&<0@5wk%kGR;o$uW9*uUmMN=XS~+4u&bCtz zyoOrFle)GmbTy^jy!!4VLoMb7HUc;SVQ}jEo38i2MRjA}aJfqJum2VYP$WTF@!zvL zk3yNIyz-|NA-IU&t(}b^j!{V#YH^DiLR??|y?NV?HMvfP%xCych8IGE*LsNX_kKU# zhkD(A)Rj}@(~FPv>)?&&W6RZS7E@6Y`EYIYnF~^N7m9g=tPm-d}{T-xR+7z1R-<=*~EqPiZ#26zfnjRKQzqUXR1@^>}UlyomAv#;(XMX+vUdJxjO zrq7LfEdudcAn6fc-jFZ;bi(ZxfG@|Js85!PS&y9ZCtM~MXz&wZ>o~IOI50EU0W;mz zGw=AIm07yet1@_Bh(?DddIDs?78BqRV1dW=)1(X+23T{L!1JCfcN{VGd;WE@p9q~{ z_;OsW zZ#raPuA>Ecq^f*_;^*Pdv(G3MyA9yaak;1&B(<=S(+0t|hDlkVGE)=Ob>f2gxj61E z8CQt7D+V*Gw&*=DH*3ZJM4tv}U?N%?y1Zi|s#X7TXZW!;T)byV;!l8i&qR;bTwiG? zViHz>l}QvHu})5NJD83KuN)f*cnDP1pg@b1P0N(8xlxV64ufKWGA3UprtKKQN5c{W zWmMt-E|iE>{MgnhxAx)r1f>y5<>bF+#Rp^?C}v4`MxEp+>jX zN0CqjifEQB!5TMBrey+zoDGhiEF2Ws`*g2%LM}M8L8FJe{Ej zIK)vOG*+4ge)=?-!7QBO4q{3as|MaN=KRJ2y;aNy^_sGN`mJNJ@qFPWhsQ5$Q&z;%sXFWp6A{XUF7O-mhnuk~^7npjv+P~Zu?x4?8%=p;ns zXj~X$uW$oq+S;Z@HI-)SFLi?wRs5Fil|<3gFP{K+bdoKz47BebXbb3<<_VQQF)`HP zUZ|Q7aiAtgyfW_u?qV0N?>mq7zV^N%=(Yx{lI**XrTQ*@LO(gGvqWLE#>?^mE`@T= z34x2PEsfF4hvP-zWc%lb^OMF5>pn7BZBxNtyvyxk^PZmMeM!fe6(5z|lOPPrIDsFl z%76$bG9@xU6|H2jIB)d5kJ;7&OenOhuFPATmi~oMvcmHU%_O+9JT<`Du?l97yAqVCQd)GTAe)eg^T~)-hZ9fY} z5tj+hb@yKfe2We_I7y(_`6z_=TDYgt@v{TqNzCfA`7YCTF}rX4wuevPdBGEe}P)2%o9;Elq`Dm+{}isS`t-qA;qykI}Zk?J0j-^pIGXbrM#{PXu~ zN}1+waDdGXb07lrATiPUJ@|QHI@wfPC-E9|1N7aX=Xdd0+R&XGR1^Glpm1-|Pu?Go zUe{6qFl=DUY<1bJ&RQt>FWX+Ir(M%J{ST77xx{DG7x%}W^00uc{B1n^Ya4DFy~PyE z-d}X%>mfqTPi>#PYZS7uSy9>Zy%W2$NeCy0h%bo_>vDoa-!nW@evD?b6TCS$77MSi^{m&Yi0*{C9UAvcSrP=Kc;of$98+FU+xR~A1iNH6$_+0TFU!-z|rth1-xRek_W8HwdKOhv92F)*~Tzi~{j zUKona=VQDZl~V4GAERwSkm>2L0LU5_b$!p!?LpPZPObKZ#xNMjk+3qeySYplu_>l$ zt$Djiu*!V6b{ZSBUzjO+{RJadpd(iI?cF|&S+zp- z8m|?`@u{~)?Cno`3`&`s4Jgv3xFu=Pg~0?o(F%W*sKdAjyWQ*fEz=@N?!vC%ljdO; zWX0FwHlZQ)R9D>?e-k1=*HXp`b&5mR z=tM6eAOGSEqoS;h;qqeJF0fkE<%s)0?^qW`N3}d^ zHPs!pX>c!p6ipv<$YAXPDbjd|qpW;m>I^#b5P4Yh#ZWeHkfMzUpV9Nn{Ls4gl7%nJ zxZWEOHPKz`C%j(v&-i}Zh;KQ)&t)5PoDrv&Sh8vw!r-w3U-hLHlU(nIeh7)+h&>qc z6^MDLg5fh(EuaYtW;>+Q2C`nRA5|2+^drDuE?NwUU@7oz2=Bg-v1^iEI)2o!W=b8L zTDQ0msuU}D*#&}qp)2b+s^2*4dgjY;;(q6?hQJ$jVzTo#01NM>tnzIAqL654y$&}; zpf1LE8#di18q_RY>evFj&gb9Wf?Pk(xKE*D~yLH2bpqWh<&04;QI{_iY;9NRh7ES4)SRAL9IOaLNLgf!k3ge zcu&I}oC?zi9oxSP#;43yQ&u_0(={VK1-fC{vE4YB?&&pQ;qxr-{ov##{hY1o*UV;JX5&O-Cqc!!3ChoK<> zWTd2IL1OL^DXD2DdPq1Ki0Pm3B_^jAmy{}?`LaRPH3{TJWsOZLfS z?4q*T+Q`U)AH5$NH>}{!8K^EqhD`E^CS!hA%eqLG+HX>@IL zwx}LdUFE2HTsld@&43zS6r=T5?Cd5?|K}P{fONgjR-F1N zG!5T;*dn-?R{Z#|BuUaV4WCe&kGd=kzEqis=jmsgN#h9|R9fDuR5T4FD9?F;Gg^d1y?f5gmZ+g+&oSmD*R zC-Hc4`M53zTT7E(*1yCF0fZE@?Yj(!oFiL-FwEtqrr5=`z-HzAnD7Mj9K%O0+<&?G z8t6~@LQha|W@zpNQVtEY#&Mq!oYs30e6)RQgzn$yiMq&hF7CdaocMH4{F|okucM&Y zLe}w0a18q9hXmu&^y}S6z_d>$AcX%pn8G<&EXodS*2od`Q?uaDVO#vQ8%0pQz0$rG z1(>Fi%-{V&Ep_qV4hM}Z;U@?=c!aJ#udFVZM!L7bb>YF3{0kPkJ(Y_c)j>AL*-(~E zmA~Z&@zqC;M(D}(x^ijdXFVgb*&<0R<}k^@DYP08C4cSd#cS75WxnGus~7+qM0C!@ zpG0v`epVa#EP-qAjX#7CUN6!;;Ok8cDowc4bjaK)J`%nm-%q#sa|rQxQZxSUZUr@F zIHt9aa>%EbNoq{pt7R@#WfP11nmO_y3_-9ZO7Tck3|!ozFR)yclJHh7;q~V}`O~p7 zLGLlv=EoL~KCt(;+oFYlQ+bcV0BcdP%1Ie>*HDE?EVH7I6xA}bg$+u;Z;tOj*9ClR-bvg4x|KB5q~XEu@NafvgLL;te4J|yk3lwJF%_Z?n! zT*gcaF2)}9P*!~*CnO~mCU8i=+So?fh|s3Ytwcu>affBMfZuQ^m@BcXq^2xZafkD% z7amttskBz31DA!E_JxI-G(E^EDz!&6mfyVD1^o*HAF-`vzmU_K3*X)u2lR_l-D^02IA5!gPsFG^!=ocq{&>!0qy85rE7 z1l;1qbFaNrLOLW+wX9thj&|e5!w-HoA(LvJ+Y##tH=&xlH8r-gTs3E>g%!>HHV0x- z)faDe+i_}Vj>#wME9>F_b&@5=T^mUz)(n8@l>$lN?;$~63%kLk!LF^=&Fq)+t%njg zmw&5U@<%#S_xUWC8SbdAWW4$*x0!EwrXmMc#@l-OhoVvm@7@+TRjRe-MWpW<(}&w2 zktZcw)`1;9Ngv-ykx;PKv$G0+gwRR%f{q%4Rr5CC9MVxIuS)zs5d-*#3Eo7fnF4gt zox~i+U1S@LQTJ`Pa(X9xky}-VK7QR^vo_ttIzmpFr|X9iE}cC7O|ER^7zXuV4rU4v ziQ}f)Rx#-l=VTyKm7lVTUpK65AU7vgPo5ZDI)E_0V0zm1naBGYAoko`m%b6Dv5~UTY*cY2Xl_ zzZaihEvA~L_1O1K&Qg7W9kC6|j8YS#>Er4*Eh37}`6IBSus!q%H|o^t_v+)kEncG8 zTl>oJ^lrBdwY+?-L)i9O1m#=6%NvaUzu0;Uuc*Vm@Afw{#Lz=`cS<)nfYRU)O6!2q z-6;+s9YZtZ(2aDbbVvwNqM#rOf&$X0ym;Tw^PY3oI)BA=t+l^P z@XEbj|EB+sLBdDCQLI|eXWDkz5vio3ME9O8I^I+8<2n5M3z5stizPhKdM+K`uD^)R zwi6?P2&Hvba_e_e$=4tje9nduoCXnksocexv&+p$766Y1aeSoC4Pd+zY|Kf2Ra;nX zjO<9kX+PbF=(%GT5PqIq{^bW!`WMmCxDpy`qs?mZ-^CMLjd!5 zT}Hb7C)4N<*5%4$YGy{8nzP8hGy>8oF4~}bAYvX5f6OxTcZ0C76ZNkbJyWO( zF%nv`{HomV-To;8;3i0enSUH!t;{N)QEv)|HBOXRIMc5kD1HDnjDSQhet!se+3!G; zI;s?0eTmKYqC_QCU`m4>%~_lCh_=s+xr>};-8IqjYLth8~P7F0+>2L;syX1W`NTXZhvg_#KzRB)hv=i%>&^I zumP9`5MT>F9;53-f<@YmO1x!ii(d?zkdw0c*LhL?Mn>MzaQO+4mIoL*f zdte`?sd=SQezssT1)yee{FiBPf<(<_Tf%f#8?FdL55E@5l(?aQV7hdE$3TQuf|7;< zHRqFN4WL~b+(Ci=Bm$~?DRaYRXS9lT1G(S$%4Q5Nr6P9X`iF(B#%~E3*yk4Gc?6V; zhAN-SWN!kFv8lt40vY%y3+CiNNLIwE7ZXC?s_1^mr))ARon!(`!8|t)HAI*#YvYkq zc^f#78rM2dDw_=yL!Ti|eh=I6f^k!hj14GyN>qkP{V&6_2*~Zg-A?Q+ybJRSSlYdN!EaT+!I8q5YNBBbS#oahq0+x<7h#V>g)J&B88q3s|2R>$kjV7^! zfo0TqxMPkA`t(>LdTK;T(HXk*-W~ya9GL*Rke@#1XBpV%vV51mYy^`f2@?blfYxNH zRw}^RD6o}4c#T&1C0l9qr5tfFA-6nrl)P0;7Z7J&!oj8xgHE{xcnkzJY?zcL?HWe2 z8vpRrf`N*gbJ5CzO+rEtFxyQ~h0wBufl@sR^FBs-0t~dn;cz6BHV-hDHpr zwXqrbeX8QGD%TIHbvJh+&dP$!ftqvb**a;C<*E&jiUx9E5-^gZIM|I=DIWpLNOeHW zUb&1tSw8s@%m({q(!?U#~W9l!I;o zUVx(y{)x;)Z25FdwDKAdMu^KV*eo&!+VC_#45}9wY?k-59a;-f9wmtPEWRV(_RON~ zhD-y?0CU6f33h1DDm_MpVv=ZZXz43+NCv75fo8K{5Clu;@rgh{6dW835`mM-)FfT4 zda*A;*=4c5mmO%v&QyiYbcIfp+_rXU(TD2R)KO3LI)h2((yn(USIpWI8XLmaKn$WC zQ+DAG#*8AmTYU(nuH^iCc$C1j`BGxJzEz;|o$kJFVBos@wNB5VLeEHW&j@1+|7Q0a z!JceJQIcB|4^jVlyEBdx=t4C8m~)W*D)O0+l1%`YS+t||@QL`5UtvQ#dH^O9-#2cJ z<`{$%XPM9uxb-}mD*KS0~?oI<5nbfmvl=e?n&UX1iMqNUcm25#OthMHX~ z_dHUp8SpQD%Qin`E#hC4TcPzsHBepC#j(}N+Do)+m)}H6)VS5qf_k6`PfcgHt>l;KG3G`p zDj9E{ciJubO;DuwT0^o*G&O;{NwC7+>CT=o*+c|bd{T5B= zVzN>omMRnqr!r+I51AB+l86=>V2h_0hOrENzGu8GxM(S8v<)c6hFn!l5C=}rnNG|{ zcy}>*g9p=$il(4QMJT}1wLhQ{kXe7~HPIsvADdnZf3T!bA&I4(ajIz~thrGHH_6X+ zObU=6q07kcW{(nF(a#hr&gfdsR96uU{GQk}07K_y4qV1SqjN(-@?3G#*9-x65woJT zz+*Eq$xRz!c%3N80xKH`6xUH9_%?A=E#P|kE z&E+w3Mpp5CU{kl6`;P^0qHxSxVdN)O^=LIgJ{}QR7stgL-|wUfLLN_h=UtvJ1$Ygq z{h2sOC?pe|Diq2XT}J8$&89Xj-@F$NJ*aHC?GRWubf%L={z)Shn%U}sf{{ywwdi5| z@FBkEz- zYJXt5>+^|k-qXDgs>HWFYJFfZ(*IU^_8g`(s!_kIyxZf zW}em~&SpZVgw8W|T0c*h-+U>(PWVg5qNme@9M?=+{3gM_j)=g$(9)ao9PhsCSXK~| z>jgo7$n6dLOj2(GB@D%xk&75Hgwl!Cw0#yTp!(>)nQUW7fb4xg(!6~PYx;mz;C@ae zie2dd-?v)qM1e7yf#l!tZ?Ukp2xO)KbY(Tc-qmf!I*1RA_2~q&V5e^7gguR-8O`BD9=ivmU--0M8kM~ZsDCHeIyv)p(o~?SsvOq3+}0%KjB6|dUZ3oqpQcSL)>_B-+Pc~N^{j@iX(RZ=78@Yzw7Ai;nIhV z>4(5#*R7U7AG~hA^&p!V(hkY-jr^Y%_4qbzAG7@Tru)FQ{GXjG6Uq$i^_|%3$4B1i z_ICTyqvbc#CTZ>|A4VmC{9=EgFhttU%LGr@8)(;QZ4KW)wkDtZiud>nWC)DG9=VHQ zE8Vgnvw3I!3Bw}FFB85PyBePUtrT$oBJ^NE!HM*@Xm%G4-S4LrvIYl7S-IX zWT9XkK{<)%x1RR3WG{}|&%9PV zNfZHG_T>J?>60fbBiIv`pBL8X>YUqFQP$fKM~1b1)_f6q0?HouclWUew ztfm}{5jc7*dy+C4Jkorpj}7nPAmZY;w(&A>nRRs&ib@Rf(!MZp$nZ$x+Ffn zBf5)C-yq*D+uEz*xf8{-WW}V0p6Wg_#<{Y$GsYoaNnVju$00vfi}4^Qv`OEdcYdv+ z5)Z+r;_Ij+-%?LvRdS<>CFhz*p&!Z?h}O;sfAk$Wnkog5O5pRcxbUH!!H^(aY2B+Y z$PpAh6n|XcsZS9=eS@8$y8)0WgUa7jgagqvw}}q5E2TvFOc%3e`zan&Q^dK*>&F1i7}~ z$0Hw+sm$yYoxc4jN{&RPb=ptkr9wefF+{}y=SG;sGpsj?bkq^`A}%lV&vrZxyuo75 z%*CDuHtvo`hQ|a0gUPt&;Lu9QE!-RCBOw+W->mPJdIWhOR>f1|+`6$B{s1@=fr9!# zzZ)OizmCe?<-@trjxiXecdVTsrGOzCRGQf&;i?ZQ&|g%g9~n9H!79K=q3U75A01tq zA+sF~k7^A^K;+}%8e|>&Z>R1I5>t*b&uYVo_Yw0V5cX)@r>#qW3F@m}4udzvV9UWO z+M8D@Gec#nCv(aSY%vBpIBWpB!F_g3pLun5*K`97Zd`U9ya}!;UDl~f4npvXi?@i` zcHV-q5u=1#6uCS+RcahrComJ%Ksd$U7!}`ItxApy!Xbkt8n0N#S{WPYkdI5&NlX!_ zQTqrnc~uz>Q9y;mwDlhLYz*YG56eCvS$^b-KmHbSKTLQq!e*7(uS$K)Sh^ZtOJT%J z>|@-Ss^Lvd#(8zv=Dm6g5Bec#tSktui4DIQG%%pEwru|pt758c;QOaeq)a65rD_bO5bD(+sl|TdP=N}_UAYz5MklkZR#m=I@>TAb z2;Y30ohE!@SsTsmhElhl);t^}xU+s}5cSyNNlMyB^p9r!(NoVRo5wPCzMk6_rge_+ z_DC8i)aqnj>rSr^KLz5q1IHBGrSq%c0w(L#`N`iVbWhhUe%;$>?ZzPp!&g2nR z?YdEg7DbSX$Ri`kbM7K9ceA2%_M4t2$FZ)>f`JvL`H^6MEq^5#h?+z5$$#~{lML~X zBn&K)A40+KWR)A5i?26<-^e_|_f)uD28#yX*Jr_TMGl?&rVNS?rK>(1B*?yK+Qe1j zx{F~#0U~Sw5qvzHEXpHN1jbIJ$oKmCxkn`1{u3zlwPIu>Jm}3+mS4sAz2tnz=$q>& zMC!os&Cy|?TzX0;o3t{tI$oB+=d<9m`5q3#R}ko;lRb2RiYUBP^WHg7af^6*t@ zhk;1uXQi}ebK#n9DXAHy+Z>FsqndtfDm$;uyA%;BihD<~&n3B86Bj_R(M>e(fToNo z;=b9VBOEX>7n{4B63l0lm3hThq$;b=+)xbM-$<3jA}b`KB9zX?z|EiEAxoTp91f9X z{A-Rzk#hk)tS;12gR2@s%uedjZw=-8(@S_%)AA22C!u}W>h5u=$yI~MPPC)`^MZvu z+2e|?f>r%6h6gmf-wN@=F7zCC8i^$kSrpM<1fSJ;W2rMXoH9*xNE_ee`-ZJ3t1!G3 z0;QMGNL96n2E1iR2bppBRw?sW8)AwV9mIRnG9FRQVSc1noDuU%LF^fD{wLe{AJy;w zmkY|rwp6B{)&4iz*{grc1>yhUf+uG3huDwd^k#am-v6}XpB&7RMF@BY+;YKyAPNc+ z5E&^2kC$;&T6%_=0XXzl{L3ey;Cq^ySz1;uWdPxe%dZ0^g_Tq^xA+?f@Q~Km-6Fu& zfx$pYOni4jNb&2b>BqyhW3Nb=4c;s*Yh}mft*;k?->rOhGWxRf_1hW=F5|%gE^hCq zt&_^#TP}Dta`@*^oDBY_dRez{Fyb2?pD|zAN@S=whrYwMGmDD#4&J@nekbRx>Zev9 z3#4w3L->rUEhkc+;n;-m+{@$N`owBW8-e*xzw@RL9zn>Qa~tq1)QA;$$gnj4Ksy~~ z@_->6u6VfzdaK_gqQGffLrKI0k4jgYd7tC`+4~hKfRFp^ZMvh>BlgIX(mceq(cp3> z3PSXFxBcfv5+fxOws9|Py|dGXJx{kYuY-^LLgd4Ar^MV)3}?(tEt@J2RdU4-P`hu7 z^D@JesRF(3wr^omr7rt()(t;51Ou-XMdeS_3kW!-$Ei&OBHXhBuk!VK|EYejc=@KS z#C`~8kdeaJ;JBz?-xg|2SnZx)pMHJszmn8Zas-)h%tmjnTvo&0(r11^t)5EehY9$e zn}KQ$C!=?f)^nCU{UbJu2 z!1{U7@Vwuh3BwUNv9~+L&*7O=VE2AchwT*lP&ze-Gv??G9mruLC=S%v!5n64XZFGV zNvCYi13CHTcejKPxr1>iuiD9Rz9obh_t#peTyFu?c0SW*4a>C0R~b*A@>SD?XGT(J z7iNizf7_(6IDHm|5i^BV;if-w+AT{bv{eCT{B7ASS21wn0hRWd+2Jy8RyolPF`HQ0 z#D4&5-}|GBB;HO< z4X4cT`_3Sgx3=N6x5&On>s?#6qhaddhF2-TG_u~4@pRFc4w+B^Rs31$pvpvBk;e`k zP@LC02aj}dlI&l-Qzd%2lb4T+XDWI$OL=!qWmF)-b05mi#T@?d(b0S~tN!);ZHd#R z3B(G9)p<<&iYLTa@T5gW2mqo6NKQKOzd5%M+7qEv7h<>T{5kX$UbnM` zoF{^#)GKsw&K)mGeE(};$sQ1ZcxzPck z%zVr137)!2<B6QSAyf2*D|xmY8KTcg`=UfmegT8pfsk>KPJE2?`SdO7cbtna8*N$)+7-eUrHx94=i=~}76kI$IXzcz?@+v?E&T^q{f}0+^^@W&C zLg%fE-wp}n$i?D`)dgoiZC^vEM4pw4pXtCo?pI-Nf<@ln=g5!1|3==1LPEVCISDIP zzGMwerzZ-w3^y{#AKr=BPcc5rB)<%xM!*O9U?9>M01y7S#OJ+TJ&fx!NIXfrPWA|_ zdgbblnz7hOPc%qBt^BKLKRh$yeX(H?SmvJq2!mILCw$as+?)wqI>Ng# z*ML`w9gtM2ODz=p^>eLturjuJChp$ff#%A^?8qObM8i}_ErUQr9w4Fw)qPEB3+$-0 zbQA6x*bdT?D25!Y(97DoPRdyfPs-1*o=d9A`*x2Qtpj={x@XXD?Gr9tx>wBf{rBt6 z`FSOv^n)GfOrDRB325tkDeOXXVzG9U**1W$e28MS+!WF5z`KzC5oDH|;rXFx$s_bW)Am^{$uhjg)Voz4_8_5*MqXR?=g%-ufdjtgWGnjco0WbDQeq z1^egULwIxu{~n9S9Q5rS?L&HcwHov+xMx?y;tuZ}#nSfGvGhDT`W?Emz%1Er$T<>z zKJEPXSgP}9#wEOUU8DD`Nd{ElJ?(H*H?2x7k3CLy|NYActLsXVHAq@W(mbdzeyyUS zhdhkcP(+<=hyd-KAsp*ZLm|Nz-XEE~gWbK?-B(DYa8sqjIVisW{g>@jzyeir2BtU!b%+Fa@(~O^;uJdPpTX4kVjrcw*p_GSs4l7ZQJ_UPTgmrHEGh!uA@tI2L=xC_?+@A%csY~ps$=qf; z8|dPjWaAsY1tra)`j?@}*-`2NGB-wGU#+oN+H)p1`%rIo$S)4sZCmz<#e^9sFsoso zqJHl@Q~eGv`2TXjj~$7Ehbla55cEYb?qSfEY=2-L@W_txlOez7kdUpR_l6x3reWhI znb=)!b6M_w%LM^?G*}KzG>1>ZmSB+OyPNHQxDpy5<95tP&HMVfltIX2nSik&iIP?UJp(Ba-zJe6;` zAbq;3T>8D;G<+C1Ni<1>pZWlrrtg@*Y6{Sp+0i-LoT@*+k08~i(bIaHK?i<<#Bi-@ zBt0<8w2Sq>p&9^j+NIGv%K-7|nswUX(J9uTQAB~6_p<{7CgO`s>?F|0at+|EG`N?8 zkSsmG+fkNdh*hUEYi!)ib3XexfWyeqnR)XC^ou(K7Q{b?;coy}R@mTnWTr+C3Gicr z`6(Gu@)Zz+%H1&W0no`db$g3WTPJhJ1nr4YF5!R#^c`5F0dsZcJkSQ-n1{t;qn4T>p7%92ae#&(Y9(vG1niNK zZzyv=U(_w8faS3`=Kr`LbQ1FoQ?L>PA`Nn6LNVTqYvoJ^ z<~-O{tu0YHC5WoI1X4Umw;G}P1P~%^G*3`5-x_B18&+r!%YkyNjLxQP$v%?BoT*BE z-!d}#6)&M8#hL>HvlWYW=Bt?eC)=4*svTE4zylV(Dy2It=0MVVRw+w#5w7tT8hMs@ zBD1p=<@@RKYs1JOY;f3R>NW@@>cC}4SSEZ`%nvWK%~JO)&pyPU%;l-UT)^Y5!a7RY zqeB2+3=)s7pf*d3$#&=8EEf(c@Ny!{MpQVK5GEs%)95Ro2a!hZ(bdS6Uy1?`BhWk1 zm7KE4rCC7a5yFp|s=0KYO%T4EAdg)|Pc^6R0P$nu* zR<-#r;R&y*ow`b!oUG*p>Sp)SG&`g25Cn!h!6Y^bF>y8DH)|&7pAE{_!UUk%VqjJ+ z@LpH_{#yNytNJ}Bdk^bM8v&MwobV4hq`gn_2-CKL$$LHK5=Mm%Ra_Rt(GcC=obp zGE!)5zp6N|%6Z6@Z?9dd!_X0~&>><{%rNIpx)>g-(Xy9HK=?i4iGzO_VXa-MI%wI)o zMC>m|-4)kGq(cejqEF@o6-L_twar7KpzWzUk)K}$8W`MY3GT!pfTd8_1Fkm!As6`t#$_8%_kY3gTN$a|mwn0-cSpg4S9GgTxn+e#L4XP=M zIFAepeY13Mmc_sT&YrTRrFM>OpI`wza^p@~n39%;e84DC0a{+##jPT~ca#r!)%Bt* zhGHcpH&0yTefaQoOn{E1WXUtIeqI*2m{Ym4_O^qd>{=Of1FKOpfg4mRc{A9!TpmZA zMb1UrN*$`lmP-(q=VM`ml%%Nas&WR9C85%&Vmf$&}T~mxuV1 zxbz07gHE*W%*c^b01$tzDJZ(9{1?!sJC$M@%H{p4GNR>-u6|JQnbN`pbB|s2pyHP> zA*h|U9_%&bh_|m>nwp*IX{>(#&%=XlRs4amHuNEJ;+MmX}HlTfMZywq*JudbE zz|W5|i2xG?&dDbNH{2e!rfmc=J3hwvzG{hZ=b?!#8&Q5+@_CA36-$uF=F3c8k}^uw zss&Ory?omb?6b(iKBCMD{ovQ0+!bQj$ZgpcHzAuOOKz6`uQD-90}tgE3r%E{HO@*7vD_c2t@U*#XkI zboBMh^yR6%hTwT4a9Q1gWZhc%Q%~Fme30H+#h-QZ&IIQmmf<1Y46DITW=PL3T-RQ9 zWn5a@OV_RtSGoOl>00@u-m*?~EQnoUJ!I~PIb||rqAdzZME!`iCz-N3kF+7HQJ7 zY4r~$;z3qQ43c&SZ1ABH1ySHO#pug7Jq8hAPnE#&aaN(E4MX~rCd{By-wsXf`|P)) zk#tRJ-BJRu4|c1m_(=tV@W+cJZaGt7WFk`9W7$*%8>0cyPi>du+?M4YPA_^*Gtp08 zfeZQnrV}G=ZQb&-%M0#o&M^We)y=Ft@ZdaunGl$QBzuPa-}H#oPmaI$%4J1HYPT;3 zQ{=ku+>m-^9-8g|d!^3pUw;ZGAwwg!+dLJRQlz^R2732rF0$OjzmHlnG_jRfqS1jv!ERU9zA$9z=& zVMzLh(sSX5=|^Rp#HRXr=))MJLk08ZkkPRXmg2T97Ba?YM=}9$)Q@bT)!8+ILuDU~ z`|)VzXPy&A(s^=uX40DJ#-9|c^1b@Cg2+NEB! zaFlhHIK!m*;7%8qk1RvXHIU)1N^ah^r=AhsT~VbMgCba{ihHP!X8~CkFnn-qNj`+=l*N4i4v8UOfuXanOl3sEsTK{P>RVtTou)$zNwy+4jYIJT(Cp zV)k9O2*sdG!8>JMPkxAcM9t~uKP_Zu+Ax0;DaxM_6zNXN$XzXpxgbKG_}@)P>PV-Y z^G$gnM8w?>rTof2irc;kwPsDJ&aKv?y`s2`O#jdQjZ=5z}@j z<*VtOzsv;T9mQ!AcA~0d878ZPd4tOejh0?H(|lex(vqGgl2 zH;YJUu2MsIYK0yojWKtMyohZ+PKqgrj_^w4-eL8#T_I4CA&C}`(>$ArWO1u;mFk)KHFM$e7Ar+M&2)SOymIakCT8H7(uf}C zD029APiyknFiv|w<+XK*n;^`^CSuwLmy`SDLG`;&t%JiYp!zmHKVmn(rO4Aek_c>B zO2no4jQ44`=DvRq4vehlB{uv1nJik~X5!usVaadp z6;85Xi#ohu#d6xEHkzX-{i^o{y14RvY*Sn8%;Q3X054GHUs5Dx51olD7lU7v8MQU zNb~RDZex+n-|t6*AgV!mV#vJ}dO^7v51rdySL3q}Ub=F4Cd_!jf==xCZ(Wgt5d^f- zAuFz6RhX~6yqykG?&NUzh33qDo`EG(~I-QTU z%%-GIH^sZ(@c5kj-8}ZdFQtZx+$TJ!I?{EV+OyMpr?5DX`{^YS@gn@?l4Xf?-IqB- zbPsgm7eESP)2z?)?+F^i!4b+EguqlH+3r!OF_D8Wg1)mwl}6s=CR2=`1cN*O!h<}T zn0&eJ;6Uy`Ra9@dm{K(lFCws!Tp5aV?63dcuQn z28o6nHl~^}A}*9`Pk&4Zr9O;2TSA*`zlU;G@pQcz2d7+7D2#ni@LL~o+qPkKReJOH z`ivC{BwlAFT<{I)4Ab`(s5h6p5rN|&pe@gi0&om9aEpwMHLOk-AL=MkN6H!fPHTYI z84FObLuIMv8G3vqxl{Hj2v*MK_SkUPCY;fF%V5T{5@c5Jcd2FcJ(Mv_aUk=ZTkjv~ z_r_mKTN~iJMuhyI1MVABF0KVRi*^k^lU!*R;nrzi+Pe|R+z7&0xayN>e`v!Y8&F!Y z5KuozTOTwfuE+R92k5HbR*LFB4Sw^5sRF;h-!ZiY5mhyb#Zr4jDeK(F&W4kRVvGf} zg=Mz}w!OuyRHYw$O4ohU;y&W^t z@5~ z?3LD>wr{6V-I(BHArLbFreA^ME5pKx@`x{sv5}CI8C;>2d_1ee?vJgno(orQKo7GN zvA7O$*G8WR&G=}4+>bRz2R{T=?0}edq0w^F?6~KYpwmC1ktf%mU@t0FXqb*-Sh!H+ zDJx(Q0uC_C!nHN&!XYcOJZH_Hp*u3F9H9o0r$#91SCyrx#srI1?++0HE9z0TJ5S_G zLBDMcVt!0*l1q#$(A+Zs(aWOPQp#=yNkqs~VkAo`=rNjVO#@mhIqcKVWR+ze z8%ATMOU>mQ;QSvS#OSO~{P77N=JxW4-SY;~y&Jo4;wP5;#B!V5Vh%)!yYGn8T$CiT zI(6)usGdW$Qz}0PCLw&w!`q>C*A(4@Tfhd+PblZjpba}fv8hVL>>SHayn%M`JbE5p z)V?37&L}dT+GlKU93_`Qw{23vIhn>Tk-^PT10+x zDW^T`q+0Eql2??)*Hpau=5|VCrOjCSQw#-%C|IfOZ9&PeG73Yx25=D3!z9K^bu)9> zNyTOtx&v-%76yadkH(JTuDkllX%qRZYorw_t-IQR=EhrxO_h#e3x=N0j4PDim0h^l z8$|rCOZcCuzyHe&|36cIX)TqKSO3EdTW_~q-s%1?GlXGvdD5NW4{!6JivDq47t9nq zU?0h#sOXqz!&`rl1Oy^M3HZilW@VcifD_RLWT8)AVs4qCnj|ElpcVzrsAy~oG++s> zEx5&r&zk%C?W*#UJ3v^T-hs)fhgHu(j3c1XiRqjT2;ciK# z#B)a6jh~yO#oJqZx6JVRp5y`PPeLeD#~_Z9=^5(4VqEkCDw-_q^1BgS{eHZ-5JPE; z$fsIwh<;20TT|&o8Xs96qVpIvl_mOgQjxr9<{mz!_};YX08;5DxoPIUES4>7zC<%k zKo3?@Wl*70B9Q0_Uw;FZ^WQm%g*lY-bH(!@uuZj^&D>`7_a@p7%o;T&Xp~e&Fc3O3 zUpJ){F}$WIT;i`tb?iJbs%H)jV9o zBcaCoWtWEt=G*$YITX+OAT;FDFLhqX(r1h{BS_%ZZ-e*uJ-?PX{$BW^|8{GQIpO{S zic3Y>%J(l_Ddv$VU8H#+EJ|b1|DK-1C!K^u>SfFCR`WL>pGXX7Y=r*)r13eHuUxi} z&^u-ObNs^m!x(8Y2N{qo4r+i$uTfeZJ#%FK00&9*;ugvE`R96`I z?(u+XKd#==!{7YQ*i==S(x4{;2J>)nMVKbeC~l2v12eIpP~#{=mP_L}h0eA&t~#$- zvUH6--_9^Uyp`op;sj57=G zD;5QMfEqf^mbujXuF^#hvAk`5())))u&?w-!xS>V?TFQFu}7oS!!VDy<3>RTAHl@A z*HD&9ppcGCEIb_kfokq&KkKsMMo&1!Mc$yJ0Qt+Fgj>I`AC}Y*6`nsQt1DJm+?tTf*^%Ai$e?ZoRVMU86#{^?i3_G3Cv;Hl*t~GQ7oxiXc`A zG3S9JKU@~29>MVYCG5r1z-iP{bkf-+;@)4aa`CL)LI@0Qk*#gQcgl$eK#?yVr)dao zv5%XK!qABQaw01}O&suRoRqw0)?5=azWS*`a|C+M9=@bpnkt}N3Ugxh27aTXW`3HB zigFx=IX#j^EG{me2xtv#sBL6DyAMEiekHrS-b(&#X)6oa)$<5lc=351;53DWoA|ou z^YmtGzoQm-U`xt>L!Ko`tQOO+lZ8h|Ewv8s9L@c^8l)Wso-%kF z;p1Ril^-uw1-ub_%nA#qX_?UfD4&ST3a`?&tv13Nc&GcuGo0?CHI*)6-$;Oeb<#$t zDO)P8YiGQLP-q@R*74oyRD12MpBf;HGJRw+WiDqc*i=mX1?MF|G3o1dcV@fxZNn|OwmZ7 zAMI>euDtntY2-#2WP|Pb@(|^!D_f3R7hko_{Qz|BjWZqD{p9Zt+Ma&yR~}Q>8Ykuc z_g!;1|NIzLUh5)@!9Uw%qK1KMUoQ1SCK{q-bkQJ4N5}P^n%fBbkc@t%ZY;d0u$+Z&&fh>m;gpKKTg*!UvtovOh? z1Llw$Kij8wc~j>+D$U;+S2*?KntLQQ)I>o(KQX`V0PI2=CAeK>v@0f}nFdb4G@D== z$uBE8s?xW2Py4o$BvL8MJZ<5M%_`W5fQ)HXki9B7d z*K_uxd^VH3BtRoVkXdemdBcb#55v`6Hm77~ z{5~P(Tx(;3*D>>xBh7|@cj0?BO0t72IhXGw=zu;n5AZ5usd4vnFdoz90O7rcaO&~( z9ohcQY2Tz@dCMVR@BWmVb4}Wfve=oDyS&(7f*-lZD{S2|Lq8D_2%XC&Xwx~8;GW3M z7gTo7@GkdpxE$@|D;n!Gq|6Z@+JN%@AnH zG;gQf9*m7C^tuA~vZS%`>Ilo9jAZRQzh;(~C=SSQ=^MEhoJ)gO40@79=X4K$7NpJfuYsscU)T*K z`YI(W4^cr?pz0p?xUOz)06NrQF|hX;F-xVf=qdX8FsS_@Jyt5@Yb5PfCgn{6N}l_k z|8bUoQHAD{U-BDSfm?Pu7UzDr1E8lPmVD!u{v2XFU!0v!SU%XRB{cZHPzwzd1ND6d zMp3>JC)^-ZpkH)^Z&~Q4Hc(gtTL5i%A|epN4)9+@n)&hyp?Lw@Cr$6z$0VU2zM_;I zJb#UGXZZ(;d-$^9htgNllZg9g*>j2y_}G67T>peG#Q|eSJ(BW`4#)?s|}ps#^_U`Rf`TQ+$R4~n|L1bAZP-(pSgPUjnpPuN`X;<|zfo6SUs z^*VUTuNftJBOVa&&n5gf^;f59;%ggg{z))3+aH@{+n!DTN-h2-2t>+=jy044k-X)m z_w<@hPneW_{w~Xg+9OV=94yWYUNrsRslS-S(Dul_i+Iw8_?~ll1KuQt6<`AzF4N>I zCk7f@e$Lk>$AXi1QSN^2cUwjLk4p#*B+ZH)mi2ene6dp*D2hOLw=;_)V(ATn+_?NE zy(PmPnA_(;tR5-MZfQnke~iy# z_^=Gs+`X5WjQ_GhzlncSfAhPhtcTfG+2BQ47p6wjOoF@D5lPOgn5O}nd;UpZN9cvm zpts3YL62mH!-7Nl!ehC@6SKlI0?aiH=3NZvcdR25pxAYpffyp7K+&3CVqX1{A4cb` zA4wIXNL>%1Hxsd`qR8Ao0Y!8c1*@0wqF@1ZUSbK@$T8Z*i37nx+i4enaSfm~YViy449kj7`R3>#uQ0px2 zFtVtoOvoW8U`io_01Dr$0za6=#7RK3f=XF)O5e-HAj}j+B#H>=30|SdMAm>Dl~^)V z!37rFTb2<+P~K7E&JQnVVJPPJC?{`u!f;>g5A^) z6<{<$C0mZ8juXH42nZ}&4VYSgiYZYbCyqcNN;%94 zZthBe*|fki1hoSUwX$-x(vG!#L1`N@HQrZJ#2{c81~g1o_m0$(bmn5>96R?48$1{} zJ^r7mza7F#EWa0KYyfgoZWzY)+USCLqPuvuOq&=8%p})Ze`|2N6x|=mw&i zz^)3)kRivAYS~bRN{ZaVv|T$FE-bJm&XgO;5>IyXnjT3>;;Ri|Ml`7hH|+p*=*iGP zPv6I9$_ca)2WE*h)&ERGPWhOj5`~(E<^bL%*cyoaHZaOYc(eVjk=Ln(TM)#&DP5Nn z*2P=WH-?rMDD?|&4`B4B=>mSPx}TJ4xuTj6o9_NHPxm1#;&N`e0~5S`6$LiIP8LnB zM2s?Bp|N}=)mzZ-QPiSrjVYJ^nfg=cDi!RyUTR-l5_K(qenHdG^%VA4JsroHl$i~b z!U%Q`=6v$B+o=Xbc2(I}Lm&LLIuxmTFPog20W(w%3hC~7^S);~xNCN*XI`gw#-f*h zpl6k+cO=uOC{kDqLFvRn9DdEaVhx7y=a9&^7$I6x1VI_!G1WueJl(Q)oV=*up!Z>& zBSa*b=TX9FBPxl3+o?axR?))OqLi_5(N|(CVU#zo2}m~ldV)Tcf7|U-C+aWR3I6lT zK8OYn3?l%c`?(aOR@>ZO=k`5+=~90x`quH0J+3izn(+J2{C=v*!JVxM-hKA6AoDY+ zzY4yaJLP2ZkUQwXYEFspGmp+gduGkoR35&KzevAy27}qEL3D9q)+}j0;Znc(Wu}#n zM`RnL`-TFPymgfR=EevTvXU8ecOzAaHw6D_8MpazJC3T#GzA~Wa12G8v5#HYb z3wrEQaQH#H@vZbzLtK6@N-~aV)ae=jY_s^&#WyyQ8dhBD2W*VJ6g^$*p{srq+_n9` z@JVs`C#g`ts|aAqCGRrWKp}e+CGE6k@TyKRZiz{twB;2QJ#GYf{g^=QP}dyc^IB3R z)zk~pr7q@6XIs-V0I@zDG*5Y#Zn9ViI7tB5^09YoZ_g`Kjq~XL65n;8nZw%f5@NF= zWaETA>ZSh=VSoJ=b=>z|qZ7ms14B0q-7s_rICSICDFT9|2uOo4ba#g^AX3sHAmPxh zl!S;5sFbK6NGs2Hp4WXn_dfP)FW>pB_iL?(i?(ts8!dS#5df*j6v}`F(^-T{ z1#pSJwK^UCyXb0aIl5?m*(RNMbbv9Sli01bR*=#>YZ8%vOqO#tR!>MZ;*^|)e3XQ(u%{NS@iqfOCTc=ObPk58 zPSAz6hf5GFZ%rRVem5Q8+-lmxH@Xu*l{&^d3z1c!I4PU~A-N&qF7!suRw_Lq=~)lW zC7JhA{WO`bb?t|1M8@j~cvt{&Xgcnb>YtCbqZaeJ7HbO<-`+_~oNggL(v~Spm~4nm zv^W2v>ohiDs!hw5jG_C^)KBJPf7-YT!4c1tQgQty2KB`EG`{Aczy*&3>s+uF5npLP z_ls)kMW5$F5BT{>VKh(ufrx6(Vq9lS%{sw3?_F^E4*jzU z_FVpxb6kcOjHo#8gt(Pc(e<$O^>6KkG&DoWInj=DyyDSxuGrV&uE_X`(PFXWJxMXq zJpLE9MfZO2-{Wd|!&do}6wG5ZbMQd>(^>NKw+2h=2KJ4w6%p_#*{yu*$?TA>n(%tuK)NW_`yH>1)IG^vTlZ}; z%>LgeRD+X6>yG4gh6mnDz`dcJD*xnraIWc<@Y5!a8z)%Yi#%$wO2NzsdgHy_Hxbb2 zpaXV|jZQuAO64%}1Avw?fH+ch>1>LOW1p4@`2Mef zm6#zx%WY+q+}frWfaW83V!-3Z56g7FOrS!f$M&*R%z}3$D)?5f(_bLOkM|Svg3gW( zV~%aT`AO!;@}pS@e#whF@n#zL+NB*Z&HvQ7{HawQiarWX-WML|&qu=R_wPes{> zr+5B@Ps(vcf2id7C4Cn0^S&mQfQ_7l8d6>MzA@w6vG(_?5AjakL5NHv&EsoW_E$U2 zUx6(ozA9%=1*N!9;6FV8tCwSr=kF%UgE$7RpStgal>N1WN`M+faaUJgTS$@#rh037 z>+gd!g<7v4&pUt#;-U>?CH|%Ues%j6lG1GD3gIV(|J8%yQ-5CnJ1K1M-}JpG6??Qu zK>g>LK;z#OW&&bM6M7WP*nsuqgq58GF9wAXbBGa3u^?pl8JO4{t^tHvEh8vXb7+gu z#FT@m73KSVuSYvShzJZ$WUsV<{L+N?ObGBc18S<uZZv2w!6-k8KQalUWrJr zZRB2U8GV0+tKXm0;s#TR?Y=5PmO6-mv9Kbv$V1n+ zNmSMiuuwY5v|sET5*)=Cp~Aa4}h&a^6Y$ZTkHvM%HX^MlLfS!PdcYXdRmii>4(wi z;m}BxO+MV^rd`jA2-Z#BF-qT0$Y2LMAnjNWzR41saco5)hYU6}EdcTJ#X%A&D@zO} zt~q=31a!cFB?q69OG`~kY7x1Pc{@k^ZV=HpZ6*KSjq-B`yJY?6r!{^SU#!!Le}8#I zrJ{$UegMGY^`PlC9<{D09Id`+VWE@ZcV@EP_FPgK%+G-`QUY!B18NIOT4m<>>cBY6 zXvXe8J?PPLGyp_B_iCf$aZ{sL$B$n@hwT;=KBFBQO)~DxFGVZj`tf>DeClt7D=Hwl zpJ_){{_!i3c};QK*5Sp4{PofGz*~FWwyB$gYaAc?wi}gSKZ}8B?QWcXiu}2Y*}P>H z=uv+&O}*>CG^*_shWF2X?u@9rWi%?O9Z z!ofN7QDAu<0=6Rzk#aDa;?f9+^@LxAS`KBTVq@@sC~~_sg>R1Df(<2b&`x#mfwBh? zF)%7PRHtt<4ddPa7(+-CtUwO|#ByySA?)W!kOm^!w1bOKP+(MWD$$}*%IZCPg1W@t zM6`=^wh0AwR7}TQkSH3Xqqa*$rj?I%Yt|Eq+AUiAXpjO)8L$2My#-WG zT1#_bG&N1+nS&x=kP&-Cz@9Wnd&?)X?%(eDkWDJ7H<7zEYdiTi;+w|zLgM!{_CqxQIhZsP$LL+BWPl0XIh?_KS$ zYBP=&(vbiE6T$Khx0C--hoIgS#e*6p^HOaa6%*-?} zIwm$ISl|f-lro&pM>;MmJLm4bL<(RLkOfK&0%zvp)uHOfAnHPv;v$OlsOPP10mf2^ z(1v0t1-hdBHTJ%-5Jh26Q7@Gf8##x_>D=ygN zy!%CPIFF0C>4opH(}c`}o2(O9i{URb*92bLG)%Y>7!Usk_YH)f z6QnKb^FDGEwVU<V;L0-0aZsz5#+1Spg`-<{8q zj&IM#Si|H$%n!a(>c8y1^E3#*7%UC@rHd|$6oP-n@Y6#!@;sQUU83g^6AZDgTFj34 zJW*hD{ED;$y)pd+Qw(9b4IIzt@`XH1=y?$J#&y-nxwU@O@NZ?l7IVOgZWXz^{#l0c z6hcsPGqfgi1#FOfA^@Y-HYM5X)%KQ);bHrPUYIbt<>=M7=L4^pMxQ@D-CL@!FSGIP zd0we^v)}U~P^hNNudG-VLZ1sW00V~^93j`av^Kja1DeNRhC1Dh_? z9Nx`Gx9fg1%IMl~RL&eE(qzmOE8<5e!PCG6klLN{(c_GrQ=10C@yE7pGG$EI^s9y~m=7SVKDF}a1!HL0{OFW4ceYqM= zyNKli(oVO(B?0@mzwCXLSl1Oy-a@qQ_0K74qHp*U2(eY>owbiq4wOh_XxH9K%z>U- z3VrF4{b(|fw%cUw-94hB~3QHE|-8S(=0Yp^<(sJiiANI^w;ZYm`bpH{`;d zHBV31QgXg)g*${(d?k5s_YES{g3ek$e2BOV0IbX?Q>|$#qgRL6D;R}|Ejlms^L_f9 zKC>3i;}p#zMes=}GJo7~`9og#`PgMF2>IwF!WH(&-R;4g+G*?XC?B?!)W>Tm459=- zr=1`TQF35tl>&km^P2Gy%zm_WP&=xeL zl!%-}9!nqzi-(pH5zrhZkZ#SQxCH0y6miYx^CGb^ZTCp70*6RD-dNkj+!gYn$`G3R zoGc@PBc~Kl|KUr;`sK6Zm;B!iZgrT{S;hOzS)U7^PkcqPEt$C#CX5IGZ{S2k*iU_C z<`SxDz8axA1n(PkbkrXB#@kj^C^?-E0S@K}@KS3CR!Vo+Oj50YhbDOY7h7a2F^Ngb z`t^Qr8`FfYe?vXvB<+}F( z=&HN$9JfjtsIwXKC#hPxhRLws9AI(Ch3>EB;joQOOKu~t5$$vvwS6O*C1Iy2&RN7x z=V21}-HYEa{4sqvT9VX77mxb@LgxR$eLFP-%qY} zES7DZ)X7cSOWUTb}~8;e%i+^e_h_ZaiHiTc8%ir^dM zz7wEmQI>CBPN&cSqbX&B2&XIEOkf zMpAj)!3LK*rV=NZ5tn?QQ`maK=2Y-#;qwwX0<=0x-5mT|%S{gPzQ6coCcYdv);9Hi zxvV4f81EKU5u_4Nq>imBjru6fB10ehy{Qt)?-pbGesQ0U(AOi`v%r%-FF&`7(^Ib` z_s~Fbn;syPX}WaC5Z#t#;ZOx_#$w4n;R@<%X{@^YQeP2F`|$C-mZq@sn(@EC zfY?uT`H9*FPE;jw{Q~sggXv0*N!=JKZFY9pVUgyIdxKfPKcR6Q{^G6w)GdXk1O+bOdjRO?w79r&{mj-)t z1`Yn7pU_%AgO}u9r3H|1ZuKP<4h?ZQbmDQc>^=4vOy~-K5C!Mz|0=?1|53SKir%%Rs*}FGYhf_E?b4``ibSQ)`eXr|r+u=IG7VF=b9bG7~nK z&h0s$y3By@4hTe}0q(;tdz+lcN__KXD3#E5Kov>0l!`6$o5J+w2RpX+xHO``Qxx*L zoytBBS*~%AJKaMJMj!?^9O0AQz#g*0@2hba?b}*iX^d4zkDoCSafsRxNEo>Rd(X!P zL-oEL>FDmL0#C^&B`ZJucl*d8^RIkQser?<`Ik9MH`Hh)I3aCyP2W z8FzvC2{Jo_RryYcjErtv{s}lkUx5k*{x)!iXxE;^`DuTnaGqlG9n+yCSI|6;nuX>K`RcIah$Mfj3 za9YkXxzL+)KDEE$im;l@qocb-iGl&f<(EMC5CK9bl*9fW+W#lWcPHiQtLMEeVj*QJ zg^H^lN3B5BFF-AyXt-Rz`Fq~=8nk6Dk@DTJMD)!3(D(^09W-PoV*4c<^CoGU zDY?Mhlh0jjG@1T4q9blD>LI&h5p{b@JzOxAa8G15FtDS(anU^31dotI19iyu@d*q zO#_4fgZtbP3=6HF(D47!3gpNR1^AE@WW@*agT1?a9cmMavY0vx{1uM;X>ftw0s*OL zrX4P@j+2g z(hUN_*B0z8rp2{nmO8cyM9V7jn|Tex9&;V0&M~Gf$fx0P-$FO2Y&5QO0-{hz1vF;a z&<+}4h|Q}>^tGaj(AHC+51i2f0~mY`88d##XPj7NtT9GG7Xarv0Rs~>RqrxbiB0Gv zfP>mD21IukX`Zlf5l;UCQe0%hn6ju9vS=?dd9V+^=!gJ%vRFxCl-;QIc3pcr{Ul&$ zGyDh;t}E1&EwYv^c9H$D0#HYv&{2@Z7Lt>`@Pv@Wkyt@I+A=w)nus~xR>Pf3Q;-WD zOG*uc$tL9(^<)vOxmHQ5h42Ii^TgR_TA4Fu2j7=-j7~AU$Tg}-bFyYBbIrVwLO8zF z2E3OAEo?EJRYmLglVn=u2e`(5%0mbCu)#wft;D6SjKp$32jcl&Jf814g#OKUG+E25 z#YOZ7=lIn`K(}<9_@DuMx$NV>)OWN)xoS*Y1{F!{RY`mmb%03oXi=OGGt6hQ+DjN| zYl6*FzAwi?pP!US<-8}5KWUGL68GYZoJhdJnfR?>!bDN&l%TN09Ebx|ICWaAah5u@ z&5%+APur6MXL@X|W+^VYm1GvJ50V`GhE(tXC}{zAdO(Ldh5u@R|HXYIPmc;gbBVx9 z5)alx-S(oVeD_QAlS&Y^MhBWw_B__q8Z1<3}8=Z55fIt0hRY4zG@hh?XZEZPg zeK{A*BUv}jZ%t{XD~@%N1bRs12vY*#bjUp1pg7E4Ch-Ciqoi7jDELO0>f@g;E`ysS#s@N_o z1T(8TT>^(p6YJ)l4nUqmaZLLF0Oit?##4Y_F(nA~jEyNT!ukoI0Ob6>LL;G?Kj~?? zWr-Awj}lh&XkQ0^U~D!OTnekZLev@QmcXh(@d~x<%pMV(gj7gN*38K2;>ZnNAPcT` zpinks9~Kr`V_i&X>+$SXMcw&m9T~3fMvJsER|1fI0_17Q9c#t4IUhXCFxz#L%YMOgK!idIfqv}ae*Ebx7}(*KI~Z_Q+{l)Mx$?+; zYE#9P>GkJ=W(R>D(=p7rXkc7z`I%KF!Q8@!m1({tq^xR`^vS0wQHh$Wcza%)$W$pM zNe<8xn8ReS6}3nuvsO6YBFwDB;5URm9SjbjGHLQ~=2oH0HYscwv(QuKLm;a|duPDC zyCexOi!<`~32oF14Nc-+a)WQ)F#~l{IyhTe1B$blgPzF{SNYxQ@+W&t`wGB}@L{FZ zPAMWz3KbWbh+e^mNv7CjCOB8Tn9>!3pAJ4&BSK}H3Q*PSD{R1v)KhA9 z4!gC(WW|#!GhUE8AbPB{fyMK|*l%i^lXUpqpZ~4|z6N;xEi%kRD3m(Ux2Qd~jW|v# z!iXV2Y#-B|(vggV-hA4L*f&$*#OaY@3X03P> z2qHIwy`RnrC`Nf}ib&nd_pItH8AyEbO^QRJMK1b48fiU2{a7QSp?%pE#N_zAQy_#r zsOQs|8|7iijU*Dd5fhLm5M@93oG}%EE%NMXn3fludUhRfhkF9ZnoIo*APVD{s}yl| zo^|)1&H5~(cwQNl6e1=6`cO-X(T=4=HRqP`2rUlS!7as(8qrtE%x4Ig`k-X6JhNA+ z2izr$F>ac;d^@Gs@VB91LTHYA?(W_W^vSE~F8&AmrGtoI*{!-a5Y#+7-oG|B{dLS3 zW%<^#UhceMh!jw;auFbkX%cw4Al8ywbjI7(m!)YS)m$g6$nCq#eGSPN3|qlTs~Znv#wFf)YopO=7ePK<^#`(BF=CunFl7E^}Z zI*ySyE*zrPLxtt8+-i{Tt>DI7#pYp5>L+l`P^ z?q!|p6?FeJ)x(vSSxLA4lqeZWp`r5th16KL+tsXM7hw{-@_{e&miImfHtGkdvn=6? z^i^iPon_ZMV`kQ)AhF72ER5?mY*L2@9V2pFK75Wa7mF)0mz$6YA?g_>U0+7xnDCxy zCQ&IRQ7K*@rnx`w>!<3;ksm1k%%LWM+5U`)n>;5$^`Iu({zi!v>4};!D7nHK7YKSo zM%}DZSR~yA3V*QC4u#F#rMlNMLXLe!d3XKl?i9MR)P>iKS4Z+q{+3Xa-BlQ_idY%Y zn@5y`0Qk0e>)7;LmCg%#w6d*x;UZv-o1*8T4vZnpQSldStA8en{;Yp7YI@E3dFy){ zKgeqW@;UEKeIp`Mc4w?isu$qhvKV=HrscqwxivSvJBl)w)S~zcn?i!y*CoFnOR51= zbU9P*Q@A~KV+w4WjpHrEVMY0ViQ-*LM+@1X2{8vN@~b<&v?u^0`JViR{$J>5eiYAUe-NMCO;i0!V8IU0OmITzEfEF11|wTlv%cP`{}gaSE2F zDwW+JkqWVW!b4C+bvaoJD6{MnJrF$gH=0$hh;?tFv$pw)bfNoWWX*b)dm1U<;kSW_ zvhr7;L)(#TvDk>evoPB*%|C5`Ip87J#C!b4^(*1r$i@VJ_~queJ50OL?_U@eEDk%Z zhgpZ@t=1a5K0>94)H{z>Rq}sGfj6pJf+8YkZGK2%dajB-&JNli9_SoBWN)HtIyS zXo{7cYL>lU>cxSKZ+~};$E#7sP+uL9WEe7VKUoPml|qq^ioVmJJodSl14Tbkmlz2W?|%{`(mwT1Nr58{t9C3}Z9X04zXec4 zr`*dJ{~aOT{C49yE1a9l;>t5S;|}1IO_2-VbG@a7c=Nu_Uo*(C)a_*I|1@LyBVdn<~!2nY;%tY zKj4T1`qG@@LH(B?z=^lB#REnlLEB{JzZ&33{1=HV~p8u zQn!xx#s6x62OXrmS@OjryY}>M*EjYW^kxqTP%tV()&piXc1{i!9%I0bkf@X>17}hE zc^QFCpN_s^W33Q&$m*XzbYbg(`}%?#`FBCJtkju3wW%D!mZn8 z>K`}S3ueAc-zl+;FLMc#o>gsU5VY`;9*i0T)EE*Y*=__R_C@U=!p!(hps-~VSkOiz zzm5dlPM!=GuFCsY1KfONi2S~5}?&hjrjb^qHP+d#k$erG1Les)DziEE&`%~D7Q^@ znCNAr;L)y#m@+fmElU@I#N{ACR|FMrZ{M&k-9f5awPA(Vru@bpkJUz_#RtE9dz$P# zeNq{#buinHQ*tqQ5tnTIqOfzRqoGxa3P(f0OY*MqvYtut6f+ZTsBV~NNv;ErUJ>eaQFh}FOc74u+7~j7_K<~e zrst)SE@!$DsyaZ<&1ulji~iLBi|~d}AD&M1X8ipKtBo>V??BI{PQ4Cu%2%_GZ7S~v zq#`5qJ=VW>ZKkv20vKD$@_}6{ih+&Xy*M7 zpDJq~&*%DQ*|gb;mfoqkftcZ&fQ64fUhGt4l!d%-cq#sG3HT&Z`ftH1&XIhwbG{nkTtJ(a zN{g>Q?~U9l-SDy+p0XR0w-tmOE5f3fmVOWjD`6?r7ov$@N$@`6aiU4sjpk!-N%C`! zqI`0$Ev(k!OXT%Ml^Dd+m}x!@z6Lumj-KDvy=<0%Ct?YqJwr4d#=uVws+X(Xx+fJs zvpa=(1@06L=%-UZ*}Db2Pi@Z2FgvA-@Tv;6C!RzYWf%1Ez+tu+G(jqyh;j)fo+YUJ z7vZie;KY|x%EZesk1BZAQO)Xeq%WX#R5zwm{iIj z?bIb+p&~7EpY2qdYLC0|kg;_<CC4{QubbmH*#6 zKRx1hCO7!^;t3cGKjA*<7EtrC5Wai*nu5>y!_Up5U&kjOwT*izC3p9h(?O3v zQoYb_ap(p@sEBB((^g`iT+cmB95ui+J_2)<%2)V4!@EK6u%64Ce2L2W=LS`f1c}B= zo1wE+bNFsEQ6hWVgXeAkzng*Xi;Tn_6+?309Suup(EVSmJ(9;T612Ijx)wYWt(=SX zGEBL(s~CPaP4!Jc{JR%4ewBqXdTFXc%)z2=9~9Z-~WKWcKcm}Tzd~f?@rCI@>$r;y~vAM%sob){D0sN zgaO$t5>7Bj5mj;-0t=Np^n=()@ZfKrM7Gdl$2x&fUJ2A?oB}GN1Nlu??0(7NZDJhu z02ygx0&-panC!{5cE1*E%UEQ4tCCoc%H1194HkR7+{5quhTPFWuLWy<;Nz`2KyG-Y z4&2|IeUI6zz%7K%u(t!SU1<*z*!AXjUS*IT1G)?rOIT&r5tatxcYdYxcuVM0Qknf) z4c}Mzo!>$oe&=^0=*jrjkb%uP+mI7*i|Vdy7D+1?e*@{z8@Lzo2t}BP-z1l-Nc%WZ z$cx6T?a&9bS@s?^CeO2(>$^Ti2-Vl%@A);J zp+XHJ)^dR5j&S}y{?5{sjZENZ7SJ*a1jF_`i8)x^Q%SX@(4?SD!&4xES0u4kF+r{$nn05hOrg8P zJV7SJoUxd;l~&kaq-4wR-%D^T*^is?DS?qR)V4qw%;F1SIexxe7dv~a55R*2>^!}f z?BPy2GB-47U(z!1P2%1&Bgqx)k0gG|xxc?T9zo{Lj~;;CJO_P@n_3clIc|IYB0@BG z#O!CE-Y1ekz5dO&d|oC@Ab@oC5f7X|jdKBrWm_x6U6sJeC_fp&tq{oLU*Bi|wCIjE zt)7OeBoz?4xoCrvih#9sb|B4aGF?+<93iWNI7L@yf2yH(IsEuMUkK?rTjgr*F& zGR}887SdT3rUCZ${<65Z`~_|*lX{=D16-~pcwM4XSY~^ziab&-C3MUM8=PdV znREh9jFbN&ogr_y)%?E2(rBwt zPfSOgZK5`*I1wCC+=ec%%!>oftL+}rS@jDoH+jD(Vw|>GG;1LG`UBOzRLrjC#h=+yC$pTe0YlB ziQbxCH|)Sw3kA61N}osl*M(XZvL~7vT<4?WL4zzGe>j~r_J02%Gwo?lU8iFhylD0D zgX`p3-%96H$pOUf!Ka`5rvqo5hxJkiTGA{NU-Ae`0A#l}&bOdn98L}5byo5K!1r&iYoeIsavh7iDBNG&$j5nz0B zZxjrAP0Ctc3C6_KTc64iQKV-mEK8(OLBD`LrvmmyZIf3DNhzHFxk00}bJV;dw~ki< zv$SnTYaq02ZyoD;E!ic;Ro(L068io)%h1`~UbpS_Pw~L=;R2Uj7h9SdrSV!O<z04j;-(V)>Au_i7<8;^>K&LjZrruUd6`z1{({GEBLrz4cuqUGm>G4K|#*x}&NJ zvy6TCZhYGVu17~}L0h@D*;nf9C_P%t-Q(ThphWTm({h!x^9hcK#O*~OLHjp5s1#B! zY4ZJIiYQevMqhy)_i(o5qi5L6lP`##kf7c(pUBg&8(1w90tbPf2OEz8 zZ8YuJ1^9QjObBq61U}AZ0Cdb5`#WvpP7r zw(uYLt6jBlNQ@wMOU#u6?gvGro|D>5@CK+R1#^OLgpR{LY1wmC8jM(_;$N=jzp83G zN1IlFMEF7f3;ven)A|ciQt`>Y3IC)n|2F=hj>WXT?l7nWLlGyql-SX?BVZ=+(Ix%= zfWK2WH33Xo>bd`yi4-Ci`BNg$|31Z>E~RCx4*dGl72s(Eoxz1XGS=2w*jfjd{|aV=qR*-S;VyW+>=^ z^>~op=b$vT%_d>_|JV_?F-t#4DWBDrNH40yY9ZnU#hsdA$}*ZwXkTkrUwqq`>oydq79Ez=O52{{??@ z7p3!w!1E$^))w~WkN|dYJ`_`;xb`%Ih@%5s8r%v@ITXhMh&mRtI7q-ZzuhxvZ7S%6 zG8RbE&U-4(1wqBKq4UTBP&*j~pu#ONIL$%DS2vj!3)$+@j)GB2VIlGKdBZ(^^2PrL z{MA3hn?P9=s~B+=Tqr8UX5MNNzRic}Sb+$&RDMJNh%aF@nU%jWpvJ?(4q^_N!xLT* zk(OQ+>wbkGy2=C)SOf+nA(H;O#X+%{UkCu{Wtgwfb7IG`U6SkwlIl1-^_!}gx2Ad} z=_jjRnW>Z13;_H_fSbWJPv>h>vCp&kD^>BxkExce-u+#j4b>ceOAS1gt3M8s0ip{s z>o8e*lpq+O>jDsNObIwtG_MJ|9mbJ>GJIYax|!|$_KjVp6Q zQ(A0bLUX8Qbj=a+IT?T6OAq_*`WKf>uu2IKr7j4^+_a_G^o6wP6KR7OO)2c0v{jEX z{XHoqypi~*)_ASPp|~;X(o=u|%7$$CtJgq^37vkG6~@zyJ8YWYXYXLnI|P=T71wFt zO`tE!nI)gAI;T!_2v3n_ljy@B>kU0<#a3#HpB|0z%z=@wD(1S21<{2M^Q-xVg{9F? zWP~y;N!vahim+jb_m%;E2r#D)Q0)cqR!Mu#RLd)HHE(4Z6X}0=UuL2Gik)8!{El@= z+FX+fT2bwrc-uTm65q!W?zk)b{N|@)(5;YXw_m;VT7M}lSHX;ZM9WiP`pvd!J6hFl6&#U*4ndJ*-T9v@-8~Ca*SpiN{?iO3>$w~&yWU24X>|!d=yH|< zggc~IeQW=Sco}&G+9oM0_vvOpb=3KkP1}SxCNd3Ab~6LKI&FK&e0pD&^!BFozMAeG znC{Ih0d?y4^{{k_U=iB*P9WM3O5grut7j4GFTohpIM>9Dc||=(THyGw5eG;RCUt0m zD9ER@7f`G|^T%U8+WQhet_BXT5Rl)3kB2hfek*U=>R~Ctti)Jn$@^y2VklwHjpu*~ zSCXaJFoBc)CoQjd{9JB+XaTd%(Ku82Vpv3{rRB&rAI-B;*#Oh;!qz9f_!B|Zpb`=c z3pW0|~AbfDZ=HhGG!(nPAZ~AcMMikUlu>N!<>7xXD zMToRNwHWtIYSoUtdCE{rAw@G{BwX5;1_?aeFJYMJ$IoQ!j&t2tlt1tRkOsi6E~LhX z956`=C6HrWPGi_D{EzWCY9ZX;#6(GR=rf@GoQxNuTFIx^pIGBdRz*^Z1m11%MVPv^ z7ckg?Q*BKEw;RR|qX5d+a$#TU?G6Inf*bqr><=Xu5iVV+(`E15dXq##kr`aH6O&gk zkv6ADnK^lLTLesP$3hMRT!qnj8UQVq6{*e=!B>G*c2nx{(h+vA#Ym`m52aRM}|z$9hJy-Gc_@3BE~;kxz(mp@c6Fd-(!! z)iS^lTSErdSxD-}YUlAvSm^3pN@g&%kk5Antts%aGF=@K_$#Uv-Y(3SS!)UD(PvZZ1>ehH0lUa~EQR%}RTB`#*xrX%0TE8}ABmhiUgBn|TX(yp&k1mCd! z8PHMYFS;cd&5H2PT5+o_nZvCldWi*{!Ggp*} zW>xo+w*M^C6iFAeq|~W&wQny+z}sS1a(}-<_z*Unx(}V z`sA&>c!#e`;XjrX@}{aooaxG5Uu4b%`)<2aEPMT(tDdE3%|v%z`+Kg8F5Sh2*fZ*t z?oAD@ehk>#J{lUT)sg!?nmsJka z|7}zrZ1Z)m{zGJm{!|fS<8R`Aug5{2(PCRuiJ@Fxh~w8Rx8~)YWwh9)!BeuAm(s1c z4_OHZ_1@n+-nh`r6u=l&cIC!3ALg<7Sn_uE(P3prPdFzn!(+RMWetTx z6SbMpcEluo%uDygcCXGuUGxrz!D>OyRXQ;KLQ>?@uiS>Fea7R%>XUr7CpQg439Q-G z8|n3##I1rTF#qinej#wNPY%so3&9;OqDZ?pCy2!^r|(f+^v$Ovt|#6cL9aiY(p%;Q zJQ9I)_EFOOtdrr9m?vgIpMsiC<6RT2AN?Trk*A70v8R0GZTM@i?d%}ysokfz{AQ9i z{;3$ssExmc{te?hjjD2{SHHbK4zRy|^MWu=k|tL#LL6}vpXBi&kjYW!eaxpsVevyI zbLlrfdFdAi;LSZF_dBIjFJvk(DQM938;W;}00At?SmbqU*t~^MUZU$*Zq1JEyPY2y zrKZ1kLyM9}c{P&#Ac{$X7A=S z?rU)w*D+(&D@f^*i4E)%X$~KL?($|G^}RYzH+tCu|H4@$6Tv3y|~yS8_|1&{8%jy&T-KJ#}dt|qSF``bRZb}K}0wE~9a z93`A)kUs(TTIX!XZ!K3p^pwq6Rj(P1C|T7@8Wk{aiv=r{1U>|?Ex_zOX6m*^$fTaU z(N`RCftF@HqGxXt{rqL}s&;}%)J%}3&C_+IsS9iprFVR&b#ROG{^kcoPl{Wg{StS6 zGCAG3DI4GeX7fB^9ZHXkBw%qpbP%OfLc@^|0)s>BceihFB4z(!bxM^nZgHmL!mxBA z8WGcqfiKQisF79;QcpBMUk4BVti9$(X>X`tnS-y{rQt(P)QFKGmnzapVH}!O6?CRW zF#ViMb19Vwri8>!GLod4ObOOCEW}X53XhrzPR_jx4<+Y($JNNGniQG=!Jgs(BOa(O z9ZHR2LLqMn24XCa#V6-amlp3RUtG7}LH;2C67WNpvc<(7vhJo!Ltu{$9w>p+8uCy! zb6S}6v1++*`Sb-)%btYq4DN{dZcGn;h}|^L7>?MGuu9W&YN^Vd z`z*3XqpH@$Qg6tf>wp4J%n9npHD-f$LQH z-72l2=u}X}^v!TjkFrq2@s0*?V7Y-w?G!#6{b(9m=!B<#ARKG8^jgwQeK0r8Vm6~| zW_^H61D}3AU5@&xs3Q@e@E`cA2n;16Jdaue#j`Z6WxD#FlG*#qsI-0?FvC)-djBNo zaZ{aTM&60=O}72fv)8m=#_5B@~Utxaa0?W@16bFJcE{))z1KJ!HE`RALgJN6e})9yh|XP8JiV<~EH4_xptg(CN;n$iHU{$Uo2)LPBXA1Xhct5AupAq;)}IO?hfCy_`5UEhNp?QmJNQaXGK+aRgvW@L7l<1_ErqI(#P z6!kVvA*@OQ;ezxr$oKr+`x$q^jbu3^9+!KM@VoF-C5DaM^8Axx!$V*~ z3%qE#nB7xnV_ZfOb7A@+wJm(I3Qnq>F*IcDI~I=Obac2x6d>=IjLa-^6Hp=)-vCUe7K+R+$5f~rOHm{NYisci&-BXX z79YI&v!Jeyf-ge4wSU05s=BMI=V{;TiOC%4yqCkk(Xy$?gQin zaR0l@(%m57(%mTnF5R$nihv*?-66PicXu}^AR*n2gdim<9V!S&gYMbqdEPl^-kI}$ z+fO^QA9i;C_jUiSYkut0S9{&ft?eB>9eOsx2S0xPm}7JP^6lI1#pTuY_6IWPpP$eN z9!I&#{OAnePA^9}%O(gy^M{ENxuixbYqR}-WdOrLEp(GeiFe3&ta?m~dr`hY5DJPD zic7E7VjoH^7|JF(neGq|5s|A7lz3N*Z;H)x98TfFJV%YIkxKVisN6WkexVRUQiNv? z9ddKZwru@gOK7?a%V*!k_*{%T*hZ)E{$#Qr3H4pihJ$dipa-VAc8*koQ`uwwaip8B z3$w-Ycm~}Pp@%cfADxR$z2)F!J6cnP4eo76pWl1t`9!4rMo;_j@gDY)O3Xp3)LqYO zUe<8BTsO73KC*u_6D%9;}D2j!pi_0QzvCig4k(?d#F( zEd38(3e9B@D!(o%M`r-nMz@}oi&74RX%16vJJazlm#JWd1M6-Klny)iuu(*AG(CMX z+F`emFsBlPnZ8O=FsCNZ{s zu6o48kixS9!;=@fg+8@4ZEMz@hZXAqxSTmosWlF0nI{~zU+c|qLhf>)WT^rnt*BOE zC#&s0?mZH_{+U{!s1CKOG@bgN44^yT&y!Z!|1yC6Z=(SGx$myBk;o_<*uK@|cucnL zp#L7H*XiV0N8Wzjo5+!BQ4xGMOFUlc+TT8u)RqIoaBX}CETA#}G?2c97(5<#uz9`^ zCB=I&&Q|R96(7>r%@440ZT#$uQ|nTYcvcNVAKU-4=aa=MI0l)S*nV3lC*CUwf`eor7U1!nf@6_NL1z1b?>s34 zzJ86tw|5)&O4S7SqHkY6uo+ox9utysA69i9F!1w8e|#!B7jk%O@|n#z$U5d3$qxmeqe=vBo7(>p^1q)Qu+>kX!}y)|%4&f0i*+`A<4Xl0@j> zff#v>3y%HvlM~!yoNWvVg+6X@OT-Oevwf=ZW*Pw>r|U~?KH~IWN-O+DH=wiQFyUdq zqg7*#q>O9BRmir40PcJAB{g%AGHLWg#Mk* zWIRf@-{VSmZ*bNSQ-qO^Zc?>RdT^?O>UmJL=>wQ;jdHRSRcv-3Fx`e=v>#lX441ft z$*UoIqzo`EZmbBnd}o)Mj+jHY|EA|KX#|;BM9bSmF%y8X$3G-_0$0~cTbtiCG`I-I zDU)w_m#IVf?9OeHz~KpNs%~GNe!mI4hZONR zL8O77sUr~4mtyU{Z!+Gpv&wDaE-w#WeE1dQdH3bZSE_EDivCa7PK>`*=K!$TI#^W- zLZ+?JOEAzF|B`7t7>+S?+4?5Yv;Nzkw&(pjLB+q2SOesF?+9yI13=V(yiKghrvi zBg=w4DXK@auNi1?W9`!(yfhw*o)L@?2lfTi-cOU{=ZC6(SNS&sxIz*4DUv*`8BRpB zffa#bYz`@@BqoU-AE7n;f;4!|L;or486S3#)vXds-?KM7$-DJ!zdH#={28HGd_73$ zdn8mvwXHloXx5g$YxT-Ww&e#+O>AdBsfd_Yk%>{O><~~QpfZm!s_D|%4=a%`U|_Iz zjxAv#pKMd|3L2TVzNUkHeB)dn5JwCpB)|JM*5;##R(gj1v+;Y&fn#1ALe66iG2^>n z(>*$JTc}u1tx+1;{R28cJB%G`J?x& zo`pZU_oY!cv;4fFRCLyS!mDkv4=hhTUfv%fisBb+5soSEwkA%*I*>XHC>v<~tEh^I z?;Od~-lRkT1WzD+?pflo zy$GHK?t`K+*UQtwG6&=hV{qKR{Wkn(|Kl6WUOHep6Ih1%7DKS zrAZ}(bkt9`g;rF?MsJ6?ze1Y726o^jN7csMyQY)`ei?fTZ0ZsG_)(?)nfcD2_9_g_ zI9EyZdK~rlt_X!|$%o0z&bBKm?CIAqW-Son*b2CJW-*1F`By06p#q5=zgM}tF9$!^ zv8#6rq2_oUfCQ)L{6p_{gv>dzbzDOYcp{7vy^*^qNDM=U5Sx&{A!LLh=y()fjDTGT06jx5B-!^ZnV5n_LpiD8M$F5sI*9a~=e{%4zKDnO0HA1SR`%A;g)YnHoaE zEUA5k8gV&Jkkt0v2kgEw5-x`Vq1jZvvInYOzB=6Ay8kIXUu8#8oP@_wh&*q0715KA zQ4ULqi2O@JTyp8?9+bO3F$frL2=1(cd>i>5y$MXSyPj0jAzHwBkWR_ z`xp)&ae#w0k28dh2 zBtY^x9#bkB?BihkWjD^oZ0_O!{79tPgpdj338QMN3^hp~)~ovssY9%6T{$YcWGzcU zT6{2dIgL7%LT)7vwW}h4p6$ilxDFdSaT7D7!!zxN!t6{^y;5)j!*F&vSoN#WFT~xj zvj1a#K`Z$)H~AH3=!~)3h*%z)`F%8YI<@q3!g(BRAI5S>n+vnpV+3GhdIOINw`~~~ z$N**g3~odct-!xZPyeFpoT6KYf=`bUs85QrMnT=~c_|%2QpPz<9U#AVaux!Nisiw% zZepk%0mdw3u`~|kz9xybvxLquX@xTZMN^961ZP(UL?H9HpJNj=WocIx6ItSuNlG)) zlw_uuQcRZmWc_cYr>PSYtQ4*EWZ?pj!iC8~OR0v!emSHnkP}@90M(Xcohw+^Fd!>A za}Nai+RkW_R<6ud%90CKr!~-NOt&us`(sABzgN?DB;s>(Wl`iL0Cec8@Jd*G~1iEPA@8^Jo|LP7V zfbQgV<*mH`93UZ?nBhq5{XNe!fJj(CvaT~ztFtC+uSUhR6!j5-CA69%q6!w}tQS_T z7jmc<&arDXrN||&yA-IaMU-737>;vl+SRP{JAqExVwZjzX2k!e^xR%cVUo|tQdanQ zTVM80?Z~tO+^=VJSoJ!$p-|0pX3vfS6Tuwut0oWkm*DY{rO1S9Qu&id8 z&sB}KdJeM{n=%sm=EV1j05!L1C#Dr!KtnD7c%LZY;WaFo7UNP^Gjb)o%K;~JywL5h zG~2G^{+{+hvV=bQHGLyqRwrSGB*fhvL`4if#ci0n_1YSedre#P(D7f|w~@d>TWfQ!$Mh`K~8>Z9cW~) ztG5g2zv~)Q?;d#EJrdYG($&Ga(e;75+Y?>(6aJ^{ch{*NCElsjjI6~i@%6+hVsY{E zeeY)~{8qhXl+$s`r0ZE7p2b|Dd$hZb5x_DhK;+qXo!5sAL1YiIkvL@eb#dYOMbc&= zYKyV`nN4;^>-BD-Z_V&f3d8=)!uq+zSPF4ewb*?R{lbY^B`GCc6f>Ocng!-?42>xC zE?@F}2@UAS>`ZcKr4sI^s*VO^^KpJ6dvJR9bb@0VaAB4XJZW3LC#w`Jl!Mw?Uf*n&ir$6 z2{m8b*nUqQK&jrAXdIAe!s=Xh|7khA>rl8LFCDYtV%*u!Q(MD@*7!GyMXw82NB872 z%7kllK9#UKp(;d$uG%Rmj4AOz$OU>)Au-?gr_d%)*#48r-!3^OskQZ~7W=}{Kl_B# zAqDf`{U)BL>568Hing|3=m{}XboeW^vCMV5LYoQipAQW%t9s+71BCUx*4t<98wpr! zKK|s*^y-OHg9M{Bp0w!E-W)T$ewd4b*1e%uXk*3NXtt_VJg!kx%>nNPDNpPL7}P17As zWo8pnCCt+uffyPW7ma}}YK5mzJM8$KiQDr{&1+z{^3A#CdQBPjf%ddTo3lo-> zADJJ!pFyR`1``62P|NAZALbADTufdli(TfZJI`wJe%t_a?g~-Hv7|_0L{QFwTj8?} zf+X3<9K@(yS$u!t4v2==n!JE%$8O$Rc1(&FU@cx@Nn6eB5vSxzPngbdFXi;>>Dz5y z{v!n;M>5bpw(IDx>M)KYp!fA+e6be;5V;A_@lN(htw>k9lLbv@CD@kfDV(LDKU=Sk zUHsQ9h8}qhKj%K2?c8>GF%1GTFZ+zns~MUPE7s1#weF+n=k3&|RDuHw@?TcG*R#C# zi9C;9EwI~RVj|2V`ph(neNwY<{-jNGfCY$MgiF4>ESPVz26su5<=Nr7#gY+NPCwFI zLcLO*CF=(XaZ-l~vfTOBR!Ksb68dI7uoZC=3E!TKMy1x&CWVQcH@?`+x9v@>IS!xCMQ3CL$ zqVL~Ct-jl>FOA*gkc#VHj2(98#ErgRo9tb4nP7VxA225J!}qSSeSI}Mszfms6nEp* zo4*thx!4=M=y*um`IzRCw$kU%0fP$(yD7WK0q`clKfAEJkmlEu2_hzmA))@oWDI~F z!56L3L(%Bkt-v^4_3A^GAj3(dCqof>E0}5V%XlIIv26dklX1!q?V;`A8>1VWnZQGQ?*m`tT!;rJrTIv`prGt)%cv2NRMx27}I6OI!;wq4>Y15hj)2 zb6n`n=Ed7zc=ec?@ULO&agoq4W;BMg#FUUuC4DD8)q67i?Kpau^IYClbWaOhL2A1C0Ij=Db*_7diIRjwNuGRqWlLGJSRbH4Y-&idC=v&4h= zF6ME@s`+fmSIK=L@&`z#@hh1Lpl+_377IewD!lcYmFRh&(67NC8Cmok$!YQ894AGh zz>VEIm*z~VZhls$>_4i!ea1K#=&rIvz5rd~hjM#-5^T(abklz~ezhT=6Fj&xaT!TU z=AHgQeHKMnj4{Kf+3R^}nql9lctsE|HuNzN8X9zad#Q993^0foE(bTB7#pYUu|y88 z*kk!ewj7!)mf5-C61|<~&#a!?+BtL$@{kVWb7{@22ZtvA=Cyy2PU=(;Wc za!;W7dC6hB-bxM)pdG1kwgruS!Np~v??~dXP(j8i=8RHHDFsxBGI3RMDMCYLUfajw&g-3CpA54d(%wQjaW7AIaQ62_l~!50jooA+IwWc- za&$nym2H$kjuvzGrku0!jfNfpjy<}z^;k{%`02R`m zWeZAsYyKVv)6@Jz6WM*lvh|bcTXCtD!5^;LH^Wm*scN-zZ!{APFzi{$*Uct)m)G5F zp#yWzO!BiXp% zlXDu|;8p4utC$o#`sLB^VB?d(C$2B&3p(0Cg&35x*FO_-4DZgC^AiGn zT&liGS$%jiW{?}EZZ8|R*>Di*{SNiab%=e{73KGN@A-ncxgf0@}$0XfQqx6D#tv;GT>Kf30EypzwmrO62JpUjck*4D)$s{dVm7!Q7Gqxd!meL_QebZ zw>RTPKBU$D8WST_v2Y_0-QU3*~=Rh^aMWB;6@SHj}@iu2mvS&N$M#Qlb(@jiXQoqCL|`2aztd6m6yj6 z7S<4kAu8UyO-Eqo*Aybb4UL^$FA;eKt)OC??vYV51Y7mM0}!D{+Stc8x}TPoC#pX@ zSYL>kUd0bq_FVZj8G{5iiCZ!JB?%#iN`G?&I`&6496gZwVmgmUxn<>g zzAPSv^Pn(8L{)2YAVZK`C4BtcYN&#+Os(L((9jI#lc3;NY&DD0?usS(#;dv^y7Bf4 zwFWOUD^?+OxEgb7?gmE8&whVzWg}9RMuez>R{uwRvX6H}E24c*gM(!85OWk-L z%oTk5HrvskR|=-Mcs_bGGFawY1^(#?B<;NILbZUUB@BTrI?RY}nuL zGfEfM*nrXmjpwSMNKCGSVq~w4EI6du>!5@WG|2)=Htev0()&3aI$$VO&O`7uHV!fH zF(L+YgS}z!3N!$uwXc1%##L8WNy}YdH?!ebPgjX);^PhW-67Rk?AXr`VU4vf8Dn@{ zT@uQccTlLIJ7H5o!(s_!Wj0Fy+0~k2p%4F(Hx9@!5!?M_}5*t{)!TQtmbZo_z`J>PA zEuRgd^_+10FV^g<#=VB~umIi`V1KIfAGIfR+5DuC9stffAyVvcY(@@wcUXvuQ`4{# zmFD>{o0Qu+^(dq-MyZ~YWiDOk<_S(#%bh4^DFVMibvC%qz!DcRZETu$Fx;Np8#sNS zuup#l8Ibs>aZs`?-2$VHoBzFaSCG88QFGeHMyWH$j>7z*%MM3wC)qW!mxXf9$<3+1 z1-G-WV+h=yjdOqNK4^`X@r9_`{cIhp*AAlZR<=#RAvpI>=&AsWrvg`LH1MchBXGVc z?-#UecmFP1K;8fOUDcfMrOK{8Gz>{bGogja_{@Pobwh9cx)TF{PS^Y5SbkJvlaT#- zuoDz)ukg52w(pO-+k=Vcg;+=JPv#R`>^A_|N^lsl07WH4NfJg@Oxz0%sCh-iVur!( z)?qT?D604pI1pPI*rAvYgW;E)DM|E^u(`S@1&$u+Uet26sTmlz5GGm6WnN9=X*+Zk z5Ex+~si`+!eUc;Zea{jp09S?*`F(rH&?w8ageHT&JX@rB_QRxnO*D(#rr7H?59GM| zlOxLslE_Uc&xZvh{2UN#qvK2kf)nnsgUbWtb4ucsnu)Z-&lwaQ#)u}h(_b$>he1d} zsckHSTvAkd@P=g0R4`sz>`ak48WkP>Lk9D;R=74e97q5&UQ!6K4sSu^rl!x~mxxr| z3_Ou}mw2B>{mpTxm*EtfDJz9aESVTu-ok^)d_q?G@evtb<2&tNUR6aKkF@>UJTZhq zs@N*L8+mkMK~{6CY+$QUcg3{aWd(b=hL{hI9@}Wor!1b=U}$WorLOMeK@s+DwM-97 zmhy=@6sD-ln{)omM6L#;Klw4OQ{)*+Gk39Q#_ypFx#q(y$!aa-4m};24G^jAK*n|W zd^Q75nTj`QpRQ@hs$wc8f#9~9p5&(tL(vNT1aiZM+E2BlaoG@N>Y0Ous3-B?IH-n$YLzeaR)%g|&kob7c+#j}@8#{HyitZ9;q+dOb2WO$xP z;v!P^YM!u#7EK0^A_3F>x8-OusC{tY;fVsoSx#Lk3u_+@ zo6|DtZG{7s$$1>uw748~WPg}Y>H`U)c@vv2ROF$xJ~bs5IAVNdg+N(8Or1r^$$giwd3wPlT`3{CGyG&+Vy8+%zGfuZ0bc;*SDS{ zCtq&0--A~&=zfbAqa8ARlk+K7aN=>Y*|YI2@xIj$0+AO}n|N1L?QH}nuRTpI1eI1^ z5j&kw;S8#i6;X{q>jbpLG@b{)3Lh1(JoUc1`}QtaqJ3S!E&Rdw+SsGHfgJ@SN9OLT z8_J)MkPVfDKbs^im_VtUnHdBDQ;0UqoD>>wOcIU%h9lHrufKuHVp$y%U=Vsl)S1 z>Infn?eDPZW<6hc8Qv zBO&ek_CGj_Iv+ax74afWmfvaiwLomZo34VK;tbFK8v$ya#HRK`X;oxR#1Xq4R&#zt z(MQ_jL2SPe>w0@iqWh)BKg_z!`g~>Hj$;>FG}AkEDA*JK-y=ZHxD99scE35|>C-17 z37h0siRgjesdmf*%pV8&GEx_(!PH|TOh&-OLuHg{RkH+{dgc{1y6{JCjvn?AtL`IC z$S~jcY-uFjeVphCsg^gy#1`^S5byt?`jS3P?75T0MJ~>Ez1COAobSWN=1Ds`4wj}R zSoMyUe@EDNQ4bA`uV23Srqsa)k|B#UJz6twV*bdG0JjgnW(f*=I~Eskqm!(^NUGuj zx7>^H_Th|F4L^q#PcvtNy()$8$)8~npX2nbf?@1B3-l8pEy4bF{)|n2A_rt(0bP3IaD*W5B()ExO3C+&L*(Ad(rj9L@h%GmcEnWdZJ^|4Ow6aaHMA$mVzDRGX zXv3AD2HC(?EN_mvKuseH)D4M7KXp7k@l)bq`D-NzSHA~SWBl|={LJ+~_RkO3GEU18 zSjIrDeF7usMJpBHv58Eej(dN=>G>{l;L1UuQhxNB`=-tH_&V_)`zJ>dKTOcvKA}}v z`FbVddIkTwIv6cX21VPwZnya88$Z4Rdf1qZznc7?{S(h5sTdah-tQkWh!g4|FM4_reYP7P~0TZqRC)Kilt9t@R;f4XbhGk8ot3r1 zqx3(FK!{tCct^U1i9Z>_`fLeqNACAR-}DpQ563Gs4uTnE3GQA=x1`B5b@wi+6vo92 zLY1LuU_V!RstudHJOq8HCz1GkJoLMfi?xHh_DzZy1~8f7(o#n=f$mWIza2okB zQi*cDC!tggOk?LO{hjcg9m0q~>hF*A902X7lOLVtv@U9vbjToea$PAxc?GiXl$=J| zzyl=ER}*~ZoY-3j>6!lGzQS2#SSs&Vv0FRR|D%Ck#`&ZE`N^aZ-V+dxkyE{i&y=xK zLQ1v>JoEiK91qpBdJb`;EHN-b{F#4(&$h^@PT>Msp?U}S_*b3FpfEc^E$IgE%U_(Qkf8TMG>7S9QQlY+^z0+a_9o5<-_biG-~YZ-*5e#6+%K1N)%_!gJU??ZsO1Tv(Fg?6oNa|9b>D!UkrLEPpuZaN2Jz zIxLC4>Y0o!zG+3swUPJ4N?gL4ke3#)a-bu23%H*bhH;fEtd+oW!OD)QvJ=^CljWJp z#RdU{nD?p>5;_tsl2aO+iv#y$N)-SSlS^}oA5p# z0$>q%nLt2m=x5N9z?&Cl+5a;FM3X`84y7M$6dC+(lw0TRIN-I9RH!=E^ICmOb~yp;6TSRbQ*W9G zeK=>_^uX9Bb8b>K=8_&CG&uB20cX_$(`E1%(~qBVy^P)28Um0)0yD$$c^db6L`Z-t z0U)opnwm`+n8toe1v4x_cspa(UC55QG)cHfvD zNX(xi##-F1r}zP*V&i10b@f>*e*Smdy~@8T+%7<~`N-IzQPi9B0}JUz#! zeB#Wm^*M?okocDcFOruOzQfiZ=1l)g_`h2z^b{BUPJ-|cP*|FFY~e>)&n}uiCP&f@ z7}Hf$c0Iiw6??k$M026Q2~2ZDVvFtjgkpujSqfW2x%~G>?kTTcj@8|?$sy~$OnOM$ zEp!&Q(^4aF01fio)(?2rWSrN&)!=vkB>QFwj*q6El3pO7pO`IxQAW{_!M@4XC`+{EnMg2b0kVvj&{ z$VpR=d;EF_bu3 z0Actw+oy$dE3_xwIobdbw2vUrtBvQccdCr8?;$-|QQzNwevG90y5Q(5_$k^wL_rYA z0g2N3=Jl6S*Zi=26CPSWS?45SY4w$-6ue&2^__DM?*z${-nZzw? z_ruyZZViWb?Hw^UnFD;-!!ur^i6G8KFvzVv=O$15kQ3tk$>mEHJ&ZTZd^Rw;>mudV z#8t6yXv+7T8a()(MNQZKaTs^CR|;jzm0-Nl&*{Z3^WYNtDsU|=W6bT0!&~Klja`Ad=#+AKuazg90p$>)v8~>t z``dzF-vtO_13gTP<0UFx6JHnVOHYnUI&zVJG^=xGmodLVVD=X%IGR(#MX$PIw_)H1BYcBPFlOlK3IKuw4AaU*C~YHe~`6t^WK63~p@Ep_hIP z3}7%?&B?>h$;q3BYr}U4mzS5e)rgKyO_g}xV*2!7GT7S9L)wc5gX2rDUW2}9uxg+$ zgGHR3TWGuhiX1So@Q7$A-qO5l*leL8>7vOXdO+8ut)mAuwO{@GrQOS!cW=LlFyQs? z1po`1f*t`Uy#|uXr1&LI9>AQHh9bEz6ylAeXNu*PxCbm?aUNRnq&FS!| zTpvnJunA}*)08DR?A^k!g$TR9gbxvQtEs(5b0kDezD$|Ncd_Kshh^ zz8DoTzp)NQ?NCJ0Lve-gKUV=jIgd7>v%~%)4aTViM?Vt8LF1L~Vc3HvgP(BncSiCe z-fH#*mk=Q4OBi>Eqxn@fk^`(-;K?Zus4z}LkTjw7lDsnTM;C|lO!E3A8nfkEB}|=^ zPkKd>geEpqEz4J8F81>*WMGES0Nb6bQ?s#n{mzSf)DLEP;Fy$z^MS`8v-SYg?x6n- zuJz;;AK1}xc5o7$#vy=1td8AJlvcJ`{WlRpqA&-}>eKRfe4rF}#Zbx8^a#d!!6mPCT0wTgfX8B-U+QQ~1BJKi-aRQV^Z5{s(2q z#|3VDcy#w+j%@Cax9>3vV$OzSn^PCGXss3Cv;5Kr3$y58rv4l$F}7zbhF1)t5=R&= ztodw7Dz+W|HE>pIN8kRqPmOoPMGw1soeWH@#7hyXBMZA&G|+SwHIVie5#dsp7{<%u z!FD^>5xpMZX|B%1UE&<83_IgM9YYLPtOB_yA0bHKpTg`-8kW{x>abE^NZan>>tLTY zzm&f85iMI@JZMpS`ZpJvG9y9t-RVos_0;5tvGa4}q613(1o-^AfnY~pt}CHd`TT&y zC~GZ}XF1Yx@2R16S!v*#UYnxytUgOfnuO%x3s|~72KEuvMw&7~_+l`g&-g&su(uqD zapDWb)^xUQvh^%qn^w)AU_w3Pa;XEV@KWUnirv>g@-`2GLH4Us=UmxyfMBsZH9B%i2(@61^$|#?XsZ*KdEWHlLw#elXJiLC*tcza8U~xT>H~APMpP zl%MKl;G){`D-j}$Xgvb2jc*6+oggn56Mf?bR4`kXzy%T3)v?hjB_a3^8SFyevFufV zpV2fvyNKDq`%xuMIh`CS+OkRDo-O|XP5bB(Qy?Z%Fg;;Pv|>JER%rx0oqjGrz{^_X z+~+Z;Ruc~I0n(gM0L7CTf4SF;xS{|Vo$me+E$so;9 zAkp88g}KR-PA#}OB_-bGL1k+dS)^J4Y2w#X=0`n0CA9}&TOxc~qF literal 0 HcmV?d00001 diff --git "a/docs/.vuepress/public/img/gif/\347\214\2533.gif" "b/docs/.vuepress/public/img/gif/\347\214\2533.gif" new file mode 100644 index 0000000000000000000000000000000000000000..894372d9d262b673f2272711e449af5fd92e1544 GIT binary patch literal 523143 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

    )ZRi<&3TW6$A&9~o5#E(KLB5%B!Eq( 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

    LS@0B=lARt7BM8 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 M;pz#Vo`Bi^0F?dpApigX literal 0 HcmV?d00001 diff --git "a/docs/.vuepress/public/img/gif/\347\214\2534.gif" "b/docs/.vuepress/public/img/gif/\347\214\2534.gif" new file mode 100644 index 0000000000000000000000000000000000000000..7b99130963898b8bffc9f71c7f62bf720c5851c8 GIT binary patch literal 107143 zcmWh!XH-*b(>*7RG$09tgeIXyN`Qc%G&Kpm8mgdxp(!F_C@LW8NgzrSLobSkUe$o* zf}(FiQBcIFSWwi6f>^E>yV&^ro}csQnYCukti5ON@$&I>bc!7VMu2Z}z}40DOEF+> zZVo}v=g*&Yb#=3|vpYIE4jeczQ(`O>3SYl|-PF`{=FAymW8?Sl-=98x`s2rs4Gj&I zm6e&9nRkmUKOV)G3zENm`$i&>mX?;jiZQ_y%e1t#>FMd@WqP4ZPJ3nOS&YdH!$vr(i5{aaL8*u*o`72kh3=R&8#o`^V zz}VPWadGkFo0;$LGb17i1jpRs_r+(SBX3g@D7o zR{{)O~e)yk1f1bE!$qUy0JPMqO1tyDZ9=h$hpAD=v1Qff0GRweV zD?mj><+NzSwZb)vN7a{KUjEV94)z#I% zfB*jZ^XIQ$zYZThTvu18P~7?{M!YT6c;S`X+uOTX06022+B0mH%YfS2+Czs9_4V}u z0I>Y`-6~oxhb>RHF3XZjq11`gQam1iKl;#ULBl_LkMy^6Pq8yD*S8K04Xwm#J`Fs0 zzWa2SsBG4Ee}uK`^5>V!4cbjdD(7yr|LIzDv8{NyR;|!6^x(cd%isT7ZZcUu7qI;2 zw~Z>b7)n2MaL?mVp}vY*Lq&C8`0fHI^XwVvawTfH8nax1IFOi1M4-im&=&6v!h`#u zgSlJ%8TkjZPHjK9Tn^NQr5rr4zrLy_Eg@tmNB;mnvn|W%Z~lhMxImB45H~j0!_Jxs z2me2`gg_zyIlzDeL|_y+3jpY4AP=MGEtSag&>9v|W71d-{Zx|Uaqr%y(PHYVK%@>@Xt8< zk&td{r>=YEmj+FEWZhMVpZ_oWa;nzx&Hp6yWL&xuA<8-b;RQDSRMT-|o0MUTm^X>E z&&hWmAX9tUau?dIrT%ikM?h(elExZ#$Q7s zSlfONAx?!wdzy4$_dTp{`bkBHsP54Pw6qsGT zbB?@mPHuKby{XWP11DsD6}qcAJdo89W)_FSH~2tNOsWRDT4M= zwohI5d9mfsZh9?GrC-v3C43%*>M@1)ARB`Jn;YPcWP7X)YmVh+LwzEK+ptHzJ`U+{ zb|8m`-&=YT)zi1^{9t2_>epyq`EB$=^-aQUG25&=6f$*!rps}*zyI!HT*Zmk#Wt!5 zMMTw@=zEc2?FvGpTQefDE`|GOt9It0-?SU*X+fjUz}@o>w9^?@*XOc$;Qfu#h`I+0 zSvK@Hye(TXBl!rEne;ZCqU#gm+?^QB@{EQ6uV}Sq1)-R8?9ta`ZvIZkJDE0}U6fAt zSa5RWi@%ycvO>q{8c^$zYuyPdwQDk()4GA? zJ+`x|ZMe(QK9>d zMoi*`n82#@vHk%Ksw=jKk*SZ8Y@gs>gg2J~>^!^G{2MrDt$p)-|D1!NVAeBz6G{=~ z=@8j#%>`KSvsSAByX)Sc3?nl=z76T6PYWNb6|ukJ1r@=vZVG) z&t@iV#bLq=%?Pohe`h{P_u;5EwomB)UZ_T97R9D31k9pd{sr-nDS_#AF{NYEgAYY1 z3k6M)4yN8;vqSvdy>z5$;|HMIYBw^?bUxa5fN6O$M$8AqRtJ_#am$ny{yr4;ORg38 z3l1|I1*-5v6+0vdHomtw{lFc9$26B<#`Cp(B-9uv5KRYXIuD57)lFPw%)x7 z>9Kd|=+BR^syd!2bMW?-nG@y{$IQzkS?GL~($y>S*l&~W+H*82wiUaMH3hT13r*a4 zlhGy+t#mQLiQQSQTe6b8%W=*Hlp!u=E^IPQ#&*#m0BbKtGbAjV~x4s9~ITNC%X2tkKLs;M8~Ov5`(9-l`MjL2BAHc&pIBEY-n_9K9MC+Cp8~Mk1g7<1nK?PN) zWt!N@#@jxK?vZPlJ0T;O#BsQ(R=j#yN%IK zH+|{vwQ7`jU60$V#`5Xb3%u3_vS+ByNJZ(;hSg###5TU|eFOJ=M`B}8pez#IrWeCfo| zq9@4@@?AMY^OeJ&eD4%bQfY0Xc$CT;+$H+b%4PTawj9+xDS=Tmj(QFYVQWOh#F=p@ zXAn1C|M~3qgz-Tm?IALkC_p2?0DE%33o?(LdHe72PjtdmC++*vj>=uXU9>VY_ zBlX8U8+|OKsP}s!4J&~RryaIiOYOJ8Y6@Ct9~Z&NBxH(z92xl)!etDx(S@vGn^Gb? z0)SJiXrAh3K=rDN!OWn#TUk^d!m6Kw+Rn=BA6J$phc=PSzk34ff)MiK82|OmIJvhJ z;JG%+CP}+LeDxEm0kqVYWk@fQB01xKvUXfJ6t zs#;p*n{(9C=`Z!DPbD6zx!l#18DHce;YdUi{1Ee9lWK~Jlf~2bM|Qq5!bcG9A2{;M z-_P_p`Skv3i>tD{k)<;c$UkhA2;K>Jhl=r@j#1GA)|VpJxEu2`EX-;WPJsXc7*Cjb z{VVgK~NL1=*0CCtw7Hgo|1PcJ*mjJjxB|VwD%TxusNs8+i zqo(Cs@aMN|i$e;y$ntHlGfcRGL_ZSeazz63gaE=Kk7A1v%i>xO6ODNXH<_@tKWO#R zQ2uaBv$Gan9*6_~piU|ThBcs#5{%^Iv=u0jhiNA;UVQS({jhZaP`N}ygnq}lF;M~n z+F9`z%w+82V?A2*r&oI1nuXN^yuu7zqzHC{lYlS=n{0tl77VtHNI>M98e);lufjdE zh~dxIOg;DXi!;pJaW1sM>)Tf`-C z_dBo-|5v>W2S-vN@Hque1@Nm`ysFuR!E|ggA4m=(dUK=Z&S6#>?mn$$p)YkxO0W`c zr4Tc)yTwVdi-n<7RK8MW{G;vXING1v*qaZEl+>&u7J8o;ZWnBR({A$>?yh(Vb`_Aj zMPc?&2vcR2bnKDbL}w+vI%Wn&oShX=Bh|jG9Aa{Yy=6 z15{otIQAv1m)Yv9@YbLWuVhefT`-23@*Sg5C%*?;?_MQ{Gi1xXv;+T?)aBh{hzQ%QIWk4c7>WYjK;!yS;<( zCz!|PGEo%@LNlK$UgezHM|rpa=xwVu=v2uh0NZJCbKr{2jV3c6KoK|aG`e)V7}H$H ztblE9YIC`j07n2gDFI9y-tzq}<#40fjatG=DaJJ%=aa2PR@Qir6DsA__HBDxNRdx$ z$(}UCP8oWDi7=4CG9aLr+p_ix=m7w=668q;ndat#dqa211e^#NCLPFx#lqbLlt_X2 zL`~k{Y3>~7ehY?l1Q2!#Gv7OAxh9myL?*fy#<(6gcAk1vS#n7VF4Ymd6nbYlG?5XM zGh|@T$9u4frj4r(F5k0dZ~+ZkgVI)fE`vKShi#G-t)nBh6SArm@VzJ$TXFb@!)Byb z^0!u-@dW=h@hfcjdBzn4ODU4!sq(2t%U2TIS#wZDj$p*=m6oSy zGuUX>79>fis34esWbipCuuFhAmlJy|pAaZaljfPqwwp9*X!LOr8(Ey#NX~sb?0^jR z;q1<4P^UE5eBqmcrwq*$CovA;IKUo<4wu6CqZ7f5uEYfUIG2c7J;Xk;DnVbx5X+#$ zHZCXVea(qwM-WaiO=Ccp4SnQQR}G|Y`kFFS1PjdE+qC?_03|_bG7TbQt+p8Y3pI`B z*f4(@%0Z%%x_CZSf?n^8hz{$r%MPkNOy440Uz^zUr*EZ&0vnJ4h&cpf<}oc<_tjqb zfH@4qt3~$eb+9N`5qdv+*KN)qht3*6a-f%mOcCP@_=xdxI2=Moa6^s-nOU>EOwzrM z%Ne%841X>HNlQJVSo?ZA)8jAjZQXMEHEv}D^9qy11C8Ux-4=FZiZ3@~%UZCSSE3~(-t~JE1k-=bMFogz$@)7;B`8F&tVp)t!VP1LRhh$5P zy9me_C6c8;+DVMr1e_ayf&oArH1KU7QcW7*_04EilFPq8jQShRxV@I(8jE#ef~gd9 zVzJ4r7qgj$y>^3WWw}DJFQ(*@;hcbciiPxGwZJ6+76SAoEj%T#kpnnG+ z^3is==vJDV6K_Sd3?2`_;t4P!3!ur6qmCMycd^|vqpuOnS_-5@w2_~M(` zNGj){&-1`NVuHVqidc!s;TAJG76OFA`+?1BcTc0g;!YR z-?nn%Ip_%x7(R+bhpFWgzFiE~5(B={QEKA=v)nCUSa-byo15mMa-+ZS#>y))WIPKX z5@60!z*T~k6OGpJF}h)nhar^=slJ&Ku|d*S6k^_`Kspn^vjjM5>rtPS6(i}?KS?Y4 zxktvtQN1bZDQ1QYm}}MbChtE%r5$3x85JEC1IkH8A)l)rqNaU zDm1t&3y7B?_ntLHx+*##OfVGC3aKQx=(O{(W=hbN020MWKfb-H1cT$j93|MNt^v2s zdEeE%Q8-Iq{pj@2vadcb*7{5UIpZwqQ2vBMU?7*Kc!i4!K_#zox&K`CrHipj3uevFaT|EB)hyGgG{BJuigKb#EN~H-rF?@LyJdy>dE0A4ETo(_n&ie}oTq#JIB-}j&1|l-d_bl(V zA}wm=$gNMEb?}#3VFZYDF76zE`nVPBbS|Mni8&_eKK^g`k0L_s>#o5(Q#KDSW8zAU zG@8mN@;(F+z^&Oo+qIC`tS1RtN^PbITwxeQKZX({WxpU4Bz|#S(e74up5D-HE z_a{*Ez@DZm4tL2clCAoR-g8lb6ob+H3WTLf0|FZj-A{~VpP zuCOVd)np5)0e9{F7399&8gv=J3cxkcuw(!&Fvnsf-ChR>PA!}P&I&mP=7WM|#GB=w zK;o2bAMXNN2(T^!t(%YRT-p;a0iL)aLnWA$v3I8bAVS4vlXjcClt?;r;ph2XKbqV; z6Bf$lINozZ3-^Df$WK>luC!p$Gq78YmT4+Y5CSUJD&>MFq-PO9S6!#? zKHaHp0`K7oNJHtC&9?`50LhdJ?&w2Y2L08%-hbG}M;3qqtCps{)CPXL`0c z9{QvI?D^Nzg?H&BqwSwG8p`0i{`SG7Bd&1)Yj@+294S*`%@!%H=iDqaHkmNtL;_t} zPWkMB>XBh_1f0h*APha35vT-H&{z*iagm$(?=MJKiScGzQ+Tj@@W=XR0_uxK{XrHx z(1_A4ePI9+EOPzP;R+=?A49fIc&Lcwpj4<#uC49tQMipOuun9E^dy-?iFu1|q9V9S zj2_c44=k)yHHu-==CQSw)=c2V_$u)s!iE#IynA=em}FG$QnK`1r%e?hHO-JoYAZsi z#xNmS)rb|z!rR-dGdSE5;}mo5`T}RDGrT$dWs<4owXVb2U*0E1#FY=7BB;%z8?H|9 zw3J1#X|Z-Gv9&5XtRz0oulg!^VCyeFFbrFXC_xn|8CulU*QU_2p^r%jTauYg)kV#& zWgOavIhMqK_~4pBzv&;eQKP_z%s#+#bz;M8`UbO(loML+bq<{RQLTLZJuHrj1Qt+QormB;%Z~`6|maf6jB2Vl(W}X-YzNY(hz%sCG0J^S%v--5fS}%QbZj8fYFDESt!G4o z09q1v7#*1q8*gMBTz5+Zp9kDZ)JLeZ0KUdZeqpoDcQk@v7SH0=dZU+NbmtJ5`T8o~ z>l?IQ(H%|E29NxUYbfaj9)_z5W)h3N4%mN@c)1gH*EsmDHB%uabd6zGM4^pZk1!Wh zgDFvFx1~4LBpN~rfA~nRL2?`%4-~LyXt~(}ZyjA)Yty}SKTgSE87^Gtj9D9@)FP}8 zmWv97iz30Pp&Xlng0B@UBl5x>dlgh*-GXLdwiB$8loVN2iVggohIBd}rAVOnJ#kqXjv?hF#2W2*KB>HHG7Y_r zUf_R`5S*?W5^A2V0;wyjM?L~S)WXU~r7YJ#?p4n>0X<4@3A?1;%UOt~(2rTAr5=n= z?%OPM+4a#VeQHy2$`+;-mW(|V=`KC?6Ad&?;?DTdY;N9Up1dr#U z?b>X^3dcW&7@ij4KJs=Z!H;=yE-!-V>_OL#)3Ci>B+ZCU;(+W^Mn=^v^H29zZ%OT3 z8j0O|U>ZrYXJ(sJ8tqHJT5>=vc}h7do^v9F+wO;HKg-#X9Qn)Auv`jE-&Yip6{&`Y z%xKdLR-tH-lVnW1sgWWDPB0{KN95>h-r>t6t^N7TOku<>>h5D>6Ce;}=nqe|Ewao_ z^qct+bMwy>P$_W;BzqAl1|>pN!gdc! z#F+T;_Fj!d#AD+=@72VTc0+&eWs zQPi{D;R6@I$P?FzCkWK($;Fz(zm&*WCyFM2Tm!Zcl!zef6qIhGs$-8Z4L>|h$f+XN z>%Zbyw?y8QJ(yVkd~5zuCl=+QMjq*A_g;%}0k)R;zY>2FC-WVnh#0BUu1!I(Q(1CE zR%64UBS&ph)G!@*V~k2JQ#*SX=Z`cl->g((R(Nv`1h$ztTX``zhzi|2W;>j|bmbSV zitOpX=lEEW;-gdl(&wDJ(2U4)S{xcjHOf_7dk(T1#D7fHCS2c zj;PP2`mTaYqMfW|Qtm+2fpvE**95xTU7rb#tX*T^Oiwk5Oq|+iVr=%|i?2mwcH8$! zoptx>@rS2#w67ZRPa7x?8^vyyMa9T)xuf1N|9*4Kf*sgV_rAjAra(QH?|Yd$i{CUe zs!hLCgWzsd!@RsfoSbthqwR7U^O=gD6qT1LRT;h?<8K~d4z1VmOv`WlFQhj3?9==+ zCWkJLE(%Qa-|umzD1z} zt-O&MZ4yWRw+?lV|pEDD>#}McJg*6YKwAB(E=%z8^!@PPT45 zuQ%M2z(Q0-+{7Ed&9EujhC1Eje{}2F+iACWFtU!{Aj# zk$uQ&tHLU=;OqUHneQsgQns)Ay?-3^WE15;0l<}fpu#{Hc_z-oGnaTRiCaTkc$?ha z&(uhTwB9A9Yx+wX%zkLc8JNmom*9{08rSYQk5OYPOX_-Vt{6xBC|LUbQK| z)%~wcb-BRWea)7B2dn__q(#a35fYZO6C^XQ<&GY6-nl*qH-z9h%yb=z(_ELe7`y#& zzE#RlG0J5;?T+7?EdhkG3b)XqOOK9SpYXDHVE0_z?NKGPO?1meLo?(;W~PQ8iebVZ zN*d&kQ%Ydv-fwT2nG72A*PedCj<^w(uE15CiF((jgZw!Z+$;JK#EAU3xhv%Nz1u~a zjGoaXZ|fhrsndJ6<=g+LzHj>P_1Yz%i<*a7A%(0{KAG4!ipuY0TcW&W!Q8w@xFjZ5 zzIBj{rS5xm@LY#jDqUlt6~0~9l(f5Wb@ovBhuqxp`#0&6=Cj9s@8ZYD-GAlmm>}>W ztXsA-*b^|437?C)93`bG58SIZfz#DU# zRanb+sNmz5i0jMB*4Er0OjlfPD0A2bb8b4ec2_5LXrV!4T1!085ocJoTvrpqEiCcF zRrFWRLd8K!q`XN`_PF!DHcK}JUGT_o2Etawx(u1Ebt*53f|vfe-YjmC3E-N#LxcnY z*7OpoT;jOBxuBej%k8bIc0Su-j2qWAo%JnFt3cAnDk+N>bY0y<5@W;9E8^=eEk8Bm zSlxEG%Brr%RQ@XJjTrdn_Kj7K`E3R{XCew$_oi3Q^jXmBPoC;_bbTiQ(;vGh;t$0gs~aw$Hw;(Ly*^RmYrFPQ zM=PO!9sXnkc=8Ovx!kbMbJ(gj-RwkgQ-}8%J#jH50@=A)-&PN~I}T>l*CgHSY40jJ zpMLqLTOl$1Y|NuI?C}#;X^nTWl~YBlgqyJ%*~7Zcs5c2AE-lIpUGEU4 zsXCQrtINPbIHL@1R!Z+~Dv~3oYVt6;fQ4Rlf(b;f&Zvo|_SuvljGxVSg*&5C?u`ng}d(MuM~4?<35Wgp#4tG}6D zIp!y=_8ke#E?erXL3|SU7vqXA>F8tyB)ZCvf4Cw{aBDnv=?nXmHfKz~XTl@_i_Z6# zqhVREkGzp+FgJm^eN7U4*kTguJ3g@ZBbGHQJz{b#>=i5Le`3S>k2(S$bJ5|<9NHm zN0(zYYS>uhh&ei4lp*&PT9lfvy?*mUXF!wMw}e5&rTY1|jxl2w+@Fk8mqTh)AzcEq z9TP=4inKqjnC?1qwe!f?b5rXLFLo=$p{x2U&G3cN?#KW&&k}Tz82Q__K?Miv-i(Xu z>8x=^A{HR^1we}lZCX2wZC+Eb{lU0wT-t&UXWUu$R!jOzegUmkBr7VYyJ15#i{Yzj zrPa^&->>Y$o#(+8`oRDr*y?_mF%uT;0cn2`EQ8(~U*8ba5!cHfx=h^>>(rO%J@)+k zv!lW3lEzQ$?*fnh+`?WOCNs9?OkCM6qe9>G4cR>u`StsOY#_(PNISE1AnCep?aGob zMg~mV58ZY0MHlyhan*A^sdb<=)He7+Auc+*_7e6x5x4nykpaJy;)<-SrC`b_mmsxh z|MHu$gF#L8K}pxfE_LcrhhLku>K0sSZq+xSvPY-K@BH-5w(>JZ3KHLHe2Oi}f5BcI zGOhKxsHDU`!U@_u=d3BG&|QE{IXIaScgn|Hdr**4QE$s=1xTit$D5@C{iQkBQ5H36K^hQxDDIxxCAb^K$dHdQ|3%!UJRaT= zv>~;yYWiQ#4~Ebe5tjDEC3Y1)Q@fBj+*k-5i-z}bs?ojsSYR@7s7P>@7ZoY^-=Vw|Ho8GOG$=?F5~gRUa3-};1Y z(sEh!?kp;6b{j`C+Rrh4TDyp)W~GH&dGlz=j>$%IHPf@5NYCO^N#>S6OfX+BAS;?E z;P~DB#NFj`WE-=r<>}f~bdvT8+UUTSZ1wCf4kM<1TM7U(&(R|vt6M`%p1m#?{7brO z$ygAV4vh(X)5?wsOLv?ddZjxsz!Qd}6+x1isn6j30Wgw^teAP)IrHpdfG9j1ZTjNj zx0~Z_W@FFZX=IrK;k;)}a@FCiGp^1y^AW^9vYKCF32U@P+gz=E=@kEm6{i0JrFW2W z9P)Q-2v^RBD>X3@$Ylei2)E;!u0)NLv@Xc#Rr|wV**He2QWF7*-6m&`f z2;(EQ(bqGk$r{>baXu#9cBjc0m|l_I0Ree`uhD|6H2?m|e#eFFhj2PlJ5eHRfCuUF zlj)NA)~&9aNT&Xs3y2$!k6NSYl8&B&)s1&ojmbTeK59JRfOs0kOa`$cV8<)ag%8`r zi=rw?fgp}z?2P#*6Bl4qT$AJbM?kSYaXswejgM3jW&tU755S%seC;SQ<}nSVk1-lf zsc`OqM9n}sc=RfEZ4b+QvSUlU6?^OOW*MLk2~8m+Z$apk(=DwkoX*aZ!4Jc~3wE3cGNK8?3Pi}}%8so`F!g`A7)t|35 z-z>JBizxQ%eA@8ierL8?S?1Fn&CFtB7z1#*T%Qay0Pmxbz5Au}Ka$i?xNA%NV=u3I zHVd4-Lv*T8jSyYjbS5Snwo!>DJoMV`rk<={j~WXu7N0bG+<$qhCXn4nix9OQD2?gA zu=35&i$|3^&JO12owhU+a*O(O3DJ9BK5Za<1oaE{weY4RiuUVnspuVkCJ`9%Ax}x+ zGRTG0%wS-WP>)(z(|8Oe*;FT`eik0p+o&jbi0yXMr~0eCm~|d*DQ%v3f3~(5;l~_Z zar#C^4DKJk4sT&z18%{ex_-duO^d*of7(A%`S1RwON&WH2W*O)@M<51dujnAiLiJF zk|`0Cz=D`&06gpHW9e?^i{$;}u!}-U;sIQpuY2F+lS9Ewva~Z`)3pKR{Q<{!^Jgm& zxClBwG;B{OlPVMtoUoVTb;h1@u@jy2ftvIUm%qe#HeU+)U%;1lkmX-e^xlf;sClml z3783uvOw00+FtQ-MMXh1DPr=-VB}iJ4-&tpEkLB*w9Pg|)T24LY`)ZRH z>Wq%>04)4uI>zi#K+QGd0$f=OSpH8x&bUeb`DvNedbNQ7GEJ!7-w5Ra;S`-pUS11L zsF*lfVpjd+(b1uYdW0wHaq^nv0zQ3NjLaBWTYIK8w`*1#4Yuj3Nkd z0vv(Yn`+h-!YXPA3%{wYB&*>rj8L1Jr@b(ry2q~L1BjyL5tKq8Y-{@pbZSK=Lw7u= z;QjnsVaFAL%WBhIC-%%I3L_-a?R!IwU>5()y{3)&JW9f%{<>V>2YtJ244VDVxWr5t z%B(Yz08Na-4VOtQWLWD;0Uu_aatfE1^I>H{=G%^^fwLm*zf@c-?J8qyr)Y>yrHa<- zz23SIlVu(FDkKxVNILatQt_sFvWVHpAC(TZS5E!%# z;&_~L)=i*`Pc0KmjJ(BqgP}~`qLA%PwlNu`nidOsDC{H!55Q6<(WIoAT4|AwCFWG< z^W5~JLmLcE(a&wF%0rzAKb5t_3r6@e3~a)e7Sr;^iKlr-M=n0kLn$y$o93wZu3yU! zlF#2cwd0%h)4`l?vkicJ^c3m}X?1_qVt9pGK73gt)bP7Ek!%vmsdYmx7OSVM^X4~l zV1*&p2|lZr>K+I%coY9cLrb&6esfzT_FcDtC&Cc9g&V%B`Vt!E7GXAa zPhJz@rLF!4rPV5;k*YjWVyagUI))4#zu^M<$g!A^5A<~XtS*TZMbTk4QPRBjm zZ0c4B!ZVYeNGpTyBznMGBFACj-556~U*3P(BScuT{T=tJLtpk1a;>T2VmK_b1c~h0 zy;|1bE~aaoC0-Wi;qYC&<>$C|Z_CGp+*3n1j8xeoN3{Q?-i&bI({*+K|Z->-x!>Y+-@^y-^rYQW6Pz+_hr&#gic2ZhrRUVBjF%E z__h}=cj0D<=D{cT{@RcfxUM7Hc<`CPjit=veho$;m%pnWNo6&te0{%HYq0oJ z&tHv80pL|Wc(|+aSHrB-f!2-{ShwB+^{lO$Fn+a{ka?Oi*y`1tG`cO{s484P$lNd@wFEks%O!ca9_4(CNQTD*IMRgFWi;574Of1}BBxpCFpG>hU#+F>w1?JiwO z?{c*YzqTsZwkUpyWA`x@a7U~ua-HeTX-yhK6fA<6PKlT?EzVm9Zw@+VT6rZ4nc7cq zXm+}dbj}#Xx$dow$PYwm$TnJbtY!hhH0OVH;w}G2s(#;(6GWFylIt>=IvrirNhab& z5~<8lEi@ltD8SKJa98g$wT)vhKu2pE;)0W5 zFet|^e+SkvQhwYHg0ya7P?Y>4)V#eT&qkVX*t4~XsJ%V2GUEHElm8jwIrunn0ZVC^ zhi}9JH00)pqv}E>Jgog6jt&g~j^dACC&!DOM|)g%e`FIDyz<~YXXGk{k9DFSJLxk`r%x3pcNOXY+jk z$#&!y?2nUUYsKsP;8- zHlpB&G*KI()=P{d3I4(hA=_g2v9*l$&p9114es#&t7=H%MzQ>rr1&1{~BPUFvl#~z18m3 z=W0@g*tl7(X{m^kEh<#ck{6!{?IyEzSFildB%+g(NVYhNP|Pre%2 zzq8k6Y5)oHVZ|o3tyRf^+fstrq9{D8muCF|4BMpT*u2k~7wOP$P0qBRht^-An&ccL z&}@8O04xR_t+E9{-#yIgK@vF7*Y8Jymd5KR z+go@fQ{Bc}mhY&;#p7(gYX;z#F|R#T9@_edo)=F(pLuT;ZquWN>sP+NEcsLS zcd_b8rfm9n>kyDxMeJ8nF6x_Hp*;(VZK!Kp-@pk`9dpxD;+TG7+X4fmN5I$!fCiBM z#Xo!SnH_bEks-amhSFc^xJ-yhWou{(tb;+DU^dYnWNLvn@8gJnO+7q084~D71=k!| z8j>NLXS4mR!Ly|*7|$qC;CUdSz*kRZA%+g2k2QWNQ5Qogxhzza0Hg|-aiCTKNPP*@ zWg6>7u^+cAb8K2T7Gp-)BOV>RhOgcb+E9|92mBRW@Q%ZHzF<|R+)R_D;@|A<8IPI8 zSrEvpwa5>@XhZoU;f}>__Pj#rp+X*;XvT^$g#NkBBIrT%F&QHZKrsI z1U8z$LbwB{MIazf23r8s-60GCKr!avGYN?Pzw`?L69hUb&)oxGQvN(?mJB&;HA&n) za_kp(8$zDYBfQJzrqfu~zhqR|&|ep900~la1kokz4eP)_5)`ve26Knh7FcLU5Ja?L zO60ujrXT}QfA|v4gVfxiV0t2&C$oxaP5g21cPnROj%i}yNvw&=&XMKu9g30Umn<6s zhy>&?g-OCXfQzN0`r9^m%HSpJ0Oze}DJS^POUqg)l|C072gP^-fpId+UoEI40F?wG z2!h0VrTbRo?g_abf2%A2@^W0EnpSYuU3BE-5F!giI|@`5WpHMjMm`G-vCxY$Y67Uf zDAQPkG!`I?t3U(YN_K72;IR-%fcm>Oj4Kf3EQk6yp>ZslE2tZK+u7#h>F9x2NQkP1;**DBlOf9zuqa0ccNIh(f-q+DBtRZ;u`T}5 zHcdXeOy@OZ4XM~e784MD3{o|b<1+=Tm?p%CL>s)E9Q86^4FGawVRvK%O$hV{%1JV6 z{_CP?NCQ2uQ37HoWYifGluU@BCTUJ^0zR5set(50K&hTk?p3SNT z+#l_zd=_P_OAV4~WXTvNY%N#01_Y@9GKLy~%6kJe3T-*@Pd#P5$8Jk%yX7K_%<7Jb698Xe79AjR=GhxOEB}fT;Elo&H5RVy^rFD7M{l*~ zpjhj9-iH~_<7 zof(2Lc#w(`C|^+n%LUq77)Y}RQ+SXprNxeK2{!|%{W}6b(=`b!nn^n$%VzkZD5iQnLWRb5gaIx8Lg%sxg6QLqbc| zJSj_HIXGmgw~>q>v`2xs%Ig3Ttm>McY14@p2w)J4{CVf2Se9m}eBy`6H0tz!ChVM{ zxin7!!bCvlgA@QXW61Vd3v#Ui!IjrAKGR6M0`mSOAWE!2zT5-} z`!VZIgE;sSxkiLMFh^zu2`PY_k-5y)%oO19pe_|eYO*XOLt2eO>n0dE{_xgdh&UE+ z!;&}q0!PYNcz3o|g1`dU5o)ng&70r-u=VN{VNAN5@jWH|Ku@Z*yiaZGfscS0FY<3a zu|GM*Y6bDMks;8NBxY?c{MRx`mPVJ8AdaR|#&8$lnJmo|J2gnSa<3fc&bEwVqh1O- zV?nBv4VoDL9sfXw04M-0CS;T(KJJ=~@@r*!GK-ub*syLV0uboB`DlKpGu(k6>mV$x z`(Pi8fe`LkC&y3m(@(sz1O#`JSr2DXsD4?(`_>IlUzWs$EWz?7lOP;zRe{o7tG0Nd zXBCsdDxxhfP$q<{W?-5fGF1tSErI9|$1;~4@0&Pplt_691Rq+3%9l+YND2PhrHcQQ zGr@}I%>U05QdL4}eM4zK7^qNCZOrCbpEYA-ai>`=U--Ax+aHq37AF3K&FtFz1O@7` zgbg?f1QhTpED5(Me8Ga!{ZT_Pxz-Q1vK>=$Mktb5o~y$2tVA%nzh2ymX2>awZq(;j zoEwmP^Wh&(@;7~{v;_czJ{3Cj-@%VEt0@bHREVnlkJ@1n82az;WB`#8{HRPfaPe)x zGtb_qSFgnZ2*$t8#a8K{z|y|$!#X>)BzwWo(6LE?fDry2W|7d3 zH5ORucH6ZWEOO@gn0}cCW3&zh0&rnW0Jq zHtwcUi}qXP(3=xD9vn_zV|x7K9JnxN2^FN*LpBSt;47R|Y&$06d9_khA#Y^4Hmw1r;Lde|1CN(Qc%U^s=KrX=&!{HWH*EAX zX`}&x1QH-X=nw(~1Sz5>p(ALhf*^#Zz(x&4MMa&2B3(cfP{h!rDgjZ7s0pIdRK%|6 z4v30%2W;qe%bWju)>-SE&-swGGSAG)Gxv4&V0oZZhSS1+U)Hp4c(aXWS4s;9}l@AE-HpKZ5GZ*sO#&Hjo}{}jDs z5sfls3<>K#nEds!o#-wh+y9EBeYmuatqFAhwKJt_aMJ_qAkZti4kT-ugWs1pBZ#aJMez|q^zXj`C1Uw0W@7Sx#?zSev&n-xfZ z6ZCJ>fj{vF=Pb;bYv8{v(ZIR=2MV^coDfr&ur^ZlET&3^bYC`1h4?iY~bK|&^U`Vjlua5LHX4IF5} zi1r=EzM&94k*8Wz!v5*FX?Fg3ia&iPbJYQ6wd5~LCbNHcgr!N~o!7Mo1R5#gXOAx^ z0a9|)!P;wAl(VE8AN44))*O6e)~B5i_vhQ@yqYS#RfE<@EkY3gVo@EF}Bid4Kax@>c6N(|d z5=cAYr46t(4~kV8c;|I3AoiMy#EgL3#@i41YrmtgfX5#sKDYkt5TEC|Ee$Y!=2h8v z9Xl8_%}=4fPJ@kD;t{+7JAnZLm5bAqGh^n!4ka~~e2Og-5Q|kai)UwzhpTN_9CxuD z>UuWApe{aK7GGRSpsH@W2N`fYb(PQLWNHn!s2st$X1#O1=gDl|P_ugXFH&-FTTsn@ zV9&Sr9UTaJ07vp(fm`yrB+2NJ!jK#^#XoUs5n@Hc&hK#%XzazK%?$j8ibd>fjILVF zNdU8IMDfkXz(cMe4T+7nB>|GlEwJqM{RP|3;!7($_b?<>i$+*yV z)fv}tj>g`dFD_p}q#-vLScW;K#sV8?CLpnsiC!t3K`=yWFg4)j`+Aj7gzvgANQ&?{ zb2feW^cCJWFPq|hLm3X9%^FpkGUXD3r*P16&4tW1Z&sI?Vd6jLcvomFyD$UtX?p4k z*_h=F0kM5pt0ArhDflNl7k)@CcGHN=2P+wV;^A!iRmrTKUjN(&P&xJi+WCwjQ)-0I zSe}~%@p<$lo0|*ibD*l-Qc|%EeTyZ6;L1@&mt@FQj~FyZhzt$(g^d-!&&lU71V13= zhS^R2Z~-GjPQ#g9c(R01JtQf+?{q-6UCVu|> z>e-_3ZPg})jD|4S5yvZ|bDOOD`P)u}$LGgj2!kwxyolIDmIgY0Dn3ukQ&BZAKatNy zkxrD=7oi5dVY!hV`MWXJSv4Tc+P>SM0QF{w_$;yc^oeK5=dNfzPr3NwL_`}5_CMeO zg8%@4fl&YteLyz=z~1B>ZJYR{+F0BBtmwkap?_8L=Dbh5DLDIn{L*LKttG$5-%H;9 zy7S|YDjs`eq+v1Nk6tx-_6w%Ox8*_mx5C@WeKY5O;8cok&G-B)-q`W@x;t`Znt~MejO%^i0>ayMO<)qRJGpkjVenwz&R3 z+k&XDEyVxVwm9`Yl^ZDp>c9s0O#8oMuM58*d$@xfP~3#RPXmIVSqacGJB| z$)spRz-%Ban{1Qq-c+8AX)kAGV|9Il>s7UfjOWoy*QXI zb-%iWJ?eU#_YK+A?sLoTwoZKVlTPm99~$VA@uE9Ol@;O#@A>dJsb;Ed_qT0xoz-jZ zMcENx$~t=%Umd}!-$*YO`d@LmWyJ5Z6Y0)3-)?4mcdS53-@F#c z>xEfcfBldoYWQET;J*yn9n__irF({V<=SDPAD0vv8xeAm6!zjZjm>l1VS?NEs$}zX zux0FPcp|+Ykb(r}_Ug^}jECcgjj!HBM52ZfM1Ez+MXfM-Nbae~e2k|y;*S6Bs$~6j zZ-tw0Yuuz_lv%tmg061NvCSQo3-KKL;@$UgJ);exz=(hcH3!zaCLXVRbFf*5AKJG4 zxW5ex85_0$u8!VpO=y83nyySu1!=FA71^wJefO5-IM1&UYHS-YjEzrvSc6b6O}L*K zr0YmdQqOXD7Pf3FzkW1V1N9>M{~;@6qkpr{4Y7o{{i{W9t&D%KSUfOqDYgTZi+5L^ zE&ubn32K(&AbVT1WA0E@G9)2D-VSJ&m?kY=s-n-HLS)JcUAO1L^V~S}b zB2pJCwxd^%M(nj~-q-9`xMy`pQ*QYU^R#WA&u7lwU_1U@yEO@R#NgxlLK+Z=q5qZW-)yj`hZ*+#VtAk9gsrA@%Lv%U40QuFR_Y(~Il1ZLS8cejVc5 z{PeUxu&iPD zS;{A_zzF_{f74or*8M2d%hyPGZnH)88-IISevYE@D|(EJc85%}a?-bby;J%~b4!p? z%fQ#o?c0`(_Mb+*6P~?0&{9C`92&+l%quUqzw7gppj^kQ|NHf)dqupxGdW!PnE~|0 z81u;J9Cxs2xL+S%Pr3woIv2;_6YSxPD?WZi0D^2@m|!}^(x~Bw>>__u?+?wXsh;1yH zH7(|dS0}sha_bH3bQ%*wiBa>(I&F0}pfrsJ*BYk{6B1Wtf3XFy2nu`{n_+)=EZ=6& z1z#)?e!}~;h<(t`aNJMK@&#hBO+>u(vu zCr`5Tf)gr3cLthVEgl9ucyOcrtfy<|=irTH5B#RTiW)=CTWihHX+En2D)WYF#XNUy z1S`jR$|E>+obuTFvBATY-G4Qjf5~;3=|)F<>_P@JtFZaQn;E7uT0`bL>qjz7gEv-V zpJd)Z&V#6~=9ZLTHNIjNV!FV=?T6f`Xtok(#DKWN+l{fN`Gutv?Yvpqo{TTcSJ*{B zYQ7u5uSXj+)uYeR?hJ%FoDX!Kj?_wTdOy{yzxC_a-9Z!%;fQ4=_5rErkjE&&QB>i2V%I#Dv5HTYKyAnMf1A*(tbT3ggmi$i)0+EH zkrJA+XC}LRI>8!w|6L?b(_)ZDz`16uA{}04wS{SuaM?YYxSz(FHI^h3-6JjkUbvy( z$|Tw%XII#QeTg9(@8xL6a|ZqzwK2#6OL>Sm_!$~Uf9)&1u8f2OIxcqriU6l&B-c4~ z$5U&aK^~Q05r@2ED%2h0WegOegEC*}Bm(-F4CkAHIU|~6LnW=f6!V-QHj(q6iv>W- z4Rd(5&EZ(J!B^2ebaA%fGj6thlRzz`6~Tl8N_Hj2pby%&UNE2IcI+JY9bk>5z2N3= z`YJ*>OyxPA*jm6NG$?yit9E)5E~Vw(4>`T@@jx}d!0pMLI+1@z4GIK<%?JeLr)-il zwK7Ye2OP|NVc;}XbbZH@{O|SATdAcX!@e*e z@v?IKO0L=+z0#DA95oN#aj)EU)6?Y>61-$Y-+1PGIcamDPPMz2uNbMNzt?!kdy}>A zJz=DL&dInoaBpYts}QE4%4OP!+0xZTc&)Ayh-MjXIbk{l*fA{3{2AX_NBk0NKL$@p zZev6_TV;l7_$lJR`0)r-bW!lBllPTg&caJCnkwF$ETPO7%QaY>o2N3juXyj|YZ&<% zsG`ee-2%?nBp{{04i*g`c5Ttp37i**1bTZ6a-1_qt(VK!#nr<+x#-IxWane_Dt@|N z8448R9GKYDIh;FeSI%bRV4^#o3p80x!{@t7PwJ$YT@dPD+eN$+Kf)T?)%456@gnAQmRJ;gP1L3Y!?M2F9s*1uh3vo?^ zR&oNwb4ddlflHoLcMkcu9RkaOMSfRnpv4)|Fh(HyZzbOdF-tFo=r@Ii^Ibh#y{rt4 zLfD8<3d+$bU8@Y#sX||AK{>K5{)zD)+e>U>p$k{!N3QYl$SJhWc4!M9aoa2-<6(R$ zX=B!~qB#%ydr2)e&%;o1kkt*-q{Wp%YxHLoStfW2ZNo*|9QQBe{6$zWFELLk^^7f7E#HE4=};WTfDl3q-J$@QiZJz0IG9=f8VH?arcQb3f%&P zq6ceeQoxf19$*{f2ROfBYX&XC-3fapMvHZ}WBIh=9+tD(oZnU=&Vi-$ZM1j??ZBU7 z*7y@V)SH5sFM4%?$W$OCz$>{YzhnhDN`@6+oryLgPTGe5h;Bi zO+7&XYIyksk9D5Y7Fua=>$gWNSHjUXG}L@g`~jHdes%Y!mA0oiW@nZx8vE6}#f7u2 zc}exLR*{RNC6Axo0Xb?t8L|ZDMkT-uG@=PAWqYr~qp) zy9O%EpB{#c-Hrsf)x$JZzbdwB3QT;~$}EO~c(IxhKPIgA zU}-l@HX7sKM{p$UU5L?npGqyhzPpZ%ox6eVJc61Guc0cz^J%~k;C)lgDsT?wmkPLx z59d$i9DV|?5#iRa@U8KeLidK#>o~mU>W1yzR{q0;22sXPc6sSyM(HJF#VtakXhRZ* z63%8)4BbxI>MI{YB`_Wjt1l<7Gc}1l?qC8|H}JcT_^S6-Q~TKXFKH z?*h@SkqfA>z>nJv2zJ!F?qCYAx96u8b=>01ENrv*@Y^@15fY8MFp7YiaAG~DaIZTVN<5Spl<9fvDNNi1ricDo0wm6+!G8l)F zm-`zuDJ;xJb-I7K!+NHY1CWvfDDCH>a{>4d52buA+>M#(msdCb!{AZ1{pRwvi`{`r zv*?e;aTjHUMh4ghx!QjyUqmJ0wryv>Q|mCO@sGLY&CFIF0FcV)??EFQ2_g(aHa%*M z>-H-cF<1xlv7Q1C5YBeDME7%13Vmfu84fNhNO5rS;23`x=svQ?`^QQ>>>R=ELK0!` zRO98c7~MrQ&yxU&!M}JQhFPr=aH_1O7paEZ5leMXXJi{_m&Km`oJw?7$PZ;WMTOj- zhlsUAsZ4>x6$ZBiSbsh;Yzm>z0@sznRfFj74C!7H)NX#t0SUT5ro`hR)`?cXuJE^T zGrL-L;NwlR;s&>S(*_MvphXnW!Y7z;3;&XLQM+MzJTUY48JI1))e{%N1+NScd?g#p zM2#q0kj+ZYjj768uGfsW3hzra&N@7B%Rw*z#mcyq9Ltl$l56-stDI6 z@z%az@b*5=lXa}ID3|L$J|c#3dw&x0d5Cqb`_mI`jkrNnGDH^N-;{A zzDiYOel{QVvygS5u*F~jLw!m(O7q1mQdRebs5cx^6479t7pe>`BI-9>VS&MAI2eRv zl!X_=iIexRRm@mlVDK?fCj|!5LZMtC#PGF29kRqjCYPtAcXup3uDQ^C8Rbo9wKaTM`Ql|Stws0MdYv7(~biJ50+xXWSU3+2m*BVm_ zFY?e|pAy=5-c7TfqxVVd28$!DR-f+y7JbaXVRIiQZW94S5MXg~w*-?WT?weFiJhEM z3WjXi2$(B#I8=f(Xf|tS!s8$?ngB(Q}id@7#TzVW(CI z)t~VDUNH&j`|pPZk2lECgYATFUeaA~KRKPUC^dPwKjfxh`d6*~1;Xg2DWok|KV#To zQA$Tcn4l@xVF=^nX*?eb-$8;$@nES<_l{Ni+sP2BA`Ge8j@@g!b&)=o4n)hacf@gb zZM*BIvFjy>9;P8a74%g|7SJ76<)Ar7{He=NN-v>w_#h?+OvRPO?)Pm_l?&5DHIj6@U=n5$%w5p9E&9NUM6GjTI3#Sez-l0@jt?N2~i)CK}FQt=|8PD2!Oy%Q|=K)bSLN$4RDv+(pS5~Vu!rnro(R^LyE;I zrgAWy=@TMTP#3UVJZKAy`ml^2$MU8G7NiBd1VEJiWzvrVTlf-n@zHL{pkq4WDDaet z#GIljWpi(!yWvJOY=o@C?otaf748UxjjLIGJm{7ipfM#l9U{0ZU(~Zz&=oYecWeCx z7T`*QM||NUX;<}kjKjP_(AZwU9Sx>hk zp!H}LHv=7=QW0#PO|BG&sYke4iyKyW=-zAmF6{mgN<}WI> z^6G8F%Mla^-pDpEm{w2`DAF>ygNN7*pxh-eFXnq20Hwlw?gapB7O=f9MF6?HQ{Na4 z;9Ustm2_Ny9C?B0&P=s{e5vL#Y&c&_gXm^Ef@rtZcv4O{CSTC(LpI1N-2yx?;#X_W z5jt2@6NG-^a}Az@ZKw%25~D$~(_;~ke|$PO5@1|HD7_2|lfxB^(^e78Lk0x%5XmCo zBmf{GWB>tuStSioYHiHhb6yO*vg4)yM-{7E>HgW*1jB8T!E)|l70m>0j0v5Ibu1&y z^QzG~y&5Y3zcfZ^)=KGYC&8k(&gIlP)n>mYHNy@={rZE>XAS~)2w(s=G3p*R8Gv2> z0|Y>@t+Xr(6V=5}KQC8&D>(5Tt59@yea4xKz-3)nJGX@GF7WK3YxQ8Yn_)h3Y&eY^ zBQWBoV&m^&|Mnxk${`qukr*+i0vg{`!Krw4x6}Eb+d{W+-2OWCq19|NycmIC!XsYR z>9b&JfB$qmqF7uA1^`&tA_}%tm6Bjx5KIria(NL25B9`^`ksL$eIk%nW_p2ZORA^r z+KUZh-?6-)RE}DXsSw0W9-(g%bpJB!KvNhfTCwdfd&J5q_|>eM-a$mpamulSCHPM@ z2?UJtmUi?UF7yPPX8*e^_XN2sKz*rh{J{0O#%r_JH$CgUNxTuD6q%?JThWZWyPl;d z_pUL`uC#dU-DMFa`~#)yL+sYGa#=RL?VIm0)6GE(|c2!Lkv8d$bcO85hQL zU&zxxip7aoA0!%8(QGoM!bNJTs?caKLHs_0v!T@&7Ln?KZLLCwUb5b~>eb4C}UnX&MVIlWGv`Q%!K;re%_8T2@)}AT4vB zpdesNc_Lyl0nfRnj!!=do<5u-*@7!U^>xx&u zu=o2%IF5e|d~a3adYis!n}6u0?hlaVTO}oPzzNzyGx}ujLuL1_PW8mKXd&7PeJ#!q zd`Ef?PioZZs;n1m{CQiNfm-PK@P0#0{wTp^>SZ(0_~z9GHC%iPJfz_4qvLj${y8+s zxSMxzQ*+UeY@1i#xQMZi>rbpFk##;YBygRvhE_%W{rih%>eI7H?GcnPo1Qlpnz}lh z*vDA8)Tpx8`R_Bk|9r)yRLUy^3Ds14A(Dg`e;2jO7t`{0#MLt1W#k-dAmy z6cS(mrlEUy5_)XKAa#njmClWA^_@ORqVe`=0(?!87h!=6)w7<2T&Egd5P}tF10yGx| z?)#nY(bhdYrZs1>O}OGZS!(6>CrqsWQ9g#a{*(I!>t?Rb^?~VQp5f9& zFw-F$V>>nPYi0Re)qYTcdLr_1rkc-Hnn7U$LzL+&!vqUI;s2R0vR_LazDe@T>P^up zEN-Dx*2D*lW>xqaD&4&55F8=khgN|rB=6kKs*bzH;g>PeHs z&Mp#*9;1yYMST9yQ+7vuU*4(*pKU73-fkuGj$9k^iK}N%+NI8|+MIX8mV8-t5dZL! zd%0w#6#H6s=RMk5?!2?TpjmG*in}fx*k!CN!FY{N1DElg(M!hwViXNjpGko2bADmo zejj^fS#s=98>=n856s&-qJois0zO#it!n7VTuQ&W8o%$~u}Ca~t3OH92s$-kVakGQ z&zm&4&vlR<^H6o6?xesO4=dwvzyQBe|)nktJgPS z=!et$7sDq*4RFZyVOqaM&9Sb<-9A%G71Sq*)V!3$L_HNarBwyk%FTo0pN5Uk zXC{1q&R(&%=GSa-G}69k)7$QUa7(H0<1rAiQJQ0NRWo_{{brS`1%E$^-9f5~^jNWc zZ){B_w!zU;x$6t>azEEis*WquI?DD9lTMp|D@=Nmy3d^J z43C=-gx`t_Pj5tMeZZ0CDyDQH>y|R))i-H_yRi7aJ@1e%%FE)dDLmwyS}w2C2|wy| zH_L8bN{oHkr&h{si_JOOPtU#;H=XKKx}om~=XM(NSHqQu*s+`aBSz74h_}C=*E+sS zxA?rg=8(OtJmT96EYkHL#gdR4h1_JUcP@VWs4I)i6k)%ahveLj$$|n8wl24tZ9i_H z82sij z8nK-M$ax9UttQF)ss&%_Z;sw7IneyzAmg&$)>^|QgFJH4mFJ#zqb{iY-32;3iV^d} zkP+-&;Btr63h(`a<)T}$zh)bC$RhYCKDGFq{Xp8F^`2v=uoelZ5b2f6iyx1lEZN_sW4r!P66Q0jbbx}4;&42_yr5iEQAN&ab8 zhqREUWk}PhO0o!yTgA5iXgKao&1oP;SC`AgQY*FtF~)p?KCt%v>XluqF2IdV3uDdK z36GuKQt7k>(4yrV2+!4_=$z{uhX0VtTFGB6DPR!Z(T^goh+BN6jdJZ_JSkkN$YKc{MG@rD3(gN zMEjHYq?~AGMFqU6o(0}VZG!M_Nstmh*9IVIjcew>NS5%%qlxB|zRrukhz`d(TeOc= z$_m|{wW3>vJ%mfpQ|fW2;X!kBu8fQk4+kuqr8j}5E>5vSUPrvwju&(xD?u0|>V6Y=;QKzTudT=_vq-?b!^*cR_TsbjZ5JYL1D%baa-xrE*!%%!; zPC;Qzvn;={n100sv_`S1(V_tg=+x=2cFZcA95hnzXiT3lT5P|%J_(qD=+Uy=VS>fm z3-Jl+CE#5yq&R zi{pDiEp^h~{UcZ#UDxiN6I!dj41Qsd^ynwyKreMlV3w~>2c4>%boE6l z!Y55+xgg|8<+EOAdgrF&O%-39HRBcwlQSmN;H1=YdWPlY3?p1mSlz@E^-C6*O96L_ z3-QW;FeTPc)Gun6*kaXi#K<32x>N=rzW$Hk2Z(MixDo4e? zovHNJ4_hQ|wgoFt)k=?di3uU!u%hU44RG`s>%0AW<5-KV3zaMFfyXmC3`H<3Wol&h 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

    ddL$DzTX8^AE0|=!X1h6y0MXlJp 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 Ho2`OGA#pHWi*F0iMESc0Tj1@G();lYzs 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

    +p+AKg_WvaVfb(tDMY2jJ? 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%0Dd(&G`2r6yI9$R^td8LfeL2VWh_uw0 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 z00000wFd_z00000g8sj5N1y@#00000000000000000000000000DJ{e2GS;-ahdc0 O0000P)Xu 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 K= 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%0DU;gRuDZ4$hcIC>| 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 z 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 literal 0 HcmV?d00001 diff --git "a/docs/.vuepress/public/img/png/\346\234\215\345\212\241\345\231\250.png" "b/docs/.vuepress/public/img/png/\346\234\215\345\212\241\345\231\250.png" new file mode 100644 index 0000000000000000000000000000000000000000..4127eb56fb55df3676c2ef851e47c3ac0656abe4 GIT binary patch literal 1137 zcmV-%1djWOP)O=&S>{)D1R++xHP zyEfu!_Loh087B~D(H`+Eds;%eNV8y`0I6=vzmyRKylxL=6v`<)ZyZydW^~-RzbQZ8 zXBZh7wIXhvKynm07uLbD5Cnlr-Xah4NgR2O&Am?W(by4uICfZbUw@Rwek|rdn*Q4d zkyM>g_-5)(grJnZp&i?sLD96w?+rf^ zWU{0}ng=6vCLx0tq(AtVb7kot;t&^0A+OZ>;pUq5);}SHj6pb z$IiliHq!b)bNY5cLhY8hOn-?!&>(KGEQAR$oc z>%+vxSMj)i9bCsv^N^ZQz6offuFFD_#Oj+<*!SBXaD+h5!Tlgf=s)u<4>oBStTkA!epy zom=y4yQeo#U?JjB1u5RSgPtezC>$MwtW+`g^;yh*^$qynRrDS|hMw73teN_&1#!C! ztd`SS*hH-5wHinWxcx;0KTm*!faC)6m&)+g_k*~=@|njii9a<7{aYx2gn+m{1@`6; zBo`pg;ScWwzj_UlbNtu)+=9eyC1kfBXi>|nYu94#^6zjz9Y^n}lkj#80R;4n3}gD^ z6PWW{+#c8fKc!){`^%q270MRe_Y5RD1Y(y<&MIc*2M|VXj zV?`5ELmya+aFTvqhF2wDWH)R=Ct;a`qN0bUrHQCO#NYq_{~d;p*w)rXId4OMs8V#E zLNaGVXqLvc$w0&2KD5wAM0r7`$Jfi*E?RfFtGOM5j6#X9Ltu|0lAJ-F!CgRfL{5M@ zJZV6>*Fe78AAE?kqqRURUqW=AHb-wHZh>k(anZxm-P_zkjXotzY%IV?h#X7dO0000TbW%=J095`6{-fgZ=(GKn z!YHKCd;R=AYWn*3&6NHA{idK4c>n+c=59VS`Dr(C9z31kvQh}A+kXfXsDtzFBs=F!%8jzG5biTymyz3@=2URX0PR!Y z6l}(vaO1NeghYVoMkZ(>imT?V%0z&a&C&Y3c6ec71p&a5P~QIVRm=SO37maVZi)NIAb_U^g+=cFo&d82QVI6 zW$aMwDW*!WV>WE0WNmGaq_oC+3$2YV2SrKlwnmmM0#&=0APAXWUJSHvkRSe>&j;Ru z+}??Hnr>?!?~J&+B@1tGb@k@QedN={{r!TF>usY}4BQ%juM4uczkmIAC-U}V?WAQ^ z+zPq|{xQ?#Oc{K-Ljqy zZqXv^UW9oIl*&@5pzuM&D)54SFOs70S}oTqSmSeysbDI4kU{i&zb-qGH#dLu>eGjP z(&*q@bC>e{&nMrj|B+`PLks8g@@X#bUgA7{ z86H8ji}`&1;p?gYsvSdKBl53BxzV1T<+o$V&@v3QZeO(LP)t-sM{rCe zW$+|r@FivNCSmCwYw09p@E>F9C1vm>W$-0s@FZmKC1vm=WbP$p@FivNBxLX;W$`0r z?j>aIBxLU;W$-3x`6XxbCTRAJCJO%m000$qQchC<$m-V(2P76T^KfG2N0)rGsZ%_O z58mZI0005%Nkl(?7X8kQjaoWH#u&3vn}#Zt%Z4(q^`;0J<{rtAi1)#V z;3K3+yhL#N>#<=56RXDBZs{i6GqQL%hGDAXRl3(z@(4wzc$ya(b9t(1e$nMOg^Hg#& zkZJc-%ii8iL+5N72Gh?zqJo`#k(ys9Nb4;jzE0X$zdHxX*YX)}`s51|b5z@BtN#bp zAE+j{w#l6s&K;7M2S{zoMv%K{{Ls|hlAe@Oe>Qd|XTl#Lh|0GXNuLpjOV0V5dQ=LU z)L&-2^=vEOJwlcUyV64hE%U6k9yf`H_5bSM>JJyeBlgI?m8$>%002ovPDHLkV1nm@ BH30ws literal 0 HcmV?d00001 diff --git "a/docs/.vuepress/public/img/png/\347\263\273\347\273\237.png" "b/docs/.vuepress/public/img/png/\347\263\273\347\273\237.png" new file mode 100644 index 0000000000000000000000000000000000000000..87f0de0aa57eec241301e44984e66e70d763b2a4 GIT binary patch literal 1065 zcmV+^1lIeBP)lSxT@IW>1WFm_jZs)I#$HYsabT#I&cjzc$iIx~1kVV74) zdq_@{Q%!)7O?^E!cv4G&TS9$UO@e`bkx@H%Oh$c0QIbztt8Hh2PIReGYN<>|e^r>d zcsO@syyy6@Bc7g~^kH?rial7B#${`V&6752R)AZKxOHlCTcFTvdVpGKnfS#b^KK>g zh$CBPmGjOdRf@k%ZKio>Y;snKUas0-Y>)S@BhXoNZ(eeFY=)VboQ#W+RBE1*k(s|% zcAcG_gjHszeN17u<7;q}RcV`;Y*u1@W*IRW_T#??REpTvg zifdhzQ*G~Hb>Uof^35b$f3;?ap|yiUt5$DZ#?@Dl!^T*0_k|K~#7F#g+L}+CUV5u~Ic@Bt+!$wynF7N=14p zMj8?lLNpvj5U?Dhy|4fO$0pfD5=ctYaoTT2dA!|kcK7WpFL3WHQhp6OxxC>=A|5B# zAe5F@=|zvmMo5AtrM0BTl~$1e1qp@-=P8MKJ8@)4yjBY(=jRg+JCCw<-kF;c_G2*yx) zAG~;T^kB)Vr1tD^XAp{}A(Hynl%tZ(+2GgkU8Zxntf{=8QqJL_t#}ajNH{6iev3 zFSv6QoO2iW`4|7ILcT_jToVON?k?q`a2W)*hl7kIJ1K3PD+EEc$E{7jj1OF%7=eMe*{y?Y^)nQ{rJI?@@cG8w)tlsxH_ti6^G+yvku9T z65gt)Q-fSI$~h<`{!w0VT84BedX-xkwTjJ1WWho_zC6N~XP8a5uDNn0;-&{zJvP>V zp#&4_>Fp3^B|&>oo_=|2WyN7i?4h0Y=p!rZ6T>mH#=bBNA{Y$D0(5XDbReexH<~3y j5Cjzn6Eg|psei$5=gStpe@bkJ00000NkvXXu0mjfnrQKb literal 0 HcmV?d00001 diff --git "a/docs/.vuepress/public/img/png/\347\263\273\347\273\237\345\210\206\346\236\220.png" "b/docs/.vuepress/public/img/png/\347\263\273\347\273\237\345\210\206\346\236\220.png" new file mode 100644 index 0000000000000000000000000000000000000000..208e2597299870c7a3d28935c8b9bab823c445f6 GIT binary patch literal 726 zcmV;{0xA88P)=N_gOq=uu8pj?sj-FH z&39BeU9tcG03~!%PE!EO{CWuHE#EVeZb90?L>#2=m-qN$6wCNh+;Xm+{nN| zZ-dAH00F*9L_t(|0o~R6a+*LC2JjWPfPn~Phl|r@l3q9_1Bs?iMDDt|AN|__8SY#ZZX@_}j%#oQmJ+wIph1M5i)FPvhI+S<#~kU z!+}m!|FWJVqAP1fcGDvyX?r1aG!-`^NntlHMdjh@PlN_q!Z?n#l3-kLOvz*W>Y9;NtZ( z++9gz?53~WcZOXFdoi39hI?4eW5eG*jfa}(Nj>weHFfQ#JvQwB-Zmz3o9!Kx;Y;sc zXx?I@--D$lHh#Xtnme9n!LK(ra8?l2vr=?sr9fk^75{$z0Q)PMP$03_ivR!s07*qo IM6N<$f^mshds_5oY%Kxm6${zbb$ z5Zf&20+3-Ae;CNN58MJI6{dZLAiKaVK=n}W)K5TV3R6K+KpGj8fJTvyzFfcHl@N{tu zsbG9N_4cMs20X1do0Lv@3OcrauRl9~(y0q-+^_BTepvK6?Y!KhtbH=KG=Sj5>`SY5 z{`~anSmB-|ZXn4@fzTRaG|IF^ImU54} zdo83oUKUFD@y-1Ew%yZO@T2E{Rd&&$KN(Y>Xr1d@bFHI9%DP{3cK@7|0JSOCVuk0G z`0UMOJ>=t3uwd2-{%la$ghay&Kia0pMly*%uKfUm3 z@1-n@E*r=9FDF;=2uwY4@?LJvQBj3eA|<`QOO1o)h`X^==3dEW7R-@(r>q#(B>L*H zQT$%hcnQJt;?4(n;APz zF!o(&+5OWUdEftTVmQpLY_-q%+wTaEj&<)B|IBOF+qLg@@$TfQM`5M zyArRCr2@gHAM2So{C|63!Mfxa*ACZjPtPA&Z20KyEYy2#1R ze0qGdw7K<$A>w`_XOGI9o}hn!e`12d+uY*R+umi9&dSZv^@ktOcqNHgGRVlxRZ?5q z-sAhe7xsrB?Z%C8q}Tbd8GwL*_n94Ed%XCb8}^YOU{+SMw6uiXA6;*clV?Aym3Y9Te%hKc zl!9;9kxssubL^`gp^bFl)X4k17wgNNUwW{0V^)E4Xjx=`SYUVGk0w@FY0#fHGfm{P*Dg-u$Q;{@e`Ke8%@A7+(DT%+q`B>-qca zd-_U?u^K1YB0zgSbK~#7Fwbkoe(oh`0aa$OSG65laNK;eG)UwN9 zj4`UAa@p7@#v~F#^y%{d{{x-N<~fI5*k1H~u@^jip7T39W312}A7@wMls#jXUQ8=(6JXyy>YNGf!lvI|Hf~ta%=)snfw`BLNEKQ~jT#Y3=yUFAX z+}~~&UIs~&d!x?3q52Hj5kS9Y&QT5oTABYRTY%GjzN&9 zR*g0x^>dQXUiLLj`w7iB>?mm>mth)QChA~oh)m!zaY(Z~u?=HL$c2cj1(AskH>0Pi zy*NLwP7u*_IF_!*7_6CtB%O{**5O`&ux;m#U3$b6koWYt{K3a^H8cVQdi8yv$p{}l zK!|u>e4Vyf&@pv9e4tPG720g^_{8JF`?VwmJI%Ko#E#>pso-A)T zWUm}8UY6ZeG7-s^EFZc5FPY60Tk|gR+3D8)#u58BPL=tBdQN6v+W#f1ClA=x)?u%M x#haA(7NLU8$$~g_ge>O+S6OBIc;Ag7{{YYNZtonwQo#TK002ovPDHLkV1j4G2vz_9 literal 0 HcmV?d00001 diff --git "a/docs/.vuepress/public/img/png/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234.png" "b/docs/.vuepress/public/img/png/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234.png" new file mode 100644 index 0000000000000000000000000000000000000000..63a1819fcc30a4292b866cdc2eefb4c9539da999 GIT binary patch literal 1169 zcmV;C1aA9@P)@6j4PEO-dS8MiEa%7*j|YR7MX_MlWeXA6a8I zYLRo4rHiRyG-z2VVo4NJMk8KB9al9%YH>$*SSMg;J8xeAP&f-gN*q{67g9zSQ%Dt3 zMIv29AzDQqSzt41S}S8>G-`iag-Ib>F-~wkEMBXXuwgT4Yd~^_WQmMykXkBZND@#+ zM|?sLO+#vzLuHa;HEG7S$#F_{SSDXrCSR9$oI-e`NE1;=6i?O3*G(8!poyYL6H%Fb zo=6r`LT{TnIc5L<|Jc^nK*ZlFU3ft?C9;>(cRO>)3czqz_!7?uD{K~&OxTgLRpDGzS}~YzCuZQLQsH1 zKyyNNp*B)%D*ylhN_0|AQvm4@{V5FV0#rsKUp$PH8|j~^`Td~mPSn=(_=v>^6>H6S zgU8^k;o`S!K`>9T+P`sA|y;q#yT@bvKpWG6%b00Om1L_t(| z0j-sHTjD?v#y7pti*%%Su=lf^r`NLC0LFrXy`1{}Kfnbfng)0KJidSJ1Nmj%nc10u zPY_)sh%$*ohy+qqDn5&Wl#%k(SDG#iq(t>)`56T;kQ{oD9~D%9_Zg~!#OS zE`%KeB6a84dN^FK?c{tD8d`-A_KZmT@_1B<(DH16lp=YVz$4@{Jw461L%(|zfy4!b3&p-lWJMN%0fcfcvUD55d6RV){6TGq$p}4 zYx%j6KonKdrqjpUKEHWNd6XYC*Jg3qSlmO}^L|TIbKR#(;Qz%Zl>U=~8W;!{r&JXY jGzJ2gGC}0lz^Cai&aC*i$Sy&S00000NkvXXu0mjfIdv%> literal 0 HcmV?d00001 diff --git "a/docs/.vuepress/public/img/png/\350\275\257\344\273\266\345\274\200\345\217\221.png" "b/docs/.vuepress/public/img/png/\350\275\257\344\273\266\345\274\200\345\217\221.png" new file mode 100644 index 0000000000000000000000000000000000000000..72c5e852a445807299e9e1c22daa8e633cda25c5 GIT binary patch literal 706 zcmV;z0zLhSP)Put$(RZ?4Acd~G#*R!;?`@R=$q1D92$&Z_~ zXq3yp!Ni58(4Do_fuzvY*xX@%xqOhn_J<&AoYH=z(0Gl#qPf-hvmBhN$-ckA_@Nv% zH$``x$ZTIxhH^&fscE^z+27H^$DAxZK1!{OHsP!(=(UE}szvIoa`KcZv8H^ci-B>6 zx}X*F_5c6?8+1}mQvm&U^>D5Z{qpGNRPHOctER`UtmEgxt9RF}K6g590004jNklJxVt0RC@=MySS&FIS{wMGxynS?7Xm>!{0Btvb67O1_dQ=81?AAul>I&%ekgv oY4rv_mKs{ISgqb@%JV;l59Z0_##l>>Gynhq07*qoM6N<$f{M^&SO5S3 literal 0 HcmV?d00001 diff --git "a/docs/.vuepress/public/img/png/\351\235\242\345\220\221\345\257\271\350\261\241.png" "b/docs/.vuepress/public/img/png/\351\235\242\345\220\221\345\257\271\350\261\241.png" new file mode 100644 index 0000000000000000000000000000000000000000..cd13fa3c65b57aae59f7f4868df2d77b53db3f09 GIT binary patch literal 1321 zcmV+^1=jkBP)aK&rcY;vRBnp@|Nl*BhFEQi|Ns9}bBo#H?f?J(^Y{Ph@c2(^iU0rq6GV)#zt*p6l`Zrm)J`;qWpzRFIpy(A(^GgQ>N>)Ps((VcMRCJ&g$f001C#QchC< z8uKLzUl9g?156-*%rQCsKtMij7XJH{zV5(HyV|C#c8Uf700bpTL_t(|0qxa|a-v8O z2XI^v!g-0hfS9cACK3?i*S`PLU3U*3qYg62OyH{clfqn*V}I36_Za`HOy`(M*9>vS zPndbvi~%>``jOQbGwqroPF6X(KlN>+47dR|;J5@6Oh5}|9CWP_r=OJ@a09NRTucqM%OaxZR7m=t}f3ot=K%D#+3DQv0%=(NA|OF zoMRa4D2f)$78T!meZaxEqKGxt_Y2*!54aH>4H?cbELg?igY%#TXBf*22fg$n_6GI> zN9)YbdWoW}a*ymewK%ZhL}0l{gvWkXM0o4W?s0g4nfXh%dG!~?&RcemqlFd;)^PJ} zq8>*RQLf=)8-KkSZpXM0;;^gX#pw#$IIQmKYK)oEeWeSBo5VC-!-nM+Ef!Ij^S*vZ z>pSBxe!@)YKGupGS!`PAoCs+gV58i9-y-=y%PB-zh|y1a5$`FIafN6RZWudiHTivf|IlQZZ} zfJ~3c9&zV1-6v;Z?efZTI74dj%C@!a=`q1l?UVFoOk2AppayV`lP7DWC+oqtRpPVn+dZTNOn=p?Qj-S&i zTrm*0x&r6u!5xb44>xU1i?(vvasLb9Y`Cn3xT;@Y;I;?upDG7pc0CZhjXO(NgBWM63`9MW{*c-=v`g!h#;!~qPyG~sw%U9M~y4tcT@5zvXXlE%sFu5E;~ zsdAR4%1P^PZ12w|YpN~X*XB4m-K~w`Y|S_soxt`@IM8itZ~_~Tb2Z}LcXc??A8k8)%xQB3#+_-)#E_30f0ymi{vu#(S+=h|CITK6}un%^>_=D;EpZsc< zz+$Q_a%V(M_=jZ2PkG6ORqKML2*<~gk0U1O#T6^QMrBpAG~pbHV%4hhsK&YNid7Vi zq8evZyPB}H;~G}W6+|`8X;&=0IG0=TEm)dxYFL_HIwdL%uKT!dS(Sb5fl7euL$R)O foePEx(UAWD2CIj3K8+Vu00000NkvXXu0mjfUQd|V literal 0 HcmV?d00001 diff --git "a/docs/.vuepress/public/img/png/\351\241\271\347\233\256\347\256\241\347\220\206.png" "b/docs/.vuepress/public/img/png/\351\241\271\347\233\256\347\256\241\347\220\206.png" new file mode 100644 index 0000000000000000000000000000000000000000..0467abd5529a5773e2dd1ca4a2672d7316d0f8bf GIT binary patch literal 10773 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

    o&o;?YrOYUr-F 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 z zxR%bk%DV&LsqT$XK+RZ8O2 zGfp@lxXOnwKlREW!5XuO+edfdrgmv^&2N2l7Vzpz9soEHEB}Fo(lP5xONgYc*GzU4 z(z$5*L+hexFO12N@sk6s$WfyUvsyj>qH9Hm%LaNO=Hl3{nlh%252nacxqxFj9k1#k zz0;WE2?I`PTH|u_4#6YRY6RHhF0AqjX!(wC%pl!Ep&5Pl(f3ofDdU2CYyq3@1JbU7 z3%lkUufn&aT?M)@;tj&IV_0Oe!!6IoT0a^6zmGQ;#vs}^Iqm)vdH7_OBq>8z=oxth zT*#R(-^e9b?VxKWXGgDSf|%s#;I}E?Sk-=GN|~(1KYg%MBDu>P>)nJb{yfRkKi7D< zq$zp!;m;;_80?<$QuBJ_72RdhUBhYDeB)Wdi*M38oro=90A50j#d%nWmjdjD8eS}2 zuBN(wa@jlmg|SgaLo6-OK2LHLZMf=qkKfOi82j!3{jZ^!aU&?+*i$@}`-?cm#aYbu zPCOm7o_lEMA}Yz-ST%85!2l|lf-KCs-KVCOv5kH3y9%OxPLc+BZa7H0Z-Z{QW@wk$ z$d8V?@zkqMJ^R$NL6?9-!OU{tr5yD!%vytMinz4b0eD08wtr#SJKcrxt_qJORT3Pr zCAQLP-#l?=UTC|7)~Rn)?cD*bVRMmSibV4>zfiB!6eZLuVm%1ga5xW^B5mXf-0>&R zJfXW3T4%LuwR`2O&+1|I?e`{{T)XuK=zj9{69q2mZlY^G3g15q_2LCP{i*;1q zc^71`5k6YaBKF3y#YczMW3`P?D>9YM@Yb>ncDd-<<>EV^ zy#2^>Q<{cY z_7|P)(vb62 zSi*481J1r>CSICIY1y{jd$Yh>7RCVRgVU-*EUuK`s#CK$35&dHi=7H@U3D55`>C?+ zM|nwswIA5-j~jY-SsiaFg`~^&v7x%%m^+6%sb>#1HO@+pwRz^{*V8{IYHIgu-2)yL zw^u#(<>&pgU?eQl1RQ`*CtV`eLO5-(PSzaMJJnhLK4yMTWP`|811c%94_>Fb_bE{?+-S2yhg za(ad$EaHh%fWec8=*DAm+!AdqZha?KdgRQah;Pkt7QD;@cihDsoQY`AwRXuDr=#Y6 zh!rBdhWu)B= zT^p~8P_ceQH*zVDIq9qOZaMI>CaplLy4)`tpHrj@_e~srM*?PDx1au}dWEzJu#K1l zHvr>)tb*3seF=26a2H|i;lKCl9KDxq; zt1J-?q82k@Mpp?+wq*qT6aX{P;h5QUVWKP7{MH+N`eq!-m@;+{jpfUaHU;^2QpN2&38We z(P0#?@glYYUixPX*dF>qu$73lNW$Ssm_Ay|VeKz%2Fu<*wlG%agGrCLtAp6QaLO23 zC<)jD9tHRG>~PiIaX<;*3 z_WsdZsg=SErkr$Bs&Ny2o974{fu?5Q(6&s?bK84vCv`mIJ8IicCHXOR4!Q)7O{Ykd zf^5vx#zDVLbr`dh0?zjGqldn4x@ouY_Np(B>{GU>Ty|imoN^WzL&8KH`-B!Swab$w zT{Mnkyfcht@BasHSr`*z2vo$1n?~Q@?UobtNTSVbH7X7H?tr8lsfVBGOcHD9nqyI9vUbuaPdN%RFb2t&0*)mx zj@U}Fd*zVXSB>wh7C^*jgq-k9uiT0%_I83)&t@S3POVciq(ph&GP> zl~!)x2&_&$H>SyPTjsGq6Bo-Dim40Q!)EQf@4Ej?yXLtOMVqokg~9`huq0sZ0|T%( zk`|3vHdv&7>83Z=W$zzbHGy#M9v+@6CF|EzWAe3e(0q9~)tNVPb?m$E?mJqV%(YXG zhdUaz1CM6FjPRL7!7Hx}CobWVIvcn~z^UEXC^~Wkq(Yfo)whz_FF~}Iz>%fo%xk=G z(Ow>H&dc6EhFCZAq*_NEin6RmQmiYzfn)ji5%=6m#tHbYs`%obvld3lQmplc#wp8o zZ$GX$el}*LprzwFzDb=u0RGPDs@TIH^@AyATdUY`b%?#vmEH%Ie4XVe6R?*_OM}gR z+53kU#-4FajP%^FVL*{~Cv7RrFq0PHX!u4hD$0NXG(M+bx#m-nn$WiIeohnMWZc+C zlW3jdtu!FO&PKvD&oPV&j#lk21FhU_aEt}OKuf-!gi#NW%EGeu{}oyN)~(dKnNpmL z&AQBtRzYcaleO-+-`cX!@-XI4|_r_cL7zjiWOVCdR7VC5elyQ2G@=(tR83 z|NQY&>kjxMvtWM&3s+)=yBHZS>$V8T+cHwfd@(v!sO~5FB!Q|`0Io*Bwlsfgrdt=| zIpLKd`;LsWC9}krX)L1)v6};k-#<)Y?}&l1N=+6O3$Dr#?pARDH#eI}Xg3QKOuD)Ke)0a(RqfrcK3jlwTow*{+S2nIN>vgm?|R|5m;u2PxgIPVV1Omy z!j>w$I83$bM0X{s+em73vsC;IT%MgQ>=-AYHGTE#gZVz!W+3JWgd9a%YjW`-mXfC6 zWdZN^nG-G1gMRI$!x|UujhN7~y*JJ&z!rEB_T{7T|M0&d=YFh8Hx#ZxNI=M1ivX|RG*dY>7Uics(#KM!iaJd2g08w3+UEFr_z-ewsc6;JErKK2l$Mw)^rEEX|Ee(=I|@ z0z)qn%X*odtN}S;(~1drUN9Z6c40{=%7~cK77V_W1xd#DkcYjaA$G4xHY+EZhn8bq zvBN8?FbX#$U#!>bJ^ZPWFT_B?QFVWva5Os8k7%JRJM1NJz{H(}`5qw8D;Oy7CuY%`vkGQgg#l%~-1?ujgRydROU zcf^XZO2lrK0*KgG_&Lhg(mi`;rN=><_8#79DDOSG?lA7{H9%0sf z-sHS*fR%F=&%`Y_7XWu_W4i!%s^rP7S57o-dB}zZI0al{#fc(OkmV}f%yZBjOjx7o zM$3YaSlB!2cZ{8|g~-0o%HNW_vs#^bq~A-^^!}{|S7)dy%1SHeZSd7-!Iv7{&Thcq zX#p<|N;l+F6LkP!C^uIcuTQC|DaaEZnp_JtBRCV0NCY#EhSyC2g+JYWks|r^sNsJ;HI(o)zPIUe@j|2l| zb_UvDYqbFPo4ZzL&H07_11Sd4CgLx%@0^`HwAJ2yi<(&OXAYAtl#JSw9K1uQczMOC zpY{OwHd&gzY9LjMe5$n1m8GSn1*mhWQvf`cKT~j> z{n_qbYCe(ug1F*Q(yeY>+rCN=) zJ$B*S@$m~|cvM7frT~~^&2DY)4G}SCIpM?rr^-JID=%otQ($bJIu;QVv5F1fpLpvS zguSD;Qqw%e*z(krui?4d#rgSO3c|nNHp|V>(spyqOP4ys8n$5k;^M{`g+mICB4L0x z?idLe`ZD74bO+|b+?LFzmJzda_KmlWN!UADV0^A_vKB3LRJ%{5jaXAhKM(D z!2QW)vt5q{i~;hjmVwRl8;1JrR}NVh>=TzN#&oX8)l*l(jeEMX1a&VpzzH*12`fiZ zm0v`>G`%O_joGO6?K8k@P;m+{+$h_KbHFlTS#Yjq+<)V>T>~)m`_~p5RfU#q>?{Lzrys8c0yeD$c4HB%w&O4iI7OT^$z2!6 zaP4pkf=OfGr2WpZ4SPoojL9%B92-&HaX)&H3UK0R!P!6~&Z#Zz1-O<2Uf=mdYxCI* za434wmdk3kxe3?nSwlxtd;u4yxv4f@Q^z~(9r4LbS>vS|d%PS$=8z?#BjVq_CR-OU zTf(uk2jG<|_TWs5fjKNsMB`=loBLLU6uNTcSgouuL}+maO#-hv~%0GAQ9pUVswfXOrQf`3wFvZA{O-)=2wt*vK(@3lf+A*>i?nX?17&?s}F3A@=O zWLAaWc&m(y{!w78oTV(+*h0E-J_k&nSq~{BW^(xpA8Y1f2b!7r?qX+QrB+3A-Mt*} zb}*n57|B+OfK&6bB3u9!=UtjB!`^?{N^Ou;^moLcS(+p5-TXXSFZlWsDkGjV!xr3G zT0x6*tu{VBR*M>szfiG7A4`C}Kv+mq8ermO#SosfLM0k9u5CcrTgFBIDljg##jDDo z=8k@kVG;my>$IkKvbF~>gziv8G=?WX1o+0TR#@DcEdnM{(lskqKuilxQ+iq2eQ_QN zhRd+`KLo~xbyr(0823^F?yp{Dg-`1M%f$uo}n-Ch;uH;%=UfteUF95C)tbAty z24XJJDNUH0u-6$3aT)ghN2y!B*r-Fo=ea&Zt5@}SI*D|50S+}JBJp7EI~%Uqb>ej= zD=7e0^?@=A#;aFv0xKOWOr$a{+NY?A5@Bq}=LW<}z>zA^W;SeYu)-u2e$U)264k5- zc)ViDBH@4+W`Th5!aH)UdkcKM#Jit}{o70Yt*3nl93ozl!9t9Kb$eWNd1uW61$hIo)Shgb0ZS*!a^U_}jOA~!8@`_k@Y+>#tkh~F9}Ab&g<@rYa}U64 z@{m7u7uxCJMd?>rvx z#+83>Z8(oYkmuL`S88`u8NJ)#@%8UW7J;s8` zcX>R|a^%U5z>@)%zQq39EW_R>DS7RvQVT9Qi~tBr*Yv_K1Xp1U-= zx!6*Jjtx5WQwo3w&1M-FJy|Jg8W>+30L*U%5|Eo9rvZo!QxWjS_PrskF5YdqYZZ@7 zwIrDsvf%#7vJ3Wq(F-r1<_c|qs}}znR0Xqvq&Sea176>}iw@}v<0w0fjbFg46=b*= zLpoM4LxoH=2of1voSS^)Q|;l=2{FSo7=o&C3O3cfalZG z$LY(TPlKL+@l63vf^l@ydIucTgO#cgeQa3~T4!T7o>+?hLR#pkje~OY!XIWsU6F?AHj?>*k1Su z`i3j#b&=k#NF|${hKQ}M=`&G^pmmuQo^jj{_D|&~;iqw%ZoqDMp+EsEM zno}`imT}u+OI3~GNo97y?e2M3P4Xe6lKF*4^YtaY&*D(bZi5My-p7%){Qj6a=OVpN zV_M3Z=YzZ!{YYz?t000001o>N!us{U>0000000000001K+LXyb_ SV#VeF0000fP$?=h@!wu9>M>i&9aN!NsD$0ssKGa>V8WOL(H@tN3t32dO*OeUpbvCXNsZYh@}5s_3i!3SHj84 z((&0n0%m!9dW(Qsz3Q({5S^BYZp+iPrLeN){o|YeyAUEx>ikdh`EVN|TjuEOzF~0p z)qc9Ri1@AkYJWvv_2Z>~+R=Yc#s{t%vQL&5UJ0+zWpi#*fN$H#p85Bg)3IKi=*ic_ z&qvx$CI)Wm(k_0)SR_v$PmWv_hFmw~J7>+krsms6s5YwKBzpe*o4~QXqM7R0569Zz@2~n<&_@(-q>0>At zqSYADXM@-YeNGlbEc+v>v=9{!B0k@Q@?HmUK1K0g-aJ0tUOk*1BKkZL{r-r#=%C4M#L9OW z{}DvDBVs1xVR!X*ZRYOZ;7wQQ^LQGf-sWbso!H&4k4G=!F-47>6lIrt8YM%S-LonyvjZT}ams*Zm4slugi-9*okR zOw?*|P`K-~{F`Q2<)HjiSMs6PcE8;4tVDCCMDMmtv)Wvikw$PYU%l5`X%M0+_et=q z+wPZ}*7^^fu_*Pc0jCUmEqI*`xNWsXo%?w>D2k60mgo$vfA{ru0DN;-Q&I<@T;cx^ z!@43VdZwUaeR|njj(;hlc^K>B@O69=l%;>sk*|8NygA!jc|YCLpf09=b=vji=Y}1| z161w()_FkJr&KpHT~EEO@$4j{k>()Yib(M6&yC>ETffWX$aiNSdfL(=Bf{Os+Q3%Z zj?z3lFOTQl*%xPr-*6h6761UfXgNu74e!MxSkP-o0LYK$GO{wH|Ed3f%P_2;SEULs z1Zn+@4EDsrLYw?3E+-K#MA@&##QTI>7=YAkPs*SXR zeM`Zj*%I=S8=ZMxpV{llMfVo=ff4cQwU=2nksy4*|C>fI)Ofih=P~(9I{QHkouBK?jiS*r4NlVg)vE^W^;QkqI?4Qm#&B46B|LX znvEA|!Qrwv>%f(n>kj!J?p}1IkeIx zB3Wda*C$*Y^n@)(&h79Vrg8ia+}Tc-44%3@g+X=AeTj@(4!$|s(Uj%({V1V#uJ`6n4I zqk1Q)1pm|F(xSn=3Uix;3#;ddd&R6M<_UOZVrG=}Rgfssx1`RlW=!B&`wsZH{H30F z9IR^O6>r1(uuuObCYE~*bNZii5^JeY|2=#3x6%dr4PvmjC;dmtGc*m=-3d#3Yy0Vn zf9D2qq~9Pe?Oz|=0-_C*RIzx1|GM{O!dT+peF(3oF z&|3xk7Mh_X_RgDKw6`4g`FvkkC8u~{<#IvFj5)Dt_2U(?wf8-zDR|N_-tC(p6fAH^ zikYy|@cR?Cwd8uV?zoZ4ugJ7)B%b8R*Qgo_89b8@SPu=*h>+1Sxl-z6Hdx%1XgDg! z{BHJ-z$aa7;lN|mvBeljLH7fH*|7U<;WF8SSEmwv(~g; zQfV@qa(m1*N0VTe?B9o=g-)ro*?(`Aozm9n|8Q@ep{f2#*z5@WmV;1pW3N_}R3*=U zN50>~>IZ=n2b=Jl@qHnShI8#nOTJlYAs}paqM|D9XCM!MgJ~vdL25S}rdK|R7=O%q z+}`nS8B`tIQs63c97B*plqzP0HOGnMZQ~W4K zWxt*}G?B4xAq~XqELPIgb1rTTP|IfGXgzS(nNYQKfuwYhZEx3x z)ORo^!PJC-!5DWbU8y?cNv!d?NuCH%?eS5aaE$i%cHF}XJWr$nXA_??$g3wn@PE$tjQ`7W?1DDUvMr6C-JSXHm})JD%l36^rxV+fbl=y{%okaWc^t-wRp! z>KkdhOD3$WzEEeN&V)*CS2h_Wy*wWO)a)3~G1~P?&XT0Y!S?OA*Rj`#;`-Ml72s`Q z<)6dW@;IFm^mae5GH1I*ZCx^??A?8_eHHZ-2%zb+SNJ3ta@7pYfi4+2dho zUBz>O8>+l+)aNkN*i@^3{h%jViI489!tPb@H9-M1?LE)R&M7JEd90U4Qt3#(P#Mzd z)WRnTRZ%*Qx}Y#;8qS@M?orh%`xtu*BvDgvLziBWLN}q1AM;~wa&ZSeP*Lf}Gn^id znO;hAJzCMml=71u(@iQSmQ5tEZsPsVV=R!WQ;LM*y(}$lL+j#wb|bFlqn27xnsy0h z(a;wxnmAlz`Q~P)MpLFWfThpKXoRxN+l=c;5%5v6IAf;eMPJ|DCx_1qu8rKY<*ePA zGry$yIWT>pN}EvF!3l=Y&|zoZW;>_GExNMU$;sF8K4Q20rqK=)E13*Zvlo`}QEzI0 zGw)vC+T(}1q<=eVLYtcI-vv>6Si<@b?|NXH-)j|m3Sw~A;&44^@gndmFf12hN6OM% zho8@LLEOFL-aT#v^(-vgrDU~W$RBAmReUeIJXwzXqZ7kcga2BI_w+hUleVAiEdahl z6JlM)SqmR16^}TAk_kq1LsI_jsJME{QRI6OgTBO!<+?uAiau_WNm@%kdVOpxul2k5 zz~qa(i&oQ>%(|TY!QlHWe=(z;eK^+~%g;^gG)Wt)jQK>588*kuvkW;%+?f)~SMeW3 zk>eFvkKYkR+uKzovEuH3(e;s)HUH*SNB>>ziLbWoXu3Ihp5kM|{$3x^gOwuAi-G6Q z7DK)1KuGK4DA6JqW*LS7N0y5#)H*RTX!Y}PAT%FU^@M@XzD*#}*g?l(S)emL5w{fo zUYx@qmU_hZdHUnPR0$6K52fkEi}q|NJ78nLcdc{EA<|xiz6eMiw*Hz zh4P{H!r<7rT5OhfRye;{i3g*kb=sx?+;m*#=SV$be@+$q+KEoc4H{#<7Vgwq(9G2I z&ktdQ;34SE`_C6z5IB#9d~8xZm_QS7SH-Mf zahCac>LczhkiBz<)`|~9{H?VY8%fApqNnpJkl?OV(=Uhui~aDiZioE4ulB5rQu7%t zeTP?j$;Gh_M^Q-VvGIwDAaJ&)s@7xpTbU7x*U@ov*D*tZTn#wew@|W-;ZS`0!i%(C zsyr-u=aT`!T?^VS$MhY-7xTZv;-JLCsQ6WV&ZEx8S%Nj}&}UsUz!;f{N*29YH1Uys#S@$gLBD(^N7BnaP~W#1L1t`%0%0(>Sd4 zlD5{`<+kHS1l~@$9nCBwi9BC_cACDCAp&=mOQFPW9R91zsoyPMV2Wg#vr+e7{Sk`$+^YIcKnDuxQbnx15>8U+=} zfk}*h7~nuai70tAFT5<_)O3sF+C?YH!6=kB;!&HORxMD(zOoYqq;4hS za8HRcc6t0JK?`=KSYs@LdfuP1wc^oS1xn{sCRcFJC(! zTa$X2?^iGqsA$!ydftqXZ(68=<77{%{%xXfi0j0k6U z+*$qBPS}x~E>9ta>cA`(aD{`mqmBoVjzfJ^!^^AGA~F7tVc4d4ig1y$ZU>vGg|ji= zmT$m72|3Q1bq8nFktFwhbBo@kUr73!J9{ZKhv|z=8GHv+Tua=F^(kih4LMR$g}nbV z^_cYonDeCln&iF=g=hZrVBj7@)7r5Dd5Svzd~_U)q3$pfHyupCte*50V-hw=PRq~p zyZSNhf_nszjzCcjEkQ*`<}G5ygw#j`#c_IX_M#4#czO*x{20JrxqE4)LEAE}T{npl zaJt9bHnLes7(}kAtNZZ;4_eQ5{Qj3tTvPC)dKbipxbjUFL!xI9t2bfdQ*%pOhN&sb zu9qzFnrJ6EnmklNpBRsHsS*D&Uh4_$2PmE5Qgz}+M&|t3%N-Jv40T|}kGg2M;li(m z2V+GmbGBHiSg{0E)EgU#H755(SM4ac;gM&2cedA*wibNbNi77m9X6(i$A;h<^T@qB zVl{woqsnDQJ7B6=o6g((=bRYgx;p4k@bb`imNk8KOKU{lHvmO*{h^fNM;U?2R%M{gRkntZDbHLd^s6x4({ck(yu#@{Y(kh8Q*-8oyOUFZN zReo%1>CW71tx`Ttao)TaRJcD$E=AF$8^4lm9hZ{BJ^7q+Ue}I8qZMPCHYO(jL_Kk6 zrx>^-_a!XdvjW%)i(12cV-#`?2Bsx4IQop%zkwtWz==^Z zJ~Ah#{^?fBVcSi=<@b&Z|F>NIgP76;x(eOLkWfwblX54Wa^F_+=<(o8=LzF}!jAJv zvb?v0CTf@8xwQ?;XU;0t-^h(?n?{tDpVhUo@ZuJI3gW|FSzfb?nPb9CHAAu0x1KcM z`uMXd5TD*;5H>(4=~KJjoi)aw1=_Ug&xboStElUNQlip>>^gI;rYdjWK*6UrDg;7F?C0B#f;iy+JLv|0Xe*29sB6H$a$^hfiTar zt!*1G=`o0BQIs#b2k2#_FV&WjklyoBb2iL=VIyhmZ!epf{p>MkS5954F;Hx}5T?08 z2dv2sXTG0;4?m!u8<0md7 zlSVp?)w5V9G|!UA9Ojr6%$(c1dK;z9DzHGLq&N0}j!X6u=D&htU<2i6C|uhy8a3i^ z+58W0Cn^J(FIqF|_?^|gM@>@OV{Ri6y`482(b zy{UXxoTh^IuCd;7*MpiLbc%!9V*L`KCPgf#7l@j(7mkvmf2@7xns%XPOw7>s3@eG> z>m=N`k){pJd}C=B7g+^m0qXZKNX|105*rua=iu4uvR?mMsNXY3SqR{}aB@F+$}Rgd zB@UFpsiC-^!pte_b81LRjnuaC)246snCOk?PucVTlfW$bLLHDhCg|N00 zbISm%*Zt=B`kTV&q+4Sa&`;q~sz5U-gawnFbe!7dFX^X?kLB*%5BGAEp#XcuoOZt# znu<~2ln2o=e2->FRV%wcsGDjq3@>E?M=*&}h|W4{LG}qb{~6wi-mQk#fug?f{H*XR@)ITlEt)jQEyIXv2nYs=YKvK|KHzXU z2p-7y^||`aOnV+jF;;%nLxWSCl?XpYbYAY6QeYHgABa<%q zXo8)%P4K1u4K^q;e(xG5FecM+qW8q?0O**P8wYe*pY|2vw*NtOnb`$&2m?lp+8)6W zUL<4570SB}GUNVjO=i2%$CT-WhSuBu7M9ct=aE(&?&!BB8;3)6(6;RnQse6@*Vv0x z{!_Vy)H2-wh+$?`IuMF_NfKGFP!z0R)QaY}Y6!z4Pn`=C-TNWVbEEJ9OOg=dXK6j zjKr4nwOhJhJBJHUALJo)O=#KZ4%%$IspLqo9_8DD*Le9%^78D9IVET81jR|7{o(al zBxt&bO7?B$QT(C0ftq3|ssHl_tyCB zz7yjpbb1UEN4BrS;u3k9@UNK~c8qmS7T|E#68*cDiZ3SQw>*j$FwoLppHofNgv^j)*Y~9eMpQ#QT8m=>a1~w#W}hGy-`@&=})Q(bZT7iBukG^<<_TU5(Ks|(MRF=y|)1D zK87f&1uBieP%=DDSC8%ZC?TGn6rMV$d)Xf=-VV z9aX_bxM;#vq^6G*TpIJQZs0`#9F_>?^aO^6-!0)j^tuC|;tntL7q6>8#q)qe!&l)I}Elxp5Dfe%&fM=LBI5%@daVA{y^KLjETfk zcS25SKiTMSiq>tN^ua~H-1w{my7^?&_Wo=ZY-;ikJ%VV_$4k{BOoLP^lNV-~>F057 zA}u_kql zhLt<()JR(45(}NOBg6b03pu|T{Us^A7Tg1+-J3$HF%iyHx~wZZS;79&g+64;LRX+_ z`G*EG@tBm#Jhmu+rw4`H;#nFKOLOv84ZY(1?tSt3om$=)lGcvM#fFMeNHuG1ux7&# z7Tj1=QZ0z7$$9!%Llha|Gx4VbW<$5QFXy?3TNBoZaNtHD?}{ z5x}6@WhnhFzm$4~)k;&Knq%N{@k`eTEkb~qYVsmXH%9vwMpWGZVp-uUqavcrWS49l zvVTY~!MqS~?y0=!kI}p?Qf$4pXMGtm%FvKAm8EcN9##cjWklQIM!XWyMk=k_#t-sC4=B1 z)sTG&%jMf5n>(^(8-Y7J98Q1MU7lO`7uk$^^zWoMm*05Udey6|zUauj^MXZ6V;-Mv zK-Y@OIgka8H@^gt+RKq)*$V?fD}*HX#fP7&4}CmR5xEnacbWSd%4Y;<&lS%I*XY$JZWpw5>a zp#$?5oULnAr&N8#mOnqlS(>r9e%mZDa_X_6;k?~kq-A@Zt#zSP^hN`32Qf!Fx{A3L z%YUL@J~)-G7vhG8olmW3#^{jhAw#@4?oY2+AlkNV9*R1+HrE8GV@7z8ffg30?ek1D zNFc7Ogiq!B%@&xP0C{n$z6d>rx0>>S84_$p)bcN`Ykc{OBXr3A(6l-_JnVfOzYCOC zPNkCC=(@I*%@7CLuu+k8?F=Zo`Y==%nI=Wr^I6O4&-70ez;2_wjnQ4%Tx|d9C<{4q zy$XZgRyQ7bmWxpY6^<#3QUHFH9M0R|A`+c`oi(-MR*?b3Fl=hLgSi*x&GryJPj?T= z{t4L4VwbJYtW3r>`WBuRIkrJ0q|OrPVj%-tM`sopnel9PXL4{^@a-OharKrg-&ycfM= z3_B(-_J~9Nl}KfL1iO7fG8s0mtTKg$RJ!t?N_3?Nz~yvjTn5Jf4%v_L?h~`L<%BGW zp$qrAtW#sRtRrgnBZ|iE?|JCH$&;<9w604erAjRi`PKeM9&5QmKQK#rX1ov-Rq@;` zYfS+j5zA^;?fX@oj9h`a3(2VrIJ>xhz@;z1LH5)-nczN7quPt7hktsc#PhTxfzP>j zCoxA?R1ew$^N^~(eSntAmSchv-ZF{><6KW9-CulZ1Hdm5^w;n>y4JQuy?1s}8kq6z zQpioxYB|gC@2(FGDVfX|ksY}Lm%1=Nh3150+rA8j>UU7AaKf=d_JlIE)F+L3^4S2p z>U59)`PLvCbO?JOVC}fL6D$WdvtbQsiAgg=XT35BG+oc!L-pfQS1YkVp{@qzZ0YFI zsTmnIfN@p;BY@p_sy76G>_EG`*@>xM)`iWL!mkrEGG_13)#rBzIl9r`Tmm{}YA^I% z@|U_BknUP9j_!R8RVt`qJtQ|uj@a-n;m#{A(?-yRp*8L;7hfo?_+~vS83z4~69F$n z;&)?6D3&4!BTCWdDz(9WqP3bk9cVinhlg(M-It%8u*U6nx}2G>7KfytXae-p@kcy6 z50^⩔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


    tE*Aw#(<2 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
    aEF&9unLTe}ZA$rSOnWlZ2b>C|_B#xODDczja) z$slY3&L&rJ`xRebwQm!x5Ybt*Pj669fRQgX1d%#{eM=~nVz&jmC!yKV7gtKa_> zVBT+p8WFD1RNNQC$%QtWH`)JVp~^J_c`)uzD?WZ(da-AS2m2?{5ZdG%Pd@Wmi8Z;zp}& zMbfxw!E_{i-q#{jloo_|qY{|6?I5+vFTMlO^4K|B!?XTRz*l$M=0;7swC^^(sX5Kw zzz@JzP{n0-7zSa%&v;1a0Al%9tKG3_-urhZ?lBW1PG3Qt|5jDkXVlMrCYj~-49od`d$yso>KelD08<*i7zSR>O#2C$C<*Gl{5(~;Y1dX@m>)X7GJ zDLbAPe3h%C#5!rW>|=VodogjV$CItIehPRH_`Kh!wC~R5Y1rNOCmJ%CW&sO27EdVo z0?uuA?fM>58!|CM3N!Ji{>s5(#2XgMxls>GN@AkZ^ zKr^OVcE&WkIR6U3M#Xb!-#>7W`_Ac}wmr|XthE(tNjAc-yms@nYrFM-Xq$>MF)zHt zPVxC5&MZ6^zTfDdsZu>UuDh=7eCT#hwYuF8j_tZ2TdnS&t+|a@Yh()KKSyEKz6a5; z@Ne~|QmL+9|MgL#X3I#nMqduE->A4!$rid?EFv7P&y5bG->Ar{9A&y(!nJ*)(!NDd zra(R{)C~)zsLQ3T35N&Uuux!W6StI!!^3S@D6rPLT*Bg9kW$L*a`6TslB;4|kWz|E zo7ibNhupAGXz4DOMqw^UDPN|icf{QwQW V96 + + + + + +Markmap + + + + + + + + diff --git a/docs/.vuepress/styles/index.styl b/docs/.vuepress/styles/index.styl new file mode 100644 index 00000000..3113dd61 --- /dev/null +++ b/docs/.vuepress/styles/index.styl @@ -0,0 +1,93 @@ +.home-wrapper .banner .banner-conent .hero h1{ + font-size 2.8rem!important +} +// 文档中适配 +table + width auto +.page >*:not(.footer),.card-box + box-shadow: none!important + +.page + @media (min-width $contentWidth + 80) + padding-top $navbarHeight!important +.home-wrapper .banner .banner-conent + padding 0 2.9rem + box-sizing border-box +.home-wrapper .banner .slide-banner .slide-banner-wrapper .slide-item a + h2 + margin-top 2rem + font-size 1.2rem!important + p + padding 0 1rem + +// 评论区颜色重置 +.gt-container + .gt-ico-tip + &::after + content: '。( Win + . ) or ( ⌃ + ⌘ + ␣ ) open Emoji' + color: #999 + .gt-meta + border-color var(--borderColor)!important + .gt-comments-null + color var(--textColor) + opacity .5 + .gt-header-textarea + color var(--textColor) + background rgba(180,180,180,0.1)!important + .gt-btn + border-color $accentColor!important + background-color $accentColor!important + .gt-btn-preview + background-color rgba(255,255,255,0)!important + color $accentColor!important + a + color $accentColor!important + .gt-svg svg + fill $accentColor!important + .gt-comment-content,.gt-comment-admin .gt-comment-content + background-color rgba(150,150,150,0.1)!important + &:hover + box-shadow 0 0 25px rgba(150,150,150,.5)!important + .gt-comment-body + color var(--textColor)!important + + +// qq徽章 +.qq + position: relative; +.qq::after + content: "可撩"; + background: $accentColor; + color:#fff; + padding: 0 5px; + border-radius: 10px; + font-size:12px; + position: absolute; + top: -4px; + right: -35px; + transform:scale(0.85); + +// demo模块图标颜色 +body .vuepress-plugin-demo-block__wrapper + &,.vuepress-plugin-demo-block__display + border-color rgba(160,160,160,.3) + .vuepress-plugin-demo-block__footer:hover + .vuepress-plugin-demo-block__expand::before + border-top-color: $accentColor !important; + border-bottom-color: $accentColor !important; + svg + fill: $accentColor !important; + + +// 全文搜索框 +.suggestions + overflow: auto + max-height: calc(100vh - 6rem) + @media (max-width: 719px) { + width: 90vw; + min-width: 90vw!important; + margin-right: -20px; + } + .highlight + color: $accentColor + font-weight: bold diff --git a/docs/.vuepress/styles/palette.styl b/docs/.vuepress/styles/palette.styl new file mode 100644 index 00000000..d98e697a --- /dev/null +++ b/docs/.vuepress/styles/palette.styl @@ -0,0 +1,62 @@ + +// 原主题变量已弃用,以下是vdoing使用的变量,你可以在这个文件内修改它们。 + +//***vdoing主题-变量***// + +// // 颜色 + +// $bannerTextColor = #fff // 首页banner区(博客标题)文本颜色 +// $accentColor = #11A8CD +// $arrowBgColor = #ccc +// $badgeTipColor = #42b983 +// $badgeWarningColor = darken(#ffe564, 35%) +// $badgeErrorColor = #DA5961 + +// // 布局 +// $navbarHeight = 3.6rem +// $sidebarWidth = 18rem +// $contentWidth = 860px +// $homePageWidth = 1100px +// $rightMenuWidth = 230px // 右侧菜单 + +// // 代码块 +// $lineNumbersWrapperWidth = 2.5rem + +// 浅色模式 +.theme-mode-light + --bodyBg: rgba(255,255,255,1) + --mainBg: rgba(255,255,255,1) + --sidebarBg: rgba(255,255,255,.8) + --blurBg: rgba(255,255,255,.9) + --textColor: #004050 + --textLightenColor: #0085AD + --borderColor: rgba(0,0,0,.15) + --codeBg: #f6f6f6 + --codeColor: #525252 + codeThemeLight() + +// 深色模式 +.theme-mode-dark + --bodyBg: rgba(30,30,34,1) + --mainBg: rgba(30,30,34,1) + --sidebarBg: rgba(30,30,34,.8) + --blurBg: rgba(30,30,34,.8) + --textColor: rgb(140,140,150) + --textLightenColor: #0085AD + --borderColor: #2C2C3A + --codeBg: #252526 + --codeColor: #fff + codeThemeDark() + +// 阅读模式 +.theme-mode-read + --bodyBg: rgba(245,245,213,1) + --mainBg: rgba(245,245,213,1) + --sidebarBg: rgba(245,245,213,.8) + --blurBg: rgba(245,245,213,.9) + --textColor: #004050 + --textLightenColor: #0085AD + --borderColor: rgba(0,0,0,.15) + --codeBg: #282c34 + --codeColor: #fff + codeThemeDark() diff --git a/docs/javaee/javaee-interview.md "b/docs/01.JavaEE/01.JavaEE\351\235\242\347\273\217.md" similarity index 99% rename from docs/javaee/javaee-interview.md rename to "docs/01.JavaEE/01.JavaEE\351\235\242\347\273\217.md" index 0f1be619..51779f4f 100644 --- a/docs/javaee/javaee-interview.md +++ "b/docs/01.JavaEE/01.JavaEE\351\235\242\347\273\217.md" @@ -1,3 +1,8 @@ +--- +title: JavaEE 面经 +date: 2020-08-24 19:41:46 +permalink: /pages/b7c6f0/ +--- # JavaEE 面经 ## 1. Servlet diff --git a/docs/javaee/javaee-servlet.md "b/docs/01.JavaEE/02.JavaEE\344\271\213Servlet\346\214\207\345\215\227.md" similarity index 99% rename from docs/javaee/javaee-servlet.md rename to "docs/01.JavaEE/02.JavaEE\344\271\213Servlet\346\214\207\345\215\227.md" index 9de27a64..6962ccb1 100644 --- a/docs/javaee/javaee-servlet.md +++ "b/docs/01.JavaEE/02.JavaEE\344\271\213Servlet\346\214\207\345\215\227.md" @@ -1,4 +1,10 @@ -# Servlet 指南 +--- +title: JavaEE 之 Servlet 指南 +date: 2020-08-24 19:41:46 +permalink: /pages/2d26cc/ +--- + +# JavaEE 之 Servlet 指南 diff --git a/docs/javaee/javaee-jsp.md "b/docs/01.JavaEE/03.JavaEE\344\271\213Jsp\346\214\207\345\215\227.md" similarity index 98% rename from docs/javaee/javaee-jsp.md rename to "docs/01.JavaEE/03.JavaEE\344\271\213Jsp\346\214\207\345\215\227.md" index 37e6fa66..9ab566a7 100644 --- a/docs/javaee/javaee-jsp.md +++ "b/docs/01.JavaEE/03.JavaEE\344\271\213Jsp\346\214\207\345\215\227.md" @@ -1,4 +1,10 @@ -# JSP 指南 +--- +title: JavaEE 之 Jsp 指南 +date: 2020-08-24 19:41:46 +permalink: /pages/002533/ +--- + +# JavaEE 之 Jsp 指南 ## 1. 简介 @@ -456,23 +462,23 @@ JSP 支持所有 Java 逻辑和算术运算符。 下表罗列出了 JSP 常见运算符,优先级从高到底: -| **类别** | **操作符** | **结合性** | -| --------- | ----------------------------------- | ---------- | -| 后缀 | `() [] .` (点运算符) | 左到右 | -| 一元 | `++ - - ! ~` | 右到左 | -| 可乘性 | `* / %` | 左到右 | -| 可加性 | `+ -` | 左到右 | -| 移位 | `>> >>> <<` | 左到右 | -| 关系 | `> >= < <=` | 左到右 | -| 相等/不等 | `== !=` | 左到右 | -| 位与 | `&` | 左到右 | -| 位异或 | `^` | 左到右 | -| 位或 | `|` | 左到右 | -| 逻辑与 | `&&` | 左到右 | -| 逻辑或 | `||` | 左到右 | -| 条件判断 | `?:` | 右到左 | -| 赋值 | `= += -= *= /= %= >>= <<= &= ^= |=` | 右到左 | -| 逗号 | `,` | 左到右 | +| **类别** | **操作符** | **结合性** | +| --------- | -------------------------------- | ---------- | ------ | ------ | +| 后缀 | `() [] .` (点运算符) | 左到右 | +| 一元 | `++ - - ! ~` | 右到左 | +| 可乘性 | `* / %` | 左到右 | +| 可加性 | `+ -` | 左到右 | +| 移位 | `>> >>> <<` | 左到右 | +| 关系 | `> >= < <=` | 左到右 | +| 相等/不等 | `== !=` | 左到右 | +| 位与 | `&` | 左到右 | +| 位异或 | `^` | 左到右 | +| 位或 | ` | ` | 左到右 | +| 逻辑与 | `&&` | 左到右 | +| 逻辑或 | ` | | ` | 左到右 | +| 条件判断 | `?:` | 右到左 | +| 赋值 | `= += -= \*= /= %= >>= <<= &= ^= | =` | 右到左 | +| 逗号 | `,` | 左到右 | ### 3.6. JSP 字面量 diff --git a/docs/javaee/javaee-filter-listener.md "b/docs/01.JavaEE/04.JavaEE\344\271\213Filter\345\222\214Listener.md" similarity index 99% rename from docs/javaee/javaee-filter-listener.md rename to "docs/01.JavaEE/04.JavaEE\344\271\213Filter\345\222\214Listener.md" index 0abf6400..884f3c68 100644 --- a/docs/javaee/javaee-filter-listener.md +++ "b/docs/01.JavaEE/04.JavaEE\344\271\213Filter\345\222\214Listener.md" @@ -1,3 +1,8 @@ +--- +title: JavaEE 之 Filter 和 Listener +date: 2020-08-24 19:41:46 +permalink: /pages/b4b056/ +--- # JavaEE 之 Filter 和 Listener 引入了 Servlet 规范后,你不需要关心 Socket 网络通信、不需要关心 HTTP 协议,也不需要关心你的业务类是如何被实例化和调用的,因为这些都被 Servlet 规范标准化了,你只要关心怎么实现的你的业务逻辑。这对于程序员来说是件好事,但也有不方便的一面。所谓规范就是说大家都要遵守,就会千篇一律,但是如果这个规范不能满足你的业务的个性化需求,就有问题了,因此设计一个规范或者一个中间件,要充分考虑到可扩展性。Servlet 规范提供了两种扩展机制:**Filter**和**Listener**。 diff --git a/docs/javaee/javaee-cookie-sesion.md "b/docs/01.JavaEE/05.JavaEE\344\271\213Cookie\345\222\214Session.md" similarity index 99% rename from docs/javaee/javaee-cookie-sesion.md rename to "docs/01.JavaEE/05.JavaEE\344\271\213Cookie\345\222\214Session.md" index 50953642..9dcff7f6 100644 --- a/docs/javaee/javaee-cookie-sesion.md +++ "b/docs/01.JavaEE/05.JavaEE\344\271\213Cookie\345\222\214Session.md" @@ -1,3 +1,9 @@ +--- +title: JavaEE 之 Cookie 和 Session +date: 2020-08-24 19:41:46 +permalink: /pages/f05db2/ +--- + # JavaEE 之 Cookie 和 Session ## 1. Cookie @@ -16,7 +22,7 @@ Cookie 实际上是存储在客户端上的文本信息,并保留了各种跟 2. 客户端浏览器会把 Cookie 保存下来。 3. 当浏览器再请求该网站时,浏览器把该请求的网址连同 Cookie 一同提交给服务器。服务器检查该 Cookie,以此来辨认用户状态。 -***注:Cookie 功能需要浏览器的支持,如果浏览器不支持 Cookie 或者 Cookie 禁用了,Cookie 功能就会失效。*** +**_注:Cookie 功能需要浏览器的支持,如果浏览器不支持 Cookie 或者 Cookie 禁用了,Cookie 功能就会失效。_** Java 中把 Cookie 封装成了`javax.servlet.http.Cookie`类。 @@ -570,5 +576,5 @@ Cookie 需要浏览器支持才能使用。 ### 3.6. 跨域名 -* Cookie 支持跨域名。 -* Session 不支持跨域名。 +- Cookie 支持跨域名。 +- Session 不支持跨域名。 diff --git a/docs/javaee/README.md b/docs/01.JavaEE/README.md similarity index 61% rename from docs/javaee/README.md rename to docs/01.JavaEE/README.md index 147b5328..107f9c85 100644 --- a/docs/javaee/README.md +++ b/docs/01.JavaEE/README.md @@ -1,12 +1,18 @@ +--- +title: JavaEE +date: 2020-08-24 19:41:46 +permalink: /pages/d14fbc/ +--- + # ☕ JavaEE ## 知识点 -- [JavaEE 面经](javaee-interview.md) -- [JavaEE 之 Servlet 指南](javaee-servlet.md) -- [JavaEE 之 Jsp 指南](javaee-jsp.md) -- [JavaEE 之 Filter 和 Listener](javaee-filter-listener.md) -- [JavaEE 之 Cookie 和 Session](javaee-cookie-sesion.md) +- [JavaEE 面经](01.JavaEE面经.md) +- [JavaEE 之 Servlet 指南](02.JavaEE之Servlet指南.md) +- [JavaEE 之 Jsp 指南](03.JavaEE之Jsp指南.md) +- [JavaEE 之 Filter 和 Listener](04.JavaEE之Filter和Listener.md) +- [JavaEE 之 Cookie 和 Session](05.JavaEE之Cookie和Session.md) ## 学习资料 diff --git a/docs/tool/build/maven/maven-quickstart.md "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/01.Maven\345\205\245\351\227\250\346\214\207\345\215\227.md" similarity index 99% rename from docs/tool/build/maven/maven-quickstart.md rename to "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/01.Maven\345\205\245\351\227\250\346\214\207\345\215\227.md" index 8e455d21..c6e10fe6 100644 --- a/docs/tool/build/maven/maven-quickstart.md +++ "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/01.Maven\345\205\245\351\227\250\346\214\207\345\215\227.md" @@ -1,3 +1,8 @@ +--- +title: maven-quickstart +date: 2022-02-18 08:53:11 +permalink: /pages/5d914e/ +--- # Maven 教程之入门指南 > **📦 本文已归档在 [java-tutorial](https://dunwu.github.io/java-tutorial/#/)** diff --git a/docs/tool/build/maven/maven-pom.md "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/02.Maven\346\225\231\347\250\213\344\271\213pom.xml\350\257\246\350\247\243.md" similarity index 99% rename from docs/tool/build/maven/maven-pom.md rename to "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/02.Maven\346\225\231\347\250\213\344\271\213pom.xml\350\257\246\350\247\243.md" index 02d34f99..81e9fb48 100644 --- a/docs/tool/build/maven/maven-pom.md +++ "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/02.Maven\346\225\231\347\250\213\344\271\213pom.xml\350\257\246\350\247\243.md" @@ -1,3 +1,8 @@ +--- +title: maven-pom +date: 2022-02-18 08:53:11 +permalink: /pages/0eef07/ +--- # Maven 教程之 pom.xml 详解 > **📦 本文已归档在 [java-tutorial](https://dunwu.github.io/java-tutorial/#/)** diff --git a/docs/tool/build/maven/maven-settings.md "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/03.Maven\346\225\231\347\250\213\344\271\213settings.xml\350\257\246\350\247\243.md" similarity index 99% rename from docs/tool/build/maven/maven-settings.md rename to "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/03.Maven\346\225\231\347\250\213\344\271\213settings.xml\350\257\246\350\247\243.md" index 8df72ab9..91846d4c 100644 --- a/docs/tool/build/maven/maven-settings.md +++ "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/03.Maven\346\225\231\347\250\213\344\271\213settings.xml\350\257\246\350\247\243.md" @@ -1,3 +1,8 @@ +--- +title: maven-settings +date: 2022-02-18 08:53:11 +permalink: /pages/25bf00/ +--- # Maven 教程之 settings.xml 详解 > **📦 本文已归档在 [java-tutorial](https://dunwu.github.io/java-tutorial/#/)** diff --git a/docs/tool/build/maven/maven-action.md "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/04.Maven\345\256\236\346\210\230\351\227\256\351\242\230\345\222\214\346\234\200\344\275\263\345\256\236\350\267\265.md" similarity index 99% rename from docs/tool/build/maven/maven-action.md rename to "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/04.Maven\345\256\236\346\210\230\351\227\256\351\242\230\345\222\214\346\234\200\344\275\263\345\256\236\350\267\265.md" index 82d16c3b..45d1e2cd 100644 --- a/docs/tool/build/maven/maven-action.md +++ "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/04.Maven\345\256\236\346\210\230\351\227\256\351\242\230\345\222\214\346\234\200\344\275\263\345\256\236\350\267\265.md" @@ -1,3 +1,8 @@ +--- +title: maven-action +date: 2022-02-18 08:53:11 +permalink: /pages/052fce/ +--- # Maven 实战问题和最佳实践 > **📦 本文已归档在 [java-tutorial](https://dunwu.github.io/java-tutorial/#/)** diff --git a/docs/tool/build/maven/maven-deploy.md "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/05.Maven\346\225\231\347\250\213\344\271\213\345\217\221\345\270\203jar\345\210\260\347\247\201\346\234\215\346\210\226\344\270\255\345\244\256\344\273\223\345\272\223.md" similarity index 99% rename from docs/tool/build/maven/maven-deploy.md rename to "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/05.Maven\346\225\231\347\250\213\344\271\213\345\217\221\345\270\203jar\345\210\260\347\247\201\346\234\215\346\210\226\344\270\255\345\244\256\344\273\223\345\272\223.md" index e4fece0e..ff8b6b4b 100644 --- a/docs/tool/build/maven/maven-deploy.md +++ "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/05.Maven\346\225\231\347\250\213\344\271\213\345\217\221\345\270\203jar\345\210\260\347\247\201\346\234\215\346\210\226\344\270\255\345\244\256\344\273\223\345\272\223.md" @@ -1,3 +1,8 @@ +--- +title: maven-deploy +date: 2022-02-18 08:53:11 +permalink: /pages/bfeaa4/ +--- # Maven 教程之发布 jar 到私服或中央仓库 > **📦 本文已归档在 [java-tutorial](https://dunwu.github.io/java-tutorial/#/)** diff --git a/docs/tool/build/maven/maven-checkstyle-plugin.md "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/06.Maven\346\217\222\344\273\266\344\271\213\344\273\243\347\240\201\346\243\200\346\237\245.md" similarity index 99% rename from docs/tool/build/maven/maven-checkstyle-plugin.md rename to "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/06.Maven\346\217\222\344\273\266\344\271\213\344\273\243\347\240\201\346\243\200\346\237\245.md" index 9699ad59..69b2c24d 100644 --- a/docs/tool/build/maven/maven-checkstyle-plugin.md +++ "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/06.Maven\346\217\222\344\273\266\344\271\213\344\273\243\347\240\201\346\243\200\346\237\245.md" @@ -1,3 +1,8 @@ +--- +title: maven-checkstyle-plugin +date: 2022-02-18 08:53:11 +permalink: /pages/0646c2/ +--- # Maven 插件之代码检查 > **📦 本文已归档在 [java-tutorial](https://dunwu.github.io/java-tutorial/#/)** diff --git a/docs/tool/build/maven/README.md "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/README.md" similarity index 73% rename from docs/tool/build/maven/README.md rename to "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/README.md" index 0a2d0869..09058553 100644 --- a/docs/tool/build/maven/README.md +++ "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/README.md" @@ -1,3 +1,9 @@ +--- +title: Maven 教程 +date: 2022-02-18 08:53:11 +permalink: /pages/285946/ +--- + # Maven 教程 > [Maven](https://github.com/apache/maven) 是一个项目管理工具。它负责管理项目开发过程中的几乎所有的东西。 @@ -12,12 +18,12 @@ ## 📖 内容 -- [Maven 入门指南](maven-quickstart.md) -- [Maven 教程之 pom.xml 详解](maven-pom.md) -- [Maven 教程之 settings.xml 详解](maven-settings.md) -- [Maven 实战问题和最佳实践](maven-action.md) -- [Maven 教程之发布 jar 到私服或中央仓库](maven-deploy.md) -- [Maven 插件之代码检查](maven-checkstyle-plugin.md) +- [Maven 入门指南](01.Maven入门指南.md) +- [Maven 教程之 pom.xml 详解](02.Maven教程之pom.xml详解.md) +- [Maven 教程之 settings.xml 详解](03.Maven教程之settings.xml详解.md) +- [Maven 实战问题和最佳实践](04.Maven实战问题和最佳实践.md) +- [Maven 教程之发布 jar 到私服或中央仓库](05.Maven教程之发布jar到私服或中央仓库.md) +- [Maven 插件之代码检查](06.Maven插件之代码检查.md) ## 📚 资料 diff --git a/docs/tool/build/maven/book.json "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/book.json" similarity index 100% rename from docs/tool/build/maven/book.json rename to "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/book.json" diff --git a/docs/tool/build/maven/cover.jpg "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/cover.jpg" similarity index 100% rename from docs/tool/build/maven/cover.jpg rename to "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/cover.jpg" diff --git a/docs/tool/build/maven/package.json "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/package.json" similarity index 100% rename from docs/tool/build/maven/package.json rename to "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/package.json" diff --git "a/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/sidebar.md" "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/sidebar.md" new file mode 100644 index 00000000..f894087f --- /dev/null +++ "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/sidebar.md" @@ -0,0 +1,11 @@ +--- +title: sidebar +date: 2022-02-18 08:53:11 +permalink: /pages/aecf4a/ +--- +- [Maven 入门指南](01.Maven入门指南.md) +- [Maven 教程之 pom.xml 详解](02.Maven教程之pom.xml详解.md) +- [Maven 教程之 settings.xml 详解](03.Maven教程之settings.xml详解.md) +- [Maven 实战问题和最佳实践](04.Maven实战问题和最佳实践.md) +- [Maven 教程之发布 jar 到私服或中央仓库](05.Maven教程之发布jar到私服或中央仓库.md) +- [Maven 插件之代码检查](06.Maven插件之代码检查.md) diff --git a/docs/tool/build/ant.md "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/02.Ant.md" similarity index 99% rename from docs/tool/build/ant.md rename to "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/02.Ant.md" index f808f4dc..0e324c7b 100644 --- a/docs/tool/build/ant.md +++ "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/02.Ant.md" @@ -1,3 +1,8 @@ +--- +title: ant +date: 2022-02-18 08:53:11 +permalink: /pages/5e5107/ +--- # Ant 简易教程 diff --git a/docs/tool/build/README.md "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/README.md" similarity index 60% rename from docs/tool/build/README.md rename to "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/README.md" index a1be1ce3..99e4b6c5 100644 --- a/docs/tool/build/README.md +++ "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/README.md" @@ -1,4 +1,10 @@ -# 构建工具 +--- +title: Java 构建 +date: 2022-02-18 08:53:11 +permalink: /pages/96e48a/ +--- + +# Java 构建 > Java 项目需要通过 **构建工具** 来管理项目依赖,完成编译、打包、发布、生成 JavaDoc 等任务。 > @@ -10,16 +16,16 @@ ### Maven -- [Maven 入门指南](maven/maven-quickstart.md) -- [Maven 教程之 pom.xml 详解](maven/maven-pom.md) -- [Maven 教程之 settings.xml 详解](maven/maven-settings.md) -- [Maven 实战问题和最佳实践](maven/maven-action.md) -- [Maven 教程之发布 jar 到私服或中央仓库](maven/maven-deploy.md) -- [Maven 插件之代码检查](maven/maven-checkstyle-plugin.md) +- [Maven 入门指南](01.Maven/01.Maven入门指南.md) +- [Maven 教程之 pom.xml 详解](01.Maven/02.Maven教程之pom.xml详解.md) +- [Maven 教程之 settings.xml 详解](01.Maven/03.Maven教程之settings.xml详解.md) +- [Maven 实战问题和最佳实践](01.Maven/04.Maven实战问题和最佳实践.md) +- [Maven 教程之发布 jar 到私服或中央仓库](01.Maven/05.Maven教程之发布jar到私服或中央仓库.md) +- [Maven 插件之代码检查](01.Maven/06.Maven插件之代码检查.md) ### Ant -- [Ant 简易教程](ant.md) +- [Ant 简易教程](02.Ant.md) ## 📚 资料 diff --git a/docs/tool/ide/intellij-idea.md "b/docs/02.Java\350\275\257\344\273\266/02.JavaIDE/01.Intellij.md" similarity index 99% rename from docs/tool/ide/intellij-idea.md rename to "docs/02.Java\350\275\257\344\273\266/02.JavaIDE/01.Intellij.md" index e1bac2d4..152d0f8b 100644 --- a/docs/tool/ide/intellij-idea.md +++ "b/docs/02.Java\350\275\257\344\273\266/02.JavaIDE/01.Intellij.md" @@ -1,3 +1,8 @@ +--- +title: intellij-idea +date: 2022-02-18 08:53:11 +permalink: /pages/6edd70/ +--- # Intellij IDEA 应用指南 ## 快捷键 diff --git a/docs/tool/ide/eclipse.md "b/docs/02.Java\350\275\257\344\273\266/02.JavaIDE/02.Eclipse.md" similarity index 99% rename from docs/tool/ide/eclipse.md rename to "docs/02.Java\350\275\257\344\273\266/02.JavaIDE/02.Eclipse.md" index 15a6ca98..aa362a6f 100644 --- a/docs/tool/ide/eclipse.md +++ "b/docs/02.Java\350\275\257\344\273\266/02.JavaIDE/02.Eclipse.md" @@ -1,3 +1,8 @@ +--- +title: eclipse +date: 2022-02-18 08:53:11 +permalink: /pages/c7fc66/ +--- # Eclipse 应用指南 ## 代码智能提示 diff --git a/docs/tool/ide/vscode.md "b/docs/02.Java\350\275\257\344\273\266/02.JavaIDE/03.VsCode.md" similarity index 92% rename from docs/tool/ide/vscode.md rename to "docs/02.Java\350\275\257\344\273\266/02.JavaIDE/03.VsCode.md" index 3e0b7ac0..73467439 100644 --- a/docs/tool/ide/vscode.md +++ "b/docs/02.Java\350\275\257\344\273\266/02.JavaIDE/03.VsCode.md" @@ -1,3 +1,8 @@ +--- +title: vscode +date: 2022-02-18 08:53:11 +permalink: /pages/efc313/ +--- # vscode 应用指南 ## 快捷键 diff --git "a/docs/02.Java\350\275\257\344\273\266/02.JavaIDE/README.md" "b/docs/02.Java\350\275\257\344\273\266/02.JavaIDE/README.md" new file mode 100644 index 00000000..4f51a305 --- /dev/null +++ "b/docs/02.Java\350\275\257\344\273\266/02.JavaIDE/README.md" @@ -0,0 +1,17 @@ +--- +title: Java IDE +date: 2022-02-18 08:53:11 +permalink: /pages/daa910/ +--- + +# Java IDE + +> 自从有了 **IDE**,写代码从此就告别了刀耕火种的蛮荒时代。 +> +> - [Eclipse](02.Eclipse.md) 是久负盛名的开源 Java IDE,我的学生时代一直使用它写 Java。 +> - 曾经抗拒从转 [Intellij Idea](01.Intellij.md) ,但后来发现真香,不得不说,确实是目前最优秀的 Java IDE。 +> - 你可以在 [vscode](03.VsCode.md) 中写各种语言,只要安装相应插件即可。如果你的项目中使用了很多种编程语言,又懒得在多个 IDE 之间切换,那么就用 vscode 来一网打尽吧。 + +- [Intellij IDEA 应用指南](01.Intellij.md) +- [Eclipse 应用指南](02.Eclipse.md) +- [Vscode 应用指南](03.VsCode.md) diff --git "a/docs/server/Tomcat\345\272\224\347\224\250\346\214\207\345\215\227.md" "b/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/01.Tomcat\345\272\224\347\224\250\346\214\207\345\215\227.md" similarity index 99% rename from "docs/server/Tomcat\345\272\224\347\224\250\346\214\207\345\215\227.md" rename to "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/01.Tomcat\345\272\224\347\224\250\346\214\207\345\215\227.md" index f307a299..1a6a4612 100644 --- "a/docs/server/Tomcat\345\272\224\347\224\250\346\214\207\345\215\227.md" +++ "b/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/01.Tomcat\345\272\224\347\224\250\346\214\207\345\215\227.md" @@ -1,3 +1,8 @@ +--- +title: Tomcat应用指南 +date: 2022-02-18 08:53:11 +permalink: /pages/47a72b/ +--- # Tomcat 应用指南 > 🎁 版本说明 diff --git "a/docs/server/Tomcat\350\277\236\346\216\245\345\231\250.md" "b/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/02.Tomcat\350\277\236\346\216\245\345\231\250.md" similarity index 99% rename from "docs/server/Tomcat\350\277\236\346\216\245\345\231\250.md" rename to "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/02.Tomcat\350\277\236\346\216\245\345\231\250.md" index 92e1ffab..38f5de61 100644 --- "a/docs/server/Tomcat\350\277\236\346\216\245\345\231\250.md" +++ "b/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/02.Tomcat\350\277\236\346\216\245\345\231\250.md" @@ -1,3 +1,8 @@ +--- +title: Tomcat连接器 +date: 2022-02-18 08:53:11 +permalink: /pages/7a6f1b/ +--- # Tomcat 连接器 diff --git "a/docs/server/Tomcat\345\256\271\345\231\250.md" "b/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/03.Tomcat\345\256\271\345\231\250.md" similarity index 99% rename from "docs/server/Tomcat\345\256\271\345\231\250.md" rename to "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/03.Tomcat\345\256\271\345\231\250.md" index 3701affb..fdd8c6ca 100644 --- "a/docs/server/Tomcat\345\256\271\345\231\250.md" +++ "b/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/03.Tomcat\345\256\271\345\231\250.md" @@ -1,3 +1,8 @@ +--- +title: Tomcat容器 +date: 2022-02-18 08:53:11 +permalink: /pages/d11fcc/ +--- # Tomcat 容器 diff --git "a/docs/server/Tomcat\344\274\230\345\214\226.md" "b/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/04.Tomcat\344\274\230\345\214\226.md" similarity index 99% rename from "docs/server/Tomcat\344\274\230\345\214\226.md" rename to "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/04.Tomcat\344\274\230\345\214\226.md" index 259ef5e4..d19ad590 100644 --- "a/docs/server/Tomcat\344\274\230\345\214\226.md" +++ "b/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/04.Tomcat\344\274\230\345\214\226.md" @@ -1,3 +1,8 @@ +--- +title: Tomcat优化 +date: 2022-02-18 08:53:11 +permalink: /pages/942797/ +--- # Tomcat 优化 diff --git a/docs/server/tomcat-and-jetty.md "b/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/05.Tomcat\345\222\214Jetty.md" similarity index 96% rename from docs/server/tomcat-and-jetty.md rename to "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/05.Tomcat\345\222\214Jetty.md" index b7ca24d8..6ec34795 100644 --- a/docs/server/tomcat-and-jetty.md +++ "b/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/05.Tomcat\345\222\214Jetty.md" @@ -1,3 +1,8 @@ +--- +title: tomcat-and-jetty +date: 2022-02-18 08:53:11 +permalink: /pages/0510e9/ +--- ## Tomcat 和 Jetty Web容器Tomcat或Jetty,作为重要的系统中间件,连接着浏览器和你的Web应用,并且支撑着Web程序的运行,可以说,**弄懂了Tomcat和Jetty的原理,Java Web开发对你来说就毫无秘密可言**。 diff --git "a/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/README.md" "b/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/README.md" new file mode 100644 index 00000000..dcbef596 --- /dev/null +++ "b/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/README.md" @@ -0,0 +1,24 @@ +--- +title: Tomcat 教程 +date: 2022-02-18 08:53:11 +permalink: /pages/7efe4a/ +--- + +# Tomcat 教程 + +## 📖 内容 + +- [Tomcat 应用指南](01.Tomcat应用指南.md) +- [Tomcat 连接器](02.Tomcat连接器.md) +- [Tomcat 容器](03.Tomcat容器.md) +- [Tomcat 优化](04.Tomcat优化.md) +- [Tomcat 和 Jetty](05.Tomcat和Jetty.md) + +## 📚 资料 + +- [Tomcat 官网](http://tomcat.apache.org/) +- [深入拆解 Tomcat & Jetty](https://time.geekbang.org/column/intro/100027701) + +## 🚪 传送 + +◾ 🏠 [JAVA-TUTORIAL 首页](https://github.com/dunwu/java-tutorial) ◾ 🎯 [我的博客](https://github.com/dunwu/blog) ◾ diff --git a/docs/server/jetty.md "b/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/02.Jetty.md" similarity index 99% rename from docs/server/jetty.md rename to "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/02.Jetty.md" index b55edb2e..42908fd9 100644 --- a/docs/server/jetty.md +++ "b/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/02.Jetty.md" @@ -1,3 +1,8 @@ +--- +title: jetty +date: 2022-02-18 08:53:11 +permalink: /pages/3e1c53/ +--- # Jetty 应用指南 diff --git a/docs/server/README.md "b/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/README.md" similarity index 58% rename from docs/server/README.md rename to "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/README.md" index fc13a0db..3e62f442 100644 --- a/docs/server/README.md +++ "b/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/README.md" @@ -1,14 +1,19 @@ -# Java 和服务器 +--- +title: Java 服务器 +date: 2022-02-18 08:53:11 +permalink: /pages/7efe4a/ +--- + +# Java 服务器 ## 📖 内容 -- [Tomcat 应用指南](Tomcat应用指南.md) -- [Tomcat 连接器](Tomcat连接器.md) -- [Tomcat 容器](Tomcat容器.md) -- [Tomcat 优化](Tomcat优化.md) -- [Jetty](jetty.md) -- Tomcat 和 Jetty -- [Nginx](https://github.com/dunwu/nginx-tutorial) 📚 +- [Tomcat 应用指南](01.Tomcat/01.Tomcat应用指南.md) +- [Tomcat 连接器](01.Tomcat/02.Tomcat连接器.md) +- [Tomcat 容器](01.Tomcat/03.Tomcat容器.md) +- [Tomcat 优化](01.Tomcat/04.Tomcat优化.md) +- [Tomcat 和 Jetty](01.Tomcat/05.Tomcat和Jetty.md) +- [Jetty](02.Jetty.md) ## 📚 资料 diff --git a/docs/tool/monitor/monitor-summary.md "b/docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/01.\347\233\221\346\216\247\350\257\212\346\226\255\345\267\245\345\205\267.md" similarity index 88% rename from docs/tool/monitor/monitor-summary.md rename to "docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/01.\347\233\221\346\216\247\350\257\212\346\226\255\345\267\245\345\205\267.md" index 3149c6de..db69bfbf 100644 --- a/docs/tool/monitor/monitor-summary.md +++ "b/docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/01.\347\233\221\346\216\247\350\257\212\346\226\255\345\267\245\345\205\267.md" @@ -1,3 +1,8 @@ +--- +title: monitor-summary +date: 2022-02-18 08:53:11 +permalink: /pages/b43fc5/ +--- # 监控工具对比 ## 监控工具发展史 diff --git a/docs/tool/monitor/cat.md "b/docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/02.CAT.md" similarity index 98% rename from docs/tool/monitor/cat.md rename to "docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/02.CAT.md" index 59a129e1..fdae77c3 100644 --- a/docs/tool/monitor/cat.md +++ "b/docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/02.CAT.md" @@ -1,3 +1,8 @@ +--- +title: cat +date: 2022-02-18 08:53:11 +permalink: /pages/d1a2ae/ +--- # Cat ## CAT 简介 diff --git a/docs/tool/monitor/zipkin.md "b/docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/03.Zipkin.md" similarity index 99% rename from docs/tool/monitor/zipkin.md rename to "docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/03.Zipkin.md" index 0b9792b2..bd73e73f 100644 --- a/docs/tool/monitor/zipkin.md +++ "b/docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/03.Zipkin.md" @@ -1,3 +1,8 @@ +--- +title: zipkin +date: 2022-02-18 08:53:11 +permalink: /pages/1b901a/ +--- # Zipkin 应用指南 **Zipkin 是一个基于 Java 开发的、开源的、分布式实时数据跟踪系统(Distributed Tracking System)**。它采集有助于解决服务架构中延迟问题的实时数据。 diff --git a/docs/tool/monitor/skywalking.md "b/docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/04.Skywalking.md" similarity index 97% rename from docs/tool/monitor/skywalking.md rename to "docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/04.Skywalking.md" index f8012e0b..369c4857 100644 --- a/docs/tool/monitor/skywalking.md +++ "b/docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/04.Skywalking.md" @@ -1,3 +1,8 @@ +--- +title: skywalking +date: 2022-02-18 08:53:11 +permalink: /pages/eed458/ +--- # SkyWalking SkyWalking 是一个基于 Java 开发的分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。 diff --git a/docs/tool/monitor/arthas.md "b/docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/05.Arthas.md" similarity index 99% rename from docs/tool/monitor/arthas.md rename to "docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/05.Arthas.md" index a205242b..607485bf 100644 --- a/docs/tool/monitor/arthas.md +++ "b/docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/05.Arthas.md" @@ -1,3 +1,8 @@ +--- +title: arthas +date: 2022-02-18 08:53:11 +permalink: /pages/fb5a70/ +--- # Arthas 应用指南 > `Arthas` 是 Alibaba 开源的 Java 诊断工具 。 diff --git a/docs/tool/monitor/README.md "b/docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/README.md" similarity index 53% rename from docs/tool/monitor/README.md rename to "docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/README.md" index 7cc57e21..abcf2a2d 100644 --- a/docs/tool/monitor/README.md +++ "b/docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/README.md" @@ -1,12 +1,18 @@ -# 微服务调用链监控 +--- +title: Java 监控诊断 +date: 2022-02-18 08:53:11 +permalink: /pages/d365e7/ +--- + +# Java 监控诊断 ## 内容 -- [CAT](cat.md) -- [Zipkin](zipkin.md) -- [SkyWalking](skywalking.md) -- PinPoint -- [Arthas](arthas.md) +- [监控诊断工具](01.监控诊断工具.md) +- [CAT](02.CAT.md) +- [Zipkin](03.Zipkin.md) +- [SkyWalking](04.Skywalking.md) +- [Arthas](05.Arthas.md) ## 资料 diff --git "a/docs/02.Java\350\275\257\344\273\266/README.md" "b/docs/02.Java\350\275\257\344\273\266/README.md" new file mode 100644 index 00000000..9a0c2357 --- /dev/null +++ "b/docs/02.Java\350\275\257\344\273\266/README.md" @@ -0,0 +1,76 @@ +--- +title: Java 软件 +date: 2022-02-18 08:53:11 +permalink: /pages/5e02a1/ +--- + +# Java 软件 + +> 本部分内容主要是 Java 开发领域使用的一些 Java 软件,如构建工具、IDE、服务器、日志中心等等。 + +## 📖 内容 + +### Java 构建 + +> Java 项目需要通过 [**构建工具**](01.Java构建) 来管理项目依赖,完成编译、打包、发布、生成 JavaDoc 等任务。 +> +> - 目前最主流的构建工具是 Maven,它的功能非常强大。 +> - Gradle 号称是要替代 Maven 等构件工具,它的版本管理确实简洁,但是需要学习 Groovy,学习成本比 Maven 高。 +> - Ant 功能比 Maven 和 Gradle 要弱,现代 Java 项目基本不用了,但也有一些传统的 Java 项目还在使用。 + +- [Maven](01.Java构建/01.Maven) 📚 + - [Maven 入门指南](01.Java构建/01.Maven/01.Maven入门指南.md) + - [Maven 教程之 pom.xml 详解](01.Java构建/01.Maven/02.Maven教程之pom.xml详解.md) + - [Maven 教程之 settings.xml 详解](01.Java构建/01.Maven/03.Maven教程之settings.xml详解.md) + - [Maven 实战问题和最佳实践](01.Java构建/01.Maven/04.Maven实战问题和最佳实践.md) + - [Maven 教程之发布 jar 到私服或中央仓库](01.Java构建/01.Maven/05.Maven教程之发布jar到私服或中央仓库.md) + - [Maven 插件之代码检查](01.Java构建/01.Maven/06.Maven插件之代码检查.md) +- [Ant 简易教程](01.Java构建/02.Ant.md) + +### Java IDE + +> 自从有了 [**IDE**](02.JavaIDE),写代码从此就告别了刀耕火种的蛮荒时代。 +> +> - [Eclipse](02.JavaIDE/02.Eclipse.md) 是久负盛名的开源 Java IDE,我的学生时代一直使用它写 Java。 +> - 曾经抗拒从转 [Intellij Idea](02.JavaIDE/01.Intellij.md) ,但后来发现真香,不得不说,确实是目前最优秀的 Java IDE。 +> - 你可以在 [vscode](02.JavaIDE/03.VsCode.md) 中写各种语言,只要安装相应插件即可。如果你的项目中使用了很多种编程语言,又懒得在多个 IDE 之间切换,那么就用 vscode 来一网打尽吧。 + +- [Intellij Idea](02.JavaIDE/01.Intellij.md) +- [Eclipse](02.JavaIDE/02.Eclipse.md) +- [vscode](02.JavaIDE/03.VsCode.md) + +### Java 服务器 + +> Tomcat 和 Jetty 都是 Java 比较流行的轻量级服务器。 +> +> Nginx 是目前最流行的反向代理服务器,也常用于负载均衡。 + +- [Tomcat 应用指南](03.Java服务器/01.Tomcat/01.Tomcat应用指南.md) +- [Tomcat 连接器](03.Java服务器/01.Tomcat/02.Tomcat连接器.md) +- [Tomcat 容器](03.Java服务器/01.Tomcat/03.Tomcat容器.md) +- [Tomcat 优化](03.Java服务器/01.Tomcat/04.Tomcat优化.md) +- [Tomcat 和 Jetty](03.Java服务器/01.Tomcat/05.Tomcat和Jetty.md) +- [Jetty](03.Java服务器/02.Jetty.md) + +### Java 监控诊断 + +> [监控/诊断](04.Java监控诊断) 工具主要用于 Java 应用的运维。通过采集、分析、存储、可视化应用的有效数据,帮助开发者、使用者快速定位问题,找到性能瓶颈。 + +- [监控工具对比](04.Java监控诊断/01.监控诊断工具.md) +- [CAT](04.Java监控诊断/02.CAT.md) +- [Zipkin](04.Java监控诊断/03.Zipkin.md) +- [SkyWalking](04.Java监控诊断/04.Skywalking.md) +- [Arthas](04.Java监控诊断/05.Arthas.md) + +## 📚 资料 + +- **官网** + - [Maven Github](https://github.com/apache/maven) + - [Maven 官方文档](https://maven.apache.org/ref/current) + - [Ant 官方手册](http://ant.apache.org/manual/index.html) +- **书籍** + - [《Maven 实战》](https://book.douban.com/subject/5345682/) + +## 🚪 传送 + +◾ 🏠 [JAVA-TUTORIAL 首页](https://github.com/dunwu/java-tutorial) ◾ 🎯 [我的博客](https://github.com/dunwu/blog) ◾ diff --git a/docs/lib/serialized/javalib-json.md "b/docs/03.Java\345\267\245\345\205\267/01.Java\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/01.JSON\345\272\217\345\210\227\345\214\226.md" similarity index 99% rename from docs/lib/serialized/javalib-json.md rename to "docs/03.Java\345\267\245\345\205\267/01.Java\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/01.JSON\345\272\217\345\210\227\345\214\226.md" index 12145b5a..485a999c 100644 --- a/docs/lib/serialized/javalib-json.md +++ "b/docs/03.Java\345\267\245\345\205\267/01.Java\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/01.JSON\345\272\217\345\210\227\345\214\226.md" @@ -1,3 +1,8 @@ +--- +title: javalib-json +date: 2022-02-18 08:53:11 +permalink: /pages/97fd2c/ +--- # Java 和 JSON 序列化 > JSON(JavaScript Object Notation)是一种基于文本的数据交换格式。几乎所有的编程语言都有很好的库或第三方工具来提供基于 JSON 的 API 支持,因此你可以非常方便地使用任何自己喜欢的编程语言来处理 JSON 数据。 diff --git a/docs/lib/serialized/javalib-binary.md "b/docs/03.Java\345\267\245\345\205\267/01.Java\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/02.\344\272\214\350\277\233\345\210\266\345\272\217\345\210\227\345\214\226.md" similarity index 99% rename from docs/lib/serialized/javalib-binary.md rename to "docs/03.Java\345\267\245\345\205\267/01.Java\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/02.\344\272\214\350\277\233\345\210\266\345\272\217\345\210\227\345\214\226.md" index 60d762d0..7acfb5ad 100644 --- a/docs/lib/serialized/javalib-binary.md +++ "b/docs/03.Java\345\267\245\345\205\267/01.Java\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/02.\344\272\214\350\277\233\345\210\266\345\272\217\345\210\227\345\214\226.md" @@ -1,3 +1,9 @@ +--- +title: javalib-binary +date: 2022-02-18 08:53:11 +permalink: /pages/bcd531/ +--- + # Java 二进制序列化库 ## 简介 diff --git a/docs/lib/serialized/README.md "b/docs/03.Java\345\267\245\345\205\267/01.Java\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/README.md" similarity index 83% rename from docs/lib/serialized/README.md rename to "docs/03.Java\345\267\245\345\205\267/01.Java\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/README.md" index 2552c5dd..7e7c6c07 100644 --- a/docs/lib/serialized/README.md +++ "b/docs/03.Java\345\267\245\345\205\267/01.Java\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/README.md" @@ -1,4 +1,10 @@ -# Java 序列化库 +--- +title: Java 序列化工具 +date: 2022-04-09 11:52:34 +permalink: /pages/f28b5d/ +--- + +# Java 序列化工具 Java 官方的序列化存在许多问题,因此,很多人更愿意使用优秀的第三方序列化工具来替代 Java 自身的序列化机制。 如果想详细了解 Java 自身序列化方式,可以参考:[深入理解 Java 序列化](https://github.com/dunwu/javacore/blob/master/docs/io/java-serialization.md) @@ -10,8 +16,8 @@ Java 官方的序列化存在许多问题,因此,很多人更愿意使用优 ## 内容 -- [JSON](javalib-json.md) - Fastjson、Jackson、Gson -- [二进制](javalib-binary.md) - Protobuf、Thrift、Hessian、Kryo、FST +- [JSON](01.JSON序列化.md) - Fastjson、Jackson、Gson +- [二进制](02.二进制序列化.md) - Protobuf、Thrift、Hessian、Kryo、FST ## 资料 diff --git a/docs/lib/bean/lombok.md "b/docs/03.Java\345\267\245\345\205\267/02.JavaBean\345\267\245\345\205\267/01.Lombok.md" similarity index 99% rename from docs/lib/bean/lombok.md rename to "docs/03.Java\345\267\245\345\205\267/02.JavaBean\345\267\245\345\205\267/01.Lombok.md" index a36b5487..18d88cf9 100644 --- a/docs/lib/bean/lombok.md +++ "b/docs/03.Java\345\267\245\345\205\267/02.JavaBean\345\267\245\345\205\267/01.Lombok.md" @@ -1,3 +1,8 @@ +--- +title: lombok +date: 2022-02-18 08:53:11 +permalink: /pages/401a66/ +--- # Lombok 应用指南 diff --git a/docs/lib/bean/dozer.md "b/docs/03.Java\345\267\245\345\205\267/02.JavaBean\345\267\245\345\205\267/02.Dozer.md" similarity index 99% rename from docs/lib/bean/dozer.md rename to "docs/03.Java\345\267\245\345\205\267/02.JavaBean\345\267\245\345\205\267/02.Dozer.md" index da9f89aa..96b2eb20 100644 --- a/docs/lib/bean/dozer.md +++ "b/docs/03.Java\345\267\245\345\205\267/02.JavaBean\345\267\245\345\205\267/02.Dozer.md" @@ -1,3 +1,8 @@ +--- +title: dozer +date: 2022-02-18 08:53:11 +permalink: /pages/00ad1c/ +--- # Dozer 应用指南 这篇文章是本人在阅读 Dozer 官方文档(5.5.1 版本,官网已经一年多没更新了)的过程中,整理下来我认为比较基础的应用场景。 diff --git "a/docs/03.Java\345\267\245\345\205\267/02.JavaBean\345\267\245\345\205\267/README.md" "b/docs/03.Java\345\267\245\345\205\267/02.JavaBean\345\267\245\345\205\267/README.md" new file mode 100644 index 00000000..f8a4a210 --- /dev/null +++ "b/docs/03.Java\345\267\245\345\205\267/02.JavaBean\345\267\245\345\205\267/README.md" @@ -0,0 +1,14 @@ +--- +title: JavaBean工具 +date: 2022-02-18 08:53:11 +permalink: /pages/676013/ +--- + +# JavaBean 工具 + +## 内容 + +- [Lombok](01.Lombok.md) +- [Dozer](02.Dozer.md) + +## 资料 diff --git a/docs/lib/template/freemark.md "b/docs/03.Java\345\267\245\345\205\267/03.Java\346\250\241\346\235\277\345\274\225\346\223\216/01.Freemark.md" similarity index 99% rename from docs/lib/template/freemark.md rename to "docs/03.Java\345\267\245\345\205\267/03.Java\346\250\241\346\235\277\345\274\225\346\223\216/01.Freemark.md" index 8eff5f72..d42acbdb 100644 --- a/docs/lib/template/freemark.md +++ "b/docs/03.Java\345\267\245\345\205\267/03.Java\346\250\241\346\235\277\345\274\225\346\223\216/01.Freemark.md" @@ -1,3 +1,8 @@ +--- +title: freemark +date: 2022-02-18 08:53:11 +permalink: /pages/de5847/ +--- # Freemark Cheat Sheet > FreeMarker 是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML 网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个 Java 类库,是一款程序员可以嵌入他们所开发产品的组件。 diff --git a/docs/lib/template/thymeleaf.md "b/docs/03.Java\345\267\245\345\205\267/03.Java\346\250\241\346\235\277\345\274\225\346\223\216/02.Thymeleaf.md" similarity index 99% rename from docs/lib/template/thymeleaf.md rename to "docs/03.Java\345\267\245\345\205\267/03.Java\346\250\241\346\235\277\345\274\225\346\223\216/02.Thymeleaf.md" index 7c6b46bf..cd5274b1 100644 --- a/docs/lib/template/thymeleaf.md +++ "b/docs/03.Java\345\267\245\345\205\267/03.Java\346\250\241\346\235\277\345\274\225\346\223\216/02.Thymeleaf.md" @@ -1,3 +1,8 @@ +--- +title: thymeleaf +date: 2022-02-18 08:53:11 +permalink: /pages/a22636/ +--- # Thymeleaf Cheat Sheet ## 标准方言 diff --git a/docs/lib/template/velocity.md "b/docs/03.Java\345\267\245\345\205\267/03.Java\346\250\241\346\235\277\345\274\225\346\223\216/03.Velocity.md" similarity index 98% rename from docs/lib/template/velocity.md rename to "docs/03.Java\345\267\245\345\205\267/03.Java\346\250\241\346\235\277\345\274\225\346\223\216/03.Velocity.md" index d4d3a621..5d0eb68e 100644 --- a/docs/lib/template/velocity.md +++ "b/docs/03.Java\345\267\245\345\205\267/03.Java\346\250\241\346\235\277\345\274\225\346\223\216/03.Velocity.md" @@ -1,3 +1,8 @@ +--- +title: velocity +date: 2022-02-18 08:53:11 +permalink: /pages/cbd973/ +--- # Velocity Cheat Sheet **Velocity (简称 VTL)是一个基于 Java 的模版引擎**。它允许 web 页面设计者引用 JAVA 代码预定义的方法。Web 设计者可以根据 MVC 模式和 JAVA 程序员并行工作,这意味着 Web 设计者可以单独专注于设计良好的站点,而程序员则可单独专注于编写底层代码。Velocity 将 Java 代码从 web 页面中分离出来,使站点在长时间运行后仍然具有很好的可维护性,并提供了一个除 JSP 和 PHP 之外的可行的被选方案。 diff --git a/docs/lib/template/README.md "b/docs/03.Java\345\267\245\345\205\267/03.Java\346\250\241\346\235\277\345\274\225\346\223\216/README.md" similarity index 79% rename from docs/lib/template/README.md rename to "docs/03.Java\345\267\245\345\205\267/03.Java\346\250\241\346\235\277\345\274\225\346\223\216/README.md" index 4cad92b7..0ca3b721 100644 --- a/docs/lib/template/README.md +++ "b/docs/03.Java\345\267\245\345\205\267/03.Java\346\250\241\346\235\277\345\274\225\346\223\216/README.md" @@ -1,8 +1,14 @@ -# 模板引擎 +--- +title: Java 模板引擎 +date: 2022-02-18 08:53:11 +permalink: /pages/87a191/ +--- + +# Java 模板引擎 模板引擎不属于特定技术领域,它是跨领域跨平台的概念。 模板引擎的作用就是分离业务数据和最终呈现内容,它可以生成特定格式的文档(模板) 。 -模板引擎简单来说,就是:***`模板 + 数据模型 = 输出`*** +模板引擎简单来说,就是:**_`模板 + 数据模型 = 输出`_** 较早,也比较经典的模板引擎是 JavaEE 的标准技术 JSP。 @@ -10,8 +16,8 @@ - **性能差** - JSP 本质上是 Servlet,第一次请求 JSP 页面,必须要在 web 服务器中编译成 servlet,所以第一次响应较慢。 - - 每次请求 JSP 都是访问servlet再用输出流输出的html页面。 - - JSP中的内容很多,页面响应会很慢,因为是同步加载。 + - 每次请求 JSP 都是访问 servlet 再用输出流输出的 html 页面。 + - JSP 中的内容很多,页面响应会很慢,因为是同步加载。 - **无法前后端分离** - 动态资源和静态资源全部耦合在一起,无法做到前后端分离。一旦服务器出现状况,前后台一起玩完。 - 而且 Java 工程师既当爹又当妈,又要维护 Java 代码,又要维护 JSP 代码,痛苦。 @@ -26,9 +32,9 @@ ## 内容 -- [Freemark](freemark.md) -- [Thymeleaf](thymeleaf.md) -- [Velocity](velocity.md) +- [Freemark](01.Freemark.md) +- [Thymeleaf](02.Thymeleaf.md) +- [Velocity](03.Velocity.md) ## 资源 diff --git a/docs/test/junit.md "b/docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/01.Junit.md" similarity index 99% rename from docs/test/junit.md rename to "docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/01.Junit.md" index f8750cf5..1912929e 100644 --- a/docs/test/junit.md +++ "b/docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/01.Junit.md" @@ -1,3 +1,8 @@ +--- +title: junit +date: 2022-02-18 08:53:11 +permalink: /pages/d51647/ +--- # JUnit5 应用指南 > version: junit5 diff --git a/docs/test/mockito.md "b/docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/02.Mockito.md" similarity index 99% rename from docs/test/mockito.md rename to "docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/02.Mockito.md" index 74551215..19e4955c 100644 --- a/docs/test/mockito.md +++ "b/docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/02.Mockito.md" @@ -1,3 +1,8 @@ +--- +title: mockito +date: 2022-02-18 08:53:11 +permalink: /pages/d05354/ +--- # Mockito 应用指南 > Mockito 是一个针对 Java 的 mock 框架。 diff --git a/docs/test/jmeter.md "b/docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/03.Jmeter.md" similarity index 99% rename from docs/test/jmeter.md rename to "docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/03.Jmeter.md" index 028c260f..aea5d27d 100644 --- a/docs/test/jmeter.md +++ "b/docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/03.Jmeter.md" @@ -1,3 +1,8 @@ +--- +title: jmeter +date: 2022-02-18 08:53:11 +permalink: /pages/17065e/ +--- # JMeter 应用指南 > [Jmeter](https://github.com/apache/jmeter) 是一款基于 Java 开发的功能和性能测试软件。 diff --git a/docs/test/jmh.md "b/docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/04.JMH.md" similarity index 99% rename from docs/test/jmh.md rename to "docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/04.JMH.md" index a14f54a9..989dbdc8 100644 --- a/docs/test/jmh.md +++ "b/docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/04.JMH.md" @@ -1,3 +1,8 @@ +--- +title: jmh +date: 2022-02-18 08:53:11 +permalink: /pages/5eb923/ +--- # JMH 应用指南 ## 基准测试简介 diff --git "a/docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/README.md" "b/docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/README.md" new file mode 100644 index 00000000..77631c44 --- /dev/null +++ "b/docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/README.md" @@ -0,0 +1,20 @@ +--- +title: Java 测试工具 +date: 2022-04-09 11:52:34 +permalink: /pages/a7610d/ +--- + +# Java 测试工具 + +## 📖 内容 + +- [Junit](01.Junit.md) +- [Mockito](02.Mockito.md) +- [Jmeter](03.Jmeter.md) +- [JMH](04.JMH.md) + +## 📚 资料 + +## 🚪 传送 + +◾ 🏠 [JAVA-TUTORIAL 首页](https://github.com/dunwu/java-tutorial) ◾ 🎯 [我的博客](https://github.com/dunwu/blog) ◾ diff --git a/docs/lib/javalib-log.md "b/docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/01.Java\346\227\245\345\277\227.md" similarity index 99% rename from docs/lib/javalib-log.md rename to "docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/01.Java\346\227\245\345\277\227.md" index caab593c..837470ac 100644 --- a/docs/lib/javalib-log.md +++ "b/docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/01.Java\346\227\245\345\277\227.md" @@ -1,3 +1,8 @@ +--- +title: javalib-log +date: 2022-02-18 08:53:11 +permalink: /pages/a2dbff/ +--- # 细说 Java 主流日志工具库 > 在项目开发中,为了跟踪代码的运行情况,常常要使用日志来记录信息。 diff --git a/docs/lib/javalib-util.md "b/docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/02.Java\345\267\245\345\205\267\345\214\205.md" similarity index 77% rename from docs/lib/javalib-util.md rename to "docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/02.Java\345\267\245\345\205\267\345\214\205.md" index 005aec39..8e692f8f 100644 --- a/docs/lib/javalib-util.md +++ "b/docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/02.Java\345\267\245\345\205\267\345\214\205.md" @@ -1,3 +1,8 @@ +--- +title: javalib-util +date: 2022-02-18 08:53:11 +permalink: /pages/ff3a97/ +--- # 细说 Java 主流工具包 - apache.commons diff --git a/docs/lib/reflections.md "b/docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/03.Java\345\217\215\345\260\204\345\267\245\345\205\267.md" similarity index 97% rename from docs/lib/reflections.md rename to "docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/03.Java\345\217\215\345\260\204\345\267\245\345\205\267.md" index e24c081d..4d5e556c 100644 --- a/docs/lib/reflections.md +++ "b/docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/03.Java\345\217\215\345\260\204\345\267\245\345\205\267.md" @@ -1,3 +1,8 @@ +--- +title: reflections +date: 2022-02-18 08:53:11 +permalink: /pages/9a9bf2/ +--- # Reflections 应用指南 diff --git a/docs/lib/javamail.md "b/docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/04.JavaMail.md" similarity index 99% rename from docs/lib/javamail.md rename to "docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/04.JavaMail.md" index 89c351d6..9831d0e8 100644 --- a/docs/lib/javamail.md +++ "b/docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/04.JavaMail.md" @@ -1,3 +1,8 @@ +--- +title: javamail +date: 2022-02-18 08:53:11 +permalink: /pages/e2e90f/ +--- # JavaMail 应用指南 diff --git a/docs/lib/jsoup.md "b/docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/05.Jsoup\345\272\224\347\224\250.md" similarity index 99% rename from docs/lib/jsoup.md rename to "docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/05.Jsoup\345\272\224\347\224\250.md" index 936dba8c..2596ae09 100644 --- a/docs/lib/jsoup.md +++ "b/docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/05.Jsoup\345\272\224\347\224\250.md" @@ -1,3 +1,8 @@ +--- +title: jsoup +date: 2022-02-18 08:53:11 +permalink: /pages/4ac309/ +--- # Jsoup 应用指南 diff --git a/docs/lib/thumbnailator.md "b/docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/06.Thumbnailator\345\272\224\347\224\250.md" similarity index 98% rename from docs/lib/thumbnailator.md rename to "docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/06.Thumbnailator\345\272\224\347\224\250.md" index 1f9dfc94..d8c5e87d 100644 --- a/docs/lib/thumbnailator.md +++ "b/docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/06.Thumbnailator\345\272\224\347\224\250.md" @@ -1,3 +1,8 @@ +--- +title: thumbnailator +date: 2022-02-18 08:53:11 +permalink: /pages/48b592/ +--- # Thumbnailator 应用指南 diff --git a/docs/lib/zxing.md "b/docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/07.Zxing\345\272\224\347\224\250.md" similarity index 97% rename from docs/lib/zxing.md rename to "docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/07.Zxing\345\272\224\347\224\250.md" index 62a7ae77..5eaf83f9 100644 --- a/docs/lib/zxing.md +++ "b/docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/07.Zxing\345\272\224\347\224\250.md" @@ -1,3 +1,8 @@ +--- +title: zxing +date: 2022-02-18 08:53:11 +permalink: /pages/25cea7/ +--- # ZXing 应用指南 diff --git "a/docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/README.md" "b/docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/README.md" new file mode 100644 index 00000000..24af1161 --- /dev/null +++ "b/docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/README.md" @@ -0,0 +1,23 @@ +--- +title: 其他 Java 工具 +date: 2022-02-18 08:53:11 +permalink: /pages/344fb7/ +--- + +# 其他 Java 工具 + +## 📖 内容 + +- [Java 日志](01.Java日志.md) +- [Java 工具包](02.Java工具包.md) +- [Java 反射工具](03.Java反射工具.md) +- [JavaMail](04.JavaMail.md) +- [Jsoup 应用](05.Jsoup应用.md) +- [Thumbnailator 应用](06.Thumbnailator应用.md) +- [Zxing 应用](07.Zxing应用.md) + +## 📚 资料 + +## 🚪 传送 + +◾ 🏠 [JAVA-TUTORIAL 首页](https://github.com/dunwu/java-tutorial) ◾ 🎯 [我的博客](https://github.com/dunwu/blog) ◾ diff --git "a/docs/03.Java\345\267\245\345\205\267/README.md" "b/docs/03.Java\345\267\245\345\205\267/README.md" new file mode 100644 index 00000000..6d4f0788 --- /dev/null +++ "b/docs/03.Java\345\267\245\345\205\267/README.md" @@ -0,0 +1,48 @@ +--- +title: Java 工具 +date: 2022-02-18 08:53:11 +permalink: /pages/ccb3de/ +--- + +# Java 工具 + +## 📖 内容 + +### Java 序列化工具 + +- [JSON 序列化](01.Java序列化工具/01.JSON序列化.md) - [fastjson](https://github.com/alibaba/fastjson)、[Jackson](https://github.com/FasterXML/jackson)、[Gson](https://github.com/google/gson) +- [二进制序列化](01.Java序列化工具/02.二进制序列化.md) - [Protobuf](https://developers.google.com/protocol-buffers)、[Thrift](https://thrift.apache.org/)、[Hessian](http://hessian.caucho.com/)、[Kryo](https://github.com/EsotericSoftware/kryo)、[FST](https://github.com/RuedigerMoeller/fast-serialization) + +### JavaBean 工具 + +- [Lombok](02.JavaBean工具/01.Lombok.md) +- [Dozer](02.JavaBean工具/02.Dozer.md) + +### Java 模板引擎 + +- [Freemark](03.Java模板引擎/01.Freemark.md) +- [Velocity](03.Java模板引擎/02.Thymeleaf.md) +- [Thymeleaf](03.Java模板引擎/03.Velocity.md) + +### Java 测试工具 + +- [Freemark](04.Java测试工具/01.Junit.md) +- [Velocity](04.Java测试工具/02.Mockito.md) +- [Thymeleaf](04.Java测试工具/03.Jmeter.md) +- [Thymeleaf](04.Java测试工具/04.JMH.md) + +### 其他 + +- [Java 日志](05.其他Java工具/01.Java日志.md) +- [Java 工具包](05.其他Java工具/02.Java工具包.md) +- [Java 反射工具](05.其他Java工具/03.Java反射工具.md) +- [JavaMail](05.其他Java工具/04.JavaMail.md) +- [Jsoup 应用](05.其他Java工具/05.Jsoup应用.md) +- [Thumbnailator 应用](05.其他Java工具/06.Thumbnailator应用.md) +- [Zxing 应用](05.其他Java工具/07.Zxing应用.md) + +## 📚 资料 + +## 🚪 传送 + +◾ 🏠 [JAVA-TUTORIAL 首页](https://github.com/dunwu/java-tutorial) ◾ 🎯 [我的博客](https://github.com/dunwu/blog) ◾ diff --git "a/docs/framework/mybatis/Mybatis\345\272\224\347\224\250\346\214\207\345\215\227.md" "b/docs/04.Java\346\241\206\346\236\266/01.ORM/01.Mybatis\345\272\224\347\224\250\346\214\207\345\215\227.md" similarity index 99% rename from "docs/framework/mybatis/Mybatis\345\272\224\347\224\250\346\214\207\345\215\227.md" rename to "docs/04.Java\346\241\206\346\236\266/01.ORM/01.Mybatis\345\272\224\347\224\250\346\214\207\345\215\227.md" index cb1027e5..00a5c34f 100644 --- "a/docs/framework/mybatis/Mybatis\345\272\224\347\224\250\346\214\207\345\215\227.md" +++ "b/docs/04.Java\346\241\206\346\236\266/01.ORM/01.Mybatis\345\272\224\347\224\250\346\214\207\345\215\227.md" @@ -1,3 +1,8 @@ +--- +title: Mybatis应用指南 +date: 2022-02-18 08:53:11 +permalink: /pages/340876/ +--- # MyBatis 应用指南 > MyBatis 的前身就是 iBatis ,是一个作用在数据持久层的对象关系映射(Object Relational Mapping,简称 ORM)框架。 diff --git "a/docs/framework/mybatis/Mybatis\345\216\237\347\220\206.md" "b/docs/04.Java\346\241\206\346\236\266/01.ORM/02.Mybatis\345\216\237\347\220\206.md" similarity index 99% rename from "docs/framework/mybatis/Mybatis\345\216\237\347\220\206.md" rename to "docs/04.Java\346\241\206\346\236\266/01.ORM/02.Mybatis\345\216\237\347\220\206.md" index cfdb4ce4..945f89da 100644 --- "a/docs/framework/mybatis/Mybatis\345\216\237\347\220\206.md" +++ "b/docs/04.Java\346\241\206\346\236\266/01.ORM/02.Mybatis\345\216\237\347\220\206.md" @@ -1,3 +1,8 @@ +--- +title: Mybatis原理 +date: 2022-02-18 08:53:11 +permalink: /pages/7108c1/ +--- # Mybatis 原理 > Mybatis 的前身就是 iBatis ,是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。本文以一个 Mybatis 完整示例为切入点,结合 Mybatis 底层源码分析,图文并茂的讲解 Mybatis 的核心工作机制。 diff --git a/docs/framework/mybatis/README.md "b/docs/04.Java\346\241\206\346\236\266/01.ORM/README.md" similarity index 89% rename from docs/framework/mybatis/README.md rename to "docs/04.Java\346\241\206\346\236\266/01.ORM/README.md" index c4aaf6a8..a221296c 100644 --- a/docs/framework/mybatis/README.md +++ "b/docs/04.Java\346\241\206\346\236\266/01.ORM/README.md" @@ -1,14 +1,20 @@ -# Mybatis +--- +title: Java ORM 框架 +date: 2022-02-18 08:53:11 +permalink: /pages/cc2851/ +--- + +# Java ORM 框架 + +## 📖 内容 > Mybatis 的前身就是 iBatis ,是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。本文以一个 Mybatis 完整示例为切入点,结合 Mybatis 底层源码分析,图文并茂的讲解 Mybatis 的核心工作机制。 ![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20210522101005.png) -## 📖 内容 - -### [Mybatis 应用指南](Mybatis应用指南.md) +### [Mybatis 应用指南](01.Mybatis应用指南.md) -### [Mybatis 原理](Mybatis原理.md) +### [Mybatis 原理](02.Mybatis原理.md) ## 📚 资料 diff --git a/docs/security/shiro.md "b/docs/04.Java\346\241\206\346\236\266/02.\345\256\211\345\205\250/01.Shiro.md" similarity index 99% rename from docs/security/shiro.md rename to "docs/04.Java\346\241\206\346\236\266/02.\345\256\211\345\205\250/01.Shiro.md" index 4d846b50..c2416b17 100644 --- a/docs/security/shiro.md +++ "b/docs/04.Java\346\241\206\346\236\266/02.\345\256\211\345\205\250/01.Shiro.md" @@ -1,3 +1,8 @@ +--- +title: shiro +date: 2022-02-18 08:53:11 +permalink: /pages/3696eb/ +--- # Shiro 应用指南 > Shiro 是一个安全框架,具有认证、授权、加密、会话管理功能。 diff --git a/docs/security/spring-security.md "b/docs/04.Java\346\241\206\346\236\266/02.\345\256\211\345\205\250/02.SpringSecurity.md" similarity index 99% rename from docs/security/spring-security.md rename to "docs/04.Java\346\241\206\346\236\266/02.\345\256\211\345\205\250/02.SpringSecurity.md" index 8c2eafd0..74ff3061 100644 --- a/docs/security/spring-security.md +++ "b/docs/04.Java\346\241\206\346\236\266/02.\345\256\211\345\205\250/02.SpringSecurity.md" @@ -1,3 +1,8 @@ +--- +title: spring-security +date: 2022-02-18 08:53:11 +permalink: /pages/8d7757/ +--- # Spring Security ## 快速开始 diff --git a/docs/security/README.md "b/docs/04.Java\346\241\206\346\236\266/02.\345\256\211\345\205\250/README.md" similarity index 51% rename from docs/security/README.md rename to "docs/04.Java\346\241\206\346\236\266/02.\345\256\211\345\205\250/README.md" index 363bf64c..80c8322b 100644 --- a/docs/security/README.md +++ "b/docs/04.Java\346\241\206\346\236\266/02.\345\256\211\345\205\250/README.md" @@ -1,9 +1,15 @@ -# Java 和安全 +--- +title: Java 安全框架 +date: 2022-02-18 08:53:11 +permalink: /pages/24b9c6/ +--- + +# Java 安全框架 ## 📖 内容 -- [shiro](shiro.md) -- [spring-security](spring-security.md) +- [Shiro](01.Shiro.md) +- [SpringSecurity](02.SpringSecurity.md) ## 📚 资料 diff --git a/docs/framework/netty.md "b/docs/04.Java\346\241\206\346\236\266/03.IO/01.Netty.md" similarity index 98% rename from docs/framework/netty.md rename to "docs/04.Java\346\241\206\346\236\266/03.IO/01.Netty.md" index d4fb6fae..32ce8ba6 100644 --- a/docs/framework/netty.md +++ "b/docs/04.Java\346\241\206\346\236\266/03.IO/01.Netty.md" @@ -1,3 +1,9 @@ +--- +title: netty +date: 2022-02-18 08:53:11 +permalink: /pages/4cc85e/ +--- + # Netty 应用指南 ## Netty 简介 diff --git "a/docs/04.Java\346\241\206\346\236\266/README.md" "b/docs/04.Java\346\241\206\346\236\266/README.md" new file mode 100644 index 00000000..c662a040 --- /dev/null +++ "b/docs/04.Java\346\241\206\346\236\266/README.md" @@ -0,0 +1,53 @@ +--- +title: Java 主流框架 +date: 2022-02-18 08:53:11 +permalink: /pages/5d5b7b/ +--- + +# Java 主流框架 + +## 📖 内容 + +### Spring + +📚 [spring-tutorial](https://dunwu.github.io/spring-tutorial/) 是一个 Spring 实战教程。 + +### Spring Boot + +📚 [Spring Boot 教程](https://dunwu.github.io/spring-boot-tutorial/) 是一个 Spring Boot 实战教程。 + +### ORM + +- [Mybatis 应用指南](01.ORM/01.Mybatis应用指南.md) +- [Mybatis 原理](01.ORM/02.Mybatis原理.md) + +### 安全 + +> Java 领域比较流行的安全框架就是 shiro 和 spring-security。 +> +> shiro 更为简单、轻便,容易理解,能满足大多数基本安全场景下的需要。 +> +> spring-security 功能更丰富,也比 shiro 更复杂。值得一提的是由于 spring-security 是 spring 团队开发,所以集成 spring 和 spring-boot 框架更容易。 + +- [Shiro](02.安全/01.Shiro.md) +- [SpringSecurity](02.安全/02.SpringSecurity.md) + +### IO + +- [Shiro](03.IO/01.Netty.md) + +## 📚 资料 + +- **Mybatis** + - [Mybatis Github](https://github.com/mybatis/mybatis-3) + - [Mybatis 官网](http://www.mybatis.org/mybatis-3/) + - [MyBatis 官方代码生成(mybatis-generator)](https://github.com/mybatis/generator) + - [MyBatis 官方集成 Spring(mybatis-spring)](https://github.com/mybatis/spring) + - [Mybatis 官方集成 Spring Boot(mybatis-spring-boot)](https://github.com/mybatis/spring-boot-starter) + - [MyBatis-Plus](https://github.com/baomidou/mybatis-plus) - CRUD 扩展插件、代码生成器、分页器等多功能 + - [Mapper](https://github.com/abel533/Mapper) - CRUD 扩展插件 + - [Mybatis-PageHelper](https://github.com/pagehelper/Mybatis-PageHelper) - Mybatis 通用分页插件 + +## 🚪 传送 + +◾ 🏠 [JAVA-TUTORIAL 首页](https://github.com/dunwu/java-tutorial) ◾ 🎯 [我的博客](https://github.com/dunwu/blog) ◾ diff --git "a/docs/mq/\346\266\210\346\201\257\351\230\237\345\210\227\351\235\242\350\257\225.md" "b/docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/01.\346\266\210\346\201\257\351\230\237\345\210\227\351\235\242\350\257\225.md" similarity index 99% rename from "docs/mq/\346\266\210\346\201\257\351\230\237\345\210\227\351\235\242\350\257\225.md" rename to "docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/01.\346\266\210\346\201\257\351\230\237\345\210\227\351\235\242\350\257\225.md" index 72c38194..cff2b9e8 100644 --- "a/docs/mq/\346\266\210\346\201\257\351\230\237\345\210\227\351\235\242\350\257\225.md" +++ "b/docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/01.\346\266\210\346\201\257\351\230\237\345\210\227\351\235\242\350\257\225.md" @@ -1,3 +1,8 @@ +--- +title: 消息队列面试 +date: 2022-02-18 08:53:11 +permalink: /pages/fb02d4/ +--- # 消息队列面试夺命连环问 ## 1. 为什么使用消息队列? diff --git "a/docs/mq/\346\266\210\346\201\257\351\230\237\345\210\227\345\237\272\346\234\254\345\216\237\347\220\206.md" "b/docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/02.\346\266\210\346\201\257\351\230\237\345\210\227\345\237\272\346\234\254\345\216\237\347\220\206.md" similarity index 99% rename from "docs/mq/\346\266\210\346\201\257\351\230\237\345\210\227\345\237\272\346\234\254\345\216\237\347\220\206.md" rename to "docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/02.\346\266\210\346\201\257\351\230\237\345\210\227\345\237\272\346\234\254\345\216\237\347\220\206.md" index ee994384..bca7998a 100644 --- "a/docs/mq/\346\266\210\346\201\257\351\230\237\345\210\227\345\237\272\346\234\254\345\216\237\347\220\206.md" +++ "b/docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/02.\346\266\210\346\201\257\351\230\237\345\210\227\345\237\272\346\234\254\345\216\237\347\220\206.md" @@ -1,8 +1,12 @@ --- title: 消息队列基本原理 -categories: ['分布式'] -tags: ['分布式', '消息队列'] +categories: + - 分布式 +tags: + - 分布式 + - 消息队列 date: 2019-07-05 15:11 +permalink: /pages/d190a5/ --- # 消息队列基本原理 diff --git a/docs/mq/rocketmq.md "b/docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/03.RocketMQ.md" similarity index 99% rename from docs/mq/rocketmq.md rename to "docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/03.RocketMQ.md" index 0aba5e5c..6805eed5 100644 --- a/docs/mq/rocketmq.md +++ "b/docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/03.RocketMQ.md" @@ -1,3 +1,8 @@ +--- +title: rocketmq +date: 2022-02-18 08:53:11 +permalink: /pages/a0b18a/ +--- # RocketMQ diff --git a/docs/mq/activemq.md "b/docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/04.ActiveMQ.md" similarity index 99% rename from docs/mq/activemq.md rename to "docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/04.ActiveMQ.md" index 0dbedcc1..c383e98d 100644 --- a/docs/mq/activemq.md +++ "b/docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/04.ActiveMQ.md" @@ -1,3 +1,8 @@ +--- +title: activemq +date: 2022-02-18 08:53:11 +permalink: /pages/c68904/ +--- # ActiveMQ ## JMS 基本概念 diff --git a/docs/mq/README.md "b/docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/README.md" similarity index 95% rename from docs/mq/README.md rename to "docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/README.md" index 9a23a2f1..330cee34 100644 --- a/docs/mq/README.md +++ "b/docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/README.md" @@ -1,3 +1,9 @@ +--- +title: Java 和消息队列 +date: 2022-02-18 08:53:11 +permalink: /pages/477f8e/ +--- + # Java 和消息队列 > 消息队列(Message Queue,简称 MQ)技术是分布式应用间交换信息的一种技术。 @@ -8,11 +14,11 @@ ## 内容 -- [消息队列基本原理](消息队列基本原理.md) -- [消息队列面经](消息队列面试.md) +- [消息队列面试](01.消息队列面试.md) +- [消息队列基本原理](02.消息队列基本原理.md) - [Kafka 教程](https://dunwu.github.io/bigdata-tutorial/kafka) 📚 -- [RocketMQ](rocketmq.md) -- [ActiveMQ](activemq.md) +- [RocketMQ](03.RocketMQ.md) +- [ActiveMQ](04.ActiveMQ.md) ## 技术对比 diff --git a/docs/cache/cache-interview.md "b/docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/01.\347\274\223\345\255\230\351\235\242\350\257\225\351\242\230.md" similarity index 99% rename from docs/cache/cache-interview.md rename to "docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/01.\347\274\223\345\255\230\351\235\242\350\257\225\351\242\230.md" index cb619713..7d69791e 100644 --- a/docs/cache/cache-interview.md +++ "b/docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/01.\347\274\223\345\255\230\351\235\242\350\257\225\351\242\230.md" @@ -1,3 +1,8 @@ +--- +title: cache-interview +date: 2022-02-18 08:53:11 +permalink: /pages/24d258/ +--- # 缓存夺命连环问 ## 为什么要用缓存? diff --git a/docs/cache/cache-framework.md "b/docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/02.Java\347\274\223\345\255\230\346\241\206\346\236\266.md" similarity index 99% rename from docs/cache/cache-framework.md rename to "docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/02.Java\347\274\223\345\255\230\346\241\206\346\236\266.md" index e42445ae..a6dac1f1 100644 --- a/docs/cache/cache-framework.md +++ "b/docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/02.Java\347\274\223\345\255\230\346\241\206\346\236\266.md" @@ -1,3 +1,8 @@ +--- +title: cache-framework +date: 2022-02-18 08:53:11 +permalink: /pages/d1927d/ +--- # Java 缓存框架 > 关键词:Spring Cache、J2Cache、JetCache diff --git a/docs/cache/memcached.md "b/docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/03.Memcached\345\272\224\347\224\250\346\214\207\345\215\227.md" similarity index 97% rename from docs/cache/memcached.md rename to "docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/03.Memcached\345\272\224\347\224\250\346\214\207\345\215\227.md" index 1700a780..877541e6 100644 --- a/docs/cache/memcached.md +++ "b/docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/03.Memcached\345\272\224\347\224\250\346\214\207\345\215\227.md" @@ -1,3 +1,8 @@ +--- +title: memcached +date: 2022-02-18 08:53:11 +permalink: /pages/b89c35/ +--- # Memcached 应用指南 ## 一、Memcached 简介 diff --git a/docs/cache/ehcache.md "b/docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/04.Ehcache\345\272\224\347\224\250\346\214\207\345\215\227.md" similarity index 99% rename from docs/cache/ehcache.md rename to "docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/04.Ehcache\345\272\224\347\224\250\346\214\207\345\215\227.md" index 045102af..beb7dca4 100644 --- a/docs/cache/ehcache.md +++ "b/docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/04.Ehcache\345\272\224\347\224\250\346\214\207\345\215\227.md" @@ -1,3 +1,8 @@ +--- +title: ehcache +date: 2022-02-18 08:53:11 +permalink: /pages/d72a23/ +--- # Ehcache 应用指南 > EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点,是 Hibernate 中默认的 CacheProvider。 diff --git a/docs/cache/cache-libs.md "b/docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/05.Java\347\274\223\345\255\230\345\272\223.md" similarity index 98% rename from docs/cache/cache-libs.md rename to "docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/05.Java\347\274\223\345\255\230\345\272\223.md" index 143e31a0..2227c8d4 100644 --- a/docs/cache/cache-libs.md +++ "b/docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/05.Java\347\274\223\345\255\230\345\272\223.md" @@ -1,3 +1,8 @@ +--- +title: cache-libs +date: 2022-02-18 08:53:11 +permalink: /pages/437789/ +--- # Java 缓存库 > 关键词:ConcurrentHashMap、LRUHashMap、Guava Cache、Caffeine、Ehcache @@ -153,7 +158,7 @@ Caffeine 实现了 W-TinyLFU(**LFU** + **LRU** 算法的变种),其**命中率 ## 五、Ehcache -> 参考:[Ehcache](ehcache.md) +> 参考:[Ehcache](docs/04.中间件/02.缓存/ehcache.md) ## 六、进程内缓存对比 diff --git a/docs/cache/http-cache.md "b/docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/06.Http\347\274\223\345\255\230.md" similarity index 98% rename from docs/cache/http-cache.md rename to "docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/06.Http\347\274\223\345\255\230.md" index 3671cf8b..59c17d88 100644 --- a/docs/cache/http-cache.md +++ "b/docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/06.Http\347\274\223\345\255\230.md" @@ -1,3 +1,8 @@ +--- +title: http-cache +date: 2022-02-18 08:53:11 +permalink: /pages/b4c4d5/ +--- # Http 缓存 HTTP 缓存分为 2 种,一种是强缓存,另一种是协商缓存。主要作用是可以加快资源获取速度,提升用户体验,减少网络传输,缓解服务端的压力。 diff --git a/docs/cache/README.md "b/docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/README.md" similarity index 71% rename from docs/cache/README.md rename to "docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/README.md" index 20e0204c..400cd091 100644 --- a/docs/cache/README.md +++ "b/docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/README.md" @@ -1,4 +1,10 @@ -# Java 和缓存 +--- +title: Java 缓存 +date: 2022-02-18 08:53:11 +permalink: /pages/2d63c3/ +--- + +# Java 缓存 > 缓存可以说是优化系统性能的第一手段,在各种技术中都会有缓存的应用。 > @@ -8,14 +14,12 @@ ## 📖 内容 -- [缓存面试题](cache-interview.md) 💯 -- [缓存基本原理](https://dunwu.github.io/design/distributed/分布式缓存.html) -- [Java 缓存框架](cache-framework.md) - 关键词:Spring Cache、J2Cache、JetCache -- [Redis 教程](https://dunwu.github.io/db-tutorial/nosql/redis/) 📚 -- [Memcached 应用指南](memcached.md) -- [Java 缓存库](cache-libs.md) - 关键词:ConcurrentHashMap、LRUHashMap、Guava Cache、Caffeine、Ehcache -- [Ehcache 应用指南](ehcache.md) -- [Http 缓存](http-cache.md) +- [缓存面试题](01.缓存面试题.md) +- [Java 缓存框架](02.Java缓存框架.md) +- [Memcached 应用指南](03.Memcached应用指南.md) +- [Ehcache 应用指南](04.Ehcache应用指南.md) +- [Java 缓存库](05.Java缓存库.md) +- [Http 缓存](06.Http缓存.md) ## 📚 资料 diff --git a/docs/limiting/hystrix.md "b/docs/05.Java\344\270\255\351\227\264\344\273\266/03.\346\265\201\351\207\217\346\216\247\345\210\266/01.Hystrix.md" similarity index 99% rename from docs/limiting/hystrix.md rename to "docs/05.Java\344\270\255\351\227\264\344\273\266/03.\346\265\201\351\207\217\346\216\247\345\210\266/01.Hystrix.md" index 5df34b08..8f119662 100644 --- a/docs/limiting/hystrix.md +++ "b/docs/05.Java\344\270\255\351\227\264\344\273\266/03.\346\265\201\351\207\217\346\216\247\345\210\266/01.Hystrix.md" @@ -1,3 +1,9 @@ +--- +title: hystrix +date: 2022-02-18 08:53:11 +permalink: /pages/34b51a/ +--- + # Hystrix 应用指南 diff --git a/docs/microservice/dubbo.md "b/docs/05.Java\344\270\255\351\227\264\344\273\266/04.\345\276\256\346\234\215\345\212\241/01.Dubbo.md" similarity index 99% rename from docs/microservice/dubbo.md rename to "docs/05.Java\344\270\255\351\227\264\344\273\266/04.\345\276\256\346\234\215\345\212\241/01.Dubbo.md" index 124dae62..46b4fc59 100644 --- a/docs/microservice/dubbo.md +++ "b/docs/05.Java\344\270\255\351\227\264\344\273\266/04.\345\276\256\346\234\215\345\212\241/01.Dubbo.md" @@ -1,3 +1,9 @@ +--- +title: dubbo +date: 2022-02-18 08:53:11 +permalink: /pages/dc8b1a/ +--- + # Dubbo 应用指南 > [Apache Dubbo](https://dubbo.apache.org/zh-cn/) 是一款高性能、轻量级的开源 Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 diff --git a/docs/microservice/README.md "b/docs/05.Java\344\270\255\351\227\264\344\273\266/04.\345\276\256\346\234\215\345\212\241/README.md" similarity index 66% rename from docs/microservice/README.md rename to "docs/05.Java\344\270\255\351\227\264\344\273\266/04.\345\276\256\346\234\215\345\212\241/README.md" index 7529c401..c26dcaa8 100644 --- a/docs/microservice/README.md +++ "b/docs/05.Java\344\270\255\351\227\264\344\273\266/04.\345\276\256\346\234\215\345\212\241/README.md" @@ -1,8 +1,14 @@ +--- +title: Java 和微服务 +date: 2022-02-18 08:53:11 +permalink: /pages/796a9d/ +--- + # Java 和微服务 ## 📖 内容 -- [Dubbo](dubbo.md) +- [Dubbo](docs/04.中间件/04.微服务/dubbo.md) - [Spring Cloud](https://github.com/dunwu/spring-cloud-tutorial) 📚 ## 📚 资料 diff --git "a/docs/05.Java\344\270\255\351\227\264\344\273\266/README.md" "b/docs/05.Java\344\270\255\351\227\264\344\273\266/README.md" new file mode 100644 index 00000000..8670eb8d --- /dev/null +++ "b/docs/05.Java\344\270\255\351\227\264\344\273\266/README.md" @@ -0,0 +1,59 @@ +--- +title: Java 中间件 +date: 2022-04-09 15:11:37 +permalink: /pages/79c04c/ +--- + +# Java 中间件 + +## 📖 内容 + +#### 消息队列 + +> 消息队列(Message Queue,简称 MQ)技术是分布式应用间交换信息的一种技术。 +> +> 消息队列主要解决应用耦合,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。 +> +> 如果想深入学习各种消息队列产品,建议先了解一下 [消息队列基本原理](https://github.com/dunwu/blog/blob/master/source/_posts/theory/mq.md) ,有助于理解消息队列特性的实现和设计思路。 + +- [消息队列面试](01.消息队列/01.消息队列面试.md) +- [消息队列基本原理](01.消息队列/02.消息队列基本原理.md) +- [RocketMQ](01.消息队列/03.RocketMQ.md) +- [ActiveMQ](01.消息队列/04.ActiveMQ.md) + +#### 缓存 + +> 缓存可以说是优化系统性能的第一手段,在各种技术中都会有缓存的应用。 +> +> 如果想深入学习缓存,建议先了解一下 [缓存基本原理](https://dunwu.github.io/design/distributed/分布式缓存.html),有助于理解缓存的特性、原理,使用缓存常见的问题及解决方案。 + +- [缓存面试题](02.缓存/01.缓存面试题.md) +- [Java 缓存框架](02.缓存/02.Java缓存框架.md) +- [Memcached 应用指南](02.缓存/03.Memcached应用指南.md) +- [Ehcache 应用指南](02.缓存/04.Ehcache应用指南.md) +- [Java 缓存库](02.缓存/05.Java缓存库.md) +- [Http 缓存](02.缓存/06.Http缓存.md) + +#### 流量控制 + +- [Hystrix](03.流量控制/01.Hystrix.md) + +#### 微服务 + +- [Dubbo](04.微服务/01.Dubbo.md) + +## 📚 资料 + +- **Mybatis** + - [Mybatis Github](https://github.com/mybatis/mybatis-3) + - [Mybatis 官网](http://www.mybatis.org/mybatis-3/) + - [MyBatis 官方代码生成(mybatis-generator)](https://github.com/mybatis/generator) + - [MyBatis 官方集成 Spring(mybatis-spring)](https://github.com/mybatis/spring) + - [Mybatis 官方集成 Spring Boot(mybatis-spring-boot)](https://github.com/mybatis/spring-boot-starter) + - [MyBatis-Plus](https://github.com/baomidou/mybatis-plus) - CRUD 扩展插件、代码生成器、分页器等多功能 + - [Mapper](https://github.com/abel533/Mapper) - CRUD 扩展插件 + - [Mybatis-PageHelper](https://github.com/pagehelper/Mybatis-PageHelper) - Mybatis 通用分页插件 + +## 🚪 传送 + +◾ 🏠 [JAVA-TUTORIAL 首页](https://github.com/dunwu/java-tutorial) ◾ 🎯 [我的博客](https://github.com/dunwu/blog) ◾ diff --git a/docs/@pages/archivesPage.md b/docs/@pages/archivesPage.md new file mode 100644 index 00000000..c021f6b5 --- /dev/null +++ b/docs/@pages/archivesPage.md @@ -0,0 +1,6 @@ +--- +archivesPage: true +title: 归档 +permalink: /archives/ +article: false +--- \ No newline at end of file diff --git a/docs/README.md b/docs/README.md index 7d7c9f71..b12ceb00 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,14 +1,31 @@ --- home: true -heroImage: https://raw.githubusercontent.com/dunwu/images/dev/common/dunwu-logo-200.png +heroImage: img/bg.gif heroText: JAVA-TUTORIAL tagline: ☕ java-tutorial 是一个 Java 教程,汇集一个老司机在 Java 领域的十年积累。 -actionLink: / -footer: CC-BY-SA-4.0 Licensed | Copyright © 2018-Now Dunwu +bannerBg: none +postList: none --- -![license](https://badgen.net/github/license/dunwu/java-tutorial) -![build](https://travis-ci.com/dunwu/java-tutorial.svg?branch=master) +

    + + + star + + + + fork + + + + commit + + + + code style + + +

    > ☕ **java-tutorial** 是一个 Java 教程,汇集一个老司机在 Java 领域的十年积累。 > @@ -20,158 +37,123 @@ footer: CC-BY-SA-4.0 Licensed | Copyright © 2018-Now Dunwu > - 下面的内容清单中,凡是有 📚 标记的技术,都已整理成详细的教程。 > - 部分技术因为可以应用于不同领域,所以可能会同时出现在不同的类别下。 -## 📖 内容 +- [Tomcat 应用指南](02.Java软件/03.Java服务器/01.Tomcat/01.Tomcat应用指南.md) +- [Tomcat 连接器](02.Java软件/03.Java服务器/01.Tomcat/02.Tomcat连接器.md) +- [Tomcat 容器](02.Java软件/03.Java服务器/01.Tomcat/03.Tomcat容器.md) +- [Tomcat 优化](02.Java软件/03.Java服务器/01.Tomcat/04.Tomcat优化.md) +- [Tomcat 和 Jetty](02.Java软件/03.Java服务器/01.Tomcat/05.Tomcat和Jetty.md) +- [Jetty](02.Java软件/03.Java服务器/02.Jetty.md) -### JavaSE +#### Java 监控诊断 -> 📚 [javacore](https://dunwu.github.io/javacore/) 是一个 Java 核心技术教程。内容包含:Java 基础特性、Java 高级特性、Java 并发、JVM、Java IO 等。 +> [监控/诊断](02.Java软件/04.Java监控诊断) 工具主要用于 Java 应用的运维。通过采集、分析、存储、可视化应用的有效数据,帮助开发者、使用者快速定位问题,找到性能瓶颈。 -### JavaEE +- [监控工具对比](02.Java软件/04.Java监控诊断/01.监控诊断工具.md) +- [CAT](02.Java软件/04.Java监控诊断/02.CAT.md) +- [Zipkin](02.Java软件/04.Java监控诊断/03.Zipkin.md) +- [SkyWalking](02.Java软件/04.Java监控诊断/04.Skywalking.md) +- [Arthas](02.Java软件/04.Java监控诊断/05.Arthas.md) -> [☕ JavaEE](javaee/README.md) 技术是 Java Web 的基石 +### Java 工具 -- [JavaEE 面经](javaee/javaee-interview.md) -- [JavaEE 之 Servlet 指南](javaee/javaee-servlet.md) -- [JavaEE 之 Jsp 指南](javaee/javaee-jsp.md) -- [JavaEE 之 Filter 和 Listener](javaee/javaee-filter-listener.md) -- [JavaEE 之 Cookie 和 Session](javaee/javaee-cookie-sesion.md) +#### Java 序列化工具 -### Java 工具 +- [JSON 序列化](03.Java工具/01.Java序列化工具/01.JSON序列化.md) - [fastjson](https://github.com/alibaba/fastjson)、[Jackson](https://github.com/FasterXML/jackson)、[Gson](https://github.com/google/gson) +- [二进制序列化](03.Java工具/01.Java序列化工具/02.二进制序列化.md) - [Protobuf](https://developers.google.com/protocol-buffers)、[Thrift](https://thrift.apache.org/)、[Hessian](http://hessian.caucho.com/)、[Kryo](https://github.com/EsotericSoftware/kryo)、[FST](https://github.com/RuedigerMoeller/fast-serialization) -#### 构建 +#### JavaBean 工具 -> Java 项目需要通过 [**构建工具**](tool/build) 来管理项目依赖,完成编译、打包、发布、生成 JavaDoc 等任务。 -> -> - 目前最主流的构建工具是 Maven,它的功能非常强大。 -> - Gradle 号称是要替代 Maven 等构件工具,它的版本管理确实简洁,但是需要学习 Groovy,学习成本比 Maven 高。 -> - Ant 功能比 Maven 和 Gradle 要弱,现代 Java 项目基本不用了,但也有一些传统的 Java 项目还在使用。 - -- [Maven](tool/build/maven) 📚 - - [Maven 入门指南](tool/build/maven/maven-quickstart.md) - - [Maven 教程之 pom.xml 详解](tool/build/maven/maven-pom.md) - - [Maven 教程之 settings.xml 详解](tool/build/maven/maven-settings.md) - - [Maven 实战问题和最佳实践](tool/build/maven/maven-action.md) - - [Maven 教程之发布 jar 到私服或中央仓库](tool/build/maven/maven-deploy.md) - - [Maven 插件之代码检查](tool/build/maven/maven-checkstyle-plugin.md) -- [Ant 简易教程](tool/build/ant.md) - -#### IDE - -> 自从有了 [**IDE**](tool/ide),写代码从此就告别了刀耕火种的蛮荒时代。 -> -> - [Eclipse](tool/ide/eclipse.md) 是久负盛名的开源 Java IDE,我的学生时代一直使用它写 Java。 -> - 曾经抗拒从转 [Intellij Idea](tool/ide/intellij-idea.md) ,但后来发现真香,不得不说,确实是目前最优秀的 Java IDE。 -> - 你可以在 [vscode](tool/ide/vscode.md) 中写各种语言,只要安装相应插件即可。如果你的项目中使用了很多种编程语言,又懒得在多个 IDE 之间切换,那么就用 vscode 来一网打尽吧。 +- [Lombok](03.Java工具/02.JavaBean工具/01.Lombok.md) +- [Dozer](03.Java工具/02.JavaBean工具/02.Dozer.md) + +#### Java 模板引擎 -- [Intellij Idea](tool/ide/intellij-idea.md) -- [Eclipse](tool/ide/eclipse.md) -- [vscode](tool/ide/vscode.md) +- [Freemark](03.Java工具/03.Java模板引擎/01.Freemark.md) +- [Velocity](03.Java工具/03.Java模板引擎/02.Thymeleaf.md) +- [Thymeleaf](03.Java工具/03.Java模板引擎/03.Velocity.md) -#### 监控/诊断 +#### Java 测试工具 -> [监控/诊断](tool/monitor) 工具主要用于 Java 应用的运维。通过采集、分析、存储、可视化应用的有效数据,帮助开发者、使用者快速定位问题,找到性能瓶颈。 +- [Freemark](03.Java工具/04.Java测试工具/01.Junit.md) +- [Velocity](03.Java工具/04.Java测试工具/02.Mockito.md) +- [Thymeleaf](03.Java工具/04.Java测试工具/03.Jmeter.md) +- [Thymeleaf](03.Java工具/04.Java测试工具/04.JMH.md) -- [监控工具对比](tool/monitor/monitor-summary.md) -- [CAT](tool/monitor/cat.md) -- [Zipkin](tool/monitor/zipkin.md) -- [SkyWalking](tool/monitor/skywalking.md) -- [Arthas](tool/monitor/arthas.md) +#### 其他 + +- [Java 日志](03.Java工具/05.其他Java工具/01.Java日志.md) +- [Java 工具包](03.Java工具/05.其他Java工具/02.Java工具包.md) +- [Java 反射工具](03.Java工具/05.其他Java工具/03.Java反射工具.md) +- [JavaMail](03.Java工具/05.其他Java工具/04.JavaMail.md) +- [Jsoup 应用](03.Java工具/05.其他Java工具/05.Jsoup应用.md) +- [Thumbnailator 应用](03.Java工具/05.其他Java工具/06.Thumbnailator应用.md) +- [Zxing 应用](03.Java工具/05.其他Java工具/07.Zxing应用.md) -### [框架](framework) +### Java 框架 #### Spring -[spring-tutorial 📚](https://dunwu.github.io/spring-tutorial/) 是一个 Spring 实战教程。 +📚 [spring-tutorial](https://dunwu.github.io/spring-tutorial/) 是一个 Spring 实战教程。 #### Spring Boot -[Spring Boot 教程 📚](https://dunwu.github.io/spring-boot-tutorial/) 是一个 Spring Boot 实战教程。 +📚 [Spring Boot 教程](https://dunwu.github.io/spring-boot-tutorial/) 是一个 Spring Boot 实战教程。 -#### 其他 +#### ORM -- [Spring Cloud](https://github.com/dunwu/spring-cloud-tutorial) 📚 -- [MyBatis](framework/mybatis) - - [Mybatis 应用指南](framework/mybatis/Mybatis应用指南.md) - - [Mybatis 原理](framework/mybatis/Mybatis原理.md) -- [Netty](framework/netty.md) +- [Mybatis 应用指南](04.Java框架/01.ORM/01.Mybatis应用指南.md) +- [Mybatis 原理](04.Java框架/01.ORM/02.Mybatis原理.md) -### [消息队列](mq) +#### 安全 -> 消息队列(Message Queue,简称 MQ)技术是分布式应用间交换信息的一种技术。 +> Java 领域比较流行的安全框架就是 shiro 和 spring-security。 > -> 消息队列主要解决应用耦合,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。 +> shiro 更为简单、轻便,容易理解,能满足大多数基本安全场景下的需要。 > -> 如果想深入学习各种消息队列产品,建议先了解一下 [消息队列基本原理](https://github.com/dunwu/blog/blob/master/source/_posts/theory/mq.md) ,有助于理解消息队列特性的实现和设计思路。 - -- [消息队列基本原理](mq/消息队列基本原理.md) -- [消息队列面试题](mq/消息队列面试.md) 💯 -- [Kafka](https://dunwu.github.io/bigdata-tutorial/kafka) 📚 -- [RocketMQ](mq/rocketmq.md) -- [ActiveMQ](mq/activemq.md) +> spring-security 功能更丰富,也比 shiro 更复杂。值得一提的是由于 spring-security 是 spring 团队开发,所以集成 spring 和 spring-boot 框架更容易。 -### [缓存](cache) +- [Shiro](04.Java框架/02.安全/01.Shiro.md) +- [SpringSecurity](04.Java框架/02.安全/02.SpringSecurity.md) -> 缓存可以说是优化系统性能的第一手段,在各种技术中都会有缓存的应用。 -> -> 如果想深入学习缓存,建议先了解一下 [缓存基本原理](https://dunwu.github.io/design/distributed/分布式缓存.html),有助于理解缓存的特性、原理,使用缓存常见的问题及解决方案。 +#### IO -- [缓存面试题](cache/cache-interview.md) 💯 -- [缓存基本原理](https://dunwu.github.io/design/distributed/分布式缓存.html) -- [Java 缓存框架](cache/cache-framework.md) - 关键词:Spring Cache、J2Cache、JetCache -- [Redis 教程](https://dunwu.github.io/db-tutorial/nosql/redis/) 📚 -- [Memcached 应用指南](cache/memcached.md) -- [Java 缓存库](cache/cache-libs.md) - 关键词:ConcurrentHashMap、LRUHashMap、Guava Cache、Caffeine、Ehcache -- [Ehcache 应用指南](cache/ehcache.md) -- [Http 缓存](cache/http-cache.md) +- [Shiro](04.Java框架/03.IO/01.Netty.md) -### [微服务](microservice) +### Java 中间件 -- [Dubbo](microservice/dubbo.md) -- [**Spring Cloud**](https://github.com/dunwu/spring-cloud-tutorial) 📚 - - Eureka - - Consul - - Nacos - - Zuul - - Gateway -- 通信 - - [Netty](framework/netty.md) +#### 消息队列 -### 搜索引擎 +> 消息队列(Message Queue,简称 MQ)技术是分布式应用间交换信息的一种技术。 +> +> 消息队列主要解决应用耦合,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。 +> +> 如果想深入学习各种消息队列产品,建议先了解一下 [消息队列基本原理](https://github.com/dunwu/blog/blob/master/source/_posts/theory/mq.md) ,有助于理解消息队列特性的实现和设计思路。 -- [ElasticSearch](https://dunwu.github.io/db-tutorial/nosql/elasticsearch/) 📚 -- Solr -- Lucene +- [消息队列面试](05.Java中间件/01.消息队列/01.消息队列面试.md) +- [消息队列基本原理](05.Java中间件/01.消息队列/02.消息队列基本原理.md) +- [RocketMQ](05.Java中间件/01.消息队列/03.RocketMQ.md) +- [ActiveMQ](05.Java中间件/01.消息队列/04.ActiveMQ.md) -### [安全](security) +#### 缓存 -> Java 领域比较流行的安全框架就是 shiro 和 spring-security。 -> -> shiro 更为简单、轻便,容易理解,能满足大多数基本安全场景下的需要。 +> 缓存可以说是优化系统性能的第一手段,在各种技术中都会有缓存的应用。 > -> spring-security 功能更丰富,也比 shiro 更复杂。值得一提的是由于 spring-security 是 spring 团队开发,所以集成 spring 和 spring-boot 框架更容易。 - -- [Shiro](security/shiro.md) -- [Spring Security](security/spring-security.md) +> 如果想深入学习缓存,建议先了解一下 [缓存基本原理](https://dunwu.github.io/design/distributed/分布式缓存.html),有助于理解缓存的特性、原理,使用缓存常见的问题及解决方案。 -### [测试](test) +- [缓存面试题](05.Java中间件/02.缓存/01.缓存面试题.md) +- [Java 缓存框架](05.Java中间件/02.缓存/02.Java缓存框架.md) +- [Memcached 应用指南](05.Java中间件/02.缓存/03.Memcached应用指南.md) +- [Ehcache 应用指南](05.Java中间件/02.缓存/04.Ehcache应用指南.md) +- [Java 缓存库](05.Java中间件/02.缓存/05.Java缓存库.md) +- [Http 缓存](05.Java中间件/02.缓存/06.Http缓存.md) -- [Junit](test/junit.md) -- [Mockito](test/mockito.md) -- [JMH](test/jmh.md) -- [Jmeter](test/jmeter.md) +#### 流量控制 -### [服务器](server) +- [Hystrix](05.Java中间件/03.流量控制/01.Hystrix.md) -> Tomcat 和 Jetty 都是 Java 比较流行的轻量级服务器。 -> -> Nginx 是目前最流行的反向代理服务器,也常用于负载均衡。 +#### 微服务 -- [Tomcat 应用指南](server/Tomcat应用指南.md) -- [Tomcat 连接器](server/Tomcat连接器.md) -- [Tomcat 容器](server/Tomcat容器.md) -- [Tomcat 优化](server/Tomcat优化.md) -- [Jetty](server/jetty.md) -- [Nginx](https://github.com/dunwu/nginx-tutorial) 📚 +- [Dubbo](05.Java中间件/04.微服务/01.Dubbo.md) ### [大数据](https://dunwu.github.io/bigdata-tutorial) @@ -188,21 +170,6 @@ footer: CC-BY-SA-4.0 Licensed | Copyright © 2018-Now Dunwu - Storm - [Flink](https://dunwu.github.io/bigdata-tutorial/tree/master/docs/flink) -### [LIB](lib) - -- [日志](lib/javalib-log.md) - [log4j2](https://logging.apache.org/log4j/2.x/)、[logback](https://logback.qos.ch/)、log4j、[Slf4j](http://www.slf4j.org/) -- [序列化](lib/serialized/) - - [JSON](lib/serialized/javalib-json.md) - [fastjson](https://github.com/alibaba/fastjson)、[Jackson](https://github.com/FasterXML/jackson)、[Gson](https://github.com/google/gson) - - [二进制](lib/serialized/javalib-binary.md) - [Protobuf](https://developers.google.com/protocol-buffers)、[Thrift](https://thrift.apache.org/)、[Hessian](http://hessian.caucho.com/)、[Kryo](https://github.com/EsotericSoftware/kryo)、[FST](https://github.com/RuedigerMoeller/fast-serialization) -- [模板引擎](lib/template) - [Freemark](lib/template/freemark.md)、[Velocity](lib/template/velocity.md)、[Thymeleaf](lib/template/thymeleaf.md) -- JavaBean - [Lombok](lib/bean/lombok.md)、[Dozer](lib/bean/dozer.md) -- 工具包 - - [apache common](https://commons.apache.org/) - 老牌 Java 工具集 - - [guava](https://github.com/google/guava) - Google Java 工具包 - - [hutool](https://github.com/dromara/hutool) - Hutool 是一个小而全的 Java 工具类库,且中文文档、注释比较齐备 -- 辅助 - - [swagger](https://swagger.io/) - 自动生成 API 文档(半侵入式) - ## 📚 资料 - Java 经典书籍 @@ -232,3 +199,18 @@ footer: CC-BY-SA-4.0 Licensed | Copyright © 2018-Now Dunwu - [数据结构和算法教程](https://dunwu.github.io/algorithm-tutorial/) 📚 - [Linux 教程](https://dunwu.github.io/linux-tutorial/) 📚 - [Nginx 教程](https://github.com/dunwu/nginx-tutorial/) 📚 + + diff --git a/docs/framework/README.md b/docs/framework/README.md deleted file mode 100644 index 52bad5ce..00000000 --- a/docs/framework/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# Java 主流框架 - -## 📖 内容 - -- [Spring](https://dunwu.github.io/spring-tutorial/) 📚 -- [Spring Boot](https://dunwu.github.io/spring-boot-tutorial/) 📚 -- [Spring Cloud](https://github.com/dunwu/spring-cloud-tutorial) 📚 -- [MyBatis](mybatis) - - [Mybatis 应用指南](mybatis/Mybatis应用指南.md) - - [Mybatis 原理](mybatis/Mybatis原理.md) -- [Netty](netty.md) - -## 📚 资料 - -- **Mybatis** - - [Mybatis Github](https://github.com/mybatis/mybatis-3) - - [Mybatis 官网](http://www.mybatis.org/mybatis-3/) - - [MyBatis 官方代码生成(mybatis-generator)](https://github.com/mybatis/generator) - - [MyBatis 官方集成 Spring(mybatis-spring)](https://github.com/mybatis/spring) - - [Mybatis 官方集成 Spring Boot(mybatis-spring-boot)](https://github.com/mybatis/spring-boot-starter) - - [MyBatis-Plus](https://github.com/baomidou/mybatis-plus) - CRUD 扩展插件、代码生成器、分页器等多功能 - - [Mapper](https://github.com/abel533/Mapper) - CRUD 扩展插件 - - [Mybatis-PageHelper](https://github.com/pagehelper/Mybatis-PageHelper) - Mybatis 通用分页插件 - -## 🚪 传送 - -◾ 🏠 [JAVA-TUTORIAL 首页](https://github.com/dunwu/java-tutorial) ◾ 🎯 [我的博客](https://github.com/dunwu/blog) ◾ diff --git a/docs/lib/README.md b/docs/lib/README.md deleted file mode 100644 index 8e8e1b37..00000000 --- a/docs/lib/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# Java 库 - -## 📖 内容 - -- [Dozer 应用指南](bean/dozer.md) -- [Freemark 应用指南](template/freemark.md) -- [Java 与 JSON](serialized/javalib-json.md) -- [细说 Java 主流日志工具库](javalib-log.md) -- [细说 Java 主流工具包](javalib-util.md) -- [JavaMail 应用指南](javamail.md) -- [Jsoup 应用指南](jsoup.md) -- [JUnit5 应用指南](../test/junit.md) -- [Lombok 应用指南](bean/lombok.md) -- [Mockito 应用指南](../test/mockito.md) -- [Reflections 应用指南](reflections.md) -- [Thumbnailator 应用指南](thumbnailator.md) -- [ZXing 应用指南](zxing.md) - -## 📚 资料 - -## 🚪 传送 - -◾ 🏠 [JAVA-TUTORIAL 首页](https://github.com/dunwu/java-tutorial) ◾ 🎯 [我的博客](https://github.com/dunwu/blog) ◾ diff --git a/docs/test/README.md b/docs/test/README.md deleted file mode 100644 index 6dbf50e0..00000000 --- a/docs/test/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Java 和测试 - -## 📖 内容 - -- [Junit](junit.md) -- [Mockito](mockito.md) -- [JMH](jmh.md) -- [Jmeter](jmeter.md) - -## 📚 资料 - -## 🚪 传送 - -◾ 🏠 [JAVA-TUTORIAL 首页](https://github.com/dunwu/java-tutorial) ◾ 🎯 [我的博客](https://github.com/dunwu/blog) ◾ diff --git a/docs/tool/README.md b/docs/tool/README.md deleted file mode 100644 index 75472181..00000000 --- a/docs/tool/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# Java 工具 - -> 本部分内容主要是 Java 开发领域使用的一些 Java 工具,如构建工具、IDE、服务器、日志中心等等。 - -## 📖 内容 - -### [构建工具](build/README.md) - -- [Maven 入门指南](build/maven/maven-quickstart.md) -- [Maven 教程之 pom.xml 详解](build/maven/maven-pom.md) -- [Maven 教程之 settings.xml 详解](build/maven/maven-settings.md) -- [Maven 实战问题和最佳实践](build/maven/maven-action.md) -- [Maven 教程之发布 jar 到私服或中央仓库](build/maven/maven-deploy.md) -- [Maven 插件之代码检查](build/maven/maven-checkstyle-plugin.md) -- [Ant 简易教程](build/ant.md) - -### IDE - -- [IDEA](ide/intellij-idea.md) -- [Eclipse](ide/eclipse.md) - -## 📚 资料 - -- **官网** - - [Maven Github](https://github.com/apache/maven) - - [Maven 官方文档](https://maven.apache.org/ref/current) - - [Ant 官方手册](http://ant.apache.org/manual/index.html) -- **书籍** - - [《Maven 实战》](https://book.douban.com/subject/5345682/) - -## 🚪 传送 - -◾ 🏠 [JAVA-TUTORIAL 首页](https://github.com/dunwu/java-tutorial) ◾ 🎯 [我的博客](https://github.com/dunwu/blog) ◾ diff --git a/docs/tool/build/maven/sidebar.md b/docs/tool/build/maven/sidebar.md deleted file mode 100644 index 5601cdc0..00000000 --- a/docs/tool/build/maven/sidebar.md +++ /dev/null @@ -1,6 +0,0 @@ -- [Maven 入门指南](maven-quickstart.md) -- [Maven 教程之 pom.xml 详解](maven-pom.md) -- [Maven 教程之 settings.xml 详解](maven-settings.md) -- [Maven 实战问题和最佳实践](maven-action.md) -- [Maven 教程之发布 jar 到私服或中央仓库](maven-deploy.md) -- [Maven 插件之代码检查](maven-checkstyle-plugin.md) diff --git a/docs/tool/ide/README.md b/docs/tool/ide/README.md deleted file mode 100644 index 96e02070..00000000 --- a/docs/tool/ide/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# Java IDE - - -> 自从有了 **IDE**,写代码从此就告别了刀耕火种的蛮荒时代。 -> -> - [Eclipse](eclipse.md) 是久负盛名的开源 Java IDE,我的学生时代一直使用它写 Java。 -> - 曾经抗拒从转 [Intellij Idea](intellij-idea.md) ,但后来发现真香,不得不说,确实是目前最优秀的 Java IDE。 -> - 你可以在 [vscode](vscode.md) 中写各种语言,只要安装相应插件即可。如果你的项目中使用了很多种编程语言,又懒得在多个 IDE 之间切换,那么就用 vscode 来一网打尽吧。 - -- [Intellij IDEA 应用指南](intellij-idea.md) -- [Eclipse 应用指南](eclipse.md) -- [Vscode 应用指南](vscode.md) diff --git a/utils/config.yml b/utils/config.yml new file mode 100644 index 00000000..6fac6a22 --- /dev/null +++ b/utils/config.yml @@ -0,0 +1,14 @@ +#批量添加和修改、删除front matter配置文件 + +# 需要批量处理的路径,docs文件夹内的文件夹 (数组。映射路径:docs/arr[0]/arr[1] ... ) +path: + - docs # 第一个成员必须是docs + +# 要删除的字段 (数组) +delete: + # - test + # - tags + + # 要添加、修改front matter的数据 (front matter中没有的数据则添加,已有的数据则覆盖) +data: + article: false \ No newline at end of file diff --git a/utils/editFrontmatter.js b/utils/editFrontmatter.js new file mode 100644 index 00000000..8c223f4e --- /dev/null +++ b/utils/editFrontmatter.js @@ -0,0 +1,92 @@ +/** + * 批量添加和修改front matter ,需要配置 ./config.yml 文件。 + */ +const fs = require('fs'); // 文件模块 +const path = require('path'); // 路径模块 +const matter = require('gray-matter'); // front matter解析器 https://github.com/jonschlinkert/gray-matter +const jsonToYaml = require('json2yaml') +const yamlToJs = require('yamljs') +const inquirer = require('inquirer') // 命令行操作 +const chalk = require('chalk') // 命令行打印美化 +const readFileList = require('./modules/readFileList'); +const { type, repairDate} = require('./modules/fn'); +const log = console.log + +const configPath = path.join(__dirname, 'config.yml') // 配置文件的路径 + +main(); + +/** + * 主体函数 + */ +async function main() { + + const promptList = [{ + type: "confirm", + message: chalk.yellow('批量操作frontmatter有修改数据的风险,确定要继续吗?'), + name: "edit", + }]; + let edit = true; + + await inquirer.prompt(promptList).then(answers => { + edit = answers.edit + }) + + if(!edit) { // 退出操作 + return + } + + const config = yamlToJs.load(configPath) // 解析配置文件的数据转为js对象 + + if (type(config.path) !== 'array') { + log(chalk.red('路径配置有误,path字段应该是一个数组')) + return + } + + if (config.path[0] !== 'docs') { + log(chalk.red("路径配置有误,path数组的第一个成员必须是'docs'")) + return + } + + const filePath = path.join(__dirname, '..', ...config.path); // 要批量修改的文件路径 + const files = readFileList(filePath); // 读取所有md文件数据 + + files.forEach(file => { + let dataStr = fs.readFileSync(file.filePath, 'utf8');// 读取每个md文件的内容 + const fileMatterObj = matter(dataStr) // 解析md文件的front Matter。 fileMatterObj => {content:'剔除frontmatter后的文件内容字符串', data:{}, ...} + let matterData = fileMatterObj.data; // 得到md文件的front Matter + + let mark = false + // 删除操作 + if (config.delete) { + if( type(config.delete) !== 'array' ) { + log(chalk.yellow('未能完成删除操作,delete字段的值应该是一个数组!')) + } else { + config.delete.forEach(item => { + if (matterData[item]) { + delete matterData[item] + mark = true + } + }) + + } + } + + // 添加、修改操作 + if (type(config.data) === 'object') { + Object.assign(matterData, config.data) // 将配置数据合并到front Matter对象 + mark = true + } + + // 有操作时才继续 + if (mark) { + if(matterData.date && type(matterData.date) === 'date') { + matterData.date = repairDate(matterData.date) // 修复时间格式 + } + const newData = jsonToYaml.stringify(matterData).replace(/\n\s{2}/g,"\n").replace(/"/g,"") + '---\r\n' + fileMatterObj.content; + fs.writeFileSync(file.filePath, newData); // 写入 + log(chalk.green(`update frontmatter:${file.filePath} `)) + } + + }) +} diff --git a/utils/modules/fn.js b/utils/modules/fn.js new file mode 100644 index 00000000..48cbbd17 --- /dev/null +++ b/utils/modules/fn.js @@ -0,0 +1,21 @@ +// 类型判断 +exports.type = function (o){ + var s = Object.prototype.toString.call(o) + return s.match(/\[object (.*?)\]/)[1].toLowerCase() +} + + // 修复date时区格式的问题 + exports.repairDate = function (date) { + date = new Date(date); + return `${date.getUTCFullYear()}-${zero(date.getUTCMonth()+1)}-${zero(date.getUTCDate())} ${zero(date.getUTCHours())}:${zero(date.getUTCMinutes())}:${zero(date.getUTCSeconds())}`; +} + +// 日期的格式 +exports.dateFormat = function (date) { + return `${date.getFullYear()}-${zero(date.getMonth()+1)}-${zero(date.getDate())} ${zero(date.getHours())}:${zero(date.getMinutes())}:${zero(date.getSeconds())}` +} + +// 小于10补0 +function zero(d){ + return d.toString().padStart(2,'0') +} \ No newline at end of file diff --git a/utils/modules/readFileList.js b/utils/modules/readFileList.js new file mode 100644 index 00000000..8eb97c62 --- /dev/null +++ b/utils/modules/readFileList.js @@ -0,0 +1,43 @@ +/** + * 读取所有md文件数据 + */ +const fs = require('fs'); // 文件模块 +const path = require('path'); // 路径模块 +const docsRoot = path.join(__dirname, '..', '..', 'docs'); // docs文件路径 + +function readFileList(dir = docsRoot, filesList = []) { + const files = fs.readdirSync(dir); + files.forEach( (item, index) => { + let filePath = path.join(dir, item); + const stat = fs.statSync(filePath); + if (stat.isDirectory() && item !== '.vuepress') { + readFileList(path.join(dir, item), filesList); //递归读取文件 + } else { + if(path.basename(dir) !== 'docs'){ // 过滤docs目录级下的文件 + + const fileNameArr = path.basename(filePath).split('.') + let name = null, type = null; + if (fileNameArr.length === 2) { // 没有序号的文件 + name = fileNameArr[0] + type = fileNameArr[1] + } else if (fileNameArr.length === 3) { // 有序号的文件 + name = fileNameArr[1] + type = fileNameArr[2] + } else { // 超过两个‘.’的 + log(chalk.yellow(`warning: 该文件 "${filePath}" 没有按照约定命名,将忽略生成相应数据。`)) + return + } + if(type === 'md'){ // 过滤非md文件 + filesList.push({ + name, + filePath + }); + } + + } + } + }); + return filesList; +} + +module.exports = readFileList; \ No newline at end of file From c05920a45071da1bb5b4b0190bc9e5a47d50c109 Mon Sep 17 00:00:00 2001 From: dunwu Date: Sun, 10 Apr 2022 22:45:14 +0800 Subject: [PATCH 07/23] =?UTF-8?q?build:=20=E4=BF=AE=E6=94=B9=E5=9C=A8?= =?UTF-8?q?=E7=BA=BF=E6=96=87=E6=A1=A3=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/.vuepress/config.js | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index 339642aa..7852173d 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -61,7 +61,7 @@ module.exports = { docsDir: 'docs', // 编辑的文件夹 editLinks: true, // 编辑链接 - editLinkText: '编辑', + editLinkText: '📝 帮助改善此页面!', // 以下配置是Vdoing主题改动的和新增的配置 sidebar: { mode: 'structuring', collapsable: false }, // 侧边栏 'structuring' | { mode: 'structuring', collapsable: Boolean} | 'auto' | 自定义 温馨提示:目录页数据依赖于结构化的侧边栏数据,如果你不设置为'structuring',将无法使用目录页 @@ -69,7 +69,7 @@ module.exports = { // sidebarOpen: false, // 初始状态是否打开侧边栏,默认true updateBar: { // 最近更新栏 - showToArticle: false // 显示到文章页底部,默认true + showToArticle: true // 显示到文章页底部,默认true // moreArticle: '/archives' // “更多文章”跳转的页面,默认'/archives' }, // titleBadge: false, // 文章标题前的图标是否显示,默认true @@ -122,10 +122,14 @@ module.exports = { // 插件 plugins: [ - // [require('./plugins/love-me'), { // 鼠标点击爱心特效 - // color: '#11a8cd', // 爱心颜色,默认随机色 - // excludeClassName: 'theme-vdoing-content' // 要排除元素的class, 默认空'' - // }], + [ + require('./plugins/love-me'), + { + // 鼠标点击爱心特效 + color: '#11a8cd', // 爱心颜色,默认随机色 + excludeClassName: 'theme-vdoing-content' // 要排除元素的class, 默认空'' + } + ], ['fulltext-search'], // 全文搜索 @@ -147,13 +151,6 @@ module.exports = { // ] // }], - [ - 'vuepress-plugin-baidu-tongji', // 百度统计 - { - hm: baiduCode || '01293bffa6c3962016c08ba685c79d78' - } - ], - [ 'one-click-copy', { From 94a480ebc51df73974aee3bc50d84ab27672e77d Mon Sep 17 00:00:00 2001 From: dunwu Date: Sun, 24 Apr 2022 21:03:38 +0800 Subject: [PATCH 08/23] =?UTF-8?q?docs:=20=E6=95=B4=E7=90=86=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 172 +++++++++--------- ...345\212\241\351\227\256\351\242\230.xmind" | Bin 235064 -> 0 bytes ...350\203\275\350\260\203\344\274\230.xmind" | Bin 489913 -> 0 bytes assets/TroubleShooting.eddx | Bin 36408 -> 0 bytes assets/TroubleShooting.xmind | Bin 223487 -> 0 bytes assets/framework/Dubbo.xmind | Bin 218878 -> 0 bytes assets/framework/Shiro.xmind | Bin 131886 -> 0 bytes assets/framework/mybatis.eddx | Bin 164252 -> 0 bytes assets/framework/mybatis.xmind | Bin 281632 -> 0 bytes assets/javaweb.eddx | Bin 21817 -> 0 bytes assets/microservice/Dubbo.xmind | Bin 218878 -> 0 bytes assets/mq/RocketMQ.xmind | Bin 517596 -> 0 bytes assets/server/tomcat/Lifecycle.uml | 27 --- assets/server/tomcat/ProtocolHandler.uml | 76 -------- ...3\344\275\223\347\261\273\345\233\276.uml" | 133 -------------- assets/server/tomcat/jetty.xmind | Bin 112346 -> 0 bytes assets/server/tomcat/tomcat.eddx | Bin 60395 -> 0 bytes assets/server/tomcat/tomcat.xmind | Bin 118795 -> 0 bytes assets/test.eddx | Bin 16894 -> 0 bytes ...\346\216\247\345\267\245\345\205\267.eddx" | Bin 39582 -> 0 bytes ...\345\205\267\346\257\224\345\257\271.xlsx" | Bin 15536 -> 0 bytes docs/.vuepress/config.js | 104 +++++------ docs/.vuepress/enhanceApp.js | 58 ++++++ ...271\213Servlet\346\214\207\345\215\227.md" | 68 +++---- ...344\271\213Jsp\346\214\207\345\215\227.md" | 155 ++++++++-------- ...\344\271\213Filter\345\222\214Listener.md" | 71 ++++---- ...b\344\271\213Cookie\345\222\214Session.md" | 74 ++++---- .../99.JavaWeb\351\235\242\347\273\217.md" | 64 ++++--- .../01.JavaWeb}/README.md | 26 ++- ...53\351\200\237\345\205\245\351\227\250.md" | 75 +++----- ...at\350\277\236\346\216\245\345\231\250.md" | 44 ++--- .../03.Tomcat\345\256\271\345\231\250.md" | 71 +++----- .../04.Tomcat\344\274\230\345\214\226.md" | 50 +++-- .../01.Tomcat/05.Tomcat\345\222\214Jetty.md" | 22 ++- .../01.Tomcat/README.md" | 15 +- .../02.Jetty.md" | 61 +++---- .../README.md" | 16 +- docs/02.JavaEE/README.md | 62 +++++++ .../01.Maven/book.json" | 71 -------- .../01.Maven/cover.jpg" | Bin 117622 -> 0 bytes .../01.Maven/package.json" | 33 ---- .../01.Maven/sidebar.md" | 11 -- .../README.md" | 76 -------- .../README.md" | 14 -- .../README.md" | 20 -- .../README.md" | 23 --- .../README.md" | 48 ----- .../02.\345\256\211\345\205\250/README.md" | 18 -- .../README.md" | 18 -- ...53\351\200\237\345\205\245\351\227\250.md" | 60 ++---- ...271\213pom.xml\350\257\246\350\247\243.md" | 62 ++----- ...13settings.xml\350\257\246\350\247\243.md" | 45 ++--- ...00\344\275\263\345\256\236\350\267\265.md" | 42 ++--- ...55\345\244\256\344\273\223\345\272\223.md" | 34 ++-- ...43\347\240\201\346\243\200\346\237\245.md" | 28 +-- .../01.Maven/README.md" | 17 +- .../01.\346\236\204\345\273\272/02.Ant.md" | 35 ++-- .../01.\346\236\204\345\273\272/README.md" | 16 +- .../02.IDE/01.Intellij.md" | 22 ++- .../02.IDE/02.Eclipse.md" | 18 +- .../02.IDE/03.VsCode.md" | 18 +- .../02.IDE/README.md" | 18 +- ...45\345\205\267\345\257\271\346\257\224.md" | 16 +- .../02.CAT.md" | 21 ++- .../03.Zipkin.md" | 19 +- .../04.Skywalking.md" | 21 ++- .../05.Arthas.md" | 71 +++++--- .../README.md" | 16 +- "docs/11.\350\275\257\344\273\266/README.md" | 72 ++++++++ ...ON\345\272\217\345\210\227\345\214\226.md" | 88 ++++----- ...66\345\272\217\345\210\227\345\214\226.md" | 19 +- .../01.IO/README.md" | 15 +- .../02.JavaBean/01.Lombok.md" | 74 ++++---- .../02.JavaBean/02.Dozer.md" | 42 ++--- .../01.Freemark.md" | 19 +- .../02.Thymeleaf.md" | 28 ++- .../03.Velocity.md" | 19 +- .../README.md" | 14 +- .../04.\346\265\213\350\257\225/01.Junit.md" | 63 +++---- .../02.Mockito.md" | 23 ++- .../04.\346\265\213\350\257\225/03.Jmeter.md" | 65 ++++--- .../04.\346\265\213\350\257\225/04.JMH.md" | 21 ++- .../01.Java\346\227\245\345\277\227.md" | 44 ++--- ...va\345\267\245\345\205\267\345\214\205.md" | 13 +- .../03.Reflections.md" | 25 +-- .../04.JavaMail.md" | 41 ++--- .../99.\345\205\266\344\273\226/05.Jsoup.md" | 46 ++--- .../06.Thumbnailator.md" | 35 ++-- .../99.\345\205\266\344\273\226/07.Zxing.md" | 29 ++- "docs/12.\345\267\245\345\205\267/README.md" | 57 ++++++ ...53\351\200\237\345\205\245\351\227\250.md" | 70 ++++--- .../02.Mybatis\345\216\237\347\220\206.md" | 95 ++++------ .../11.ORM/README.md" | 17 +- .../12.\345\256\211\345\205\250/01.Shiro.md" | 20 +- .../02.SpringSecurity.md" | 19 +- .../13.IO/01.Netty.md" | 18 +- .../01.Dubbo.md" | 19 +- .../13.\346\241\206\346\236\266/README.md" | 29 ++- ...37\345\210\227\351\235\242\350\257\225.md" | 38 ++-- ...72\346\234\254\345\216\237\347\220\206.md" | 108 ++++------- .../01.MQ/03.RocketMQ.md" | 47 ++--- .../01.MQ/04.ActiveMQ.md" | 20 +- .../01.MQ/README.md" | 15 +- ...30\351\235\242\350\257\225\351\242\230.md" | 30 ++- ...30\344\270\255\351\227\264\344\273\266.md" | 35 ++-- .../03.Memcached.md" | 30 ++- .../04.Ehcache.md" | 45 ++--- ...13\345\206\205\347\274\223\345\255\230.md" | 36 ++-- .../06.Http\347\274\223\345\255\230.md" | 27 ++- .../02.\347\274\223\345\255\230/README.md" | 23 ++- .../01.Hystrix.md" | 53 ++---- .../README.md" | 31 ++-- docs/@pages/archivesPage.md | 2 +- docs/@pages/categoriesPage.md | 6 + docs/@pages/tagsPage.md | 6 + docs/README.md | 166 +++++++++++------ 116 files changed, 2018 insertions(+), 2194 deletions(-) delete mode 100644 "assets/Java\344\270\232\345\212\241\351\227\256\351\242\230.xmind" delete mode 100644 "assets/Java\346\200\247\350\203\275\350\260\203\344\274\230.xmind" delete mode 100644 assets/TroubleShooting.eddx delete mode 100644 assets/TroubleShooting.xmind delete mode 100644 assets/framework/Dubbo.xmind delete mode 100644 assets/framework/Shiro.xmind delete mode 100644 assets/framework/mybatis.eddx delete mode 100644 assets/framework/mybatis.xmind delete mode 100644 assets/javaweb.eddx delete mode 100644 assets/microservice/Dubbo.xmind delete mode 100644 assets/mq/RocketMQ.xmind delete mode 100644 assets/server/tomcat/Lifecycle.uml delete mode 100644 assets/server/tomcat/ProtocolHandler.uml delete mode 100644 "assets/server/tomcat/Tomcat\347\224\237\345\221\250\346\234\237\347\256\241\347\220\206\346\200\273\344\275\223\347\261\273\345\233\276.uml" delete mode 100644 assets/server/tomcat/jetty.xmind delete mode 100644 assets/server/tomcat/tomcat.eddx delete mode 100644 assets/server/tomcat/tomcat.xmind delete mode 100644 assets/test.eddx delete mode 100644 "assets/tool/monitor/\347\233\221\346\216\247\345\267\245\345\205\267.eddx" delete mode 100644 "assets/tool/monitor/\347\233\221\346\216\247\345\267\245\345\205\267\346\257\224\345\257\271.xlsx" rename "docs/01.JavaEE/02.JavaEE\344\271\213Servlet\346\214\207\345\215\227.md" => "docs/02.JavaEE/01.JavaWeb/01.JavaWeb\344\271\213Servlet\346\214\207\345\215\227.md" (90%) rename "docs/01.JavaEE/03.JavaEE\344\271\213Jsp\346\214\207\345\215\227.md" => "docs/02.JavaEE/01.JavaWeb/02.JavaWeb\344\271\213Jsp\346\214\207\345\215\227.md" (97%) rename "docs/01.JavaEE/04.JavaEE\344\271\213Filter\345\222\214Listener.md" => "docs/02.JavaEE/01.JavaWeb/03.JavaWeb\344\271\213Filter\345\222\214Listener.md" (88%) rename "docs/01.JavaEE/05.JavaEE\344\271\213Cookie\345\222\214Session.md" => "docs/02.JavaEE/01.JavaWeb/04.JavaWeb\344\271\213Cookie\345\222\214Session.md" (96%) rename "docs/01.JavaEE/01.JavaEE\351\235\242\347\273\217.md" => "docs/02.JavaEE/01.JavaWeb/99.JavaWeb\351\235\242\347\273\217.md" (92%) rename docs/{01.JavaEE => 02.JavaEE/01.JavaWeb}/README.md (55%) rename "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/01.Tomcat\345\272\224\347\224\250\346\214\207\345\215\227.md" => "docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/01.Tomcat/01.Tomcat\345\277\253\351\200\237\345\205\245\351\227\250.md" (97%) rename "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/02.Tomcat\350\277\236\346\216\245\345\231\250.md" => "docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/01.Tomcat/02.Tomcat\350\277\236\346\216\245\345\231\250.md" (97%) rename "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/03.Tomcat\345\256\271\345\231\250.md" => "docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/01.Tomcat/03.Tomcat\345\256\271\345\231\250.md" (95%) rename "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/04.Tomcat\344\274\230\345\214\226.md" => "docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/01.Tomcat/04.Tomcat\344\274\230\345\214\226.md" (87%) rename "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/05.Tomcat\345\222\214Jetty.md" => "docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/01.Tomcat/05.Tomcat\345\222\214Jetty.md" (79%) rename "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/README.md" => "docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/01.Tomcat/README.md" (72%) rename "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/02.Jetty.md" => "docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/02.Jetty.md" (98%) rename "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/README.md" => "docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/README.md" (77%) create mode 100644 docs/02.JavaEE/README.md delete mode 100644 "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/book.json" delete mode 100644 "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/cover.jpg" delete mode 100644 "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/package.json" delete mode 100644 "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/sidebar.md" delete mode 100644 "docs/02.Java\350\275\257\344\273\266/README.md" delete mode 100644 "docs/03.Java\345\267\245\345\205\267/02.JavaBean\345\267\245\345\205\267/README.md" delete mode 100644 "docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/README.md" delete mode 100644 "docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/README.md" delete mode 100644 "docs/03.Java\345\267\245\345\205\267/README.md" delete mode 100644 "docs/04.Java\346\241\206\346\236\266/02.\345\256\211\345\205\250/README.md" delete mode 100644 "docs/05.Java\344\270\255\351\227\264\344\273\266/04.\345\276\256\346\234\215\345\212\241/README.md" rename "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/01.Maven\345\205\245\351\227\250\346\214\207\345\215\227.md" => "docs/11.\350\275\257\344\273\266/01.\346\236\204\345\273\272/01.Maven/01.Maven\345\277\253\351\200\237\345\205\245\351\227\250.md" (95%) rename "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/02.Maven\346\225\231\347\250\213\344\271\213pom.xml\350\257\246\350\247\243.md" => "docs/11.\350\275\257\344\273\266/01.\346\236\204\345\273\272/01.Maven/02.Maven\346\225\231\347\250\213\344\271\213pom.xml\350\257\246\350\247\243.md" (95%) rename "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/03.Maven\346\225\231\347\250\213\344\271\213settings.xml\350\257\246\350\247\243.md" => "docs/11.\350\275\257\344\273\266/01.\346\236\204\345\273\272/01.Maven/03.Maven\346\225\231\347\250\213\344\271\213settings.xml\350\257\246\350\247\243.md" (94%) rename "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/04.Maven\345\256\236\346\210\230\351\227\256\351\242\230\345\222\214\346\234\200\344\275\263\345\256\236\350\267\265.md" => "docs/11.\350\275\257\344\273\266/01.\346\236\204\345\273\272/01.Maven/04.Maven\345\256\236\346\210\230\351\227\256\351\242\230\345\222\214\346\234\200\344\275\263\345\256\236\350\267\265.md" (86%) rename "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/05.Maven\346\225\231\347\250\213\344\271\213\345\217\221\345\270\203jar\345\210\260\347\247\201\346\234\215\346\210\226\344\270\255\345\244\256\344\273\223\345\272\223.md" => "docs/11.\350\275\257\344\273\266/01.\346\236\204\345\273\272/01.Maven/05.Maven\346\225\231\347\250\213\344\271\213\345\217\221\345\270\203jar\345\210\260\347\247\201\346\234\215\346\210\226\344\270\255\345\244\256\344\273\223\345\272\223.md" (95%) rename "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/06.Maven\346\217\222\344\273\266\344\271\213\344\273\243\347\240\201\346\243\200\346\237\245.md" => "docs/11.\350\275\257\344\273\266/01.\346\236\204\345\273\272/01.Maven/06.Maven\346\217\222\344\273\266\344\271\213\344\273\243\347\240\201\346\243\200\346\237\245.md" (97%) rename "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/README.md" => "docs/11.\350\275\257\344\273\266/01.\346\236\204\345\273\272/01.Maven/README.md" (89%) rename "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/02.Ant.md" => "docs/11.\350\275\257\344\273\266/01.\346\236\204\345\273\272/02.Ant.md" (95%) rename "docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/README.md" => "docs/11.\350\275\257\344\273\266/01.\346\236\204\345\273\272/README.md" (86%) rename "docs/02.Java\350\275\257\344\273\266/02.JavaIDE/01.Intellij.md" => "docs/11.\350\275\257\344\273\266/02.IDE/01.Intellij.md" (98%) rename "docs/02.Java\350\275\257\344\273\266/02.JavaIDE/02.Eclipse.md" => "docs/11.\350\275\257\344\273\266/02.IDE/02.Eclipse.md" (99%) rename "docs/02.Java\350\275\257\344\273\266/02.JavaIDE/03.VsCode.md" => "docs/11.\350\275\257\344\273\266/02.IDE/03.VsCode.md" (81%) rename "docs/02.Java\350\275\257\344\273\266/02.JavaIDE/README.md" => "docs/11.\350\275\257\344\273\266/02.IDE/README.md" (70%) rename "docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/01.\347\233\221\346\216\247\350\257\212\346\226\255\345\267\245\345\205\267.md" => "docs/11.\350\275\257\344\273\266/03.\347\233\221\346\216\247\350\257\212\346\226\255/01.\347\233\221\346\216\247\345\267\245\345\205\267\345\257\271\346\257\224.md" (78%) rename "docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/02.CAT.md" => "docs/11.\350\275\257\344\273\266/03.\347\233\221\346\216\247\350\257\212\346\226\255/02.CAT.md" (92%) rename "docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/03.Zipkin.md" => "docs/11.\350\275\257\344\273\266/03.\347\233\221\346\216\247\350\257\212\346\226\255/03.Zipkin.md" (97%) rename "docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/04.Skywalking.md" => "docs/11.\350\275\257\344\273\266/03.\347\233\221\346\216\247\350\257\212\346\226\255/04.Skywalking.md" (88%) rename "docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/05.Arthas.md" => "docs/11.\350\275\257\344\273\266/03.\347\233\221\346\216\247\350\257\212\346\226\255/05.Arthas.md" (89%) rename "docs/02.Java\350\275\257\344\273\266/04.Java\347\233\221\346\216\247\350\257\212\346\226\255/README.md" => "docs/11.\350\275\257\344\273\266/03.\347\233\221\346\216\247\350\257\212\346\226\255/README.md" (67%) create mode 100644 "docs/11.\350\275\257\344\273\266/README.md" rename "docs/03.Java\345\267\245\345\205\267/01.Java\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/01.JSON\345\272\217\345\210\227\345\214\226.md" => "docs/12.\345\267\245\345\205\267/01.IO/01.JSON\345\272\217\345\210\227\345\214\226.md" (90%) rename "docs/03.Java\345\267\245\345\205\267/01.Java\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/02.\344\272\214\350\277\233\345\210\266\345\272\217\345\210\227\345\214\226.md" => "docs/12.\345\267\245\345\205\267/01.IO/02.\344\272\214\350\277\233\345\210\266\345\272\217\345\210\227\345\214\226.md" (97%) rename "docs/03.Java\345\267\245\345\205\267/01.Java\345\272\217\345\210\227\345\214\226\345\267\245\345\205\267/README.md" => "docs/12.\345\267\245\345\205\267/01.IO/README.md" (89%) rename "docs/03.Java\345\267\245\345\205\267/02.JavaBean\345\267\245\345\205\267/01.Lombok.md" => "docs/12.\345\267\245\345\205\267/02.JavaBean/01.Lombok.md" (92%) rename "docs/03.Java\345\267\245\345\205\267/02.JavaBean\345\267\245\345\205\267/02.Dozer.md" => "docs/12.\345\267\245\345\205\267/02.JavaBean/02.Dozer.md" (95%) rename "docs/03.Java\345\267\245\345\205\267/03.Java\346\250\241\346\235\277\345\274\225\346\223\216/01.Freemark.md" => "docs/12.\345\267\245\345\205\267/03.\346\250\241\346\235\277\345\274\225\346\223\216/01.Freemark.md" (97%) rename "docs/03.Java\345\267\245\345\205\267/03.Java\346\250\241\346\235\277\345\274\225\346\223\216/02.Thymeleaf.md" => "docs/12.\345\267\245\345\205\267/03.\346\250\241\346\235\277\345\274\225\346\223\216/02.Thymeleaf.md" (97%) rename "docs/03.Java\345\267\245\345\205\267/03.Java\346\250\241\346\235\277\345\274\225\346\223\216/03.Velocity.md" => "docs/12.\345\267\245\345\205\267/03.\346\250\241\346\235\277\345\274\225\346\223\216/03.Velocity.md" (96%) rename "docs/03.Java\345\267\245\345\205\267/03.Java\346\250\241\346\235\277\345\274\225\346\223\216/README.md" => "docs/12.\345\267\245\345\205\267/03.\346\250\241\346\235\277\345\274\225\346\223\216/README.md" (92%) rename "docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/01.Junit.md" => "docs/12.\345\267\245\345\205\267/04.\346\265\213\350\257\225/01.Junit.md" (94%) rename "docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/02.Mockito.md" => "docs/12.\345\267\245\345\205\267/04.\346\265\213\350\257\225/02.Mockito.md" (98%) rename "docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/03.Jmeter.md" => "docs/12.\345\267\245\345\205\267/04.\346\265\213\350\257\225/03.Jmeter.md" (92%) rename "docs/03.Java\345\267\245\345\205\267/04.Java\346\265\213\350\257\225\345\267\245\345\205\267/04.JMH.md" => "docs/12.\345\267\245\345\205\267/04.\346\265\213\350\257\225/04.JMH.md" (96%) rename "docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/01.Java\346\227\245\345\277\227.md" => "docs/12.\345\267\245\345\205\267/99.\345\205\266\344\273\226/01.Java\346\227\245\345\277\227.md" (95%) rename "docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/02.Java\345\267\245\345\205\267\345\214\205.md" => "docs/12.\345\267\245\345\205\267/99.\345\205\266\344\273\226/02.Java\345\267\245\345\205\267\345\214\205.md" (67%) rename "docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/03.Java\345\217\215\345\260\204\345\267\245\345\205\267.md" => "docs/12.\345\267\245\345\205\267/99.\345\205\266\344\273\226/03.Reflections.md" (92%) rename "docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/04.JavaMail.md" => "docs/12.\345\267\245\345\205\267/99.\345\205\266\344\273\226/04.JavaMail.md" (93%) rename "docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/05.Jsoup\345\272\224\347\224\250.md" => "docs/12.\345\267\245\345\205\267/99.\345\205\266\344\273\226/05.Jsoup.md" (93%) rename "docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/06.Thumbnailator\345\272\224\347\224\250.md" => "docs/12.\345\267\245\345\205\267/99.\345\205\266\344\273\226/06.Thumbnailator.md" (92%) rename "docs/03.Java\345\267\245\345\205\267/05.\345\205\266\344\273\226Java\345\267\245\345\205\267/07.Zxing\345\272\224\347\224\250.md" => "docs/12.\345\267\245\345\205\267/99.\345\205\266\344\273\226/07.Zxing.md" (87%) create mode 100644 "docs/12.\345\267\245\345\205\267/README.md" rename "docs/04.Java\346\241\206\346\236\266/01.ORM/01.Mybatis\345\272\224\347\224\250\346\214\207\345\215\227.md" => "docs/13.\346\241\206\346\236\266/11.ORM/01.Mybatis\345\277\253\351\200\237\345\205\245\351\227\250.md" (92%) rename "docs/04.Java\346\241\206\346\236\266/01.ORM/02.Mybatis\345\216\237\347\220\206.md" => "docs/13.\346\241\206\346\236\266/11.ORM/02.Mybatis\345\216\237\347\220\206.md" (94%) rename "docs/04.Java\346\241\206\346\236\266/01.ORM/README.md" => "docs/13.\346\241\206\346\236\266/11.ORM/README.md" (88%) rename "docs/04.Java\346\241\206\346\236\266/02.\345\256\211\345\205\250/01.Shiro.md" => "docs/13.\346\241\206\346\236\266/12.\345\256\211\345\205\250/01.Shiro.md" (99%) rename "docs/04.Java\346\241\206\346\236\266/02.\345\256\211\345\205\250/02.SpringSecurity.md" => "docs/13.\346\241\206\346\236\266/12.\345\256\211\345\205\250/02.SpringSecurity.md" (97%) rename "docs/04.Java\346\241\206\346\236\266/03.IO/01.Netty.md" => "docs/13.\346\241\206\346\236\266/13.IO/01.Netty.md" (96%) rename "docs/05.Java\344\270\255\351\227\264\344\273\266/04.\345\276\256\346\234\215\345\212\241/01.Dubbo.md" => "docs/13.\346\241\206\346\236\266/14.\345\276\256\346\234\215\345\212\241/01.Dubbo.md" (99%) rename "docs/04.Java\346\241\206\346\236\266/README.md" => "docs/13.\346\241\206\346\236\266/README.md" (78%) rename "docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/01.\346\266\210\346\201\257\351\230\237\345\210\227\351\235\242\350\257\225.md" => "docs/14.\344\270\255\351\227\264\344\273\266/01.MQ/01.\346\266\210\346\201\257\351\230\237\345\210\227\351\235\242\350\257\225.md" (97%) rename "docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/02.\346\266\210\346\201\257\351\230\237\345\210\227\345\237\272\346\234\254\345\216\237\347\220\206.md" => "docs/14.\344\270\255\351\227\264\344\273\266/01.MQ/02.\346\266\210\346\201\257\351\230\237\345\210\227\345\237\272\346\234\254\345\216\237\347\220\206.md" (95%) rename "docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/03.RocketMQ.md" => "docs/14.\344\270\255\351\227\264\344\273\266/01.MQ/03.RocketMQ.md" (96%) rename "docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/04.ActiveMQ.md" => "docs/14.\344\270\255\351\227\264\344\273\266/01.MQ/04.ActiveMQ.md" (98%) rename "docs/05.Java\344\270\255\351\227\264\344\273\266/01.\346\266\210\346\201\257\351\230\237\345\210\227/README.md" => "docs/14.\344\270\255\351\227\264\344\273\266/01.MQ/README.md" (97%) rename "docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/01.\347\274\223\345\255\230\351\235\242\350\257\225\351\242\230.md" => "docs/14.\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/01.\347\274\223\345\255\230\351\235\242\350\257\225\351\242\230.md" (97%) rename "docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/02.Java\347\274\223\345\255\230\346\241\206\346\236\266.md" => "docs/14.\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/02.Java\347\274\223\345\255\230\344\270\255\351\227\264\344\273\266.md" (94%) rename "docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/03.Memcached\345\272\224\347\224\250\346\214\207\345\215\227.md" => "docs/14.\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/03.Memcached.md" (89%) rename "docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/04.Ehcache\345\272\224\347\224\250\346\214\207\345\215\227.md" => "docs/14.\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/04.Ehcache.md" (94%) rename "docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/05.Java\347\274\223\345\255\230\345\272\223.md" => "docs/14.\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/05.Java\350\277\233\347\250\213\345\206\205\347\274\223\345\255\230.md" (93%) rename "docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/06.Http\347\274\223\345\255\230.md" => "docs/14.\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/06.Http\347\274\223\345\255\230.md" (92%) rename "docs/05.Java\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/README.md" => "docs/14.\344\270\255\351\227\264\344\273\266/02.\347\274\223\345\255\230/README.md" (80%) rename "docs/05.Java\344\270\255\351\227\264\344\273\266/03.\346\265\201\351\207\217\346\216\247\345\210\266/01.Hystrix.md" => "docs/14.\344\270\255\351\227\264\344\273\266/03.\346\265\201\351\207\217\346\216\247\345\210\266/01.Hystrix.md" (95%) rename "docs/05.Java\344\270\255\351\227\264\344\273\266/README.md" => "docs/14.\344\270\255\351\227\264\344\273\266/README.md" (78%) create mode 100644 docs/@pages/categoriesPage.md create mode 100644 docs/@pages/tagsPage.md diff --git a/README.md b/README.md index b38e0186..25c22845 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

    - logo + logo

    @@ -18,7 +18,7 @@ commit - + code style @@ -44,105 +44,110 @@ ### JavaEE -> [☕ JavaEE](docs/01.JavaEE/README.md) 技术是 Java Web 的基石 +#### JavaWeb -- [JavaEE 面经](docs/01.JavaEE/01.JavaEE面经.md) -- [JavaEE 之 Servlet 指南](docs/01.JavaEE/02.JavaEE之Servlet指南.md) -- [JavaEE 之 Jsp 指南](docs/01.JavaEE/03.JavaEE之Jsp指南.md) -- [JavaEE 之 Filter 和 Listener](docs/01.JavaEE/04.JavaEE之Filter和Listener.md) -- [JavaEE 之 Cookie 和 Session](docs/01.JavaEE/05.JavaEE之Cookie和Session.md) +- [JavaWeb 面经](docs/02.JavaEE/01.JavaWeb/99.JavaWeb面经.md) +- [JavaWeb 之 Servlet 指南](docs/02.JavaEE/01.JavaWeb/01.JavaWeb之Servlet指南.md) +- [JavaWeb 之 Jsp 指南](docs/02.JavaEE/01.JavaWeb/02.JavaWeb之Jsp指南.md) +- [JavaWeb 之 Filter 和 Listener](docs/02.JavaEE/01.JavaWeb/03.JavaWeb之Filter和Listener.md) +- [JavaWeb 之 Cookie 和 Session](docs/02.JavaEE/01.JavaWeb/04.JavaWeb之Cookie和Session.md) + +#### Java 服务器 + +> Tomcat 和 Jetty 都是 Java 比较流行的轻量级服务器。 +> +> Nginx 是目前最流行的反向代理服务器,也常用于负载均衡。 + +- [Tomcat 快速入门](docs/02.JavaEE/02.服务器/01.Tomcat/01.Tomcat快速入门.md) +- [Tomcat 连接器](docs/02.JavaEE/02.服务器/01.Tomcat/02.Tomcat连接器.md) +- [Tomcat 容器](docs/02.JavaEE/02.服务器/01.Tomcat/03.Tomcat容器.md) +- [Tomcat 优化](docs/02.JavaEE/02.服务器/01.Tomcat/04.Tomcat优化.md) +- [Tomcat 和 Jetty](docs/02.JavaEE/02.服务器/01.Tomcat/05.Tomcat和Jetty.md) +- [Jetty](docs/02.JavaEE/02.服务器/02.Jetty.md) ### Java 软件 #### Java 构建 -> Java 项目需要通过 [**构建工具**](docs/02.Java软件/01.Java构建) 来管理项目依赖,完成编译、打包、发布、生成 JavaDoc 等任务。 +> Java 项目需要通过 [**构建工具**](docs/11.软件/01.构建) 来管理项目依赖,完成编译、打包、发布、生成 JavaDoc 等任务。 > > - 目前最主流的构建工具是 Maven,它的功能非常强大。 > - Gradle 号称是要替代 Maven 等构件工具,它的版本管理确实简洁,但是需要学习 Groovy,学习成本比 Maven 高。 > - Ant 功能比 Maven 和 Gradle 要弱,现代 Java 项目基本不用了,但也有一些传统的 Java 项目还在使用。 -- [Maven](docs/02.Java软件/01.Java构建/01.Maven) 📚 - - [Maven 入门指南](docs/02.Java软件/01.Java构建/01.Maven/01.Maven入门指南.md) - - [Maven 教程之 pom.xml 详解](docs/02.Java软件/01.Java构建/01.Maven/02.Maven教程之pom.xml详解.md) - - [Maven 教程之 settings.xml 详解](docs/02.Java软件/01.Java构建/01.Maven/03.Maven教程之settings.xml详解.md) - - [Maven 实战问题和最佳实践](docs/02.Java软件/01.Java构建/01.Maven/04.Maven实战问题和最佳实践.md) - - [Maven 教程之发布 jar 到私服或中央仓库](docs/02.Java软件/01.Java构建/01.Maven/05.Maven教程之发布jar到私服或中央仓库.md) - - [Maven 插件之代码检查](docs/02.Java软件/01.Java构建/01.Maven/06.Maven插件之代码检查.md) -- [Ant 简易教程](docs/02.Java软件/01.Java构建/02.Ant.md) +- [Maven](docs/11.软件/01.构建/01.Maven) 📚 + - [Maven 快速入门](docs/11.软件/01.构建/01.Maven/01.Maven快速入门.md) + - [Maven 教程之 pom.xml 详解](docs/11.软件/01.构建/01.Maven/02.Maven教程之pom.xml详解.md) + - [Maven 教程之 settings.xml 详解](docs/11.软件/01.构建/01.Maven/03.Maven教程之settings.xml详解.md) + - [Maven 实战问题和最佳实践](docs/11.软件/01.构建/01.Maven/04.Maven实战问题和最佳实践.md) + - [Maven 教程之发布 jar 到私服或中央仓库](docs/11.软件/01.构建/01.Maven/05.Maven教程之发布jar到私服或中央仓库.md) + - [Maven 插件之代码检查](docs/11.软件/01.构建/01.Maven/06.Maven插件之代码检查.md) +- [Ant 简易教程](docs/11.软件/01.构建/02.Ant.md) #### Java IDE -> 自从有了 [**IDE**](docs/02.Java软件/02.JavaIDE),写代码从此就告别了刀耕火种的蛮荒时代。 -> -> - [Eclipse](docs/02.Java软件/02.JavaIDE/02.Eclipse.md) 是久负盛名的开源 Java IDE,我的学生时代一直使用它写 Java。 -> - 曾经抗拒从转 [Intellij Idea](docs/02.Java软件/02.JavaIDE/01.Intellij.md) ,但后来发现真香,不得不说,确实是目前最优秀的 Java IDE。 -> - 你可以在 [vscode](docs/02.Java软件/02.JavaIDE/03.VsCode.md) 中写各种语言,只要安装相应插件即可。如果你的项目中使用了很多种编程语言,又懒得在多个 IDE 之间切换,那么就用 vscode 来一网打尽吧。 - -- [Intellij Idea](docs/02.Java软件/02.JavaIDE/01.Intellij.md) -- [Eclipse](docs/02.Java软件/02.JavaIDE/02.Eclipse.md) -- [vscode](docs/02.Java软件/02.JavaIDE/03.VsCode.md) - -#### Java 服务器 - -> Tomcat 和 Jetty 都是 Java 比较流行的轻量级服务器。 +> 自从有了 [**IDE**](docs/11.软件/02.IDE),写代码从此就告别了刀耕火种的蛮荒时代。 > -> Nginx 是目前最流行的反向代理服务器,也常用于负载均衡。 +> - [Eclipse](docs/11.软件/02.IDE/02.Eclipse.md) 是久负盛名的开源 Java IDE,我的学生时代一直使用它写 Java。 +> - 曾经抗拒从转 [Intellij Idea](docs/11.软件/02.IDE/01.Intellij.md) ,但后来发现真香,不得不说,确实是目前最优秀的 Java IDE。 +> - 你可以在 [vscode](docs/11.软件/02.IDE/03.VsCode.md) 中写各种语言,只要安装相应插件即可。如果你的项目中使用了很多种编程语言,又懒得在多个 IDE 之间切换,那么就用 vscode 来一网打尽吧。 -- [Tomcat 应用指南](docs/02.Java软件/03.Java服务器/01.Tomcat/01.Tomcat应用指南.md) -- [Tomcat 连接器](docs/02.Java软件/03.Java服务器/01.Tomcat/02.Tomcat连接器.md) -- [Tomcat 容器](docs/02.Java软件/03.Java服务器/01.Tomcat/03.Tomcat容器.md) -- [Tomcat 优化](docs/02.Java软件/03.Java服务器/01.Tomcat/04.Tomcat优化.md) -- [Tomcat 和 Jetty](docs/02.Java软件/03.Java服务器/01.Tomcat/05.Tomcat和Jetty.md) -- [Jetty](docs/02.Java软件/03.Java服务器/02.Jetty.md) +- [Intellij Idea](docs/11.软件/02.IDE/01.Intellij.md) +- [Eclipse](docs/11.软件/02.IDE/02.Eclipse.md) +- [vscode](docs/11.软件/02.IDE/03.VsCode.md) #### Java 监控诊断 -> [监控/诊断](docs/02.Java软件/04.Java监控诊断) 工具主要用于 Java 应用的运维。通过采集、分析、存储、可视化应用的有效数据,帮助开发者、使用者快速定位问题,找到性能瓶颈。 +> [监控/诊断](docs/11.软件/03.监控诊断) 工具主要用于 Java 应用的运维。通过采集、分析、存储、可视化应用的有效数据,帮助开发者、使用者快速定位问题,找到性能瓶颈。 -- [监控工具对比](docs/02.Java软件/04.Java监控诊断/01.监控诊断工具.md) -- [CAT](docs/02.Java软件/04.Java监控诊断/02.CAT.md) -- [Zipkin](docs/02.Java软件/04.Java监控诊断/03.Zipkin.md) -- [SkyWalking](docs/02.Java软件/04.Java监控诊断/04.Skywalking.md) -- [Arthas](docs/02.Java软件/04.Java监控诊断/05.Arthas.md) +- [监控工具对比](docs/11.软件/03.监控诊断/01.监控工具对比.md) +- [CAT](docs/11.软件/03.监控诊断/02.CAT.md) +- [Zipkin](docs/11.软件/03.监控诊断/03.Zipkin.md) +- [SkyWalking](docs/11.软件/03.监控诊断/04.Skywalking.md) +- [Arthas](docs/11.软件/03.监控诊断/05.Arthas.md) ### Java 工具 -#### Java 序列化工具 +#### Java IO -- [JSON 序列化](docs/03.Java工具/01.Java序列化工具/01.JSON序列化.md) - [fastjson](https://github.com/alibaba/fastjson)、[Jackson](https://github.com/FasterXML/jackson)、[Gson](https://github.com/google/gson) -- [二进制序列化](docs/03.Java工具/01.Java序列化工具/02.二进制序列化.md) - [Protobuf](https://developers.google.com/protocol-buffers)、[Thrift](https://thrift.apache.org/)、[Hessian](http://hessian.caucho.com/)、[Kryo](https://github.com/EsotericSoftware/kryo)、[FST](https://github.com/RuedigerMoeller/fast-serialization) +- [JSON 序列化](docs/12.工具/01.IO/01.JSON序列化.md) - [fastjson](https://github.com/alibaba/fastjson)、[Jackson](https://github.com/FasterXML/jackson)、[Gson](https://github.com/google/gson) +- [二进制序列化](docs/12.工具/01.IO/02.二进制序列化.md) - [Protobuf](https://developers.google.com/protocol-buffers)、[Thrift](https://thrift.apache.org/)、[Hessian](http://hessian.caucho.com/)、[Kryo](https://github.com/EsotericSoftware/kryo)、[FST](https://github.com/RuedigerMoeller/fast-serialization) #### JavaBean 工具 -- [Lombok](docs/03.Java工具/02.JavaBean工具/01.Lombok.md) -- [Dozer](docs/03.Java工具/02.JavaBean工具/02.Dozer.md) +- [Lombok](docs/12.工具/02.JavaBean/01.Lombok.md) +- [Dozer](docs/12.工具/02.JavaBean/02.Dozer.md) #### Java 模板引擎 -- [Freemark](docs/03.Java工具/03.Java模板引擎/01.Freemark.md) -- [Velocity](docs/03.Java工具/03.Java模板引擎/02.Thymeleaf.md) -- [Thymeleaf](docs/03.Java工具/03.Java模板引擎/03.Velocity.md) +- [Freemark](docs/12.工具/03.模板引擎/01.Freemark.md) +- [Velocity](docs/12.工具/03.模板引擎/02.Thymeleaf.md) +- [Thymeleaf](docs/12.工具/03.模板引擎/03.Velocity.md) #### Java 测试工具 -- [Freemark](docs/03.Java工具/04.Java测试工具/01.Junit.md) -- [Velocity](docs/03.Java工具/04.Java测试工具/02.Mockito.md) -- [Thymeleaf](docs/03.Java工具/04.Java测试工具/03.Jmeter.md) -- [Thymeleaf](docs/03.Java工具/04.Java测试工具/04.JMH.md) +- [Junit](docs/12.工具/04.测试/01.Junit.md) +- [Mockito](docs/12.工具/04.测试/02.Mockito.md) +- [Jmeter](docs/12.工具/04.测试/03.Jmeter.md) +- [JMH](docs/12.工具/04.测试/04.JMH.md) #### 其他 -- [Java 日志](docs/03.Java工具/05.其他Java工具/01.Java日志.md) -- [Java 工具包](docs/03.Java工具/05.其他Java工具/02.Java工具包.md) -- [Java 反射工具](docs/03.Java工具/05.其他Java工具/03.Java反射工具.md) -- [JavaMail](docs/03.Java工具/05.其他Java工具/04.JavaMail.md) -- [Jsoup 应用](docs/03.Java工具/05.其他Java工具/05.Jsoup应用.md) -- [Thumbnailator 应用](docs/03.Java工具/05.其他Java工具/06.Thumbnailator应用.md) -- [Zxing 应用](docs/03.Java工具/05.其他Java工具/07.Zxing应用.md) +- [Java 日志](docs/12.工具/99.其他/01.Java日志.md) +- [Java 工具包](docs/12.工具/99.其他/02.Java工具包.md) +- [Reflections](docs/12.工具/99.其他/03.Reflections.md) +- [JavaMail](docs/12.工具/99.其他/04.JavaMail.md) +- [Jsoup](docs/12.工具/99.其他/05.Jsoup.md) +- [Thumbnailator](docs/12.工具/99.其他/06.Thumbnailator.md) +- [Zxing](docs/12.工具/99.其他/07.Zxing.md) ### Java 框架 +#### ORM + +- [Mybatis 快速入门](docs/13.框架/11.ORM/01.Mybatis快速入门.md) +- [Mybatis 原理](docs/13.框架/11.ORM/02.Mybatis原理.md) + #### Spring 📚 [spring-tutorial](https://dunwu.github.io/spring-tutorial/) 是一个 Spring 实战教程。 @@ -151,11 +156,6 @@ 📚 [Spring Boot 教程](https://dunwu.github.io/spring-boot-tutorial/) 是一个 Spring Boot 实战教程。 -#### ORM - -- [Mybatis 应用指南](docs/04.Java框架/01.ORM/01.Mybatis应用指南.md) -- [Mybatis 原理](docs/04.Java框架/01.ORM/02.Mybatis原理.md) - #### 安全 > Java 领域比较流行的安全框架就是 shiro 和 spring-security。 @@ -164,16 +164,20 @@ > > spring-security 功能更丰富,也比 shiro 更复杂。值得一提的是由于 spring-security 是 spring 团队开发,所以集成 spring 和 spring-boot 框架更容易。 -- [Shiro](docs/04.Java框架/02.安全/01.Shiro.md) -- [SpringSecurity](docs/04.Java框架/02.安全/02.SpringSecurity.md) +- [Shiro](docs/13.框架/12.安全/01.Shiro.md) +- [SpringSecurity](docs/13.框架/12.安全/02.SpringSecurity.md) #### IO -- [Shiro](docs/04.Java框架/03.IO/01.Netty.md) +- [Shiro](docs/13.框架/13.IO/01.Netty.md) + +#### 微服务 + +- [Dubbo](docs/13.框架/14.微服务/01.Dubbo.md) ### Java 中间件 -#### 消息队列 +#### MQ > 消息队列(Message Queue,简称 MQ)技术是分布式应用间交换信息的一种技术。 > @@ -181,10 +185,10 @@ > > 如果想深入学习各种消息队列产品,建议先了解一下 [消息队列基本原理](https://github.com/dunwu/blog/blob/master/source/_posts/theory/mq.md) ,有助于理解消息队列特性的实现和设计思路。 -- [消息队列面试](docs/05.Java中间件/01.消息队列/01.消息队列面试.md) -- [消息队列基本原理](docs/05.Java中间件/01.消息队列/02.消息队列基本原理.md) -- [RocketMQ](docs/05.Java中间件/01.消息队列/03.RocketMQ.md) -- [ActiveMQ](docs/05.Java中间件/01.消息队列/04.ActiveMQ.md) +- [消息队列面试](docs/14.中间件/01.MQ/01.消息队列面试.md) +- [消息队列基本原理](docs/14.中间件/01.MQ/02.消息队列基本原理.md) +- [RocketMQ](docs/14.中间件/01.MQ/03.RocketMQ.md) +- [ActiveMQ](docs/14.中间件/01.MQ/04.ActiveMQ.md) #### 缓存 @@ -192,20 +196,16 @@ > > 如果想深入学习缓存,建议先了解一下 [缓存基本原理](https://dunwu.github.io/design/distributed/分布式缓存.html),有助于理解缓存的特性、原理,使用缓存常见的问题及解决方案。 -- [缓存面试题](docs/05.Java中间件/02.缓存/01.缓存面试题.md) -- [Java 缓存框架](docs/05.Java中间件/02.缓存/02.Java缓存框架.md) -- [Memcached 应用指南](docs/05.Java中间件/02.缓存/03.Memcached应用指南.md) -- [Ehcache 应用指南](docs/05.Java中间件/02.缓存/04.Ehcache应用指南.md) -- [Java 缓存库](docs/05.Java中间件/02.缓存/05.Java缓存库.md) -- [Http 缓存](docs/05.Java中间件/02.缓存/06.Http缓存.md) +- [缓存面试题](docs/14.中间件/02.缓存/01.缓存面试题.md) +- [Java 缓存中间件](docs/14.中间件/02.缓存/02.Java缓存中间件.md) +- [Memcached 快速入门](docs/14.中间件/02.缓存/03.Memcached.md) +- [Ehcache 快速入门](docs/14.中间件/02.缓存/04.Ehcache.md) +- [Java 进程内缓存](docs/14.中间件/02.缓存/05.Java进程内缓存.md) +- [Http 缓存](docs/14.中间件/02.缓存/06.Http缓存.md) #### 流量控制 -- [Hystrix](docs/05.Java中间件/03.流量控制/01.Hystrix.md) - -#### 微服务 - -- [Dubbo](docs/05.Java中间件/04.微服务/01.Dubbo.md) +- [Hystrix](docs/14.中间件/03.流量控制/01.Hystrix.md) ### [大数据](https://dunwu.github.io/bigdata-tutorial) diff --git "a/assets/Java\344\270\232\345\212\241\351\227\256\351\242\230.xmind" "b/assets/Java\344\270\232\345\212\241\351\227\256\351\242\230.xmind" deleted file mode 100644 index 812b8fd2ee8ee127f687186ccea7301a7c5294bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235064 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®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�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

    (O_dKkjlpBe1zN6D${?eFFH54PbA%ce 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 diff --git a/assets/framework/mybatis.eddx b/assets/framework/mybatis.eddx deleted file mode 100644 index 0aaa599d67f9b39e99c6b322848a1ebbd5c5db89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164252 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�(i(^{iuL2}m_V?%CA$ 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

    A?=H{gd`)}qu}d! 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 z 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

    sG5{X1?NNmE6Sw@_zCnsti45EBtOH4 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 Nf&c)Xyg)x6{V(69Bn|)o diff --git a/assets/framework/mybatis.xmind b/assets/framework/mybatis.xmind deleted file mode 100644 index 64ed4a93217cae48765c3e16661a0657ff66b211..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 281632 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 z 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 diff --git a/assets/javaweb.eddx b/assets/javaweb.eddx deleted file mode 100644 index e86cfc8b2ad03fa8898dffe8a3759908bdfcf99f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21817 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 diff --git a/assets/microservice/Dubbo.xmind b/assets/microservice/Dubbo.xmind deleted file mode 100644 index 36b6e597023313c9abac81a5feae209a0894eac2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218878 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≪`;*6Z!oXbrT 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 diff --git a/assets/mq/RocketMQ.xmind b/assets/mq/RocketMQ.xmind deleted file mode 100644 index fdf8105a7b6b60e7e434cd89a86349c272baec0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 517596 zcmeFa*|TQXbsyHW9UEnp6FvALDOXar8i`7(Qup2SJ_l;F40Javh5$hUAWc@eN_FOW z9ze(?2^A zyWNl)=Rpd#&Gk$J_qlKlU*>F zEx-Mi_x+b^zlyK+darJxB7gicy-F_cdAU=#Q64;g`JFF3b;Y>6*R)pdT4|Ack6+G< z%fEX4+GLD9{AAudez~jj$KIPoxr;xo5`W;kk4+wUj7>&67<=-s>(`#>+OVjvUwgZi zdHdI|-O8*e#oy1?0sh=ye0rnytk%1J?S&}wt}{Z_6?%oyJ<1;w`Z1!f?N2|rw!e68 z`uAek>+gOB)Lh%2yyE(`cg^N@{W*SBUp22{Fq1MO8JFtX{^G;=NRts>2)oSALDht) zD2Vdw*WP`d5`Jy}-PfB@Yp zwR<>!X10y9ZS{-CFNbYgKDNLA;)^d{eUV=+uyNEh&HZ;j|MdP-MV(pg<=Lo@H9c79 z_|uFKvX9RekG(f+vvlae>9EsJ4<1dUJX!tdEt?JL&)`OZBa(f^wlzqwV9Yk>bkC(CLYbH-#Uh5>B?6(ZQVI- zS9@2S)M_A@*c$K(MB!=|UB#wfb<)B~UW^)$-?T5K-j&HDnRZ$$$wXLLL98<6dVS6n zDGNPBDmR2QCFHn`+SI%L90v5-XMX+K{_Nk^y!V1dC%UA$e*f#evM&0__38ndy4 zD|b8>gU&hb`ZWk%*j~vYiC%sE3ca>}}Y-I*kt))R(WchX(Q@?4=l7wElX0aFRC%fD+n!;gGZ8pBAgOs|4 zlZsdjt)CDECG24R?!Ef*?bkncuzF*NrezSjlouh%X;X!)&3#w7m1)S8L?0IcVQ^E> z19I+u<+V3n`}T>*(Vbt4*0xQ`y^PKAv$bzPQg1=lR)8bZ3kG)8GI4omakipQNcW1SN-!#?)+m{eS<}&;9m4zI5p& z{9bLg{wd7XRMj*St99w#U;nrN@-$X!Hq=_9HGSm#OxBV&V|8r-ix)XpW~5!eHvN05 z!daQsrm(Ecw$omwhHzAAWp&oU80BzH9={9)F;z;_{hkQnMEzfZvMjy2jl5>hE^27a zE3j)&>J#tc@yn0GnBBSw89)5li;>%gusS7duU|ao!%?{6TUnIC0zMNtbNB`Jq*R*yQklrzm(#o6W47z@x$|%rP(*Bov0ua zi3kdZM1+PRD?r21`9mx+t9}V9F#qcC8XO_u2EVDyC+Aen36PUnH=$Jy7{2*<&rd$R z+EkrYd&9(1Lj}6xMM|xjiCU9@hXxF91QT$SSbO5?&8S^`d6--*|6-?Rj^GwMve>dF z`b}^JC5N|hx~z|1j#?{?ph}OdhSnzMH|F0gVcNVJKD=9CJr3{Clr2^)&|(U+6`H!S zp8FhF0882jkNHsw*X+^7vQNHMl$H~?hBh4l`Gh($X_G2 zQwBc7H(V=X;%y7ISUIB^Gn}a;uM(u`R;_1}n>TK$r&jQUVkxa7!>&3JleFb+X_Gul z8|&N_b-@!0VWgUCdFxHJsMOb)n>AYFL{b=0#Ir6)J*#8xi8ytxP8Zr|v2f?7#kOVK z6{>3smYgfdLG#3&FeP=b{Jdt7!#(MzQAI7A!04SoO`X;1z35GjK966vixk^z?ZecsGb)vgN#ZY0u=Y~;FmO*pm^&Q44*m16X|w9Oc=3vt zyT=ch(~oBAp{*k;2OmyFZNWr1GvdE3q;H|~wlIZ@M;9xWPl6AyG5CIqli(HCbBcO8 zuSwJ@U-o5I7*DGSk6X{d^;K;ydcl~}d958AZCb<~josWmX6JDB#C#*Y zYRiof)Hy<83vZ?Na5kTjopos&9dZJ3w4Z%&h!N&eI!Gwbv>Vu7$h)q9#x=ZBTguI4 zST8fe_KuiACjSjvP_4VzQJoA6JN9aAyVUlQS{J%ne&1nETf=yZonC1O7Z1$2W}*A1 ze(*X6N|0ORCSsIRF}v?T9piz?fP+g*J0t27r?E-Vt6T&@P7Kp8I^)<>xAJwCl*n27 z@mna-C9iMFV}r9Mw!vJ9m`yLO(V6Z@iLNx83(eWc74( z%9@~I3L%WHVInsK>;0Mwb!<9=f;=Fej}odK)7X2I5Sv+a?@`}(T|)4;WBAj*eJUq^ z<8vbLn)_tV!^gwyCM&7AYK7}`M(FY|$o;wynQt9a>1WSwM`g@hbLcv3n78IB9ycZo zkW_}Lqo_}XmwOs()$}LgsktOg4yT*_=%Z7k)AQ01%X{OA$$u+PnTIDlIUOE9L9J#! z(sYE!swj;-@tI*|zN%x>*EAVc$Bd~eyRo~8a^NzkZ@Izls8g+SN{Tgoc# znq!fH#qkuzVe#c*8@eENTf=aK9o88J&COeyZ)X@*9hnvc&)lLFN9)y$!AYV0kj15T zZJG-^D?~$zR#)mQ7~??a&L?`7E4dhJnT7EE0mp3Sv~78mov-4p)Gl7!N*uS=Kf;0y z2xTU-+KWokg*hvj%S{UR;HVs)jgzFT)@|FqP&)JrX5@BJ=`JT}+AP2Cp?8u zTYVs~7vv;K)9VYNqcE~rEJ#);LwXI-;@Bo$w3DP0Z5X(cH}gJD4a1ccuXJo^@7Qr? ztA!uMZVS~nJBXaQlO$;q3ZFQAqQPEuleSK&lgO)&MXAS3?TA&})|BqlNzzQ%95;%> zt!l@08SYsNrxBz=5=pn&<+Ilf}A8;v$kxErgI6mOBKu7YrwEw zkC^gNb#&oQlGW-&_`Tq?$O0)nmm&C2^megK=~fGW3X6K?PLernGvm>XI}ua#g-pb;!138zt&4M#XrysBg#@Iu>yV$O9O73gGiw*g?njl}RFSe3C+Aap@SP+oD%TC;)|0IrN*#8+RcMn)jdGL|$kHjc zba#;?6=u1`t*nW3Q|Q*O8Y^s)B2A9%_1|G9NkwoR!!U>%)-^GaWf|2*PnkLvYB-6k zAL!h_cammK5_eV8H5O@T-@zm8&DsflToQ3>Sq{&}N#d>%5mE?RNK`mEX5*N?+c?M> zTYld|?<9#hD;t-TY2%Bmuzb;k8IseoP%KaNB%J)9<|HvxSH!iQYMg%y&IK1b>0Rnh zDgsZS*bfBuf}AAY6sg^Kk#97(_HW9vDQK7l=JDc*i*}M!VP&D0%D(Q~rZ-BRIV~;g zTA%7pYLSJ!p52ay9nL(G#FLI?UDM@#(ih0V@blDbGhI4w@<@`X4THNfb4Y7Op(v0s znyR2LgEzC2)Fp05yr^n}vh&?Ott!d8mdIoF|L?Gq#Qj!C%gt$8TDt z3BwpEtMr(@d+41cg33(CjC~a+rH_mXD-RvsAz*jxO!Q`Ql63ERx=u*Jq6`%g+Npe5 zsy=7OatgMZ^?|@%kds7XGl{Lz@Ko0zudGV?+-ZWc_m1)FMLS6%38E--P#{7)Cs)jO zENz5HaX#6?FDcFob&^EM1cFFjTANy@NMp9stjmkSKUEdlgC9u}32_}n1nq!@a2X<# zrGDzgj=S?*{M|*8n8(esb8$<|G9C1JStFw}fL1w{Zu588Nm7308=gm8+wlENp;)F7 zGLL-D{@zJCv&8NFCio3VOTUk;vl;>dg;ncEn?WKR z8f*=o!iK>Pgz?a5YXA>6jOJKrT6FEP$*!sU-!vi$AZsftiFXsleVaqMsHhP0fR2L#`=H-Z115pZw5Huc-sxFyh2(IyBIlf>#W*e_UJ! zFhR^PYlKj6Kx^*OTotj$LY4A^s)u{;d+pALK5|-7JSIGAYG5}k!pdb`UFEuAL}vxN zuPG+oG~x=8TvMpIVZ^1aUsEEvVW1(kxTcJ8!)U9;W_9`Ch9L)4#hR+T4Z{uT+BNlV z8%A5Dc-9n$VZ`l3(MOq~?^N7%;t0qQiBa_?2O7dbEa#j=aZRPwhSgXlifd}AHjKDR z6xWn2Z5nZfD6T07+A!jhD6T2Q*)Y(MD6T1%*)ZBlQCw4`vSG+UQCw5|v0=C&QCw41 zv0=1TqPV660V8fDin_0DKW1iTnJUZd4&}h9W2OkTE=~;RB#LBpKL3W*SS5;UGWIu& zxJne)B*t$VafK+ZNjl#!;*uz?N%!6`(4Z);PRZUd+DcJelM20I$U#wDlVQAJxFJzo zle@cNv{jFUxF-E_(}*iXaZPID zh7p%VadlGRhJl7eaZTdihS64v;+llJ4MPr!;+j0R4Z{tI;+hPx4Wq3R#Wm?v7;!66 z6jsua-r|j$WSj+IhRb-T(8@hXEI21oT$7u$VKr8X;+pKE4I{1+#WhJjn?_tAifa;R zHjKC=ifd9=HViZ*ifhtKHjK7X6xXD6Y#4G-6xU=+Y#44(6j$dVY#42oD6YA*$B0{r zA}xLl_;*cO5QZ$3Q=5h zO}k;lB~e^+LAqg}AyHg&iMe64m7=)j@^HhD!=kwQPHw|+L!!9mwrj&^t3+|l)euHp zBZ~V&mm5I2pI$XgOS6UJhPe^@v<@N^4f`d{sFhYpiA#TJgIlKbWNA+&) z8I~iZ$bA}?8R-Jw4uFesYD(steiWN-HR_{G9NIWtpiE%fIZg$@ACibL>5xEoYFdu1 z%9H#Fc0&)Z3b#b&0nW59WTz@(G?rmFMphS-<{Rq)*O5@VNNQQ&-fk@&hZjmI!cjRe zC@?w{CTiCzzt2P%ajWVKK+q;WLDtH-kT>Pz!_*N@xVZwnQxT_S!VtQ#wG{{WGb?<< z?0r<^Z=i1TN*&uqi{nSBxiak=DJa9G_t!Z)UHV&OW@L z>o}cjudoU5do3?BNp09@Gv&vz3XrFJAP197S7~Xj(64E7&WqCp1qU(#}8Vv9yW{ex%4FnCaeV-X^4d?o{Gp$|{(JXuCt!_yx6J#PV!kvGh)xw3+~%#ym|+C@b{;Izc00XK05qMp7C3SxfDtE~7AL zk#D$J&{nU_0X*(lsXAsL*6l2@RPP(Ek3MFc<-m;!tJW&=(BF#sWuI*Q`Y%2mJD~xG z*8qScS>d0+_VUaVJfjYpgaBv;&|{5NS=|Gq`MflZ%4xs1`^{Vw5l`q92MWN#n-MZw z>yF1&(RoC)4vM*254HK5nQXC5H*elFZ}9v2`fRoNDl0W_n=&ZtvZJ102K-4R?FtIy zh`w~|IuEx}fUD*;mcdq0zOGG$E={+TUg`8zWpKl35(oXuw01Thav=u`$_1JHcYjBY zVjmAK88LhsOqx+BL)RSXA%I8EolF>`PEqS$Jgj>L$x(%giH9v|wAV$gs{AquW23G& zp9T)C!{Si4P!Si;nZ)oALCA@U@*V-UAf~l)spB{Zt!^)I=R2=KEwbi>%S%^r<~TS) zB`C%&7i4mOnUq#r>?}HVeE80WK0+o+2?(>9l3c_Iq_P+HswZ zVd&<-jWkL8T%iiGq=uL0mR)S;cCFGe>t$;T4J3NkFKV5qHCmc=eJ*vC$5upg)M#y9 z?lm6I7GCQi2W?m#1r{~EkkCd-TjyEjS4b{LvsW~K*-YD6EZKov9I--!#L|YArqz@j zxkb68p-mAu&8lpR(A**2IroJQ-aELzgYRbvg(t6*rnNopqcw~f$yg<5wmN39#_6~@ z5}i8S0OH6>t%B`uCrSLzPa6gf>b*7I6L%|-AqEl%(?^K7CuJB`ea!t)-qSd}H=n0C z%{*86CF?vY(P_ieG!B8fVCGrwwH-$nlX!v$zP$h}&-J2aBWa9GgP^fI|*$}(kUSrH2=oKJucxc%;| z)P}Eq?DkJSd*5ps%WoqO!8E0IlHi`J-E zZuc?^vKmeBlB`Mkz^rYQVQh=7>ZNY6xOxW@MJEp)FcQ z`_gr6mIhWRM>&@({k0jHgKyTc8yG^Oo1IWVLl8W)49yapbuM6m<_#SO2?gFim^3z+ zj(~`1DIp`*c03l0icTyW?3Ft?Ys|b;XL54I6Zmx%R&|k99aV9lDJ20LbxpkO439A7 z;mfFXeum5)iM~Z0z}wNE!;xq=Y8oCcDYtLSap-)pEvXmfX`npM0nk;@wxwG+G4BDi zOI->;&_$KTHZpSbSh}P!mUdydr}?1+%34=K6(wzJOUFmc6jkf+IP~Lm z)Jf6vau522+FFv0!Pg-o9;K1R2}8dU+s=8@FxSg!wLM_!iq{>SI?sHGSfb0;%oC$X zvOcaI&nu8Ff-oz>_*-Hct)O{uiKO4=Ez2?k*tclJ>S`}xq*ZJL@cu(2Gom7Kmspaf zhQ~$W#%0Q>U?$lfX6GTAtpfBu*dHN)Dg!c>N*p&}Zsdfx3ppJtoge#C^lhbvFs-Z? zJ*(T8a+0KVm28hzF^2t_VE`m0=UltoB9&p6vP|+ewNAZ6gVLs4Uiu}Fe!J2mXcW+8 zjvoa z5t=5tuK1p^Q@`(uQP&8Q9YYG$fi_z|A9e)zc`RR!3|*^v7v)Bk5BTvdv>ULbHd#4km(yrPlld5mx z!qN`#%LBwoEea{zKFU3Af^?^vR{1Ilxlb*{cbyB_yhx}Ag;KLES!+Ln# zRXZW@$KyC8UaG<xT04&&$HGchze^XPBUT! zF?8<^4$?cHE!SOSRi1~o-3ix*EhA-`o>h;)7(e;mE+s7Dw9JNp1Apo?J3UA<@d2IdHJwrWzGk-IzHdccXJyAatd8B*!Pm(E zIo+XjSx(EW_d?oNA+K|7kGf<#p+4NX%qN-vA7i}6f4=zK{0GC!i za3WDhf{uuV6&7xax_hyGd#M$Nf7-gCjUYGC{4O`FDmb6}3Z587psS>T|BSwm zc_^rw0BN)j@Rg2^Tu(_Sq)8XVMG z6w^3I8E>METqh+F4UceBZKASk)ZP8VVrQThDyri`kje)S!skVfbLcDk0hSpwI87*X z2r`N+5lCPorKldov22w0JjBF<48hB;ZEV}uXyGk8kr*A*U78!kC?z`dy7N;jf;mmy z5m`GtEKy)qTanvlo?@ro*1;u`RM;i}ENw@GJef2KVl5%H86b;udvE1okr~nSEQ?|; zDRAY{Xcy6d#^+IG9AL^ncuJI*mf4~>nt2Q^QjBPFr+IAB>U-Cv7(odDplOJs-_0BON-u z;f5kawk)r0&u+`UZo*TagwAh?Br>*e_k@h(CT$Dg@pb z3Q#DCN=di&0dg|xtgtmh=t|ZsFp3a)aSpB=loqM!DAzdk<=6Qwk!}(%HOwOAQ&iuC zI1w`Ajj*TZA~W#koD>N>B}#i-m^Q;@4$A7_F^zfM!y+??bTIVyEdo*5715oS^)v}W z+*ps9?GXQ+A4BlKOAL=#=>2ASMxot$0uU4<4=PcP^mY}?K5ZCxD1b;1@!(vx zbd)K6Xc$8JUEL%>85p$+JsmaFBFF;jM+M1u%MdJRlSCMmE3481NUUe{$cYB>)~VyT z!wliJ6*6y9;p-~)>`?O#DE3VokGjEqSQvs)X@DhshqrMr!$7uWY5@K;87oVG%f;FzbjEBJcuy1 z1p@YftO?KOG=_##%qZ%%mvN{=nT3d;Q0hDEO=&kM?+uaXN*NVZ2B%$;m5!n6CRIub~3E5Tb?b3REtIzhJpFOE$E zJp@#yWKMcJDq8-g%!H(pBY@{sozv*HY*8u`#DH!`|HV~Cd0TsYevSl>nAhRvyM`&J zuoq|(g-U(2T{s`llBpP=EU^NdM$%SI-^<=DKY4&74l$Q4AvqY>=d0GsiIP2{rG|%Q%UPf_W=7 zLKCfVfu-c9P1F^kh)12?PB`107dFZ=b!0FB;`dP5*!sSgqrGC+C8Ipi6V7(`$@8Mm z(AG{yfI&#AB8ri);=|WUN6mIf{hptjr7he-*aa^6TR-ZfOwdAfPK`9PG150g^PtI) zlU8ZH5mza4VmyN)gh!H4LrtFcb?3K4D(#B|4ghvEvl8aD(BJ_eKFw3dWe1mt$v7?z z(@x4lGzCjSh5{y?0h(^i5}i5p366V7($8iLt0 z%4^6M?aIcM6*sa7$xnRJN%C|K+WE0R!&Myc5Id(U+J>QFZtZt&Y-io6@2LjaU#2Ng zwxkzM+C?(jnX)sj7{v*v4g{Rv63NaXp>LId3qxs8AE50X%amiBSE)eO*8wo}6QIlY zMhF;D01ToRiN?`*Gi=LLS8vf&N8y;|g+-THCL^xMJtNHH2yJ!3F}!+0$=tbLMx!Qo zVhfG2oi=1m(>l3H!Y~U)9i1MQ*{Z;FrCY|z>;vKS=;K8D0x^$C7nAMv&I?GJUDdQyIBujvEumic>DR7rG^1N5VbmA5< z*vvFz7G-%w=q_Y-=hjE~GzkHm7x+r2PKO@ab)bFZdGDe>!p?nu6l?)CyeJGnzSl8p z!Yc79tHsH43>RzSr?^Ow~^Nz96;uXtgD%0_+*qjZCzZ8yK z4TUSReg}-abCsywNbo)~3Z#}xH;U32l}vG*2BSKJoRGD4?zFMm&^C)EMUIB&+J1zN z%Bi8s{6W4akX@8m==;oFs~3#`3<6?g2{7Hp@Z;8@LnWoKU0!5pq?6Sl`r8L)(9k*_ z^|})>#7=!5YB1#2);3au!^&wyK&YAI00tPv3@4oF&IMg0mgm@9I~w>Pq2p8} zgvs1CY?4ua?T~3Z@Bz;pe^Z5hi9iTR9T)IJ#1m%GI)>er=NH%Cvk>X!}$-so|zQbD{+~(04sxo=-O3UCN{d(jd4Cs$d5bq1_(>d zKo)((0sJXD3b^Z>>Po*k-F}(IKp;fJV-^KjC?ip#sJ3pMiJsYfw{gP#oO%H#Z;i3e z-Yd6pgRU=9*C96R`?x@vR~6bEIRT@@WPLXbI#PUa0nmk_>l6wSf$`TRnw4eL#PO&w z!D*Iz0l9Y?J$M8ce+`;AM^Sc9gPPDv5YN!4JMAMhZ8<$;=wpQmFQ5=BfwmA~>s~E6-ofB|WZH!ADd{`Jl6C=u7v*WSy(IBBiOLDFY zICJB@@Ktho8onO1cz_1(JI|>?%crd9T2FQwbyJ9rjInszGejEHS&a^rU8+cz!LC;l z3E1&YQnz+~EYnEL=tEV@K%15{Ycq)gqeU(HsDskb;+~&|5PsxjlqFr`RLX9A566%i zR;C|y(Kkf%Aphw!4dTXO+$uv+NGn7cSKl;T?c%0w_Y4u{!VQ|5T5hi5-XgI!N+^ia z_d`BEhR|JMd8{D0h3kK$(($g})pw0&CP|AEt`Tmt0lb5f#NSZGo}gNn*Qg=XZ-wCKHpudIeW!>W><%Z#8c zu;mRIp)Q~zMb#&LUl4%Wb*HsZ=f@C?*d@(+m$hC?n=b8O=bZEfLX~?2ASNPzi|oi4h5(=OZ)9tNPBhh2sO& z+sJ^c>;tW>*6k>>_ON)OOj&saA2d(nGGldK89}Miyt7Be`iJ=M{1`$efa2(aP-RJN z8>|hj%1?_@hNE)jhG-s?85J_GjMEO8vJ8z1ingjb%(93c;Iw**I~(*3L|Cj%bii2^ z`!Q+)Z0FS5I=n=xF7l{pM9o^qRTb{#>@HO39x+DqJ}feWIw9>9(iYI$b%BNq+-qDn z2#Zk{;Y0j)elkO|xU>|lROSM#*z7F}*IXzsbxzI1gA5@v1UM|&az$8BBSFmJuH%(K zb!xMAeoKV*s(ztmg^Ia6hq@1JSLj^f3Tq4#4{ht<5-HgN&dQd3q;kW~DIPqex#0iv056Tv*db4hb{~Gn*O> z2|^K>O%eK|JpU8Q|4yUf$`cuSb4MLh%*j-rp}b58#}&Is3)%gxTU5lA5dsgYY^#Wg z9_Ti9h(7Y8w8jbdb?4^?;KB4N?4p>+CQZ?(%1G^sTC_zFX8YJb3PN*xQWu7BJ41fbxoN@$D|yJhMpy^qAEQGVgW!mX@{JIBx_uS)ptX<#xZM+NFs-~0hS9AG5x}PfKSv?I))$g%(kl1H%(vqD9X1y5siuyZhc&2xEfCbmj}8) zosL`djoUaz7q@Rph7i=?mg}LdqLQc;CAC$@KDFxX)L={Jr;wBZ87)cV1coS);1c;L z3ru3JPfhcnLeiAgepLbCw3Gqsle9}str3=bfB~Yo8PsOuRp=YR;7FKdP@*nH#`=6h z`O=Ik7km^4Vb)u{rLr_r%rr@PTAh84T$Cyw6=MjXiNf%49~8B2?i+P;>TMn5BJ@iF z{x^WZcH*<%^Nfrl~i)V+3tLAnc^*g?DHtEnxI92WuS$jT-tYlf>|nM#=VV6Wr0BZ5^wC1NH!I8Fs_R^LTw}3^WpAY! z6qBHVTe}oBw3KQE;NYMYy8wsXX*6ACG3f)d?#m>|!@$h|_m}lZgnLuUESXf+cRtZb znyh5fqHBRDqb%ErKHj;^Dw}sf#E~@WI;QXqFJx`tdT~1{KDm(D2O_GzAwtHrpJYx` z1%QcljjS(X?jhRA;uGDLEYJ8{W9u7cMiqL!TBt9RW??&_m2+1DDzg=%(uNj$dF$4# z8@J$tEK=|{#BX=bxe~Hz020)*a&Rq&)TTWzeAgefk3%Q>gDIbRb~X)rD=|&W%6!Aj z3}VN)itUi4unS*r=R3rd@Z(sEBUc~DfJ$|9JN-8 zAkW}&3Js)?W{EC*ac%d1%(!bjTDrfhm9%8d5U(jo$3&(=}Yv(wqtZ< zDn`Ymh6H7BafuiA1}*JEIu%nCDAS%6QuB0Fmch{L&QC50PfN=wGB0U?GsA^}b0_Ir zYK%%Mc~}@igl>@cAv&ftq+3uMClHM#>ZLz#V5oEwvi+(9><#wZXXo%)P{-Z`; zHO@qH7Ht}}P)=PYTsNt9k*c|Kh9D;6OsARMXF=zOX5LCwx}BSz`jY1SOa_a+&~P&1 zrOXAi4X%2uv}se9o!ZO|G6X{}XF#FJ3TW7IFWk_TCh<$$YdyF!LsG`NHm8X~$5!T( zEC4!$(P#YB+d8;JBKB&Mbi^tNaU}}gg4R=2S&oA%9TL&=<02_K^n?~pl^0dT!q(Lu z`XvW4JD>Y%bV;R=iED~hC|kQ>9gwDKcxP^vJGXXej;8DkZjf|D?G+{(L3RO4@>u(> z>v@%6qxAkm<7J`gNrJmGNedN4k59YiEgPKm>4a((MAk zaQ7CYWgfhU+Hm_`q&ezhfcX}heKZPIXNaK(IhS`1O;P1sWkJR3NV|Pjr+sLYqqOfs z!?~!{A*o0*MHwmZ%WVpz(V-XG7+dqO%$6rf4Wa4MxX((Xc9~uD=ynyy)tK3C%}OX% zsHM}iMiQ5_i!HmBga@5Dt`FnGvbY-PyjDVTvu@Ka^GuzJtVxrWj%pn8u*{YPZcv9s z9XDYjvMj1)<^_3+E}Q4VO1OavGFEx$E6@=?^+R}}BD0b1H0E^=%i_w!1K^KUCQWKY zJhp3OKty$b z+RsM0j1P;pWFcn-E!-eUW0_{8&rxGsOsa{-?Cp?Ob8r~m;>1U#t1LS(7^;1eI-_|I znMvi4Xcx6UJI`$rg;N3EGjW`*sSxI9&7ee+Le%ArS@RQe*v@CmdSOrcQ=#dZtdyaF zTheAdY2_}o$IfS~8Yv3yH@5O^En5%4zNXhYut(iCKP-DIJG5M=(ev7E1s5iGxhAG< z#QrXH<<2bw=-ytelH@_cqg0Zi8~9gQLx z7ckyHrC~@`YD3w*DcQY~1}SM^*c~->Ru)E1aK{#qQH%S~7btU((%vNO)OiJ#!Rx486y%Zgi?^wazXa}6Ua~GAXOc_SkXK^L!koR`aD^!Db z*_(2<1o=1xFkMi-ue}=m!+WB2)s)pPjPlO+R;HvvpP$5qN2s)Eup&0vz(C*hHzOzG zE)xN~%nKVpOiP^trlAd>bo8j)iW6$7ogY7B6=szm)4pwT*2CA-Vd}Mw@ODvNv2*uQ z_O(x}E^!0D!GvoAfQGHi5f0q}C+~c=OgpWWWFo8piVgkj0;CdXYh`f&A2x+@1$Njm zNY@E!$rUHHn&$D#MIBsyZx-e5RlBxwC%jSQK#@UwJ6`~Q-Ae7^#o=sc+2xMW6b_3} z)$4mYNU3W$sff2vowSP@7r<9$Bo%2_9kw-3l^s`@i z?$V)O3|~Lz^-+UOY4&N)b#GB=ra_wYI8r$YRmV6y?F=m*4rqQ&(`e(zF(u2Bt-h-1fY<{HxcmO^H1iZ7=iO$htB^ zt+C1y$?w*LLH2ua&5U=N(DNqgir#zMEBLu9d6zwYnPcqQYYKpZdsiYCuU|jVAnXTY16559RYmFM_Xebu%5R$>N+ADwRW(WSaR+13B}Gxfb5dtBl7w!1303L0M9 z3F&LJ(V7MFO#JO`LjzeT=0S*cjXA1i&;R?MT_}SvzO){zNk5_3>zUY7PJt2vH+8Z4hsA#N zODF4fg+l6?0f1Vi43is6QjZ-yBJ_uzoCy6%RMi>K%;q$sc?dz^W{GAb;~k@U{^SMH z%%?PKLJ4%V4{nKDWwTcQ~tK(oo=;w|w8JdgpJr%zrW&6F&N7M$~AuH>Y{>T#-Pk6t9zGgAnbmT2=U zm(2=2ZVL|{y-2EO#&AlCWO~_cr^l_~!J`*R^?^B5Xjmil5?j+jdpLXaBB?$wh}tkU zJx2AQMVvi)kyIa;MEHn|k>#}>w28AvFOup5qi855$+5K_w2HGwFOup5vk3m+a@myA zLAyA6^dhNV7)C}EO5Tp?kRi)BfAk`$UYJG(z$+Ypmic7Wal(@THT5C3B8|RN+B-IPsCR}_HoDvAU&3r<3Ig_%m3en#MP;u;>rxI*E}~#bg7UZg-o;)7;efDU>FI^RYRXS2K-=5{t$yiLfF>t1TmvCY35*`S9Q0d0 zm>qg@)t3INfARkRv%w8eKH?ULRgDb8%nhwRt2!>MTF0cKysnnE^xr=6!T;w%mEz=p zePmBplYYWI-6~+dcD?Qg`K2}#l}kGDxbueVfZ3BLRW4^h^CHNP6NxnB@~QQ>>o%cz z`s4-DyohRWv^p`(WiNSIb|yj5`I8q&^CG6fmC&YGrgy4pM#{9_(q$n&$Ft%3zRx{^&(gy$ECo!iK`- z$8DiT54-836RL+?R{PU```^9%$fZmF7QeT3Sw-Qiz;G*VxJg4)kVO@zMPeu2l7I8S zg#=bpj`f*@1pbF#`0d{ueFm1E=U0HSs!I~YogjY2)0mi+yR;k+o(I2@@)LS{TY2y+ zUwYhwKNj^`_CgLkcx0)q;PC(I5C8Ay#(MD73YkwkOS-Xc>y9TOF?|d5;mc`D4;+WD zrhLxf|Lo`gkFRXz@Lxtq%xYW92{XVbHTxp9!wBmT*@+RSiT0%vvCL(C1NQ}~eU~o1 z{I|bzUw`~o^2z@hBOLsKa=C<(Bx~a9yydsv^8S+^WG7?nVT>FpuU(x#Hhnk#v`YMe z?>;tp;4wDIk32{*oc!zhwI{k3xGUGMz1_+@Fv_jWicU!(N{zIbPeJyyE(`cg?ajuOq`zU8R%I z5K;}0Jwu7Ow!iprKGI}_7s4*Hb5J!QDhi_f`n7joS9s;SuU~u5b$Hv?_TK|a7oR<8 zIY}_>>3d_6ZhQUFn>TNoH~6*voZk!|NX!DmmhjR&a}UEyEFF4qI_&h*gGZ6poUDFy^6BNh z4B5DT7>2z5@SwtZucg6wQCYEmq(vwAWwrZ($1`^kAene zOCdToH$d!73d0O1;j7TgkPNJnCbH6;$=YC5kVMLjx?a@2EZ2}Z&o`eEMmj-VMxCrE zTi=Z-+Aldp#7T-2+auHdO+d;ArI%xo8>meO_-g|h>Rog-ErQ6o3N{b1ZTBZ5x{4~R zuBaKIn7PbC6l0ZcS`{dpJe+eOa6JjX7kLgsLblteO}*>SSLwC=*_YRxFiPFpgA7fx z=9_u1&Y4E@+{w=rfEl08j=5E916|AQq9CXu0E<>x9;C*knsN2)03kk0hAx95unmHr zOid=eI?jXGOzNf@AX#&;f?*zzeD{yvf9J3Nax~Sm6#vIB`{==l$xLUVgTV1s;-q2H zN*!s3=`IxwpuCr6ad^FH=s9_wab+io*YeW$ZJW5RGM8eX69$$D>>^c491wr!)i2%t z;YUUjKjC!l;=UlsvY5thuFKqXye6iA&4YR0yyT45S>6K*nLDM`g+SU>z@pPY5F1!> zrID{lj0M%xJpXwSf+R2u&;R<<_rCPOJ0JSiy+8TR-QR!h-s_*e`?U|=`S=&^e*KT$ zc`_}Cree%w?fB(*>zA*cd+pqu8olkvq_EUfJ^84<7`FnT2@SVwzzxs`P zpZ@Tj5B5t$2;`eX=@arJp;L|rg_@%pF`SZJ9_}$yD ze;=gY{mB1%=ewW3^XX3tdDa2*?5|6r%Fll%*C*PmWN1MAI#F0i&>#f*2+B%Cru3p)3(4 z5p==;W5OgLE^$Z~%y?odR0|Gx<>t+&fA-^($r!Uzzqd%pi?TDL*ls(f+eu?i;QJhz z%Ha*5z&)a+VjZ)PfQtF}iZl{UWtXB-Gleh-v))$-$3$z+YKLZo>CAch^&j2)vyVX} zZvXYGcR%;Ti4?u^2S5FH-#p;X+dugBWG6rUK?v2I*M9iMcfWCE^6QOnd<$&<#-Dun z&X@lRU+nGO``#bk`SIuRC3qa#=#AGtG5P#`U%L05-@W(kkL=y~f><`=@ul z{v)WYnTnq1>d$@m`CCuly79uDZ-4sEr~U{`^we|DK6CJofBkE>p1U>s*S*(2c=wf0 zPqf@rtKa$R7r_;K^HFDG?EOO8{>q(ifAQ|Ce+eZBKKq5B{guTdlX0gH;QM!9`NE9< z@YvyJrmvemG<(V2uYLoXb^62!nM*oxQ{*)|JLV+n6KOXp=>iH!$0g<(+?wsV48GJ% z8Qr(-b1wVrCvN}bEBBSrGbiV=G7>E84Ptqe1!>pd44L!7nwab(axyrT?YRt7LCaZ1 z>A+O({pc@eQ@Q!fg3CVl!#kh){R1wWeKF^X+dp{yjX!?h-LHJ)_76TX(Lq0fp7|8G zX8!S8-~Rlq=U%|S?|$ktcRut-^Y6a%9XFw9Cf}VJ=J|JTf=Q>}o$0s}asygo+ZiAM z>%ioN=NoNGtuCtU1Pw(uFX3oz5GG$1)KC7&omakppBrwRm>W2-`=bU8EE_cGD56@B zIJC{Ybm7Zxp2~P`Kq=Gwkg&o=-90q5n>Qxhardi#boZ05-2Txk5cfM@{@UHoegBPD z|N5t2eD#1?rpn~gbC>U{ADCFMAAWx}&cQQxKl=$V-R&QJ?9NBOapzONckgpwpZwGp zzyH%OesAK%eg2iZU;E1B2VeW)!H?W|^=of@eWY82exHjCyFOdJ!y5#9_rl3}Pv?M;s%^Ix5xUwW zDrKf+;`HV(TkJE^MEt&kdVDIF$IRZ{d;NQNKRWk*z#}+Jyz#r=yZiE=EN%Wru=x#yQ$araY`AG`PdACBUUb?(u+&t?aPX%#Us11~m&*%Bj4(c=Jl8v+GWJv*S`0JaX6m5!(dpP1Bp>&YnNguneVV8~J6k7Xj(80&W@gPLN>*#u;jEb8YZCVbF z+Sg$VpLp_#=WmUsduYXVsDYp*BZX|~HY+oyN4{Z6-E>)Q53e{?E~PF{%FIm4I*2`z zc$N07V&FU}O+;o*<379GdF9J@UjNa7W*$9@$?B^b7441b>I7)bWrc8;RrzHd#yAmf zUVZce#>qJqtT%IEtH=&QY2%j7T)GEFI1B}0RB51$&B_8k<6#u79PZu*b#bOsNpio9 zZLX{k-A6*xn7}_BRn(K10?~pa#=BUIX<+0)wzjp46a7Yno#I>)H3`7?(OV!ky@0NKNgIlZTseYRPd)(i_!|EBw@{^Iz+zD!84=|}PkcAU4l^DJkI$NEo#;a$2ChA$c zOxdilgRJ(v6aeiKC1#ay$Qg?b)H6U?h>7-C3r;y4N!x>FPG^dF?sWd*{BNN8bXh)C z*>tMGe`5kV^NSPAo?rUq!zSsf9vuz+yq)`1l8I|JBD%#=Lcx7*^Y4*oL-GT^>|L?D)Ri%Cpp{jh1*|Z*TVf$lcq+abvOVdwamEYA42gZ|_}CJa^;Qo_OvTnUn`?vA5?( zXg)T5VEA*(#l>FJ?5+BFCu(29hfANIj72sp@QD)Sj$2SCG>RPE$^bv4M1hW#t)BoL zdJFa$rvxR~=l+rM?jQVca*^~O{yhR!I5$EM&eh@9&&$dRbt-9Dc3ma91`PYz4#ls z_u}5uZ++XXiIV&cT+^OZHL)E1UIAlSIT6L#O`1;WaKDuP@xcUJLQ426r55$vrG!+^;VYgM05=+5}ffi zFVpr1+^Gj841wie*q*}&kCSQ(-nk*}Y|X5WMJ-LU$(qgy%c$E*=1$;2-8VurZE+$^ zffFYWTg5w|5$e9PauPc<$?FN8{}zir`rv`u!^NUc4<1v8`;h-MjDKTW5wHcVUlCciMsCPRgV@r`11n(mAyH zbGK#O(r+izTzJg2GE(LhN7js|Y&VHXtDCLDXTkigc*YAAv5AMA3#S_T| zH6q=Zv~`7F^=N3oqBM;RA3n!caxspd5U$eqgN3J%W*YV(I&K5Mv=RxG1-y#BMwj2S zJ`YVCVN^WfhVej}pLiO%1GB_}L*hJlHlMh8bMMemXnKN~9E8TP+~g!Xn0|G3?mNc*APIk~hexa%rzMC9Z?;u;-^c-{b;x?hg-4|*`;jwu{r z9;8?0f z-@h=JW!69w;9P)os5@Uf*(sA%q)*ThI&$4Uv|TAfgpV?-&iZpw3HLLiPN5Q%l?D+_ zlg92nlhiTeRv+{wPr_raKlPnQ`QeXP1JZ0TNn!oBM`Q+0RzUkG5ChSjW0+-=*JxG zs#3&6oNx2>%(F80&djR4tCYE`#F;Y=2db*QckY$B-u2$!=Lr?L=4%?0qLNXetC9zi zMU@Bz#`01{w*CT|UGBYceIu7akdjmhEZfXn6*KQhJL_RU6H6S|q-58jlko=OE0cF4 z55pyZnQ8wR7{7+NhOt@&N-H9*=bzVqZ}PMw>^rgSeY^` zV_Jqa`sp(k+pb9!D8K|kM^g91heoN<4^6I%8Kh^uk}rIg^0Mazqqb|JK>`j6--}w?{d5>nOKGO7MxY2zs(^pH$Sh5B%i7yJ zeX-t?nCAbmVrsu>hY&Srw7Q5rstch}CRIg2g%~+ta2S_do?wcoLU?D#b}kD8O6bR_B|GBxR$hi>R@se9FU>{W)~iwmzakeUdJ+`YineIm z!xcs8{h_AicOw-iYN@JwNt)?SWtZ@R42;>hfZ4=U$_OhpEx$`-dEmje+1$3td84(< zW)7;fQc~+w;Np9ZGX7=U}H(PaT2fm#ZktExeSSg4d6rU<~jJ}N# zPkhRmVU&X z=QQY{y>mzFmGXqGYHIkvdEdKL?M^K>%KWG2cDr-fsl^{=$C#;|xIg3685a}O4XPXn z*mCJJufWO!MTKn|C9o4!gaWwx?kTic+(W1cLX#BT27;@}4%#vFLd-IbcX?x6tTcM< zi#nn@C^0|Kg%?PcnpWQ%z^+w8qlRQm{GozrKBKeYB@MV^Xnih;pFibl)%q=(? z6&Ly*ZGG#GWmx znB3wrGgT@~?NDcLv^~@oqMBqfS8;_Zc?NYb8yWkC#arA;6Gf{n6vFk|f=y;_sQgSDWcpGfJyPHWoNMyHEro)wM~&9YR-MYBUYez-J2n`O z^-NbBp1An*Zq<&_dd8tAN&|^(z$At!0mm>~|8RfomJ8jpWL{3WqIN4&*Qlk2Mx^?F zMs$8$C-n3s(_XK)12Dru&tn+Hz5kL0U8|{)i8i{3ND=XM?ul-yWcjGn%k(A7eXek^ zWpsB@dky{~l4hq8;66z8crJev@$F4wft@WS0WQps;vc)j{--Zw(J7Iu-)(6X%wVQ`-MBTl~n{xZybD{~>9fa|0#Vzl#z7HvR!T`UW;? zU34uduIoxgg-Pks@myd)Cb_S;n48=4P=?z#Wh9icUd7fRm3pNk|<^*R<7)=Bmjpi9}g(N298kEkm21eSKc<>PF{T5Y@g{hn!7#2Lm3TF zXI@U!%+2GyW`4NXDM<_>|VWlUD zpB-_x#sb7c7<8L1I<*&WWZzbEbXLFj|7l%GlvlJMcSKJ}>o5-jHNc45-lp2aNEjo$ z?)GGtgk8N1g?wlUqY2gJv@|g*pbEKb^Rn!NhQKw(HJ(kDuz?{zjD-1~A*2dX6Nl$B znfeA7$)c#IN1UWtO4tA#U^olFI6V7`iGD=(NlmEQI+XCVf0bio#Kpna=Kkd8`3Pu~`? zuUfS&0Eaj>yzO%WI0%X)Ltt&`0H)Fs(NafF;7--!$aQrhwQgT}|8%i6EjHk}v)?`Q zY>OlK?L(d+E~#il60~guj^yfMDN2%!BQ$O-boyouMnM*vwfP~EdCL?uDXl1mTNMSl zy9`MCnj?%#8&218gI<|+oAu1D@%7c6ns}h5W)JV5SRhf6B|3U?yfjgaJaI#p4gM(M z-uAgEbmk8-Gl8-kJVWa4rS8a^D0K-d5waE5-qM4ZT@|2Nt7o*W z4&u(If7*KMHB2kFTetxJY!H-p?p)rw^h4AgSX(5$ah{2r5#sQfk@?5SfZQl2#Sk}E&;qt$SeYighKI3KzfA_K&|s4z>j-t zdkBS2a|%EfS@J2IAT7)#sZv8ZLFex%A7QdWA2fa}bi|;elg)-NyE_l`j#|kZynB|w zL~CV|&uT5KzNQ+*{?g1_32(===8DqST;B*I5KjWvO+6?@Ia!maV1ZsbTnqwXBe9ij zFO)TkYKIztxYiJ5Ul9thV2lG!o1#dNniK(Uzg+W5WY#H`2G0SQp1{Q2{=-KLAnSL3 zGaD)#mLq)qUDl0x<;@nudaI3Ve)9qP8=-uFNDb7_ySMM)^JmUpXh0%>+m7)YfDZ!< z6nVz&4{zSP_%blx5u4Ai-ne(^)ve~!T~xHc4r3WoqRL2z)IUGjN0k}I2d1P^ zz5-SI49VY2z5({+F^ey`mXbx9<7+xe)Iw36xJc{=qqU^L5Z=~1ckbT$*BLjv`^E1V zWbKDP#}AOG;a==^HJW64T9uZR_)cO4u2m=+5Vp`FRav7dlwuB8lGx=$%T5v!0Q|-& zayu8C6+BBODx$2Q5U@OD#}CoUMI;+hm97R8JOsh^OYfzX4NW~*SjL+if(AnDZuFO-uP(imzVGT>Mbxdd~@rkZ-dX_n*b`G zfA$qlZTmW0lZEwIx}j}$5h?UwiJsJ|l7_^jg^zjYZ`zAJv>Mj+5w%psiCOx2!dWWt zF%9G(fZ}f|>ZonxM2A;whf`c$;Uz=P6;H@*qQ&c23lRDUT#q3#=7D_i34n`HHTmYw zD}Myt#P-WqzIoVZ(p~9q);yP^_rL`tW`W#U_*ziLK035~Nw6iqQuijt)@LjxdV$P~ z>W;~C8z~||O?fXRiBjpYAJw4Ojk!WsC39~|dHsT?x=+v=-GW<11OVgx_0OgobkOJa zcX~M0v-L#cB2_hYOVLDE_9H1u>%GrnSNK$=dW?j;pG2l-I+p86UO;l!MU`=P^F>qL zlmvOu6L{*(Mw=%3!~$MwqsvQuV`S)h0F{#A9Z20C|cgrQ&tF$Ow{Ao2?( zkR!|!>|Qa{8puwC0aEYEDehdJQ)gzK!!y71!p`+Cw!Z(H`Kr&e^YIT@)vC2R7r$KN z=bSpT>g6#1rnxBe0W|5>E5DsLpY0ysZi}_fM-Z%75fj`EDjYIzQVY}-L85BKs4)s& zjb&3Rec27fxWwcY+O^Ht=0Y6oy$=lm8Y}^jP?o;!5d~;4T_8WI81*|M%qk>igicTh zUNL6dr8*`7>c_DiuOt3Sp zPC@WM(Y8QK zYvMBUNb?W>2r7OP$HRIf%*nWsLMW6vr~oy9)-M^kDl-{30!Bqm6dWBWNJ&wuq0i&V zMrx5sD+-4lU)Jn37~(&KFU8}*CoaLHT2P3IQ}KZ$#|ehRM@b*89InjL#49|Tm&!^? zXyWl@V6CA2u~mc4Ng49BHQX(;-L0X!5~d*7YBq_;kIaZNac2&)76-kyza`--beBm0 z43JD>V35{#yi9`zsmnbwKeQx58AhURrM2qSzL?~KS68F}o(i1R-J;%F63Pwom5-gg z@ZFOqH!~+xK~E5{W=xYH_ajRpuMi6OmT|Z{A}2(;K%$b@H49abDo!;^lcjj=36(@{ zFn7McIa%CKZ&TVJdJ*m3dIfA}V7OqO!^JP}-gpH(8L$j(mmOq${?4D~FI{53<5~-| zxcC?|(_U=<$5tPC}c;dca>+c`j+jn57>+6Gr=>l!BtoiFV?+0<`WQv ziu^&QYU<{Ko}_Q-JbUg5AmKgsz0P+ZyRqwZt$>P)=WC9MMu8&YsLSzaV@rf&R6=7~ z<`0Srjg8BVK8}rP2;}w@LoA|LU614nNXn7wn8FV=3+n|nd7QPqZ0_rh4(48WuwEO ziZZ(XvXsFgvfA*&7)W~j|9ax&`NyZ}-rmQj0^D3ns0+qw5`oBB_XNL8L+6O029}RS z?Wz)seCek92}lv**Mg;iajh)TU4&8Cz^8eH@Z$dA+W4CLV&Mohy92dMb`I@k^!#(C z{^+88WmYa;>b9?Z6sYmot7+SGkfuE7wf(gyAF5_38k%WIM&@W@=#^Yv!}r*m&mTJc z6SXL>py#lASWlfh`|LBDXi=tZq!_4-g%;Q(cQmz<0CMI;05ng>HC9Y9k8Sb2^OP3m z@f+W`_+S6UEL|*xQ7d;@q~%@B;0A)btTm1-JO26=P_^Q}^UJs4<)ix5;@P*^!@i7h z<;_*C%t(H3{a~HN?2oHJOIZY!FO@_h#YIX@z^KzKSurES{TpvR8W#uC0%~ss_gm*i z)!oM5A^ z$0e~VWrCZc$fB>153l#sM%xdB8jSA~!-3tZSDp4pW}4&VmV>$A=jY5J>|TfpY)#01KirPr>7oJzzAsxK(sxVGfUdp;O;IZP_a zp%78QL#Mf+6}1pbrD1Ee6psoo$J?0Yo)22U7kj>-20`02I6$8BOx8bL#pSWZuMe|< zWc02si)~GdEA*uoYL6~iMfz=QFEMQk?{8+9p5_h1;p_@AvX3&Zoi=w^xGkD6E< zZ(mp@frow)Iz4^-J173()S0I`ZPc!JIo-y_+1*T>jBJ>1&DtsnjngtI%Bf7fQeI?KnJK^Uvc)rGPA^I!3{{cYa5 zP>Rbv>QyRObw~l8ay!SMhAOEe`5(s{L!3%rqw}KRm^3LVY=b!y(QQT}ga~OT^mA7~9yaAR~?9={x!wx<{>Y_CL+*38hPr$8XdqPms zP#ASbK;jP6w9EoP*QlB5$q|~-?WE?`-Vu03xB+U$A@n-6WmOjvF*U773j#l|I2Tyj zZZ<0G!h`LS2IwNUvV0;ET!d;WpUv@LHmaP(Tki}`%{q{-~Q%5Y3YB|%2G32 zhTT$pi}Jo*l#-9wTH#U>mZ?HT#VW-5(KL3N0qy4bA8fqtZ;;pNOp0{`D)2Y}2?sch z5cM(FFVb2XCGk^rCTMf}0OIt?CogQSGQ~`ec#Vp&R;EUgD9D^6yYJL=R13idDsz}` zTC`u!U;P~2jq_`tFSO>reZVHBm&)?)jrZ@~dTsvKkML@%HQSNu*35M>yy|=qyHrZI zC>&QT0Tr$TyIc2#5ZZK124kx3L=R;@)O85m$)hq_q*)g5hC{hZgbfDlu_lfKxZmJ> z^$DYCy0eqJuUmC;j_Y_SCJj9+a)EGCrkY$;c3O@ashYm8gZ}ixsZLt*D3d3Zf{4P& z^%`Yx(TS<9?QN!B>z+*CT66-8RGqS(mmW3TILK0u&usMjgE5rn-QdBiPW0&uw&{ZL zPD}$MbzNV{DlSOMQI>G3>Xe3E5a&)k^_@fLPL9h>i!0UKkiwYwqK;Yg+@YmEYCosz z&H;O1?{2obv(b*MlYFi2Y&7d6-6^_-Qq;8%%u_)_FTJ6AwGE8o6g>#{&mnDa#(FJu z2;C|3ah4XK6;_c5@j;%GidK%awJ>S~V1onJRr}V|AP(|7d%+u_Jipx}nE0dcI*|#? z1dxQNaHc~pmb|c*FcZZo56C1AAT1B4I^{G4sFjZ?Q*@37v_f)=7c#<)8>5}RvrXIi zIIlB|j7U^+GuCqw0)tIee4q0@Ohs8Xs=;KE>ZEAb z;RXnPPdA*Ex4*kuq{ch)@7v`7# z0=3!3=dJrW|Ku&St9I_^Fjhan*#zV%ms^3R35h4wuA^gy#wxhV9py()RhS6Xd)0FY zg$bq+J1#)AOF4v~nvjL))+sTNvbWRuh&+-(quMlQvk|wm&ob&fmL2+fwWa`iBAR+h z?kZ+QmB4dLf&kdi$C;Ihu{v;mdTBkJ*5p-Q1OG^pMp~@^6g%NLGpn3D8`TIkU2Dp$ z5;RI{3T0f2jvP3uo4d#pc~M1Ri+nLXDy@0{IG*L#XkO4di$aI1Y-+oPZ7D{?K#)fH zIkF`O8QPO1Q?JcDtWmts6Cwxxy1^jIq0BMRpdg_*yIF=>kRoF7s;We>m4~1Ur3JDv z9wqsGt|x9^j(^)LVE+6m33xz zx#=Z)@}i~-lEGU)!DJ)aW)4n*O5m3$R9{X2!kuA!(3TTDl_f_VXDu)nA;w_3mrJ5c zO0MXfnP(}IMC-Z`(b=Q)#0M+)yY=~RwtjF8Jr(W!qPg_mi!9;3_31U->Fyhx-??<} zgIim#{F*VXzw^cX^{X9J4Msh2%WUBD#`}BTcK6FK+4UMU&X$Ccy%V2(^DnI0z2)r=9(RtKfvi;73A1zG?prb%F$@@xOQPJn95*D^Ut|^~@D2TJt+=+mqnek{B z$smxnB(I$y0nacG5}`${c;(UFyY<%2^$+LovZDSTY3gTNU%!fnGi>H)B8V$wdp(xR7NSs&G~VedBmV74b)kwjI-u6C6-Y6d8~$-!Rro~ zS2a!&8MesYzE{kM@RCfr$8x-za2eiH=XgviWRWTWwz?u~j$X;U8iGL!ppC%%7!|`A zbzBOuk(=PE3^P56G8I?`VT4Asy*D9Hw5@?hY`M3G;o0NBT<=F_1=a>x1@DyRQx)A9 zHZr&)B2Owhm$I(*Kg)S^U0`$Sn9SskZ=?T>n9JSaXY)$zhAHN{%BEx>sCNv0-i3<48Z zigVoU^y>NBNLEE~bcDdMPsA9tM#YB?F@7)mNQv-u(qEzd6lUaT{e$-shO zA$_#wgh}eq>A#=c?UL0Q6yVn{uLpTx>s}jz?=Hcn8&qss*PI=fRT!fe%dOGeMD*0> z)#!k%#XjK2RLt}o=s`hI5C`VSmOP9x325|RdFDKn0~%xje*CRHkk@h`X}krZmWoGp zQa4lND$yt)hzAsVmg^yphz}2Y$0jTY-k8kEWPk!XobqVVYr4a?gff19&)RukMcZ#= zgj`sQL*6d{c%S?({CqcttJClubv& zh?53F@k~}dZzaJz+?Q!E%W!Q-j|Xxbklx)!OtRP|_~1M_hqI6rXpPExV$oHm8` zF_WC(q-tv9j6+Qr-2=L~DS@>d|4$8c20D+J{O`S~B~2$;%mna@f7@GGnA8n!d7b%d z|AzH6c=0SbAsdl_gneq6MlML8t@UI-HhI}N;@JVl@c}9b%-VL3;}AJTUd}KD;(?Vt zD+xS0!a$=$BOW)^JV`Q@#vJygqv0m*M!HKqB2Auf#DlqjjzH)J=9*UoD3rO zp@nJzlZqs=o@<-?(AU@e))=Wx`}qjKV~qr?JGDnu1K1+D7pJZiRD0!X{oPJ&z{jY> zQRr$=u?k62c`De5WJgL|9iFTn$oZ(m!FXN0+@pc-Gu)%yy1LyU7{DXUogAd?dW|MT zNE*eOq+2DL)*ZwEydO9sm=F$764Nvq_~q5X=;E`_JaJ+}jV7re0g4PDZ>3s+#)le1 zD!Npv^yu7fMdi>h(+S$vJAY!Xc0+4&IE@D85+PIUkYm^wCI{(LV@kovI8HZAJ}o`` z*r8IB6hL=b;!@vC@t{G|WraDfX50aB{~@5(l^%wCC0X9e&8qu-{$#@g04xClwbmjC zEPdDI9~#h_g%|N)l%bR=WnQ^?kvdd%Do-we|6sV8H>yB2DWqx)me9-SVH{U#x{570 zp@OkUB`Iq?4XF@B*51>mRY7fbY&9~WGt%z{{`G% z$k;6tU=7J$pI3TNTwbJdy}AITR!tBuCrRzvOvIWO8a03RCgPt zYos`K<4Dh(STjMviV?irF(MKs2pl2L=6L8P7^|1jcZgO z0x?5}te8uRQ-(U(^AOjb!10Ed<-f4BA;bN-lmBpb06e^0+a#$Ma&TxC3b7(Zj{rYx zR2txJbW$JSryq&b1OJg1R;7M<6Rm@@u5bjTj~El`MPgY2GE=Tv+EpTyIk$J1V;I6s zky;ECs#N8B{d{3VspWXCE^0uy+Ow*T4V!Bdu_vW0=FppZD#mqI^R{F2`rdkxPX zm`XfLR4T%G6&FU9lKK|SU5%`C9Kl{7sRTZtUi}W6O1hnxQlF4rAIaEA(~yEFxg>LI zp%QB`DaY~fNR^S>fe;t~mNmo_$WaFI)4T*#+e*C?X=j2N%P#h4IYc&EHAU-s7LVxeoVMlaEd*hA6a;C2GE68C``VCU`I+dufr&R0J{<%=~# zee&kk^*^KUY5v(YK!@#o`s?;DcekP0fXJX-_SUCw?0og&)}Md3^QRlQ zGT<8fg)NqJW&5?uc+dRWr}JxXwTo|059`+c_3f@3Zs*QhJ1^dzU%rO<>h^mZRJ0ei zKfbl~;-&dZf1Y3a(e@kfuWS6ezrtqQE>T)Yr2wwQJQoEuwj6}8Eq+(Q)J5ig#=!brJ*MHQ+-iIH}Clq}Usdto5WpD~}8_in)OuW4fuTU~C1|@);-3 zs>muFKY$2cC$jU~Kbb18tx#?weSTBIIt`dpy)Y9sKys0 z7?KAkpzE)1%6t4fCpH67lvAGAhF}MACPlGh%E&v4dXX!m=G-_v;A)pIMo+m3qoi<^Xf^x8-B4}W&|_AlG7X+JT) z{^COMHDATroE!EGrqM88|Iznn?3%|24|J{z-#htm_bdDJ!;fO-War8s7>LKGe`>#s zY3D`>wrig%ko&uuKz4MD#ELP|#|wPyrMhaxQJAan8h2Id)@p;PLWdN0AC;V8H@lGv zlS?&Cg;eAK-ih3bLeOn2IiVi{%j*7%7E-kU1(4-RX#t18bW6z*;Cgzi%`k$XsPIa9 z%J@~OgYJ0iQ*0Q+8NPZ6

    NDef;bbCz)mZ@>;7%m^EzOj7AFJ^kD;=+n*|@*I&f7 z8nOPkl}Hf#%wPH()_wlY?fLb;v|`q_&9{=d;QVS@#1~@TxCK~svx3%uLNJ+Nzk88c z(vQA>_lsA+K{9{o?G>7l5>XR_ezDBwOsg<*FJ%B&Z9Of`6SFeP;R{Q2q(xG)|1e8k zBI|tSq0^5)F?%{essX%Kgna9nrzetd>@V6){y@CRVF*vUu-RF+grbI3_tk&{L&?$ z+zjOvg1>w?tJ+yyubsQ6xQv`Pv#(qfmU0!OhKQ0mAhO~Z93GybBxqZ|zt)&24-7%I z4^hu7@435`DX}#u%Xr0eQ{R(qDk&PT>xKs-X^(OYL_W5-P%{%rizLiI*B%;N%SdNH z^D7=3BPc?Ze<{c-0>NCRQR=Ss&zFLOU7vN&;KA(s{bhnV?z|a@g(B#onA9dQy+Xz@ zGXiZK1>>}UUqEqK=pN;9m;$Dq|9ETui&rL#!8(5t?Vy0RND^vmuE^P@m1GjH8nrb_ zzkwR2*7<}axkduJE+bl^bHGOn*{WDDe-WkbfjmF^^kXMCv)!oZxAOEPI%@jxC=k+4}6W}*_Y=U7=0X7K0YE{;9($oYpM z)J!bD_+sbd7np?|>=jdQO=tiIZ0n7$T8oZaA_xSS3&{N+MBx6J{lnA$^5qq#5*s&Q z>yr-=c|VL#w^o(>Gtalq+cEfjCm+Tew?BEAc?OMN*997j^4>EuEa{otGQ1**@va3) z)tA3*jPh0B;%xuhSIAmyFaH9!6%(PDC)@hzmBsSm;NE@}KVuE;nZtJ?F5daeC3J@i z3Y)(hyd7tBSz5$bpEp3@yyknGC$Z4-Sk>||{0Bw+XTr<4M)N^Dn5|F#l|8D)?`YS? zpn5)I9?|yqZ?J^GyBF`?er>n{d|kKT#-iNZ`P2KW7isS0te= zkc^Pf%mPwNDBlQHrWa9_DNZm7KwQ>5-ca%)%hMF#XO5^N$z>QtiDSA~WZ6MOUafZ| z&`EppsSQsWAErnMDxvN>InP_NZ(>HW@Vt6&1!w(9V>Md4DnL&GE+OLZfhE$Y7VI@_ zMgq!Z${@M9a?%#J0l8|=95x9<3BBtHxAv2l;Yz@dZQp>CBq)z?|K-bw$20spUlKY!<)ohz^2z4-=m zV@D?%l7_Kw(FXC29bpDeNCiEzLxlw6+8IPC3>;0$s>F#U*9lFjPNPiDg!Q7q%cO52 zeC*Vj6X(A7+>@uzp6E+EQ``zZl1$MOa%#$Q=Egc-N0|_6nZ38luvR_q9qW7bd z79kVCh@s2Cvi0-?1SnEW%$&o7$QTcl=Y Y$x?Wy{AP~<7_Stc%fPyP--$fJUX|>`lYm?=;(i1Vn0ee){GGD^p6{<_)6~5oK;v)N)<#!y(h^#y(92JOz zax(Q1G_7bsK?T)^BzK~|qE2?*43ihwn;8|E$gmx}cJ;mzvs)NgWubYm!k7Z?Y=~e4du2Z)vKRATo0U-Og%;UAosMLK@J*&=Zuc zNJDcIi-7dT`)h3sj_|^_c`{72@>u-vBTyl;c!qQx!_k1U0OUa9P&ER?GQkVKtkD#$ zY1w|~Ixci(2GxN-w7yU48p5@ikr~{O8BPV>1LK553jTWcCbG-#pwzN+`wv^M{t9wB zfAxj-FT-!dR5~)*SkK)XjPrHIJqlh_PGDDRF4KLeyG(cCJ(q#4oC%K#NV^N{VhgvZ zxief1t7C_x|8VO=E>lX(b|TUE;m6x>ECEY!`zJ8SGeKdW*>j~yuGP5MO!8w;=~lK3 z2pcm%_i{CkfFJJUdB=rMmb?i$7bWNalyOi3Pbc>;e? z_KOI$@KJMP;2G5f6AhARbjlN?CxF`SIE5u6C%bpef(m|3(l@BA9BFnBki<45gGjgM zZ|l|Toy*wn*w7DH_=n9-&VS56F;GJ6GW>0gu|2K0AdAHR@DcLztv}ITb`e6Yy8^UA zTO(cby_fz9hjaVo8(Y_Z2)ekP7v8{X=YRag*2Rx;;#efq0CTh-#0kTt+Kz=;yW)n+ z>6Lb&NVmf5{A~N??;6+V#-G?fTkl?J{%O|L{2fu$n}2D3y7JP!AHR>g-TwH;&6lyd z!Ti-<;tu7`sbS069b-;9yayy$6G@1Xnc~$%$Jlk~*|AsnP8g1}0U9O>JWR0$R0=%; zQjH)4M?rw-XGLHjIjcZZ3Uq70^oyStu!_tb^&%-FB9|Ml#d%^YSK zk(HD|$g{i%byX-*@8(C1OGqGwGg+R(Xn&oR`TtGW+YQRH~?e)wVkx z`$$=Lcdfc(!gcK}bYZaFN5QfYiMuynf{@Lx-kiU14eb*5E?;AByZGe>d)xHKm_W-3 z#eid^fPq*?hK!1@os{Fsixvj1eYeQ#z;cqDM!6Se9H=f4FYVn+%o-|a@a|`kySr`o z^7PrqPn=$}qf1$B)f`(hNodY+FkM%PGQWsp$160$qyZGu{p$n>hDiu8ugI{28uL>; zUvQcf`PSOJi3rFAad*1s90pQn-#dBY+zdn1PoKT;os~!5FO`NBU{^vn60{n0Kn4p=S!>j59DDGNgp#cpzCUdHPgey2xf)%e_9XE5FEiAc2_<+t0#jq zJ{46p!XCs5O%hvFA{rLs;MQb>;-Os!Kuaw$Kn|&4CaETX6W1JNCOH%Y+T9U2v$5!4 zU{MSebdk{_2s}md)6B~OtIU#s_ZJH zdYt7IQDJ#z0%E0VRN5I5l9)(y#XgVvU#zBlR;zKC)a%1cmFIha-~DCg-h01j04IMi zzxp$r?Jhsk?ibs{MsF+}rM6M_`5e)X%8)}EH3=>3;5uo zrwi$ocfOjxcn#6p{9ix2_x|VjVdvwQ?)~aVsDMC7?%qOR_kH$o+pko<+TnSB`9@t z$(R+1>m{q%Y9>(4)&f>~A!|2(f_6e|;r8dZwr{=PN(6fwAgMpSg}>wH?wzbL`?HtO z*WJFY$=5CNjf=m0_=D}&*FvZs%*Ct@eOHRyBwm?_Ut15D zmad~RT%At$A3t~Ey9@5`(`U~-HN&q*=)y@PGi4pI7Un{X$W%>$sME^Df5+G~DG=36 zrj_Lymd$xJ?*X(KII7$}E*$vudZsXTHygQd900||!jXLxrvs8&QD_FC5eUVop?L^) zkcNS+mc*@PQ;l`%%YrNMYeHu53*rBLtJ{i%cXoKScdXTAJ70apKLtS^dUGiE@=ra+ zH0jmL{QT7y=a<+h0h)9n?X$LR8!z^+Aa~c6hS83;Y^|ChZ^ByBX00qh-=e8|c)%K2 zS-$uQR)8}Cn~V&5OU>Q+ifxh|O7rZw6OW%h$$EmXU!Q+@5mN&U5dQWZq}Q0swDr!N zySM(8UADa{KGFIZ%{Kvc7l#(hhK)c}efQ3LJD{~SnYamAY5BW^2mo4Jmm+_ZoL9DWY1+lB3 z4+$4M_Feb+|Cznv<~v9kZN2pxdg32m6ifI=oA&{WxM>_gDhhUu-Od-c?!9px&wKs` zYkftvVC%j2@u(Lc6Y%}4(F6}}`}ePG|LIrrFMqmtNo=mzDzNrVZNoIWMHresXq>+K z3T?Ak*Wv@xqb;2;`?5w;qIG5aH?J%{ivfUZZ?ZMES8SgnldWst$6xxZ&^jBk*Q4v&y3maUYC%i#95pNbl&_t_*2AJC2aGcIX(MWBrcn!yq1B$?fwNE#)i@1p z6g$@XbZDvX#{k%qWZJa5lPO`OVAO@Aq>;mWSbDC@eulm>l_sOQ6uBJKLcra0C7a_d zE>SEEBXed}tkIi{;|$!8o!(s0K}_}k<4VBv5db=XYprc*} zr7L@ijbdHy&9?SC$+QBit0GNz1C{ zi|WYXLRqH?Dyajg>~m+od+LdWd-iPeOZ#lPyPl*}%$lo7;euyb^=z<@c+d^1DbrDo zjVxD61mNTf9n^+vRlZXJF(Oje0+p*EvK=shtq9=IMQ?HSo5J2jj27N|@pfxsS%*_D zT?Xy__N~iUT$5<~8Gc|(Z%lUg67KEZ#alaH{iw>5fAq`(AI37-2QYK;A^Qxw`iDPT zyo}dyjrOZ?IKcGKosYpPe$%Y+?w7yAGUva1sr@p%-d?SJFgqW7;~N+M>%Uy}Oxyvk z*@@6$56)(XiWYoOnS5MwPE=NAs+%E*@zA}zH%qf{Jp!5AgP|tOeOKM5&0J5N^dc{_lVJA2068*A4Gr8mNcFiIUXc!G?3;>+XQs zqDgInc|!uM%}lEcR@SS$Y?OmBCEx@XIa)1yLJA;*F+S4C`@pJ66r;6zEo1b^)-0f;Qa!lMhQz^~&Q(TwsvP z12ryF4UJ{p`IwcOarzdztucq}k5}Ht$y-j2G5)KaJMYb}z1m(32ewsC&}|3|aP-?B z+Me6Rdv0CX`s7#Zj&Gk#;0mgvkE{l z8AsKg53hSH2Wh8+UTYucx}zfmSyjh{s|1!11AW`^gT(i%q}rR)ILx`HLO(ck9Gx%- z5#cRubZEp%@}dy5xtvp1u4YgX@(=YDj}nK8N1dP!+BeEB!@7;uEpwU5r(Oa4oCtUp zDQ~$odR%~_IYx|0uF52(e8p=#!Q^~wQ?3A`9f5t>?cxKVolT}v+O2!VU1?Pok^*gu zeV@k6Um4a_jS-w%z_6pnH4d7PylQfbP1Zbik3Yv@kaXC(>P{gJTRosRnTZRTwvA zX_CAuyLZo^X)>0uP@f|aChnt>tPN|TOKR2D#$d&(4ouaqFBXf+6cr^VgEE;MkOGs zb$OBFD24w0vzs+9NmY?}6~(ZE&IuUOtBI;yS@mP!lZu z+h2C|S}hyg0%fPkwBloor3_oR_`3e%Xc%Ae%`J%EnDfz&!QfGR_;W;}yFUv>yXatT z+EJUg{|eA1C-hL%tVg0biA^N*`$gCcL+j|v~WHUGVvjo$2_`RzP# zAeoh`jOW_>LK4&^Vmq{yg!md6 zWt_yMP%Srm>gi=-*u8Hn0P#DIbC--y>olkYH zj~XN9P(FwXCjf;Lk+j(3YtaMrBwf!ONkv}jqp_7kINX`tXYj-mPt2yt@-$k6&Ei){ zGf*0;>_RjXO|$Dh+61bLw!*c&8KLxK{X_vk_{`B)O z*&97-)Et4YY$_20JBdi3Bs!)H^UxTD2t1y<0%5qwV}77FcgOcXSx=lh`wU2=o;dlR zh8AMl>FJ{iG-qUX9%N7emFjz`qM`kg%2F^6Mq>g^Lc1@6q%?D+&RcnH<+E?i7Nbnx znmv7fb^-)6MX}kAVeG7MI6Vq7pD$SdisB$8DAK(NsL(6u^_gUV^se5!z)+zD&XK08-`sqs(P)V#Y$gW%$()k|VZ5M6~_Ebp&&56pGX^ zBEOc)oVC|9aTk6-yn%jFydUXd1Xzneu!%bnhq1r>@VBUDBYVaAfZqBE`{B;-?_GQ! z#lfwYzrrAK7nQcHJZK|Db{?1A8=ek!U>TEc5ahNEJ#8qx$keTkrWfz)5{b>o(3*5$ zJMxHoKxK4(^9|Oa*t8%aDs3;p(teBt{*CUPtif>*jka%_7J!l@BA$&@f*Ke;aC9-k zn#LY#C8LVP)UbWUNeD2JGLfWFgidxR@X;H+&cd=@=zfrX#lhMy0A1a#jn0h}$`Yq& za^W~7Db3P0i7#emRE=Uo6hbL-;y8|C0fAkRgq19kD&=*Yy4842qQElidoK^+01Ji} zrE2D4wnPa%Pepq|tdy=RjdI(^D|wc@l+Y(L;BefvAGIjh zJ!u>Z$QlTxYCB;Zp}&U~G=VQU$_7|q!iPCUD`U+KHqT zk7?bFa;StY&Diln97iI@sB(L%5Qs?{XdZ{sdYRLD91!%x;|SJ_zF2jDm(1eN;jT2| zdmtO9oMXVwKt{s0BaA1MoTX|+sJ&#=nC9 zaDNYR>Uhz1125zaQ3L=LjWU~}zYr}sXm!26^C;$yUL`#G3VaI zo|b-!|1hVHijLqG=O1e!a_Tb~wCgQ1Tfcgl=XRHaR2eLHn@bvK$=hihFdlM=};RR5s*0NoO z7^NFmw4W48vmHS>f7yHTAVO&jylK3Uh$avRiYg0uSu=HxtB#snb+K1NrtJId)gY7} zD8y;owrRM0(C2zl5K(;s?~JGdG*R+P(KNl3CP<+lIRp`OBjkKg-Ffotxs#`!I>U;K z8-)Zi4=+9x(o6-e3i9w-2*sZJAsy8nH?3d`vN?j}=~9aK6lmLswF_Vuh1RP#?p=Bn zkmP$_MX?r9E#@`0FMZt2UrY=81V8Y~+?J_SW~CH~nP+;O!KM1BI~O$qn1@Q`05g%I zTB#Lk0fYcAT5ksk*wDMg>WZ7WE6f=9nS;$;MClvtF~T)Bs%lyqQQ+%lt+;L#JCbOO z>RFMLvMhK}fz_5>QsltE@e|dD>$ld=1W2FSIn;--c;LthI1Gp- zHyASBcr;-j2ei1};n=kwXLA!>DvM5!KI%KWXi;IMyJhaDkFc5#ok@_mUH9s;y#=rK z9~qdW*)ewYhx^wCD$s5Mwsujop@6h5Z`T=f?&Omv&z(H;_{sCLg^xMg^^UKjh$zUC zU!~{*i8-W2oVs+mK+$gvDq<+sqaOVW$~5GyE?$^atm(Knj7Vy zvX110N$8*n&@8BDmSu2`Y+Gm{M5)XkmH3)^!X%*4FLnQc+q3Jy?TLtn(!UV(eb2zY zC*bH@hyBAPsj}Tri4vIrx|L7Sr9#abOwSBH|Nc=1aP9!W9BKjYt1eK(LIA!RTtyR< zY1T*tL1%I&`o|aH((t()B3z=>4OA(wGLVp_nAAqJp9esVprd>niKdn-aCX7hpcw?{ zE3Y9HQ##rDY)r!|u@sWS7!OfRRWr-vIt}t52U!(BO)44#J7Ub^pBOH2uf#Vxo>iY#Xmf7yC9C zVcnGxTiv&P+=gk}c2Eek>1(|x$VG*ggHkdv)oMEwn5S`;h#LB$#~jpYRY*|=I96Yh zc>Fsj2mG;9y7>s0f=!PIfdH6U#jqngS2)9>?zp_hl=`EJNo%ejlUy;Jdx9tw5!*o= z79joMBi2@W^>SMRM3ZWZ60@+I&FwG3iguQ#MGn|?i6ve!LaW8c79%~M-T=Znn_EQr zvgtYn7a1Ps;(Dml-TVH(-o0^!kw-Rw2J=fV>|Fn%t4Ho?w(Tz21$hTu5)2uwIb*}M z?*k*@wPtqclli5;+`YxxX<1+h^2&FA(|=p@RDg_wzqe!C?X6A=729prUbPX<&{*x*&0JrsE=rV+|wfYppw){D5+E6xJQ6 zo=PAXF&|~Ime--^c&Z8~RvATMGhX4c&`_il!S8a_E9Y<5&g@R+_p#zK-kUY?U^_>x5C(fYpkIhDWd-l+I4OpdC@zB@Vr%K?~p*_y? zWj#p@!bMUE-~iC$j*4OUKn5^DZtA3}idYl_lju=wB$$R=e<(rMwiJb3w)ZH{B*>Ga5qArMpW5?mlQu*w{)@f5@htojyjOqFjnf;UmMA35KjPRAj{l6DwS& z`{z=og^O%k27M9_B3uM_o)80=KF&=qbA{N^D&2E(cN{v-^bO;iIY#Bc=q&Wlv#jE zCQfSB;3tw*J7#trNWF#}jtX)o71>k~gH(fTR2Lt%umUaQ==QC*5hv~Z`4z-Nt>@Ct zZ|{oA7B{>rLS&=XO)S+;Rj>I}8_Ts{(|%W!vqed*%Dj|0Jo=$b5Q%VdWTW^tLO?`JN+?BA7bS0|G4R9-FAb7B_L1vc zV|R!$Ks4MpM%(=yH;U3k;Abhe@1SjyFM&kr8$yxmn5Y;v3rxTXEK)ZUa)5K^p+;#Y zh<1U-jCFU#kQ#fu!!XEAW(0@uhfW?CCkt`W*1WLF$#!6E+ zF9F|DDRIKMn${gKmG;nXyS$A-ytRB9hp2IIo*{w%tkM%*)Kv`nft*}-#0+`k5n4m4 z5brpNYN>@&O1Ykzf&rvG#6#8J*V zX>Ji{!No!DX7iRXDRw#8%0oOaOfdudSF#fkrH*J^VPdEi5six(Lf9U*1`*V=1dC+V72kg9? z@?MqdvMsnuY1>v98JVX6RAY?(Ad$qN_=#DWRE|qCP-tiZ0M&)hvPLN)^)Vn}SOo0L zM{)=yh?_9$xJ0Xlu4z87!y-%J%djM)oK#*Fase=OnW-ePiWylwwOy|+wY9_knE3`Y z_faT8!3~2j4L}4FmA>O9j+mA{=Yt7m)T5skvU6bN>Jh*;SAy_ZO4BfbFG(fd%y>>q z3#G1!IVw9c-ZNSh3{|o7jCL8(-68ux2{ystLZmhg+J!1Ma`cQFVIF57iU1&$n$<;M za1UZ*WUzd6;`AVbb}k4@&lM%2bCzgkx|s_`aj|7*Pe1$g znT2X()506=+(DY}>way2O^X6r;BgkFr;E%Kz(6I`F4(J5ZLg*sBGQSL?pY$b^f|BM zLa4RWw`lHa1PS%s3KnCkz|s^*U+_8J;)qW+r0Yf~M4v}}!SWP`D8%rD*ssl8X4T+5 zM`F16sW6%{;N3dW*$_sP`7R;|@MOm)g+(1%FrB;tJyVwI)+pa)N~%Rb@CFR$e${Qx z;z%C3Y)6)12$)6moWPRMTo+cc7Nx?d?j=G^LQEk@BQ;2YerR!lmB|+Jkb4D(#h{o| zqkUE4`23|yJ1+qH{Wdz8kDYKF&~a&{)yHU48V-1Lkb#4w^n%1qi0-CAlxn&WM+eyE z-I7g&_Aw7~{X5q`*uMTI*oNDb&ivZXKo`*EX?E_sF@NV5ZAHE*^)v9_HbKi~>LOH?@3i|Fevy$uKBY#Zgr=vJy=3JCOo==#R646Zb|MB3l5<3lxQmy*Y1a zp_Xs9F~F|kGD4gX_{JH~&V;0n6=F*VW%l;jm|p%DT@7FTWPa(_c;ZN!9o1$Wv{47W zw*Mv)-xpmUHK#o0LnLBL>c?hg5qs|@9!94jBj1;(*r9s;%7$v0X*L2bD5OaBh$K>+ zMx_BjE-R*rwbzEM1&tW5+2DN<{2xieP9LB6ho_EhCTJY*0?|||R2V&95KKJ}Bqh^b zV^oS_QVJQPcbq^6DT)Tg7?7Z?6wYsaK7a2r@OuUIvNYV&Q(J&Gowt2N0Y)g zV{kc-NU%&*!|3zsy{C53(7{;oqB&^g270a4DzaJmd}@9Bn_5|Fz<)Q{_Av!FW6~pO zNdn+{J*+)T(6ZbzA}|^eP&ACXmC*qQ@?=C%FrzrQl}|qbplSEmr>q+JY%7%Q977d( zsB6G}AvUP3s6DE8X-dR_Rg1Db?6^F6`sCvmW=!-AU67cN%a#OB%es>(-6p>PUzIxURQ9f4kD>8at1H*rD8gj?xeO_ zE4G>22zuA7S``N*zsJw_`%ylcTWP2n7+Q?W=M3aM7u#ZcVKghJZOK9Q*RN}5uKaQGRIK;f$bOI?qstWR{o z1Q7G}OK<$kZrra0s2Q$)ih2_ZUkAh)Cemx@WSL|!DSa6%@uPq$$0u5$1b7L=Y`Y4q z8!Kf@jfWA3xI_yT&39v8sEiDa|Iw%!kx5FqS@ocIZJ`8OvH$mnRL1u|-RoqJB%+#t zV2Y%sW(GvfY)j&;LXpQA(uuOiqtR)P?6sZI3!k8wCx!TJzjGbvOpKsw2551FNbtdd z#?+muDN-rWJe55ipnQ|Rb|{RS`JJpM$kDW= z!AmRMS_%T+l;f~c9MBr+Rg~7_QmK=7g8FB};a>cnFNeFBqKe>zt;ViR=*gV`GGNdX8dHP+=f-s& z*}#@45)j}eqLRVf#DJ9_v*_s=iXMk!oudBi+B8MYX+$f-fLKbLT8Uh{rDJ)X4s?Z4 ztDok=p#VH+|6e4Jn-SVJP-KdF_YF)@)SPFL5DnmBWuQ<*)zr%DEYoaf+!33ssF7b^ zn)yR0YB{U8z_5HPEkdv;Wkd{9@Z8(-I7>NMF(|z{TPg;K{)14|9B(*YT6%?_DVW}u z(Kf^zu9(Z?Qg@U0Lml`4n=5LNSlD@(D5{ugG0)XPB&W9JCEA0D(1)n!gZYNhWbS>dDUi;Kq1 z&P~+P>JV{dwZyk|@z%zvWKjg%lz?V02`CUTf{W_JG~34Bb2`s0fJHNOJeM z_B^aTw5VM0#uz6cxe6$v7)Ved0$!6KAYh`#Ya$wA_)!TVF?0heinHL*_dTb&hVDL9 zb@r*MLlw{8(B0Kl=bXKUZ++_<-#0VD0{lyPQ;Rq*+j*?Lslk)Q4W9AYHu$WHnL(9k zv&KL5Wq&6YR{B)83Q;woVxj)6F@YSaTfQPyu{SF5?2XU@q3Ko95Ly!e8^i$+e*lc; z^kC2T%w8iogqm`~)fv=~*&8u^I}K}s4@^U$V4;Y>LQ0Y6K$}`fEre9HI9cMz+hm0x ziaKVpw`ZJi+-X}!v=pf7w4w}Z+X`BdN}HGfp(@;o(pH&Y+W|nXL<~2S3TJ$QG#jw-r-$h2;(9 zr+3{XQ2EW=d8fSm#1YStM!20BjUdFU3bTQKu11C*Fc69@AYT1a!tPr%Qw%tLj!=R- zd5(5o{3kmv`>Wk#)))S1uOj!8mjK3ViH?$5qqVW}A&yD_$WcLrXQfuc=ev(4kJ2co z2)VGC4LW)2sIeo0^$c;7AO z_Y$wDWdG2I9(d>Z_uce<)ORe^@oJQ$s$4V09p7r`aLrjFsLd5Ij4J86d%$6t@xfm8 z>N7{wf22)amo;jZv~81Q6}VkwBw0`nmzC|hca+T7)O#JT9k;x1$GgtQ*4+Q;oA1B* z@|~A}{OfXfC}{P5@RGk?qCG;PcMe7&;8bN+lLD2<0n7tZW&Tj!Wam9XA?&mv0T9(w zjvKYcP-&ftmxk$wWu90{r~?^RC5a)23&D2ZrkQb1Z`00?es;%aFWm9oi)R~sy-J1; z+!3+Y{cLWlmI{qXsVKHn0t1sDc;guteo)RxhM2+%XtF>K+x11pX z)~ku$YpDm8S`UBZ5jD^uEtJhv%j~@TFYmwXJ(HL=y-L^H{(R@#t{Z6*jEjgtbrr&O z%Ni;mX0hoLZ#dwiF7c$vEtr*2u28n+)N7Af>&rY{+f<(X!+zC%wQu>>Oa`18joVmu z8(U@M03yUGz0l0Hcu2FlLp*YFyt9~p_8c#UI{!c`baSX?*mI^e?uiB=3{ON+Fq|LV zVW0?&t6Z6>9Nq_{W_RH3n8}cwYg@b5dF^ERT)sW?bp9 zj-4PXILvYGeiCLCO}k#@Om?jFHeg@zpYJLd^=I>3Az^Ojt%u@$5tdGmWV?0qROA2w z+0%1f%oRcyorx*z{P>^m{P1lf?HbyMd*~-DP`tVU;~_^^tr-}^8_KikaD^xaS3plV zO9}TVVXyeWNTXJLs}5;YT6t0nQv)8Q39MsXspe_B9qFj_N3C#W=IS`vYrTYyG-@qX zYOOHJj2BU+*1GBeu*q^tzIRY|;DtAQVH=p-xI)npvDc{CNTXJGL5Go*T^zg}BNKqG-?Y4f^ViVbf{!_3{#gd0+; z*wAD)`m-~q--qes8QxxR*(7lT)a$b*wLQ6IJr2qq-#{b!)C)IGKLiH+^w%?arhRix z#3w~yxqi{2)jnae%20;uIchXd5`N0l&|a(|>9mg%0qkC)qZ)HAC!!9)9JuBF_ustZ zGk>&p=G0e#=hf>gudc&PV8~(S=j+4TOJ{%GQ}#%AIaaSoV6t&_k2UPQ>E(FOhAgiE z-q0Ju?9bV__d_PXfmgi=tG|9~9bfaxCm-<9Gk2^N7p<8%4ZmOW%Ke{k*u((`958WC ze8DRwX8k${U-y+@g?&sW9y<4F=WTi^zFOP%K#21U4cHsdxZnY1+r_jtuRG)PZR=r+ zS2YZME6FoVCd=2objzmx046_bEj}QtHm_@Bc5Gid@TXPa4}AC7{!5N!y-%I|hM#X< z7u0oe?8c4Tw{PFDUD<#Y*+@;(-1z#_PTsgJm#KyL#_o5w7{k7=MuP&`Sha}VOpm+w zge{w_rq1#9&{;n@v@M(ZfA`as3Y=6k2FjgLtEOhBo>rppvyBaSN!1SrT#Xa42IA zcy0d&RrqGig|Y&xn1q=JG1>DI`rkwy2;PMacdZK56aDXP58XPzTYK-UdZXTVl(Uy% za$-&+TO9w5{dL;3vA^E4mz_FA-F?*qB zEd?QJFXuHq1ohMx@1H#_aQf&8nny4qT5GtgSCzoUIU7F07oRDW3d?{@EhW?bM zUcGzqrk**+y7Y%TxgfHaFZbNn;={0vtvD75`~(}Q8OJFnZkuPJdN{PaBBcs`nj-d` ztToXK69uT)pHv-7w?H$)>dWQao0lne9VCtq2fcCYwx~G|&AKpfg)a4&R^+Cgh%MVT z&!(wSlC;dEK^V%sDqF;hGMlAUhM472FVM`U9lg-7n45!6t4chdLp|80t(h)-)3)d0 zPY!FUEMn@sP5pb0BM0Xg|IM7NeU987ng+@ozjmLX5jD-!fF=)B1ss?pFHrh9YZb6F z^KOpLiaZjE>j4Ukh@xp^jZIG?VLR>qyemk+W3NBDC{@>ZpHdc3 zMLVZro~3}iBtf31_tI(QGyf^)T#**F^@>VVKqLBTfi;QnFzi7V^wBmJ)I57!Nv|%v zY%K^!dInAJ_ME;IHtu^rr&jOw8gN}}aTQug1|D;Rl_EyvT-daTaq?nn^PYD?Z|Oqk z<-kobz;f%=A;7TdRU=GE^X%IV%h&%|Kgc?_=`cA% z%yGWYbzl}tD>=OfR5JT>=eZk)`rN9q_x;SduaTiXvsWU}Gimqz;JNRDp*}dZ!fc-p zokxET^`TQ*V)m-eqx^>Y%&I|LTb{koSm#kELw#;vg*Ej)pF7X-+x@w4BnL_J%()tL zir|M#%6LzL!Ce?+M&wf|LRm<^fG2MyWn4`AC3RmocLP$)IyZA!g8kR;HUUHFz*_Bj zFa0OZez1}#pe|G%5m%jeekL%mYSj=BWrVjgO|jpEW>aNl=km^ z+wHqQvo8GIw#V?NWA;L6JrFN#@bL6NH6zJOzfIKu#hZwtXOhJ}fxooCLX9@Oz9i2c z9cW~xlB)Y0XN@>DvJNbNOf8yZ5p-U#PEg1lw(@jw+ z7E*$Lp%(&Siv^@+fK20CeRFflySMWMx7fnsHL0^_FX()d4nHBc2}9enmzqQxHldmy zMVeq^9rM0gc0T2y6-us1kGq!V`8wBpZV9jUS%y&A0t>zH`pp&CIMFo0Krndcp-4y* zSC)ltYuCwa$2Axj(#;5-+yVodXXmHv^&Pif`@k*NJ@}zNe(>f$oAFIM%SFdEwgCgB z2A&@{N?x%T!QG0at%DZ!l{2MIN}XG3PO3E3z_CFr6}JtLuT(p=7B&v2&f?%58A7JI zsC=eIQfg>lqZw1whGK>9aP{Y#}`aMIu3v4RPmWpNxS){S7 z7S`~KUX)q4&un!y-$5fm1Db2f7)f{pOd@K>vIqlFBeA&fL7RJR_KBqqt8MqWAm+Qw ziKVr^0s7sH0&b#UHfkKLJPZ7xMn4tcp0dg2U;n9}E`gdbNbd$2tod;FDygR`DRr3L z3Jo-4N@bN+vw}3=fJo8N8c~na=W-~Z698i(DwE|wg^F*x5ixq5gK3)!i65k4ddaC- zIg)!Nib-kkDg`n_#ppxPZ^^kamAxvCHrIM@YGm50c)izt3tDmD{diO3uYEKeg5(Gsw!blI!NMmx@@ zV;FO}VkB|wXIktwsA2N5%(C<0?8Uis%>4T`ga%Su*Uu%;BBcwEtv2I&nMGDeG8B0( zd^F}U)rK&)XIYkm)se8M=>>#VoZEVq0s_af2rBSL~)D*!Rp_)Eo+bv44g0hVizmxUUP4DfVCm6$KH02%= zF+{*;lzU5Ubi>mrAUi;Ao~0Q|Vig#f5m<*h9Du#&`dH0|)2Ou+QCVJ8nUmTGV2)8{0soZ3#{@0(Ve`rsVT3FCSSSdb30>2^=euBIC6Toaq- zKwm^>x@a7R>&wVo4ifo=BY9K99H_{q)!bq>Y@jw&@{j0<5O!vX67BjKQ-U zyJDOdNohf=ZBL7GuPH6LnwYoif5EXXXq4|Y{2|Qoc?k+UF)UeTw;W7r zK;qHjw2E6{N*f3q!)uf|E$eybJy_`v9ws`sLbG5MMW2f0bJwxaDQ^Y5lLIiPO+7ix zflr>dxn;q9m=cV=EwAZIaPI}0RV6)jVJ=42XGbFEvtjhe6^6=5-l|$t>Z%f026!{! zbw37Tu)8jL;C65mVDMpNFde8%nx&~=$FLobiB55{j@vO-x2BgR6}~Kk60nYCL$yfg zAnFjTQ>DeQGu%tKX5!ZKNej;$Zs%o#+Dz3}91dnM)9{ezhs8Uvf^}f#YqgvW+8Cg8 zLqB+3fQc>weJm}gOLYR9clg;3(#V4qU`H2n;4#s`YnIi4V})^D+uZRu!&UMkTEyU52a-x9G{FKRQ3jXX}zZ*j9*K7~Y0 zJ7cI`v{-1^I^dP4qoKDs6DaLi+?WUMh~leG1psE#i$z8RM*%jv^Kz#IO4{Ncw|q-P z{5lD6)t~~#iDfQ%P(q~KwnaJN;>J91iD)63NF=g|dC7~Q3DJEbK?;q=!VZsHHChZj z+Q>u|N*30xW+3V7^+1$Ef!z1v7I*ms0_;0M;Cl|kwc6SysB9cdpiC_9bgK@n#dwsI zRUGly#De4&;EX)aX==R(3^csAJfdwrxb<~b!^2#Og?UZ+x@r{43$;-L1Ogn8Y}HCr zg>@(Yf7lr?FlgYq0_+NC4l1|LwX;8<|Hz8W}-l zWO32SIOvul9IIGUZkIqk;#ylpxurWz)(S-REs#5Ru%)|Akd9T;s!d5XOP16OZPbLN z&`+#zlQQpAh}F%$8|xNoz7~o`s8j%3QKm)Q0?Rvb5@j6z@z{+YLf{?)xQ%#;7K8!` z{3t95Zkln#G{-($?q_h5fSYV+s!UL0QpO-_kfQ1oL7Tcsx(P8I`)n!meHOTR58#wE z7Frej2vz@S1UGp2*vE*o9lNuF+AW}&XKC#aBx!UbN>XBp2$##_akh%ygjVT!rW?kJ zZrD83Kv-)@F^+RPWm1h~D9+`g%@@$o17N&Ht!s)PLm@W+Z^K5?jO2?BkxtvjUG3f3 z(-;_M1yPsUI-&0Sa4>CyTU=92md5S!MDg^1s9IbiDOCy12;85{HW7W#QS31MVILGU zT)rhDei7wf)fm$Eb!MxI?^|KhSSjir7B}XBI|A%*L-yzlGuSPy7tpp06q)IEr=0hQ z`f%)LM#&;cbknT`%el|OvShiU)=5|`c5#;mAG8=sBMucQh8ET{=EBMTCc+8DvwRLNXSPD@oo&`=t;4v@D5|Plh%_Nf! zI(s5O?df%18x_F7IxW#^IWsJlQ46J1=t|}*dTF9H!DxcoM_u*e6w>mY8P@o<3c^_@ z(REbyWTsX%nPHV;(Rbs(Go!?YA@nk?U_UF+)PYL19yCtQ(mg7euX;5QQTqT7El~(yW$y z25Oq+oPo##8l8ddV0jKZY5*;rl^IDHGM0Yo6g2<_3{j)VV5MFe zx~g$-ozvx8B96K=B%shGP$hK^xY^KEN~4G5zt}MkJTt0Mb3s)dc)h^S z!v3%*(nXSrPU?5HoEhDX4L3nvG9r#38n0Sgt?LA2-iuw_I$=|%i~tdnL)UN8I_s~khPaYZ@jdn zu?Ud1?lRj!^0#~fp$IQFJYwmwZh1zoyRru#7omuGv11-65DHpOw1~G!#T17ErV3#X zMd3B=bQP}}f#5#KwPH~SLu!GihZVI5N`cx=k@E2h1QT@}t48Vavao=C?inpAzk$oR z=wR+(fpF^*t*EGfvz+lXQ}F_QyO=*2n3_tfJpd`Qb#Qh1h0$40IGM|sbF=y z0->3Jyo{>`?Yfi-D~u8!WD0`Q<#A0ErR24c++(iMHaaiTOcE{AdkDG1-%zVXAP^nb zEbbdDL%(Yho4VZ=MHNVU(PsYgT^S?&K-)@HlMCn7S2Gj9FUH+)|A|6RN+0Lxrm4)o$D{5}Pm{ zg2+}8um?_7usn_!_|=&KM$wi>fgbQQKm>(S-(io-D}yRv2hK80GtkUoD71;w!Z9=% zui%gtx-zI`$Dx82Mig?EAY@E@5Gs>JYqfzIf_i0<>YCFOZIT*}q;YNripRUfj#tZ- z0sM!cF;kYivZy`gC7Fh5dT^t4N}UW+zsq-Jpt!m4{3=65f>~>=YKl@%nQu7DQ^cdk z;J@*r$TYx;qoo?pNNb0AtvoI(At_f7yYtG%sr0(2(JCV%aC#`!qRW4lPau?#c?~k( z5?49JeF5S_0B3+mXnBlErbWO=iZr0x#C2Jr}c9sQ;4@+=X{wMar zPUa5UE!{#E!p@Q8ul=wM zQ5#ys%K;5`P=)`-dkg)yE%5yB&JphHbA_HoO%L|W43F$@6gXlljG ztD(UKV0X<$$7KgD5#v!*7^WQ;xmx8c4j8(a^b~NBU6yFXGc$G#!O-i>sO>8}h)QXB zVL?Nq4Nbq(;*L1mv1y2 z$8j~h9vX4BW7oP`r5Kz!z7bctB)L?9b1u*01TXcl`Eug3aGZCm7M)N;}F=L&q zfT8U&O`(7f3Yv;&xr+WH$4={_DPyWTfiucP4uUu zXVs_z6Mfh|%);R>^`SL{UfQvn1r0cPQ`2&aC>9DyV*syodEAH^VysY!+{m(4Q%xtT zkrYZzGh$(ym4uGtavZxQtok$#097h{O;4OgGgT>cKatfq_>;ySe?SK*SVi*O040o! zSQV79S6VfqU|poRe`tpAsaOMjUHL>++l&GcsV;QHI||%8U7j}LnHl@qD!4EVAhpzn z0qV9O@~zs98nqJLUHKu_mQzLy)Z1veX$-&5)F3 z8wOTjXvo>OV-V!At3=%mRizD$9BnS#4Z|ctYh@HAq7#GIh@v%icbQ2;w^`Whx;8x5 z_CqSr7NQl|O3qpGCXB661d405YNY~~1@ZbAAd_9>acJ8|<6N~}B~L-Lm&$-LCQMOL z8FhNxhypQI+lLwqwf@pZn?g`Jl`04|;|xe8orGb;nU4LStFh%dwxT;a0E+_0DRsbu zw!j(g)ZZ}TY{z~-qwr1-qM)#>D66UnBymkzX_`%E6+SIpJef($W=ce))`EmU%l$g7 zTrkt?om{HbvbG?CExjsowWLZ3bpRSInQE|N1Z1coY#%jglUTEY(l%44=>bU;fIY#|0i5@l-Rf9mB4*PPwB&V;*RYQi^zoFU-tWv({ow z)%uq3oVI7NjA9JWO`tOH@yw(EgNll*26`e4MAt5pBDTS5+r{`8Q69%?4G@-?g6D0h z0Ew746!`lY)l2>HY4-CZ0wiivmn;-%z(ch_gTJhuo}O9wUL0{h`&Pi{WJL23&1r7s zil)sI*C94*+bBoNX&KlG>XSMhlll3FXvgD&WMmVlO{1YX8la<1th1sBt0?LeCRogJ zPciH)Mi0(rgqm*?6aYlDR7gTgm3W4Z9{4r{5!m7}Y?o1;I~MV*8XVMi*|wSL6&j6F z=C+-7XlQk=XkjiJ-*O0& zCc4}KgT_4Y%Fz+%0>F8lp_!_T0JYjULP4ipw@UBTa%Oa5gjsDiN~HN9wQ000Q1l%3 zZg)pzF4eV|qd#zm0O#H|o>K;vPg&m79&hxt&JjRb9)U=NOeILZn?xf`3e%_LXqt(} zQfWJO&s9eqT^neU3*EH1Da|+(Mh)nYPQK)z)3$sXLiIx@r7UhLr_}7q_u#2XT*U37 zwc0@W)00F*mBSRP2-KWg0a|a{s#3IZ=bMoB*cRSLXB(F;6V}y$~5km_{&jLVRg#a4tm`3of(Y> zge#@0r&UhcxM_+gbqUxCmPv`GL9UY=8dNPEbk&DGPx98wl}_LVtL0WzX$?LQgNJD2 zDoI|paogquK%|SV7g#=lV8kwH+PbXvYFaf(i}G<#3bpFALxY5P;F%#st`&CRQYWZG zzifPF2{Q%O@S@`w%eO>CPkEc8(lKtpf)X17kt2f=$6B5B6&lBh@-imeP$Xi3)CozfwLa~QD0rDG0!HYZ;6zx}h7J)r2~wLH6%m0NnpGb7om`j^71>xbADXA8 zMXy(zY0OErHbq;rsyePZjuN2pXIR5LDvba*ghgG3Ol<+JW(T=tc2a*M?(5it2LK~$ zwV(+j!mA_!OQMn3CADacXwvX`9sm~Lzjf0Jw~L=Eu)}K0b1`Ci66H< zir6|CxT{54Srs*op_@uszzIo&$(#&DOSQIwLtRv<&_rQcdJvatq{}2Mn??ZEX;D)5 zn4B;a)p{6z<_*3PHKA7}=n_(2Q;02OgpPsAtNNWpEA)IVFeBEQkth=-t5d}f^$hl& zABHro$5Gud_M49>z>3Uu3x2&s{kjntsSQ~2Ch8Ov8&Q{xy|zdLgecWb$Cbj?BMa#C zOcim3l*(dl_a{Ci zh@t4#&&?Ga8sOY9e9w9UR4Ze*>cFd;ATiaJ5~Q6J9D zDk=DtsrpC{jH2<0jw0HU$2CZY)FMpNv0Q6oSACkTG$K?`MC>}I>Kk6bYTQtow%DZc%Z5}Beg2pTwDe1KLj0dTnB}-8(Ff*!wuiZjRCO31y zN?DoWav)vTYNs-?slD8~b?XURVaiQ)tt=1*AG_pooJ|9W-ky~~Y89N?q*Zd?U3@FV z^puzU&Y(eS#inUlsc)F6LF@<_?FLmV<1m@WzC%n?{V3v*jfw-XXVEtH8w4K1Zq+SQ z^0@a&n^PX^vlDOgy0Eqq#L5PGrQm-=*)2$Pqs#`AjozSQh%--ii>*x!tm8o$d-R=> zOi4fq-)IdYUMLB%b2|d5V%{mVH^|@`xVXfNS_6GbId@8?QIJGg3#wcZXQx z%LZkPhG(i?X@p$Qy(q<9x9Bks6k?6KXs*`LK&ki$TNMqcoF&j{lI1xwTsVpD+sKaj zi1ll_$7~_mAd>YM-0e9P(!|7hyUy*JOq<=HIv+QXn$-lP ztD3F5ffS@FE2S~vge*4jwy^EZ9aVa{2{PwKusDl!-*r8&R9PpzziLb^5SJm!38v~? z3&YT7c_3pHF)tIxpjwkQmo|%A+p6s}_6!^W+p0;1W+`AL z24)*}f}S)Y(~Ap)@_Fn55X>s#DltMOvL&i!LMc$tK89T#d!U$Rf%H8AjEWLn zcW`xUmxhrCxVuqiJM``@Y^*Z4TSyU^9C^>YDFK{O0Ujt1-I0vdB^;QNsX3#uk`g!M zLd{F94q;S7xjx1#Mx#I&s2`O^E48Z9JS7*Tu%l!oBWVd&jM|}$tU5IeE=p0g!cr}& zxG1_GWyLzi{KtNxcy8IPsvrfJl++i78-*;gSj#(k-JSL2!Y4|HZ*F*P;GyY3ntJ3D zKw4_jPdnM{Qv>U`4P*CESRn%~2F0dV=A=S%OW-D~$T8_ILN~No$pVGtGakCmwW{4C76n@^FEv94f>E8eq~@KZ zdbP|}tGJpger0REt@GMLgtuySUDzYli*(djW8YiSMy?Awz{+rPUH5CzG);>V-=I_C zYs9@B`!%VAO_b^hCz)SIwgMzK1a!b=<&2{|eeAQ<13*U?Qnh`%sdb1kNpm}oE3Z@S z|7zJ=fPt4feB#RFp`(c;chOVoF|S*9#%h_Z76?tRl7`TlL=n*2vog{^O9V9}Cct^wLaQB7RCl9;v;`Qxx6$9`_9;$2@qiUoZXbF8P z%{GHZ+Eod2Pq8Z+*A^?mq^&+Kw?PSnV+L84GnG0SshXn5XjxhDNSDPDZi6a;Bbfz6 z_53`iG4g4EDD@>GWpkOJgRIX%UdFW9zvPvW1o0FB-rvAz9cERC`%uSrh%P(bMT5pX z&?h0PK%;{opfU&3kOK(8P?6~P%sQE@LqCo+g`Ke)L`|t1y21-W9>!D#!8o+>*!2@> zDL|5)1Vk`#mKS~%r%`3Zdbe)csk>(h4+a2eGY={$i5za&dRsV+kBlgY7`q&dseyGg z-NznmP|}pDl7jK5hOrZKxZkSpi^y4?24NO!fE_7X1FU?iuM4gz4nhxV(@7l;I#SE0 zb=1UBIAvxHq!>Wba*t(ZfIg&U!l>lBnft1Ybexb@N?|#vS4+PwmT5=KOm}%5Av1#N zx&#+OQ=z$+B#+A~Rt|2{xT%fI2Q{87{L<7|8v(SrQ;KA~@~5i>k#%bobz#~ddtp9m z(2>uwmZx3}X;)Pdc3i}HRhvn~Y@(%RRq{^P(0G?fYXqswA`dH6%kaA4xt52lj=e?4 zFb5h2N}Z&t?G>#Vwvn1kC2Sj7nZ{V?rN@3#t3*j{1)xeO8T9Iuq2<-`ES+ba*s+lNry{0xdq+t_RmW8k$>jXH3 zrAfR(inK!Y3yWH%1YVxcyP@Gs$;T3|7}E;sDS%4I%*1lg$3Y5W5m0506s%e4nv8+{ zuvRihx?DAq($3S;bbSN4$1Z|9NGmL#6QC)cYLNoH`f8m6`Yd*}jD>2XcG{sqV;-o< zSXBp&DZ->FT(vcQFLXeOSDN`qXM3d!gl1<+m84DUyE!xkqB^zh>7~DfDd;7SMR7E~ zmpu{zF9hBhV2DeP1jrhAo%*JS76=Xej(*|j!18jzEDII@hGyV8;7yk^Go`v#x$jzFaM{RT^%P z0ysW)Lrpy`aw8+?4iltPh-tOVmg`|jRB*Ny6{yH1En>%)m13#mxJ$<_$yypB}Y!xll45Mk&s8nU3v^Gq7U_v+P<8rnH?c_O_9RT93 zd(z>eCAwZ#MLCYt#Mt+iC#2MhEOwDF)^yWgd1TbWNXAlUGxph{3lAmPsTWjW%;h?W zSM*vy#p<0xB_rzOvBxgd236>&i%%Tgpjn*KmKt7Sm~AH%)T!Anp@GNCAT9lfwsn=U z7O6lzNW8jIy>Y;njXnFvTj>+4iCy7Wn6NZJ99Q!UmG@(~EXF@u&vDGc;A!lmt;|7< zqDd6fib-EQ8Qd-Z;{amDs6l(@_gQ<_?VtSp$_mvr@DZb!k*u>324kN#uqk1udXHt04~E#eVi%eMjKMq( z8*clp>N}J^)+?s6%p(b!2f3B&`MD>49GymNQtl|yiIj0WDY54Ea5g#l_#;Vc-iD426^$rUX!9_wvTrA=(NOjBgf14nQD!e|u~ztPz)W#7BXpR?bFmiL4!p))$FVmrKGBfrMQW~4Yied zh(Zo@6N}2zN6OzU;Wp@&jlw0P%3@GEg;b?HPJ{;&eWYW$(ocit$D))>Dw&qYZUn7V zy9%(Sw8uK`0Qg405eZ6J8-O4qjwEeeuq(;OC2XHk!w^BooD~A*N&^Ls3`jofjbyN{^s`Ti z!Xzu)lENm>G*Fm301(aEVx*gJ#n0BSt(qkYss*`=T7j&V!1&3fH;x?N*dNR4oxGHWqQuo;R5qc!%+tIqVil=K z9Y$OHrePJSj5-Qc5FTuS>X< zJXXyT%tKz_cs>bR7BWIfNybwDF?Rid)sKrL_R+um}R<&9hvm zRfJ=;AzDaO#ZJr&1o8UgGAu`A>4&H}3b;=IsE`|;rI^G8G2SSq^-^vFXxwaDG^0Y*z-J=k*pi8* zX`nXoEAX*)Ii`c^nwPIQpL;qn(FtZrFOo$dYYllOBg^IEa))@M$x7s=X9B05OS^Ct z2WqQ!I>oTYyF)bPl~%_T)C`)Q)ou({6xY;{`0pZBtK|$aQ<1%v@zOQ&%oI$uK@u9a zAeZVg+wtxYx_(h_uQS)D0j$BIt~BtXsnuA(W5<3AYFP@5hq#Oq$RMhGvMSCpD`= zdS+SK6(FYaK$n%%BAn{UD(r;fy;^pN69;u%u^&rx!AmoYNaKq-_JdA-_ju0`;Cqd< zY)pa>f6R4biG;(_@_zZEX8;PA*F^kLq+0-PXE_ejA z{PC&fv;su2#IIOu_o9mdv)VMQMY)3SADP9l z7D!t~z!`Lek@A9dk;n1w5apz`DX(IMyBRLf#7#^aadU5^5`~o>^--m;n;gu9)N%aU zZ%``Q8V&V|P8wspJEUcPjPwdCft{{9wq*cUf~)9Keq7!|K+chdnyEbi+oFh^IAFjU zfMM4uf->G6BIvR~m1`t566IM&YK>8Yxn{oTILJWI4AP?1AyVQ}v(U2zUQk08HLk$X z`g>OVk3GTqBovOsWOrj>|+c0;+9g&+k8b=}aq;oJ-o;(-F8 zp)kVKGcZZid282>RRUi`4G@s)a__8`Tb4%}FOjQg(d_O3{L0FmI@U9->@?d!i@SW0 zd*)IJSovD!1<;X0GuN110pz6H4vlxrRLL`uM4_S(nn?yF?E6M7EvM7HGic1Sgm`10 zGo{+HY2%wxt60DLU$1%PlMi^&eH){1IBO=pjNh+$<^E4NY~p|e4wyJ6zTg!Tvwksr z{aO$GSYe)38&yRUl_GnMce2tnJxVL7aYa<>MmhDO4R1=5HCIoZv1`*y@zvV47q`kY zFqv%t;)jPgqZ?*o^SU!m-?kp9psKbq*GlpX&52pQ?xkBc^~X8=X=?#a7Fz2k>D8>F zNJ7T~+f=r(&0IVw#Gh5*c|8-|dsDq0?^~ZW>E?C#Xz5jXBOPyj=x$y&_sG|6+|pZ) zS3K?KzkMAhdo_N~y&Om4r>6%^YG+oMR2u=VH2LL*A`@$lKk$~H?fS;9|CspgS8RLv zwuv=s)=Zp)|0Z_bJ#oUs!B2iN*7x884?Os{5617OKlR{)pZfH}5AFRr{25PsI(|Lv z8HXSFtY<&#$ivsJMW5!{7x#W`nEuuKkTp*^_~1hhIpi6K9{P+U4}1DyM?U9w@as9x zea>@!_c_mb?hElAyz_<6d%<&```i~i@0ep=_`+k3nST4^7rQ<;ap(bSCe}>szh>RU zeuu8v|IjtNzA*9Z{!sVFaHoGg@d^9w|D-if#t+Tk#_RXn?}-OK`H2&2p4flEn*H{F z!V?cY{J))AK8>>DUi-E``}4nBr=Dhg>W=?>`e8>a$J-~!>hB-MTMwK4iIX4Q`|hE$ zp0oSA-BO&#>0vDV#hN>|AN7vE`Ij4?wSC*YAAQM}4%T1#x_>+K z$`jAH{b@UQzxnp}eCh7bCl9{yd%yk{dgOP1{^%LO$3Fe+wMSg*6#w5%XCD2k2k!n! z{i^aE7i6dZeBF7UzP9+~)eryb()$m&>AFMyksN$%|BEkAe)r0WQGWcJAH4Oh*S+NM zv(LHXbFaJX`}dx4(`7Gs$vyEuoO|GT`kf#C!;eJ2ci}V6IQyy%*Zus;x3lx^KkJt_ z9NXOfM(^*n3)-VEdh_@q zrlZzB^W0m$_3eWvf6jJpf9b0a{)0zvx%{x_CEq#s-T#(f^T7X}c**r2h(4v8hkf<@ zOa0^i<(TihV#|wvaoi`?|LP5&UHh~@KI`TAx9|MVC;i0@Ka3te?-hqP&%5nCXTJSd zdZT#gq5t`p{6|-q-~Jy*zHI8@&yx4P<%WBI;)nlq&iC&<_g{{CQ~w7~__rTi8Nc_@ z=N)tZInREhxZ{OS`pOm8zUoCMMIXHIb^1%reEyyPn4R>H6Q?v&H|*+wT6@SB`wrHQ)S$=ijNk?wwa3 zefj%-=B@eI`k&u?&aR1M`JdXHe{|x&8~@=MCvRK#kxyRq@V~$RC%<~&7vH<~no581NyprK z)=~AtkL*7&p}ThmUpV904?OzHgWhq9|B0K=_`#14{qno+We5Go#Ka-WnVWw2<`-}M zzklQ3bpNkD|J8}FU;N8^ZrwF;rLyg;AGE)CbiZHp*YUs`@7;FSGhcDWS0B|r^N+8= zw_ft_XYT$+__G(Ba#a0lz1{KF4O_nY0{7L=zx4}0{&{}fng_q|l^f`_H+}ny_r|Y2 z{@PoAN+zCs%J+_V&dkmES&En(--uaGWK7H%$*FE!z%wMN|_5Yr9-LbcAe%9}O?DmU) zcFeDLO?>ZK|0SF5_>bTE?;qK+ao5D**M0YbH{bBJZ=N?1{L?MpzxQ{yweP+8-yizn zPoDU2e-2NtZax26_Wo-={FAhN|3}x{{f@uC=L>gU@o&imZ~oY&YyS2A?2C8bcGrn_ ze*QyWbPl=5dMLf_kr&;2rv69ni6@bDcYpbZyxw`~rr(^e{pj~k{ra_6e8KYq@JyU)J! z6TkV#=U;eP`ou%;ihg~~9ar6R>S@%V^QWe@%Re}3l+_q?b4KjwEn{Li;VcODVE`-SHp z_W2`DiPqhI=CR-T@KOK#(TRztU+>+%;Wr;S;*-Dg)3?xnKk)V6JL~n=+;r}PU;pO| zUkBxQ&Q(``{F;kSzMY@+#^3voPp8TeKYaEJuD<`wH^2UnS3PgX>mU63k#Bk5u89lI z{pslw6VEI^a}YiK!3XZS;QT-M-~YP*?Qgu{tebYe`@b;Ur@rWe7aT;7c;xh56Y1vP zz5L5hdD7&Th{+v#*&p_IW{ut-^(!WY?1`J6@4oNrC!T!jtM0i){zLzx4pp9hm3DIa zt~bB#uh{``cgt_K!ce`H&xwdylyM=|BHK{+?IA=W7!`dFf|A|JFCW^}m1m#b>?y z`a4fOr99(|;EqH8=6BXy^P-QvYQu#WfAB}%sb5YXyz#8t@3`^{ho9Gf(8*tY3?wJbG}eJZ@p&n zrTcAZUi!5Yvya{Rw(Iyc7rp12-yHkjE?y_xZ6AE{-`%_I$%p?Tzwrm({OR`7-fw^G z^7s9Y_}){Ff3JJVvEM&!=l#!oZgbC%e)Ydz|4C@$m!I>mfBTl^?EPML-6xWtedkBN zeAdNZ%dXpa{c{g`wExAYCcoSD#|J;_;xFN2KK-}vz3#x19@$a;>4`T)JHC0xR^{|x zz5n44Zae?*d+**gamY>QtEZh9T(#~4_Z;%kYWKvS@~KN+f9cL0U%T(xPkjB@vp@T+ z7v8Y-&?_#rKeGGonpvLtzS@7+H+vS@t~Iaw!bt~COdOBjb6aGGqKJiJtmpuvp{VCRt z9thJ9yY%D(9yspaZ#;U?{u6iM_l$~r_xmn;?aaqcOl-nGW)2JCp68c!MrA=n)TqQS zl_Vmj<@S8=^~!q6HJu~!p{Ryp^yGHUxlcLo$0KUOJ-qStyLWwFwK#Ri`f73VmB;$| z=5^?cFOJ=~ar^e|8@4MOaw#@a(=<1}{Sb>V z>NFYj!v4qhe>(lrB+TNuU)uXA6nH<5u(lU0n0twF9udFrL(g4rpS^kAn*%Eog_j9p zQq&dHf!70BQZ4Wdx0X`5ajGy8qzy|!XsNj)`_=e=M5j&`Kjx7UUt)tcmD0Bjg#Nogv-s# z`Z1#|GheSQWZs6ZC--_DuG9@pW?PAsIi8CT-aXwdoBCtu1$1mrZdp$^ZQSDJ3r zaO3m?p%|yXM%c?iKc6eT45Q79(5cq$jwIE!h2rqu!)8{K`w==QfTMxxf}k4Amqa!rjZ7C&6f0nU%xr_ISUVR%WF@Fv6i#-^~~7 zxZ(diaP6)4-*W8(xBbb^%P!w}$=^PB$zR`p>Dzbq7xlppz2m;md~)Y||Lno@-nH|x z^B%bE&+zAt>;LS&TW-7m{U4ux+2q8P0%Je!t4gDJ4myp$2K#P$-&Jhv9t}!P>Zt0HHxN!5TN2LjJqi5DFo9()LMLfo_?OlM}Ttt5%Pv#XJnilTs1qcL-}s!7a)-ZefIqDnVP1C@k8DLd{~}8pcsju+%pLgMzlGihwQvwvRXSdhonIos{C~@lD-d z^WANu{%jtLZ)4wl#!WiVW9a*+`yG1W58nQiiHURZdv0%M^Pb+0u9=k*Wkw-ACOIyH zHbP&C7kGVdN7L3*jT&4*(4} zdpb%gyf#rpsJC$y27q36ECm^O9r8WfD&DCkRt^_+G7Nk?99x$U+f(M(n|70yOy-FBf&r{oNJv^b#8TT);NGda)xAc zcxmnqhaBF9!x1lYV>f4Kc82U`50U)v4<|sN08s?QihsCIb+_YW5hO<9#0K(w=c_uW zSlz6yQ{AiOuFhh6hQq3^`p);g-+O)D=XHGW?n!)?(fh178En)W{`Br}Jd4p664DUW z?i6bm;gnbV(!|r{yKK-&x=N_`WJT)*ew=pL$Og0fvt@KF)RrK)yO;C$_~8DX;`ZxX z7fx1-8mZ6P{pS_%nq`_Ax>jQ5F>e|8Pp+%DpkH`Oi8t7Ztxwmt)^Bd#``zuMcc*-{ z01^*XW_n%DHJmJfg_9kE!FKxdfA!!y$97IF7pLDSK7BCdt2w6|JEoMWJ&r)E0>u;h znBJJ#lc7a}r>2%_>+ze#$!|~jY9Tjti|ZLt&KMn+VP)O1N&w11p8ERHt@WkNhex+h zeKt6HZ_2lG9ZPV*BAxZE6y5wru8BQF+jauV-)6^Mhg0;p5x4Ffy}J42)~;`#W{+z@ z6ar82uhuB`JPp`>lae@XD=5*Cm>$_z9JaTj*pLu=Qp1Id`@(R6C#oC*5Z5AK* zakCtxlVit~1Th5^I?;@zHyO$9cY=H^>VtP5A=kC}aDC_EO0jf%aOwW`%7bF#t-;%? z#f7`Y{kMzjwFMX{+u7uwL$j)zX-NC#fv&T0;PNIb1VO*CBCeNPoV>F54M5D2xi*l^ zHLoM(k&b!ijM9_xoae1rccf=~CC@OD^@*{NbkFIF5|Z&e8SlFTY6*>31KWEtakn%d4B~ zcW~6yAwr6-c;nsT#GT^A`^6_m|Mo95dWspPBTW=N;#p7YXdZ#LCypp(;LvV*7J^!- zqtWW$D{g;MExF0HXF8$N&2r7^O9qoL8S+M*s3V|fW&Ula+Hr8{(dI+4u8Huk$?AlJ zbz{Lv`#=rjV^%PSZWl?9GCNZaaIVFZ6Faxo zX|B6Cy*jx5@ve=leF2W`#FEBlJ;sbOE0nRE$n1osIhnPa{pc1^T>I<)$TbOUL1X}F zfD+$+GiwEif^5T7q$8DLu7a8tD8@549*^-o(*n4{&Ra3|9Kj} zK2a5FcK!(Hxzy>HT@O8Zdf*0pkO`*W$qul`TNiI`uH8G7yCZ`rQsERomO3mLsB)hb z@>J^entDIA?c8+$R2BxS%Yz%YhL*mR5g0A#Qkq+%l2TkakF6h^KDWJcd-LJi@C{2B ziZ^af5hBqJwSLzMg|rt3xfMEz7KR9CRg40k+bOwweDKb7x&UaW?a%H|i?I3d9DD)z zciXFP?OM__4L|L*`aZ~F*ooLYmg86pHGxZG)nQc_=gEq}v+hHgL!t?as%%#V^TfX0 zS}WF;r-uz7GbFWM&QzE<&jOU+Ign1cT|!GX(_Uf$A`6*kYHygDpRIeV#rZQc?U}E| zJu3zZ-bU%O{*T4sA4zQ+#b@#ca|j_Bd;jQm)|)C|)`sl+4A+-XdCaSC9D@rI!41->;UKzAlMcDt1%QJ|;4_ z?j~4mnSsdForesKsgY>b& z%;UGW9_#t~iprA3)0tBz#1 zCw6)aSm+p? z@xD}&Q0uJ&2qwo_LdbBTs&Qe+>xSZ_AerlQ39;-<*LSoWzTO|2QKFg@hH2*t0>(Py zy!(v!j)}h64)112daI%41_{QUVm>kcdL^^A<57WeE+H1A;mw3^M(R$2uJBnb0IU5AFZH1nZ%)fuc zLH^FM#jpQbwP#J#9hWDnE1H=fIG)FPo~NrFOkoV=$(rZ0Jf1zI>X$XB@M<-q-K%$j zWt2!{`2=4lCAh?oR(&HevamoAas}_+-o9BZU9N>-|GMs1|H7yLwf`S4EI9Z%th%mD z>bfdCVnvY^mDY8C?}eBCu&wJpUv*u2L=uK)|M1jx$DZlwP_V7*;!;*-qpj=iE-ANl z-P&-JZo@dfx~=OH9QtnermgFiqB0em-_~^-G%~bx-6L&Xw`p8jr#c7%qpj;sRYz@I zx2@}rps;(x49BihTh}$l-N3f4+tzg<5L5F}q*t@-aBb_lBxaZ)N!ZqP+q!Pqj@{OE zC;K!;8LPIgi*Ag%0@BuX$$e?-y2HMhS}=yS<+iRnPW92CirUt7$;E2xy8A)#4yUeL zSLX#Q&fK2f{iGHM6|0ZN(PDdK`o(VEk(E^TIVSG*?Ve(*dB_UstSFK_ zHltYnX7TW~m$z5m+j;xMT)V+&imc0moA>*=XX*WJ%1g1vF-hay7(1f%-`&3T{&yc= zEg>cU;^?tws)K29;I!9jxo5j^U(flj+V^EIvqd(P94;05-AST|XX)^2SI6Z3{QHA5 zr-_KoDfhC^uv#u)EOS>+7&#ObL+XpX8qNy(+G9}>cm?M=VcrBum20bf6!aL^@;a*7 z*WU2#En{b$b zP5Q8mfo)1=U!A#Etz3@6t3vJU46d(kuimdzYa`z)vm+tZbucDc5g!_Xu6lhI1E^m$n<-k8cuEs=}VT7UQP($}pd0aNPY*F)3tzWey}Tk|+saLlokn1x?S*vrP9cq{4=lqU#*dAVC0^;#S^j6-ejk89_x0OQ+>4l_`aTXC4k~pPY^L1c3i88 zoFb``q{=F+!d#XPJrqtD2LeXu*^a^4xz@L%j-yDE%6DR+(|LfNO?EoI;E|#MG~x%I z=9IU>9;51FWaVM68;Kqp^+OF*l1)g-s?CvVZyPPZAc3UJn~RC3p`+AZbiyQEj4*k3 zvH0f3=KAfyjXT>bAJ7(J%*`m?xK&(vAIgn%tuEi4_ktkxu8~qmXXb zN1ty#yhs{eFRr398p}v zze94Aqa|aPac*1h&*xrBDvEz|@eWeH!!sFM5G>w<< z(RM2A+4jZ;TFjr?^5t*h?vmv{z3X%*o_hLnOCV&$^5wlhVYI>1H-I%5tqYo$ZmRnj zXv7(UlKG}&$&=Z##v3pu{G_|SJa}B?!N<3%vnO)%;FCSib?e&0;=-h$>^jJ)j#Pzj zkV3`RMOE#&LJl4QmQ~Z#HDyhlWG$KP8Ea*XjmMeny!mCduqIAA8z*YtvLZ18$!!#= zk|%Mt-0?x?_H=@@;j(sJ>Yc00TQ`nwe|8fBM=1g}AHIQ3LTvxjqO(dA?&Ws}pT1Rm zxdag`u0I%D`)qLO0hQfx`NQuHmM(1{Jpr}>yn!k_@K(_O#LZ5_)B zI2AOOU@sjx^Is(+04nuZC82(h5>k8uhC-(sc3IKm1HNk;HhR3B{w}(^iEW%bBSyiM zVx>A$L0p#mZx8Ms-+ofFL^iP?ysSh@Kg;x72rM-YBsI`6S~xZ)y_fw~#-UwY=4(!_ z&Gn<3kBI)GORUbX$>LZG!wLF=m-)UFDc}r~%*0P*$DGVT&9peK7Ad+WI1WTVmjenw zgEct!9+Z6L1U6O6b%Y~xDbthEDB@#PRD3f~5>K`bP^3@4G`mil6C_2D#ymn;x^i35 z;Rv_y06WWhoTTZgud^Bh-dHWrZG`H+Ax-iO?7OpqqVjSrkYE&pTR``8dv(27zO-}n zCRhim^QYG9X&s|Dffn+77hQ|0(J??4*zNVT{$!xL|5{WYEU=a0pn>k-^asT!Z_&LX zE=RdQ>Ou@oKY_NJWgWmy{N^e8vn{&MK!5wdzu`1wxepgm)U%-5 zNZh2GYgk@!{^mF-ZF1x(MhpIQp1hxMX1x^raSQOkuDt?sQ z>g91MgeywIA}qh$W8|QL@h)z|jXga*#*y7H4NR41axT@mUS@*2UYB#DH_75K!)nni zKgMb_S}on#V(G!w-E~U9Oy{Ivv6~y`Fjr;z0tGh8<6ghVc6?P&9o6Su!}kPiYD1la z!7vIx4nN#$f#8K2EP?Nm405R!IKRSVSdU3K3}4{&j@!4$upCKnFmlOnx_EHQ^K2~( zbW?{DeO4|bDyj5P6Iqpwh~=Y5k3-#7luqh!R?fP1h%CrdFKCxSS6G=xp|`qDm_Pk1 zbFBy{5ChrvAW4%*Vr;=5hvLLiacZqv*+^&4rhH^fJ?l$S zzvm&*+_U*GwtAXnIc!sPiQPgny6#{9+Bg1wwWKD;C%Sz@X4F9Gb4;%4eLDabpw0t7 z(|of^YW$Hlq!$4HtS1>gEo99$j+J~zOnuBzAtt#KCaP~3JQopf{VBN9{z^s>>yM3t+Y*j)y?OfQ_?x_553Vj=PV$~#-mZ+xKa|U${sYO?fYJH(@Z0f$5xXwcNm zFxW{n-)!ruH;u%D7r$KmTYvBCUn528U;lOd^Y8rnBB;@KZd@50J+}Rw*9U7C=09zu zB%D;rvxE^PM-8pe)h%9E9jmG1Ho2k2^0_jP`@3){53sQe%$be?hn?|pl4&Lw-E^^^ z2zgUuP1jdPU*Jo|4w5qe-F0%)mOmWIXXy-WuYNK3q-5DXlwFoVr_}c}!^G$exd$R@ zj!S$+j=6)1Ev!3ANX5w$2if8j23_gcCLfs~%$9W4lOUWtcv{*hgsiNEARVm{|8jfw9{s5YD`->aUPgQ7El_#LF zP);qryiDIbtc*PP1QFc!`7e;Cp$ZI&p;&o@Yev3|x*hbJ#*N3Ql)JQZ>pMF)-or<4 zzkU_z0HPJIeYtg-l!dnMorGtHKhQVh9wW%!>-yFw%UhCQ_Kg=VwJf4}Hms*`9)oWoqPH9y0>(Pa-O2`F?TCvn(Fo zEmk%lAbZh1*ZU6uzQZYYta9k3$T4~|)@(tP4I~(wivf~SmD`PBy<1=29=vgRaB;mj zRlD6I5!g%5k6s&FUdY9m!4+T{m5gaaT$0EfCc?S9hAQsAJu)M3_3<2_6_oeF+))EL z6O29=cy^kpeMT@%WfCm9|C$t89!q;8&e{PAW##%%En~FC$kVPQxQW`4l)z`LUPtZ5 zjK#6G(NDQ3LlLC;-BLwyjLMvr$!X{~*UC6qa~+elSgYd%Xr7TAS(EK9&j3i+BuRl= zM^;uJE9&qBY+Dwz#*GazDr4ITJki!iXNucbx7O~_Hv>daoH~i97c-|RYM^?skyK8T z*lDlT(k!dK8Dh$XV8^~KFi|h^TwU!s>Ku}zD(q9?8kxUSdbcE%IvRa8L6O`@csy0Y z1S^m9=%D=DN#dT~&pV9U(3>P463+{@VmPqy2w@ub{Z#jYoX@yk+EqBTf5}~|vGAx2 z5~+3BiBh!;FCQ7UvqT4wBg4aacB}eO}d-DHiIu8VW3m& zrmw!p&f>~5T9V1g6uWFMMh?#o9l=cXsFO9!FG5f`j*-VM)#0QP#Kdzni?cJF4G7vd0mFpLkM@PF z4gC2!{l)5|iSB*$Ieujv*+g(pUtT7aDpbqY-^3W1?I#zDYwzHro?5~1Yf2m|-de1@ zhnmsWMS4>$2X^1+4M+4^wd6|p?5d6eGBD5 zx$h=f;`esV^V-MGtTQj!R%&s(aM@L^X=9L3gbFu^B{OYRD0jWSh{ zYqv0!qkU+YN6!GePa`#0nu$%vVFDjb6(MxmnaH%Q1$)h-$2wsp7DvD0DJM zF}n6-FY`W9Pt>V^TQgEuM-C%rh@nq;&p_m?>%GYD3wmfdayK*0hB-r)lLZC z!!oiswu1C;;Zl8Fiz?gM$Y<(>J(u+{J4g-s9Z%I21~VH>6uz3ewOAg5@!6vqA;JRO zkmCB<;L7S;E5l^egvZ56By{g6ab%kSTeAH=v{FNdo2*Q(id&c)caF}A8`j4u_6gO4 z17=zU6b<{C8L^%lr&$*Fx(VM?eUEAEFHLOafdW4+u?!`bIF2x6zcwf9d_~ZexoJghJe|z)sRlH~C$^|qe5i9uKJ3DVZ*-KkCRUh>I z5VIQf<3y5_xu%6W5~iiQOdf|_f$t$sZ7L~}z$o<VcS}|Si(^8iA4jf=d*Ank zUMi{ma1uPfuU?V`m1k?cM3a~l=C!qc4{)xoyLeWElvHI*8i2cx>yVcQ)71E_DYWeB!5Jm@@GEs~5Mwd<}z(rtg)g zVuF*Mk|raq*X?^Y+Yc=(?{^#GK5)k{kRElJkqRY6?6O6R25&U7t90q^d%)(lY}&rr zlSHqB^pmJXg48j9;c9#jWD#NJ9t%13A#xH0AW)ZT*zIT`2fxU27t`}ZHf1cq<9kjJ z!A`1DobDPAw!hS=3O9CP{w4?GF<=xAhWt9#j_JI%iF6|SyOvS zkeQf`UJlVFn}+n=(JRB3Xqx8s>j-qo?>@N#)J$>gD&7WY3`SU!k2?0GI048&{gwEp z!SeFNN6}f<^a!SJIG7)Jm_5NTTq^?#vKQxFH*z_?@rF;x4-KG(aO9f+@sN@kow{C} z_?!TAF5Dfg-`f8CQ>s!hN0zoq(#@cMx!2mKshZk|37i~>T}DrI#Z9}Z3Y3{`zp7!lnj6&38BKJF*wG}-mGhqNc)dP)CMDi*Q$`LN#)L>DV^y?o#U+e( zLyHex@*6MyJvVq2=(nH2&tHShU)(D3c|?kq-v*3}$R$po!bG9_j0$CO;ho~bg&kbi z+xPH))M9We7RN5i{HG!5J})~?VAx8=2AOD@Q4BD&A2;j{z;pBHgRZp{1%^RnNb%}m z_zpYPQ<1m4Zl{ywBIBl_)wLYNZcWv^!b_?;CGS8K8~E`k=mU`NmUiVog@X+qn+ML9#js`4d(J?m!KU*kLCJUhd~^35)=Dt1`4l zfIAqUM%`#lsnSuBnDslZ-ZOfdm+NVgbBLoGUO}E=SX@<0D4keN z1H+KSrpL@PhziDPs>QkG?UfZ8T$0_piGJksfW07#IAkg)-!Nrqk|(QihSmaC@RNSp zVK`g0(?n02mV0?d7P-36aD=X95w%K`6oPaSAY>ZT!5P_na%xVVFUFu?%tk(*(# zcwo4&T$0{2Ux)Zh1+{l2fR!4eeODy&dh%0ZT}O9#@u^BdC3ug{5Jrf#Z(W#X#=*jN~PHkedd2?;0v< zaHWadI0|U&1go=aVnR4yl{;zAbsbMg14c)`aUMF|*lU^w!OEcSDigA+=rX#v=3=q* z0fJ*fDx@!Jo);Qg>V^TTE^EksQpSZHglykBO9hh(DN&g#uMN(g21(4$d#|HfvwaWM z!ZOx__x)g*yaC(~ODFNWm1q++a{Aloa)6P=n~_vS%SHX_jmzY>PM#aQ@ka4rtyq0H z#s)&tvc(NlFi(rJj* zztRF18;?=FuZ%FcWh<|ddpC+Ms9DD;Y<_uT`#YB^V_xOr_d0}HtkE}b_+TFQ^N2G7 z6>VJLx)%7X+Z5G^0q7i=cU)P@6JKm@yoptyhl;GaZ2l)VeuPV?Dg~s!t2CM9_Le$e z5soJ*CTzo=u3Sdpc&IPdE^e>hL2bEs^F!n)tDV|@<2V5J$Rxas{MPix zOX>tM6R}wi6i27qu+IaA4J5*2C`p96r1`#ta?x2Qr_kx}cvVg|& z4)Ebvi5u<{n1$dQ7v*yHT?h}LlIaG0UUj%$AN+Mup!jO;r%kcy<++XF0k^MQ9h|wj zNUBqdgL@m#Sjb+Ph|z9+FJ7zfC))$9r`rY7ry_vIT}!mI%jcnFHdllI@X56&`wjFD zCUYr4DHGMy0ty>oLNJ769VhfUY@gGb);&d5m4$Jdkon_x*3x2NT>{_C(X0~YnW-lo zA?e!9Uj6&?it@T(VGG`R|A2vpeeqa2r)qpODNa&8{d~QBT`%FJoMmQd)A9yoXvG@ zM6|!9g4XRCks*S_1@2>%skxXog$u##ND5a6$p8x$UwoS)TE|PaFhEpdVUVuPMjNI>|{b7CAQqO=uti$$Vo?jM78f} zI^UEBnd`?MU@@S_=0jBQb!11>ZW@d8NUy@xj&Y-XCpgf%$ErdfJ(vUSxSU9`j`|r~ z<&MYXf{S9Y%yXg9I7WY#q{mudhJGawO|Bs;b^4@H)lC3Jlte?xz}^wdiqaG`L500` zD`(vF&Gq%c>&vwMa0q)XDv2EGt^(oC#aK2uiSc{=sINCIo=r+OqIUSY$=phX$zq-d z_CpGIt-Xzy>|PF_%1#rDylt=iSmvE7J$k7ow`8or1Fr zkraUw5XQSE*H`*d}AdrILl7*U%1B2EGgLkg6RT=s+FVu;m){ zK2}!88j5K4<^Ziug5PH>CePAT^ApJcv{UrrSOik9*;z3tobZxR+tT66u6NaK!!^)5wsJyFP+1K%vBI|+{5&Abs(U3YGA*UcD zyGT_6&Ol$nL<<7)`TPX(oD@w*v!f&%ashp}+_c2`&Jh80e%P(+MX`MkSUNXua3O_=*E zEMUFF@zad!rTd**w#>!0868(ne6+0=(+&DYo>X3K?*QA2F5mN0ZHwJIqCatV% z7fHXsC&vL9AAIN7Udx=Ow5PpRD|D{obreN1mU zaQ{DevU7C4k&hCeiLr(2o(sO<*=`o6c82U)*brgL@GRl-s=&>=M0k9qRBd7k;-CcQ zRdFf-K8$o40#>3?Q8~Jfd5LFtj{h#`ZRv;LrR`H6qP-4)$m%^fIQXlm{1D|y&y-FW zKuZ8(-s!1^RW6d+ zLCa<6;zXgzG8A*)cCnL6b+c_xzL?;YOqc! zGSG9R_)>}})<^|uF6V{gQYA>_yvv9-j|SMp;j+vzOs=sZ!CJ@jf}{_-yiue~{PS*# zb}h2Sw}%rgsHP_R@8N4ZS5ML>!{C|fA*gygg8wF6FQ5Q_x%SBp`dWQdybXX52tNge zlT1s{)JU_?TqiYV*90Xts4MErLFELT8e1Pcsh+8R0{T#k>8p|T$_pBNS`eR`M1HFl zAHnc~AXiY1H+@^e|L#e-cVRP+TS^c8vJm?;pGNP6h zXSca=66%w}n8%5w$g!3n%>h2+;fLjC)ZQeORO*tBRNLS*l-(&*+3>4$qXySMq|jXQ zH?(^hT5_b3sRN3aXgBf1-^1A@tyf3y6sPY|hidxu6!O>#saPe-bfEgBN$l19$= z9L@w&X_WR%F%i40!}?+mlWUtsUjV8Kby0kmG-8398_VP31^q@u3a3A81E8{0b{-IF zhs&Q+@u2a{PyqLmfN7efzISXt>U4B15OhXx+z4EJwqgZ*5;ZoLf`rJh@~n@*q73fe zfx8bMaIQ0uLbDTK{)^6uDH0Wqg$!)!p;5G9@r&U>0VMI2!*pcmHLpIRvkmF>g5ysB zdnK>}K2OyIh2xkHVKHs{r@dAm4G&tnh!-}HJ&@Uh1Tsz^io5_(E+(>9b zMU%x^u^fQ;j<;l~ulX2d$L4yk$44%outJZ`8@oSbO+pPmpsoszzw#pJ@xWu*{_GCC z9%5){$XDjh>KizMpy3UK2>kX{@WSFOcaFXbaN&?j@9S=oG(Cvfl%HtmUCz@2KL`*i zYogLuRW}kfwIPEJ8W#YE8E4Qru{5DjsFoSmJ9DWR%(!P9BhkSh3}SOT1XXm(r79aV z_8Bl;c)SJV03Fq=(L=Ygr^XofjKVxv$xxQ)DjwG~G!qc(z{h&FiaB-)el#6qH{9N` z`w<$1Z13_Ccvc1%KPUFJ%tTa*hPt>kydSddlzIxfVB)spV|Uipw_YPySjZvySn7t4 z48v33TaMJDLQdYfbcO0Kd@Kzn2M->C4Uy=k*N1`I_ePF6%=WP?zSDI)SV|F~*3|I@ z+ehZCQDZS9qQIck#9+IW{N}^k1UOULO6sxfj6!C@bcE5AmsfV)BTVhXz-Ap|Cs%0Q z7MFgwd854~dj@Wp30r&(4a;lD769Q(KaCv4-Q(bTCo}OLEbq02wLio9ij?&ujg2xd z%e77}bih9v_L_1OB84kq0(zz6c5TH|J#?cdBG_yySx;_kuO2HN6A~thjH3cV-9p;S z%KhqBk+J+$?YF~(_P~r|Jn8=7EnuG?oG3|RkDjIPz5O92$;T&B14);H6b8|pH{L;x z1^feq4RDmjAm@PuM|l_&B{IG;N@uv&w$7$Sxt`PSqo9sCWg9J2(S5j>j6B^h+BCg5g*ou`i54`VHing#+`nF`4q*_R`9{{b>afJ^s^_KH`$%xKp` zH$L`!aQX~pT2iNG^WmB4J1L;Z#kl<}2$1r#{FF7pbt!NisbTvRq)wH`*E42z(bu|30&z$+|;S>MutNKJG>Ziwe6 zowZ=e8k3Y#sqb7l2inwX-A%$UQ4qm&oc3ki3K%ZJfIt^W{cgYUls2pkHoD4*?$Si0 z=24cGN%wu3y8~o&2(2Hpsh~-O)hOOPhvEv3hP2h30Kp(?eCOz265hn6ORy$`cOMo{ zUK@VG#wX-e_*e8VzjF-D@?mZD7?2w+5!NG(o$if$r$35LbLQo!l4-~$Px234KtblO-U zL#s~==ecaIt>FUGckXowrdhhZUYnuoJE6q)dYb74;NcIL#1MN*E^|pak(R|k zTEfJM^el!JD&;`h`+wmZ|64ndcJ_g^&)(t*M}2bQv}5@wYKV4MHNj@hn?~35vrbRx zV-md`#GtN!s#kM(PLfQ!Nvi?~XV?a>bp$!da{-ez!9{J$943)W!b2v$f8K$#6YHQT z@m` z-@5hj)-}}C-`Gnt*49<>GcNQsThuyIhuB9&i!D|0t;tkk(zBe1D73F)0}akcx3-J>-)Y9^6~B?fOCOIt?37#cPEPBISb0TG*# zsf|+VGD4DsY7g@l_PK`7ke#u`QhyK!UT*1d8vD`%!qS5#;ff7l{XCgvRt|PAPGAz{ zX^LQ@qCuW-^v>cmtnMBC0DUW`_}2Gflf}SMTe&=1*qPX50GO>!NY($Q}6R z*2SBHw@&O_y-s`wkSdP^og@y4=pP+?d~5hj<j41YH90$&kY+U3Xkzf;A{tO4e99VR$CIVGfGR`j#@8ioe>T_MHp_1l9l))DLAE-sb}z68o|WCxdiE{d$cT>O>5dv)=b(DwuXwv_XaiU(ir zBN-{iBX#*6*g=(k*9iNrjzQlT^F4{FYPjm%t~<&nr6wi|E7v^?-A;mo`3?kx$bI=| zyn$%+l}9^wFCh^?N+YOtK$?z&Rq+9duuguvD7k28MgYZ?VZDTAB~HRCzB(K+UPg-8 zK+=j^ekP^%uap_Sl;$9)YrXy8HT>tIjV*l1_OitJnV(%G38YWoqB)AEzURRP0k&+q$|P09Z0AsA_V$$?y7S1V z4H*rtAH}FT8$T;8&Z|_j%eOL(q5gfnN-HT7SKl82h|d*RXM`EY{jw%@Ox?$r%_)JK7HZ=51l_FO& zR3C}^dG0{Hp6!(n##I?f%~P#OuX}UZ+bfGO+WRr<%^N|Y**N@O-V-~rV1r5?kNi@) ztODe=kIqwWRWw;a6&GcO3d;?`;X=!gJ_lqchAm9~`op{ATv2qseUGeW`9g879KLrH z<&uj8j!eDEhD!Ky6h9T@}_UDXAhJKG5|J2B?FIL|&< zK=ik6pwsVM@y0D+KcO+J;z5aQzKZRxJtN{eeEtS@0sk!h(rd#rSiZ3N{K715`%-+5U_%-k}V;&c+tQIFPgO;LF+I#KLv}-Z#HJTUO?T^lo z8~fJ1kN%r)|AmEx`}lcwZtRstxiO|pj$t@GdQ*6bEt6ya^v{a_XPX>*9+P9`IRUIz zMi7-x@JF8x1f!N=D7&z>)BTp=g2p->v7kCCrjw?IDiLY9v!^H#8>}EIEad-JFOpXYQ0g1k?v1Fhx|KXm$b9!j2)kdJde2#l5ojHA8Yq=n9-31h(!bfTdu@tJ2}X z-OX6dq9SrCfJlw8{t!yPjg`3$Mv#@f<2r`Y#T?qCr}s3zCn7fk;{GO{CRvk+Cbs%u zNZIYeD)9y8S{Ft*cV%1m!vIt0(*VQK5j;u}2k7Y>>l$Oz)XEG{ND@G=T6J_g^1-J% z8$0yn^C|#?bqZ_y$p+F^r3ZBY)dQ&UmYj(hrka(hGg1DFMDqTm8IT#Eb$nIu-dbvVy z3D;nz@f{q+Qq>xpguIL@8O&Y138PbjtoE%N>`$L&|1GaDYEGSYuQ4`@ z#w(F@<2C8ZhBc91*5g6{)bDXUgg8>>hdlrRFqFZcqz&BPH^ByvO*lJ%^FFT)t;Ob$ zO6st2ZBX3?)i3I=zVgDp^4|v4ZBUJ=%tQ8yWE!i5+y>PoEzt(m=4`4(XoKp*XTNy{ zw0VYdmLoU++<(*t)vr9aLA4;#;qq-z9TQ%v z5Mw;rpn88lk<>@OALYn8I%bFB(A~qHtDhZ)fTGTLiLRCAo_aSLUmiH-cPyAn@FGc_YP2~zVQ$K zyFa;uczW{?V`_dBQ-c;6d@yC9`rrQffA4>93)RnQOpV#oJXeyCv@!Mb98*iIB-UKY zN7_R5D=+X4D<&P_T^-SrA{GO&4Lu1=#hn~Jy>A^!0)_b4$QY2IY;Ih~WCRemR1sg3 z3NPWGiN$U=?diU%xopSMFvvsX-NyJhva&I9Z`yYi+X;=gK(wRG?Lw)IU z0Hv{PaI6*gFVH{l1(dFRV6>zI*X2sN6?f(Y5OekznIBK z+FVYMW>#S5P+;GD_!-u|SmMLWW?r6;k#;qKy%n&Hr) z`6}q)uHG*|pX(=BISZyuf|kDYU~I7zEM2u7)59Tsz)!tvaP7(9+Jx2qO>M4;WDOd|!fjJT+Y~WVDZR}#wYerM=rAgaZj%YN z9Rm4on4~QgHPiqQ>~2m5&`@=4cq%_cdpEb9Jp%2^KOre`9RM5G6RMN3?^|! zMs=cQ+?7Z{kd=)M#BONGriD(mm22rrT+f`b`KF~SY3WL4XyB#GjnZb zF7>P<2aabB4+Yj{=31=RIHISHLR+j?i}f0pjM;J*hu2rwX66o&tLM-%bG1A7!B~nz!UpE&<9V=9f$r z8bdM@3^ScYG`%n;$&n~~ot#VAz-1$ai&)X>$3oO>d=?U%3XA8j65_inO{LMv11SAdTzv^dIp+h0Dyvts_)=K9B5pRI1)TdhFabS@qpNeg^7ezAH#Wqqau zX_VEI%qcqmfRLy?wP%CtWQG*sP4a;@I`U z^)<4_^1}!;y8b*2ofr;ET{&HxAcIn;?>pNKqg=`Rnjo8^$?BP>br{Z!rN)H13X2)F z)g-yy`@Rb^P9JXQO48v}E3aY5Mz!^19Q@H^Lp1!8TgCDh;|GK78Jxc}xQMa94>rqJ z>AW_)hn!Y9u&_E9?8ErTz3M!62{1j3z4mN2^Ubp&S<07>4G|IGXJ5OWA7T$KA21zgOox+~2>WazEw%>Qd zpsS~O?g*|U3VF(8tlJdwKvIodJur0V=;^_k52}PC9TVM*z~dPy%NYiH{JWnx`x`&? z7Z(;(@hpzs?og?s_m@UJ!$#c9DJLDKYDzZTVL1H4v!e3&B3=h_!fR%!HHV<`51Pe zfYi%gfEIqfH+^n9)4H8$JtM77n}ct2@MeQ-Nt=Uzesb`2%CpR!PtU>Eh#ka^O*Ak*R-`f?c}DN=?>RxS|%V%WQ7-iIHg^rcaIO=xxTsaZn6Af@$l^6`ZfHS znDcVB3+Yt5ey(`qR&nM1?I#zuZ=EGCUH-f{dZoDkHeN-`TKT)Ho9lNrAD-LXc!KoB z=KA{P##`4%Llh?){5l^tVxp8uH{oK~;pBKyIK?bLv6w8;f1I5zGop0U5-=HV2+LO(P?-jQ{ z!LRKc|J}_;OV#6J1L@<_aW7|&Z9Y0toV~Qyb5AP`O?&MCT@gPMZ2!Su`Kg747w~gf z6&Yn%k>MCgR2e#I{bzsr_lve7^L$oh$T@MeL|BC}oM9Wh))C|+&jmA3T*tI!&Nlgd z>W@hpXGWUE){BOxCCMuPr0{*W;9ql=)$=ujhiF_}!-dXIqhJ zD>7|G=0H^4by&!^gg`AJ&}z{V0^NVRB?KxvHDo34xQ?N8bxu!udQanfA|GU;+SE?B z6`8go(^h2M$+i~(%uiAkLLJc}1QVv+R%F_W3>^zH3wh796!x^&YQOLBx*}ACl~lDV zceE85Qj?&~AbV9N>LWP3iVTi`W988i?50;7RiK`y3QfHaazE7ApeOTUAS%2QnOw)o zZO&u0h91XQ_MKFwp1lvKqiw&oF=r9#!daB(_Nqe_-#SYHJI`5R>i))``5#{T>4k-# z#m`|Crqoekij#PjRmxVOKUn-L|GX_sJ*R~!PLw$Sr^XZh-;cr+$EqSP)z+daVOIcK z>$g)YNYJi_p1#$XCkB*o(u?pcmP% zy!_N(fGltH#+R!v0bgGAXMA}R@POoJT#g?l0mfui?u`OL!X&A=k zw599XeE4C-uRYzTXlKZl2#(#Re;31avHFM*Jb&XCetwa1kOO`~xyfPPfjyza58GCu zJ!?6kXvT`CdYzuYC~gqP87E0v>Lg9ooyahvRC%sPBxZ5z-nW1S0ulQ5sZWas-z1Fa zEnQbI;&L7Rd+&z$+NW+ORlGG=T^@XVi(K;&zHV^(9>v$;o)6vxliob!Dpub2-`{@*b!HqkEV?e2$E6(444s9~L#Eoi}M~d60HrF>QC#OmBosab_mU+kHOs5y{dMKiRkZ?R} zH`Lx3xy}oGHKy(e>B@U@V(Zq*=93%a4Q z<-4@)0h!L?!6&4#@bT5{C)bc4p}mEhPgXFV5U*l19%;`zcMPq16ec+RVHqb;I9qm- zr0;i4D>J>&kXeW6D2*Q$tyFZlI_)zocY6EDsjc_V%qJ&drY4b~=p9G2ea{s%rDt`! zs+BcgnZStRNOpH8o0qN?>uYp2VX<;`a2*Yf>ky{zK3+27Fj(w{`gb3nCVRWOTs&AN z-JTCl(zlQ0qp4(7(cEB90$i%>Bb?qN7HiSJG}imcKc(Rz#o?AZ8Xd+R!O^J>D`?xw;@FMSn|E) z0>1nB>R|O^argN4>Sy@ys^1jXe(S9(gX>4PpL}ysP!@-0MLSiiqZ@t%CUm|{n_I_! zt=#?F$a)Q~FOla#PV({{`mNJXg4g^o?)TCdg-S_uc}rJ1T3<dMGVvI zr7U5!*j6H74^EbnSj*s8%QEJTk`CWTXNudG$XP61+CF+>_%X=Xl-HDq?Z&&bp?RdA zMrl~=!`A5!wl18+q*8P}(+}EfH>M$(=6&q|4Ze4;{)6}aaB*Sb5AgGB9K}}_78br? z?yg-B`?QT{vubxC?r*86h@TQ5=L?D$IXA$!YH0c z7zH^eSyH*uYpH_AKYAF&Q|l;g;|~dpg6Xq8L$~;@W-30bNs8t29g{K5xRLn*|AHin zoKRWlBSQ}f+Nm7J-Q@=UX3dU3+`;;TwA?w%VUQB;d&IC#E*0TG3n%6C0ufzzO=S z+v{sl;KFeg9Dz-xV6NjBbF48P{N@E>6-%?eb^H<8!_!A$`sq#*PvHLBgNt9zzLSi@ zdU}#&2`9u->M}x-gldls<9*ufCwk{cJ2|%4lCgpucxmZL&2Nd!l`c+vj@c(w?QnDb z{Pxka)Tu5`d@=N502VAogFN5J{uQTJ;iOEL3q}uhu?sXuhY?saO}lJYN57=zH|xR} zJx%3^9f6kvHj=GR*SFSh(vjhVw@&O_y-tljf&eP$aC%D7C;q_jnaZc9W3(%YpZ*ZC zmDmUryQZ1@t|r)AY=vy(F>JG7@mUWs6qQrU#g|LP?R(@RKe<6jQ_7W+HBzVX@m0KG z=dCAuEq0n4QQy)-s-}+~q}EI2Z1xdcbgnzf%dzC==+8;APS*@LCXBKqwR>i>;CHmN zv4EV+Nxw35oWDT$@-Ae4jF1k&%+Hmr3yZ%Jc&{%0lIvLrYDzgLBkT9t?0Q4xG*104 z--{&h&vcEj@9J?N>5j(CrCF*~?+(RQA5l$A7Iq0KhRG=CZ2|a$ZIQi}3>>8wuu-IHUzjg5wiXj-@rIVi`5ZPQm3c?!59ii`e zaB_Q<@Y>)r3+RFScPeE@KIG#2gQYKMz_9(`H4?4c*us}=FH4-C`B`9+9t}QyYkT#J z!6(O``kn_HkZ*i;wIaGk@_dv~=;^PTehy-4N?DNfR5R!+n$_zh8K#q)t`g044r8Q8 z`$!KB(O^gi?>-uwTiLmOlsxB+JJbjhZlf|N9+ZOjtY?FD#ZE%gmefdR=q988VCNQs za$92 z;fylb>uMqRiv4irwwcituh)cVl;AN&x11Q=Qh2JJYgTIHWh<6F#$rMX3ArQ@BFL3! z_r+!mTBCK=!gQcvF`Q-bP&`r+#(88X9W@b@kn72^b@1IIShaG;Xy82OzKLv-MTY0{ zg3xn(wQEYbt@B#sJ9DkD-nThtqf0TzB?_MjDbI$6o~csgYKH1_!U5N_z4F1hD#LXz zsMe&{y}9hoXuWwONHiOV-^+VqM;2^B;Cut&#az!*S?^uOhTic-s)0&Z>JCAaom$@9 zIA3{xM427EhxU{2KE5^*?BTB<3AO#@YsH17oukL0*s5$2!jhqp`Rs$i+G|8Lf(dQp zszLUM9DZ@PSpKxql;qdTB;hFevbu~n(S#Wl)}cunhsTx6Do(w-`RM%M+qX)+N@(Va zjZca<&tbViI9zD?(WHfDYaQvaA$uKtDw4p%x!%4CkBqEl`9g8-6jlS@7%9umM>nzV z;=Om^PE0%!wO-Wwq>r(4ilnV~U8*rJLbYX6&O36J2VK?m7@zF~nVlH(U7Tkh?9SEY zts96=hEEEONewgBNuK5QRXkwn%9S1laUDK?1G|8KmVW8AVfeXxVe`vtB+?`&b`CbY zbf<`joVaV5x8)kr8s=t=%?*+ai%Kd=t8$KJMi^-jhcC6mm#k(z$4rhghbNjg7Ya%bozQ$&cl{_c zo1%(X7Gxk?T_SiYDNTtiwpSh$2-4e*s@bP_^Ss;RVm^@bzRd6mCtHduGO80bORYl7 zz|Z8x8uUej$vG@p+fmhaRJ9#dB>S9c@G6&OkR4pE)nw5z?){rbI;Dm0( z`ljvnbH>k|X7w22eX|@A`6Gzwk?kiN$SM;b<;E>qwyr$!W(O<@i6=^?V3=%I={j=E zb^TChd;Ml<<#L5B)nD6DMYAu{QqkXw*XlA!OZ8VGx_>x^FSQ+2ZAX>5=LF2Lg2Y(A zOl1R`WTV=SDvQjC9|Ee{jw2p!l|<>h`0(D)6=OW!jFawxf!mai05*s#<1Q zE7A18mt(_pJR`{2zTJ;Ifyy*3kd!8AyvcXv(blmqX@^*4m}Uvira8z5=;-Rbxat2F ze`#UiH}P{=I1aYLai}7r(2Rn zGb&pTraKocGw$qsf-N&{%Z$tH9XYo+j=jS>wjJ3xZP2I0Gk_ph^@nl%ag$_Ai{mg~ zd7)*-o!yePIF1&_(c(B-97h$d3hl^7jC&eUe+1xCc#BPfKA>d#z5(w>XX#$3Z)z!I*)P(&FaE$<6h1gpQ=7D4KJgAzH~do>Xk1 zBQl!liN|(iV|gvdr<5^=$BbJwmbN$!*D_}^(H!QVw#>LKGj7X_TlQ$R%(yeS^*^M{ zxV6K0h&Ya_MovxAUO0{>Id8BVJ9=M?MAc#BUStUw7e@?ZSj}j*2n&Ov@?uSSM4RIX zFU!~xi<@g8Tm)Mfn9c{toPqPEq)Ho7!Igx?1fuhZ@Nf^Oyp?~s`S{(PqaZ$i0E!pn zXTbyt)*SNTw=eCy_Wp>mhOi+|cb7z-5Fq9X7>GER4Z@J)qttf|w&{4-$;W-_DJf6o zbZM{g)RO68sz%#D}sr%Z$Jv70=V* z*RTHNlP$#OmFE-UgLA^PiL$}D%9;Mrvo@FVGFnHeMu)UeqmZjY#Enm(uKwJPz;4(d zFR^l%3N9b_(7xr#zASoP5omMQqMzupv)b9!eVict+r_bHy-U5AEpic|*`AQRa zyaoDnTA&Y^c6H@_!baJSz-|d!hP>tAhCV@f%Qqi>29Jg^sP7f^)kz0Qjzrn(}kJOyHG9Arv>_u6k=I* zX@NdF-@^P{GDxY~lX@86@!!R~rBYf}$$KzD~ZmQGR_ zGYki5M_@ngjMn@d51J^ znjn{OA%q%JGfq)4Qx3gc>~8U$VMN}y*Z%sE|MX8UEG**Z*|^I_>R71Mu^@AjRI1~b z{?zaNf2}%xUe&Q6a%@SE@_kgtx`??*2Fn^rkJr^=}udZm7!eZ^Ke?aRGDz}MpqK4YF!6NuvvJ{o++>O|%SjxKd= zmF@eUALqPhi-{h~VN=w5eL+gAIqo|)+4w)k^k&meY}#uFXm|P>|H0c|MnAH!(8JFm zSvF~8*?3MC8KJan#gF`SYuTRDZYP%KBtb1(B3rjRh95Zc{J!#X<>%vXt3Si%Z=%l* z(d}+6+x|$KI+J&JS&{mJw3hA4=GrwnEp2e)&fwU4#qD#&`J2VPGZolkdXY}(3Y;DU zw(cfT<|z@UbU0Ve84L4#{m^u0pEpfTWvu^eVwmzQ>8kIMP5md=f9enZCG2T&cs5n8 zY^um2Q(W5AU;ELO|GSMApVMfO7a2zQ{&x_!sjPjN`r2r*G?=pj2U?r@Tn;rqJew+T zyjT|^Cv0jHx3_IQDSgG6T2H3=A@ja=fSkZTyq9eL=Rdlz@N4)vq?~|K`7a7ej1(F1 z`#<`#t^e}e<^*JwmD`*^komgR<^&oRYX@+me)?~I=l}Vi;XwWV;W<%it0 zpY237%IsM-pKz&b@Q%TylB8+A;3$e^Cygt33a?V&LAkss{39bTw2tH?A@M}X6bzH? zDqTm8Ik0x>Y_IP$Uxk8c0DH2aSh*FynpnmzXR}@hFFUfyo1KFXyy025+4&Vy^mh+F3TR*n2a2-E0=M(#h=s3RVXu03dctMNhF8WFMxc@Q`x-Zh9 z>5?jmU;$;t(iQ%lKY8rmwXSdjSNNG*yw44CEZ=(N1&&SnQ8(0WUDFtk@49JfOG=c) z<_nAI)0VzGCmDzJ6nd6tbWWB8Uh*8q>12I5Q;e{ideT08yGa^nMw-Rei-xBq$ty2} zaR&n62Ifnd`w}qRFJ*zQd0Jpt`z)o@I-6@}z+|}Veo=X!d~tuM_}c0(rmy|Ug@xb2 z&$EU7m4$_cZw!&<$;;d`Pl5_NGYtF)XrEJQ_Wa`?|Mh>>O8Xy~v}5pqp9q2!a&F9< zY#@bQi*qE8htZpmcEa1uNb&@t?t3HcUf6Msmtwc$fGu&?I(SJHRk3d8nvmvkL|gUe z=e?;=*mAB#p@G2&T}F&@*OYW)AFcJYN|G5~5;&Qg+?=hIqnqnzDs9ljFJdw) zWK=cQRKeAFKgc^mCk?%ht2JI3uS&EnbxcFinO&O?j}AV*H5}Jc4w;}}EIN*2^WjAh zt$^5O^WmAzhqpl=4tmz@yT^dd+I(_jd-d3NA78DWZMRRwOTc3Ba^DYpSyzlsnDvx? z<|=+uY!>!b0)T$xQ|+R%pn{0e8h9Ks$N1b^TW3DTBEfyWb$5O6=DE#{>sTs%+vdaj z1Y36cDB+MP1EihTHZ~t$E!LKcrOUG)6J-~BA9IC%38~N}YeQB@9n&wE>E-=dpp{VqA)7CPN4-=j1gtBReb6iQ0 zQ(1l_Hb;K(H-GV~mAE#!iroL--j~2Nc{Kk&)+$!3wyy`ZR*jy3;X$_)BFqKVg1R6y^5c`H#kbGP+ zC1<~D-aER!%hb~&^h)@j&@V-hv|r2-d)}-%9R%3wyN_-ic*#%b-CKHjB>412qPOJx zlFUAUr&jIRBRG^W^zi|Ht!xCs+L21Lu_rlM(dYyonr(&PI#QG!9|9VQ!u5GEnXcTt zYTb}V2XBS5vY{bqEE^h$VMnClY}sr&)`sh#Y;0;7iBLRc`fZ3kO?)>((v3dhU0x;$ znT0;bUZk9zO|m1C=o(f`8x1y@GrK~EE!2dn%dz)mHMz94z?MQVi5FJ8PoAO2NLmRnxEo15VB zK4IWFu`(4%74JU%71SwAyigf;Lo5MA2K3H!klm|S2pD(|>?0r+T%HDkCkjKfvZoOd z)@&S|gCyHHS>cr>Ac(O*AoQu6`j0;7dgb-~fCqv^VnE&liwY!!0b~F@kdOo{zuA(< z-fcYbUV>vi>=Jn5`vnP4`~tf9@@xzU#V)BxG7w;r2(Mjy-x}@fCJs+RvYiM{OnaKG z1A^j+#1XmHEC)xj(h@dEwT46YZJq+3lft-P-Zfi1eCHB`XCjBRFtI2W2V>2nVjUT1 zBpy$(=OWR7c_Ns~^9mdSDZ|SF+mukMcLV^#>}_Iykr{`v;#kq}HW;EkoyH|NA?zJ! zHgq0?sI;U(z+r*QRj=&R%WHwe33kEC)Ig#4r4O{l5yM1d$yB5r0fVvOArYVoby1C+#U8X7c}NpJ*OYwQQKT>TI8Kzsumn?e&MvM6AjU`rO9JrCA*mEW1l$jBa6 zcTITXMCG2Nf{>`nm`i{k2!A;V&JU7D#JuGk5U~Jr?fHIGq99OwhX;%pNPJio@F6B) z&$4r3kjY3Zw2eIj#i6qabe1h=>(v>WVZk_NkV){?nTLPh`VwaoYOD8 z+ablgiwf?ST5%4@_o>CR|C~p!o36BRuswh5Qq`K`>vW z?dUngyyJNC%J5#T;QysKH?W2f))2xPLU8_pHH0oKV5qd>aIC{S6MLntkdx>1Ta%9;_jRHH1|5?Efno!U|2w?3+M47(J+lP$3HTfZD4b z??F_L^Pt!T6S#t55j_gR*wOkOu=C)*(Rr|EoG@Tplsm1CjDqkZTxE#}B&yHRL1KyS zwd0J0b`ZHjv&WlJV}x$rqwTF&2nxoUNVh?ANNBVjkwhfns19W1>=tsv)T2L@cc+nV zL?dBEcs%LO!i3Qf6bs70Rs^MZgfwvpFxLVPMu`z&;n;jQWaq!sh#(#(BtiaW>B#Vi z4>=h3wxeee{1+I6#z=FBVKg70P$+EQg`RirQt}SQQby4yu@0j*r98fzH)Vg^VRST< z$9+F%?CbFG`Q_o{fffDo`uBPGT+S4rdmJNrH_HCN!*?uE03O_NLD~?>?*YzE?_0?q zk-+6H&BQ|kM7&(6Ow`N4MOSG87vN3~u2V?1C9Ti?Xof}Cf1~KybEQJ+_TOu0fwv`@ z(9u9yAuBZZDK2`r;h>7)h)u3+K_KhC`c`^ zq^9U%I+Bvwb)%J|zyAz^v_Kgq1%fo26}W{0!gfg{wdtQ%y@4gQf2pL_cU$Nmmek-I z$^%B|gKsFm+m8Em1+b(BOKShDqz2zm7H=4`r>9|59Ktu0;Ty^!{|o+y3g@5yL3Qz; zP4m@fehxv?K^dk)h&1sa8V~Y)6C{ZT^(V!?h7TeC)b%kuw8-z zk~Wdg78(#zti}bGwi!`VUQLjzm|3g2gS?97mFheOM)TyD)RoBYh18h9=6NFc6rz?52r7J(-*<&4LE%f$c+uFH~xX(q_ABc zPFK{Id8EHrMsKnlI9<_uqm2)vdIL^Z)IZuVoUVv$1A<(_>53$Yd4Qr%@s1h}PFJK5 zo9!baI;9z|iMRj)k)9jAV5G!eRUi?8!AY*@z?sacO!~i86$nxlqIzQ3!Ky$_k^_@N zW^!bsILZDE;;AWT^MEs%!U6ku{-sy4D8$2MmGUrt| zlera>!Xgjskt3%3|41hD^o^{|AI@a{6$C+>?YInUrWMtmt;v!8xs1i6j0#aRD?hx! zXzj%DUyldho2a*LwFv}`z7Ij4Y#sLrcxT%4&#WLwjjp$P<>p=IYD*Z$=5nnbyiQ9? zYP?k6Xuf;en`J3Erh!|wUesHBSZ_Usws6Uo)sI{Ku58?#`)Ss9vrk_g^`+6c$qN=g z8Wp{6_4jJa=J;HEskeIE_-*5ff;|TH8FlM*GaEa2&dtp_LH;I8-sRB5P)b{IcU3?M z7epl*SF@uL{JQHj3%c_wCO8NRHSay^YI4ii_55Y(w#G-Jp|QtvYrYS)*nKxB!13PiOI#`i zvtD|UFnqe9^%HZkTE{}hLUFz!wkp24(Cw|h0Mqwts6gM>f7Uv{tj+XH zZj9EWK|d|g15LKlbFYlgN>+1wai*cEJd8!|EcAkVJW8xCD{b#GD|8ZIp}u6PHBEk1%mn zvnblMGrldyoH2HbNZUuJD=wV5*f!Mh^iAt6N{TCWu+Ew;jK<|K2a8IR`$Th5LfS=o^-3? z_DgGyPZ85`oL>4Q%-j4arq6e6Q#q9pw5%iwW0#C-m^HU)vRZd*eW2StJv=+65 zW;fj(3AKUGgF<&VnazwnGQWQ1Q}^!$h6@Y4Jer%`EM4<1g_iBQe!BH}LqxcP$HP*u z$z3lf6V7up`g?-wmu>|&vMI`_nZuXLuE{g!))!7ffd{PT`dKW9yi+A~S!e)$ZS zCDcOe#lf1JCeNU^oN+E&0A}de`Az72^%*7g@$Sce6Hc!_u`|Vx-I&mrlgEyvtP{=o z(jtXJ{xTJj)^U3!ktE3a-XlfYIL&$iVYpRV=R zNgT!2eYB^c+h}^Y#_F|v0bE=^hBquu=HjrK`~2BK^NC-c-^KaXn1 z+kdqX_?oHhDyiMAk=i*MR*NR+>@MBCWqDI@Y24l@{h1kE%?;T%mL=C-SbO$Ow{gCE z`)JElhW8nVvW>AdMz&x<)zp|pTi4D?A~)3(qBohCPH^O=oT8yqosM5xMB3+dy$EUW z^z`=PZyDAm#(??s?0* zmb;rV8y8EVc8WRtt_Nb&J|9TpA8}wRYciS20R`{ZrPb&ZSKiW_53~ zDjR~kU6O7I?}b`67E{dI9=%C5iJ`thvA;hW7S$|_+FFuWtin$`czN+8ut>UhSKPVS z?zP?h`NPor=D(!B}t0L?L}$*J<*Bo)GPI($wys@$QG`p{w6w@=3DE@+ zrQE+x3h(nu16o?v$H#mviY;o2Z-3DiJCU3}_cML`wUVpR)4aDf$51X{35h!*(0nb6 zg_jmA))zH-9`#vlrjklOhDD+zDV%#sK}U;?|mvQsH0*#doH(K zRdj84{#q>m!Kp=h+Haji*vUzP&Y;D@Zl4s^PgQYl9<8~*InFt{q+DQN+4iJiR;YVL zMqWr=rSjoFvZ9CD#-nVV7OS!<@byz_VKtzM)(4IQcn+zXvOU;XZ5x#984nafhU z7^Wq;=eoBW#WCH&mvp;6_uDAST3Z>Oc;xxDgx6`yehr|KjwI`u2gNs4ZEm2|uCB`t zj87=jd6u`9aW5t*lw1(K;@B3obgJ9w`;Q}oNEX^TE>8LS<|n&1dgNwr+t?nQcZ%F) z9I5M)WA0Ft+F^RiJ(<@*T>f+W+0G@D&8o#)Uhku+{XVUps;&OEk;`^DtUno6OF4CQ=U8lPSr3jzq82whK6%{jsaE*S6ccSJL^7HXR{-K{J_Jw~zv^h$1SO-s$+SQ5S1*}?MRi77(;v##7* zR?YWBI=sOxC9iH>F$Y^*M(yKLYc46sX7 z^{Cl*DDbTdyDRgp(0O0k^>gR84wUd8#J9K4% zaqf!X++SSqOP_`)K8W*bd%|hguP>VPV|Q$5*BX6BX4^OD{1dqW zk!cy36aDKoW`PIqrnYf#KShbswgm~DTKz)XMlreJ{4V;6!xnZDK{$ET#HXX`UcSYyS6xNTyazt& zZiSTQ%+BiTB^6zxeO;SWCssQ?jgDj*i0UX8nzF+7m!BxC+!^1b`h$D)o4H(4RoqfO zCE&uMuomj>q};Auu@z@dgeEsN9n0AHAbi(06CZ~gbkpK$*9|5PkF8H^Dg7Zo^XCYz zLseA5r1Z&}wGr+|pR9Nuwmve(v+${weYUa5Cexaqj|8UFN9ESpX%Ht|@Eg@*8<9gmH%UcvXiknmb9Wm9G`!(HR)4!+ZU zE3+uWl&^L-{3dAo=4m89fV-jelBrsBmm{OfDop?EI>G)@(XwmpqlIVGW8?C#sV7g| z`b~%GTDto76!%7hBWr!slAi~zDnEtWYM~jsr3Cp4ar-C(dZuxwOW3vBuMcb0>Xo!E z-8?xoPd&LpP#BP#X0T*`C4FXRLw4Q$lgXdymBf!Zaq4_D=h|79>Y~7e3+Xm-8$}tl z=bxQrq!C^6UeYp!Q!HE81$Wsou07kmpvvN5vR?9DuPxcX<+?Rv%68L7e|2r9!0utf zkNogM{3b(s;3{`L!;(doop}o!66jg%FAIG)ikc!zmvqxA?$2wAdTJcwh3NdXCD81T zJ7RgjEh3&vO4-ZYV*0I*?o|83kM`DUuK7Oo6-jmKsj`mSsj4c}@}RI8sjXaZlSoaI z;3p@SSl-)g*(}J?ERVt3x`@yjw(PGiMOSFlUz~sQ?A2=8y)BWno#=S8ru;7!JQ#1D z8d#9B!aVUwn?;2C{;ytL`E_ra{V~@yud^3g%)WQB`ML4V%}F*EZdrR@t%?)gawGZ| zc}M6QKXBrXe`;K0u!I)xQTE)wFz~=5j_c&c%gp2xRhUWRw9?PyK3IP9e8a)$&1Rpa zPYh3qqZB+zSldwjrZ{fv%+Y_;7O$-Oc8N+;IwhHG=MpzvL)U7P#i@Y1nGF2Z$QOJ) z?HucgPd%SM*v6ge+8LN$OYMv;@Xt-F(5;D%`!rmIw?xICzIM%B)zx5nVxGKqd-UMX zt#g~&)X|Zou2E~nrzzm z>4x8Oy#l>*e++sX)l7bRJj9~Dsx8R1@LY)SZFIpbQdNj|ZR#PTLora?WIe-sU2dLl zi@YW+bzNpM6Q$qT{K#^a?$+^whe7+#bWQN`^}n|D>wSLVkl7lOO^!f#NPT@ouqJa2 zEhU86O09C3mnVv^tamjwph1Lr zFc&+`cLz8lt^!}28w-w+2Yqul*BlMesS19X+^Rcy*^1u|Ss10ZX{mSQwt88(K(~ML z^*<8uTdw-@`mlUYp?}Y@^?_zev+lB1(M3}=2yr^(vNdIH)96ELT@}tjt#J;z$*=SS zI~$_h0$r-zGT(NUA5u+jfcD%0*jnH5Cv@|w_Tq!$J5y)(Aal&y@V;^&*Y%JBC2cM&YIhld}@1$GYS+$DfPC9RU5C zUvytDdD`d)XZ>;om(I@PYx&<4oYY_!qHxK_xSv6+i$#<4%BTy2hg+9awTufb5*c(8Q#G6WKQXC|{&^uOo#oy;0@q); zl~C~``hN7~u~5Oz;-!4IOqX8cshci0@cT)3;=+1c#9ot&B(>IwO zaXqL~r6D-uFb=xCB93fwlWSRa%-#&0fy0=2J*`t&)EV;T=As3nMv4Hp^ zKdo#_ehaw}{dptkr~an;vf|F1K+DsO^IRclLUgikLg;^PzSt?M+uLBZ!1!|`QCxXL zo_gCRO$aK^-~kb0Y|UG1pN#SKtvSMbJ_#wWNpXi9T3u7?4pb7M%8s_%qDdL9sZY4I{XC87xDzNYZ&s~S;7*aj^DM^u+;x+&;pb4Xo#c512aS)CkesZlGS z^NL~wzdd7XWw_|%#)7(MHSN`h141`7YP*&>uH?4O(kns7l$_1YvAxBdvB|qfvlUgr_SveU$3NdKX@ThR^^Ivto7}*Dedbyipoo7+>1)@F zm7}1aMz5nm&@b={Oapixz{>z;1w-V79lCd){Bm!X@5>3m`V8rtR9iBe(-X|MZN?bk5QF(j>zTcaVb5f1 z&*3^Tm+xXwnKt0niUnT4yUV3tT8>8A#p{Xqxmt^`b8Co)e14Q^@S@F0*D z28|)03H`e|FnvE3Lqdlk){Msy*=QP*z;Ys^oUjC*9gk**LXhpqLm|b$m5E7#14*TD zNCFm(L*YPRv7Q@iA3N7%Xz>9M5C9y9B%-lM0s&7TjtmGM(F1}*VDShf2(v%zv|p!(kApl%b63z?F$dRc?agaYH1QrX`eF(eO-=UE}KM0<)oorh*HNOTk$!$oo&hSJP| zE9)6Cag2PxlaN>x5{n<|>>Z@Vf0Gs{8VAY7+t^##*fZ_Wc1#4DgryUBc+^mM{UDWz zX@TsyL<{2K;BW-uP}%c`FaWo}ii3k9F=#Y;sPz62h@>X~1dBj|SZ_mHhaUn#Nqd4t zU{UxX^1Tm%h&f6RxxhYw#rC9dP=1^E5C}#J0yYV}Bu~WfgGf`kBME3M3e^*>ari-` zsTz?4914pVA#zF6Y9Ilz(AXjFsvjB?X>dyv0*56cMrd|Pug#-CXj3F|hyvLMdLmgS zI3gZF03yQ3tVNWRtDsPLA|5qDAX2V^LJ_eD!pIB>O3GC*2s9coLQJ@qsQ^hFfklr9 zd+g;Y2#_=tH$+kB15>M)r65sAz=KDmAH5s}jRGf^ky-4$3mcrr* zI3#w6Q*+=3_h3l59tMF#pol{q(+_}1xgG|A`Ws@-;2_dH0&I0ykOOH%s3m23XdD_r zBo38(58e+c(?jDhcp_$GFr-Wm4fZ*3x*ri*NtvEZ#_J)-YJ<~C%JgKClMOqDl0pba5NsUr1RFXVfuk^}j%cI<-I~rF z3N;6=?C&;{L$qR1khUBug5t!(SQ9W*BArKa!f}Su%z-QWo6W?dxIiuEKtmC&Nmf*v ztqq-I2UIOdXoE* z8XFX!3QE)U^B4<3E}--nta_h{2ldF@5LBo<7-NO7+bj#GuBK zf$6h$=Du<^n48Rg^K&X!uKthI+bg!;`dIgjJz#~nfg<1jmta}+wSVvv$H47ZoA2TJ ze)>P~l&v50k=v1C`^Q{tHhDjN^7hEqKZvDq(D^^{i_&xNZ$E#ZZ2cc=kWg%Y<;t>x zw(+B(d{CBxHPH8S3vf?aWA=v((~32J@}*Dx&)}-JCnziWss(?2?(?b4$PP{!d8?8{ zC8UV7>OVK`FlIrJ9VpszNNs23kOo}?@3l%QLa8U8*p@d3g0eu7hsusu1`5dkind8b zsALPT86{p|yE_Pq{7|)4$UzOd$mNGhVgOV`8o&O> zuNLqiXbvdyovN#sMH+m&(?E;QPYQ-BMJV6U@ZY2V13}k7k?+(V+c7fpZ}6SteRd&5 zB#r5gS2DpYe*}trr_Q-3gCx~x$XJIIp)Q3?jTeC&*#c1Hq4EwY10~gK$k>P!p#pY1 z{-g@PyyyqDiANzSDu%Yfs$%DkbU+dMW_Q9JC-JJ z`dkc(JOQh3Dgz}|b|Cw#Mv73LX&bH{n+`!Ht)Yx%NfC*z@q%IgEd*@?MZQyeNy;Ee`I3x%NfByA*;1`t-+_Y;DDqHx2b6)5 z@+BE7lOohE1LKn(0LG;s)Kb1OP*T1mV{1}`icVOrGj9w8%?3q&sHUYW0oBWv`YcY0 zNE`D_(CAMgXc;K-NFmuuAoX&kKD(15lGeo2DJ&pT&_R($TA8l|QZG~Lvpy*z-9I;@ zKmibxir>=#?X0b(O4@_lju;4+7Zf&EE<5U$b7lKL!Bib!9t zjeT1TQ1bdAY1S!$B;`ml_9#UpOFLKg1)xbd2a0^3I4w#bNg0xiRZ0;lA#x38KR7;m zfFh6N`H6}w^#)gIOO`Hhpy@OEC?c(o>D(s`a3#+r?8hjBBxOi4rXNM93QfxFn}EYc z_uJ=xnV}4nlp)C&fE1w~Pr9=(VKfBAf+A19FbyT3qzqlg45Wy3muBLj0anw(ek&>i zsRWXgAITVl6p^kQtsMRRXAq5DL;}i5-B3dW|NRd zTFO)cNy?98Oht-Fvcc)(k?{MJK$7w!8H14`lI*<{9 diff --git a/assets/server/tomcat/Lifecycle.uml b/assets/server/tomcat/Lifecycle.uml deleted file mode 100644 index 19d6433a..00000000 --- a/assets/server/tomcat/Lifecycle.uml +++ /dev/null @@ -1,27 +0,0 @@ - - - JAVA - org.apache.catalina.Lifecycle - - org.apache.catalina.Lifecycle - org.apache.catalina.LifecycleState - org.apache.catalina.util.LifecycleBase - - - - - - - - - - - - Methods - Properties - Fields - - All - public - - diff --git a/assets/server/tomcat/ProtocolHandler.uml b/assets/server/tomcat/ProtocolHandler.uml deleted file mode 100644 index 8210b959..00000000 --- a/assets/server/tomcat/ProtocolHandler.uml +++ /dev/null @@ -1,76 +0,0 @@ - - - JAVA - org.apache.coyote.ajp.AjpAprProtocol - - org.apache.coyote.ajp.AjpNioProtocol - org.apache.coyote.ajp.AbstractAjpProtocol - org.apache.coyote.http11.Http11NioProtocol - org.apache.coyote.ajp.AjpAprProtocol - org.apache.coyote.ProtocolHandler - org.apache.coyote.http11.Http11AprProtocol - org.apache.coyote.http11.AbstractHttp11Protocol - org.apache.coyote.http11.Http11Nio2Protocol - org.apache.coyote.AbstractProtocol - org.apache.coyote.ajp.AjpNio2Protocol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - org.apache.coyote.ProtocolHandler - - - All - private - - diff --git "a/assets/server/tomcat/Tomcat\347\224\237\345\221\250\346\234\237\347\256\241\347\220\206\346\200\273\344\275\223\347\261\273\345\233\276.uml" "b/assets/server/tomcat/Tomcat\347\224\237\345\221\250\346\234\237\347\256\241\347\220\206\346\200\273\344\275\223\347\261\273\345\233\276.uml" deleted file mode 100644 index ee728d8c..00000000 --- "a/assets/server/tomcat/Tomcat\347\224\237\345\221\250\346\234\237\347\256\241\347\220\206\346\200\273\344\275\223\347\261\273\345\233\276.uml" +++ /dev/null @@ -1,133 +0,0 @@ - - - JAVA - org.apache.catalina.Lifecycle - - org.apache.catalina.core.StandardEngine - org.apache.catalina.core.ContainerBase - org.apache.catalina.Container - org.apache.catalina.Lifecycle - org.apache.catalina.core.StandardWrapper - org.apache.catalina.connector.Connector - org.apache.catalina.util.LifecycleBase - org.apache.catalina.core.StandardContext - org.apache.catalina.core.StandardHost - org.apache.catalina.core.StandardServer - org.apache.catalina.core.StandardService - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - All - public - - diff --git a/assets/server/tomcat/jetty.xmind b/assets/server/tomcat/jetty.xmind deleted file mode 100644 index 6164e864d5efffecad60ac52f9540f0055d49127..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112346 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μ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 diff --git a/assets/server/tomcat/tomcat.eddx b/assets/server/tomcat/tomcat.eddx deleted file mode 100644 index 455deb4331b5c5111c1a8cbd5b21b68627ec3a90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60395 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 diff --git a/assets/server/tomcat/tomcat.xmind b/assets/server/tomcat/tomcat.xmind deleted file mode 100644 index 04cf12f8033de140ee95d60c65a5db7904c735fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118795 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 L(wg^$UFZD&aQ#$@ diff --git a/assets/test.eddx b/assets/test.eddx deleted file mode 100644 index a5f0d00c7a4f4ee495a002e823dd33372c25a450..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16894 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�~~l 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 中的标签,格式[tagName, { attrName: attrValue }, innerHTML?] ['link', { rel: 'icon', href: '/img/favicon.ico' }], //favicons,资源放在public文件夹 ['meta', { name: 'keywords', content: 'vuepress,theme,blog,vdoing' }], - ['meta', { name: 'theme-color', content: '#11a8cd' }] // 移动浏览器主题颜色 + ['meta', { name: 'theme-color', content: '#11a8cd' }], // 移动浏览器主题颜色 ], - + markdown: { + // lineNumbers: true, + extractHeaders: ['h2', 'h3', 'h4', 'h5', 'h6'], // 提取标题到侧边栏的级别,默认['h2', 'h3'] + externalLinks: { + target: '_blank', + rel: 'noopener noreferrer', + }, + }, // 主题配置 themeConfig: { nav: [ - { text: '首页', link: '/' }, - { text: 'JavaEE', link: '/01.JavaEE/' }, { - text: 'Java软件', - link: '/02.Java软件/', + text: 'JavaEE', items: [ - { text: 'Java构建', link: '/02.Java软件/01.Java构建/' }, - { text: 'Java IDE', link: '/02.Java软件/02.JavaIDE/' }, - { text: 'Java服务器', link: '/02.Java软件/03.Java服务器/' }, - { text: 'Java监控诊断', link: '/02.Java软件/04.Java监控诊断/' } - ] + { text: 'JavaWeb', link: '/02.JavaEE/01.JavaWeb/' }, + { text: '服务器', link: '/02.JavaEE/02.服务器/' }, + ], }, { - text: 'Java工具', - link: '/03.Java工具/', + text: 'Java软件', + link: '/11.软件/', items: [ - { text: 'Java序列化工具', link: '/03.Java工具/01.Java序列化工具/' }, - { text: 'JavaBean工具', link: '/03.Java工具/02.JavaBean工具/' }, - { text: 'Java模板引擎', link: '/03.Java工具/03.Java模板引擎/' }, - { text: 'Java测试工具', link: '/03.Java工具/04.Java测试工具/' }, - { text: '其他', link: '/03.Java工具/05.其他Java工具/' } - ] + { text: 'Java构建', link: '/11.软件/01.构建/' }, + { text: 'Java IDE', link: '/11.软件/02.IDE/' }, + { text: 'Java监控诊断', link: '/11.软件/03.监控诊断/' }, + ], }, - { text: 'Java框架', link: '/04.Java框架/' }, - { text: 'Java中间件', link: '/05.Java中间件/' }, + { text: 'Java工具', link: '/12.工具/' }, + { text: 'Java框架', link: '/13.框架/' }, + { text: 'Java中间件', link: '/14.中间件/' }, { text: '✨ Java系列', ariaLabel: 'Java', items: [ { text: 'Java 教程 📚', link: 'https://dunwu.github.io/java-tutorial/', target: '_blank' }, - { text: 'JavaCore 教程 📚', link: 'https://dunwu.github.io/javacore/', target: '_blank' } - ] - } + { text: 'JavaCore 教程 📚', link: 'https://dunwu.github.io/javacore/', target: '_blank' }, + ], + }, ], sidebarDepth: 2, // 侧边栏显示深度,默认1,最大2(显示到h3标题) - logo: 'https://raw.githubusercontent.com/dunwu/images/dev/common/dunwu-logo-200.png', // 导航栏logo + logo: 'https://raw.githubusercontent.com/dunwu/images/dev/common/dunwu-logo.png', // 导航栏logo repo: 'dunwu/java-tutorial', // 导航栏右侧生成Github链接 searchMaxSuggestions: 10, // 搜索结果显示最大数 lastUpdated: '上次更新', // 更新的时间,及前缀文字 string | boolean (取值为git提交时间) @@ -69,7 +70,7 @@ module.exports = { // sidebarOpen: false, // 初始状态是否打开侧边栏,默认true updateBar: { // 最近更新栏 - showToArticle: true // 显示到文章页底部,默认true + showToArticle: true, // 显示到文章页底部,默认true // moreArticle: '/archives' // “更多文章”跳转的页面,默认'/archives' }, // titleBadge: false, // 文章标题前的图标是否显示,默认true @@ -87,14 +88,14 @@ module.exports = { // contentBgStyle: 1, - category: false, // 是否打开分类功能,默认true。 如打开,会做的事情有:1. 自动生成的frontmatter包含分类字段 2.页面中显示与分类相关的信息和模块 3.自动生成分类页面(在@pages文件夹)。如关闭,则反之。 - tag: false, // 是否打开标签功能,默认true。 如打开,会做的事情有:1. 自动生成的frontmatter包含标签字段 2.页面中显示与标签相关的信息和模块 3.自动生成标签页面(在@pages文件夹)。如关闭,则反之。 + category: true, // 是否打开分类功能,默认true。 如打开,会做的事情有:1. 自动生成的frontmatter包含分类字段 2.页面中显示与分类相关的信息和模块 3.自动生成分类页面(在@pages文件夹)。如关闭,则反之。 + tag: true, // 是否打开标签功能,默认true。 如打开,会做的事情有:1. 自动生成的frontmatter包含标签字段 2.页面中显示与标签相关的信息和模块 3.自动生成标签页面(在@pages文件夹)。如关闭,则反之。 archive: true, // 是否打开归档功能,默认true。 如打开,会做的事情有:1.自动生成归档页面(在@pages文件夹)。如关闭,则反之。 author: { // 文章默认的作者信息,可在md文件中单独配置此信息 String | {name: String, href: String} name: 'dunwu', // 必需 - href: 'https://github.com/dunwu' // 可选的 + href: 'https://github.com/dunwu', // 可选的 }, social: { // 社交图标,显示于博主信息栏和页脚栏 @@ -103,21 +104,21 @@ module.exports = { { iconClass: 'icon-youjian', title: '发邮件', - link: 'mailto:forbreak@163.com' + link: 'mailto:forbreak@163.com', }, { iconClass: 'icon-github', title: 'GitHub', - link: 'https://github.com/dunwu' - } - ] + link: 'https://github.com/dunwu', + }, + ], }, footer: { // 页脚信息 createYear: 2019, // 博客创建年份 - copyrightInfo: '钝悟(dunwu) | MIT License' // 博客版权信息,支持a标签 + copyrightInfo: '钝悟(dunwu) | CC-BY-SA-4.0', // 博客版权信息,支持a标签 }, - htmlModules + htmlModules, }, // 插件 @@ -127,8 +128,8 @@ module.exports = { { // 鼠标点击爱心特效 color: '#11a8cd', // 爱心颜色,默认随机色 - excludeClassName: 'theme-vdoing-content' // 要排除元素的class, 默认空'' - } + excludeClassName: 'theme-vdoing-content', // 要排除元素的class, 默认空'' + }, ], ['fulltext-search'], // 全文搜索 @@ -158,8 +159,8 @@ module.exports = { copySelector: ['div[class*="language-"] pre', 'div[class*="aside-code"] aside'], // String or Array copyMessage: '复制成功', // default is 'Copy successfully and then paste it for use.' duration: 1000, // prompt message display time. - showInMobile: false // whether to display on the mobile side, default: false. - } + showInMobile: false, // whether to display on the mobile side, default: false. + }, ], [ 'demo-block', @@ -171,18 +172,18 @@ module.exports = { // vue: 'https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js', // 在线示例中的vue依赖 jsfiddle: false, // 是否显示 jsfiddle 链接 codepen: true, // 是否显示 codepen 链接 - horizontal: false // 是否展示为横向样式 - } - } + horizontal: false, // 是否展示为横向样式 + }, + }, ], [ 'vuepress-plugin-zooming', // 放大图片 { selector: '.theme-vdoing-content img:not(.no-zoom)', options: { - bgColor: 'rgba(0,0,0,0.6)' - } - } + bgColor: 'rgba(0,0,0,0.6)', + }, + }, ], [ '@vuepress/last-updated', // "上次更新"时间格式 @@ -190,16 +191,11 @@ module.exports = { transformer: (timestamp, lang) => { const dayjs = require('dayjs') // https://day.js.org/ return dayjs(timestamp).format('YYYY/MM/DD, HH:mm:ss') - } - } - ] + }, + }, + ], ], - markdown: { - // lineNumbers: true, - extractHeaders: ['h2', 'h3', 'h4', 'h5', 'h6'] // 提取标题到侧边栏的级别,默认['h2', 'h3'] - }, - // 监听文件变化并重新构建 - extraWatchFiles: ['.vuepress/config.js', '.vuepress/config/htmlModules.js'] + extraWatchFiles: ['.vuepress/config.js', '.vuepress/config/htmlModules.js'], } diff --git a/docs/.vuepress/enhanceApp.js b/docs/.vuepress/enhanceApp.js index 490ad932..c1612b88 100644 --- a/docs/.vuepress/enhanceApp.js +++ b/docs/.vuepress/enhanceApp.js @@ -32,9 +32,16 @@ export default ({ } // 显示广告模块 pageB.style.display = 'flex' + + integrateGitalk(router) }, 0) }) } + try { + document && integrateGitalk(router) + } catch (e) { + console.error(e.message) + } } function ABDetected() { @@ -53,3 +60,54 @@ function docReady(t) { ? setTimeout(t, 1) : document.addEventListener('DOMContentLoaded', t) } + +// 集成 Gitalk 评论插件 +function integrateGitalk(router) { + const linkGitalk = document.createElement('link') + linkGitalk.href = 'https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css' + linkGitalk.rel = 'stylesheet' + document.body.appendChild(linkGitalk) + const scriptGitalk = document.createElement('script') + scriptGitalk.src = 'https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js' + document.body.appendChild(scriptGitalk) + + router.afterEach((to) => { + if (scriptGitalk.onload) { + loadGitalk(to) + } else { + scriptGitalk.onload = () => { + loadGitalk(to) + } + } + }) + + function loadGitalk(to) { + let commentsContainer = document.getElementById('gitalk-container') + if (!commentsContainer) { + commentsContainer = document.createElement('div') + commentsContainer.id = 'gitalk-container' + commentsContainer.classList.add('content') + } + const $page = document.querySelector('.page') + if ($page) { + $page.appendChild(commentsContainer) + if (typeof Gitalk !== 'undefined' && Gitalk instanceof Function) { + renderGitalk(to.fullPath) + } + } + } + function renderGitalk(fullPath) { + console.info(fullPath) + const gitalk = new Gitalk({ + clientID: '1ba9606d18aec7c070d4', + clientSecret: '57c7e5e3611840efe117ccbad4d87fb60cb364cc', // come from github development + repo: 'java-tutorial', + owner: 'dunwu', + admin: ['dunwu'], + id: 'comment', + distractionFreeMode: false, + language: 'zh-CN', + }) + gitalk.render('gitalk-container') + } +} diff --git "a/docs/01.JavaEE/02.JavaEE\344\271\213Servlet\346\214\207\345\215\227.md" "b/docs/02.JavaEE/01.JavaWeb/01.JavaWeb\344\271\213Servlet\346\214\207\345\215\227.md" similarity index 90% rename from "docs/01.JavaEE/02.JavaEE\344\271\213Servlet\346\214\207\345\215\227.md" rename to "docs/02.JavaEE/01.JavaWeb/01.JavaWeb\344\271\213Servlet\346\214\207\345\215\227.md" index 6962ccb1..c49ed4f2 100644 --- "a/docs/01.JavaEE/02.JavaEE\344\271\213Servlet\346\214\207\345\215\227.md" +++ "b/docs/02.JavaEE/01.JavaWeb/01.JavaWeb\344\271\213Servlet\346\214\207\345\215\227.md" @@ -1,35 +1,23 @@ --- -title: JavaEE 之 Servlet 指南 +title: JavaWeb 之 Servlet 指南 +categories: + - 编程 + - Java + - JavaWeb +tags: + - Java + - JavaWeb + - Servlet +abbrlink: 2ce8dedd date: 2020-08-24 19:41:46 -permalink: /pages/2d26cc/ +permalink: /pages/be093b/ --- -# JavaEE 之 Servlet 指南 +# JavaWeb 之 Servlet 指南 - +## JavaWeb 简介 -- [1. JavaWeb 简介](#1-javaweb-简介) - - [1.1. Web 应用程序](#11-web-应用程序) - - [1.2. 常见 Web 服务器](#12-常见-web-服务器) -- [2. Servlet 简介](#2-servlet-简介) - - [2.1. 什么是 Servlet](#21-什么是-servlet) - - [2.2. Servlet 和 CGI 的区别](#22-servlet-和-cgi-的区别) - - [2.3. Servlet 版本以及主要特性](#23-servlet-版本以及主要特性) - - [2.4. Servlet 任务](#24-servlet-任务) - - [2.5. Servlet 生命周期](#25-servlet-生命周期) -- [3. Servlet API](#3-servlet-api) - - [3.1. Servlet 包](#31-servlet-包) - - [3.2. Servlet 接口](#32-servlet-接口) -- [4. Servlet 和 HTTP 状态码](#4-servlet-和-http-状态码) - - [4.1. HTTP 状态码](#41-http-状态码) - - [4.2. 设置 HTTP 状态码的方法](#42-设置-http-状态码的方法) - - [4.3. HTTP 状态码实例](#43-http-状态码实例) - - - -## 1. JavaWeb 简介 - -### 1.1. Web 应用程序 +### Web 应用程序 Web,在英语中 web 即表示网页的意思,它用于表示 Internet 主机上供外界访问的资源。 @@ -40,7 +28,7 @@ Internet 上供外界访问的 Web 资源分为: - 静态 web 资源:指 web 页面中供人们浏览的数据始终是不变。常见静态资源文件:html、css、各种图片类型(jpg、png) - 动态 web 资源:指 web 页面中供人们浏览的数据是由程序产生的,不同时间点访问 web 页面看到的内容各不相同。常见动态资源技术:JSP/Servlet、ASP、PHP -### 1.2. 常见 Web 服务器 +### 常见 Web 服务器 - [Tomcat](http://tomcat.apache.org/) - [Jetty](http://www.eclipse.org/jetty/) @@ -51,9 +39,9 @@ Internet 上供外界访问的 Web 资源分为: - [WebLogic](https://www.oracle.com/middleware/technologies/weblogic.html) - JBoss -## 2. Servlet 简介 +## Servlet 简介 -### 2.1. 什么是 Servlet +### 什么是 Servlet Servlet(Server Applet),即小服务程序或服务连接器。Servlet 是 Java 编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态 Web 内容。 @@ -62,14 +50,14 @@ Servlet(Server Applet),即小服务程序或服务连接器。Servlet 是 Servlet 运行于支持 Java 的应用服务器中。从原理上讲,Servlet 可以响应任何类型的请求,但绝大多数情况下 Servlet 只用来扩展基于 HTTP 协议的 Web 服务器。 -### 2.2. Servlet 和 CGI 的区别 +### Servlet 和 CGI 的区别 Servlet 技术出现之前,Web 主要使用 CGI 技术。它们的区别如下: - Servlet 是基于 Java 编写的,处于服务器进程中,他能够通过多线程方式运行 service() 方法,一个实例可以服务于多个请求,而且一般不会销毁; - CGI(Common Gateway Interface),即通用网关接口。它会为每个请求产生新的进程,服务完成后销毁,所以效率上低于 Servlet。 -### 2.3. Servlet 版本以及主要特性 +### Servlet 版本以及主要特性 | 版本 | 日期 | JAVA EE/JDK 版本 | 特性 | | ----------- | ------------- | ------------------ | --------------------------------------------------------------------- | @@ -84,7 +72,7 @@ Servlet 技术出现之前,Web 主要使用 CGI 技术。它们的区别如下 | Servlet 2.0 | | JDK 1.1 | Part of Java Servlet Development Kit 2.0 | | Servlet 1.0 | 1997 年 6 月 | | | -### 2.4. Servlet 任务 +### Servlet 任务 Servlet 执行以下主要任务: @@ -94,7 +82,7 @@ Servlet 执行以下主要任务: - 发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。 - 发送隐式的 HTTP 响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务。 -### 2.5. Servlet 生命周期 +### Servlet 生命周期 ![img](http://www.runoob.com/wp-content/uploads/2014/07/Servlet-LifeCycle.jpg) @@ -106,9 +94,9 @@ Servlet 生命周期如下: 4. **销毁** - Servlet 通过调用 **destroy()** 方法终止(结束)。 5. **卸载** - Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。 -## 3. Servlet API +## Servlet API -### 3.1. Servlet 包 +### Servlet 包 Java Servlet 是运行在带有支持 Java Servlet 规范的解释器的 web 服务器上的 Java 类。 @@ -116,7 +104,7 @@ Servlet 可以使用 **javax.servlet** 和 **javax.servlet.http** 包创建, Java Servlet 就像任何其他的 Java 类一样已经被创建和编译。在您安装 Servlet 包并把它们添加到您的计算机上的 Classpath 类路径中之后,您就可以通过 JDK 的 Java 编译器或任何其他编译器来编译 Servlet。 -### 3.2. Servlet 接口 +### Servlet 接口 Servlet 接口定义了下面五个方法: @@ -207,7 +195,7 @@ destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调 } ``` -## 4. Servlet 和 HTTP 状态码 +## Servlet 和 HTTP 状态码 title: JavaEE Servlet HTTP 状态码 date: 2017-11-08 @@ -219,7 +207,7 @@ categories: - servlet - http -### 4.1. HTTP 状态码 +### HTTP 状态码 HTTP 请求和 HTTP 响应消息的格式是类似的,结构如下: @@ -268,7 +256,7 @@ HeaderN: ... - 500:服务器端在执行请求时发生了错误 - 503:服务器暂时处于超负载或正在进行停机维护,现在无法处理请求 -### 4.2. 设置 HTTP 状态码的方法 +### 设置 HTTP 状态码的方法 下面的方法可用于在 Servlet 程序中设置 HTTP 状态码。这些方法通过 `HttpServletResponse` 对象可用。 @@ -278,7 +266,7 @@ HeaderN: ... | 2 | **public void sendRedirect(String url)**该方法生成一个 302 响应,连同一个带有新文档 URL 的 _Location_ 头。 | | 3 | **public void sendError(int code, String message)**该方法发送一个状态码(通常为 404),连同一个在 HTML 文档内部自动格式化并发送到客户端的短消息。 | -### 4.3. HTTP 状态码实例 +### HTTP 状态码实例 下面的例子把 407 错误代码发送到客户端浏览器,浏览器会显示 "Need authentication!!!" 消息。 diff --git "a/docs/01.JavaEE/03.JavaEE\344\271\213Jsp\346\214\207\345\215\227.md" "b/docs/02.JavaEE/01.JavaWeb/02.JavaWeb\344\271\213Jsp\346\214\207\345\215\227.md" similarity index 97% rename from "docs/01.JavaEE/03.JavaEE\344\271\213Jsp\346\214\207\345\215\227.md" rename to "docs/02.JavaEE/01.JavaWeb/02.JavaWeb\344\271\213Jsp\346\214\207\345\215\227.md" index 9ab566a7..f0c28076 100644 --- "a/docs/01.JavaEE/03.JavaEE\344\271\213Jsp\346\214\207\345\215\227.md" +++ "b/docs/02.JavaEE/01.JavaWeb/02.JavaWeb\344\271\213Jsp\346\214\207\345\215\227.md" @@ -1,14 +1,23 @@ --- -title: JavaEE 之 Jsp 指南 -date: 2020-08-24 19:41:46 -permalink: /pages/002533/ +title: JavaWeb 之 Jsp 指南 +categories: + - 编程 + - Java + - JavaWeb +tags: + - Java + - JavaWeb + - JSP +abbrlink: 339b3115 +date: 2020-02-07 23:04:47 +permalink: /pages/6bbb16/ --- -# JavaEE 之 Jsp 指南 +# JavaWeb 之 Jsp 指南 -## 1. 简介 +## 简介 -### 1.1. 什么是 Java Server Pages +### 什么是 Java Server Pages `JSP`全称`Java Server Pages`,是一种动态网页开发技术。 @@ -20,7 +29,7 @@ JSP 通过网页表单获取用户输入数据、访问数据库及其他数据 JSP 标签有多种功能,比如访问数据库、记录用户选择信息、访问 JavaBeans 组件等,还可以在不同的网页中传递控制信息和共享信息。 -### 1.2. 为什么使用 JSP +### 为什么使用 JSP JSP 也是一种 Servlet,因此 JSP 能够完成 Servlet 能完成的任何工作。 @@ -33,7 +42,7 @@ JSP 程序与 CGI 程序有着相似的功能,但和 CGI 程序相比,JSP 最后,JSP 是 Java EE 不可或缺的一部分,是一个完整的企业级应用平台。这意味着 JSP 可以用最简单的方式来实现最复杂的应用。 -### 1.3. JSP 的优势 +### JSP 的优势 以下列出了使用 JSP 带来的其他好处: @@ -43,7 +52,7 @@ JSP 程序与 CGI 程序有着相似的功能,但和 CGI 程序相比,JSP - 与 JavaScript 相比:虽然 JavaScript 可以在客户端动态生成 HTML,但是很难与服务器交互,因此不能提供复杂的服务,比如访问数据库和图像处理等等。 - 与静态 HTML 相比:静态 HTML 不包含动态信息。 -## 2. JSP 工作原理 +## JSP 工作原理 **JSP 是一种 Servlet**,但工作方式和 Servlet 有所差别。 @@ -53,7 +62,7 @@ Jsp 是先将源代码部署到服务器再编译,**先部署后编译**。 Jsp 会在客户端第一次请求 Jsp 文件时被编译为 HttpJspPage 类(Servlet 的一个子类)。该类会被服务器临时存放在服务器工作目录里。所以,第一次请求 Jsp 后,访问速度会变快就是这个道理。 -### 2.1. JSP 工作流程 +### JSP 工作流程 网络服务器需要一个 JSP 引擎,也就是一个容器来处理 JSP 页面。容器负责截获对 JSP 页面的请求。本教程使用内嵌 JSP 容器的 Apache 来支持 JSP 开发。 @@ -63,7 +72,7 @@ JSP 容器与 Web 服务器协同合作,为 JSP 的正常运行提供必要的 ![img](http://www.runoob.com/wp-content/uploads/2014/01/jsp-arch.jpg) -#### 2.1.1. 工作步骤 +#### 工作步骤 以下步骤表明了 Web 服务器是如何使用 JSP 来创建网页的: @@ -79,7 +88,7 @@ JSP 容器与 Web 服务器协同合作,为 JSP 的正常运行提供必要的 一般情况下,JSP 引擎会检查 JSP 文件对应的 servlet 是否已经存在,并且检查 JSP 文件的修改日期是否早于 servlet。如果 JSP 文件的修改日期早于对应的 servlet,那么容器就可以确定 JSP 文件没有被修改过并且 servlet 有效。这使得整个流程与其他脚本语言(比如 PHP)相比要高效快捷一些。 -### 2.2. JSP 生命周期 +### JSP 生命周期 理解 JSP 底层功能的关键就是去理解它们所遵守的生命周期。 @@ -96,7 +105,7 @@ JSP 生命周期就是从创建到销毁的整个过程,类似于 servlet 生 ![img](http://www.runoob.com/wp-content/uploads/2014/01/jsp_life_cycle.jpg) -#### 2.2.1. JSP 编译 +#### JSP 编译 当浏览器请求 JSP 页面时,JSP 引擎会首先去检查是否需要编译这个文件。如果这个文件没有被编译过,或者在上次编译后被更改过,则编译这个 JSP 文件。 @@ -106,7 +115,7 @@ JSP 生命周期就是从创建到销毁的整个过程,类似于 servlet 生 - 将 JSP 文件转为 servlet。 - 编译 servlet。 -#### 2.2.2. JSP 初始化 +#### JSP 初始化 容器载入 JSP 文件后,它会在为请求提供任何服务前调用 jspInit()方法。如果您需要执行自定义的 JSP 初始化任务,复写 jspInit()方法就行了,就像下面这样: @@ -118,7 +127,7 @@ public void jspInit(){ 一般来讲程序只初始化一次,servlet 也是如此。通常情况下您可以在 jspInit()方法中初始化数据库连接、打开文件和创建查询表。 -#### 2.2.3. JSP 执行 +#### JSP 执行 这一阶段描述了 JSP 生命周期中一切与请求相关的交互行为,直到被销毁。 @@ -135,7 +144,7 @@ void _jspService(HttpServletRequest request, `_jspService()` 方法在每个 request 中被调用一次并且负责产生与之相对应的 response,并且它还负责产生所有 7 个 HTTP 方法的回应,比如 GET、POST、DELETE 等等。 -#### 2.2.4. JSP 清理 +#### JSP 清理 JSP 生命周期的销毁阶段描述了当一个 JSP 网页从容器中被移除时所发生的一切。 @@ -149,9 +158,9 @@ public void jspDestroy() { } ``` -## 3. 语法 +## 语法 -### 3.1. 脚本 +### 脚本 脚本程序可以包含任意量的 Java 语句、变量、方法或表达式,只要它们在脚本语言中是有效的。 @@ -191,7 +200,7 @@ public void jspDestroy() { ![img](http://www.runoob.com/wp-content/uploads/2014/01/jsp_hello_world.jpg) -#### 3.1.1. 中文编码问题 +#### 中文编码问题 如果我们要在页面正常显示中文,我们需要在 JSP 文件头部添加以下代码:`<>` @@ -220,7 +229,7 @@ pageEncoding="UTF-8"%> 这样中文就可以正常显示了。 -### 3.2. JSP 声明 +### JSP 声明 一个声明语句可以声明一个或多个变量、方法,供后面的 Java 代码使用。在 JSP 文件中,您必须先声明这些变量和方法然后才能使用它们。 @@ -244,7 +253,7 @@ JSP 声明的语法格式: <%! int i = 0; %> <%! int a, b, c; %> <%! Circle a = new Circle(2.0); %> ``` -### 3.3. JSP 表达式 +### JSP 表达式 一个 JSP 表达式中包含的脚本语言表达式,先被转化成 String,然后插入到表达式出现的地方。 @@ -293,7 +302,7 @@ pageEncoding="UTF-8"%> --- -### 3.4. JSP 注释 +### JSP 注释 JSP 注释主要有两个作用:为代码作注释以及将某段代码注释掉。 @@ -334,11 +343,11 @@ pageEncoding="UTF-8"%> | `'` | 在属性中使用的单引号 | | `"` | 在属性中使用的双引号 | -### 3.5. 控制语句 +### 控制语句 JSP 提供对 Java 语言的全面支持。您可以在 JSP 程序中使用 Java API 甚至建立 Java 代码块,包括判断语句和循环语句等等。 -#### 3.5.1. if…else 语句 +#### if…else 语句 `If…else`块,请看下面这个例子: @@ -369,7 +378,7 @@ IF...ELSE 实例 今天不是周末 ``` -#### 3.5.2. switch…case 语句 +#### switch…case 语句 现在来看看 switch…case 块,与 if…else 块有很大的不同,它使用 out.println(),并且整个都装在脚本程序的标签中,就像下面这样: @@ -400,7 +409,7 @@ SWITCH...CASE 实例 星期三 ``` -#### 3.5.3. 循环语句 +#### 循环语句 在 JSP 程序中可以使用 Java 的三个基本循环类型:for,while,和 do…while。 @@ -480,7 +489,7 @@ JSP 支持所有 Java 逻辑和算术运算符。 | 赋值 | `= += -= \*= /= %= >>= <<= &= ^= | =` | 右到左 | | 逗号 | `,` | 左到右 | -### 3.6. JSP 字面量 +### JSP 字面量 JSP 语言定义了以下几个字面量: @@ -490,7 +499,7 @@ JSP 语言定义了以下几个字面量: - 字符串(string):以单引号或双引号开始和结束; - Null:null。 -## 4. 指令 +## 指令 JSP 指令用来设置整个 JSP 页面相关的属性,如网页的编码方式和脚本语言。 @@ -512,7 +521,7 @@ JSP 中的三种指令标签: | `<%@ include ... %>` | 包含其他文件 | | `<%@ taglib ... %>` | 引入标签库的定义,可以是自定义标签 | -### 4.1. Page 指令 +### Page 指令 Page 指令为容器提供当前页面的使用说明。一个 JSP 页面可以包含多个`page`指令。 @@ -535,7 +544,7 @@ Page 指令的语法格式: pageEncoding="UTF-8" %> ``` -#### 4.1.1. 属性 +#### 属性 下表列出与 Page 指令相关的属性: @@ -555,7 +564,7 @@ pageEncoding="UTF-8" %> | isELIgnored | 指定是否执行 EL 表达式 | | isScriptingEnabled | 确定脚本元素能否被使用 | -### 4.2. Include 指令 +### Include 指令 JSP 可以通过`include`指令来包含其他文件。 @@ -577,7 +586,7 @@ Include 指令的语法格式如下: ``` -### 4.3. Taglib 指令 +### Taglib 指令 JSP 允许用户自定义标签,一个自定义标签库就是自定义标签的集合。 @@ -597,7 +606,7 @@ uri 属性确定标签库的位置,prefix 属性指定标签库的前缀。 ``` -## 5. JSP 动作元素 +## JSP 动作元素 JSP 动作元素是一组 JSP 内置的标签,只需要书写很少的标记代码就能使用 JSP 提供的丰富功能。JSP 动作元素是对常用的 JSP 功能的抽象与封装,包括两种,自定义 JSP 动作元素与标准 JSP 动作元素。 @@ -626,14 +635,14 @@ JSP 动作元素是一组 JSP 内置的标签,只需要书写很少的标记 | jsp:body | 设置动态定义的 XML 元素内容。 | | jsp:text | 在 JSP 页面和文档中使用写入文本的模板 | -### 5.1. 常见的属性 +### 常见的属性 所有的动作要素都有两个属性:id 属性和 scope 属性。 - **id 属性:**id 属性是动作元素的唯一标识,可以在 JSP 页面中引用。动作元素创建的 id 值可以通过 PageContext 来调用。 - **scope 属性:**该属性用于识别动作元素的生命周期。 id 属性和 scope 属性有直接关系,scope 属性定义了相关联 id 对象的寿命。 scope 属性有四个可能的值: (a) page, (b)request, (c)session, 和 (d) application。 -### 5.2. `` +### `` `` 用来包含静态和动态的文件。该动作把指定文件插入正在生成的页面。 @@ -694,7 +703,7 @@ include 动作实例 今天的日期是: 2016-6-25 14:08:17 ``` -### 5.3. `` +### `` **jsp:useBean** 动作用来加载一个将在 JSP 页面中使用的 JavaBean。 @@ -718,7 +727,7 @@ jsp:useBean 动作最简单的语法为: 在给出具体实例前,让我们先来看下 jsp:setProperty 和 jsp:getProperty 动作元素: -### 5.4. `` +### `` jsp:setProperty 用来设置已经实例化的 Bean 对象的属性,有两种用法。首先,你可以在 jsp:useBean 元素的外面(后面)使用 jsp:setProperty,如下所示: @@ -748,7 +757,7 @@ jsp:setProperty 动作有下面四个属性,如下表: | value | value 属性是可选的。该属性用来指定 Bean 属性的值。字符串数据会在目标类中通过标准的 valueOf 方法自动转换成数字、boolean、Boolean、 byte、Byte、char、Character。例如,boolean 和 Boolean 类型的属性值(比如"true")通过 Boolean.valueOf 转换,int 和 Integer 类型的属性值(比如"42")通过 Integer.valueOf 转换。    value 和 param 不能同时使用,但可以使用其中任意一个。 | | param | param 是可选的。它指定用哪个请求参数作为 Bean 属性的值。如果当前请求没有参数,则什么事情也不做,系统不会把 null 传递给 Bean 属性的 set 方法。因此,你可以让 Bean 自己提供默认属性值,只有当请求参数明确指定了新值时才修改默认属性值。 | -### 5.5. `` +### `` jsp:getProperty 动作提取指定 Bean 属性的值,转换成字符串,然后输出。语法格式如下: @@ -826,7 +835,7 @@ pageEncoding="UTF-8"%> ![img](http://www.runoob.com/wp-content/uploads/2014/01/D7AD87A8-3392-4D4E-8731-18806B0644CD.jpg) -### 5.6. `` +### `` jsp:forward 动作把请求转到另外的页面。jsp:forward 标记只有一个属性 page。语法格式如下所示: @@ -878,7 +887,7 @@ pageEncoding="UTF-8"%> 今天的日期是: 2016-6-25 14:37:25 ``` -### 5.7. `` +### `` jsp:plugin 动作用来根据浏览器的类型,插入通过 Java 插件 运行 Java Applet 所必需的 OBJECT 或 EMBED 元素。 @@ -903,7 +912,7 @@ plugin 动作有多个对应 HTML 元素的属性用于格式化 Java 组件。p 如果你有兴趣可以尝试使用 applet 来测试 `jsp:plugin` 动作元素,`` 元素是一个新元素,在组件出现故障的错误是发送给用户错误信息。 -### 5.8. `` 、 ``、`` +### `` 、 ``、`` `` 、 ``、`` 动作元素动态定义 XML 元素。动态是非常重要的,这就意味着 XML 元素在编译时是动态生成的而非静态。 @@ -935,7 +944,7 @@ pageEncoding="UTF-8"%> ![img](http://www.runoob.com/wp-content/uploads/2014/01/7D8C47F0-0DDE-4F1D-8BE1-B2C9C955683E.jpg) -### 5.9. `` +### `` 动作元素允许在 JSP 页面和文档中使用写入文本的模板,语法格式如下: @@ -969,7 +978,7 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 你可以对以上实例尝试使用及不使用该动作元素执行结果的区别。 -## 6. JSP 隐式对象 +## JSP 隐式对象 JSP 隐式对象是 JSP 容器为每个页面提供的 Java 对象,开发者可以直接使用它们而不用显式声明。JSP 隐式对象也被称为预定义变量。 @@ -987,7 +996,7 @@ JSP 所支持的九大隐式对象: | page | 类似于 Java 类中的 this 关键字 | | Exception | **Exception**类的对象,代表发生错误的 JSP 页面中对应的异常对象 | -### 6.1. request 对象 +### request 对象 `request`对象是`javax.servlet.http.HttpServletRequest` 类的实例。 @@ -995,7 +1004,7 @@ JSP 所支持的九大隐式对象: `request`对象提供了一系列方法来获取 HTTP 头信息,cookies,HTTP 方法等等。 -### 6.2. response 对象 +### response 对象 `response`对象是`javax.servlet.http.HttpServletResponse`类的实例。 @@ -1003,7 +1012,7 @@ JSP 所支持的九大隐式对象: `response`对象也定义了处理 HTTP 头模块的接口。通过这个对象,开发者们可以添加新的 cookies,时间戳,HTTP 状态码等等。 -### 6.3. out 对象 +### out 对象 `out`对象是`javax.servlet.jsp.JspWriter`类的实例,用来在`response`对象中写入内容。 @@ -1019,13 +1028,13 @@ JSP 所支持的九大隐式对象: | **out.println(dataType dt)** | 输出 Type 类型的值然后换行 | | **out.flush()** | 刷新输出流 | -### 6.4. session 对象 +### session 对象 `session`对象是`javax.servlet.http.HttpSession`类的实例。和 Java Servlets 中的`session`对象有一样的行为。 `session`对象用来跟踪在各个客户端请求间的会话。 -### 6.5. application 对象 +### application 对象 `application`对象直接包装了 servlet 的`ServletContext`类的对象,是`javax.servlet.ServletContext`类的实例。 @@ -1033,7 +1042,7 @@ JSP 所支持的九大隐式对象: 通过向`application`中添加属性,则所有组成您 web 应用的 JSP 文件都能访问到这些属性。 -### 6.6. config 对象 +### config 对象 `config`对象是`javax.servlet.ServletConfig`类的实例,直接包装了 servlet 的`ServletConfig`类的对象。 @@ -1047,7 +1056,7 @@ config.getServletName(); 它返回包含在``元素中的 servlet 名字,注意,``元素在`WEB-INF\web.xml`文件中定义。 -### 6.7. pageContext 对象 +### pageContext 对象 `pageContext`对象是`javax.servlet.jsp.PageContext`类的实例,用来代表整个 JSP 页面。 @@ -1065,23 +1074,23 @@ config.getServletName(); pageContext.removeAttribute("attrName", PAGE_SCOPE); ``` -### 6.8. page 对象 +### page 对象 这个对象就是页面实例的引用。它可以被看做是整个 JSP 页面的代表。 `page`对象就是`this`对象的同义词。 -### 6.9. exception 对象 +### exception 对象 `exception`对象包装了从先前页面中抛出的异常信息。它通常被用来产生对出错条件的适当响应。 -## 7. EL 表达式 +## EL 表达式 EL 表达式是用`${}`括起来的脚本,用来更方便地读取对象。EL 表达式写在 JSP 的 HTML 代码中,而不能写在`<%`与`%>`引起的 JSP 脚本中。 JSP 表达式语言(EL)使得访问存储在 JavaBean 中的数据变得非常简单。JSP EL 既可以用来创建算术表达式也可以用来创建逻辑表达式。在 JSP EL 表达式内可以使用整型数,浮点数,字符串,常量 true、false,还有 null。 -### 7.1. 一个简单的语法 +### 一个简单的语法 典型的,当您需要在 JSP 标签中指定一个属性值时,只需要简单地使用字符串即可: @@ -1135,7 +1144,7 @@ ${expr} 这样,EL 表达式就会被忽略。若设为 false,则容器将会计算 EL 表达式。 -### 7.2. EL 中的基础操作符 +### EL 中的基础操作符 EL 表达式支持大部分 Java 所提供的算术和逻辑操作符: @@ -1160,7 +1169,7 @@ EL 表达式支持大部分 Java 所提供的算术和逻辑操作符: | ! or not | 测试取反 | | empty | 测试是否空值 | -### 7.3. JSP EL 中的函数 +### JSP EL 中的函数 JSP EL 允许您在表达式中使用函数。这些函数必须被定义在自定义标签库中。函数的使用语法如下: @@ -1176,7 +1185,7 @@ ${fn:length("Get my length")} 要使用任何标签库中的函数,您需要将这些库安装在服务器中,然后使用 `` 标签在 JSP 文件中包含这些库。 -### 7.4. JSP EL 隐含对象 +### JSP EL 隐含对象 JSP EL 支持下表列出的隐含对象: @@ -1196,7 +1205,7 @@ JSP EL 支持下表列出的隐含对象: 您可以在表达式中使用这些对象,就像使用变量一样。接下来会给出几个例子来更好的理解这个概念。 -### 7.5. pageContext 对象 +### pageContext 对象 pageContext 对象是 JSP 中 pageContext 对象的引用。通过 pageContext 对象,您可以访问 request 对象。比如,访问 request 对象传入的查询字符串,就像这样: @@ -1204,13 +1213,13 @@ pageContext 对象是 JSP 中 pageContext 对象的引用。通过 pageContext ${pageContext.request.queryString} ``` -### 7.6. Scope 对象 +### Scope 对象 pageScope,requestScope,sessionScope,applicationScope 变量用来访问存储在各个作用域层次的变量。 举例来说,如果您需要显式访问在 applicationScope 层的 box 变量,可以这样来访问:applicationScope.box。 -### 7.7. param 和 paramValues 对象 +### param 和 paramValues 对象 param 和 paramValues 对象用来访问参数值,通过使用 request.getParameter 方法和 request.getParameterValues 方法。 @@ -1238,7 +1247,7 @@ Param"; %> param 对象返回单一的字符串,而 paramValues 对象则返回一个字符串数组。 -### 7.8. header 和 headerValues 对象 +### header 和 headerValues 对象 header 和 headerValues 对象用来访问信息头,通过使用 request.getHeader 方法和 request.getHeaders 方法。 @@ -1270,7 +1279,7 @@ Example"; %> header 对象返回单一值,而 headerValues 则返回一个字符串数组。 -## 8. JSTL +## JSTL JSP 标准标签库(JSTL)是一个 JSP 标签集合,它封装了 JSP 应用的通用核心功能。 @@ -1284,7 +1293,7 @@ JSTL 支持通用的、结构化的任务,比如迭代,条件判断,XML - **XML 标签** - **JSTL 函数** -### 8.1. JSTL 库安装 +### JSTL 库安装 Apache Tomcat 安装 JSTL 库步骤如下: @@ -1347,7 +1356,7 @@ Apache Tomcat 安装 JSTL 库步骤如下: 使用任何库,你必须在每个 JSP 文件中的头部包含 **** 标签。 -### 8.2. 核心标签 +### 核心标签 核心标签是最常用的 JSTL 标签。引用核心标签库的语法如下: @@ -1372,7 +1381,7 @@ Apache Tomcat 安装 JSTL 库步骤如下: | [``](http://www.runoob.com/jsp/jstl-core-redirect-tag.html) | 重定向至一个新的 URL. | | [``](http://www.runoob.com/jsp/jstl-core-url-tag.html) | 使用可选的查询参数来创造一个 URL | -### 8.3. 格式化标签 +### 格式化标签 JSTL 格式化标签用来格式化并输出文本、日期、时间、数字。引用格式化标签库的语法如下: @@ -1394,7 +1403,7 @@ JSTL 格式化标签用来格式化并输出文本、日期、时间、数字。 | [``](http://www.runoob.com/jsp/jstl-format-message-tag.html) | 显示资源配置文件信息 | | [``](http://www.runoob.com/jsp/jstl-format-requestencoding-tag.html) | 设置 request 的字符编码 | -### 8.4. SQL 标签 +### SQL 标签 JSTL SQL 标签库提供了与关系型数据库(Oracle,MySQL,SQL Server 等等)进行交互的标签。引用 SQL 标签库的语法如下: @@ -1411,7 +1420,7 @@ JSTL SQL 标签库提供了与关系型数据库(Oracle,MySQL,SQL Server | [``](http://www.runoob.com/jsp/jstl-sql-dateparam-tag.html) | 将 SQL 语句中的日期参数设为指定的 java.util.Date 对象值 | | [``](http://www.runoob.com/jsp/jstl-sql-transaction-tag.html) | 在共享数据库连接中提供嵌套的数据库行为元素,将所有语句以一个事务的形式来运行 | -### 8.5. XML 标签 +### XML 标签 JSTL XML 标签库提供了创建和操作 XML 文档的标签。引用 XML 标签库的语法如下: @@ -1442,7 +1451,7 @@ JSTL XML 标签库提供了创建和操作 XML 文档的标签。引用 XML 标 | [``](http://www.runoob.com/jsp/jstl-xml-transform-tag.html) | 将 XSL 转换应用在 XML 文档中 | | [``](http://www.runoob.com/jsp/jstl-xml-param-tag.html) | 与共同使用,用于设置 XSL 样式表 | -### 8.6. JSTL 函数 +### JSTL 函数 JSTL 包含一系列标准函数,大部分是通用的字符串处理函数。引用 JSTL 函数库的语法如下: @@ -1469,9 +1478,9 @@ JSTL 包含一系列标准函数,大部分是通用的字符串处理函数。 | [fn:toUpperCase()](http://www.runoob.com/jsp/jstl-function-touppercase.html) | 将字符串中的字符转为大写 | | [fn:trim()](http://www.runoob.com/jsp/jstl-function-trim.html) | 移除首尾的空白符 | -## 9. Taglib +## Taglib -### 9.1. JSP 自定义标签 +### JSP 自定义标签 自定义标签是用户定义的 JSP 语言元素。当 JSP 页面包含一个自定义标签时将被转化为 servlet,标签转化为对被 称为 tag handler 的对象的操作,即当 servlet 执行时 Web container 调用那些操作。 @@ -1479,7 +1488,7 @@ JSP 标签扩展可以让你创建新的标签并且可以直接插入到一个 你可以继承 SimpleTagSupport 类并重写的 doTag()方法来开发一个最简单的自定义标签。 -### 9.2. 创建"Hello"标签 +### 创建"Hello"标签 接下来,我们想创建一个自定义标签叫作,标签格式为: @@ -1533,7 +1542,7 @@ JspWriter out = getJspContext().getOut(); out.println("Hello Custom Tag!"); } } Hello Custom Tag! ``` -### 9.3. 访问标签体 +### 访问标签体 你可以像标准标签库一样在标签中包含消息内容。如我们要在我们自定义的 Hello 中包含内容,格式如下: @@ -1602,7 +1611,7 @@ public class HelloTag extends SimpleTagSupport { This is message body ``` -### 9.4. 自定义标签属性 +### 自定义标签属性 你可以在自定义标准中设置各种属性,要接收属性,值自定义标签类必须实现 setter 方法, JavaBean 中的 setter 方法如下所示: diff --git "a/docs/01.JavaEE/04.JavaEE\344\271\213Filter\345\222\214Listener.md" "b/docs/02.JavaEE/01.JavaWeb/03.JavaWeb\344\271\213Filter\345\222\214Listener.md" similarity index 88% rename from "docs/01.JavaEE/04.JavaEE\344\271\213Filter\345\222\214Listener.md" rename to "docs/02.JavaEE/01.JavaWeb/03.JavaWeb\344\271\213Filter\345\222\214Listener.md" index 884f3c68..f13e99be 100644 --- "a/docs/01.JavaEE/04.JavaEE\344\271\213Filter\345\222\214Listener.md" +++ "b/docs/02.JavaEE/01.JavaWeb/03.JavaWeb\344\271\213Filter\345\222\214Listener.md" @@ -1,29 +1,24 @@ --- -title: JavaEE 之 Filter 和 Listener +title: JavaWeb 之 Filter 和 Listener +categories: + - 编程 + - Java + - JavaWeb +tags: + - Java + - JavaWeb + - Filter + - Listener +abbrlink: 9eb5517a date: 2020-08-24 19:41:46 -permalink: /pages/b4b056/ +permalink: /pages/5ecb29/ --- -# JavaEE 之 Filter 和 Listener -引入了 Servlet 规范后,你不需要关心 Socket 网络通信、不需要关心 HTTP 协议,也不需要关心你的业务类是如何被实例化和调用的,因为这些都被 Servlet 规范标准化了,你只要关心怎么实现的你的业务逻辑。这对于程序员来说是件好事,但也有不方便的一面。所谓规范就是说大家都要遵守,就会千篇一律,但是如果这个规范不能满足你的业务的个性化需求,就有问题了,因此设计一个规范或者一个中间件,要充分考虑到可扩展性。Servlet 规范提供了两种扩展机制:**Filter**和**Listener**。 - - +# JavaWeb 之 Filter 和 Listener -- [1. Filter](#1-filter) - - [1.1. 过滤器方法](#11-过滤器方法) - - [1.2. 过滤器配置](#12-过滤器配置) -- [2. Listener](#2-listener) - - [2.1. 监听器的分类](#21-监听器的分类) - - [2.2. 监听对象的创建和销毁](#22-监听对象的创建和销毁) - - [2.3. 监听对象的属性变化](#23-监听对象的属性变化) - - [2.4. 监听 Session 内的对象](#24-监听-session-内的对象) -- [3. Filter 和 Listener](#3-filter-和-listener) -- [4. 示例代码](#4-示例代码) -- [5. 参考资料](#5-参考资料) - - +引入了 Servlet 规范后,你不需要关心 Socket 网络通信、不需要关心 HTTP 协议,也不需要关心你的业务类是如何被实例化和调用的,因为这些都被 Servlet 规范标准化了,你只要关心怎么实现的你的业务逻辑。这对于程序员来说是件好事,但也有不方便的一面。所谓规范就是说大家都要遵守,就会千篇一律,但是如果这个规范不能满足你的业务的个性化需求,就有问题了,因此设计一个规范或者一个中间件,要充分考虑到可扩展性。Servlet 规范提供了两种扩展机制:**Filter**和**Listener**。 -## 1. Filter +## Filter **Filter 是过滤器,这个接口允许你对请求和响应做一些统一的定制化处理**。 @@ -31,7 +26,7 @@ Filter 提供了过滤链(Filter Chain)的概念,一个过滤链包括多 ![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/1559054413341.png) -### 1.1. 过滤器方法 +### 过滤器方法 Filter 接口有三个方法: @@ -76,7 +71,7 @@ public interface Filter { } ``` -### 1.2. 过滤器配置 +### 过滤器配置 `Filter` 需要配置在 `web.xml` 中才能生效。一个 `Filter` 需要配置 `` 与 `` 标签。 @@ -90,13 +85,13 @@ public interface Filter { - INCLUDE - JSP 中可以通过 `` 请求某 Servlet。仅在这种情况表有效。 - ERROR - JSP 中可以通过 `<%@ page errorPage="error.jsp" %>` 指定错误处理页面。仅在这种情况表有效。 -## 2. Listener +## Listener 监听器(`Listener`)用于监听 web 应用程序中的`ServletContext`, `HttpSession`和 `ServletRequest`等域对象的创建与销毁事件,以及监听这些域对象中的属性发生修改的事件。 使用 `Listener` 不需要关注该类事件时怎样触发或者怎么调用相应的 `Listener`,只要记住该类事件触发时一定会调用相应的 `Listener`,遵循 Servlet 规范的服务器会自动完成相应工作。 -### 2.1. 监听器的分类 +### 监听器的分类 在 Servlet 规范中定义了多种类型的监听器,它们用于监听的事件源分别为`ServletContext`,`HttpSession`和`ServletRequest`这三个域对象 Servlet 规范针对这三个对象上的操作,又把多种类型的监听器划分为三种类型: @@ -105,16 +100,16 @@ Servlet 规范针对这三个对象上的操作,又把多种类型的监听器 2. 监听域对象中的属性的增加和删除的事件监听器。 3. 监听绑定到 HttpSession 域中的某个对象的状态的事件监听器。 -### 2.2. 监听对象的创建和销毁 +### 监听对象的创建和销毁 -#### 2.2.1. HttpSessionListener +#### HttpSessionListener **`HttpSessionListener` 接口用于监听 `HttpSession` 对象的创建和销毁。** - 创建一个 `Session` 时,激发 `sessionCreated (HttpSessionEvent se)` 方法 - 销毁一个 `Session` 时,激发 `sessionDestroyed (HttpSessionEvent se)` 方法。 -#### 2.2.2. ServletContextListener +#### ServletContextListener **`ServletContextListener` 接口用于监听 `ServletContext` 对象的创建和销毁事件。** @@ -128,7 +123,7 @@ Servlet 规范针对这三个对象上的操作,又把多种类型的监听器 - 创建:服务器启动针对每一个 Web 应用创建 `ServletContext` - 销毁:服务器关闭前先关闭代表每一个 web 应用的 `ServletContext` -#### 2.2.3. ServletRequestListener +#### ServletRequestListener **`ServletRequestListener` 接口用于监听 `ServletRequest` 对象的创建和销毁。** @@ -140,12 +135,12 @@ Servlet 规范针对这三个对象上的操作,又把多种类型的监听器 - 创建:用户每一次访问都会创建 request 对象 - 销毁:当前访问结束,request 对象就会销毁 -### 2.3. 监听对象的属性变化 +### 监听对象的属性变化 域对象中属性的变更的事件监听器就是用来监听 `ServletContext`、`HttpSession`、`HttpServletRequest` 这三个对象中的属性变更信息事件的监听器。 这三个监听器接口分别是 `ServletContextAttributeListener`、`HttpSessionAttributeListener` `和 ServletRequestAttributeListener`,这三个接口中都定义了三个方法来处理被监听对象中的属性的增加,删除和替换的事件,同一个事件在这三个接口中对应的方法名称完全相同,只是接受的参数类型不同。 -#### 2.3.1. attributeAdded 方法 +#### attributeAdded 方法 当向被监听对象中增加一个属性时,web 容器就调用事件监听器的 `attributeAdded` 方法进行响应,这个方法接收一个事件类型的参数,监听器可以通过这个参数来获得正在增加属性的域对象和被保存到域中的属性对象 各个域属性监听器中的完整语法定义为: @@ -156,7 +151,7 @@ public void attributeReplaced(HttpSessionBindingEvent hsbe) public void attributeRmoved(ServletRequestAttributeEvent srae) ``` -#### 2.3.2. attributeRemoved 方法 +#### attributeRemoved 方法 当删除被监听对象中的一个属性时,web 容器调用事件监听器的 `attributeRemoved` 方法进行响应 各个域属性监听器中的完整语法定义为: @@ -167,7 +162,7 @@ public void attributeRemoved(HttpSessionBindingEvent hsbe) public void attributeRemoved(ServletRequestAttributeEvent srae) ``` -#### 2.3.3. attributeReplaced 方法 +#### attributeReplaced 方法 当监听器的域对象中的某个属性被替换时,web 容器调用事件监听器的 `attributeReplaced` 方法进行响应 各个域属性监听器中的完整语法定义为: @@ -178,7 +173,7 @@ public void attributeReplaced(HttpSessionBindingEvent hsbe) public void attributeReplaced(ServletRequestAttributeEvent srae) ``` -### 2.4. 监听 Session 内的对象 +### 监听 Session 内的对象 保存在 Session 域中的对象可以有多种状态: @@ -191,33 +186,33 @@ Servlet 规范中定义了两个特殊的监听器接口 `HttpSessionBindingList 实现这两个接口的类不需要 `web.xml` 文件中进行注册。 -#### 2.4.1. HttpSessionBindingListener +#### HttpSessionBindingListener `HttpSessionBindingListener` 接口的 JavaBean 对象可以感知自己被绑定或解绑定到 `Session` 中的事件。 - 当对象被绑定到 `HttpSession` 对象中时,web 服务器调用该对象的 `valueBound(HttpSessionBindingEvent event)` 方法。 - 当对象从 `HttpSession` 对象中解除绑定时,web 服务器调用该对象的 `valueUnbound(HttpSessionBindingEvent event)` 方法。 -#### 2.4.2. HttpSessionActivationListener +#### HttpSessionActivationListener 实现了 `HttpSessionActivationListener` 接口的 JavaBean 对象可以感知自己被活化(反序列化)和钝化(序列化)的事件。 - 当绑定到 `HttpSession` 对象中的 JavaBean 对象将要随 `HttpSession` 对象被序列化之前,web 服务器调用该 JavaBean 对象的 `sessionWillPassivate(HttpSessionEvent event)` 方法。这样 JavaBean 对象就可以知道自己将要和 `HttpSession` 对象一起被序列化到硬盘中. - 当绑定到 `HttpSession` 对象中的 JavaBean 对象将要随 `HttpSession` 对象被反序列化之后,web 服务器调用该 JavaBean 对象的 `sessionDidActive(HttpSessionEvent event)` 方法。这样 JavaBean 对象就可以知道自己将要和 `HttpSession` 对象一起被反序列化回到内存中 -## 3. Filter 和 Listener +## Filter 和 Listener Filter 和 Listener 的本质区别: - **Filter 是干预过程的**,它是过程的一部分,是基于过程行为的。 - **Listener 是基于状态的**,任何行为改变同一个状态,触发的事件是一致的。 -## 4. 示例代码 +## 示例代码 - `Filter` 的示例源码:[源码](https://github.com/dunwu/javatech/tree/master/codes/javaee-tutorial/javaee-tutorial-filter) - `Listener` 的示例源码:[源码](https://github.com/dunwu/javatech/tree/master/codes/javaee-tutorial/javaee-tutorial-listener) -## 5. 参考资料 +## 参考资料 - [深入拆解 Tomcat & Jetty](https://time.geekbang.org/column/intro/100027701) - [Java Web 整合开发王者归来](https://book.douban.com/subject/4189495/) diff --git "a/docs/01.JavaEE/05.JavaEE\344\271\213Cookie\345\222\214Session.md" "b/docs/02.JavaEE/01.JavaWeb/04.JavaWeb\344\271\213Cookie\345\222\214Session.md" similarity index 96% rename from "docs/01.JavaEE/05.JavaEE\344\271\213Cookie\345\222\214Session.md" rename to "docs/02.JavaEE/01.JavaWeb/04.JavaWeb\344\271\213Cookie\345\222\214Session.md" index 9dcff7f6..9358744c 100644 --- "a/docs/01.JavaEE/05.JavaEE\344\271\213Cookie\345\222\214Session.md" +++ "b/docs/02.JavaEE/01.JavaWeb/04.JavaWeb\344\271\213Cookie\345\222\214Session.md" @@ -1,18 +1,28 @@ --- -title: JavaEE 之 Cookie 和 Session +title: JavaWeb 之 Cookie 和 Session +categories: + - 编程 + - Java + - JavaWeb +tags: + - Java + - JavaWeb + - Cookie + - Session +abbrlink: bb93a37b date: 2020-08-24 19:41:46 -permalink: /pages/f05db2/ +permalink: /pages/e61883/ --- -# JavaEE 之 Cookie 和 Session +# JavaWeb 之 Cookie 和 Session -## 1. Cookie +## Cookie 由于 Http 是一种无状态的协议,服务器单从网络连接上无从知道客户身份。 会话跟踪是 Web 程序中常用的技术,用来跟踪用户的整个会话。常用会话跟踪技术是 Cookie 与 Session。 -### 1.1. Cookie 是什么 +### Cookie 是什么 Cookie 实际上是存储在客户端上的文本信息,并保留了各种跟踪的信息。 @@ -26,7 +36,7 @@ Cookie 实际上是存储在客户端上的文本信息,并保留了各种跟 Java 中把 Cookie 封装成了`javax.servlet.http.Cookie`类。 -### 1.2. Cookie 剖析 +### Cookie 剖析 Cookies 通常设置在 HTTP 头信息中(虽然 JavaScript 也可以直接在浏览器上设置一个 Cookie)。 @@ -58,7 +68,7 @@ Accept-Charset: iso-8859-1,*,utf-8 Cookie: name=xyz ``` -### 1.3. Cookie 类中的方法 +### Cookie 类中的方法 | 方法 | 功能 | | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | @@ -75,7 +85,7 @@ Cookie: name=xyz | public void setComment(String purpose) | 该方法规定了描述 cookie 目的的注释。该注释在浏览器向用户呈现 cookie 时非常有用。 | | public String getComment() | 该方法返回了描述 cookie 目的的注释,如果 cookie 没有注释则返回 null。 | -### 1.4. Cookie 的有效期 +### Cookie 的有效期 `Cookie`的`maxAge`决定着 Cookie 的有效期,单位为秒。 @@ -85,7 +95,7 @@ Cookie: name=xyz Cookie 中提供`getMaxAge()`**和**`setMaxAge(int expiry)`方法来读写`maxAge`属性。 -### 1.5. Cookie 的域名 +### Cookie 的域名 Cookie 是不可以跨域名的。域名 www.google.com 颁发的 Cookie 不会被提交到域名 www.baidu.com 去。这是由 Cookie 的隐私安全机制决定的。隐私安全机制能够禁止网站非法获取其他网站的 Cookie。 @@ -93,13 +103,13 @@ Cookie 是不可以跨域名的。域名 www.google.com 颁发的 Cookie 不会 Java 中使用`setDomain(Stringdomain)`和`getDomain()`方法来设置、获取 domain。 -### 1.6. Cookie 的路径 +### Cookie 的路径 Path 属性决定允许访问 Cookie 的路径。 Java 中使用`setPath(Stringuri)`和`getPath()`方法来设置、获取 path。 -### 1.7. Cookie 的安全属性 +### Cookie 的安全属性 HTTP 协议不仅是无状态的,而且是不安全的。 @@ -107,9 +117,9 @@ HTTP 协议不仅是无状态的,而且是不安全的。 Java 中使用`setSecure(booleanflag)`和`getSecure ()`方法来设置、获取 Secure。 -### 1.8. Cookie 实例 +### Cookie 实例 -#### 1.8.1. 添加 Cookie +#### 添加 Cookie 通过 Servlet 添加 Cookies 包括三个步骤: @@ -206,7 +216,7 @@ addCookies.jsp ``` -#### 1.8.2. 显示 Cookie +#### 显示 Cookie 要读取 Cookies,您需要通过调用 `HttpServletRequest` 的 `getCookies()` 方法创建一个 `javax.servlet.http.Cookie` 对象的数组。然后循环遍历数组,并使用 `getName()` 和 `getValue()` 方法来访问每个 cookie 和关联的值。 @@ -283,7 +293,7 @@ public class ReadCookies extends HttpServlet { } ``` -#### 1.8.3. 删除 Cookie +#### 删除 Cookie Java 中并没有提供直接删除 Cookie 的方法,如果想要删除一个 Cookie,直接将这个 Cookie 的有效期设为 0 就可以了。步骤如下: @@ -365,9 +375,9 @@ public class DeleteCookies extends HttpServlet { } ``` -## 2. Session +## Session -### 2.1. Session 是什么 +### Session 是什么 不同于 Cookie 保存在客户端浏览器中,Session 保存在服务器上。 @@ -375,7 +385,7 @@ public class DeleteCookies extends HttpServlet { Session 对应的类为 `javax.servlet.http.HttpSession` 类。Session 对象是在客户第一次请求服务器时创建的。 -### 2.2. Session 类中的方法 +### Session 类中的方法 `javax.servlet.http.HttpSession` 类中的方法: @@ -393,7 +403,7 @@ Session 对应的类为 `javax.servlet.http.HttpSession` 类。Session 对象是 | public void setAttribute(String name, Object value) | 该方法使用指定的名称绑定一个对象到该 session 会话。 | | public void setMaxInactiveInterval(int interval) | 该方法在 Servlet 容器指示该 session 会话无效之前,指定客户端请求之间的时间,以秒为单位。 | -### 2.3. Session 的有效期 +### Session 的有效期 由于会有越来越多的用户访问服务器,因此 Session 也会越来越多。为防止内存溢出,服务器会把长时间没有活跃的 Session 从内存中删除。 @@ -409,19 +419,19 @@ Tomcat 中 Session 的默认超时时间为 20 分钟。可以修改 web.xml 改 ``` -### 2.4. Session 对浏览器的要求 +### Session 对浏览器的要求 HTTP 协议是无状态的,Session 不能依据 HTTP 连接来判断是否为同一客户。因此服务器向客户端浏览器发送一个名为 JESSIONID 的 Cookie,他的值为该 Session 的 id(也就是 HttpSession.getId()的返回值)。Session 依据该 Cookie 来识别是否为同一用户。 该 Cookie 为服务器自动生成的,它的`maxAge`属性一般为-1,表示仅当前浏览器内有效,并且各浏览器窗口间不共享,关闭浏览器就会失效。 -### 2.5. URL 地址重写 +### URL 地址重写 URL 地址重写的原理是将该用户 Session 的 id 信息重写到 URL 地址中。服务器能够解析重写后的 URL 获取 Session 的 id。这样即使客户端不支持 Cookie,也可以使用 Session 来记录用户状态。 `HttpServletResponse`类提供了`encodeURL(Stringurl)`实现 URL 地址重写。 -### 2.6. Session 中禁用 Cookie +### Session 中禁用 Cookie 在`META-INF/context.xml`中编辑如下: @@ -432,9 +442,9 @@ URL 地址重写的原理是将该用户 Session 的 id 信息重写到 URL 地 部署后,TOMCAT 便不会自动生成名 JESSIONID 的 Cookie,Session 也不会以 Cookie 为识别标志,而仅仅以重写后的 URL 地址为识别标志了。 -### 2.7. Session 实例 +### Session 实例 -#### 2.7.1. Session 跟踪 +#### Session 跟踪 SessionTrackServlet.java @@ -516,7 +526,7 @@ web.xml ``` -#### 2.7.2. 删除 Session 会话数据 +#### 删除 Session 会话数据 当您完成了一个用户的 session 会话数据,您有以下几种选择: @@ -540,33 +550,33 @@ web.xml 在一个 Servlet 中的 `getMaxInactiveInterval()` 方法会返回 session 会话的超时时间,以秒为单位。所以,如果在 web.xml 中配置 session 会话超时时间为 15 分钟,那么`getMaxInactiveInterval()` 会返回 900。 -## 3. Cookie vs Session +## Cookie vs Session -### 3.1. 存取方式 +### 存取方式 Cookie 只能保存`ASCII`字符串,如果需要存取 Unicode 字符或二进制数据,需要进行`UTF-8`、`GBK`或`BASE64`等方式的编码。 Session 可以存取任何类型的数据,甚至是任何 Java 类。可以将 Session 看成是一个 Java 容器类。 -### 3.2. 隐私安全 +### 隐私安全 Cookie 存于客户端浏览器,一些客户端的程序可能会窥探、复制或修改 Cookie 内容。 Session 存于服务器,对客户端是透明的,不存在敏感信息泄露的危险。 -### 3.3. 有效期 +### 有效期 使用 Cookie 可以保证长时间登录有效,只要设置 Cookie 的`maxAge`属性为一个很大的数字。 而 Session 虽然理论上也可以通过设置很大的数值来保持长时间登录有效,但是,由于 Session 依赖于名为`JESSIONID`的 Cookie,而 Cookie `JESSIONID`的`maxAge`默认为-1,只要关闭了浏览器该 Session 就会失效,因此,Session 不能实现信息永久有效的效果。使用 URL 地址重写也不能实现。 -### 3.4. 服务器的开销 +### 服务器的开销 由于 Session 是保存在服务器的,每个用户都会产生一个 Session,如果并发访问的用户非常多,会产生很多的 Session,消耗大量的内存。 而 Cookie 由于保存在客户端浏览器上,所以不占用服务器资源。 -### 3.5. 浏览器的支持 +### 浏览器的支持 Cookie 需要浏览器支持才能使用。 @@ -574,7 +584,7 @@ Cookie 需要浏览器支持才能使用。 需要注意的事所有的用到 Session 程序的 URL 都要使用`response.encodeURL(StringURL)` 或`response.encodeRediretURL(String URL)`进行 URL 地址重写,否则导致 Session 会话跟踪失效。 -### 3.6. 跨域名 +### 跨域名 - Cookie 支持跨域名。 - Session 不支持跨域名。 diff --git "a/docs/01.JavaEE/01.JavaEE\351\235\242\347\273\217.md" "b/docs/02.JavaEE/01.JavaWeb/99.JavaWeb\351\235\242\347\273\217.md" similarity index 92% rename from "docs/01.JavaEE/01.JavaEE\351\235\242\347\273\217.md" rename to "docs/02.JavaEE/01.JavaWeb/99.JavaWeb\351\235\242\347\273\217.md" index 51779f4f..e5a71bb9 100644 --- "a/docs/01.JavaEE/01.JavaEE\351\235\242\347\273\217.md" +++ "b/docs/02.JavaEE/01.JavaWeb/99.JavaWeb\351\235\242\347\273\217.md" @@ -1,13 +1,23 @@ --- -title: JavaEE 面经 -date: 2020-08-24 19:41:46 -permalink: /pages/b7c6f0/ +title: JavaWeb 面经 +categories: + - 编程 + - Java + - JavaWeb +tags: + - Java + - JavaWeb + - Servlet +abbrlink: f216aa98 +date: 2020-02-07 23:04:47 +permalink: /pages/1933b3/ --- -# JavaEE 面经 -## 1. Servlet +# JavaWeb 面经 -### 1.1. 什么是 Servlet +## Servlet + +### 什么是 Servlet Servlet(Server Applet),即小服务程序或服务连接器。Servlet 是 Java 编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态 Web 内容。 @@ -16,14 +26,14 @@ Servlet(Server Applet),即小服务程序或服务连接器。Servlet 是 Servlet 运行于支持 Java 的应用服务器中。从原理上讲,Servlet 可以响应任何类型的请求,但绝大多数情况下 Servlet 只用来扩展基于 HTTP 协议的 Web 服务器。 -### 1.2. Servlet 和 CGI 的区别 +### Servlet 和 CGI 的区别 Servlet 技术出现之前,Web 主要使用 CGI 技术。它们的区别如下: - Servlet 是基于 Java 编写的,处于服务器进程中,他能够通过多线程方式运行 service() 方法,一个实例可以服务于多个请求,而且一般不会销毁; - CGI(Common Gateway Interface),即通用网关接口。它会为每个请求产生新的进程,服务完成后销毁,所以效率上低于 Servlet。 -### 1.3. Servlet 版本以及主要特性 +### Servlet 版本以及主要特性 | 版本 | 日期 | JAVA EE/JDK 版本 | 特性 | | ----------- | ------------- | ------------------ | --------------------------------------------------------------------- | @@ -38,14 +48,14 @@ Servlet 技术出现之前,Web 主要使用 CGI 技术。它们的区别如下 | Servlet 2.0 | | JDK 1.1 | Part of Java Servlet Development Kit 2.0 | | Servlet 1.0 | 1997 年 6 月 | | | -### 1.4. Servlet 和 JSP 的区别 +### Servlet 和 JSP 的区别 1. Servlet 是一个运行在服务器上的 Java 类,依靠服务器支持向浏览器传输数据。 2. **JSP 本质上就是 Servlet**,每次运行的时候 JSP 都会被编译成 .java 文件,然后再被编译成 .class 文件。 3. 有了 JSP,Servlet 不再负责动态生成页面,转而去负责控制程序逻辑的作用,控制 JSP 与 JavaBean 之间的流转。 4. JSP 侧重于视图,而 Servlet 侧重于控制逻辑,在 MVC 架构模式中,JSP 适合充当视图 View,Servlet 适合充当控制器 Controller。 -### 1.5. 简述 Servlet 生命周期 +### 简述 Servlet 生命周期 ![img](http://www.runoob.com/wp-content/uploads/2014/07/Servlet-LifeCycle.jpg) @@ -57,19 +67,19 @@ Servlet 生命周期如下: 4. **销毁** - Servlet 通过调用 **destroy()** 方法终止(结束)。 5. **卸载** - Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。 -### 1.6. 如何现实 servlet 的单线程模式 +### 如何现实 servlet 的单线程模式 ```java <%@ page isThreadSafe="false" %> ``` -### 1.7. Servlet 中如何获取用户提交的查询参数或者表单数据 +### Servlet 中如何获取用户提交的查询参数或者表单数据 - HttpServletRequest 的 getParameter() 方法。 - HttpServletRequest 的 getParameterValues() 方法。 - HttpServletRequest 的 getParameterMap() 方法。 -### 1.8. request 的主要方法 +### request 的主要方法 - setAttribute(String name,Object):设置名字为 name 的 request 的参数值 - getAttribute(String name):返回由 name 指定的属性值 @@ -95,9 +105,9 @@ Servlet 生命周期如下: - getServerPort():获取服务器的端口号 - removeAttribute(String name):删除请求中的一个属性 -## 2. JSP +## JSP -### 2.1. JSP 的内置对象 +### JSP 的内置对象 1. **request**:包含**客户端请求的信息**; 2. **response**:包含**服务器传回客户端的响应信息**; @@ -109,14 +119,14 @@ Servlet 生命周期如下: 8. **page**:指**网页本身**; 9. **exception**:处理 JSP 文件执行时发生的错误和异常,只要在**错误页面**里才能使用。 -### 2.2. JSP 的作用域 +### JSP 的作用域 1. **page**:一个页面; 2. **request**:一次请求; 3. **session**:一次会话; 4. **application**:服务器从启动到停止。 -### 2.3. JSP 中 7 个动作指令和作用 +### JSP 中 7 个动作指令和作用 1. **jsp:forward** - 执行页面转向,把请求转发到下一个页面; 2. **jsp:param** - 用于传递参数,必须与其他支持参数的标签一起使用; @@ -126,14 +136,14 @@ Servlet 生命周期如下: 6. **jsp:setProperty** - 设置 JavaBean 的属性值; 7. **jsp:getProperty** - 获取 JavaBean 的属性值。 -### 2.4. JSP 中动态 INCLUDE 和静态 INCLUDE 有什么区别 +### JSP 中动态 INCLUDE 和静态 INCLUDE 有什么区别 - **静态 INCLUDE**:用 include 伪码实现,**不会检查所含文件的变化**,适用于包含**静态页面<%@ include file="页面名称.html" %>**。**先合并再编译**。 - **动态 INCLUDE**:用 jsp:include 动作实现 **** 它总是**会检查文件中的变化**,适用于包含**动态页面**,并且可以**带参数**。**先编译再合并**。 -## 3. 原理 +## 原理 -### 3.1. 请求转发(forward)和重定向(redirect)的区别 +### 请求转发(forward)和重定向(redirect)的区别 - 效率上 - 转发(forward) > 重定向(redirect) @@ -147,7 +157,7 @@ Servlet 生命周期如下: - 重定向(redirect)是两次 - 转发(forward)是一次 -### 3.2. get 请求和 post 请求的区别 +### get 请求和 post 请求的区别 ![img](https://upload-images.jianshu.io/upload_images/7779232-5be5ae990207f9d2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/814/format/webp) @@ -162,7 +172,7 @@ Servlet 生命周期如下: - 安全性高 - 请的求的数据内容放置在 HTML HEADER 中 -### 3.3. 用户在浏览器中输入 URL 之后,发什么了什么?写出请求和响应的流程 +### 用户在浏览器中输入 URL 之后,发什么了什么?写出请求和响应的流程 1. 域名解析 2. TCP 三次握手 @@ -174,12 +184,12 @@ Servlet 生命周期如下: 8. 服务器发送数据 9. TCP 连接关闭 -### 3.4. 什么是 Web Service? +### 什么是 Web Service? 1. WebService 就是一个应用程序,它向外界暴露出一个能够通过 Web 进行调用的 API。 2. 它是基于 HTTP 协议传输数据,这使得运行在不同机上的不同应用程序,无须借助附加的、专门的第三方 软件或硬件,就可以相互交换数据或集成。 -### 3.5. 会话跟踪技术有哪些? +### 会话跟踪技术有哪些? 由于 HTTP 协议本身是无状态的,服务器为了区分不同的用户,就需要对用户会话进行跟踪,简单的说就是为用户进行登记,为用户分配唯一的 ID,下一次用户在请求中包含此 ID,服务器根据此判断到底是哪一个用户。 @@ -196,7 +206,7 @@ Servlet 生命周期如下: - 与上面三种方式不同的是,HttpSession 放在服务器的内存中,因此不要将过大的对象放在里面,即使目前的 Servlet 容器可以在内存将满时将 HttpSession 中的对象移到其他存储设备中,但是这样势必影响性能。 - 添加到 HttpSession 中 的值可以是任意 Java 对象,这个对象最好实现了 Serializable 接口,这样 Servlet 容器在必要的时候可以将其序列 化到文件中,否则在序列化时就会出现异常。 -### 3.6. 响应结果状态码有哪些,并给出中文含义? +### 响应结果状态码有哪些,并给出中文含义? - `1**`:信息性状态码 - `2**`:成功状态码 @@ -216,7 +226,7 @@ Servlet 生命周期如下: - 500:服务器端在执行请求时发生了错误 - 503:服务器暂时处于超负载或正在进行停机维护,现在无法处理请求 -### 3.7. XML 文档定义有几种形式?它们之间有何本质区别?解析 XML 文档有哪几种方式? +### XML 文档定义有几种形式?它们之间有何本质区别?解析 XML 文档有哪几种方式? (1)XML 文档有两种约束方式: @@ -253,7 +263,7 @@ Servlet 生命周期如下: - 4)XMLWriter.write("..")-- 写出 - 5)XMLWriter.close()-- 关闭输出流 -## 4. 参考资料 +## 参考资料 - https://blog.csdn.net/YM_IlY/article/details/81266959 - https://www.jianshu.com/p/f073dde56262 diff --git a/docs/01.JavaEE/README.md b/docs/02.JavaEE/01.JavaWeb/README.md similarity index 55% rename from docs/01.JavaEE/README.md rename to docs/02.JavaEE/01.JavaWeb/README.md index 107f9c85..5f07df05 100644 --- a/docs/01.JavaEE/README.md +++ b/docs/02.JavaEE/01.JavaWeb/README.md @@ -1,18 +1,26 @@ --- -title: JavaEE -date: 2020-08-24 19:41:46 -permalink: /pages/d14fbc/ +title: JavaWeb +categories: + - 编程 + - Java + - JavaWeb +tags: + - JavaWeb +hidden: true +abbrlink: 99720b1c +date: 2020-02-07 23:04:47 +permalink: /pages/c1cee9/ --- -# ☕ JavaEE +# ☕ JavaWeb ## 知识点 -- [JavaEE 面经](01.JavaEE面经.md) -- [JavaEE 之 Servlet 指南](02.JavaEE之Servlet指南.md) -- [JavaEE 之 Jsp 指南](03.JavaEE之Jsp指南.md) -- [JavaEE 之 Filter 和 Listener](04.JavaEE之Filter和Listener.md) -- [JavaEE 之 Cookie 和 Session](05.JavaEE之Cookie和Session.md) +- [JavaWeb 之 Servlet 指南](01.JavaWeb之Servlet指南.md) +- [JavaWeb 之 Jsp 指南](01.JavaWeb之Servlet指南.md) +- [JavaWeb 之 Filter 和 Listener](03.JavaWeb之Filter和Listener.md) +- [JavaWeb 之 Cookie 和 Session](04.JavaWeb之Cookie和Session.md) +- [JavaWeb 面经](99.JavaWeb面经.md) ## 学习资料 diff --git "a/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/01.Tomcat\345\272\224\347\224\250\346\214\207\345\215\227.md" "b/docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/01.Tomcat/01.Tomcat\345\277\253\351\200\237\345\205\245\351\227\250.md" similarity index 97% rename from "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/01.Tomcat\345\272\224\347\224\250\346\214\207\345\215\227.md" rename to "docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/01.Tomcat/01.Tomcat\345\277\253\351\200\237\345\205\245\351\227\250.md" index 1a6a4612..77264e08 100644 --- "a/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/01.Tomcat\345\272\224\347\224\250\346\214\207\345\215\227.md" +++ "b/docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/01.Tomcat/01.Tomcat\345\277\253\351\200\237\345\205\245\351\227\250.md" @@ -1,9 +1,20 @@ --- -title: Tomcat应用指南 -date: 2022-02-18 08:53:11 -permalink: /pages/47a72b/ +title: Tomcat 快速入门 +categories: + - 编程 + - Java + - 服务器 +tags: + - Java + - JavaWeb + - 服务器 + - Tomcat +abbrlink: ea4ca089 +date: 2022-02-17 22:34:30 +permalink: /pages/c50d2b/ --- -# Tomcat 应用指南 + +# Tomcat 快速入门 > 🎁 版本说明 > @@ -11,32 +22,6 @@ permalink: /pages/47a72b/ > > 环境要求:JDK7+ - - -- [1. Tomcat 简介](#1-tomcat-简介) - - [1.1. Tomcat 是什么](#11-tomcat-是什么) - - [1.2. Tomcat 重要目录](#12-tomcat-重要目录) - - [1.3. web 工程发布目录结构](#13-web-工程发布目录结构) - - [1.4. Tomcat 功能](#14-tomcat-功能) -- [2. Tomcat 入门](#2-tomcat-入门) - - [2.1. 安装](#21-安装) - - [2.2. 配置](#22-配置) - - [2.3. 启动](#23-启动) -- [3. Tomcat 架构](#3-tomcat-架构) - - [3.1. Service](#31-service) - - [3.2. 连接器](#32-连接器) - - [3.3. 容器](#33-容器) -- [4. Tomcat 生命周期](#4-tomcat-生命周期) - - [4.1. Tomcat 的启动过程](#41-tomcat-的启动过程) - - [4.2. Web 应用的部署方式](#42-web-应用的部署方式) - - [4.3. LifeCycle](#43-lifecycle) - - [4.4. Connector 流程](#44-connector-流程) - - [4.5. Comet](#45-comet) - - [4.6. 异步 Servlet](#46-异步-servlet) -- [5. 参考资料](#5-参考资料) - - - ## 1. Tomcat 简介 ### 1.1. Tomcat 是什么 @@ -441,11 +426,11 @@ Tomcat 设计了 3 个组件来实现这 3 个功能,分别是 **`EndPoint`** ![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201027091819.png) -#### ProtocolHandler 组件 +#### 3.2.1. ProtocolHandler 组件 **连接器用 ProtocolHandler 接口来封装通信协议和 I/O 模型的差异**。ProtocolHandler 内部又分为 EndPoint 和 Processor 模块,EndPoint 负责底层 Socket 通信,Proccesor 负责应用层协议解析。 -##### EndPoint +##### 3.2.1.1. EndPoint EndPoint 是通信端点,即通信监听的接口,是具体的 Socket 接收和发送处理器,是对传输层的抽象,因此 EndPoint 是用来实现 TCP/IP 协议的。 @@ -453,7 +438,7 @@ EndPoint 是一个接口,对应的抽象实现类是 AbstractEndpoint,而 Ab 其中 Acceptor 用于监听 Socket 连接请求。SocketProcessor 用于处理接收到的 Socket 请求,它实现 Runnable 接口,在 Run 方法里调用协议处理组件 Processor 进行处理。为了提高处理能力,SocketProcessor 被提交到线程池来执行。而这个线程池叫作执行器(Executor)。 -##### Processor +##### 3.2.1.2. Processor 如果说 EndPoint 是用来实现 TCP/IP 协议的,那么 Processor 用来实现 HTTP 协议,Processor 接收来自 EndPoint 的 Socket,读取字节流解析成 Tomcat Request 和 Response 对象,并通过 Adapter 将其提交到容器处理,Processor 是对应用层协议的抽象。 @@ -463,7 +448,7 @@ Processor 是一个接口,定义了请求的处理等方法。它的抽象实 从图中我们看到,EndPoint 接收到 Socket 连接后,生成一个 SocketProcessor 任务提交到线程池去处理,SocketProcessor 的 Run 方法会调用 Processor 组件去解析应用层协议,Processor 通过解析生成 Request 对象后,会调用 Adapter 的 Service 方法。 -#### Adapter +#### 3.2.2. Adapter **连接器通过适配器 Adapter 调用容器**。 @@ -480,7 +465,7 @@ Tomcat 设计了 4 种容器,分别是 Engine、Host、Context 和 Wrapper。 - **Context** - Web 应用上下文,包含多个 Wrapper,负责 web 配置的解析、管理所有的 Web 资源; - **Wrapper** - 最底层的容器,是对 Servlet 的封装,负责 Servlet 实例的创 建、执行和销毁。 -#### 请求分发 Servlet 过程 +#### 3.3.1. 请求分发 Servlet 过程 Tomcat 是怎么确定请求是由哪个 Wrapper 容器里的 Servlet 来处理的呢?答案是,Tomcat 是用 Mapper 组件来完成这个任务的。 @@ -497,7 +482,7 @@ Tomcat 是怎么确定请求是由哪个 Wrapper 容器里的 Servlet 来处理 这个路由分发过程具体是怎么实现的呢?答案是使用 Pipeline-Valve 管道。 -#### Pipeline-Value +#### 3.3.2. Pipeline-Value Pipeline 可以理解为现实中的管道,Valve 为管道中的阀门,Request 和 Response 对象在管道中经过各个阀门的处理和控制。 @@ -534,7 +519,7 @@ connector.getService().getContainer().getPipeline().getFirst().invoke(request, r 4. `Server` 负责管理 `Service` 组件,它会调用 `Service` 的 `start` 方法。 5. `Service` 负责管理 `Connector` 和顶层容器 `Engine`,它会调用 `Connector` 和 `Engine` 的 `start` 方法。 -#### Catalina 组件 +#### 4.1.1. Catalina 组件 Catalina 的职责就是解析 server.xml 配置,并据此实例化 Server。接下来,调用 Server 组件的 init 方法和 start 方法,将 Tomcat 启动起来。 @@ -600,7 +585,7 @@ protected class CatalinaShutdownHook extends Thread { Tomcat 的“关闭钩子”实际上就执行了 `Server` 的 `stop` 方法,`Server` 的 `stop` 方法会释放和清理所有的资源。 -#### Server 组件 +#### 4.1.2. Server 组件 Server 组件的具体实现类是 StandardServer,Server 继承了 LifeCycleBase,它的生命周期被统一管理,并且它的子组件是 Service,因此它还需要管理 Service 的生命周期,也就是说在启动时调用 Service 组件的启动方法,在停止时调用它们的停止方法。Server 在内部维护了若干 Service 组件,它是以数组来保存的。 @@ -641,7 +626,7 @@ Server 并没有一开始就分配一个很长的数组,而是在添加的过 在 await 方法里会创建一个 Socket 监听 8005 端口,并在一个死循环里接收 Socket 上的连接请求,如果有新的连接到来就建立连接,然后从 Socket 中读取数据;如果读到的数据是停止命令“SHUTDOWN”,就退出循环,进入 stop 流程。 -#### Service 组件 +#### 4.1.3. Service 组件 Service 组件的具体实现类是 StandardService。 @@ -705,7 +690,7 @@ protected void startInternal() throws LifecycleException { 从启动方法可以看到,Service 先启动了 Engine 组件,再启动 Mapper 监听器,最后才是启动连接器。这很好理解,因为内层组件启动好了才能对外提供服务,才能启动外层的连接器组件。而 Mapper 也依赖容器组件,容器组件启动好了才能监听它们的变化,因此 Mapper 和 MapperListener 在容器组件之后启动。组件停止的顺序跟启动顺序正好相反的,也是基于它们的依赖关系。 -#### Engine 组件 +#### 4.1.4. Engine 组件 Engine 本质是一个容器,因此它继承了 ContainerBase 基类,并且实现了 Engine 接口。 @@ -748,7 +733,7 @@ ContextConfig 解析 web.xml 顺序: ![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201118105012.png) -#### 4.2.3. 请求处理过程 +#### 4.3.1. 请求处理过程

    -#### 4.3.1. 阻塞 IO +#### 4.4.1. 阻塞 IO
    -#### 4.3.2. 非阻塞 IO +#### 4.4.2. 非阻塞 IO
    -#### 4.3.3. IO 多路复用 +#### 4.4.3. IO 多路复用
    @@ -787,7 +772,7 @@ ContextConfig 解析 web.xml 顺序: IO 多路复用的好处在于可同时监听多个 socket 的可读和可写事件,这样就能使得应用可以同时监听多个 socket,释放了应用线程资源。 -#### 4.3.4. Tomcat 各类 Connector 对比 +#### 4.4.4. Tomcat 各类 Connector 对比
    diff --git "a/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/02.Tomcat\350\277\236\346\216\245\345\231\250.md" "b/docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/01.Tomcat/02.Tomcat\350\277\236\346\216\245\345\231\250.md" similarity index 97% rename from "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/02.Tomcat\350\277\236\346\216\245\345\231\250.md" rename to "docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/01.Tomcat/02.Tomcat\350\277\236\346\216\245\345\231\250.md" index 38f5de61..d76dc06d 100644 --- "a/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/02.Tomcat\350\277\236\346\216\245\345\231\250.md" +++ "b/docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/01.Tomcat/02.Tomcat\350\277\236\346\216\245\345\231\250.md" @@ -1,32 +1,20 @@ --- title: Tomcat连接器 -date: 2022-02-18 08:53:11 -permalink: /pages/7a6f1b/ +categories: + - 编程 + - Java + - 服务器 +tags: + - Java + - JavaWeb + - 服务器 + - Tomcat +abbrlink: 23822cab +date: 2022-02-17 22:34:30 +permalink: /pages/3c954b/ --- -# Tomcat 连接器 - - -- [1. NioEndpoint 组件](#1-nioendpoint-组件) - - [1.1. LimitLatch](#11-limitlatch) - - [1.2. Acceptor](#12-acceptor) - - [1.3. Poller](#13-poller) - - [1.4. SocketProcessor](#14-socketprocessor) -- [2. Nio2Endpoint 组件](#2-nio2endpoint-组件) - - [2.1. Nio2Acceptor](#21-nio2acceptor) - - [2.2. Nio2SocketWrapper](#22-nio2socketwrapper) -- [3. AprEndpoint 组件](#3-aprendpoint-组件) - - [3.1. AprEndpoint 工作流程](#31-aprendpoint-工作流程) - - [3.2. APR 提升性能的秘密](#32-apr-提升性能的秘密) -- [4. Executor 组件](#4-executor-组件) - - [4.1. Tomcat 定制线程池](#41-tomcat-定制线程池) - - [4.2. Tomcat 定制任务队列](#42-tomcat-定制任务队列) -- [5. WebSocket 组件](#5-websocket-组件) - - [5.1. WebSocket 加载](#51-websocket-加载) - - [5.2. WebSocket 请求处理](#52-websocket-请求处理) -- [6. 参考资料](#6-参考资料) - - +# Tomcat 连接器 ## 1. NioEndpoint 组件 @@ -232,7 +220,7 @@ Tomcat 本身是 Java 编写的,为了调用 C 语言编写的 APR,需要通 ![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127145740.jpg) -#### Acceptor +#### 3.1.1. Acceptor Accpetor 的功能就是监听连接,接收并建立连接。它的本质就是调用了四个操作系统 API:socket、bind、listen 和 accept。那 Java 语言如何直接调用 C 语言 API 呢?答案就是通过 JNI。具体来说就是两步:先封装一个 Java 类,在里面定义一堆用**native 关键字**修饰的方法,像下面这样。 @@ -270,7 +258,7 @@ Java_org_apache_tomcat_jni_Socket_bind(JNIEnv *e, jlong sock,jlong sa) 专栏里我就不展开 JNI 的细节了,你可以[扩展阅读](http://jnicookbook.owsiak.org/contents/)获得更多信息和例子。我们要注意的是函数名字要符合 JNI 的规范,以及 Java 和 C 语言如何互相传递参数,比如在 C 语言有指针,Java 没有指针的概念,所以在 Java 中用 long 类型来表示指针。AprEndpoint 的 Acceptor 组件就是调用了 APR 实现的四个 API。 -#### Poller +#### 3.1.2. Poller Acceptor 接收到一个新的 Socket 连接后,按照 NioEndpoint 的实现,它会把这个 Socket 交给 Poller 去查询 I/O 事件。AprEndpoint 也是这样做的,不过 AprEndpoint 的 Poller 并不是调用 Java NIO 里的 Selector 来查询 Socket 的状态,而是通过 JNI 调用 APR 中的 poll 方法,而 APR 又是调用了操作系统的 epoll API 来实现的。 @@ -319,7 +307,7 @@ int bytesRead = socketChannel.read(buf); Tomcat 中的 AprEndpoint 就是通过 DirectByteBuffer 来接收数据的,而 NioEndpoint 和 Nio2Endpoint 是通过 HeapByteBuffer 来接收数据的。你可能会问,NioEndpoint 和 Nio2Endpoint 为什么不用 DirectByteBuffer 呢?这是因为本地内存不好管理,发生内存泄漏难以定位,从稳定性考虑,NioEndpoint 和 Nio2Endpoint 没有去冒这个险。 -#### sendfile +#### 3.2.1. sendfile 我们再来考虑另一个网络通信的场景,也就是静态文件的处理。浏览器通过 Tomcat 来获取一个 HTML 文件,而 Tomcat 的处理逻辑无非是两步: diff --git "a/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/03.Tomcat\345\256\271\345\231\250.md" "b/docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/01.Tomcat/03.Tomcat\345\256\271\345\231\250.md" similarity index 95% rename from "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/03.Tomcat\345\256\271\345\231\250.md" rename to "docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/01.Tomcat/03.Tomcat\345\256\271\345\231\250.md" index fdd8c6ca..d72a1c6b 100644 --- "a/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/03.Tomcat\345\256\271\345\231\250.md" +++ "b/docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/01.Tomcat/03.Tomcat\345\256\271\345\231\250.md" @@ -1,33 +1,22 @@ --- title: Tomcat容器 -date: 2022-02-18 08:53:11 -permalink: /pages/d11fcc/ +categories: + - 编程 + - Java + - 服务器 +tags: + - Java + - JavaWeb + - 服务器 + - Tomcat +abbrlink: fc56014a +date: 2022-02-17 22:34:30 +permalink: /pages/2fea08/ --- + # Tomcat 容器 - - -- [1. Tomcat 实现热部署和热加载](#1-tomcat-实现热部署和热加载) - - [1.1. ContainerBackgroundProcessor 实现](#11-containerbackgroundprocessor-实现) - - [1.2. backgroundProcess 方法](#12-backgroundprocess-方法) - - [1.3. Tomcat 热加载](#13-tomcat-热加载) - - [1.4. Tomcat 热部署](#14-tomcat-热部署) -- [2. Tomcat 的类加载机制](#2-tomcat-的类加载机制) - - [2.1. findClass 方法](#21-findclass-方法) - - [2.2. loadClass 方法](#22-loadclass-方法) - - [2.3. Tomcat 实现应用隔离](#23-tomcat-实现应用隔离) -- [3. Tomcat 实现 Servlet 规范](#3-tomcat-实现-servlet-规范) - - [3.1. Servlet 管理](#31-servlet-管理) - - [3.2. Filter 管理](#32-filter-管理) - - [3.3. Listener 管理](#33-listener-管理) -- [4. Tomcat 支持异步 Servlet](#4-tomcat-支持异步servlet) - - [4.1. 异步示例](#41-异步示例) - - [4.2. 异步 Servlet 原理](#42-异步-servlet-原理) -- [5. 参考资料](#5-参考资料) - - - -## 1. Tomcat 实现热部署和热加载 +## Tomcat 实现热部署和热加载 - 热加载的实现方式是 Web 容器启动一个后台线程,定期检测类文件的变化,如果有变化,就重新加载类,在这个过程中不会清空 Session ,一般用在开发环境。 - 热部署原理类似,也是由后台线程定时检测 Web 应用的变化,但它会重新加载整个 Web 应用。这种方式会清空 Session,比热加载更加干净、彻底,一般用在生产环境。 @@ -44,7 +33,7 @@ bgFuture = exec.scheduleWithFixedDelay( 第一个参数就是要周期性执行的任务类 ContainerBackgroundProcessor,它是一个 Runnable,同时也是 ContainerBase 的内部类,ContainerBase 是所有容器组件的基类,我们来回忆一下容器组件有哪些,有 Engine、Host、Context 和 Wrapper 等,它们具有父子关系。 -### 1.1. ContainerBackgroundProcessor 实现 +### ContainerBackgroundProcessor 实现 我们接来看 ContainerBackgroundProcessor 具体是如何实现的。 @@ -80,7 +69,7 @@ protected class ContainerBackgroundProcessor implements Runnable { 这样的设计意味着什么呢?我们只需要在顶层容器,也就是 Engine 容器中启动一个后台线程,那么这个线程**不但会执行 Engine 容器的周期性任务,它还会执行所有子容器的周期性任务**。 -### 1.2. backgroundProcess 方法 +### backgroundProcess 方法 上述代码都是在基类 ContainerBase 中实现的,那具体容器类需要做什么呢?其实很简单,如果有周期性任务要执行,就实现 backgroundProcess 方法;如果没有,就重用基类 ContainerBase 的方法。ContainerBase 的 backgroundProcess 方法实现如下: @@ -121,7 +110,7 @@ public void backgroundProcess() { 总之,有了 ContainerBase 中的后台线程和 backgroundProcess 方法,各种子容器和通用组件不需要各自弄一个后台线程来处理周期性任务,这样的设计显得优雅和整洁。 -### 1.3. Tomcat 热加载 +### Tomcat 热加载 有了 ContainerBase 的周期性任务处理“框架”,作为具体容器子类,只需要实现自己的周期性任务就行。而 Tomcat 的热加载,就是在 Context 容器中实现的。Context 容器的 backgroundProcess 方法是这样实现的: @@ -169,7 +158,7 @@ public void backgroundProcess() { ``` -### 1.4. Tomcat 热部署 +### Tomcat 热部署 我们再来看看热部署,热部署跟热加载的本质区别是,热部署会重新部署 Web 应用,原来的 Context 对象会整个被销毁掉,因此这个 Context 所关联的一切资源都会被销毁,包括 Session。 @@ -214,11 +203,11 @@ protected void check() { 因此 HostConfig 做的事情都是比较“宏观”的,它不会去检查具体类文件或者资源文件是否有变化,而是检查 Web 应用目录级别的变化。 -## 2. Tomcat 的类加载机制 +## Tomcat 的类加载机制 Tomcat 的自定义类加载器 `WebAppClassLoader` 打破了双亲委派机制,它**首先自己尝试去加载某个类,如果找不到再代理给父类加载器**,其目的是优先加载 Web 应用自己定义的类。具体实现就是重写 ClassLoader 的两个方法:findClass 和 loadClass。 -### 2.1. findClass 方法 +### findClass 方法 我们先来看看 findClass 方法的实现,为了方便理解和阅读,我去掉了一些细节: @@ -257,7 +246,7 @@ public Class findClass(String name) throws ClassNotFoundException { 2. 如果没有找到,交给父加载器去查找,它的父加载器就是上面提到的系统类加载器 AppClassLoader。 3. 如何父加载器也没找到这个类,抛出 ClassNotFound 异常。 -### 2.2. loadClass 方法 +### loadClass 方法 接着我们再来看 Tomcat 类加载器的 loadClass 方法的实现,同样我也去掉了一些细节: @@ -338,7 +327,7 @@ loadClass 方法稍微复杂一点,主要有六个步骤: 从上面的过程我们可以看到,Tomcat 的类加载器打破了双亲委派机制,没有一上来就直接委托给父加载器,而是先在本地目录下加载,为了避免本地目录下的类覆盖 JRE 的核心类,先尝试用 JVM 扩展类加载器 ExtClassLoader 去加载。那为什么不先用系统类加载器 AppClassLoader 去加载?很显然,如果是这样的话,那就变成双亲委派机制了,这就是 Tomcat 类加载器的巧妙之处。 -### 2.3. Tomcat 实现应用隔离 +### Tomcat 实现应用隔离 Tomcat 作为 Web 容器,需要解决以下问题: @@ -372,7 +361,7 @@ Tomcat 的解决方案是自定义一个类加载器 WebAppClassLoader, 并且 老办法,还是再增加一个 CommonClassLoader,作为 CatalinaClassloader 和 SharedClassLoader 的父加载器。CommonClassLoader 能加载的类都可以被 CatalinaClassLoader 和 SharedClassLoader 使用,而 CatalinaClassLoader 和 SharedClassLoader 能加载的类则与对方相互隔离。WebAppClassLoader 可以使用 SharedClassLoader 加载到的类,但各个 WebAppClassLoader 实例之间相互隔离。 -## 3. Tomcat 实现 Servlet 规范 +## Tomcat 实现 Servlet 规范 Servlet 容器最重要的任务就是创建 Servlet 的实例并且调用 Servlet。 @@ -382,7 +371,7 @@ Servlet 容器最重要的任务就是创建 Servlet 的实例并且调用 Servl 除此以外,Servlet 规范中还有两个重要特性:Listener 和 Filter,Tomcat 也需要创建它们的实例,并在合适的时机去调用它们的方法。 -### 3.1. Servlet 管理 +### Servlet 管理 Tomcat 是用 Wrapper 容器来管理 Servlet 的,那 Wrapper 容器具体长什么样子呢?我们先来看看它里面有哪些关键的成员变量: @@ -444,7 +433,7 @@ StandardWrapperValve 的 invoke 方法比较复杂,去掉其他异常处理的 接下来我们来看 Filter 的实现原理。 -### 3.2. Filter 管理 +### Filter 管理 我们知道,跟 Servlet 一样,Filter 也可以在`web.xml`文件里进行配置,不同的是,Filter 的作用域是整个 Web 应用,因此 Filter 的实例是在 Context 容器中进行管理的,Context 容器用 Map 集合来保存 Filter。 @@ -517,7 +506,7 @@ public void doFilter(ServletRequest request, ServletResponse response, Filter 链跟 Tomcat 的 Pipeline-Valve 本质都是责任链模式,但是在具体实现上稍有不同,你可以细细体会一下。 -### 3.3. Listener 管理 +### Listener 管理 我们接着聊 Servlet 规范里 Listener。跟 Filter 一样,Listener 也是一种扩展机制,你可以监听容器内部发生的事件,主要有两类事件: @@ -555,9 +544,9 @@ for (int i = 0; i < instances.length; i++) { 需要注意的是,这里的 ServletContextListener 接口是一种留给用户的扩展机制,用户可以实现这个接口来定义自己的监听器,监听 Context 容器的启停事件。Spring 就是这么做的。ServletContextListener 跟 Tomcat 自己的生命周期事件 LifecycleListener 是不同的。LifecycleListener 定义在生命周期管理组件中,由基类 LifeCycleBase 统一管理。 -## 4. Tomcat 支持异步 Servlet +## Tomcat 支持异步 Servlet -### 4.1. 异步示例 +### 异步示例 ```java @WebServlet(urlPatterns = {"/async"}, asyncSupported = true) @@ -598,7 +587,7 @@ public class AsyncServlet extends HttpServlet { 这里请你注意,虽然异步 Servlet 允许用更长的时间来处理请求,但是也有超时限制的,默认是 30 秒,如果 30 秒内请求还没处理完,Tomcat 会触发超时机制,向浏览器返回超时错误,如果这个时候你的 Web 应用再调用`ctx.complete`方法,会得到一个 IllegalStateException 异常。 -### 4.2. 异步 Servlet 原理 +### 异步 Servlet 原理 通过上面的例子,相信你对 Servlet 的异步实现有了基本的理解。要理解 Tomcat 在这个过程都做了什么事情,关键就是要弄清楚`req.startAsync`方法和`ctx.complete`方法都做了什么。 @@ -728,7 +717,7 @@ public boolean processSocket(SocketWrapperBase socketWrapper, 请你注意 createSocketProcessor 函数的第二个参数是 SocketEvent,这里我们传入的是 OPEN_READ。通过这个参数,我们就能控制 SocketProcessor 的行为,因为我们不需要再把请求发送到容器进行处理,只需要向浏览器端发送数据,并且重新在这个 Socket 上监听新的请求就行了。 -## 5. 参考资料 +## 参考资料 - **官方** - [Tomcat 官方网站](http://tomcat.apache.org/) diff --git "a/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/04.Tomcat\344\274\230\345\214\226.md" "b/docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/01.Tomcat/04.Tomcat\344\274\230\345\214\226.md" similarity index 87% rename from "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/04.Tomcat\344\274\230\345\214\226.md" rename to "docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/01.Tomcat/04.Tomcat\344\274\230\345\214\226.md" index d19ad590..67cefb7e 100644 --- "a/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/04.Tomcat\344\274\230\345\214\226.md" +++ "b/docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/01.Tomcat/04.Tomcat\344\274\230\345\214\226.md" @@ -1,37 +1,33 @@ --- title: Tomcat优化 -date: 2022-02-18 08:53:11 -permalink: /pages/942797/ +categories: + - 编程 + - Java + - 服务器 +tags: + - Java + - JavaWeb + - 服务器 + - Tomcat +abbrlink: c37025e9 +date: 2022-02-17 22:34:30 +permalink: /pages/6c22f4/ --- -# Tomcat 优化 - - -- [1. Tomcat 启动优化](#1-tomcat-启动优化) - - [1.1. 清理 Tomcat](#11-清理-tomcat) - - [1.2. 禁止 Tomcat TLD 扫描](#12-禁止-tomcat-tld-扫描) - - [1.3. 关闭 WebSocket 支持](#13-关闭-websocket-支持) - - [1.4. 关闭 JSP 支持](#14-关闭-jsp-支持) - - [1.5. 禁止扫描 Servlet 注解](#15-禁止扫描-servlet-注解) - - [1.6. 配置 Web-Fragment 扫描](#16-配置-web-fragment-扫描) - - [1.7. 随机数熵源优化](#17-随机数熵源优化) - - [1.8. 并行启动多个 Web 应用](#18-并行启动多个-web-应用) -- [2. 参考资料](#2-参考资料) - - +# Tomcat 优化 -## 1. Tomcat 启动优化 +## Tomcat 启动优化 如果 Tomcat 启动比较慢,可以考虑一些优化点 -### 1.1. 清理 Tomcat +### 清理 Tomcat - **清理不必要的 Web 应用**:首先我们要做的是删除掉 webapps 文件夹下不需要的工程,一般是 host-manager、example、doc 等这些默认的工程,可能还有以前添加的但现在用不着的工程,最好把这些全都删除掉。 - **清理 XML 配置文件**:Tomcat 在启动时会解析所有的 XML 配置文件,解析 XML 较为耗时,所以应该尽量保持配置文件的简洁。 - **清理 JAR 文件**:JVM 的类加载器在加载类时,需要查找每一个 JAR 文件,去找到所需要的类。如果删除了不需要的 JAR 文件,查找的速度就会快一些。这里请注意:**Web 应用中的 lib 目录下不应该出现 Servlet API 或者 Tomcat 自身的 JAR**,这些 JAR 由 Tomcat 负责提供。 - **清理其他文件**:及时清理日志,删除 logs 文件夹下不需要的日志文件。同样还有 work 文件夹下的 catalina 文件夹,它其实是 Tomcat 把 JSP 转换为 Class 文件的工作目录。有时候我们也许会遇到修改了代码,重启了 Tomcat,但是仍没效果,这时候便可以删除掉这个文件夹,Tomcat 下次启动的时候会重新生成。 -### 1.2. 禁止 Tomcat TLD 扫描 +### 禁止 Tomcat TLD 扫描 Tomcat 为了支持 JSP,在应用启动的时候会扫描 JAR 包里面的 TLD 文件,加载里面定义的标签库。所以在 Tomcat 的启动日志里,你可能会碰到这种提示: @@ -57,7 +53,7 @@ Tomcat 的意思是,我扫描了你 Web 应用下的 JAR 包,发现 JAR 包 tomcat.util.scan.StandardJarScanFilter.jarsToSkip=xxx.jar ``` -### 1.3. 关闭 WebSocket 支持 +### 关闭 WebSocket 支持 Tomcat 会扫描 WebSocket 注解的 API 实现,比如 `@ServerEndpoint` 注解的类。如果不需要使用 WebSockets 就可以关闭它。具体方法是,找到 Tomcat 的 `conf/` 目录下的 `context.xml` 文件,给 `Context` 标签加一个 **`containerSciFilter`** 的属性: @@ -69,7 +65,7 @@ Tomcat 会扫描 WebSocket 注解的 API 实现,比如 `@ServerEndpoint` 注 更进一步,如果你不需要 WebSockets 这个功能,你可以把 Tomcat `lib` 目录下的 `websocket-api.jar` 和 `tomcat-websocket.jar` 这两个 JAR 文件删除掉,进一步提高性能。 -### 1.4. 关闭 JSP 支持 +### 关闭 JSP 支持 如果不需要使用 JSP,可以关闭 JSP 功能: @@ -87,7 +83,7 @@ Tomcat 会扫描 WebSocket 注解的 API 实现,比如 `@ServerEndpoint` 注 ``` -### 1.5. 禁止扫描 Servlet 注解 +### 禁止扫描 Servlet 注解 Servlet 3.0 引入了注解 Servlet,Tomcat 为了支持这个特性,会在 Web 应用启动时扫描你的类文件,因此如果你没有使用 Servlet 注解这个功能,可以告诉 Tomcat 不要去扫描 Servlet 注解。具体配置方法是,在你的 Web 应用的`web.xml`文件中,设置``元素的属性`metadata-complete="true"`,像下面这样。 @@ -98,7 +94,7 @@ Servlet 3.0 引入了注解 Servlet,Tomcat 为了支持这个特性,会在 W `metadata-complete` 的意思是,`web.xml` 里配置的 Servlet 是完整的,不需要再去库类中找 Servlet 的定义。 -### 1.6. 配置 Web-Fragment 扫描 +### 配置 Web-Fragment 扫描 Servlet 3.0 还引入了“Web 模块部署描述符片段”的 `web-fragment.xml`,这是一个部署描述文件,可以完成 `web.xml` 的配置功能。而这个 `web-fragment.xml` 文件必须存放在 JAR 文件的 `META-INF` 目录下,而 JAR 包通常放在 `WEB-INF/lib` 目录下,因此 Tomcat 需要对 JAR 文件进行扫描才能支持这个功能。 @@ -112,7 +108,7 @@ Servlet 3.0 还引入了“Web 模块部署描述符片段”的 `web-fragment.x ``` -### 1.7. 随机数熵源优化 +### 随机数熵源优化 Tomcat 7 以上的版本依赖 Java 的 SecureRandom 类来生成随机数,比如 Session ID。而 JVM 默认使用阻塞式熵源(`/dev/random`), 在某些情况下就会导致 Tomcat 启动变慢。当阻塞时间较长时, 你会看到这样一条警告日志: @@ -133,7 +129,7 @@ INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRN 这里请你注意,`/dev/./urandom` 中间有个 `./` 的原因是 Oracle JRE 中的 Bug,Java 8 里面的 SecureRandom 类已经修正这个 Bug。 阻塞式的熵源(`/dev/random`)安全性较高, 非阻塞式的熵源(`/dev/./urandom`)安全性会低一些,因为如果你对随机数的要求比较高, 可以考虑使用硬件方式生成熵源。 -### 1.8. 并行启动多个 Web 应用 +### 并行启动多个 Web 应用 Tomcat 启动的时候,默认情况下 Web 应用都是一个一个启动的,等所有 Web 应用全部启动完成,Tomcat 才算启动完毕。如果在一个 Tomcat 下有多个 Web 应用,为了优化启动速度,你可以配置多个应用程序并行启动,可以通过修改 `server.xml` 中 Host 元素的 `startStopThreads` 属性来完成。`startStopThreads` 的值表示你想用多少个线程来启动你的 Web 应用,如果设成 0 表示你要并行启动 Web 应用,像下面这样的配置。 @@ -149,7 +145,7 @@ Tomcat 启动的时候,默认情况下 Web 应用都是一个一个启动的 需要注意的是,Engine 元素里也配置了这个参数,这意味着如果你的 Tomcat 配置了多个 Host(虚拟主机),Tomcat 会以并行的方式启动多个 Host。 -## 2. 参考资料 +## 参考资料 - **官方** - [Tomcat 官方网站](http://tomcat.apache.org/) diff --git "a/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/05.Tomcat\345\222\214Jetty.md" "b/docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/01.Tomcat/05.Tomcat\345\222\214Jetty.md" similarity index 79% rename from "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/05.Tomcat\345\222\214Jetty.md" rename to "docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/01.Tomcat/05.Tomcat\345\222\214Jetty.md" index 6ec34795..3bb92e84 100644 --- "a/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/05.Tomcat\345\222\214Jetty.md" +++ "b/docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/01.Tomcat/05.Tomcat\345\222\214Jetty.md" @@ -1,11 +1,23 @@ --- -title: tomcat-and-jetty -date: 2022-02-18 08:53:11 -permalink: /pages/0510e9/ +title: Tomcat 和 Jetty +categories: + - 编程 + - Java + - 服务器 +tags: + - Java + - JavaWeb + - 服务器 + - Tomcat + - Jetty +abbrlink: a6fd024b +date: 2022-02-17 22:34:30 +permalink: /pages/f1bba6/ --- + ## Tomcat 和 Jetty -Web容器Tomcat或Jetty,作为重要的系统中间件,连接着浏览器和你的Web应用,并且支撑着Web程序的运行,可以说,**弄懂了Tomcat和Jetty的原理,Java Web开发对你来说就毫无秘密可言**。 +Web 容器 Tomcat 或 Jetty,作为重要的系统中间件,连接着浏览器和你的 Web 应用,并且支撑着 Web 程序的运行,可以说,**弄懂了 Tomcat 和 Jetty 的原理,Java Web 开发对你来说就毫无秘密可言**。 ## Web 容器 @@ -19,4 +31,4 @@ Web容器Tomcat或Jetty,作为重要的系统中间件,连接着浏览器和 其他应用服务器比如 JBoss 和 WebLogic,它们不仅仅有 Servlet 容器的功能,也包含 EJB 容器,是完整的 Java EE 应用服务器。从这个角度看,Tomcat 和 Jetty 算是一个轻量级的应用服务器。 -在微服务架构日渐流行的今天,开发人员更喜欢稳定的、轻量级的应用服务器,并且应用程序用内嵌的方式来运行 Servlet 容器也逐渐流行起来。之所以选择轻量级,是因为在微服务架构下,我们把一个大而全的单体应用,拆分成一个个功能单一的微服务,在这个过程中,服务的数量必然要增加,但为了减少资源的消耗,并且降低部署的成本,我们希望运行服务的 Web 容器也是轻量级的,Web 容器本身应该消耗较少的内存和 CPU 资源,并且由应用本身来启动一个嵌入式的 Web 容器,而不是通过 Web 容器来部署和启动应用,这样可以降低应用部署的复杂度。 \ No newline at end of file +在微服务架构日渐流行的今天,开发人员更喜欢稳定的、轻量级的应用服务器,并且应用程序用内嵌的方式来运行 Servlet 容器也逐渐流行起来。之所以选择轻量级,是因为在微服务架构下,我们把一个大而全的单体应用,拆分成一个个功能单一的微服务,在这个过程中,服务的数量必然要增加,但为了减少资源的消耗,并且降低部署的成本,我们希望运行服务的 Web 容器也是轻量级的,Web 容器本身应该消耗较少的内存和 CPU 资源,并且由应用本身来启动一个嵌入式的 Web 容器,而不是通过 Web 容器来部署和启动应用,这样可以降低应用部署的复杂度。 diff --git "a/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/README.md" "b/docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/01.Tomcat/README.md" similarity index 72% rename from "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/README.md" rename to "docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/01.Tomcat/README.md" index dcbef596..a7fc606a 100644 --- "a/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/01.Tomcat/README.md" +++ "b/docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/01.Tomcat/README.md" @@ -1,14 +1,25 @@ --- title: Tomcat 教程 +categories: + - 编程 + - Java + - 服务器 +tags: + - Java + - JavaWeb + - 服务器 + - Tomcat +hidden: true +abbrlink: 3804ebfc date: 2022-02-18 08:53:11 -permalink: /pages/7efe4a/ +permalink: /pages/86288e/ --- # Tomcat 教程 ## 📖 内容 -- [Tomcat 应用指南](01.Tomcat应用指南.md) +- [Tomcat 快速入门](01.Tomcat快速入门.md) - [Tomcat 连接器](02.Tomcat连接器.md) - [Tomcat 容器](03.Tomcat容器.md) - [Tomcat 优化](04.Tomcat优化.md) diff --git "a/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/02.Jetty.md" "b/docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/02.Jetty.md" similarity index 98% rename from "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/02.Jetty.md" rename to "docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/02.Jetty.md" index 42908fd9..369b7409 100644 --- "a/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/02.Jetty.md" +++ "b/docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/02.Jetty.md" @@ -1,29 +1,22 @@ --- -title: jetty -date: 2022-02-18 08:53:11 -permalink: /pages/3e1c53/ +title: Jetty 快速入门 +categories: + - 编程 + - Java + - 服务器 +tags: + - Java + - JavaWeb + - 服务器 + - Jetty +abbrlink: 9709eee9 +date: 2022-02-17 22:34:30 +permalink: /pages/9ecdc1/ --- -# Jetty 应用指南 - +# Jetty 快速入门 -- [1. Jetty 简介](#1-jetty-简介) -- [2. Jetty 的使用](#2-jetty-的使用) - - [2.1. API 方式](#21-api-方式) - - [2.2. Maven 插件方式](#22-maven-插件方式) -- [3. Jetty 的架构](#3-jetty-的架构) - - [3.1. Jetty 架构简介](#31-jetty-架构简介) - - [3.2. Jetty 和 Tomcat 架构区别](#32-jetty-和-tomcat-架构区别) - - [3.3. Connector 组件](#33-connector-组件) - - [3.4. Handler 组件](#34-handler-组件) -- [4. Jetty 的线程策略](#4-jetty-的线程策略) - - [4.1. 传统 Selector 编程模型](#41-传统-selector-编程模型) - - [4.2. Jetty 的 Selector 编程模型](#42-jetty-的-selector-编程模型) -- [5. 参考资料](#5-参考资料) - - - -## 1. Jetty 简介 +## Jetty 简介 **jetty 是什么?** @@ -47,7 +40,7 @@ jetty 是轻量级的 web 服务器和 servlet 引擎。 jetty 非常适用于项目的开发、测试,因为非常快捷。如果想用于生产环境,则需要谨慎考虑,它不一定能像成熟的 Tomcat、Resin 等服务器一样支持企业级 Java EE 的需要。 -## 2. Jetty 的使用 +## Jetty 的使用 我觉得嵌入式启动方式的一个好处在于:可以直接运行项目,无需每次部署都得再配置服务器。 @@ -57,7 +50,7 @@ API 方式 maven 插件方式 -### 2.1. API 方式 +### API 方式 添加 maven 依赖 @@ -148,7 +141,7 @@ public class SplitFileServer [完整参考代码](https://github.com/dunwu/spring-notes) -### 2.2. Maven 插件方式 +### Maven 插件方式 如果你熟悉 maven,那么实在太简单了 @@ -257,9 +250,9 @@ mvn jetty:run ``` -## 3. Jetty 的架构 +## Jetty 的架构 -### 3.1. Jetty 架构简介 +### Jetty 架构简介 ![img](https://raw.githubusercontent.com/dunwu/images/dev/snap/20201127154145.jpg) @@ -271,13 +264,13 @@ Jetty Server 可以有多个 Connector 在不同的端口上监听客户请求 为了启动和协调上面的核心组件工作,Jetty 提供了一个 Server 类来做这个事情,它负责创建并初始化 Connector、Handler、ThreadPool 组件,然后调用 start 方法启动它们。 -### 3.2. Jetty 和 Tomcat 架构区别 +### Jetty 和 Tomcat 架构区别 对比一下 Tomcat 的整体架构图,你会发现 Tomcat 在整体上跟 Jetty 很相似,它们的第一个区别是 Jetty 中没有 Service 的概念,Tomcat 中的 Service 包装了多个连接器和一个容器组件,一个 Tomcat 实例可以配置多个 Service,不同的 Service 通过不同的连接器监听不同的端口;而 Jetty 中 Connector 是被所有 Handler 共享的。 第二个区别是,在 Tomcat 中每个连接器都有自己的线程池,而在 Jetty 中所有的 Connector 共享一个全局的线程池。 -### 3.3. Connector 组件 +### Connector 组件 跟 Tomcat 一样,Connector 的主要功能是对 I/O 模型和应用层协议的封装。I/O 模型方面,最新的 Jetty 9 版本只支持 NIO,因此 Jetty 的 Connector 设计有明显的 Java NIO 通信模型的痕迹。至于应用层协议方面,跟 Tomcat 的 Processor 一样,Jetty 抽象出了 Connection 组件来封装应用层协议的差异。 @@ -402,7 +395,7 @@ getEndPoint().fillInterested(_readCallback); 7. Connection 解析读到的数据,生成请求对象并交给 Handler 组件去处理。 -### 3.4. Handler 组件 +### Handler 组件 Jetty 的 Handler 设计是它的一大特色,Jetty 本质就是一个 Handler 管理器,Jetty 本身就提供了一些默认 Handler 来实现 Servlet 容器的功能,你也可以定义自己的 Handler 来添加到 Jetty 中,这体现了“**微内核 + 插件**”的设计思想。 @@ -467,9 +460,9 @@ SessionHandler 用来管理 Session。除此之外 WebAppContext 还有一些通 WebAppContext 会将这些 Handler 构建成一个执行链,通过这个链会最终调用到我们的业务 Servlet。 -## 4. Jetty 的线程策略 +## Jetty 的线程策略 -### 4.1. 传统 Selector 编程模型 +### 传统 Selector 编程模型 常规的 NIO 编程思路是,将 I/O 事件的侦测和请求的处理分别用不同的线程处理。具体过程是: @@ -477,7 +470,7 @@ WebAppContext 会将这些 Handler 构建成一个执行链,通过这个链会 在这个过程中按照职责划分,有两个线程在干活,一个是 I/O 事件检测线程,另一个是 I/O 事件处理线程。这样的好处是它们互不干扰和阻塞对方。 -### 4.2. Jetty 的 Selector 编程模型 +### Jetty 的 Selector 编程模型 将 I/O 事件检测和业务处理这两种工作分开的思路也有缺点:当 Selector 检测读就绪事件时,数据已经被拷贝到内核中的缓存了,同时 CPU 的缓存中也有这些数据了,我们知道 CPU 本身的缓存比内存快多了,这时当应用程序去读取这些数据时,如果用另一个线程去读,很有可能这个读线程使用另一个 CPU 核,而不是之前那个检测数据就绪的 CPU 核,这样 CPU 缓存中的数据就用不上了,并且线程切换也需要开销。 @@ -677,7 +670,7 @@ SelectorProducer 是 ManagedSelector 的内部类,SelectorProducer 实现了 E 2. 如果没有 I/O 事件就绪,就干点杂活,看看有没有客户提交了更新 Selector 上事件注册的任务,也就是上面提到的 SelectorUpdate 任务类。 3. 干完杂活继续执行 select 方法,侦测 I/O 就绪事件。 -## 5. 参考资料 +## 参考资料 - [Jetty 官方网址](http://www.eclipse.org/jetty/index.html) - [Jetty Github](https://github.com/eclipse/jetty.project) diff --git "a/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/README.md" "b/docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/README.md" similarity index 77% rename from "docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/README.md" rename to "docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/README.md" index 3e62f442..595e3d43 100644 --- "a/docs/02.Java\350\275\257\344\273\266/03.Java\346\234\215\345\212\241\345\231\250/README.md" +++ "b/docs/02.JavaEE/02.\346\234\215\345\212\241\345\231\250/README.md" @@ -1,14 +1,24 @@ --- title: Java 服务器 -date: 2022-02-18 08:53:11 -permalink: /pages/7efe4a/ +categories: + - 编程 + - Java + - 服务器 +tags: + - Java + - JavaWeb + - 服务器 +hidden: true +abbrlink: c34dbf07 +date: 2022-02-17 22:34:30 +permalink: /pages/9d17ce/ --- # Java 服务器 ## 📖 内容 -- [Tomcat 应用指南](01.Tomcat/01.Tomcat应用指南.md) +- [Tomcat 快速入门](01.Tomcat/01.Tomcat快速入门.md) - [Tomcat 连接器](01.Tomcat/02.Tomcat连接器.md) - [Tomcat 容器](01.Tomcat/03.Tomcat容器.md) - [Tomcat 优化](01.Tomcat/04.Tomcat优化.md) diff --git a/docs/02.JavaEE/README.md b/docs/02.JavaEE/README.md new file mode 100644 index 00000000..33ba56fa --- /dev/null +++ b/docs/02.JavaEE/README.md @@ -0,0 +1,62 @@ +--- +title: JavaEE +categories: + - 编程 + - Java + - JavaEE +tags: + - Java + - JavaEE +hidden: true +abbrlink: 37aa865c +date: 2022-02-18 08:53:11 +permalink: /pages/ca58e7/ +--- + +# JavaEE + +## 📖 内容 + +### JavaWeb + +- [JavaWeb 面经](01.JavaWeb/99.JavaWeb面经.md) +- [JavaWeb 之 Servlet 指南](01.JavaWeb/01.JavaWeb之Servlet指南.md) +- [JavaWeb 之 Jsp 指南](01.JavaWeb/02.JavaWeb之Jsp指南.md) +- [JavaWeb 之 Filter 和 Listener](01.JavaWeb/03.JavaWeb之Filter和Listener.md) +- [JavaWeb 之 Cookie 和 Session](01.JavaWeb/04.JavaWeb之Cookie和Session.md) + +### Java 服务器 + +> Tomcat 和 Jetty 都是 Java 比较流行的轻量级服务器。 +> +> Nginx 是目前最流行的反向代理服务器,也常用于负载均衡。 + +- [Tomcat 快速入门](02.服务器/01.Tomcat/01.Tomcat快速入门.md) +- [Tomcat 连接器](02.服务器/01.Tomcat/02.Tomcat连接器.md) +- [Tomcat 容器](02.服务器/01.Tomcat/03.Tomcat容器.md) +- [Tomcat 优化](02.服务器/01.Tomcat/04.Tomcat优化.md) +- [Tomcat 和 Jetty](02.服务器/01.Tomcat/05.Tomcat和Jetty.md) +- [Jetty](02.服务器/02.Jetty.md) + +## 📚 资料 + +- **JavaWeb** + - **书籍** + - [Java Web 整合开发王者归来](https://book.douban.com/subject/4189495/) + - [Head First Servlets & JSP](https://book.douban.com/subject/1942934/) + - **教程** + - [深入拆解 Tomcat & Jetty](https://time.geekbang.org/column/intro/100027701) + - [Servlet 教程](https://www.runoob.com/servlet/servlet-tutorial.html) + - [博客园孤傲苍狼 JavaWeb 学习总结](https://www.cnblogs.com/xdp-gacl/tag/JavaWeb%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93/) + - [JSP 教程](https://www.runoob.com/jsp/jsp-tutorial.html) +- **服务器** + - [Tomcat 官网](http://tomcat.apache.org/) + - [Jetty 官网](http://www.eclipse.org/jetty/index.html) + - [Jetty Github](https://github.com/eclipse/jetty.project) + - [Nginx 官网](https://www.nginx.com/) + - [Nginx 的中文维基](http://tool.oschina.net/apidocs/apidoc?api=nginx-zh) + - [深入拆解 Tomcat & Jetty](https://time.geekbang.org/column/intro/100027701) + +## 🚪 传送 + +◾ 🏠 [JAVA-TUTORIAL 首页](https://github.com/dunwu/java-tutorial) ◾ 🎯 [我的博客](https://github.com/dunwu/blog) ◾ diff --git "a/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/book.json" "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/book.json" deleted file mode 100644 index ebb671cb..00000000 --- "a/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/book.json" +++ /dev/null @@ -1,71 +0,0 @@ -{ - "gitbook": "3.2.2", - "title": "maven-tutorial", - "language": "zh-hans", - "root": "./", - "structure": { - "summary": "sidebar.md" - }, - "links": { - "sidebar": { - "java-tutorial": "https://github.com/dunwu/java-tutorial" - } - }, - "plugins": [ - "-lunr", - "-search", - "advanced-emoji@^0.2.2", - "anchor-navigation-ex@1.0.10", - "anchors@^0.7.1", - "edit-link@^2.0.2", - "expandable-chapters-small@^0.1.7", - "github@^2.0.0", - "search-plus@^0.0.11", - "simple-page-toc@^0.1.1", - "splitter@^0.0.8", - "tbfed-pagefooter@^0.0.1" - ], - "pluginsConfig": { - "anchor-navigation-ex": { - "showLevel": false, - "associatedWithSummary": true, - "multipleH1": true, - "mode": "float", - "isRewritePageTitle": false, - "float": { - "showLevelIcon": false, - "level1Icon": "fa fa-hand-o-right", - "level2Icon": "fa fa-hand-o-right", - "level3Icon": "fa fa-hand-o-right" - }, - "pageTop": { - "showLevelIcon": false, - "level1Icon": "fa fa-hand-o-right", - "level2Icon": "fa fa-hand-o-right", - "level3Icon": "fa fa-hand-o-right" - } - }, - "edit-link": { - "base": "https://github.com/dunwu/java-tutorial/blob/master/docs", - "label": "编辑此页面" - }, - "github": { - "url": "https://github.com/dunwu" - }, - "simple-page-toc": { - "maxDepth": 4, - "skipFirstH1": true - }, - "sharing": { - "weibo": true, - "all": [ - "weibo" - ] - }, - "tbfed-pagefooter": { - "copyright": "Copyright © Dunwu 2017", - "modify_label": "该文件上次修订时间:", - "modify_format": "YYYY-MM-DD HH:mm:ss" - } - } -} diff --git "a/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/cover.jpg" "b/docs/02.Java\350\275\257\344\273\266/01.Java\346\236\204\345\273\272/01.Maven/cover.jpg" deleted file mode 100644 index d859125628b0cfd75dc162521f1e1a1725ac3e1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117622 zcmeFZ2Ut_f)-W8z1{RdwQR!WJks>M}M2IBxs#FQRNiPb>p$iE_LI5EI2vvFq>4Yj> zdT&9H-ocM^-uJxso_oqY?f<{`d!D=D$(~uW_RN|!Ypq$cX7>K}`P&rWhO&Z^0)T+v z9Dx4p5Abai@DOnM;>AlBFI>KK=@JpqW#X&k*REcXob1*RD|u-lo4T_=m4=9|1Qn zU$#FlPDpSEaPB4n;Z1^Xjb|hh0L~E-5D)>?xpeE)xjLU8UT zp#bS^K{+zD=XcJ79Ud?z*L@oSTsoT}+Zkk*DKmS)0P zhmJaSK5W*+9*axyffPsIr3p=%Q` zEQhLt{&vpL6mK5y+H_{1b~kmfRcn`Olz zBL?#nlNI<&ixZrUd{T10*O{Il!A}+jCue+uGC$;_8?vWu9*Bpzmv(`&%xwcSu{~j& z{Z=$;+(YHa=~A#teUA9_EXv59-^|%_=l=A1aIt|Hf(x5n+Q0UU0PjWDoGZ@CC*WYC zio!n#U=4|D7*Eu@1bL$oSR6^cHHUSNU4J@Mk~7J7jMK>7+sN42?1 z;heIiVD7_LUv3}XosHpL9!S^in+%CXh~~$vi*#>W%!n_l+_QYyWOvB)0>dEuoU!L| z2gw`t69zYA(kU^jwn3L?>)7bk#Cpg&rjggoPBUfT;vN{dC99+~Ewmt;76-vhM^I^f z1Kh})ru80ih{bFY&RZ_qqL8*A#6wh>3+*0-C0046lWBa=zwyI?MR~ttWE{miJig+c zZr23;OCJ{rl?tM1ulx1ztWh=FU5qHYAhV>q$yKC=*Sg$2a+)l?zHC0cl(zijxfy4# zGqNPS&2aW>ekazqVO&WTJpp=4eOi)yEIHYxxS}naWv6p`<>c{+i3y|XMUqe**YD_< z$h~=?$30Bh`0YZ();GYXfkS+cOK{N2k;VW)?dVz(w=62C#7IW-(?LPj21S)Si}5k= zVH%(;*DXkw{Pc+=N~s!sId2`cH>2x)Gjv08$#2mY5Q}SZ9Edmp3@o zlPOoZL>7A;PZl$~*}S7`mkAp*$8I~&Rw*O>BQ#j6^-spRy_PXw z0o<#HTdNHFbXQ1qIUr$lYg>rZ`?aHYhIOc(2JzWcvhGqB?0v z7WLvn&jnyy8x^Iv4ZG9%A(!$MFLzchVbW#7w(;g(k<}A)@JP>QmO^Siuicd??G4#b zH#>5NKr~jo$wU*yCNs1=$93}3%!2b_=tu^xNog9>p9iio6J0-5(A;@n7D#-sXIX{w zAosjsh1N~*fMPf~<>P-_LC*bl@$WCaxS|(i<*G0v0Cvt)u#_ot7xt5ht_2RH#JaJV zp71$*18m1H`Mk4+&iiEMB1fUvZ-A)HEl4sIHf?6^!wBKZH^8yZG}ym0aLg>sWc(Wd zvN$2OK>?!L(1Z5*mrf75Z@wsrhfhkhGsd&nCv!?D0ln|Bk2R1bC=#X3cD}rCL0zs1 zeHt=q>B2G69}YaqDmiI9&hVHmb+Q>(juEo7IvVCtO@GX6Q;fN%s}|r|-<;lYm7iy} z@kNGaI>tHHRgr&JGk(z(asayTr$ykVIhxaCZheBtUyncDxBb5oGW>GDCnC^=BB4ttO=?o7* z#8aeV{sD4dj#)$*Ie+;$%ntydRwh<5V-FuxAx2p)JHoWP^z_^B6MJxVDvRRPcX%XW z!+Ebo)e6uL#y_cb7!BIR?-$gwTsIhq2~4P3xo5gwGG5)SGUa>8-sc`@gx^v#6E-3_ zq8LAG2fFT4@c2-6sf~JCV3bBEVLM-|F_C;qU(|nBl|eNgn5ZY?;;N7!#w(y?dN>)D z)B~LIO4;%3Ws_!gOy@md)(bQJFcS{bdq+ntF;MEUq={leOCHmOs#nD)8-d=%s>co= zUzfMb1f7dbB#V0B2a^6|HX<(~s0zlHZZ%FcluEqO=X9{WpHi5`|-ESqt*au?m* zQnQiu0DIREny4s8AV_0kbZsfHa>_vI)*P@>rt@i4#VkH|F(Ld!mtIGIFpDcQs}Brz zM>K8=-{}_tu7F&Zmo7eioz5U|>}}+97XUct_b;SKczLMk^o6VldxN$eu1VdAZx)q- zw0r}&%DKY60hm`#&%H^!qGCcv-Hi#U5%iU3o_F=tRqU5CKEW~1?CWRkyywH#^|H({Xvjhe zsy2Bg{MK3X#Q#dd%tm_V!UO|Jv70EP(S`I=vY9H##7ykQwo%+3)0Kyc7t?AhBD}(l zwQ^$=FbzM%hYr-IH`UEb4uIe6x3b zmDQ;6rGOO|nTydewh*^pusY@tpBcOr&pv{6^GK|@?Vz<*$GZOw@WsO|k zB(!P2e3f}o%xid?pR#(+YxnCJ?}R*^*gKkNKye|WWQSpk>La6K!UPbS8Ow*(X*3&!C@5<^V-OM>A;gM@?Yu8CBNJ` z?cq*B{uQhkRDt(ky5Sb|#$W(eTDHYJ{%CXHtIfg)( zR23q-3v@ZD`Yx6y`|!1N8g|SaiQ+WQB1p*uKKxnSklMXCyHd$FZv5v|{{!;3F_#8{ zSsX$u(ztLbaJr6DBlam|#TqFEn$^wmvIh{;QXq4};r%iV@p*0jEENv^C(NC0(8R1! zWHmDd#rK-5x1rKrHd9J*ud_f(07&VQd2;yf;PSoqKbtSkqWf(#QeYIbBzg7jAl=gQ zCh-uRGjFrx``IF#*eP=>sEl@zN$eht!l;jYtFDSSVpEihmq6|5wm{5vJt}(E&rL1; zuR}`}_=1w%a~H1Pa!QwbDRKanz8>~IoPrZ>FfFB!fEu%)SI{4kmX>^*bwON7nIES3 z+QGpB7`P!B3+rJUXYV9fkqeh-&JhupYFdj+1o-`fr~i_=|1bGJoyEI(FI7~Rd*!UM z^zFn>&N+4kqGD>_>=(E2i#nv%Uibz8Yq(t(($j$ER1Z%~saNIRlyix8^bM7&B~7e| z^eXALv;pCYF`%_N{-ukb2!2KwrZJBq=Mr_5dh}?ID_^2ju;x}-KuS%f$5Xm}Euy@} zHPR64Lnh*N(#<{;ql(X^5)7?*=pz{+ohAUs>~Yl?p4y9ojwKQp#WNFUpDAZ?D@soH% z2aDHUNUe`TzIoM&t#z_iluxPX)2yAYu*}xFxYoK?7Zup#FX3Xc9C>P<@h#Tqa5THxH$Yn?_l#ALUa(gDq@d}MhTYX(NOc)@&p4%)=_K-L z1XZBrOmmKb_z;ANx#IlKJtl4kBJt0fR%?llJ?6_^s^0(<(UBzB#4<&apsz3ej+g@8 zABVVq@$^xTmU0b@<&ZmMYzC1>EgsocO;Y>J%J?>(Rz-R?GnF%c++dGuo!}X|_ya>j z2g(b=jk2B1H1#`ZQ04FL-fC@ZeSaV%Z>X?`Lvn4NgVz*DGrgG@Fd0bgmf+8J^%CRJ zR~28p{>VHWfz<||)hmiyu$BYHOQ8dfIci(d^I7Ur(oNip zjAoB}jm{UGP2P)A4?NP2N*?E_eOx~9Vw|*w>eg7Fc?8%@&Hm-QLh^9T&xs;TXvT!H zGHyypu}S7m6Vbq5pgA$gnO-(Nm>IoB6(Mp z;OM*K>+=?C^oHkaLSzZ^>^GE9bb0*EEJZlx28T=A(bDNuFpmPati7*=xza-V9%IAG zd4pynKitgYG!a45A({LyJhRrt z4e8P|cky{IIF7#ocE$Fir-x=V()K#y3LDfnEOhfGGkW(~v~xfGd|=Njs|C<6@(M(( z)+iAyl=Z`^Vcm(HO&J zE-9?+Su_kSOXg5pqE$g9nVa7LEFmu60FUE55 z3SX|<8?*&_KEM;=2sm;r+$IgIRm^nStULqy1~9!)l{+_=k)^U@#B7X8vWt>`vujSK z-yz&@x#_z_t%9?7S#$Log?p6Tj2oL;|7N0E7+E@GqU{*42gjTR{3kf$V!m+I7l(5` zfT}2xwkT--Y%%%YjQg9SRF^=nSc%6TEaznC7S%3%1AJa!;MV$bNf2$(gwGf;KFWHG8O|Qvc6-eVeOT$WfHq!JY8;KO5DHl_59F zlDQyroqiRs#vLekBGgzyP*M}GI_U)CfAteL1@w2ey#%Cn&9$b^|DVJlCk0~aO zoJ6Y{QKKK7S$tS~ar!1<-HRPskev)c0|xc9FR|CWbh?J|P~C{=)vUU=(&L@(22CKo z?aVgDp9aWY)BOgZ%Wf{v;>6s` z*}4q*MFUV=2|ZtcyRxsa8cy@zNtTn{chZr{*~|RZ`yam8#7{)~-jKS`Bqi&bY!WoG zAqi6!#;Yb7IPBSbW{f`d@8IYQT}!dKBQYjeuNe)WpiHf9YF+Xp{~0&_3vm8d;C~Q& zrApJVeJWJa#&d`?!MuhS&Lsto-{y5&P!22(gq^mHa5JV>FS&`!X;hb{oerG2GpiDe zS^;$$v%>LukkBZ6$ooIo;!n|U{WSY0bAQpVDZKuXB1N9mqWb7*>JjbnJtgJMne-PK-y0igV)0Y@ z*P1bzE(r=XkH1jd|C1#B*JFR}=^vZEWYU0zoLIVsXN)X^20^DmUHgG5S{kgK=q1t3 zm#5cfwCFJoIuN7F=!HFyR@`_Mi#e}{;WbeEwCItEx_*sy)pG^nm}*HYxN(a4iyv$K zQ}@3oesLA*gI8N&4Y&jh0}XqTG+;MlT)Fawcn)@`-G@rHH)15SxIgXrNF^2a6cn6Z zt1=$SC84RuuFR4<79`Usohn!W4O0RC3wlCmR?PIGwm3O*LNm-a*SB@hx#}LUW8+#j zvcpor#b}zLR!|QU)x5FVme-Qi1jJX%GKYU;&Rm6fejCf>STaVe$#&x?-i(5;v&8Xw4w0vrzj%0q z-cT;~^rnKfR`*vtv>Yqrc5mzs0#Tnc#5RjPHe7sH0gFd^&8sm+TsfcJ^OS*x`Eu@U?Zm{To$2m1Q$A=7+db(}YYf*$dpE znF(lW{*JHokt8iAAsA5Y*=p-y?$bZei(f+hTjnH}{fnHCnIZR+f!u%-JsEdzh(?pr zDSItO)?(e@#I}@*RyKx7ynL@Xx4`XD$o4T?QcV5oY?v4WXk)D6xhio22gJynOO{#C z@0UpY1F&0v0QXl=2?A}FmAT`!jUqlei;u;WzAm$=vBx)SoCQ>cq!=!9A!4`Zas4{d zrIDGEjO`W-XoavlHHuNwH@3v9IYo+YbNWWHD{ptlvB;Rhf2E1v3;r9Vj?gB7>BY=T zb%&$2b)&Oc7Ak4Th{=n5nlWhdfGqRmZY>_@La9j7LM7u%pBDtjL`Jo(ACu?WLU+|( zpQbvrbfqt>4>+U%~r3x|Z`%CIUfKdCE|cR>M0t zmmq03d`#o5M>nQ#3GCsa$u~TA=#k6S28ulkBM@We)+^my`VjkT?xB(Hoi6YXktSz? zCobn00-SqcdJrx5zo1L!zB2mYrY7j*vL%`ZqW24v^gL9h&DQc-jJqSDlHlTEAe8($ z)6!Y2N+VlC^|sBWn#|zY>GG9Gk-FuTnROep2l27K$;-;;-#-2ozW;9U{ojrGYls(D zBn^E@3(>tUGf8z)XItEz8`bS)vjcO9BO9CdP8nV&F=52o0=Z(0(kQ7G+-k&h&K8WO z6Kg7GF;VX<8G>sXYfzE)8)v)U6^>=+1)fX3Ypw`SuqKx~(=5MVYxH-*{|2k)QbxC# zvtK|O6n+kewoX8_Cgyc%U|^FzVGp0*QTr7c1lf7h>BVUzv`Cw;&tDv$+)iT*)_b0 zl!HkLzBX6QB(cTo(&>@VOc$F~NIhCv;4}y}wZ0`@WGEUa#-DgoCT98LUz=oq7`yvF z{QiZXaWlmcw}hDMP?y=5rP8zg1*P8gZSt}miFSMs28{N7L$v^OE;y6Na9gj_dq&n6 z2+{F%-=L`ks|wV{cWhR(8VNqEVDt)Gdks^FzI4BltW|mFNOk>tV>L{l9@M4D9Nly|Z1N%11%&I(=R8H?D>Xue>@>jFc zdx0#dIUd~APx)}(@7JOWe}M6Re*pKFP%qoaiypAXYR^W$JSCkjl2A@%P~0!T_>QT# zMEBM*)OHNdhJ>J&M$^}N(bTN_WUGb>Ba9X|ir)xr2OpP8J1n?~NP8Iyw)Ce>_}pVm zy6|`SnwNix&_4p}nmE%I3&qrx7TF862lTa6V+Y5^SzVgh%%$~|ZUZ#i7*!Xhb`zWf zGST7&mM`~-cb02VGIB^mpa9BwYT-7w??dbMvdU-E=FDIY{vENNzib;Q%dFIA8&^)+ z1k$SY+@++ypfU##)`>V-_6CFtlVtHocd91IO}$B2qz;aC|HJoI&Rt6I%*s7&KX&C~ zrdE7HuEi4O=l4h0_$#>ge+B+K!9lFlLZUD#gq;8aq*|6dhX7%OmAAK{2@b4E+%`G0#C;d!p3%|2Y0GWUY#<7|1pI`Ho$^EdJS;#mABSr3*E z3>n@R`)o)Y4;vrqT4z>S2()w?r+>#fucy~@1n(sbwjdD-)@`8C-I4vc(}J8T+Hvp( z#z@-awV3o>xc{3p{@%h{zZdZr@y=C`49$U0Szn}8W-lH`*nMZQVAv)x*Hr{gA}`Sy zxrv%=H|g4tOf=h`%%Jp=28r-xZuh6uT>9R0U8fgN)?btWegkwz4HEnPV*P&j++ z@Du!t@vf(%t{UF}X7X}ghKukjM6aedOj?)~9b~9s=MjTErfl6DfM8kAm!kR|_Fv)4 zT$tE{o(8?RGaRDK$%?Z!rT9sGe>&s$r=L7?@4^J{WGy2meR4Om+TrzH?d$e1N;{H zC(2c-wpuZC%WTe7vMPPkA$AE$9wHE(ylC68mT1+vws<$kH>LY?!>-juvx9E0j}5Oe@+BfaB_E4tc)exxXlAsa zD1IXfc06D#+mgCYyI(Zl8^azMDt#C5t9#^stZ#qCg(DEg9*jNciV(^yu<_vSVhXl8 zI95h4V-rK)G|BKT$f$Fuy6<>0$_5V%c#0)Hx#B|?+BBe0j+6IcI!fqwJeE~y2vh(i zC`m9pI{)j3DgIc0{QemFPq44;+VmC9Ag*l&SSoJ$#!cIqAvCqec8k+#4Jn+u_Nd4Z zQzeRTvZyq(Idh#dVr6egyM%u)ZGFuGDn9Z7G6V#-0PlZNnR;?}zM@i^mwa!eSjaU5=$e zikH**idi{*pGyAHdAUEfckn0amzUB`$96%}1BoqxZs4{-uHr@m z-AGtQ?P<~uYlRLYUti#ak?gJqDct91L{=yVSg(QdL9W4BN4T{P85c0h>M6<8sS!4- z9hQquG75=&U;PY5u*!TC#x-9DTfFGeLk335o^>;7?kdhwdpAR3v~*ZdH3bHp#P|Pa zvxLC5GgF^Ebj%_#g!}Bp8^Pp)1s_HKS+);rw(JnbP*Y_ok?lSgmPozlK-~21_7TKL zs8yA(7^;qtj3M{MuBLpb2E6^%lMw%&6+gxJT{h_AktcV2-q=$tWKdvq!3gt_k2O-V znAQ+k44m_u^Y2%i61_WN=-r4oj`{{L!n@>@*>Lo!p&OPO7z{+%x6EHwxK$c5xVW8$ zz3Ha0db z9M_K3XwzvBxz((PTB#i`U3tBdF@|VF8!Ut&_To~(|In-FnyTdKtex^jpkT8(`v^MA zK}x)eM@9?!j?=&7XnN6_Roh^UWVH94f{TDJPuEu)Q>#;QxLr;b<9vu1 z+W9Utvw-upR2hXyKL&tZN;5c8tOs8Rb1Fdk4^_RP;E{WVjf7lw7cvxkJV4i zI6Mt7QRRk%>v_P_MVxX2dB{R9m?zDq@P@$pe72qoAAZ31z@g{?L>40J;hN%mMbDKs%BhQzVD!bXtS{LR>+N-Y* z>KH;`iKw?K+>d#Cf$O53^>F+0J&}qEunt#$JZyoY0P}Jem#N3|wj5~-#Zb?d(dA`Y zVlGUu6EBoj<~s#z?)9GH#fLOX7PQ+{pm8t*;=WM_&c!%?cZFt&y?D-nZ-B~Eo52BMnBlL1f@|i^$jI2L{QPWVfX=r{R->SP9u+l(8QESS&@_gr34c0WKvKards1b(6P&0_WV>`AQ@Rz%J5R5C}!4*08k=XeI?~ z^0t9kU-MyT3{=|T%>LmHYzy-z*Td&f>Km1b9rIl}QN|)lHvSho<|an7--)zl3`t|# zhfL%r`e(@`3stK)T^8Dg$RODppU{v0$FDeN!p|MBp^Q6me-M4#ebbw#BJxsRH4-zO z$(`fTm$mOKZua;Wgm15NY){~CbMXvY9j0=MXRBpzQ%hMqM{cOR%i$J7c;b$M;jNm5T20+CudPw6Q8P z!2FCK>gLt6A02HI;nvgB$Wl%kf}5axv3I8t143!Nl}Z+T@p{)n{AwTiJJ4m`$W!P| zT?R>-<_Gzk)duY+bXtM~vu9@3$4&;e*kt@&WZvc{Y(2a^PsD2ye2VZl~ z_Bqdcj5LgN&#zc%#)yAKePthyE4Rc(OtQnxXvEw21oiv0Z|(YUP9YFg3gMnsHuDs; z(Rw_47D+Qw#Cvb#REwT-xWE~~JZgxA&{nPs9 zr^=MC+>9>~ej4A+lTDz{FzS0{LOlYy{MuV0f!L5X9Yhl@QM2Wa<7G6Q7|9t>A%8zN zxVmjb#;L0XqLsz2@$OqcU+d362~>nESR59<>Dh~6=iiWmS*82GjEQa!IW^TTo{q^i z;lzhAGiL7$k*`LN1d6OH^7dmC!0PX#?f8u&7*y#DMaXZ(D6$8pmyeaMH&qK)7gQ}m zawPQ;Y06qu&|%J^?b0CsfqgbSf-KopGxhm`8aA12bEMhnwO$I3eICjBiidL5m)Y(y zh)4X+7`}-knJ}eDiY~XCZZqbzBLWQE!`2 zT-H@7k~7srY35PsS5r2aY^FvQ-{Wzx;j*%0SDj85l>2g)CMYi6U05@^3otlQ8u&>i zGR{9v;A?dD7hfnBHY>R5a+w@CBvlEslspYgLV5ln6Euf@+sa;(+%q(HP zeZk6kW+>0`#YjN*66ZjCDTY(iKWuKc64bx$1*{($guyc&cA*nc?ihR|Mx19FHqVA6 z9saUoM4cc3frZV?3@MZ{U;4CPOO)(O)SC(CZdz62-E?d3y5{=~weksybQ>&vvJ&B# zA1mp!e%Ji{WCIo&n2O=ZmQV%}6Irmud6PA$#qeLzwQSUf#kMETBRiMcZKiibwMS0# zrek*_bQ8qw__ZqU=CM|IMT*3~Ohk&CWpmn}g_6+M?)uwuCkk$I4mppiI1Z<|@R|^l zpGNWmUHRrTi_&#HHqs1+z{{f3hV@iM23ImNKQxb&=lL%=tRC|}R|UIZz?ly9`uUsE zDpu?i2U6sCxjrjy3tafJ^T8tN^nja7KemhXX?HnWc}mpIB|95;626%LE=&bPM=Cwo zjhF6mGrpJBvNX8K(J)=#>Ckv~ck6za@Yq~Rsm(OsV(wH8agJsY*M@k7^C1}I?q&1{ zI!qHi#P8>3TT6{y=oZc~USABKJ9@M?Ce$z{`^Ix{8=Mv9UNB)Kl&%~uNj|FzXTB`| zT!EX2?)uAB(>}dG@$7DD13d{Xs%>T`)(dP1?M<^>uIVpW(P9bfi1Ud$$T4TA!)5h! zj(XBit9T2p-3hG{7vAGeE-RX5;LS%Fhf#)ij{FU@oBHAE%ijC85f0l;s)8y?obq4# z=DI|N0?#Zr`vcWU?~!qlb;&2+0M63j*^ zEdl4=Uj{tB1vn32q4pC6m}9&2(fn@}0JuKnB4rr1cT4CiYs8e*g+nPB3^YU-tDb$B zk$tw$U07GfVCK6puFKJbX3$&1@O?)jLJNTn+ltR=Ke&=+2vpx^EeLh7pkm)M4&A|vtu-Ol-)*8f*5hAf%i;JRMa0m) z-1V(Y&jhY2&0&eE?>IFJw(_Y~Vms;HH3HtRR{md7~@??f}04-4SWGebg7E zX%*(uQBa}{=+MK3#-2BHycwHTP9s*L!Uq)BgJq3>)TF@VgP#l=+OZnGH(dzlcZHdL zFkyWiHrM}R8kH4?_Y^#_#HebI%@4ZcbVjO57d}88+Qdw}=9Z9bWOjmT+imd~jTK$w>@J1;8jMyhsbJpsMRp0^+I>$a|yhla-%tLEM*vaY78QA<}@bl$m0s>6*YvbZI(9 zp6@GNVUmMdo8?+TVfo`XD7L6)10S7`T&FGj$K&(l`Bg^(6e{q8x9d*@WZQj|72R_n3 zeeTz~>z_08)5aT1ZSDAELQhmzmAIVgJWKOC!?lRlDCnS|By-+kVU2;RqQxmEu5R@c z$pm+L&+nFV_`02M8$d}q(3G+7wndw4weqp5>KfuXf+6h&CqVFcp{{~p2;BaF9IwYt z6+UFV?N~9VdXFZHo;-o}(1^Xi{xr<$^I$p$)|{UxLnj+gsiN)n zv0=^%VFOi5o@Kj>i`0;IZxx*wcgu(#19|^ISNk=+EcQ3MPrrmjMQXZ=C&W|m5lJ|E*&?bK$Uxj~ zl9R@}$a;yU9EY==&~dOmxtZS!hDB@pl7^^ZL=T9Dt0d&-clk4+Y{(&E0VtkBEgK@Ve4N9hAQqP#jw7sNg`b8&pGJI^1$@vH*MUB#Aj|ib@F8C?Gjti zw+$6tzkkEU=`z6YOd|l7;jc&mo?Je3>9k7YntMay;9>rzxR!BT)TB! zVy|~pjuedOsEgC=l`;3kBUL^!%Xm)t>5@*3g@S%9zB$s=L+Up7W)o?O+dd+kQ*HEAq(Ub;^aS%IC~@U-+EE=~$w z7V%(o3TtSu3K$uVB}sF$-BM>&03WuitFFXbbnjDarPGQ)#+~*VPvccMbNX}?99OXl z)lXu(Z`<()!-l6?1M0#Q9;8y2JW7pjCp6D?7FLhdk=$_y_8RsH|NKDHve)*R+2UcSFbh%Tu!X z#Kw{eYK>UV>Vh_|vFU=Bj;TAFTMUCRY9IEiF*nhh$JJ(vp$SAx5u){Pei@G`+$Q z<@eLL-&s)i?GNVfTsKL0c3I#BZ_ef+tzL1b$Ju}*8yavzHZu^IjN!1HPfxq1zNO%! zUoP`xgYm`&UGn^Td{~*PTe8@$-txNifQJV<9VWF$rPIsK&Xm)RzC#98%C$tA=wRmi z6*$XemgEg#VGiKZYWAvUwHWE$?C;VZorB*U6mzrgFmgm>c!AD;O+kMi~OK6Q_ z9Vo4>^gV?jmg;I|ej=P@)q)GAiI=0n+U61t!^f=^=840iquB$F!00*4F1>v^%Xvt~ zY`3v+o0AJ$d~*{W2H9T8+lSFLJjTBOr4e@#W4@@Hy({hT7oA8LoR{40j~mRR&hV^c zPS9GRWYvPi6vaH|DK0b&JmM}hC}+PW!rUi;d!UzAnG%@O3G_tpSi;S=iXAHEKXYM5JK&yVDl_!q8Z&dnd{3GMd-GrOx@36v z4?QF$9-3BB60D#h)RY@M`WUVyfG?~>TU%PzOd&m21aA>u|l8PP~=ot z3M&PaE92{2a#uI;p$$Wo?&>TJ39ogXvNE>;%-69w2P^zbFG(jy-O06?A+gVTHHh>; zJr)Hem?I3f$R2APk*lC^f937>9-Q%cslBlqADNV$Y|=mXh)(F?9c{{BZN4o?UbgEm!jtE+jKwc$Yr;F?Cppu! z?8tEW>Pjx$+&9_{w?^}8NW7kVC=Y27YZ_dGrO43yC8A(w1Y#9&ZGca%MGgvk8WU5lP$Stn|J4zaaP zU+{bnV{%cfPA-V2&2VdC7d*as_)s4{EA{e{$6^x}9@; z5K0|v?5OLGIy~JTSyHz|htIQUp%QdQYh9eo@dbTX@1W9qXiak<`iTkXPeY%~WaN}& zFzWF>xR5I>I_h?5a4cU1j9Y7@YG^O6@H_c~BHd*k+Ldgrq{fWFAC1e9u4)2Nr&E}o zgp^H%TFLv8%?y^Itg+>Bc1bSeqC_*3sDs<82IRZ3VjNKUSd{h4p;MWu)P#g>{tjK# zmq^~}Hjn)nk0i%L8S5RQ0KkQR4Qrl%{ez_;qwI%)uGu1G(x-E88->_&jE(thl5L`D zP9+nsG@wL>LLC&XTr@FKeem~FDW(juwvs=Zs7lr@nev+P0I`1!RdBh3&jjT{EYI zMU84q5@D(4ZeJGFg0d<>q`EU=fng!Yy*MHfV5b)dcZX{&{>_^-xTSy-nftcD9A) zQ(HsR0@x9Ee!?7CT2Z#`TvzL?J~Uw04VO#S-XK&K4R?Bt;$lS!-P=nWg7kOwJ6-13 z6&I#+(pifb!@RMKt?0E8tm&BxrBQi{W_&ZtXLKVmRBJ&R6)VHem5oW0(HqCzX`!q{ zJGs!RIXGk4M)l*jIiH3tYBZD24GKkm14z(2R#t@b;OkHll(*|w)RSqEvxthwcfkCPq1y4&s13z6(I_wb)`!1Yg4my2oA$`jK{ zT-qTcAdW?c>o*mH>%=ZC%0E|?g;DR8JFj<6F@G}J2QLJ2YLz15lz55`(1C`5KzC&k z=5T(J*|6EegqQPaAMOKMpKsx=5(;>2QhQYc?otyLs)DeN6P2m!6UL4&G@3g~iPA24 zoP9J?A{1B1UEYK-eCo4O=MmFY9F`sTA=HHh?i5{ZffB_z;@h@h<8zqFOd~u*d%wM0ihVJv{)@;M2JOguHXR8Y^l@|*DcTdhES;{afc6M^l z8ag9+Wf$Z1nLZg;Pqm&}7pl)li?Zn*kx>PudFeJ8m1QR{XxvWdQ}&lg3hGU z^Aqb`3(-#?WAk%=3CxA)J<{de-e7LSvb?z;7B z37u8j{r+vfbKYY98;4%HgA~U7(54xT=pLx=)4}ruu40aU4NmnKiCl1KgMwqcj`QKp zKz)poyo|w<0fm{Zl7j`WiN3}mIOeqXcz?$WvnB14M4E0G9mCb;5Z%@=Ip&#b*il^5FjP_3a1WN|CP`2$o`QCEJsPXV3^(e#5f+l zHz7OIqJ8f2BVw76;HR-GaD;KAtv(wZlQSFD_1YgJiqDC~IaxQyH}5mbN8ZmgOYch# z+%Z$_vioWc!8lR(DLbkiE9)yCXoMLjl{1|3SVyVO6#8mKsSH@o$K>W&mP@K-QOE`> z#6t7vbW+-3o*MdI`e`Td2`Rck7$~T(p}ICS1%WOu~NC>F6)7s zK2fIE-J+~f$;3*=lysQjTm-hrfNbR&${uQVx@H|gBsmI5ECnAtgBr?J(p#8L?oPgwvXdr$$C@!Q$t3wmcy<0rMy* zm82$x)G3?KDE~D3evEpsqmtQ|w90psX!cx_VCs4B#y&G!_-CH)J*kw_}mt!Oxi}0wVC$2IO_Okw{8$J zpSSCQ`CYvMC|1JyTxdndKd^D+?@RQ(A%+#-6jeZj1l;bnH9Wz|%RI@L$Ym58LqIq( z`^z0^lN`^s=oTdRJgKd^A5ha3lOf(jrOOI&bjRKwj(tulOX+w)mZ&3m*`%4UT<>wYpfIQ!N=! znVQdhserI$!-IbWFSm)jH$htEs?SB62z@w~)I?r3Pr*uywWB&Ap16^*w87o(b(Dim zRogWp=^tp=t}WzYVEi(@4^1;MB-#5FQkxk3hU+=bLA&E3;#c1l?6+jhtvi6Th z@^ZX`ypdkqr*m(=9V<>f$>L`d5PMTsg{57D@>!b;OQLeIW_EAD`XM=ed2E)q4h6j? z>FC9xHlb)5I5HTEt9k!$3`ZR=JexsoN4mANSZ=s@x*<5wfhYk-8k$MwRP@;;DvNyo zD#NWaqxR{#&56bpy74`%CVBL>emAez7QKu0%A~$~(NZ6Xv&%*H(_9;)%PO(k;Q;Ar zs{inC@1}JIWc9)UUF-cbyLcJLVhT9+J3D7^A8;S=kL%*c?`; z_ZC2Uks6BhCg97x?|=V%Uy_qKCnqO4vuF0Kz4n@g8V;lF?+q<)PJArcYf8U%7rqT@^t1sdgeo>yfh&G_eCu!Q$?o^WGb zgFXiPxzW5{vDM?VdX{slE+-yu%k@o73KuP=8Z|eu?hUjeNijUkBdg6lPteTpdFpT| zI)Uk&EKW!_Yp5DWYd(TFyL~unNU9b=7p&$r-4?hlTrw-ktVTqMoWOX^x;7-I1+UH( zcHmia5i>U#ClX04hA_N2>!WGLFCTb2Xy!QR=um-^-qLP{tI^-fg$3V=%qJ+IUvp-4_lCiIybmf#n_z-Y&lIqIHzlk}N82;@fybUO_xI$+hr6 zK}a(tidK(-ng{rPg@;}kle#uy@?NYo`_FUTz7i=WbgQ%n7FPF1S}`zWgNo zjyA$el-K+UYe$CX;?-&H;f}{zyK{&9R6o2WK~=5Tows$>;t6x`W9%HmX9kJTS_3Le z_=0@Z3T=u=TX+pFzo^CuBL_~KEAK1qF6I?>_4rdRXB6PE(RihtZH2{lW9Oq)4RMhL zlaPWaMIBhr*X6V$TfUavV+685qdy0^c2)DNzDH^1*vt8FuAw-8;Q7ghCt5~MPNSA* zsCMv6dp$f|43@tEW|yNH%6K7B**uBHOu+F|Gy?QQ(<@(I}!3SB> zalbAH79r4WGC!giq1&tx7Ir9=&3S7_O1H`FxcS}Mnq;o9?OZ&Ds874(*>JL9odR+|hIXK0*yPQnFHQ?(Pf=c=cI5zrU@YIBVW;HuF)w1NRt;!lP zlF1c9354it-Y$YmdMb*}L7B)#XO>ha>8pgbp}qA4oXcwpOj9Lst%PphH-jWj+o3O- z#)PthO({dGg6#@)`f(ler2HTXDb7s=3VaZ_hEMNfpyf(@-^wrRl#+~b?G|I1oQ97; z(QmN|aJwH>)4pmNt`W49KiW;IF!kb{x^?~oT<^Wser@QRUvj+9=CAO!JOsPxS#%jt zqZ!ovKmn;Ki21MkhgcG=A%;0F(Teemk?@=p)S_02CI&g*!LOdK~)shgYoS#3$)J@x(0fjy!O@<;tJ_GKbF4 z%XnnOSYQR4P2p~p&RB{bIxgo?Bs`NC`&V5A?w}e z4N#0GPs50Bt4yFWE$`-!r(~R%o=0HI3&}P!=MqevjapfY=hu4_JgQ-H($l&+B}lB> zo4)`cy7rrY>ZPW*_vvrQMcJnH=>qQX-zOphZK;xq-tYQyCxr+$79s@+!U?sX@QtsTg-KF4QU1io z6~kdJ@KxRVN+Do5GSoijD)exgnEr>0lXEQbWUCk#N~^<690H}6iJ?*Al--Oas*Pi8 z54RDO=r^zB+I_9_cH)lFDd(44dQoh{hjI;c0ye3>c;F%5XQ?G3!w#nHpifV8RZR#P zP)9$H6rS^^U!y0BvZtiSHe?qRW!`20%XIgBsfXXZD(=gT4wg?v8EzM42p)97%tgS) zE`h@1K`=DmCQ=vKJ0nswq_+i=8p!;Tit28%8+Ob5W+2!F-}^+|?qpu(gyH@cKYl8J zO^Yu>tw<*e8PI4?cp!S9ANf=@2Y}ex`>DEP+QPXepp>YWcu(*P8p>zG;Jse?Ai?93 zqL2d7qmt%StnAnFg`(D*7grdcp-P)t`Y^WUsD!s0X(ct9m9Su!nHBd#t`cnco2%gP zJUm%)fXUS^3(5A4XuXHj;Y}JXt_9cd zwDuf)l7R}|9nhf-car`2oaDwaNF64~V%6m>Wt6GrGcxpHB>Tiicc(^Y>9b?Cqh;YA zy`J7xgL9$T-Dq$d-(>(p#E!zi#=Vz#L&2Ai1bD=V5`Z@`y#0v0J^yEyrA^1D7heGX zHxC04a>mA~;4y51XYgf&w$o^)rUCbv7508z0~*GJO}wGi`{v!vZ;&)5bN>vd+ti%i zWuk)*cQih^?jBsY;omJOsJAzOhD~t!86X0dR)z^hx40Zn@M@pN_dc&b#pgP4xUO61Uy`zbfv4H#}u_HGLVFugqN=5|8^& zGBFXL*f=S*P41snsC7n(&>7w@70-=f zL=K6h;xFkPZHnkH4w;EYDqITmd=(UY%Ot~oa7s#09!_E&ULh%{|& z2DBg}R8TO1OQ^r7@-xCbuZGmTnGCi@A%UVX&Ls0V=4#l2KVf!iQ0iZ(*odz&|44AJ zJR;8ghd4~w9;2-UY(NZ%M$D9v)C$c=v2YCbm`3b7VRVPVfe}Av%M!_`Hw!dcz9tDW z6hL#^N+G6meGrd!zYgtt+^v+Mi5M40qB2!KKkl67U3C|4u{*l)VtKZNvLCw8%rfR0 z4tt$#<=VkDhpge(;d{$jctd#&=mh`{1AOu_db}LoR5P)R?N<2mSDr;lKmu+y+R{ey zlMMaM&x7i2{vM#%9 zsEdlWx4bjpQG2$RhcL6APFznq5_^+H)jxhNHkJ^7JU_4_JvYziX#9+hSB6$Fr}^as z&IN@z9uNbG0IZV=cv8|d`c|R>zl3s9k-&8`I7LV|q`_UQ)tle>Z=V923?U+zX1k|#M}_V;_Tx+TP)Zd%SRcYS z>i4phyuf2`;{YKtk>3JU>-A`_5Xy^p42^9O%$6NM^^Opu>Lnn7&v|0jq#dOXqyv&k z<1*TKH}gRNyOcP4G6g8Ro;4I9Sd!ZW|4{9kwyWwZ+9w~<*A&~hJ_wJ?QPCQbFni%a z=-Z9~WlOk0*dwh=jWDeuEm}NGo#aA(mWDwb)y4hDo9;h$SFB;K1_D3b_DAe}Q3AjO zQwhjMEf~9d@URCmo?sv}C38VrezJL5A*WWU&9@T@UEp>}(apDJ~y zRK*%*X~Fl948OSGX>YnF6LZUns9-02Z}O6cQflms3XSeFsF_C4X^rD-Q!LRgmEepP zK*i>7h2(~0{9qD)WS<%;zIgM1=iN|b;_ig}wqPED%oEe%!!KB0l!Jhsk=Wve+#ko= zGPR)J$q4p+NSFkFAEO zUzWTNkDUDF{EluPB5$youwdUXZnfd5N#M~Qz4m}h@XHaf4M3Qy@&gxSfp$ELaQIX? zxX%w(h_>p+HJEc(nlG~ZF|sb`SS*PO9~1<=V@B8Ldvg0z4P3Y~{4Nm){J9duljk1; zHoqf&tf3d5cORo5TQ%j5Bc|(zNv@(ONEC%mfDchh_FY19 zoj#`zl8e^32jAfaQ~f%OgEA>$d8S^~j@>)twwhd@=lJwJjO~T&(nZKte$^9=Gx!Xv zKa0^N29t~H>T0-syt5t|(vyc_g4ai>ydK9a@!1^;&L*!ufL&zO`j<#h zT>sC05z_F}0RCS?m9N}mb;QTqbGzRMPOKi|&#MKkKYubK+r9{;SdyT!vYUv>FV6qVW)3~wp@E@de?l!9vU zZX05uGo`LyOg~EBP3Y|cal6lxRy$-88F)tZ=gGQ(*tnp)tbPx*u4DYI#fNKDh^&S*~Cs1dL5UiIcF0p#PY=3AVW%6 znX^qsk(gs$(E|g&ppv7FbBMo>yn^aEL}7%a<;JROT@zN|nW(pWZ&5ZNes^ogJ6xhz z0ftC#E2Y+<1~>T#8ldbvnya2`K7ryO$cmxrysrV8diiO*b2`E~Wr>@R$FFkZ)EEu& z#GO-|3}|9r=oe(uRCu_$x+fsK*N3S(WWD#FY@9Rwkhy1+y?g2__rM31&hWBJy6HMN#N<4rbpw~R zGPBOWKQCxQZR4Itl?28)A)Hoq11s+49vy+A5|GKjtRLVMaW^(qleOn_avL(k9yaN- zl9A2Y7#M0U)%pf&kB$nZE(!dTViRopDS6o369-9IOG1p4?si0A_Vh7D3-BulPg zy!_C4sAfU)IBYRd=PuKaK3mM#A=G>d4bF-(y+B@})^jP;-*r6sPkt07{!Vvj+3UK6 zLe1MRX>jZJSPTKI?^bL znC~$ga0@tp$ib_TUzKXYgd%#4jB_Jt34|B4KX(;NMZVYYzTc(5$is)n9&_e144r`{ zg!butGT6?@t8yd(Dt9$IJ(j+mY%L-37}S{8V37k%ExhlvIX4Wmg8h-vOrZ4YOj2(*YF$MoEQMY9~#?TKz> zO01b4d)Zk}?+Ca6WE1}a z3~09*`3?&7<8*S?Zyr+AGO?HBJDuy^WiwGbF9+ub>Z2PdaVPA#q}8JkDm_L=0~ z^h84f!+-7fT!xIr=|?VhxQ~!0kXzY8`%gKpNvezK%|!5P z5cv(*xWGBeBjEQ3GfPuQ`qKfw@g*^AJ*uUD8*Ad%hs^ug?5?MLr&>_I@Qd1zR?q$Z zPy;FCdZmy^zbVJa-Szr~xog8UN#e!rrvrJLiStnM_Q)oS!N5L{lx+w)BRP;p76 zhp)ZY+D3nQ)a6!0{LSQiR+kjofh*bY$D15nm#4jWNhb3PgVY3D(!Po?6i%bB#Xj{E zZD^6D##)N%j(u-n`q43sONQ~i0nO2H;w$8-gcrY49>2-V{?|fDC+VXZcSSH$lm*{w zQ0}8h9_%OondKi@2(U)H3FX!paq__ZVe$FVS?ocLlwskTZi2-jb$TR+^ZE9?QU#)C z*)u}2V0)!1?P?+_?-2U>D{kgn;=<9O3KHHDYG?QT5`R}ngI=&mMC%{db!OG)W*Idu z0Ga(LEQ8)r#~+`iREQqeMLzKT^Co*{PVcCgcVe54(*^L+LtKRb`xsznZH-E~^S>rZ zyawP5dO<#TPX$0#Mn?}I242i1lfv;1AY1ex0ULm`w=G7T-ohB5v3dP+BAu>fDE-9m zH)YUO^o7;Ny>#byF;f~z3Y1A>Yos*q*;NPpY+W;*Aa1d#-7J=@&)JufCg`tU)FwXX zfDXk~@`QekTT-M)pdn9w>9%iWOeO(|YAVitoc!aeGRN5GQ0^t}hogBAe=%-=|O~dI6eZ1xc~rtH+ai;0Q@b<@G@D1L+pkc$fb!c zH+2}tJ77NnBBN%c3WR=vCM+y}?ec7kH~h)#x@f7&3K|6B0fOB zAY23w;fkxLNH5d$zgBU&po&j*_N0!=Q8L*jcJlD(7X-F^js$Tr)hY-B=S6zzXgS;q zGdS#=)$ovfsu^X@_=dJX9(_;X;0hN!STD7}rE+kFVdOXc_}&;6o+NnA`=jQ>^YHhT#ba5_`l*>ZuG*Z5D$a(^zQPcySe{e1%&))$82Z1p& znbp)^c{hX9?<9tw%X7guT~MFK>|-EU1L^#g_=2=l~lJy)$UjVl;_KL2)DS>+FVFif7n=&v5 zwBqIdSw3TQK6R(}n|4bp8$alChmik^r0e{ygJh7Kqu=H!h?%#Ve`rOZEl4bbnlH;&cB)q}g1EzQbQxsPsMt z`he@`31UOoC?*KpqF-@R#Kr(Zh(cIT2x9TmwuTQJx%bupHeRZ*MZg`y71!rKg+hAi zvOI|5UcaOS+|g@uV`!)c?>Jxgr!2Aob`oPtPBF@TC#Scgo#ZnS@A0gJq%c()< zoFd}zu~^Dwio{LvzWBM9OyS}P8+^gM=0rXCInz29x^H{fYtz>7Enq+|pbvWp--Szj z)H7Lt63E$+bfIY`G>WpsiA{L8>3P`fI{qOdR{6I#fx}C_zZ3&NkHvu$BfzoLJCpY+ zEk=yqRLw$+JI4LY-qh>xdAgjAg~RcRMqkB=*?0jD?f_nd+(CZb0CUC3h2k+&=6fpS zUZVigIBjT(FswMzu_cXOs6VnFobRtd$6Xo9lCwzr9De2Cp&Q-sQI`ZQB+veCPUEiwaugLm4)bL;_(ODxU@l@r zMVQZ~`CP&vm@+9vHZLBGoa&QoR@nm9V&a_@FVS0`7C$B%9F=lk6&)rI@F6s}8-8aN zpgVNuFxuuk%(Ksil*~%jXaq5=aJRy?z|hadZ<`R95FJ85`;CX;-H zpqhS;_Mo&a)4+y=Q-_Bx|K>RMQ+B2T|D+{giuOGV4IySZeZ;sVU0_LVT|#6s`{+ z8t)CUlztdLy3l6*Eu`Z0$|eR7Wp~oY)CK?uCE^W;V1fug8m{S(z7;2GuH3?pGz6`N ztb)mr4b35ayZ)?17wkz9ycSc%flr}svhBRjK!%2%^*>f_8Gj)SQ!&sVB?S`!dD&V) zZuh2wf%D{FeLcgLCRVZ8Zt|1avg(77e%%g#f?=!7Mx`cuypwd4eVZ8+Ciwo)KjRh& z&M7#_IVk9A{T3^&4c%^Lx`obGWZ4F>8`dG&N#dj-r$^*HGimmF*`HBN&d2i5vXKI{yMh z*-8UJBW1@}ko^nUnC z#a?`PJJjxV3S~S5>~-ARzKN3ifIw`CThF&aAHdi#pSN=M1chcA4In_plAH`!cX>%K+66B)#g8DU3kWaa$} z^y)q~y>sBShs-+E>Vu6R{d11q0}niWrAYM>%-?eqB2z~15WM&(7m9Bk|CL2NoCd?9 zfC?d^bOf}>H1_kpLRsz8N2Zok{L-3kdfn}l7U7kcZ=3%ZPL`|H4av3)c1?rg1f19@ z5=?A@$pR-i{gss{#Z%yu2N`_>3~to&<795xPW9H?Y2Tb*IJ%QTSU*}CeZW^pxo}xvQID%LdeHq zmKkyVzkmjyXN`vr6if07D2z1Hm);qSuR6Ws#X&L_VQlZFZ^#avXq$S4ZE-AqUIL%I26UA1pEtdg2(wY%_bh?AEj9lva-8JH!OCJ?(ml( z{ld6fxO!JLi{E=V7PY|ptTY9-*``+|$o_3;k+@sSw{6A~BB+nyo^X>BXgDxg z*xNEnaMaXZ!)|6kvVJt8{%|~qjkK%U6JF^5eRWrcCbgfC{5`UfFSHwNS>V?<`Gv>Y4EkyLTr>9A5~N31bMm z-Ek-fs<@4cq~0^3J;aask>OSCbA+|pFisRV;s(2`GXE^ov{{%Q9dm z1Q3-B09@noq!%$EF{<~8iM2dLi9+ygjMemp$(LoyP_k~5I-6m#;LjA+zLHKgCl$AJ zqNEGVNViN7uIA1>_EpxM8;h*2=6|g59QlMj=|v*oAUKDWS^wZgGdkp{SuGyryYGgqDrb|9;MfS)dI>{GxWUkt!0NH>H7k=Y9FcaB|MhAsS zuPEU4SB^OT0>ekNXL(})ZaCDzGx0kPlmWW70 zzr;PYP&zdR?(hjS_W3cxf=*My3uskg`1{cHf;-d{B>P~K?}u2@`QezmfE-$^gh z)FV$Sxz7gm{Akuopr6vL>(}aCnzCo&8@BnxdQl!W81J8QO*RZi1l99l%J0aNRPS*i zvzS6;KI*}K$zCKoaj-cgB1|^OY}sI*rYPb{L!incN(0-FDz1qj^r?>1)0!w8?b9v| zVe|kw9vK6x6;8Ol&1VCqIf?xww8m4A#*EqZu8V2-^>PJk4)pRG+qY!7vg5BWOMMh7 zCqK_sKTkpcpWNb>R$a8>?$gt=5y;WAJ<$P*i;Kkpn8g8XKS=N6UmgSIT8t@T0CaNb zr8P&45u;42t$}7;K>u-J@-e@3e_;TeLl4{NxV@$k3srTKTc~0DQ|h)w>}y#ZQ-=Psw5%hFnkyp?hy!ZW4t7D0 z?M*-#qT-2T6L1bX>3X_)K96oPuiM5u8`Y!jeJx;{hA7M5nV-_!1W8~m9z5P>71pa6 zLLZISh+)EW@9Y%N@na7x(b0#mC3dRIvYc7GLaIWH=p7QU81jSaG;Q8~7Z z7`08kzVZC+VSXxK2YwtJ1A;hqovOGVOBEfvVTuP*aYmshO?G_)bu?RDTON>wG=760 z8eB<(MYunW3S6Tda)h>SvUYYdGrzGt0-3LR=L$HUR>`k@wBqUf01-vK6!T#uK9yx%_aRhUFboL=rC# z$27{eHIJ^%nbv3OhwsL&QWjqfb*`~ex$AxLvg zq2TLuV~x#JX{q!^=v-DhsDqx}xPw2*(jh-pkEAKs7zgarw?$(jQ{3_`-w+ZAD`6M+5GtB55 zWUe4#%hpy^Q$r@&*GTG{-7TP|*&SW2Fw0NWek8y-WBS&Hx5&CY)P}RFyy{gUb^S>3 z6K{TW{YX))I?JAaoRW>+dF5XK)%6I*qB!MfHlsOpkLNO81@Jw}jlLqGtFc(a9xXM{ zAg@Axm#01#vgU(d(S$UiYGHwHBQ&EW>1XhkU!T5;OZ>Rl6iRPo+0hgD$SqU1y45>* z-Ak(e9_RQ{P$&JSS7kIrW*7pav$G?u5Vwtu5$~PcvcVu?q@i9TgLc!gG19nwe3f%= zui-i;6p8OFTpm)`clIB~wuEv)vO;O>&NRFUvu$8c3;NTgQk1v+7~`*ozOm{WR{{NZ_JvQ?WicbTW6L~EmR*#ba44fK zlZ`FWFYo!}nki#<-|joy0vWHl;5O_mdfk*3qzA}mI=UVKPpNteV{sKN*5}-*OMGEp zj&hPZ+pCfc@4#${Mp2e>SEA}1KtC29e~3(FLb)FU=X|pH?7`%9G_1DziJ}gisr`QKA#_bG&P4Q3oAsE(1%im% z`d%;x<1f12Zrd1+py+pF6eFuF=83f8hVo4mrcQI1TJA$smyT|{Lz9(f)_Gv0UTtVI z>vtySaGkUfRY=GD)>L*$S{}0MOl|@asXbvKLnve{jy2TN^plAA`H*gggTove3Ge@M zLr-s^!9he<@%oq~x8{xHb7!*Z^pI&ar?sP~8-A8PM!V^zMXN64Fol|aNuEd{*@3rj zq#E5=qR%mn$`)k(V}e?Er6qbcp!q?Y*m7_zICm^N$oCRJVFBGR+c6}<9k zNYA(WV&5kKq-OwA_F!t^VK6hzxtDz~q^O{jb9;UE6#9q^+`l48wJ}wi;tl9+YwM-N zy9{E4CHMyNUwM>tC%b)TNqIUciRNr9N-qthQXiC-#>{ zE2_3b2TSAd1TIj-tY0Zzf~o9zi9~fv9#Ik87pNm_=zv1 zsZv00S8Y=W=WvoExq zqW;9WOh~7$z0HVJ5c>=GotQCbeeJx0pT_L?v<_+;`0y|TTk-l#y+JYu4SxZrjaD0? zLGu4?rnx0EhY>e0Y%(!@^Zos!_4e59SW^FRDHJsl3ArZD-!{Z~78WHqT}-!+5Bp-3 zudg2@C|E7`jKJ4}FSn$Cv`6||!yf)Xq1M==J`GJB5CWE=QFo~P0mnms_^o={q4h)# zu^OEHuBp_4=OB2?d7g!X&y#ES{iS>GSXJ<$6zj;%gGt$?t$n6KeYa~$M)j0?K0*K7 zu;zW<)Hr(;YuJ4LML6@e%Pp98+?2rzo1Gxr?fw?2pUw3pgFBj{$CqfAOCZg=WTpj# z#CI=Acrf&BE-Sg-f$8K78iYDOS@#GUW-yna}Li@emt6HYjvV=&+De9i3~x z;Ce*Q9NbhFfb+Rv)}qk)9`dhDAOSu7Jf2j&9U>7`M_$PGsQ%x%GU+~$7zp^#`fP$D zSH&UtmBcZ?&lYX-dgB+Q;#>|rKi#pbFjX*Vr9SrVDetVr>{HJ20}3}0W-UuSFuRCP z<73wd7~V;lZ$U=7J8RB)_l{&)v^=BJ(0~ra#^oaoiNvs9R%jCjNh^*J8&~u)VPO*~ zdBefq9#vke{M@LgbGD$*Gf%rJ(h)Z+`Oc*)RPC^8Tzyr6kA(G$M?|qaOx(Tf#Q;7XCZypCSU0{r9P=M6{p{Vsp}8{ zTvPJ!XX7TcNNn*$d`rVTX@S9vZ1I5fP=BInN8iYoI&9DLJ-Mwfw8Cv}j_aj-Tk;4vL%jDnxihDN-qRgsxXrbkCO-U9b~j0|Z<#0Zs4P5uM})!sBE@guAy~N0 z7zUNDcx`m{nZ$o_=S9ImprJ}7QXxeuuE-e!vVEQZmD(}4La+F_6k=pb1g9gC7)bUw zVh}Ntd+$y)4-h7siao4+dM-U$gtRXgbQu;JBGFA0t5td6m>mF(4}TRmy#7^6sPT#G z9PW(s>wfJ9=;ue%AAO|>a@S;qUW3ILK5S>bCt+R(=6QOP^&w&bqgs4)b&QPk$$oZPF*)Yhv-YkP$Q zU*N=4UjF}vjwge)wYAFzsstDs*+LT@G4I8m;pA%5I_IU`Po+W>CzT1_YF61AMmoxB zLp3G(-+T*-uJiYc90I4T`@W;AUm4KmADReQUR(;Zojj;NRFZ+oU(4xKIW|jCZqm*q zH-;B0kDW?Z>Kw|w&q{D3G}qJq@ix^WWh;a1@X0%$$sn!Lr&f=7t9K_e+Qt10PL2|q zqzuD;|HFABBhd1YylF(uQ?--zpt>~y`99Iy)~MCN%IJb@FP$$49p+y*sAQzrk?*l66#b0MDpYU0jHSHNp+c~{|zy*H|?O%K@x-Zw$bajP%H%{osMmj5*4_8EV5}XEH2MqRi$MF- z>te3Idt?xVEs6#_idz!g8jjp&IO50ew5(>_kH>HDGF=|L7sDBub0?S50qZNJiR!V392do3;6o=24?#gK=D`s z{CL@@NwHohEnQ?))ytC{tt4PQ#oTEsXEcSpb1puG(f7yY9^O1qcqKm_z>v9+Vu#rog2L88&3(fZ-_=LF|(oK+o)_6H#a|H^p`Jx6lMDQOA_o=BVD z3oFw3{q0$6J@^K!>YzjgC6k^&Kl+^({8gRs%LSy`zQ9UGGehy=4qmd(q8j~Bom-QD=lXu-q_92-cn{iflYX?pNU&LO1=cL0^{8#btmIqPP zcelyMfTb*exF`cz(RadR4u@U<-Zk**Wg{r|0J#YF_OVl1z{_H*wBm4DVue9DIzn|N z@P4|<#-E>j-ogXAqJZ^SO@$#%yrA0spEyqtr+f;I!wq7*9XBNKvfDKGsBH|tYtaU^DhP6E7v1vVRr0Kx=mtELEQqzH%Ry73ells2zGJGwt zU)Tf%1)StB)DCI<%{(mQm2^P`w#=@edYTx1Yw|O_vFSsz0RkxD*o6y+rJhPnEQon4 z6BAu}tyN^1d@h!*SX(r_d2rwa7O*!)bczz!o4)eJTj+aZM{V>0yWV)kka+%ae1?)Q zAw!MOrVeL+!kapm)rnIff7M|_t(#0u**NfO$eN}rIcd*e-*_ohXG7_i69~I*P+O?B z3IezqJdG6VCWgCEX!#5?-sy{VrT_&Pdo z&Gf~2;WWwZGuVVXyb*GO3f=SQR={JxwDmu4q(rHWuL(xT=aO_A*I>&RNrO~#?X!M1Z*X6p>_PtHvSOFn<1 z(c2K~XSx4Nmii>~#JA|=r-nD;B{`QuI&GfgD0_ptxiRhv0VP;JPhI?%ewkg=b=7sJq%{|(8!e_pRTPS%K1dF{O@I3t- zygG83!m?mgl#ADpgg%G#(kj-rCgXFPpDwZK#36stbEkpm7bNe2QL>>sB!~`-UQygz@MS@S{pwR?hy@A{$=4>)OstgKnY)B*XQ>kTxexIY_gpb z{0q317Yoi|k*v3z#ebETZ?JGCi-C$_;|;s}G~V{VxBdm7xNEPT{i^W0vDF9=TJ;@a zw|SLD_;a9V-UCGbP4zDzn@X$6ts5Tp6)>i=0ED5Gx9t$kTZ>uHgA zUGKwUwtH9kP2JWE%NSn!&*CWKwL;#{tWY$>c(VRW($8%_a5)S3JJX&>+4vu3R*^s1 z1GigGvJHz2pP)#au5LI7Olhru%~=Zwgx`1`iJyhvq*Qk*hD`5CP0xs*r8ZlGmw{HV zUBFe7I~r7bRJW93ee{gaKiy( zb6mhRcmVtmu~!{*lC-K&g~v`A8EGj>>J2d0gL5GG;)JvI;Mvw`^DqMgb{l2 zu;v>28p%`FnY(HvSbW}dgrrcqLcQWlz52rx@d)3}GK#oy#DbmN%I=VF&uky1Tbwl% zkGnT_7tyW3mq`$g4&34e<6ATGX&bGX1==~YIO2W@18KKK9IUXW>#5Jt!HlcpUeclU zoA~o?pZzD5Q6P3F0f&rZu^$07ZKQCAWh!5n__Kkv%MTAI@p02`Qwt64P1nFrZnD0? zkHzO&Zd5xHSzaw=Q-bpE(Hz1hNNPj>Fp6aWo$}Y8Gzc%W4KF$yURM}nq!Qyso+nhe z;>44Ll*O?tjo^HSb)`m0$9ObXLSGt_`xpl?%F@T$G0w5(z%gzK(jPdGsuwY=?TVT| zJ|r|sUajuQlXQ!GV-%HAl*XxJ=1r)0}Wae%l z9kG+-1?MsoemTSgzPLotX!PsqyZc#_B1Lz5Cq{(e!ij0`znubcX3PB>5404#n+G2O;G;P*z=r*A9PmH zx9v>wtPqGIYZ%|Ju;IL=G=*Inp_Cn8HD!U&(I}a2V}sFu{gwX;gX?}^;&63P*(c}K zfHThojedw9Y`s-)!97_X$-W_w8Wp7eA?DwVqBZ0iw%4D)C!N`Me#`8@w0e>K7b1)S z5z+5b4*F)H>-SlUUXX~S2i~o~=_(Yn zq!-tfNfTy7!!&Q3AD4ACCVVUvk)+pl?sYk?#?Zo03{ICQH0qI|4z2-HcLJRv zrn&wCG`5E@?d#xO253jw;m7N`EDUmRYJa;WH%!Se(o585&r4n@P-ZAvJk~4fU1e*7 zLee>CA1(cQQ|pcH(X>sb4_@H)7(vT>&R$q2+}`dZEvH@|rME_`WV#Fd{If?l!i996 z4&Hj~StrKQh>9q5mt$W`o}VA)u5Nb(3oS+q_3_jWzQJ}G!hG5$e| zxqq~<;y}>QmSWoI$22sJdIIb7-<9Y=zlU{C0=`o09*W5GF{Df0b+eCl-yPd`b>AI= zwJh7Nz3>yL^Kh}d{}xF3Lwef+n0!j8Dz;(l{*6SvjJiC|Li&mZYhRjQk-!a7}E~iB!t5@gg`hi^^Bl ze^EJ>LxiUp7@YJqxN+k%)*1=yCmv8DewWANT%Butvojz(f<>b2kWN&$oJMZ;mqyC$ zn;H6UvZmsU(pO@>+C`s}#?2T5sv6V&X}JElohx}hU@V~AOqgN>L zXB1Gwyf(2mNMu#YtydKg$*geEhnzM#p zlJ|VKWHtnzKM-G|mTDwSZCb35EjO8MaNKV`zWI?{O2_rHhAPRh2wBBCeNCEU5V6b& zdkL3Rzklj4#W)b1McYd<2aB~Gb~O5~e@G6!4z-LKQ{GV&Ue*^2_+hw9A52W>;DiW)~$Yw#zjYjy>A>|Ml; zrAH}0L+QmIHJxSa-8I#!IBEYEJykEsg8Gy?W}N67F;sivgjSXM5=Z>!JhOJtJ@Gpn zz=D9Ga=x25m+5w{Fob*<>Yk5FdebC-?eg0vP?cUAHW9WS0 zMsJ3+im`Wr*U$FJqN`v%qtwBs4Z^|VpV8tw7X#HJQp?dp4fD$;(qIBHkoKDv3Ck>~QGLR>J1n%`fg)LX`=@C$98+(H$yCFHV3!HEf6QBmDB9~h%POzT z<*QjR@82_vg`7PA+!q5-n*i=d##@?NQOOB5wOD9kp}&ioQ*1>_HeY~1C2M(K{z#Bn zk*B0O%NfsMh&9}hHGTa%m15V8DGma38bso!HZhA3li@qF;Kbf8g^*!VyCX(0hN<2r zK&4x|^qVO@!>Yy=IVEa{I=Ue6`3%mQNWVOimOSpWjg8C^(>Rgd_Rpo&f(*DM(C#1< z`P6NBYa2j8-Oqrq{W5sGnaObHUepL(yBGq*lEOX7Ano>)YD{$2Z)x@GBwQgNBq_bD z+jO(e)3`4p>iu89cRKBwqyF(!Z}C|_L46Hj=ZBd?#nED1^ZEOx}Z*$X`wIBEhrE(jGwuW?~CN<}JC3NPOOBQma zsd*t>U>K}t=QP3%^U4d`Z{|)>!&v8ch~##9UQkYvGAy(#Yx-W0=uZqJYe>)8=QR$q zF5mq+uOm8v6kMy+xy;SxMp~&RAJ6ki&c0ygpEYM%JxbBl@2qc5NnmLD#k1d>l2v5R zBeWzcXdWolQsT-Oe>o&A*Dr#!lp%!j$*$Eum(6X~)TeY5{+%)w z#wMitKWx2sJe%(qKb%f&wRBLMwkR=cl^E59qE-kcMr+n4_SS*cED|c#$B2j+HDhbd z5~B!8j2a1I@2$_>@9+0|o`0U}^~xRpUH2W=Irlm5bI$u6Z<#6GwLbR>TXvT6NTtg) zM+oXCI{0c_I1@pV!zde=0SJe8W`WSu;GmakNijW4X$i==J~F)d!dv`!$VXXhpzuf~ zLy`h9ZxgLh;Vy~Pyd4WU+Upf4xz0Z*;LwdHOf4wx+0`pUMCK zWy}BPQ_g72e>65D!c2sXe3#8YZZuz$b_+u<%fFzu#FzB~D)soP5*`x+&hVe>DY3p%+2bQWdau!Q*b9_7N!)5V6kv1Lp zB;*h6ID$rA+n1l>9gPoFbfwiz?aMdaJuKcky+YW`=o8N;9WB#E2a4_S?8y^P^;O!^ zdnyGCD;qRC2V0Oy9d%UqdhIEiQ0htb>1*Fn!&q-861Dpc7xYEBkPb)of+4AUFxl1$ zJK0Vz5mA$NhA9!J_Y_>yIW4xlD8}5%bIL&2M9CpKZdCmR4aZS~E;o!VKbdKQS%fsh zPW288_D&f}HZul!@A&o&$u_Nfg&>1*4Szu&@S93s&$S2VH!a%h24kC+9HmC1-_3^T zPwiA@Zu8)L>d0TJ2pWF( zLW{FAS{G-e$te8ik*74NP|1}-joGG=})o7aTG*7cx&%$KW z;v?gWP;UQ6w+K3uwfKD%wvOf`y?~)2ajp3AACRA%pM34YJJN(SXC-?cF}C1>;4frP zR*2uvMn)T0mNIvWJ&(_Ps%`+fZV3_!1l7@@}J0`tm0YUdvO z%v(~f-Q+hkG3PiJSWX&ZB9r5BBV?5<-4B+(~R?jX!YsOLtfL1@K~ke~Mh?{b>I1VMODF8wx>F zFHv?nFH=ZZcNQ(xY%R}KVH5BVjf?|I0)v6~L(>MmsKCy2$di;_ZkxQ|1!ntB?E1rr z`xG|B76jE;+=k_c4q+R^zj6qwU1oXnGfTr}>^0Ev*7j*R@{4^@l&;@difoyzsUN~Im_`c$kCNZ`pzGzCr<&wvx#B-ahLAsp165`%S|A2u5-fp;J zJ7TF$Aq|lypr@1uwwg|i&>64tJ@;$hJ43_{P@H#KW~$aw77o*mm31eI{X10uzw6qx zY`@3{l^qq;=9wG{yYsuPvB43;BDLMT(R8#)ZV%($+sd~Mzhn&$!+)sWG4|AKPUkVy?xA=8HsR$$&NVIPPnrgQeSqHxXGy9;kkhBn{kQxAs!`=F} zCpQTue^5So@oskI9!7TohW&){b@G6%dMyn`{+FV5S#1$=yW)fgP*2!05w$me#p*T` zD*$x37TucMu?wHZomNz6?&t3Tv_k(D&>9bP$%6zoA9DiI1mL^+7Vl5;x8Vx%2Hdoqm+CNKkv5Wx8pgisU{F= zFw{(vsuvJU*X0G)ofp98fBT$&`@b)MCplY7@7mngJT8o5fi~D~k%S z$Q{*6=-<7<;1+xju04wE*2Xc=ovdbI`|_U>NIGox<6jU7OnKzH`hChU z9p5{3?zvOGK?a#sJ0}{E1gBX!LuzaqF0FewUEyAe z&HQVjkv|@h{zC0)lGtk{Y?YK6ajkV9W}*&TXCsRVrtILO-xU&urQRe6Ej_opbN4Bg z70=o@swO|*vh6?_NQ_!G%jv=GJsiY0DMi8dRUExfdhESEYr72$z#rk>^%H9B7hNSp zs|Sm?&w5k#y^@v}2D5X>e}Hi1 z_-@;N6hPRbrLD<6-y{AmhOvL@CSFG+pw9n6?~1JsrF8pi3+Z+A->GBC55BRrj$N8^Ao71iFr?*bjOYUD?qNVt*0soap&4!n$c`Yx^-BJ zXIYeN(4qeoQdfg#rX?zITB3W;8DH6y36$_)-i9rbwi5<=gMwKCoKkVF0?fNPYvKz5 z?a?NW1LwEs>Z_-#l9d~?E)#}|dX=Uk1Z!-EvB)Ex$;W=*Jmn(j@GZ`Zq$0yKjBLye zYO+TLkZ}IbO8=2FJ_bDoU53;LW0QY~@p$HJ*}a(dEzZl}(9Sd_S^Q$WtCXO!1p9=< z)b|I!Z@tdi12Ir%Ggs7=h~0?~J0gQ@et-|^ZHJYZDg)z!eVgd@^=HP=he)#0fB$wk z?;Z#{U9dO=>X%X#u{@DvQz7~W*uewEy^E13d+Qa`7AA?r#P3NC-797#*)nWy_sWfv zO1J%_`L_$psy1P z_2W2GzrNdpJ@o$g+_3`yjikFbu^cZ6mv*cSxbK`f{2HFU1DDoImYl$wu+t(d^@)#t z0u}V^Yq1&nP|caxdEOqkE0Ky%-CXSl`+jbxoPB)fe;k&V_!Zxu0iul;cY=Ysx*+JR z>=fhI%b{@vFeG1TjOH-}g4*{A^GPB9c(mSa+yH}4-qiAcK&vot7psR{R;hzmHPz|a z9p*&%wUiVhX#F1VkKFv!$`GApteJIubiK!aK?ZLiPj%#`e(f3^U+JX~gn~_{c9FY% ztihM(&CFYG z+bOQ4@mbR9m3<3oiWN22^Ts+ofudlL?5ZUVY$aGQ_jxF`=C!N-z%GL^Mf8YQAN{KR zY2rCgxbA$SC}P1uC;2}e(RVV|+jD4UAB$Tm>Pnp5g7b1exg073f7&R2hQcJf9n|yR zl$B@rHPn8SJ*XDwL)+&W4rM&kzf{MOlwrFo25o$$RUS)|R?Q>7_7|LJ))c*8C&iw$ z%ObJ2sJ1RAgx9&YDXTi&A$OMIa!v#45Ei67k?8N;cbOZ&vqzeMKTC`Urnt8(frdz`iQ?k@sQh0cY*r4wnu>i|@u@;^2TB zZ5@j0ic!0rV0MLe>JW=!+89C=JJ8(I+{%AlZXyusT1zQI7S4zeCO0bfX-;$!KTAzj z$&D=+>4C#|pcjV-t2W#5D=5XXf%#6W{@6GNVm`rqLwsq_UQEnrSLHM_&CtD|z8V`o zNZjX6>K$OZ%lbr7tngYD$xcL;FBT=FDc8xgh`Bi-?;uRNAf#>fz#OA?neTIsO4%}a zmgCIFyC0pSwc_7D6y&>jBMyg#r@T(TdP(4-zr_>GyQ0|~)=q-v-9nFZn&kM87`&V< zEzYuVGNM4-C6~2VEBOAEVn_-t=EZW?j=t&p!uGOuHj_#}edkV5orJ%jhc-^r*%*x| z2@L1j$rW8BZOH5XRwIIrE_w(DJ!wa{zBKGmBzwU|>hQ3pB7wN)_Eg>fW3vDEdPX35 z!)Z&wM9U}fG$LQo=W~I>%&)kKywDlZB`!hd7xRP0g`PH*l0S;WcQU`1_;2Z7zaj>v__=i| z;yYcTyc6=1!7gH@fY_a%J#O^S%VngWOXmW-IheCH^>7rDjAt6Vxxy(}g0abKj6o%@ z8QY((Am6koPwr+OX3hnOMZ`>Ju0^Sw>>Wsrdfxl*|9h6%{e;YvA6T((33e9z<^nps z(>}UuTHh35_&q&K$D80WO&68X&Bx9a!AGk2ui-2sR0-4)y#NPdw)^op>k+ z#GQ?@f9g#0qzp3J!m&Z9ysBGAZES^w?6YQ17VtX?yFvMAtNv`9!Eaa6ts^m07w*GId*=qzwnGLBm4r|T0J5qIK0?N`Y^*eTtvb8BP2Px}*5r5F-4`moG-T$iY zV2ys2tZMI9pby&6_GxetTN;%ai*Me=eGMb+Y&lR_f0yjO^jUSU$ z879xUO!PEa<(d3)GM~)SsgB9#eqj+T{JE%$X*B69n2aP_RO46FDQg1{gK-R0{mIG)m{6=E)AT1XSI+O{?iS|xPvtEqO%|TR!`Re4qwX-t*IZV=d)7#SqN*XhuGGJUFUWA7 zXtQY0dv|+DhJMKKovgbb<7aQL~<#{Xotv^#0j@6O&MZfwr`U#Gh^ zC)#;#hTi}j>Bv6_*IM>(oAbOMX8QJmnodg&xK`CNH|$QjMnkB|KN;pfJX~)e?m$?k z^wKRZDf$}D&-4Pg7|A+)pt|&ANlbH3lxg;8*fe>SE%!}x)6~PvnUF*!pJzYUGxvH3 z$5Zi3wKt%k|8=r_Un@q}X?S4Ta=${al<%=x|>+;)Y32EF897biDNEdG3N zYEr$_+j6HA;4esvx4Ae0s7;*tcIJSghF2l+3&_stYUmt7ph@-&|?gyJ^D^0=+ zpxPB4rOSZCno1*Y-Cl8eQMB@wU4eyQMq3B~NS{)j9Q0BszGL-Os zVw&AbU%ypyi|nyFJb81SlBk_|ISV3Q376s7k*`?j&qdn9`?1WOPtmUq?)fqH#aGnl zS3d2c8Xr|y1LJpl}Gf*`yEbtkufs=bB zBvw8|a$w!=(-?8u!-72?5Q1A4%dO4fa`F?)Ec_a}nTZ?GqL5)Iw4dW?OHz$m~6OJ!3vbeb_>=Q($Gbg>(O57F&QPp!U zLhmTVZs;errv703EQ{#`%dM6re&_Zdo9N(PvUvBqDn}F@b#ObGwQmG_`*7J66QtqA z#N_syL$FQX{4`h%+GW7GK~+&Uiw#M?IxCngkLdL|H>~@<`3FMyGH(aj+^{0#2@JDm zQ+vQ25#jFdqi^7V(Z*9ER*8S;%!MzNYG?R~lsPXzxGw4G!4n-uuK4RET`OXhRz;6X z?mqC1Bub?Q)-o5&t6qPu9k9F`*uy+u-Xc9zB-m&pGy*kieebAM0wrXoRE(xM)bugp zsd8PRd3~eG_--iZOfeOUayIm9|N1bHa=Ox3 zl(7~~+N@UTu3cr&F;s^^#j_?0`<+Hg~ zmWMm^+%I5y{%q)3(48}P7()N;AoVWoM%vXsATEUL!g+vd3FL2ge{xDnhR}+{Jvrg` zed0NF9HUK5NUmG+?h+DdPQ!|*xkf$&KaC_$#%q~EM8Qrj7)qf=o(*$Zw8ikT|DDex zLJ2gTq-?_c?{=xcgqEP&a~cTqCGs!f%X(2dPAGvV?b^C7;=dY_*meG6LiN0GmUA%c zFAEzIN@!z8+t&P8?kPswa73|^(8!>Xi8I3lJe%grhOsDgQ1FFn(hurHPk=S*t$f7@ zSiG=7b6fn4;S~*yT!^FDBSD64p}ZbWweZmmxZP7)w8N9rn^CKo&sY^Zp!V3#>{g-N zq{jz+tm|fLj6;Tfu!*vX+{OgqA+KXbnKH7%ZV)4(pfvf9yKi4uHGt#cx1-0e4wt9{ZUuWL}X|5e`rz*4Pu(^du2U^J}{4eOaPqH=(_nm6*b=OCo zPq2D_L6N38`_|4pk5JuK(L}nU^~_M;zQ}=U&ELMk?kljFlfAJU^Wt&5E1bMPPPzYl z)*ksdHi&)&bsG_nYUSlyfanu=jx04$uIEZEU zoMnB2h=!^MU+N)R)>CRwUl6N~NPzmmxBUuASo-D=R!?*^ud-`ly@4SJ-kt%6RIYIZ zNdA;x-2~6-MHhQ?W(19^mwVBFR)sf2W&MsJ5ytz*csvpfi^pd6MBrvm3*E&FYqGL} zMjUZMjeg~+9s)WyKe+azhPGT8ZM7H*@z3;Iqm>Gh-0~2@rZi)yU@tWMxF2_8p&?Hk zmt4`hRa%1x9FuLQ%(Ag_{T_+(l~t`Z9^d*^H?U{B;}`o9%@tWW^rD*dQAl9GT`NRC z-Qv9)9u-+HIdRx7Z?P>D@Un7VgrL3HX?4eA$(Q%txE+(@fNNry9pO)JP)L7KVdAD- zQIG7H!7Trl($(UM<-Lak4IkoOD=O*qXI>|6`l8sH)&`IvB&^YP$V`ACh2EcqJ_loL zH@6-Hw#ZF=*{>hjVDYLhhr*)B+j`s2hf{3x#ww0xF(?4BFo+)Kqp*qD7s~AO*qEx6 zRBdg@Osv;2NHKHYwNahk91_Iv?-#ZAZ^}*fLiK<#uTlOwyQ=k(h*gRqYVA5AFR@36 z%fe1<>g)9T-)rLy3u{<*x4vL9}z4wFraNUrbQ#H9kMC zj2S7{g})4}HSDZQ!H8EALgFkj9UN)@Ey9bg2LzO4wxMo2)CIFadZ~KpuQqeoyiT_k z8X#!_skGy#6$J(v`qZQ1PEXYoeUuS8ZhgTSdx1Ij`x|z!;cI|O0|$qzE&J1f!4gkK8 z5`F($sb!o&`Ex1pIxrjY<|FDB)Vc>k;17{}D}0@BY)n^p=lUe@vH^U5&pu(#Fmon( zF7Ab2=Is@Fl~eJ}b0yQGfDruW9l;I8iPU|jiv3_sQh)Giw51Vy=7<>Vqy^lv7n3Y> zIvx4xPt#hh@^tc?e|eXi@?N*{5AmNnZytlL)xL+sK7PUbg?j!y>+4&5p(@`%=iTb{ zG!-AEYk$jc!Zla=z1T5DB;bFnve@8)>EbJZh$BkoQE6lUR$NvAR#mI86y_Q#471SW z&H7GTm~oF&f0CU()@CKfqu<$7m8>F7SH|acM+nft0YJ;2KhJyv9_KOWz5kz!>yo

    **#LvU)LRF+RJ>JO+_M>ZO7)u*m|jvC?e!oSP)F+I z;WD%leE_$vvuQi@^M_Tbd^ONP#)jPdvv(|{?I_E{vWpyEnu)C1qv>R5mk|eJ+IuI% zC4I@l8yAF(gf!Vin)CcV4myk{i?G&+%@qwl#R})mIhd)LhLLzLw@WT~;Egp<77vGA zkS7r3Ncrb7NWG`1lQuduGPkKgGjYe=PBnrFYmt$nyy`4Yv8{nZ{oNB9G}&QEMRGwB zzZeP~2VE!7IwO{?!qR^88mr-+Iz8`?WNwGxkiL=G19)vucCzyf9VX1WH$9HI#4c=g z2s>sv@*@Kpw(Y=2nwFUq4~h3@ao6;d+v}RsV)RmrG9JpN(iRiuFFW-^OFpgS2vCkz zycCZusY$tL#|*#h2LGG6X}A+u&*f;dkvwcij{Z_13$KTEu0f(ApKC%p_k`9|F_Jfr z0ns<{tevAo-y=jd)xO7i9@YS*q;Y$v(~#uk6ag};6fOvgXnmcq6E7_<<7l%5?ll(j zt1Qp-IgERVCnDlHQ5+mU(j55qY@9ug^nmK4P(2R>v#=|;Adf3~hcoP#k*k+d#mP}b zYi(xlCqJygWNzGJD6Ecl7(}{}1|~Rn%=$!$fm=eP4BW%H1R7bj(nBT4VS8&-@tsd! zB6UnE#;MT{QdVCHZ7C9OzOPrEy*^~zbl`Sj{&t4ZJp(i~GO|)Jcr)ktX^C1P=0rmT zQf}?gAgqvfNHDB0G$|O#c53E?PO-(905;1cd4sgYPVMUL^eS8k$<~> z@sW_UH4TrHQDTaB;`?1%wg-A^E z`jhOo6AYksOk*q1`+U0y~0 z1xGxTX=X?BQtHKZqY^J|q>L73KP?zM!+yI&W}Y9@nkuRhfonpUM3yHf6RdEIP}xuCeZ#~2O`D3CarYv7qs(xLyOD9}<-+0O0U zH&&uVJ>`m5`?S$Hgups&7ni9iDS$O=_zEkzIw)W*<0EkCtk|ft5Y-YvL-wQ z+Y;^}a%R`uYl1x7Bu`Y`sCP>wXBdw+fX?N7g`DXIsvdyT0$t(@1(?u*KNK?~?eL%a zBPOs1X_1;T^yA+C`x6$c7@h@#D&xY?Iz7vjf`o~3d9oT;w|$Ud7uZa3NJ-%1bd+Oc zTv}ds<_~Vma%lc~0ME6-{vUrf>T^fwUOgCP8~w(29cUnX4G^SRr%>xn_9`r9LgE+o z6+5CVn(Wt;56-y0Cn|Ck((i5C#xjbyZ8vC*tSu1l%nlq<#-^%mge*+!;Cok5tm~rt z-OAf@{>5sjKRjz*e?eH@A;cBg_b=Ih{Ck<40m&wSZq?FZC4W>L3f*2zcMor!r;$Mf#d>{{5NwJHVd*mcX6YOhLg=xbywj zfH~EEwr@zCDtiEoBq-`QG&o2kdg$B=^5=H^yl*+Y*j30%zxDea&-h`wT%* zWvVIbL}R5_E!)3|qZsXL(ERaaep%$n)y<9W`@dAtEQv!DoJRVKEsQ|zzK_b7&k#Rf z-kuBzt2%Rqc{(k~SRjJugOJgdh;_Ou?U$>==YU`Pd*@O+#Kc4#yQm3iD`VYR+;KHI z5gVFO>7tcPhtF3D+Lg+FVEu$cqG$iyB6-}6j2pyh=)O-im^)CnbN;^Vj)fJrH|V4^ za=ZB86a%$xqhtnDs<&TjhYx!xr^xfwXdQPFY1&56YcOWhfO30O?y5&UDN}W(EQ%^d zf7i5AH{IAamwGCa`8xZc<1l%fS5)v`Bg|a6E+v}D zo-HfK@<*^9$H3&A8646O7USU!x=dEi8sfBjt@cla-{x4s=LJD}X3>e7DOcoZ8j

    ytB%b_5%l$(%7{(rXLajJP?96ZzGPZ2owoJShfMKnBYzj3TFEjT@zmQhE&O4pM8M zD4PG(DhyLv~+T=?z{VhUdqgERS{55d+#^K71AsrXI+2%Y7QxyZencsOws!cd0Kh`vZS z*z4W)LqdA4&b=Asa`FtojDT8{u{}>98{s=kw;v zDWl6({6UGc{R*xNJ3pisW=;UpW8!s26nI=`b1Hj&wqaHGm`)Jl03AbB!xmD_(cVFRH?g4qnHrn?3+vLU$y)*8`qAdNlF~MwP6}(@cMuo44(U5#N~gdtTSz ziv)UUt2!6;$RJg5pOwE64h_nSK0Xg3wcJ>u$CEwOYkW*sqQ3LaYO4=a=jyutOo#5P zjGjhpsv@xarPvadf=`5Es!NK5iyb7N!MZIcLix9ryUQ#$FQ&;rZ$f zpTWPcTGU}ZI}w%!z}x^ zDsL?$&;nb92On6g!zKZ@B?OIZN*)tQ?rm+?ZuIMj?Q_D50g+336z7M6VLi=#`Msiq znzy^g#VdGD;v!6@vKp>7iG-0cWrMED)N7`B0ea??eK|fENc$*U_|JFFQC$gvAu3Gg zDFH>%149+7A0~65{B<<)=6ObNT(LlQ@5#H9jY=}(z!I=zZ*+jL&;Z!WZ!qQ&I6R2J z53zYMaTsi5DFa`naR+hYQ%C3mP_<+c1GNHW9|1DiMMXTWqmTA?_beh|d}CDvK^r+V zM0i3Ud5b<~Nh#&>i4+@DuI!D}#9R-b(O)~p!&^c)FxHgfL)5P7G6!>l>L%VtuQ~{? z=s;_;C3SL?-ADS~yE;D{Up;tV7EPHfYdf1<_}bX;9=s9fD#)p3L4$8CEd0h?fiiWe zuY*IhxCTm(Wy@aTM?Ju+o(URe)fFQg-WOHOkXY zxlq-lWK_1}F%@#>SXpV>025>=-t8nXo@Oi|!Z^4ubjLBX2+)-lOUMR&@XaCt=KwTp zRWA{n;t#+$7gd)xcIkP_o5*l{aGvA*&Nj273DSz-I4)midR+&<`M0?m`|LHmPLw@^G{aPEZG zcSiUC3QWf`p)R0`f9jT>>cS@L3XA``;9&6`a(x|5qKc$`^B)m++hZ^T_E-f9>^|v z@RfEby8fZ5*M-H=IVozyc{MEnpxQOA*lp!J9VtsS`6W(7sB_JVhxHEo#t|Q>W=G-N z51ynUq@uiPRV-+5K@x>PeTB*p+U}&NtL22k#`Fq|HsvM@J$o&X_!9^==-I|4Y zU#GhK8MK(glW?HsQ@48yl~&ZigbO)!e)6rahC`;*jM;kRS5wKYioS=YzZ%loFX*K*T_L-Z_lt$-doWEA$-#>g5py^Qn-uHnO-0I*Vy zM=!G0S%aQrZ4w*l7>p?u^7^V8xdwDIVC_VCM%pN^rh{8Sf7GTf3t2~8zj6w@K3}uYx3C!9N>0t z&R6%}Rprvvlzg3)Vw<2kJgo0@k4P=O#520l{_)fSnIf8Qx?bf@Xe(-4h?NyAymsOYvs;$P{X7O#jXo>All>fNU zVx>d2g!{!SZdtsCaA}_Q@e*(m(;{H7g=!+Ogi6fPt|)xeecxp$a+EfxHGtTSCzmB6 z?h4S@67xU(`&Gx%AGlWb(YbNdWDCsm7Jpwn)hJB{IKcftA9Ixqam0Gx(&H0t-W>PRa^!6Wyt`v~)?A`)!3zl4khv;hIKa8Iy zin=t3$Ns>}J(6L)`w`2`rsOzB>L7osZ`o8zjh@df$$X^5t@4WV468+m?~Y2u$S)g+ z=S+#QI7Zy3K7p4_o4~H3kmEwHi>{9caW%83nWH~RO$#N3r}oFQfxGFKsCDa8s;jiZ zovL&y0OheQe-EULU=YmthM<_7`|Zf1+1V(X3e#ZK5Ph!Gqg*8KH>_?&wb%M>Bm;(g zZYpcuX=yx+E<(x{t7Cp&>uBwY&W>@G-G zZu=P4a3?~zW@jB}0$w;qUz}bc!Z6+E%|WYBi~zbB2(Eu#%!W3f{`$ikMUVDqQ3drE z755tEEYJMR-nD6o0a`sYs!5o{ft1NL1eB`2|28}a=C17#2NW^myA;+r3wsQaVr3m) ztz-V%#=5@2;JcS^W@Bf(VJ4FMacd+d#+k-JNx;;^@Ggf}!&;n)kN*HP1_mix&qO9` zIVV5Xr?x6j?HpqKK@nXnvcts0ZNrvyH*&q5Qn8#Jt-GS(wk)iS82f3sUGPmkyk;`n zL{S?%FHUC9$G`8lXHvMZ-^Ip+#Oco~(BA>w_O|mNy!9clb@l>epATCJah(1hczkRo zB`>M3{65o709Ea@`CF5mqJ-V-PqrM^XF)TvGSDZ))rZJ=f$)TS3sjNu$91CKF&;^S zSMO8;P49o-SdlQeXJ$2`*^ygx!)30sEDgHU`g#zY zlDWwq5Eo;^W0pI5`x7eRf{o4Tq*UWMDe{UtI=x~ODb+^Wl|y8Z0=7O%=8rNeqR9jG z-xna0%cyd6)ZIdON%4H-bFyunABI#qwXVNGM4R&Xl(k%lzxewq?>gc; z!JXt&F1r@ZlXAG))9a`OfW}?Vw&33cEeR|=4b0ZYOs;D`sOY{`bg%*^)E&9?J-@=x z68yuAET_-GJYUg9U_!cqgsALwk^YyHkd3-PPOgUi$cy|sOZ62GDsgTVUZmp}60jp` zHRglIoq+Osk_IxzT&38pTh8$&x|WQ7f|DgHyu^>`(GDaGj`T_f9u*(ArnY=*=uB(G zZV(bz{!sV9bzP${QspZ{{zhq~Uh4n>5C1b>le_k(zp-C`ugBFK#hnopUU@QIS>e=6 zDU_}{k|E-RKc?Eo!YY5jP&P`@!&SOKNAE;QhYJGH@yfX`0hESfRgCq2fQz1K0H=na zz=D5pfTyVSVn@QA9LP=DPVbfSqvA?8luJELE)0P9oZ!0Gd6gRfCj^=L`|TC-C+d&6 zlZ5HY$}2>ao189KzaF`<^T%>V}(z=Y20tG(nFqbbAgDN99We1e#0ab?$+h-wLUghdWxWhdZt?qK%v2 ze!H`4#>bsQRse?csGoG z?nSo%-*%>CQn$nOr7LcyN(3seZ4;Lb+neXE0r z!G@XTH|b>`yN1N~1}n+d{;Z}PKjG)|f*rS?|Jp;$Nq&)d(z7gdNB7%LGeOy=aS1%5 zJ;d`FhPP<20j#;go>TVw*4f+U$Qkzx< zrZuQef!U0Kbm7i4fJ6S`S2b>^ppS~tWVYwSMsAxjx%sf8 z_Zy*m0c>pOra)wG+~o7o|(yD%zTJDi4k&K{cY~Y6A){P?5m2*avvTJr};I+xM@ECdhPUW8{1x(dZ#bj zP3Lc6aWi6-JKoe{je-$_QYgi@r_M82$&TuLn|AgetsG7viN z^i`AymzIU$JZl#=y)FYQ+#oQp4j&SO2MrH_s?ecH(8>Ab1h7AQ!6_ru z)duD8x=4fhPbmB4e*Rui>ESX}3+Y2J*DOlh>x7R>92f>qJ;zxxxY(0CO-7~#9Rn@V z)8g#cDcsMkJGw@B7hfm#M|`cu1<@3k`>KZc+2zUH;wN|9n7=id8zsTK=yChIkL6FW z_0JD$qN9_1YT4ESJXsMlWc%!X3vJ;)vi5FVrLjoK+37$pzli{ob6SZ5 zcc5>6u~9-UAuBZPkd-}9~x7&;|D`a z632iFlQ9oFAgOd&B`bOI5w)lDWWF@-;!9ea-`qYBXItdqb69<|Stq;JEjaT#d2V!ENMvH1RU@7? z&TDJ!ZtH+z-NRP4Awr%NJa8&K1n5LsWi#C zZa%~7z{FW>XT)P+w3q8|U{*MV1HVppQu{b&Z(TE2@+EQ8Ybl=>ajhF(PbVp>Bo;TU z!c#V1;}3@e2axbTh;ur?UHTnLZZw_OaQYuiaGw9#Hu2xu_B07N0tSrIw)!R``RGCs zwK>g4MQpADBuqe2UW0163_LGggZLdLdE$K(x&9!?Xi@n2RU8@OSGoh1F^klFMdIe+ zv!I*LqVoMPa=13yprgO5QX+hV*%6;_W>&T`g2LmW*wV)He6d74j*35%Bs|neqQ;@% zA3m4auh@xm4K+RdsYt+;;?W#Pghd#j!H4I0@S1tmF5Yo;U+Gvi=E1&TkDpvAZ^d{m zhvWRZqSx)k&zYsjs@}(yn^dBmBc=Waj&SOx>V0i0 zE&J1X4KirM$I>JES0ad*$oW`P32df=qMDTMXQcaXin-Zk(v|&o+DsH&M$VD!AsLjq zlh(h<9wFCetb~Ox?RzstUg~|bf3E&@bd;+hO_Y-2{3$gu{NXxa0%X^-m@UuV@{0O8 z3m2Cn>*c_|8zG^q91r*02_#H2k~KOQs2Yh@Lkfml^V;w38AEOO%0SiL)tcH8 zUrr|pqMqipmt6b?XwMj|oNl7Cr`JfW7IhL?R&`2yVTaX`$$uDlwM$avJqT7hwh}-WD*Mh@x zFYSmWbL303$(trqYE{YW-9%asxOa~Tk%IY}f&qghH4aWRrQY?K_F~RSc8SH_53qfwZ7&7v>ei7 zqJ?FBY1O`?HO@8Be*xhFUzlJ5M>{-SC&Xm1NZ7|<_GKsQ*B3&4H?m`eDg_RoKf4BG|gX2 z`F$hS_>$H>p_1)0LC?^@P!s%rMb`Ng9AO7zrM3v)hP|}j0MJ)?Z8Z^7>)WoGC5bVu z1KvM+W*(3nsh6Gu>9v^6;HL@ZYO4`&L)y?MsKmuiAWwm9IJ=6&?2c~R+P;aw{-Bmj z|A2V{i-OnMzT@I=Jh-BN&hs%Q+A)UBLrJDIbqJ_E3jDCBfbbhBD0utRxnK z9vyK9eYI_x?4_4FG`|TIpFqNR6cMh7{zNPskjMU`Y8#yao>3ohzH(Jbms(}wlzbY( zZ+Fz%GhlIiH~_1ci;UoDO#;mQ-zvxdUI!qb4rZ|#Ph_L0%3`!{qbTQjndY=&^LotJ z?+s7ouPAopiY-WP%bAsOF?gVCHhsa*QtP)lOL$F*($aT&K_{j>OT&s)EIs`}pb^W7 z1@s(l0PFATJ_R|*QdQrj^1?*#5#F14D)Bb_v~bE9Vpl0GQ~+3&i_p3+{vYxKg8puZ|S@+lUHl{nolF(>E!^ zH=_kkDei)h8q6WYJo$eeQn!w{y z7hB~LvnxORa+2him)^n9TM{4;I;a#ynu2rzrPmO8CrIzTSEctNy(MoWdd|7${_lPF-S=L; zZ-5YvwoVq|>2O#Rpy&a5UY2J6{5>luyN7@=V>Yd*xZV{R0G?4Xyxy zW~ZWX%g~gfodHRj-ie4}Yq%76vF=mw7TwKezeic#ZE5$rv#Q&8=d;Rs-E19!^TOt= z`}V|djsteS+^|;(DEq3Vid3}v8c1`T-Y-wJLMH?2&2YH!C{fkbQtFurCO40qjW8rH zP+cwj=){Cv+jX2lg>9#xg9UCfV8lBXiCPw5)0CrmH{HkN(zr?52?wS* z>}zI};%|pyKLj8GLZ*UpFKjL7G*V(8)M+ihkpeKsQxir#E2FOw#*}#LY46MnZDs<< z+@|N%B!W07wEAz;0-l6FIQ~P#$8XL90ZkapCC^>JbZiL}O$LtgWQ{Bafg@r7Vt_jq z5_XzTz9JcxMYZm;X18LEI`7Z6DaYRdM zN>VD^2bmnHG!ZWw?r*Uk2DizBFKaJ=Oul6L?Wmo^>71UGBj2be%P@YE>Af}h^yZUb zitXuTgYxJn&fH+LUgsjSc>HIF3DZMtYsy{(IMtSC@oX=D9vhy;2L}mQ5gIt|;l~5u z)&Zlc3Tq4^bzHo9b(9?xsYT}O*jYDqPP}m-e)I`j)2x~j`ml5(uj5((u;gPbu?~XgzLD;EOP{ASpB$XvS*gz<&rQrVc!bQW9Stf8_)ZDm$-hZoKdGY4uL;e<5i`ep#qI<7VJOts|66 zCtwIQFrtHqY`%j59X)8ChG3WQ&YxUQ^J{4 z1}`2=%vjaAz3iTxeKAeeYf2WW@PabX50?I(lZI)5N_cR8@_qfKZ*5|4HSWZylHlbr ze7ekgtRn2VbUvMWv(K<@{=DZN>#0xIa#ypYLO0yMtO1fDrNjI2GauG~lX?erNv=__ z(a)7w39{4!{*n56Nk1&s?}N>B#cjn#_Kms9XN+cV4@C$%@v{UT7?|r zcJgC{-GX-srUjPk(awt@4&{|>u-Y(s_&EaarkL0jZ&%!mTmzlQ9AT96t1ZiTIGS9) z1}v#_ihbmmuH}%}6)V~8sk%nBW?y9Fc&smhl`3`boSRHne*cwss{78{8eF=Dn8kgs z?e$Ch=hU)C*NA``kLh0UCYaO} zP!UCU6VaO{(M|o!>tv!k^zgbFR8B7A8P=Wi>SvVm0}M6&Y=-oqm#LxFT<2p7Y<(|3 zGyc(DXN-PjAu2{*7pFxisKw)fA=$&oBPMHq>qn+moP!S1a|72a#{A&i{z4H^xC;Xq z`U|ATrEo>w{U_1o)D$N>TM^04@^e<2$q#ysW5rBP-WSF3kR6XTWS%|;AbO_AvpeVT z_{erocm+1#J9yy|{(t!xAFpjdF0OVKOo26VT z4e^yR+!RGl>hqgff*!=r++m6C^!lUp_tp1=o6ERbqqU*;G?l~*sVUqFZzFxj7{F$d9a^qUuvQ1Wq=Li?i!{@!>*0|J zR2rCRZQCs&%@cx(jPeIVME6#R#F9Gua3dgtehN<(H$S@#HOag3PsuykAS|I3Yg46b zRBDd9mE-9Et`q%er3O_1;Oi(jO=kpR`*#cgU%EIt%;Q7ia}*{tY>*yQY&vRmrMAO! z*4Q+B&)#!ZSxi}lIs0Mg6VgKAX#(>oD}on#o@9(ZxTZ#y*c&FL7K)~ryfAQAP7=mI zCjRqDVu5s%!iXFduln4bu!EzhK}?Rl>J!RqN@2M|&R_LpMq+(#Aa-G~l~29ndZY2q zHGDxG!9))_Vf)9iz=_PR!5|2|H@G*L2AoCBP_bR8*&#=P~<9ypHCtSM!)y3pwI4F2PO?{`s`%yc>az>D!> zc~JCf>bK!K-MFDt9-hS#iqJsU0LGPlio4*5Qu}Lzxp^p-hi`hYR_8^b-;E#v+oR(G zZOU)34WC>~Truy~>Kzdr6{Sb5F-3dPuOUEm^9-+nt8&{F2VhHo*>MeF5Mv-MQ}b?; z>EuW=AGM5)d^-XDfbv(VgzlP)#-ZS91%cyHARt~MMJ8{9qCGys&*8OrbH$PD158^` zOyQ=#+NRk({=PQPiD8YRxy~G`A#$}Fj>^?O{P3*r)x5XLGDdghN415^x8iV1YZyLp z-mn|ohEJZn5j$w+@pPG=;qg2o)|fmT^8)-J>)C*C0HgLRc`)pWs(qPYJD4riTwdha zP%~yqmv_k}RK-~}Eq8%pXX9%3o>|2kJz3HmKE@SoS2>D-&?|f{o=9us&Ijn8kL`yy zciu z46;4_>Lz#|4|n6ubr)H+YvmM4MQvh~n~NN=0Uh0RIx3u*Iu18le)?EnkEp7Bjgw zX!N?cD{nJY(lMxW)lJhwQC2qAwfju9Kf!I!%gUPXL3bQSBw3rt%46_v%k1l&cbw_0 zsdyDr{)!?fDpRg598xQUse6sBh#WQDh7hqPsu^NZKCNIA!tvU(6CXZWm1hkPuaqkx*jM-uNbY^It~zKM z`BHKX+eE1U`fC_aUKR!W?RGdjyvET~XaJCP7}?oLk!CC5Z2095NzUjs3VNeBB~TMG11E?1W+Qgtp<`Z!sMY9Q0)(e0D)Nh?-5B#>iF1&d7aOVep4%+NwNor!!ZB=@rj=0TaPfbGQrIfectwwl% z-PhZCqdl+i{33&rJ%&K{SBOSm2D_Fb=b3v~$>oL%(^=;%sA@wrdvjkwle~Pr0M-$t zXK|uG!;Vg~?POblXgk1?u2SJZe=FL!c3p@|I5#1?=?75uxP9e#<(v3M`wlFS2ytSh zmNKB6Y#+zINBmwUEHYi3q$IIx?Agxp=lI*FSedBQzm2lMQ>UF2TO&Gck(7btA#)jE zW6s@e%6=<}iW?{dZaVf*jIaGzjrZ$aOIdQ7cD%in5X3r=B!Ke^NAZt=_;!QKuhF@) zBvVi7wVdJ}zt`;ol#0h^XHo?(K6PaCV2zAg(E118-goT*e6W&t;f?B%yzwn7ZMs5R zj`!pkd)y2wIDnZTa(2S^%4o^`nnU)Bi1-V}V zl0;n3vKN7~#7n0xn`)x2nT%^?8)*#C<$TjoJI309hh7AtB*Ys`FMCLcDVFQ1{H{kR zsd`ljGqgUUDcm8bAQ}-U_6i2{|xE;1*Bus z)$}47;<$RWU*b(Oewl9|nvIeCu)S}j0jt`rFItIw2X;l{|PJ&<-> zOi_&{%&AWY={+$fCG97+h)*61B}2A%QG+#_N+yq=g9n?*9#1;*VEb`A|tKht`Fr~V5wi}job zMsE!cSHIBw)j5_bDm6E#nGz|TK9F?8ViwxbKG+Ldl9M{HR#v>sBqZL6FBE}F^wcA~ zy~V1%YcZL66;@Sod-*kEd%uhRN9H>*rVcS|H22j2#4f5iOxDfm#xg6?dn-*3mFYHh zSt`=kboC=8r%6&0Jp&utPJC81LV)PO!$LJ?-A8Q12wu1MaDTPc==*^Ur=iP=RSKhm zb<04Y*D01L&db`L)plNbH41PWL^d}t@~Zo-bermi1((V@)LQ2&N(@-ASuLmB4>g&I z01Baw7uKKS1G2b?HDw3XLex&4knFYgx-wMZ(z=fZDXv+`t>t(M5}D1KUMar`X3Q`M zb|!sx@q9Pqin+9jEN+JObA?!$Ov^HRNoaJS>Z(rZi_fi-!+6f0jzS@eKmr6UGZ6w~ z@Y{|5dpN0uJ>1080xiFXee9N0$J4SkwK2N!sUTYO17pe~Cop5nGb!JD*N71g>1pZI zOekciLpqs$Y0kamlBiziciyq>M3Ps^b3-&;gSZ{c?F(YoQS06ZSe8#y9$J!^G-8jt z`<49tIGq9U8jfc4yFpdC?;Bg7kFrn8@Yl`NY9D^PxxkPotq*)33>ZKLV!$;b*ERFU-mL~4Ro)cKgtZmOPiU_;?1DbKRb zt?|O<^cHYdi2l6IaU@rE$j)?QokmSas|#0=>A9rhPhrG!Q2wahQ8mv`e3i+Q$l%g& z%P*#5V_DA*{F;191FZnpz8+(YX+gBdQqi;FD^har;5uUq9)?%tH zqwi73?koJxo;jk44D)P=4=2U;n&qdf2hIw^KeF&nvYa!!)9rJX+GC}iJ<8DgtC2+( zetcRd#kj3P*$0|4d|@rjMKCQsio-ky*Bfvfqr(*pQ>&=a$%2l1PRmTK&kfy9Qi++N z&CN>O=JLF&Mla9bUDU+gZGB+|T2_>5PENVY_2jf?UHZTD9F!gxou()@g| zG%X9l?~a;f)UuBk?kEgx63pF}87-59B{2e_6%Dt_yki5$7jb*9LNFNc#-A8b@g&pOkX>$wR7Ftq zfFssE^ChT1K`REvuXBnfx#C6Xyp zNh*g{xi~_)_<(|oI5-h!^~ZkBgW?N)skBGv7R5%L)RDydqB@KtJ*B=-UdI|lIlhk` zxv0(Um4(a6@f=?ra(4A61hQ3ioij#}XS5TpzqmaOC^q9|yNs>E26@*< zH}Oc!RkRMY$WFxbbc=R%{LQRRdwoIvYXY54Hbk`|Nxyus8`p&3Ey3Jyb%%6oxS$w~ z;hmJK{l21j{CU}u8*~7?Q9jFdFVnl}#lr#Lvgu6{e8I;d%;*3cr%Y0W$AUM-u}pu- z#I=y_OfPn)hiaIzMPhNGiVm@>r~SE}VR+i4U!))-ykw?J#rlQ~l1~V8vrpDsXh*My zn-E5}3M-&|RgoFlkQ4@LX9_mOr`B?Cq@guP@xkR4@s+j~35Clm%r_81FLZ}i=~ZXT z-YA}uKFx+Z)jB1{B|NJ8(6Qm-XSMR~J~W9&eA%$e$&>v@01g(iur|=DuRt`DfqLQ! z01Mfj^epOace2eF)D~NA+D7|jA$^?w7A^4nd2z&HQg(N5i?Y+BrDBPB<&qR_bNfOA zz%%($g#1k3jh@9ymhgI~5fKF%M-2mkTDpGxOlr4LHC_*dB9+5abM4{TIb+}$w{}hb zu=HoO!{1`6R%`8TYdScjV+4p0fjJlD>?d73vaIS&ifp`}j|%EMOzRwHmAhP?!OvCc zve_bTV*&K}D}kJq^ye(8Ms|^z=z!FX_)1%t(<|jVnWzx>4f4BG4xr5DzJfpwom}^V zY@xy0kw*sD2Vur+{r!NvuRN2;3l=n1x`b?EQ%+DDN4@JYMZ1nI0q zur8K$jPG9gdM}n`1$i_Tue-UZIJVsufxz|)jQlen?2kgMl$rHPWO^X?t`3G^uLe@B zK4eku^{%4Mp}KCVS9tv+WLlf;Qt$04#%$g9N6W!R1pQd6Fb{7rg-72K|ac<+1WkSg*!FzmTFRxA5%DIH=0uVHNbyOOX{5in{jC z%-km~NX{p|<69H7wnH;}9LKx`nU=GL@ZYcrTX;gg9URI76iGx>=(Uw}jjvfkW`i;@ zlbBZ8r=stDVh4f1#%(k)5rTre-%?57dc*T2#=QHvC(?^H@j=AumKe_V{CR_upmG=u z6unfoa+-Pj%JXC&rVex83yeWyS^?l-0suJ{zb6NO$Bde)jXS<{N_2t^?s@U`d`Q?% z9~dsxcxp{ni=XXPbSYCh`YIp;uxaSHgc)VVJqHHgGufoxmVd|qt>yW~OA2}?dHB{RFBB1aSaxy10@)<8^^@(wQ|_2EdnKu@N)dGE}N_ zADaT7Z;`(BQaG`UIxYLB#EK_y-v*Vs@RA`?Hg4=#EOnt77H#Qj4%8wL6C9 z;`z^z&ahIYyTzH)uw|68T4t{J<_eci;F^C|>sYWUEyD`s>ct&a(@<2tb0rYp%_Jr> z8nr{H^G!+k`QET9g^VF!|Gd2L3vBpO+pf>J6=X2>p*w92lmx*2*$^8)hN0^toY z6BO}hx5&LI3GtyxFZ42$sJ^lzBJi@%35QmVg$^i;Stok} zkGAX0;`X-)Eh#KwJLzO`#*Y|LR3GPeV-DA`!273-L_l=5!chaYBu_I#m&@Sf&|6~; zty;M!>4C`6lKSzZeIFj>twq-;`7xlP@y+k9qVKUo>+x@k-+7PMkt85ZAjZpMZhqhH z)Y%aE&{fv(p{x>|2KsvP&J_?dH^>b#_0o6HsYv#tQz1kf)BrJy=<+_flI|P>XtcO zToNJv<)Zf!)?K?V@)>xj^~xl-1j>I@w2V=kmCkTXIV|KG1T(Mc)e{6k$!%TOpACIr z1#F@M3EJ?o=koICgQg3VF>^6Go6=DckAw!^8M&+521Rs0GKQXdv56Um;NuN?jUvKl z6DZmS-H&UFV?7R!Xe*ZS&Cqu9Gp#w;y7gEQ>{3ODrqZ@$1(n(IO7VC-v7(;96JMx) z4SPo5>`I(-(|2+Nkk;P-j1o{9Ocn}&s?z`Rqon^dYfv=LPHd!2O|qy9Uvv&zeyE%( z*R7DfDl}nM-~sH0Ncxn^215j@9(d8T7OK5#WK|d5?DDC}YVMh89`ATc$fPajsfn&( zw?2eI;p>P9zx;4idPpCemxkuYuk?W`i4u~K>}}%)!L~;E*YNd)m+z>WS^C@L=AB#~ z9@evrKlWJS@LyH}GHp&+jj#A=eZcd{%!|Q1t5DFr1aIjs#+*OIg{jTxxX*4o7#xRU zmL2HO2WY1aq=Dyt?kS`*Z2ZSTvD@xfP(P!`c7z!Bght19+;o|S#c&BDFdV6%p#?Tp z0J6iUW-Z#_Sfik07VB~p@3EFgT&(i68wkET!_mVzErJ0Ew>4p+gMFDLM33K)$ zW$La=a@z&G3lD(&C9Lm$}&HHvM;8C}3fFB`05H)v{8ea|w>lz;9pU$~-La#!0fv$O(nV@}f6kn#?B z>sTg}uW3lQ>JY9(gz#Qh-NICeCYcX&CW+L%CafMZXf2&(&Su6sqxo7<-5toy=8u>s zm~a3eckS5sHtvPDhqVlBdB>Vt7te+1VynXo(u+fP^*;cW&lG5fE8TYS7RAPObF7_b zyB1is4Dq+on7bs6V(knn;LR z@JrxC#x}}d;AssK%M`trus$$YK~8eE!~QkDSGkzB?wP>qi!$xQf=4L)=zC8LnO&N% z&k4VOMoA->YsGsI9cEkQ6|<^5pDNNd!X1ZuGrSHjmyhYmrO2Vr9;81EEem4VeIfJr zR&=GaU=LFbZaW`)YV}AFGV5K=Qk2a0>%i z?+Uuak&~|B=6ZUC%Cv}CC{zD>u|#-`H;vhH9a`7K0OTB7m_jxo7oBpVhwDzUJ=LeE z=i6(I*q;JO&#W+w=qNS)Y_2cDE~AM zU!B!IKQ$Ggia;R24DJb%O7w?@=O##OdwBP|S%L=)0XTtadhV^r!32aFoms)DqdlZ1 zd{-Fz0|0=MvOb^8GLVVq5UXQ5h**fZjNRc#R^uc(iJ9rBa7T!xzA^n-=c1HJX^)Xv z+ii>Q)Ni&5Psa}R=}dQidkJ{@RS3#aR6*N(Z%uuU9WZqd#Z-;UITp~^xESoj8_eyI zTRwAj+qak<3lo!_=U<_Cu*!j!;{b5lxXoc55ODCEBq(*je432?QH;=5nslPjFloD- zkT_)Xsi&Z;X58{PcpErdz_Drisiti{exvX|*X?Q-^XQ9Xt4I7(M3P-#0-4Wa!Thq^ zOIjQ4@V+au&(2{*$2xsJS``s9){5wHu;qG8p7*pN&-rqhw05BsKKG!3!w4w(vip&4 zKRZ}MktV3YWXnfSK=^4e@f~pL{c&N*+3^bU?a>@8$P)_!N=q!+HX{T2F!UwpTT0rH ztb6=Jv?teXaq}^IK~nr%Irpx|+9Veu?jKu0{f&1%nGe@?j3+x4lA5f&&p!1z5s?4f zivB)DAeHLthlv0F(fY}b{k`F0h*94Kj}5PQ-}ce3C=F8rT0QZOv3jxqKSBf z2$W&mg?cbSrH^6j!K2>KIkeUCV3k!6&)azk%Y!KYsfwhU4&1ldBgIu(%VghdePT~6 z_9_S=H7+r18i3ECyoI;7KafUW>#1IG$_0%{nKbjfEPk&PwE44H+DZ4LY^l*XU2K2= z$HBxAc@C}T<_HJ+BnC8pTpDq;936+T`Vk9@Tftvp7ujrMj6YTyKRy{I$L{A3mf>r( zV7lqB>YE$=KotW(dfz+-Zcme_96v0of5BJG_d@;J4TF2x=|~bJafUD?qlUeshBZPh zeT0{8iElLp?KhH=K?yYvW3BG0x9?WiwVZALOr2v#idf9I-pUF-FMsZZ=O*)DdOWRk zdhOTuFQTssRd(u;45eomZoiV7>L`&dE(Dus%+gOV%dVC%z8T$cj+mjMbKTL#Zq2O{ zt}VtB&)Y1|Y!?fv`1IVJKeBl1S>!S!Eik7p#gv(R!tAA z>8yU~xV=%T4~%27P`$3zevcK6SY@alN)Xddi>&nBk^&OQQUys|wwz)neX14uOv?S> z)!U2AGFy&Ci$lx==W3tH7=X!f5#O~`o-ih;b_XQ!1|qG74;Zu}9+ru$v~4$I0$_gG zjLa+E*>nLBlnf35QV5*TwfiWQM(iqdDMU~WlG?GH6F@Aodun13UOO*@Q=J#dHgl}| zR!vDE$dU6XZ%0f+%H+OKKUqex2fmlqI;Z_($JE2-jLo`+A~LPMZA%rN)&@BEK@x{r zXtIzP#n6GI_KBp2K?Qw4z*}{bOHYTegr$^nQL|;D9rvJ%3h?alC4~~c^7rhl79bHT zdPP%1f+HWGcoyo-xT3wPnMd^U&SrWvtx!LyE0QVK@#g*gy=fWpyx=+R#=)%i_vYiS z9=lro9%Z~ZI8M)RociTokaZY<9TO7v9DTp&d(L${VQdJVARbD_MOCp5UbNwkUf_-f z#V%^`PE#<1@_hE8*-gMV)nhDosoTbjK-eiz4kfQH36{{YGA*qElLr2C>b%s7ytcBo zZf5XeFFjS?X{L0#d+~X184ug4&v0Z99>R89SGm4Ox)@5WPmv;gG|asmC^P1rG0)bn z9@DQnlNvvIO?z?mb0qyRhMQn64H(~Vub!OF$(LFJFJA0*5h6XOn(0IV5H!MdhGunP z=8?hnMWnM@cKGa<4M;)_d$!9~>@>S*{+6XTgbhTBs0lJsXkcjsk8Q-Q6%msnh_4?h zVSuQ^xd32}>L$bzacOY5}d9@7KO7Te^Yu7~51J!)m?OAkT1CICuk zafm8BT;3-(doU&gH5&D`T?>iFqTw@sx2Mr3p{O$Vj_oo!GNPFw66nMQX+J(}0CJV$ z2MX?%-Z_<$YF27~pxQADn|p$iJZX12Kzv;@R+)dA;)PI^~(2U`?Y6+v;LTu4+X zR5_n&!w@|cBA!iLl+m#+4I&*%UynYr*6Ft%E!b{2kF)Xe_8HMOPLw~(h@4NX;wIh& z>J)9m(5+!qSv!Aj+0CAe8=b+fw1lw>8VM{%ZI>-3IhUW*Hiv7vn;E1yHbfNxB7k@K zbc?`=563_KOW<=hCL3WeVLo&56HZYLy;H_=Yi79 z#jxy^6!yGY@QK{ejG}YCXm4nd+6Vnb+Dar9NE0zg=Fw!mUGH|R3m68RXI+$uywamg zpeg;-n)D(sptjI~ZK|70t8$0Dj&7?y3tIPWW}+IZGiy?A!5uLib?J&ljscCIrIBKW z(XjEHn`foY%lGWT`8i!`J4I|$dp}<384-+S08apXCiaW$!g?M%`#ar>3QtMRmdkFY z@VDb4Y?BI+t(Mas!@LO-zUbBTdMo@pNoYAA^ED@({@7B*lq~_rtj7f&6k*H}vgd_d zYs*L^dJhc+x5ngENCQhH2M5wG9XN5RG|CeV_3L@QDO{0M1FDmLOFWa_y(Uwb-psX|G#fYL`Tc6EzI-H%_RFzV#V zi><1+20e{cAiC9zRIavhszddBFUx8a*p%pV060+Odvh?O)}69JgWweXPuyJWK zW}Buj)?qAs*-4>)Al)E8&592i)~}_5&R|GKEyL~~y+JTf_sS{@%^qA8vM?})y-3X$ zE>tbVQ8O;SdpcP^{}d>ceXvG5z9(k%+stS4j_^_+ghp&$Y22`1wF0(}B8rmt%ZQT0 zYcga(z3ncG7Ib-Wid|z;ZRA2Tpa5Jl-EG zCeF*`pI_#mE}#G9KciGb%_$>k*dm8~(OUNb2MeU5ppyO4vd`NNN3}{d>^N@?^)*Ol znb302y0H#vbKYoz_1>8067Cy=$>tyUQV}OoOPVRNH47(cFKd^uI6P*I$)NSsg(#^X=3$_7kM0}9FaTj_Wc=SllHY$9 z-@SRl*PYEBacELoe@(-@L&L`vcP}jLDzOllOno$z!8gA-QCsrkV}(ly(NwC7h}fpi zk9OyAUUHoYSgg}@Hf#V*7dOtU)qQZS8`bhasyWuv zF>EvY?J97_EA~sCvqO73MX)XPnT^4EXxpuUOLIxgIhl~8WFyvI>810mdhSK=D;l4c zhkt;yG7?I=-Y)&f!uao`sdr4si#=AWzMt$SxRsY|Q#FvoEj|1c0CXbhP}`LtMU)jO zg+6lY3*q7-UVOD>U)ABRo6Z>gi2wL%^i4 zXV8>B%5)CTLBVBZ&X=dngDQMb50K%rB9X-3U@Nlz(OJn*$;-ToYSw`{Pf! ziY&;!`XTuwNsafFc++z){%#^GIEc$!KG4w^n?VD>Qm`LuRX-OMtb9^3~5{ zePC(1`%~`&TB|zXr-}wX;qd&NYp0*uF8})<{t&~zzM!w)Wqb-Tiz6+e@D%y@#p~y? zmoB>x86Yo{p2t}yIgj&P_QFLHoXeLlnH4~v%QBpuY{b2Sbg) z)-b4v2t5==FD5Gdo6c>ZH54vF?_dWNbb?qwje&Qt4e$nhEBO0Ifgv|tMZ|8j5)WO=C%?505E<$evgW3aMo^nWk8)9N?0cNvzwgGy! zH*vD(IQ^F6Up4*XHvh5Vf6(AJtN%@}5EFawf74Fc1YvPH>Tr(#l-)mDa2mq-9ztQp z55ZheQxmAAt-Y0*g$*1AgZ{rIW@mz6<6`6Dd&tkn!^zLf`;e3CpKtYFkMDoPFwn=@ zIQ(~%c|kA)*bKqPWdecNK{+|CL0~WpVhcf-{ue{>Z;1WhvI&D4n{k>$AOf7+aAP|Q z91?C~KiC+1kCxn>4mXswLT`xQLJQHeX_xRmG?N27~!UWM`t8vo2q`ZT$DBk{J0ozI@R`5%7wxu=4gH-^#p*i?;Ap1J9poB#IC z?Zq>0;9vUTnVVDZKm6(1`53>O7Qf-u4=+COVYYbM>e-9G-MRg%)0j8?o!h@<>g3j) z+aIfqtMKP1`V7C{I(+xpJ~3l*=l1WqI=RCLRZr2U7`;LHhlTzy(YJ3c-?)A2@N>&Q z4i_$acel8u zrw*QV?j0U{X8#)ZuQhF+xtWh+`{7%+KJ}?jJ^d;Ebc2hdVHn=}y-)t;t>>D)Hsj6x zr+#>tK|<@FW`vMic<=CIpU%g+I_rbW$1dMpeYA4E-2BnSyEkvtAl}p^@l(-fK+u%p zrX`4Y1Sx@#>lQC65-1)>Ni>yf6qnO&Up&)me0aRs2TrziJx z+b09=#Ekg-)5F;GE*WkvD0%fS@suG?lJSO%pSj7B+Qpf3lP%^dOVf%@K^+V}z@cqg zcb?SXI~h9JM*;1+I%<02qr7gFSDeywwsz~< zbP*}%{`|GNu}bdzhMCRX=YM$rb8p@M$>-jA^V_#?jmy`M?qZjFIkmVuw-1Q<&Ta5? zK0f8adHnnYHR=HrSxvmAO>F7$;#s*lIcZH+t`TuiX91FI;L- zvgt-gTNW$LQZh!aZ{vQ{dBQfHAzjbtf>&xOSouuU@*JTzY(zTkIh&Q^w(0x&+NpN&DOAfsI*;x--5yq(BHqU;VW|-}~Cv-u=SMYu~%u9jQ6szH4(fw*yaU8_jgG zk@0@M$eOec*aAfDv-sXy{{<&8QBjs%njM-=qzZ~uqYTF#)^LZqXpnZSJona)+bimyvUJL6R9EV3e^R9 z7o>%?I!xj;X)ki*lnExpYAyHv`m^`GcisVrHs#(mlkPJpu%fAy^Ibh>MSYNM9Ct(~pf zSqDuQTu25;CG^qh@4fkld#}BA$x{$jFLTd=x%Fa@V_9>~b5{g8K=ICkQcBMB5$@O* zM|c0}OZQ*>)77#r!Wfbyt%>RA=A3_=Ai~0S~14nFJIaFi`VzQ z@ZtlnP9#+kv#icbaBpcU&s^8mIf(NDN48wu(UINz=`XRgy;r{b&RbvEd+8^4|Ke-! zy!Q8ZfAoXBKl|3*m%e%b`4a!|L(K*pa0zb z@BH!Nc$cJk@2juw{nh9G-{(KO|JS|mzkc^SukL;Q%LnhC#Hoj@yxR%Oe(-e+b6{wR zqkY;YV^idLox}RsnX42RnjFcNyFdHU-Os=L?zdif_pgrR`$f2l`YKR!B#RXC#;Ib0 z={ZZ0F6`f(7bTSzus09!$Gd;^`Fo%H@rub0Pw5DVk%7T%E~<)_kbU_yo1_`FpTu;L zF9oR`6L<%b|K(R>^TMNk+mW(eln~&+onble^!4eeXLz+WW~{K!|%U|NXn4`_a9(eu}ri z$iML)KaLf?``NemUiix1FMfLWi$7Ug;dyj*+4qiaK?Pu>L04u9WlU{e*?@>>V&!JF zbIg>VATCs0OgYUJ8_UDfi=)gpor+?ly06Txwr z4$sTp3oq?U%^Uk?_K^vWkEFi=6?DV2ZQ|n_cb7Wp?)Tn)=Z(L9=dHKz{mGAR{I56m zUjCQWHV%ctd1QPl(ZiZ`IS|HN!1=bT^xR+9G3)K+SKoQ#Z}$&)ac=u({51TE$)`V& z{_B5paJD#D9Pf>xt=zbJakYty9WR+Gt1}3|xE)C#@@y#PJTFFe0nH>~`IWrwP1A(dbGF4X?LH@>m= zwU_o@`SW+b^TNK8U#)SMv)heqiF0L6m{+1nimn;5zV!nM`+8?F1!7W^N_}KL-+ke$ z?|$Jc`#g2`$A7)|(s%Cv;79j=`OCdG*If|D7%28hF!OrhIt3F16kHh8HX0 zN`*%f>R0>TeC9XZFy4Rr+jqbH>Tklyp2Um4uTJtJw@p$dcsS@X%s3dT3rSPfjjP9< zomI;fhKwCK7gsC1)QXq{UMzVydfik(T+KxZA2~DQ&R)I6ieyN`W6b@NU*3KB>wxR~ z%I}@mzOwf(ul(0HzxU2tFX9N{R@+DW_uhI1AKQE3Z}&g8_sf^?vDGGaA<(0%*VJ`o zI+WqSSjR=6#pt>UYz|Gmn~cIXG@(Kt9qa?%wT>DgNt=!1G|eic+J;@NgV>o1ENOAH z>`0uSIxqNd*UszcO!yGdWYRKBeBXw&3UX5MNj6z>kp+YS=SS?Y4?uzQ?!NJZ`~Up2 z14;A4&%gPbSN6VoU~k@k`}ax5JYE!gS)^#Z^#70M$r{xvh?A2;o4wHIM@mZolWv7F{G zBURH?d7heBl{n$`To!U;{IE2!6mx)==pov5!n z`}5SHUW7kMFb!C~A`S1$XcAp1Q$+bf6K$l{lYTb9Km;8LoS-W@{N%s?&HJzZc<<%Q znK9B@1h{o%2MWi*+=$o(F^qt5Gyj~mB8kA`YDMop|K0m$u1Jn3#U{D4er_REfjBz1ecb%cYv0A9_Hpw*Z*#9&AaIzJ{C3| zb5-&>a&9Qosx4(TYnxw$4m1GZk;c9E^S|1A^Ky=S;t-2wGVe=Dz#kKjW!=Y<4K|C% zGsqIba%Aru+I9E;?!|lG`{t=dtrHt3SvMgEC>L{?h)iTb*$S7t=|W$PlYpb?@T>Q} z_?3HaKEL6sce@~AKrt~Ln+i7+`NS~>gSSZ3uKq{-^KkM1F?ZJ8AHQ*&$}b`}$Vl7H zW^9_h9Yo$V()%Py6}^BM3j@LEF?Z;`pYs70#rw9eDpFYEbjf%?nkd(_vO8O_i}TUI zvBzxb13B^bpWT1;v-_;MuMpn-!RvdkpJz^U+o{Q66$wCH87dR1 zQNqU!WWIg)Q!X9>CM1F2*!%vE_Fnkx{a0Sw`^6jgUws4Ebzv>O{3@*fy}$ViUV*r{ z`?(kPUi_zbUi;E1A$;R^p1pBg{_acU#fO&8rTxpe0l0UgYHWF9@6|W&f8png=Pilm zR5)Rsjfe}v%0l9ZHv<+DDk+9@)-`Z$(c1UJ?(FV=zQ{wFU&03T4umtMU8 z!@oXf8ARr}8yh2QLwOlPu!UnFY10B7?qqK*mmyR@j}8Yw6fObq^SvK`aqpKe-2dkn za7ueG|KV|ao7G)lqsw8CU=c=|yZE`&m3GJs{ zy@Sgw5GDDMl7`KG|D}K22RHA$_TvS=Eje)QwpYtMmVdRsNThipuXBIB`t=CRUzv7>k_KV@o@{ zgrkEb6D=}jnqCG*hN2W-z*M*s);$RWp&2O&IE`VK%h9Nn8b}SVcV@E`VG^xZ{qm@k*HJ=x$jw znYd}{p{zPeb5V%chjUW|yZU~X$B2x#W5>9Et9SqUd4$AQjByd+Ba0+%lTx~lTFQ{j zT3V`PKJyE~i!fjSjE4kwaBgv8;-vtJlQFU5jr}Ws=e5^wG)FOrLl!uTi68X6qoYR# zd6H-m^*kSK9dVb2Wz&0R1|7g6aU5PEQweX<|mJBW?`Rx@3!GXYE2ipZDb#ov5bsvkgqj2 zrin7n$~r+3=&lH8e?{!byS{%=_ul-*S(%)>9TXKvama(Qw{EsU2#Y?+WK3MQyQ0Ig z;Av1to`#jvfA6pU91w9qhj0JG!j3=2pcgqhK9@3ZS%GqqI-P2-<}`y_H!gOUjaVa7 zdh zU%aya*ZXh%Bd!%bk^R4}i0)#HKy=G&5xKE12b-{PoaM~RGzfQ%ATBq6q>y87j^Fsi zum9G*WLYihBG<`!hrC*wBNdSL3LfIjsVvggCuOi*{l7_cavXJvzYcO-^o>P1D^3Q-*QA-?;@x9`95 zH}Agi6&PWw1zz1L3lu^VRY(NhC@&ujm{@16FS=lE22t)LS>HFqWPeqVAe!Ws}`Q|5c(j6+8LBLQvxx@e z{~WzBxc`K0P}agqM^z>Y2v0p>`C^MCS!4}8b2CPq`QU>Gt}(j!m&0P!>#IC|4Er0i z@D3mRbF**CR)ZjTM#~mwoTJ^iZj50lc&AJS_{Fja6TMA-(x302x=Np z!i1MjoB#@mW8-mwhi`l;S=1RW>ZMT<3$4C?3a85`_rr?MHgLS!WeMqWCx@RtIJ3j= z+;AMrA}&Mx(cPWA5y`u@{c}u_W7`=N%O)}n#LlW)l9QE)-@Fg zuKppM&(W%u)OhBVu~1B@3K|j)-6Xr51hENn#xp>ahp?o_^2$Dn3wv(Ul_hB+$cUmT zEt<5A$21ILLDK?y@FASf(UpDZyj4*ocT7!})K$zyHTMJS(lDJRS!1+lQ7ymk=sWyz z1G`DS_;tiphXQBCZYP8blHTy&0ry-|xEwBMpP>e8s;XJ!_Z~Zh{R029xk*ht&5Fo| zDYy05r`3=|y+zux*!gNu-i<8Vr)Vb$_54YNpexkFt-(D5KnLgL#sg4$`!?upEgLBf1>JW@h9F#F8Xo7anL(u1G$wcbc!yiN3zY-L{(aiEWwf? z8&9rur-MHwTF)o96+bO;ZFmkiJti6ZooR~Hu4G9%GUsPw$=ESetON;Pv<12R)|MFh zaOJzw6JPA@gq(QxR~Nr_Q3V^|=Vo5gq0f_WP(JCMvtbArin2u1&OHJNa(FNYVsp9g z!`DuO_p6j2qG=i%`jOXlP&Q3B6;U@JjgY|Ca`LVZp$NF{@Wmk~fkRlG>*jEl}S9Kw9zT0VJ5m*Mr5%strX zRi5PGvrdx`ULVmD=&3ldO}{kiFKingu-C_`sQJ`R?6|Z1p@6w_DnpB^Q0jwFM=4r> z)uDz<_2hA15lCtm^{};2nWr;BabcC}Y6hlR)1gm1NTNfg`Z$E1%A1fzdG1?Q%BXE& zr<^?6%TV(9TI>2ilJp5J?3~=rb%P`|nREiFp~)CZDdm{Lso`=8#E|Pow=K!qOs*mHi|qT* zrEtCkIeDe@k%1)AnL4%wI;XWxOp-+LoKNT@=MjlN$#922<2?wHcw9~z%`CghhRB1Q zvzI(I&a@^M1{K|VbKJMbDo60M4~uaIWcqF`f? zvCUf&*5$gZa3}sbgOa1{9Z6#H8w`u^MqfML_k&MeCu%=7US79x3`(6e~F0mPGwqBz9Q`(~C zT|phs&4`%ZgA>L|=DrV-_Cb=2tVjPgI5^U}lrtKwJ5(F^%&)mSt_CDAm0M#O+B@hD z&EjZNBez2}LyXodC$IO32T1}|(Ojq*-P=a*(1j|tne4b;WWSx<>eXwl>jOywDegK; zlN6=7!<^`}kKJH%bPKxFu2&3uO(2PMiw;a_P|IrU^RPsLd+AUV9jR6`%G5#L4j{djwlcwSX%n8L|)sh)Kik42K|CJfe+E#J!^ zDV%E_t3EE*2c6~kT=NRoy*0fZ#d$xjGM&uCycjeQZX8MfCA zl4zS{jTNauRn^3Rj_N$8O;^T`-0g7XAPLn!lQ9`Qc*U4U=yWuM3}vQX{5KAgWNeV2 z%FwND%5>J6u8kAVd2QE-@9HJUN!i~2eYmE##w|3X>VUQ%- zd2XH2z3gSv(mJjLngJ9xTFdOc3}LKf?)xC=z>{Qn(M&@#@|Xs`N<}c|Ny&V^Mw3?q zl9Y%`-)GX)7y*VhW0mNuR@CL5AMfs!GOu3gSFz!)SC{L<7^_XQ9&yh~ihTlg5dSZT%tvvyr zq_n717}sbqlZkRsq*bFnFA&osPcwUTAW3!>+3KWehEZl|mXKB(w8DzRwVdSlFi6t8 zLMcozlq@9OFpCa9xv)(0D=~=P2T7-jnoImR5NKd>`um=EkR*~Zc2OImGNX#avJNs8+X-z5YS(gvt_CF01UeH_+A)Kzw91d(_`c`9MMvsWJn+PWBo)?ZrqxzS8RqFA z6S(XMnp+K5lU;YdX@7knNk-^zk_3Iwhn4mYV=&m@(vImh)V&k`t{C>3KoUc1e66N* z7{V&Ybj4PfqAD>5e66tRxNMOBaHBI6VSE(A4eAE*T4@drsLj!n@hF->@$%os&r6lx;ITrApAo&*dJ`$`|3 zCy6MG1;zloIIUb?I{2h9iHEQb6P-@&`8^Dh*oYa$=%HgWS4x!|`)&`oa z#bYkQ5Ql`ZlDY4LqDcC#ts z))g2yN#nH~k0&1_6+@2B^J(CbMG=oyOjh)nZIUa2`;RL~($XS65YEO&MdNj3YD{M6 zSXQlF@J{@@V%Tc}NhGtFAvCwDQ*s);Nav)bvqP2QY3Om?Ac?5KM5@neFz_Vt$nrIU zO&Rx(AiDdIJxOY)%Ay(SaGJOtn?eSdN<0N&|3G!3k3UFKLu=3ghxslje97(-`p$TnJO>`^_CwaQ2klw=}iHWEvx>?vD3wS?T zJ_HzTpp$V8N$wljnfpFSI`AabNv6sm31~6&8O{a|&c=OkQonGfs~^G4g5>&s>5oTB9OMcnm;+b|ZZ z$RmxSMLSW`W44!4PNf58U!8K7@5H|=hP@_`q;n<;z@#XM!o|2o$4ss>Mb~qNuN@@G z%8dlAis2AuOjP-hYGq|>9=S%n@|+~a0}L(jQI1lGG;y>Q@qkF8We336Q^iDarq-X>K!mDFUVo2Clg<><7Q|M4CMNf@)^ zNHbE5(XMhdrJGQmfj~tl*SZ^ChA>t#_kEDG50Y4-G7J+Qoe-Y*tl+7iovjkOmK%6A zAW7#IGu)FjEe*K9%Bn?uHBGr&lXp)%Na91&7BNE-d_xj09j|>=bh_%Uqy*t{1xaK~ zlG4@zBSBU-7;!TP3F(@YJefI3I@id#NAK`qsvN_mozDrde;WfhONE8jz&i zqWSbtWr-`@JcjAi@;E30zNU1Zc#y8kH zb%P|*25G3sz*3Tlz8+iNQBt%~{RqhIq(;4Rkfc-1l6dZPM6x`|bvx%-nVUXbyM&!+ z>WKkKiqtHoJx12o=mQWGnEjY3wrHt&DPFpe1UY%7j}9a;36m=J>CpE9nHGkoDupxw zS-b1^Fi4WE=vWimolL&SPEn7k`(yoMw%!VrgX*p+@9Et%G)7NrmuNx#$&XG{wS1Piz>ta`mqD(MXxmzoV*y-ROK%-tcNJ1*Fc99zg zYDDMfX_8goJY>`Z`DC8}Pf}}m+r(WRgiS8vET?tJ^uUV;@}M2+!t*7_b%7*Oc$6RX zrNo%T#ua5)4`!;h_iJSQ9tKHTH>Q)rBm~C$#UkQpaX2C?fWIGZiyy{-Tj8W_`67QC z<}pkcp3jZRYq^F=uLdNEAZ1Zo=WWMP%$tXiZ&f8KVb_qu6AzM98;9tNN@%H>RE$)U z;Ik-)_z^U&xjvAD5+si-0?H~0M_M~~b6jHBJ!>wf(5@RKajz@Fb+5ZrA{|7vS=*Ft zn%TAOTsKHksq(6EvCM^-c@RW2p+M##SxYg0;y{upIyR_iLbDL26f`KN!UxHWdw39! z$`b&RT$ju)rFl_$mLtE6XL;u9tXa!Vc-U9^=sZcHs9MnkEJv$Q!4uc|pd75>X3Z1* z9tKHV1(8(3t#_kB;&LE`q1!Dol=Y(z4Pz<=XRUKTUD zoS&9IR|ArWCZ3H>vT~~HiMTXn$xxuqdd)a`;z1HmiU~$<+RB)8%*J;4k&b|sX2 zz8!ddAPMbkf^saUURAvb7Bwnfa5u|lji7eo-xb4NlP5`_$5TDg05etyAtmbCl2Bv~SSO{;LN80m^YlIOMQ(A;|rJ#SFG;C)fxip%*l-#_^v$?$r%Y_uWcGD~B+e#Ls?xZ6YDy91eOlVN$^5X!$(IqF=VS7dv6(9eNm|uKCwOLD zYVFuEC5NzyX<9r`#q;CuNs*GsFi2vdEPUGarL9cSR8`VWaVM#=R}!RnA0(ZsZeu0PV@=uEWvZXh_|T?| zClOO?qV;M(l13(}oVChho~5F;Rfw)LE~$g|G!H!SAW7RYlftC69jRe;8OdlI(RXKB zYp{RyBJTP?648^L5Ep4!YfU)RM)Yx+jlI8Ih+xIA*W^iJzOl$XuStlE5Oln%oa>}s zWdEF|*XssJtgO-UlDW*pA?^FwWopDQ3-snXz0#{Ex04$6$~{TUM_n_8W!#%KpYvdh zlK=^Rw7(qiesaQXR<#UfWFB~Q7cX?pQuxxG3m?dX_IQWeq-v*Ou4qvip37MbnP+yY zUADI8_b^BjMQjUd(HLSJF`AxZ{PToix8v0eb6CmT_dQAbo+R4E6FQD)n4O(>+F9fY z4pkbO%M}hEp0AX_$36-$5H)?A^iM5y_JM5T?RfLXp;S#x?W)f_bMxcQ_RY|we2fLPwT@Sfwlc#|GhvAuDu}D>4PVKa`EodLpPZ| zIeW2O*GboBt-`F!sHz9r&toF8yk1M>+%7;4Z|b?_e>>dB;gt>UKPAuHq$fn}@;slp z=|;1h*Ky)Hv<^9c_TV&HGmc5`pSc+~IFI8uv?PlS2Xwfb{S)dN4ADvA-%0G^NayUs zsjDj7`{A)KUTRun-3Y>Znw@==T4JzVU8O0^)THi5*Js-HzE3XauwI=e{m4fpJ(KR) zPIP~4KhJ&SITAj5_VQU5=bHASAx(w6K4rtA=ApC2CHgy`NIv@P$JBEh zXhP7i_Z|E;Nfpku45D1Rne>T%Fq$~r#TkcsNE3&LN+F5m$Nrl-R0RbCoHL6a(*{t* z0b_A4EaIhWpyx8!{qW!(o)p`aa4%1i2Lkd;^(0zKbU1bB3fA%;S#AW&T%+08&5cxfmXO9W80|q#AgPOK_?sKGLOx40)?2^o)oqoGs=d+{J#Pogh zsizVjuj|?6Tl?Yx!Ai6!ufW*HM4Aj2zjolh3#h`wj~#e;@5F{}Eu${u{@r;eb`o zT&PAGmaZMEYP9W~QP{_6&?@RL=^;I&?{g&ZmRNFToozW%3aTa`da{RzJIAo|( zymZZIlwghs=G64z7@<-ln#v-KY(lC_<`W&#{d129jS45U(Q_Iw75R7)W6?8|6WL4l zHa=YbIc)nLK%<fwi9*L zmwc@b_kA?F?kquWjE8J$=6Nd9QuIM9TU1Jr@=98g9a89pb-*FEdT=x$b)GZ(0!RqTXLF8R}40>T8M}%aDeN=~U2L4cJEry7`t# zqTSkd&Sc~>?8FZds%;qD_z)ox8hzaOP@2XuA^6h<>GIE%B8_bMJ`qqjJDQYy7)+Mc zQzEA{uK5s-MtL4jbS*36>dEaSk6n4}nC8jsm5fZ=bCdz6wp+A;rLMVLKEe|dJ62ho zb*abDZH)E^F>bDhnl5-{FNcf|_I)Ctv8&iT;XXLTA%{Mm9bAH^Vi-$j$(d3Ut*nNj z91Zn-+9gw*hxP0Wqw=*8j`5+ z@oOJXV>ySD4rtW{ywhdZa?;Y86>F~C%LvYk=$k7CNyO%8MN3(x4MXc45x2%u6HW00 zZS90sybxH}=dJ^9^s~RZ__Z-HWO>+^)P-tnxJs*eKr1Cup3Xtpwzh;7ccmfaLo|4Z zCU@nL6O45VZXQ1CG|tBBXT(zXvxA(XhtL_7v{5n=lCgouag0_vJZ@zmvxfze z5Q|~`$atjUew5*eVWd7%p*3rU!V?dYgpZ7gr@ZKc#UE4IL?-F{K-QYhUcJ`Zk**H1 znywNgNnQ&dB6-S`qYW%UM^UshkDB$2iJf+R?I3B^%yz&;O=D^`QcM_+eTLr6YYFhz z?Maf_lwnY{<;254&$jY2FJ&pzn)7<6gMR?G!u2)Z{NQb_74RHMf5 zOy4ISBwrmdYav@Uc_A=NTOcVqmdHhCGBFUsHg~%7UrCO(W4Ux~xuBF@1_2a-e!s+}$A3p)eiYuiqB zNSs{HyMGUZBpFR@&fsH=eK0o`-KVICCJeb)DC-8zU|2&qIedl(Zqz38y`(JZo`6W*s8gVC3(ZPF*Ub$!@#bP#TBnf(j-)7&} zmIu5wi(H`do@h~7(3|Rao7OFII~Lt{pISUos|8+cZVrlq}u$#9@lo zp2ngk%?nS_^jL(mnrRltx<+cwvf%Q(^`%vVJMh{1BSQh7bAWb;sN9rYPJ-A3IpgSZ zv}Mb+aen=A3F4b%?Bi66CT-&pgY;s7&XU8n$E^g>vD2fmDyODP>MG`~MN@ZTiowtxrun&5Fo|DYy05r|A0=^)?Hw*tR}vs;ZgBwI_;7X3EZ5qhWtLWFt?3 za-wN6)8dJ@)(LYxFO@c?Oot+=n{KWm-^Dc029-5_WzydJ?5le(eDT4E{?PO|cD{V_ zS&KnAS=1|vDvhR(L?2~SYPX%nCJv%mpU818VFI~mKqq202BbxY`F`6IH*pY|L&7o> z)$82jv0goee`sqArMHGj6?#vzS|;7|T=s@Y-Gh2GfgqoRKXKElVZxNR97>46l^8) zO{_={{r6?tL%GRVEuMcoHcUpb>nN!fn#`+0(RBP()fg;LNe=__W^A}y&=ZCe*h zjBwr)H?blkXuO0m>KqH4JD)`PIK?{W(^gTukrioGqneWx3RIdviF=N=i2V_s|}&9hihL)1trVp4TzGu4R#8Idzb?=QZMG&iy$kDSX5 zCSVLvF)>roIEgq5S-tgyC?kO2ia^JtbqU`MkutBSi4_GM7#C`Gsu(?Hc4e_e#WUCWR+DEFD~cg#Q0NW=HX4UH(P-;#BdXk|q@vuCN z%V{u@ftbxvO=V^vaRN9!=Mqu%Q`E zSBi)I=c^cTdmvnmzAoF^so`PS3e#EMG9rSCIoYTLm0B$eo^R%8reXKTf@s8kr&O%Y_G-LZ{6xt;b05su`!= zSJNtM^kK1L6bV+M-eYPpgAL=kWKm(lP}2HsSG9>1MdIN&cU7O#F)F$uLvbW7tM+Q! z6F0G&WLSmJOxl` zkY+w*R7Qaa;vgS1irxaB(ydzJELMbl(ny04MqcsGHxjbAs|6z%5VuABZ)8O&;3FRE zBKFB_6k<)H%q<<~eycHiCMz;aNaE2drzjB_K^x3C@E?N-Zf6DuMELF54<8!#o{i0zFP-T@3rS_<6!}6D!IHfw3g$gFdX#5|p7)+JHI4Om7uHr&y5* zmuoep!w^=v80%J;qAJ_mZFNwd#frcWyv%#s1v$csg|L!`<;*L&_2@RUqSAeik_DP$Bcv}^8Q%{{ zD+<>Nv-LLU1BQqwX!rViPM;CrIxKj0BXruG(!++sKL>xntD;!!xLT0CYKx z(PSA%C;V-XJd+g#N0=@kG({`PwB-Xr>ap)t-E38|XR)GEG9aDuB35ug>u!h=4yT1e zOYE(ucXlv?@+dScsE{ULS!`V~R@&M?lO-hENh<;qwzWVQamHNuW)X)A=SIqctWsMZ z5-TdW!c;s;ANZskx;*7ip7w3 zmv<##5|FGD~q{7~i4f zGHd>0hH=mGB$a+|^^+xob(SP>Z(K{d^NWl5yrICiz5eopdq zEAedts7ypf(apjJS%3kDXr29k7ag~hxkXTXF zNv6sm31~6&8OZ}UJYr_w=hrGZndi1|#S05e8G6jmLj zj+q=2s_1sF$eFAtD>o8kp8%gQCaQc$wX(7`TM2zLEApTn5+CJoeWi(`t%wI;Udy&} z_nE9HYucjvRoiYv?trhj6EWQVM|7(Z6NLD7s&D6PAO#3h;C!}g%EL}eVgWDb3r ziO&k2`q|kkp3Hp{ zqSIBk)yKby70H++rLEELEXe8xnSOJSkgiF|MQuf$qq$3sjGbYsA~r`ACu!T}Q@w-Z zVLh0kx}qea?(=?}o2IV49O8PgiQak{8(C45bu-q48xwdD06^;?Ko5F8@37M|vRaAB zMkeyI3^CUyr-epXFy+RzTWy82SWzqGNk*!i`8Ju6bzX!{AjySqwG%e6;-W;T8Er~q z(bk4{ZIQ{6w#~jHXeU-A$b3hsl_uyhA~f!^LErv@HSkP4T(^x9Y2(Jo4{?(Bip;)s z+%C+rtx#Cj*_B{>a82y$cj4EEQ#k%MAQ?DQY>_{(ZNF!+B9oARu}_D-56HBTxT+M=1Z3;tHnE~aKpWB7G8sX` zxK_^wlXsFi0)wBouJJT0rr;KM+aNo7-z8}yf(5T{36;#ZXBo)ou8*kR)O=l-mQq@OjabV;cXLlbr3eW zjI*59CDQ{hwkp}PSdkPSUaG#7$lYyRQHJ$krdoTyb-$ZfQR@bMIEG0GWXr}P;)s=x zups#E096h_iekYkLN7btL?y|pvO>Q9V$jKcv)_kgD^lU4ZTZ4`16dBC$Md-{d5!rl zTg3V%Run&Nv%bQMGZ191229&7@+a!r;$Ylta8V+_njz z!lCG4mQYqnDBO0&yrmM&bQ!8|x9s{9D{`+Z!coeHY$@1Gs?FM_Y}3qceb8B~sM5t$ zSr($62f>&@o&z0n3qbAb8?hAC!YN+-wCWn^=*nAd*U$JZ-Z8qcs%k z8kOmxU5dt?v?415Ouvrn)G7fu-w&ue7+Z=QvWLuym~#qcj=(RG%)+W@oWaD`8R8Rmpz@@cAkNcP#-w9j7PUh;T8?&&+t#>= z6%l9)(3E-V70O?Ng#*tE?ohqIb=Rj@Q6L&wPc%UO93ceWZ<&Njn=xNX;qyYCXR)G4 zx}47hq!h}=qpr+Usp{oyxAM(KR+L$Q(NI~2$=HO3ks3>iHfIwVwl45Yt;mY53MjlS z+0@4jqN1sWF6x(jDCQP@W2 z8(9$v6VwhUt&z%rOwCa zH-ntD%443T*iaQB(B_glXt$m3CRWt8%%m`BZAWSthUm&@91+o*w&q7|Vnw1SI{~vb zthFW_Y9sm>m506GinC5>Mbr{n_k1&%MeA~_Oy+x$WZFpp!hNFO`FeoFvdv$Q=9fX2%R%*MP^mYAYAjnBVnh|HA|sx zox?=qEyCg~R+OrphPk3eWq2-U7)zd63_8fRK5Y{#iUOs`6eWxGIHJOVBNZNb-Ql>O zn6(otsthBrU7A<5rE`p?0%IYEN{((-I{eOS-+1S>?>=Zljdf5&F)kW$CJh1Hd8eI) zQ9e{@Xtp}g502w_e+iVvkJ=&oq-!zB%{ERB331`LJ(KCIo8r1ox;|?a(vG959%w(0 ziOBMLtB+t43!XECehVdS5)ymLFb;gl9p|d|f*ILMZaLR{&mT&?wiVFsWF1h7ARa`KUbIBbiRB^%RN!(~9RpgKa*KCnW zRnKvZ(i9y}%teV48kE|b6t-C~jdIB%%w5*`^Cp+vao*0eV65Y^JI)E)EEt)%wUXPcshwk0Fg1ChSzsyKhL&XU!br-}<^=PbG7JXKsUqGs70=cwX> z@h?m6IH`*B2d^x-(JWP5FdSvc-R7#|f}tc!ZaG^O=g<0Ba=TfoxL}ILlDo}Q#RVfL zaL1KYk(V7lRV4(o12sy4aAqTx778p)-{f79ox9Ihg79RR6cPH=LL^#O>~1JG*`L+|H>ZJC~mvy_-3I3?y(Gh;*aZhBNlm z$VapD3iHb%G%FkWy%Phiza&uHo#I_2Fg^|2EJhpy*f+04y);J`j*i|81M`~81}pY6 zTMOZ4tOY9yl+4Ut3&6K&5>TFt%$0ykUKY85K?}f?_CIsEm^tHoUAYiNnPm^nUJHR& zG+#6oTL2`diFy*sV@*cW0P-;?8Xd|7v7-bJKOWbQYH+|l3pGg&LUVWQt>%UIDs{;f z%uz7_D?j*UZ!ZAEy;JK_^||bhyPzc()A4!L-As!+ljIqnN2wd8m?HuRPRF*aAdX4^dknz%KV_9? zcFnxst@10*?%6#!v;NRvxGhC-D3sk>ul&GJRkGCGn#epWVg&X~YeEZB;ajnesuwZW z(0Ym59JI??#toSUIh;mu_uY3Nx*P6PE6e(+TN5F%`3SO3r$Xwf1gR)?1Tw&&!5jUo zM2`N{*8*kC0E1_B)pZh;2l@rgK=*VPEh-b%q}pl8ER0WU$K`IyE<;PaJjb$fjtp!J zIW2*a1x&#}r9~-WP;A%0d=2HIakLJ8WBBX1ja@AMa}<1dqx)=#=Kg`@s62+53eBVm z&~gP%AH6((0}f$Q&x}&>AhKeE9CbC1MDJM&`ZRNoLYYho0ri2Bt_t z(h`gr!8}?{3q-%^a~Lk{r!Hily27z=Pa_5F*i~=T& zwM0(gOJF2gF$O^AjDUTy?tdA|#ZWm`oJhXglfN+v$At;%VuLhuBHrXt@#mqm4h5?2 z>I!$W&L*F_5Oe5fmjS>fdbyhbQ6=@z3$3W`DD6IE++2nJ)Qk^@`XN&?1HLdk9$Ke+ z=ps^q+S}wMKR>jxRDk*(CyLOcWTF)XFt<#hXJNX!mo~J~GY_>htuv=(0qtWtmd8Q? zWmN6Q1!HrnY)xw6TxQ-Z!T!`;0Fksr8oERWimz}OW@3vp#to@#(|hpw5f<9?3#lwr zIsnXtPx*=j4=#%VO}#STZio_&hgxcvfOs(bQ0kiDycng{{vQQSsPC_&XWF}2$%9}r zi%&zxL$A1~q4Zd0^;k#C5ZeG;E#=G2lF?5+06@tmKyhgx6Eb3vWSOS>4&V(^jMbXh zHUIywudD#DU^~}=Esnk@nbt|iFlMEVI%vDdMJ2^!x*-ETmK=x{+ScaXaqoEei7Lc- z$6g2i9+}`be0g_J0k7u9kMez(%?7Bt+=)UGp24I-M7hS5Y{f7^tYBoIZ}<^{JuqLZ zIO=SH9%P4A+`kbFz@f z)UdT2@qcSYhX#CM7~8tR7&3s4xP&rO0KUg)aah$V{Tm}XbeaPa*~4&GsU-E+2o#21 z%30o8qB9IP4%Meqn&MMG3II941r(K*<)-e37U1#budWz7~9LSb-9G zd>*P8nPMmu7l(ys0_&qg44WR0e+}LF?>Jf-Wf-&9`vc|I(Ieh$CH1Z&S0S0@{?|kz zYJTX33z@V~O361_Ayjxam(VP16;X~}hxTE4@<=n!AhaS{vZEJ9K_RY%(T}oX0W(T) zR^NDL_;+)^j!9TF?J01gtPnT`vK9e4(FWhM~7Il)>H6l^aGOW#l1xOo7Y>R3eunKqvxcRR#R&q3DH_&J;Y}&q@c=-$X~p zXp&4XoPY;bL#lJUr&>7BMN}Gbu8|w_#$e z3W;Vq%SvTro}ffCXpzLk9L{rf&J;~sLV#&GIUT-`1gAJWPPUOD@q{>-kEkplccfE27|Gb z!Y2-kVX#0mWxzVS``)+-H?V?ykQ z-j6es5n@oc6Iyrd{oU{1vkwQ%ELTDudEXGK8%BG-No1h9O%ERq5pl(2s@toGEB;kt z{DW6-A6#>Lb~#pW7D}!5w=U6t;kSWc-G)&q0~geA2OM z!>{XM-&e3k`|5<|?|%oO@V(884X^KI_lx)+L(!O2fs$kig*?r--Ld!H;Zhu!|D|NT z_A%5xj61~~a9I{utHpGrEe>%R)}mfJ+%Sa%k5SV_IY;xEkGZ^0U=d8gjmi ztMf_k$W@N$sz}Kw<70tI-+bG+uFn6`imNi1N(;2eF)Yo|>;zMZM?TKeu`B2C^vi$a zzi@MCY1BefX+>5H#lfHz)e%b_*jO~mi2_>iCV2Yxp5N`dLG3mwUG49rqRyur>qE99 zMt%CdbJ%R&Zm}IgNoSdPzpJEGwW>=yC4q<0kYRkowW z>$Q&-#|;-lPslhizPp6Hv2oaJiJ!4saw@LAc<_SfA4_3>U+Vb5)q!ju@O*XLD7ki@#@Z_5Zo&FPyeqr8CB& zcwb2kxu7-7f8ls5q(x7mKW|)R5ysx7tMf_k$W^I!9YuyiDJQm$;kS)%NAth5;wsC4 zt1`i-aHj&8q>CYQi z>9KXLbag)I9l5%S1)l$<6<29#TvypC3yfW47grk#T+g$ZWr2UH{qn!xnyY~hcx4sy z;jFmCB+-ncea!xfQ06pLt*kMYzwZ6mPFayDihSk44bKYzZ`e9~_sPv?JWt*N_xC1HZ83w)&t z5_guSD!=)MZ@1M{iq;cJLpg(?xR^E-1cIXpkq_AF&p%h^l72I}I`>OwaFw0(mF9Dm zo$D(-d(`=}wp?X(M&=SW$=ERT126G0&st=XF#g3)Xks z0CQ8jD!lmFyDB<=O@7<#+y0Yp&*&j7fvMtHp7Gau-DVg*+-L*`CnV@Rlb(+kniJ zt2CGLo5|FB62C+zQBM@gs?GBXY}|LB9i{9=Y!OxPkG!xo|Fh?Xe&B6?s^ z+@0}O#7i3U`HP27@pLZf9eKLSp=R-V?PCa2>yrwFu=wPr%1m-~?9zFzlJ}oHytl2Q z(s_c3({yU*8gMF0jV`4^ zKmYH}BW(Iki_j^XQ+bq090pkfsv>1g-}Sh{#+3Qby^PN%{U*xz{4brBaemUnm@DJ_ zTnFQsuf6kYZDpKe1uJ6#=}DDoCJ3S%WU0WjR>n>6G{5Ds&(^`HTmq2y<6W&~g}DpXes->zW_y zQDQ}|Xu7@|8$}ekpEs6HX0GN_-jSuNXzKhgtu&PcV;bEPCRsX} zw;H>09!vk`{y*Mo&(fSW3_UBLq?kmC;ij(VP^MF86D<8_U-*0f`ZFz#p(oXpq34m_ zk*BMu>HIIPc)H7NOXum&-@ADE(SPxUJ$wEcepcP(7$b0W%YnYQrEi(0PZv@k zWuY{=%YEkh!y#w7%X^tmdPn_P$tEsbuYDxw)mS=l(s!ARd5vA!RT5>A)s$%l0Dw5V zk5*_rt2uw6DxD_|mq3Z=wvYt^FgKy}lm6EDrJo_y980K{1XkjCnwKU|xE%7y&>Um`Sg41s@s4=Pnn(OjZZYC%vQotg`>i|I$hp znO$Xk{A4bGnOnxk&&>t=;QK7!IvC|7j2APGTNoN6D+Nw>KC#q_G~rcz{_=M8T+(kM zSLc6e#ns(4PVA(vF39lA4M$zu^PR_9b2UyeGf_26&PIoyD*L*kg^|ZnlhrVLzwp0& zw!Y%zR!7gJ{AMzB?w8g~-F2dy^161L-?6h_l?&+NDz36U&tIsDX6zZfD07l1NfgUW zT9=6}WBkf_TgE^ARa*P|aJTj@bh++8jPTy3K7Dcec%mS%PKVy|;je!Cf4vc>mwkh_ zgoT|DL*~@25OsHi8Qrnh&hz;80|$Qi!yoSdA-f+<8wXHBFCX~*`+n=dJp_aU{Q!ej ziW1Ej(^oT?KYaio8^g9H~wg zIF|Su)x*!}E*Y%*?F>3r1_+TAp`4friIHMpo|+nxDdPYWxr`aTB%8gmYge(%lc zh(Z6%{vuR?1r=(Bj$1Z;FV(k`z7W+&5ALJCabVXA;|(&+7owcC`5hfbn(g>{YJ`LJ z$_9OGN}em4U42;vm{6^w=u&dQCSmSmyq2?h=ohZ*hME^GUdQRhp&0N$8ZFM75B9JB zd9yfeXc9C`OZO=@NGQz61bnY&G76c}h|bnUyq!T47={x1A;bD-U);EOtP@QlTbNqu zx$0qlEp@dD)5{ENH4&R_a5AS?HzPx6+y3mNfeyo4~{mtjk)v{N=@)w66Y@X>r#oBRA5j-@aCrXe8d5EU> zL{d1>;iytvqA9ailN(#jHy_-5`K6kWjSG)&etfzA=&Ku-FK=9ZX7kyLn;$&$$(7^v zyZysgb}m1^efIT@3zs%7KSA}c9PXca3{SNA(y{)f6PwSR#}%`lqJA3EG&ho;8Bdr; zdaUN?hc+lGGBr+39Y*6F0ua-ZHv%W&ygZbbt=BJYTzjlp+Yt@bA}`b{D$oE5sL}=_ z+Pp7_K<;1+&lckLdIg%$vNfcsl8r+I>bdtPy?gKe*4KLf;NH9M{_fX$cm3Ay-rf7N zhS=dUt+s@`BKnSPh)JeeJRJ+EYy-D1ELh;Ewp~I5W=2c6apn1~2QM~MwOK;m5IBY^ zIm*LSRHkGt%v0xmnf8EX(4Ho2G{YtApE$R1`HlYhhx->U>^yQ}>++AcEM&_qnuU_0D-`i1Rt=eAyb;4cn8 zu=VIin};9ReCg8Gd&jyjpQv)0&a3b_ZC9qbfRlK?6g57_kocAoz)BKEJq$_ReCgfo z58vvxe5DZSG!=wl5<3*nM?&I?LJ@XgDF;k-VMJ5qO;kpa5Cimqk@1jUZin70($%KX%p0CtygwxE;rXS>yg0T9Ohq-r~JCPdAc&~Sw~WH29FRxq^OO*FuNlwD{- zjn_~rx353lKlSop_dokGwjLr4&zy&Wf?e7^e0<}=)7$6Xs9)K*@E(zeBM)tT`0B=m zH#T3rvT^;Vo5vsMzw}mp2VBtq+4;@qpV)lvBV4(2`VzL@ z`FQs=qlD7SOIu0JOb%Rh#_Q<%m<%bzBpN4F{7%cpa~>^895Cn;BQq5v zbwWz=kj~TmaskPo^3C&|tY9xi?cUwm>^)+5c zr$2sSiZn17$`o`T4qzuXkDQeL(bqSheGi*!|KyuEjr32#s2<+9@OJ;)#qIY`x0TD) z7MK@x)-2^LDoanqmP*mU4A-PWYyB`BO6}3{H#7rV$1ZLjKGR81+1OQS%26a*3@ue~ zgiI(6AVB!7X<}JkLdWosrkxjF-?;QJ&V$9PI;2%=ORxNu?n%#R_}wS&`Z9;;qt+@FjGse=|#WXL>~*%74_I%mYLO&1tPR^&tJoFwg1xjnz{w6 zM+LFSMZ8DuWq4{xaj2~nfsvTCC5}TtOc;sd7;$wlVDp8upt2?rhk~7-zCaEIl{bh# zHy^zUl^gx}@{e~8zgqvffO=LExX4W0#HI{%bLv50n{4isa_dtehvqeTwCfKzT%Qfk zzP$Cs`OPQZ=%4u60$Kzg;|fAk)Ki@8Vw*{%ILJH-;m_79DKM-wVsjHzsr9ASqlS<+ zhiE~_xhR(kgORNO!!X2*_iai5j8l6Ot7z>&&!^&6{Zp?(O&aHQ=Y=Cs_nn~)*nZ^g zsng8+mus)KH`Kb#r_T`w_VpKc9(lYm9oXz}SRcBy#H#ck9=zK>^3lfSXJIagg}M6F z){j5hxQMg+$nx}0z{V5XQhod;8F!l(fa@Upl;b8U%NKm+(_T>s2zj@2NDyLX(V{do zr2UWI=pXqQPuGd>qNQp%n%Fhg<0QTG495{YP7cJ@7Kp)?J{ChIC(-+iyc69i073zBB=*fL2R?6VB(3#FKv7F069*v!8yBA1dG4)d_pa9u5x?zA?;sTb&x82T zAbcfx5Twxd6-MMj&XgH7gX>Xx3}rDu!E34LA`7=`xO!8Tbo+&?#FSOe2TWWoA7f;G za^-0M%?E#7$!w7R$(3U;dc-Q8J-&JL4uR#YEBHelz4leojc<~Oueq}E{%csl*} zo`>daT-bec-0ITPgrq8yuzmdnJRqLBH@r#py+^m6cx30NFO#_MJI~Kj|3wac*Y{>7 z3lCH|*GU|jVVb$>l)2^j#Xq?Ct9$l*h@bgoi4!^Ug^lwQIdZ1zS-a);zjx;RFLLB_ z)9KSW^0{lg#1Pauaxw5CwWK081XMN`If)tNr4-vSLDL+EZ#MZlSHrvB^ zuDbdCbDt>Jg$$tX07e&5R}9U<)jXVg3$v{|0G2X>F!J-Z&OW#K(z)qXYUAZ|rBsNl zt!q&r8jQ#2n#G2CB71Ga42QWmxffZQ>tS4B8ac7jHUU#F z+bCSTuOX-n7lnut?NoJLhG&&B7XYQIV0tOf17)<8!!t=v|B(|l7yBQ-S+fv(J6`NR zak+ougXWcn=xIjMrl7eQld*{-1ZYgMG`>tz&eYo;Bqm9_v-iIperm+ZeROAD27#tv z>K(>1QJhdDQRK&liL7DUbN3{LUul-56))4=D=eu9Io`Dsoy%<}PwZ4u+UBe#$=SI0 ze4~-%_m&!ox_Q<##hjtT3^BaK)ci7cc*W>sRd;FRS9*8V3W@T$X3d78w3Rfrg+qOr&g;_7g3pb=P(rh4ySJQ&om?Q1-f(LLz26 zt&k*;izYsRa z^R3g^9>)#qG#{}~Zd`o zJ3A|-i;yom$9Y~+WK~k4SVS;MizQT&u0`2byE!|wivh5q;IcB8X=6$+v6b$vs^#z#&}vl0Hz`6s7WZ=`};Ea@KLld~i&WsUY@B`HN$3WIgc z#9jOLRcze1uVEuCPs!6FHZFQ^>;c>`@M1^C2C8sT;2R2N^SHdjv`s8mEFP;gKxypO z2bUXPqanSG5$1D;!7hb?2W1ShtOR8mI^(fs+f4nW{M~U!H+mwPOE_d?3zef>+xJ~V z*AZik)-`LJKRdkn${UCnqF9%llP=jo3}aQj|)bTG|DQG%)|mP&LeHjOcY&6amjWdw1N?yNd)nk+Xl`ky{bO z13kCRB4|a~#9_;2Rm);TRgW`Yk@X^?3t#Fan`4gW-|fbJQL#NkL0%J%Q-pCec^PJ` zh`C*#4f_#AMIx<(5HKh)FHt?1@lI0OK`JL9ub@iOSohp>>z%#73lX@DB;)6Z;%c0y zOG?TVJ7+Z|E4(5K5>D4sm5bIrJAT>9zdkAoXk&|5RMjN~!HH0I&g?>0sNm+d_GvyF>KS2qG|u9$*t6((h93CEVGCoi+O zD7kevEn)qB5V!` zO)Ivj8Mek+rO~!xV$vZb0^3a-1U{7L*eR1t<9!wRam4O&L!-=fmu?lCaI?fg7HGE& z5!8mdaU2)RjKQj^nYXQ%nOx?^I5gtW!91+yLI{}`rBQBVESFPaiLpspLCcKKb`q7b zirI~;kFR&CVNJmmbUR?eEVHr%XNfq&lsEw5+MhXqXmNN&GvwFDKR{uyzM=ufM&YRzh)lEBA5=us3+6JAe~ zwHmKE)M(RzsudKQineL-m;uXs0ZaPt*9v_8Q72w=vKn}jo28QI78n7p7O|KMWtglR zFq`HzPNO8@d-8Z^Zlk`Pl?#NU_{@%F(XmR!5*3e&*Ic@a+kZ61ZBDKgyXH2uyDPUv zjdszOlZ#OX@LLu5`m~&h8ken`ef^8WFLmNK>*6qCM!@#5Wk;k!M|PP6QB!7Jf;NvI zgZ17%{YJC(ZC$^-ef8b(FxBR{6Qq*&>f-~m*+20-s@;fY(ectpIZD1NvX(Wqv%to6WF->w zjER!e$VDDWn8aq*Jwy?AwEHoY1CE=3N_UxMB~1`H3niC@86XR}rY6-=fW+0-nNegH zOdU^UjbAfw(lA`w zfi%!O96mSzbmuK0P27^gjC)#FSYG9Y5_xUiMJ4x|x;Lb>yCATk9N4Krs=_(WDgi$O zJWLGbP1|<5PAb*7AYhBwIrUMqOH3GtL1gpzu?4b#w;)i^N&MS?^sQP;@xiTsatV72 z${le3{^@u6M~*DEA#{}GMG%U5;89K{#+GC%maR&y+tMc=w+e9%*)c9R#CEiooz=D) zp%gNV0uK#@!jXQ;CEm>hF9!NY7rBy0CHOmsFK=IavSC=W6Sj$sGnn0-QUKh^Ng-Tp z+M+FMB5$edRxW)RbE>~y{nLpqj#g_ zhZR*s+^;@`%KDAVN2*_TrSfq2trH^OSMdu7f#MYfJ0{ zolF4}OMHrHqB%|(*xj=-a~VsNZE@Yx<+ulZBct}-j%0$z?F-u2BMuXAA7~S}k&a-r^2I$5%!H?1h{@Z$? zh)=FOFvo7(v|uimn>m0JtvJ;~85InfBN{Q~`+S#!mWXrEuy(#~#BP|@NwhdVLKmlC zQE8~elEa&-TcmL$*qtKHW7fG_LW04dYu}Mr!(+%aY8=~yLUg5>%jI^QfpA!BIny2sW-fCs3m z|3T*FqmS0VR%%rHqcx$28s^s~Zq*Gr(>_N_k?57Io~IN;b#i&f^y&~gK_C$%k$U-KWY&p%kk{_)Dgj7KD>4u|w1moZ z)7Lap7X%(ktcN(R{`t-dM+%7R+x0%12bs==_~>0>8(IHR+j+E zR~3e#lT;Mw)I}FMV3AP%8QAMf0G4)20!Brt?JNLF!Q7&7B%^S+FjwTl=M0rbmTKK& z#texZ?eDyTfuBMUBCLnXI9j$TP7CN5@Re&y-B-FwU21ur<@s^qsiv+=EDPf!vGLkL zJM^q{mO6a4t<;HfX?v8d1c9OPR?K9!rWcm#`Rm3>4)w6KQ&RVp8C+h?$!2-Y@j{iy z1a3OCSV}@Qnk$z`F|H{A2RcfCSR|?#MwDtLI;{Z0%w!R>@G&@IO@h!L(OClU*|riu zWpwJhyjl7{!a&i0r)H%Wp+s_B*ZB}SWu_$n-7_6`9$M3N+PAn+;85J4rU}Jrex3q$ zV9f=GgOAP`WK6pGpkgW}B@1wqvS1lcDdeI+l{8W$>xRPX?wM|~F!=1rC)$bwBkECx z>ZnXMtw@O@+C#l08@Nul2>J+&=@8aQofTOje%7^f_+0k&m`bL8McZ z5k#4e0qC^O=Yb^oo@^#-Gjo($x}(QTIG4==G95LYV+~i$bjNW$n?^OPAcwX~g~0Y- za|wrm?2aa%F%(**5kl!_*e zE`l}J=+G!nG=sHG3aKM&X|$2ZDdkeBt~!pNFbW$`tb?|PHOWRnQ#XAT4JY=odX!uE zvg#?A0*ij+NENyjh>!HO&J-bHzPi3L31Z0@LtzF$6E$cjW?3c(C9z{8=7<&;--oBT ziPySnD0-x0-4=3BMNtUP$$A=ctm$}uw?o&6&_C*^nxdnzHl+oc>ZV>Od8QFWqGe{n zx&#gKeODet(0g@8QoKUD8Vb4!n$d06QL|i3yhL=mb*qln=THwTG-YxBsMnQ|6xx3C zQe*NAzz&{SQVCn|E>*NfG_ND(c&EHVR@#w_@^zoxZ1&q;{z>%;86h7^b3qu)p<@! ztLE|_b)uuKmYXh>9@A8UF%;tQAc_wZiE*%E?g!+e`v3K_yYoR z_SD-1Xc%B@mk5me=%jGsdBCA9OSlxin8#91QaYJ?hqEP<*f#tu0ixj-oEP8#l`jOL~u^NiGMdL3{!wTlOnfj z1`v+W_@(}xWQQxD+TmL>2X2fGDI8qcv@q2;l>E5lOp!Ls!p4rd?&{x{6YTUJ!Sjds z?EOvrH`_auDir`Yh7yuVw1uDJ{pvC&95Sp|f4Y*e8alAP0*^mo;i z!|PR~aFK*AdT#*YH#8HY?_7@K_g_E!KVSX9_x9}hef+G7cc2&*w9jo3G^eJEpYe*fG<_`&M2tnN|< zIru3Y#p)$aFGksN6K%LT%=B+|pLNFsIz}z1e8L0KOqVQH_Uuy7bhTxIzouzyP8jmx zm>UE0Ij9tQ@A>|NZw=5^Uq917UwJJjkJm=E9wW2Z1>rG!Np_;b3>`(5V-4|;IA@rG zX_*n=WnN_2F*J{cQtWeEXCCigc?Klcbd6KgW+$ga42y_kNu@(Cr4=YDz z4_bKu)sO)J)mY8joxtkVzh$X*$KD?)@$L0k#lQ&j>;R^Gd4kDlELG+S<*-u5B_+In zUf&;wRy7Q@+K3nD{}=8<%@72}4shjl9kt~|LS7ayh>9Ci^=gxA zRK3l*qs>q7Xk8Rs)ub4fWi`xdVtHR{S)mNTY!S)X5f0^GlF@D>)P^!DPBq?C1cNfU zLWzxn38IJz!~m1A7dg;be!p+*Bco9{AVwBSDfuQVgbL51OxDV+A|i-b)ApV~xsOf5 zgj4;8Kjw!NIUZ4yU4_Y3?6A)xUhHHZjdQw-Fpc1R4kL(0V{A6tCI5Zum)73c=FN zx4YnQqY`R8DpcR7WkpG${He|7uc+{1rPmPiFAL;)lZzj~}7;XVZ_cn#6EU=5U#vAdVp;e_{DH z3ek)x(p!cyVE)jxFowsALN07XBnD7foBq*Mt~1s0}l?24*o>WnBm_FgR2#~D}zKoqH@Z& z9Km5CPK^Q-iOE`~>aD#kLBep9(OytbmDzdV@%|GXd(urevUpFYWRazFUq~<{#bZ@h zSdv%j$_tTVf$!LuqzTQKtr!hgObmLxmDu4Qfg6ax{HRI=_A15N?_&UWZsWzTe)YEA zpA7i;*YCSO%Z*?^q-;M%(TBMo-dbJ$hd=tkZA0e%StG?m%dwi;p?}s$B{?!p*K>J| zhRXS-l?_4lO~bKEBgR0y64)cLt*24T_6nRHIguVaj9{kE z*5wb^*o8S=H3BbD6N46W&0=gWEs|Vff|lu5LYa)hv7s_f4c{22bTEABrN_u%4UF8b z_5*lr^)Dn~ckXEv*l%3I%;3Sp)x){#{ew(rJNsxA2R__fK;p?qJ{q($BN|-I@2rt4 z>QCX{=Hl_=Pdhbb+%VzcMyU>?M1mk?QCcvjm}1)KLU(uCk)?p!j#1%_Keg6WB0A78 zeMY5K49`VJwkg@Rvo$U<0_6{S&fM8!DF^#1z{0F2m;WoxxRry6Zaap*8? zOH$WFR$t3wgOXau2qL_rWQ7Q(ds;TLyJf}+zfR0UpafFto=ui;~ zaMz8B9E5S|HcyPFb@-O9YQe-sA$qUMLiS6G3`%cnIK_;;wPA0+iJlU zZMBQu8)O)Ehd5Rk6LjGpe)nJgt6$l(=M((QPcM99&z?Q^8YK=*QHVGd{6Yo8n@!Hv zIYE_uUD3kGV=4MTYLxrveKgPD9F1xPilOEG7(R2$qhBcg^)IpuEwT%9mw1V6*4YIX zYEQdt?w0|IGLrY-LMG{vT;ajrDK^1@NG>+%QV0p*;X1a z+0Ygz4ao4HBE--Xl4iw5vxpQY_l<){p7&2Y**|-+|H4~SYE+B->`RvC)&9nR^xA)a z;tPBBJc^$iB={@@Uz9mXlq8B}xJvMU?U(+i|MwSye=`IhzI$FvJ1-iRn)qoL_!1y` zFa-*?g*`a7TeA7A;UJ$rr)Kl62R_slvv!<W*ElZR#EY*@u6_pA|$a0rb4w=Iu zQPxcjf_~`=@2VRZ ztuIRjMIky-M5D0F1k9(dFom9lq%CLH`brFPdos@<0ysP*A4L22#^uMFC2sR%l!kL} zMq$@5Gl_R%RR1E?7Z&+c(P;H#!=y|bas?UH5Hi!mDyPo$Sf&vuN)jxHSk_RmEu=*MEu`tMxoroP=)mjQjVMieDJFk>FQV zYlg@a9vWEu@743R`^S&;Prie>-Tl`eCwa}M&wg^{R2AiV8^3S9bQp29!8F-w3@so~ z>u;>bwKkj|?m`O>N{x>z*mk7o3!!K@Me`Ndm zdmER32HzYNg};#-sgg%2I`g*AUf+4{EdHO29qt~56x}dnF>}t3L$wqwFGm1DG(34a z#Ih!TxKVcKPE<0cik5@$P8_0WH8G38bd6l|0twh4Wn3^q8B;e{rnrVfQ#v{J486@0 zCpWI0+PL&^H3521=?OJ_^+NypL-XgDuckn(q3BZ1bB-Asna$;y&k}r3ox0Hmh#!S& z??bf5(7UpS^%WYG!gk4`ftm|^Gi0+2DE``1)N@Ud8WnF$v8Q>0k>NzyIO0UGeDf4$ zRMNqhAsxu29HMiPLj~GIS~{V(DG9u-!+#@90|jB6@-Pz zb9U81DrBStXmNqBCvjK;jhYwGl^}<3rEloAJ1P>K;_>)H^m<#D&ukvMPK;#3Ztw&X z>>KO3ap8Rb+;JlPb^hhqi&Ob`M1MN50Zodm4Sn}K zv@%PH;ls-y$=PfQLTfF_5r8~C^jW8rr+I=g#hD>pLuY(s-GRCR2$m?6A~|O;;S%}x z*pIN8O;vw%CSDXdo<^)^F7X>zuVY{8W%q{~8I{_5J=+k8hv5 z+X-3b^L^vL6R7e^25<&y&R&dCn3+nYvS%`} zf-%Gf2RwbwnI5B7i9%Xvd663XG#@*~9ebnHLLAQt_5Fpj|HecVP$VWcF7-jehOYY? zEzzlL$wFGh4#Yi3=uk~;jR~fpp*l-B2`LDaI679MQE=mPltb|(=wK$k&d=4WZZNP;-sNUb0`FCe|)!L-Z^u|USL+8D|f zJ8H^eaHvQ*C18?fuJj_A&r`$LU#THUGqjFMRUubF9*;^5MZQ=2^rY3avSy^*=vzIwHP>ec>xCl@n~qBG906cGWjH1*0n zb7jiR^~|PbE$4OhPMm1P$;BT2j&yCQxMn z6Qb>@Li6=>d%XG$OTPK|*=i!ui0n2|BhjL%)TaXs2X#zaQDYQ}2#S-KQ&3E657q9ZwyQcA&QgHYgo`Rd9Oz-q9KUo*F7jja|C{IyoT|E8lTTx% zDj6K0Mi<%$6&h5S&_R(w3_GP3UT&9VmQhx4<9xYVlZ7U5esJ9EV3~XM-vETB1>$I( zJF)rh>Dnkk=lid}LS|<_`qt*Le}WgAha4*PYCK_!*h0ofGPF{*1=R=(LrxM;NN=>l zqqK4uBlaUjzXvhMC~b&t!xMn@1$wNmb7BV=U-*rS zkM)l|jvz?AX%g)r@%%G8Z@iDK0~-i&pD#bZefISpwO{1hs?Ta{p$_z*2!)y20Yr_Ek6obh7J@~B4ApgAsA@TyJ6&_tAG}{ zu^x}O=vGC?27<4ml}#{&+|@9)H$v4=?8@e>klj=&4|OsOJ)&ajtce6t4+*3m#HMG% zDL(|GeCut!{sS*ofA+S|o(3=iIbHquqy9;>!(GH)S-(ZRvWFk9FW5Z&5xE0S491V9 zJ5okYC11EX=K6|e?&ezT`ErD?ltZI8a>l~Xco-}xg5N_$9>Ayn{4|LgK6SKz;rP~T z=Qn@yG9mZWhlu}eK79?TED*Qz2!@lL8eBhhF_|p#)HMKx;2HW?Uqj%P>^3jGg%9GH zXKBpniCEppDHpJ>wwUJ*u%8V*(K1HNu!l@V+h#lwLyduwPqU{2h#!Bp{<$mLk9=5@ ziwx1uGuLme2SpEHKfZtO-FN@SJ%8|zzW?j@-hJP%fA6=xMJ)F-=fN!4@t$-W{v=iK zk3KrM#npE=AAb!M^jnu++qwMY=BrO)of@+^wB@766*;ex8i9&Vcd-^ss7LqJY_wEwuQ?R3X}uqX0Wc zpDJkvKV~dHEsqJ*)bc|Buy(Ma+aDdlV%K}$SH_JoqR?b)5ZO|Ch%#bN0n)2hAm5Fi zAecc#bMpHUgT}HC4>#NAA0iPFKyAP`=_T!F42V2P}^n;6*1S_^8Fy!oG{GTG@%763_>BAs#Wgn ziGfxQ9&Y2@O!4+pwtS2(1-v03nwZ!zEl~oOWub4)j>=C9Do2a-Sl{WulAZntDSjBO zt#{w8o$7%qJ&9>E?=@DihGJQw*LfLufc!HpH00+PQR@39V;PD&+o@Ug>^$Q^1c_&+ zOgK#P!$0488`CA~=@%sVP4=bzb+^N<9=4<>F4xHcFb)t+WV?Zmb&R$%l5J@wo*5Go z)EvVnKY$?DnK1z+ma{>0POkA}zp z-mQqYg)q~LtT1O{Di9}GQYx5UB8!PH+p@{PGhN9F6D?kl->%88_lKGxc!K)R703^7 zo3&vsvSEwf8{2tk9kW$s9|5S;af+1pCD}uaCAo2@Y?0zo$S5?C`GdqG>SW+3ByK!f z2y?9f7&>cYDZmy~MN_Di7=+$S&@x}XDyIya)5e9zHeY=Ndr;+gVVmh6c^BRbB1lAc zM*iGwz)8H-ZlFxbal1zgw>6J8+~-&01PVq(N#PyNpxM;MSOy^h6krx)H!gx8QZn#( z#^Ckp-LfIL&1NGcu0iuKWvrXaiEB}Q;&~-z!p%xTO&csx<|)28bxi5{=fg!9Qxmle z0rx3t@XIvDqsSCOsz8WmmK(6^X~*kC2OjqH(^hAF>^1OHU>d5*v`a`J)+wDjl7`6T z*5#vktH+RIMgQW1FbIS6&Pza7JHCDWRR8El#NB@VQXQDCcdI&(KmaT-NbS-SFgiHm z)%V1GcHViuNB4jV+*6&L{CDHRqgz+c_Q;gk?dvaWzWOoo8lQU=NPwG9U&Pqi@ejj^ z1QGRRWWPN79P-Qk*ME!y5@tOXcFWgAWHA|P8{LKw4C%-ZIBAnKFApN1>ktbS> zk%>_hn6xWR&6(@&kp0yG5yJlr_r| z?Gkq4&C-Ctk;IWNvPO~z<4QzXXLTNt{*?SBl7Db^+-%M%Uu7&E= z{sZYkeiSnX2^2u@pagMMh5EVReynph^W<#%)6B~-{T_BcU_t)%SfM9t22WLhQp>i z+;R^RBIHRj4Ss>;-uj#+*$P9U5#s=Pb6 zMg&e&ijoa!AXPYw(k;;4@ z>B_F@bS4dDU5yhiH4+D{>HuHyX`c=Gsi_EaM1rEx&^rvttzkpaEuV2X%>)5U8xDbe zkuc&!rtK*xr`d#{n`^Alc(5cr6f(h=XwF~rOL9k+glAZbNxV#tc+)XZ{i7+4Ag4ON zs**4g-IO{^8S^1w<6;QEqpp0Z%R9Hv{20eZTmVOY5OEFaa(-CpVYs%g2i-pR-p0ja zwVftVvsF1Vu4)P)Va^AolXdMl-XkHWvoGRf^+olEXSqJ3B@qgRr&3mAqoCwVz}%}z zkgB<7uec<$c{4L}Jd2RkG*8Sut;Ey^gUx8h)ipOZLx~QUnUxk(I{?lbfH4}?VXk4^ zcs0a0j6l_8-^5BOyb)y%#)2b&vqF#*P*e=icZMo8B|w`WV>tG!*p2!}UnSF#s;ubd zb05LvHDZqN0}LPW5sp95zxcuS>C-?Em11FJm<6O)!7Fn!$0jZBJJ* z%0h6msE?a)}?oAR*GW{r>41@e@}PPw2IGHZDIgc^AA|hp{oY9TM4H zgXuyHip+~l!H}cC*X)Et7lFvfD>4FNF;&z z;KU4Q*+KC{eKhD*hk;w0`;+iu19DWq*~89Q-xoKkj};jCI(}>*d5-Enq_3j6Rqb@m zV)1E_&cK~Xo;z}&fVz+Q-Wum7|PX&e0_<>V`Rt=(m z4BSNF#^%u{H!i|&${k(Xz{*j~PG2eS*AVK6PRy`7ysxHXEL)Btc`POgk zJVf%QjX*#ww+|0KLPWN{bl1A?zWh}Eb+9*}uTq5fAz=09Hk9HE@6ElzEYVx!FLZsc z?z|uOvR6QV3BU8T|MstabI+bz@H4;Reggd^Pf{VEQ#;pyEmCT9fe8#nSY}3r{vucC zFSNk%D5>S7s^9*LfBXO5`bEEei+=mLOFU_iYy}00fN{hQ0MkFf!(fo<2M$zZP<|Ao zK42b&IO6!wn}S^71OX>C0&3T-^`7f!#$qm3E68DUJmL)m+qEC7K2U106{yvk-~ni#yM&`gkEpx6?Y1MLJ; zFoO7wy+B(`OpJsj9(8bdZ>cSn07j>V}Q{dcTel$)CZ6~=x&LkeF zYzk*e*fiYMZ#0W9l?4&vSH4z^*x!pGp*Zocx3qb(7FMI9l3!6_iZ{cWRoEWdrqVNF6TYBJXL8SR+D7yzTmVBIP6yD#x7U z#;i0IQ(TGI#@NnV;vm-WGb3f?cHYpBhh#Mc>R?X9Z8Nwro_;10PvVH z#stM-CaERD%)3h(S6SHw2i1vPrCHgbZjJOuup~cIy;LnS#X?>r0CWoL3OY3fqp%W5 zO{8p!*`$1bxS2NewBmH3d7jK^ddiEoneka^h*lW7(*?aNQ99C}x?~-jEN0=5%2j%L zoZZ-ZX_#c9crLJd(Eel#0AsWmKlYfZdZ?ACn7>|i4@6JV^W8b3GcajtC59 z$DMovdv5Ke)DJ<r{~n#! zt5AOJ8zHdNI7ZFy%^GeGIStC_{d`@*L16FBKis@Eh$cVw@%D#5C8g8D8_o%2EZPnh zy*FZ=SSpyuE$NA*y*npZHFr3NYeyaw@fb6Vv8|>n;mug>QM@gB$yU| zH5(TRXXT2cX_3VVnM}E*VaReamCadU&FLE1w1N{I6)G$yfM+vLCyl$7#9&+t#`Z9p z;gveq<#a*A0Uf3ve>-)e6cyK1B(5=N!^K}wB7vXkdKu3rMxYi{QQD3k#A+l=RWq!z zI%6lr@z_xt8!N^FpGZk$3z#h(BO>i55R`<>e`~)%(bPyqCUYjkbsA|W9izfVOPs=S zvw-tOpr3`A8k*@;GJBP^7(?3}WI?A`H2P{@l@qFPbWtvBhebJ?AZlX3vhGx6|4Lsy z(vOjljx%KV>?_JhSUR+paGuTBpo+GoB1{-n*SegA#-j-h;#adWZ6rnDU`!KEwE&c( z#5PyhSs`iy#%^?xlo3q+!6EoqL)CD(M*L!AqQ#yn=Dd(QoE~$YpL4K9Qz?^`_%+gL zV#4Qs|7z@_S>U;aoI~m&<5UPUQ7?UpmrK6Ox{RrGlV)GAFs#gag-%BiXN#G``xs(S z@|xqJOSFUfj(s`3pF){D9Dy1TsUe|_#E4*^q@s%4ifOZyLYQI?K-550=tSJ;SowQZ zP^6)0T3&!7OBp~#U=>}AZ6?tXmSZ>)mhAM+BmE{;ZFhV0^p`V;xar6tD`w7!s_%uA zLzz6Sid`IRdaO?QzFg6~si$5frHkIHa}E>H*A>zZ|J7Yz{^*zg_MSao#LxV+!)}~k zhSDRA$Aov!bJ3i~1r(Rlu@*^T4LUFE$~)BH+ppaDkFWhA@34B_Vg4E~k@*^jTS!bN zjnO>GO1hv%u5W8RQmPu6*|jS-h&VNdM)H`nfWiTc2MB@bQl#PS6{ZXR#aztl)!PTq zGPg7PE6r`9O?+Wex{hiZUNI3zPV+*IeVpy&B>|kpd52v{GE)R|5>O@3Fg*0-`d1zV z=1-$bHzVn=kG{!S2SA_}jug8R;At2uGHpHppoN&wErY#;pB&1{n#H;MN1726yfG5l zeg8q^cbkQ3WB!GLccM5ifSRIZm=nfnvYVw`YPURn5&CF!N`StVCb2S{9r>kXiMq~V zwwrCsFgY#_+_pB8SVztW=c3_Ok&!A*(8#U%Vrj6HhlWJ5VOE%&08vAficwu*2aqYtV<@76$QTDnve+ zMTl7~88Ju3%Wl7N0s|5o3B42NFgq}EM{8uYlZZ0NJz>^U#>N7Z#yTQmrpHJoZ@2Ul zIF80BrLmdWBnb1!C8V6{)q^5!Uq4AYLw-*-N7?F&5m!Vn zH_B!aA|pk@?;XRx^=Ip#8Q6?MT+{?L*N=Z!cTUn$nRra3r7FP0ecKlia$o{0$=jM; z!byw;8dEwXeeXjy(pZmug0730MoXziu9ya<{^pM22AKNM+A35^H#*F1pL?c%>RMIn zhIKvHApQ(W4eK%J4f=Rhf4G2|jX@cD_^T-rjTvATCR$KF##vA?pxrewWlA}oLZMiE zRIL<=9gAulBJg>Klq_Fw_4z2*Ly?tBm$PM*(bBrAiiTgvEo&79CT|q*fyrwaFf8u8 zM0)Wm6o@LtP9{bp%K}41wC25&;Lx~9tLo#3U)Ejt1)~fD)iFa(_cf;E+!Cj9pOvI? zi4#0gT2QY(GZOyaKp}>u_;&&Ufy{efj|Z$2n}#5B1|w>m8f${Z(~&9}S<9eX&4V$| zZNem>4RZ7OCs1cu!((n-d3ERTPml$#w+vE{d-5o(8;lgGmVfVOTc^(w##Bgg-FYCg zp5geW7@Lw4q!FXWI?B#nBVOX)Pdn|z0I{RP_kaiA0rDrT5KhDSnwE(2kqL`Jx)eRP z)Km{+GeaJ;h|HE@C9;tqe%eqvwUNx^OH~4wVgCue^a0m5s~Kf_JDio%cbMOagCr`_em`6`IWe(0X`V@)Z?aYIlzF z3@UoUz-844EfR^u>Ym2LIXbYqXdO37)D1X(16a)&d0OgeKruf0e{c-RRF;aVz?mu& zUS^hQOavKCFq~pF_)zcTwN~xGE4ca;))62O`O=O zLL5{kp0y8)}e zZ(|m;eghcJ`+-=bjL+~E;*K;VGnF-FnBIGC>)kguF8mydL)r}Yuc1HRT{Rd}vJ_K@FyF}Kvph*+6xISKmTAB5;WR$NRXg}ycpkY^8r4ziJ^(wd z=Y5EtDx@}|1{g5OAS?o?peW^Jo1cQ?S%oiSN4@&^Gj5s&4&l*LXh|8B3VcW`Ud^NW z5L9oEH^TkX%7iJiKrnqe=jMcOzYI@p+%& zGSSciBT6jA$pYI8;8FT~C$l7vwn`Fl7~2#EE04|SC9(@N-bDW;f|Wi1EGJ#>JxD&d zFu{V3mWgF_mMIz2#>^j;_M{S>@_MScWD;1La;Iu{;OLS2{oM+${GKQcly!Y?Tg@HE z^Fy8wLmd%sj*DH@^rumbmx%~1OVS86ciIt{$&m98H#Vt07y%v+?l{J2zhvxs`vBFSFeykF0&Ze-Hh>Bl7}LxRI%JFQwuSNNy`m}=@JRz z#^AW_Gk{%(`ib=v2q9REvEdeT2)htgW9C%Fo;HA`Rb z_4P5RjbIf7V2i1DobJ4#02gd|q4@u?_hzw@U0HS*AsLp{Km+<{!C!)( z*g%6slgT>|s$zDr+0|;cs)|&xsvAaIF5G#ZhiZ1Cf#i@AnaNBxXJ(R_EGCDlVh${_ z$Yj18EZLCYFMZhXmn{MEi+C@kk23V*9}Dn0_e9)#U&MQnaU)5g+K!JT-;1~}VxN7^ z*=L`<*Irvw(>T&ZO-n$vC31eg%C$z2y8QJI)G z?OR6fCw!`AZUETv@R%BznQj^3SRt{22JTNU7v$`w_lvK>?kpKpV;qD?LZ8oz0fKENfWr#Q zaD1lvfoiy^9w%ifnEX7);GG-~B4@8T6bZai+SkW*?EaEa-2+mKeY$}j)iHXSH65=; zO(6qy1flAcOO^S4*xIue2YgA;+n69-nD z;KbX#XQpx5rqJXrCk)s&+3+gGx3!`!%QR7v$PBD}B^i4Wgz*c1y}kK1%_h-MEVNI| z>g%764!!x6?hSO8k^+yDMcKBU%B=Me?Tss)n|nfaC(ROaA=z$@U^)iW9GW#T!aiV+C;9 zLakG`urr;3KfqO%;17;(&Tc4j=S4dtH152+?Ziug4Q|h}R+UIdW4V$_nNxI-%?@=Q z8wtB3Xfj_-3>%gFqf-d@90Icf4b;IBj$b2OBwyKq!xvs+cxjoG9)lhYvFAE&5bzPe z&jT;HGphbx@?>SWf9P4^U8-7$vz(1G#pOiBu(Omea#gfL#UF?=pIFx}$k2L#puj{h zjU4O^nf;340x5TDQ@be!h{Kk$p#5YuiPRIT-<-~?sdAC`yy(3S+$6FwV{wM$hjCc&5!#2v;IRe! z^Wgg@&&f*fN{2vx^5d0TCCZW-7`Ci328UaiZ%U|-4`Z#GXLY%Q+NVgxDe!OW>Ly8w zG&*lr?GVfrr}MfZ1Zc#dB`8b-2v3d~t_tSaz3(6y`gZ_F*@90F0yhvo79;av1V2C* z>(x5@u)4;GdMH^MqeZp>n7o$6xyL2LcfPE0VryjQqFcy5k%;4Q((-+h)H;8Rf(1wK zg5v4$M!Ntu=wUgYzE5m%Lo-Hdz@{&5ZEkMec$M(O96yO<*!XFjsf3ZJog=!Om#xDV zxH{AGMDv6!PC)fnS#DanRRRX5fi_xTKrGu`-O-icyC`ASoYm$BEDw(5@|whHiHyRR zI_9jX0t3WgbAsq7BkW(iOnLc7hd)J9aCGV=nq}<3XqP|O-UP8S(KD1xnTW=pAH%PN zv8bE6iDUW>5{TzVM{giTiD{X%ays!EpaiQ=5g&WJz}6`BN9jba2$AI!obB7vaKBGg z`5x6Srsz?vDps2y27l=awNZe1l4m@b&BQPVagsII=@%GI>GhML6GA-IR9|->ZBTT(xm3CVpV@>A>1Q9R3O#U34*c==CnG6N73@k&PD%u%nGtlnI*mrJ#HHNzKy!vr+ebg0d@k(SwYz98Epw;}v@=t((CnUd zq*Rj;>-NQZuzlcF5j50O4INAo4Zhpy(9AqTIvE9)( zKK}CPC67Z~7&k1^r1oWjHFHe5xp|=m0JwI6#1lxcv$N`R&{!K-=*zpT3I? z!vhOv<5D7ms#vZ|9f2fE*F|k$nG*U*?&f)(4yZlDhWHswX=*GA5_6Od*OnvK4jPD5 z2`>%a#t4xJJs9WYHryR#gh-!ioNgOx^N}>)zV_khG(7y*hw65b>$&K?&MlQ|q0Cvs zl0C^UQ_rexNlYa@Q}Usf0)0{izB6LuldtZ)_yx7JE6s~&mZ9j|CS#~TW6P~+^udgH)Z-D5D*DBVq0|kU5vI+nKy0rR(G0~zV$vt|meixjn z57x~S2%ZxT%rUuZDyYwlwZvu7AxbKT&y&o6W4X0ghE^I~dzASvmQhn5h$ss|Q(jJT z8OLY%NRu65@KHjhp-1cqAe$D3PqmXU{p#h`Ehi_eme&TyxoB$asg74hg)FnxaD9*_ zC7s_1zzgC=tyDuSiKvO85OKb*`nCX0s2pyI2U1$$4q3a7Ko{v>C(@EYEMwiU0nlO) zz^MY;gN2+&ZOW=53hl`=cQ#`|ZT#hg80+so^w6Z8Iu70K^G{D+{ws7h!}M?5H*r`$ z*&My|0=v<=uQd7q+r-|#(noQ7d=&Se_oF7u?2h8MGrr6^TyBkusNfDfKVof;&lATE za!&+ngC-6(6%r|+XlME$jj-K?ZDoAdk&Q?d0%WU@!L&_LcNp2I1|z5>UO}B=YfZK< z9opJlZTHB5QOT@E=%xZiiep(7Tu|4s%3!C5$kf^UxqU&=Q`FC#hyUufKPQ zH1nDkWx)};{mgq?UmimmZIa}wiGf+;rIgM~CZe(wqp;W*Fd-a|J_ zG^K2O+U<)svA2jneB~wxSob>pyAy!tMb~2EOfL+PCj?u_3gx)$aU3ww@Ebw5UPA zB9>uhfd$Y6(@16MbA3VX6rDnwFsbJ?()H5HG_^+EI^aUHmRZkb+{95e&?AMZ8djXi z3{J!1d%=3%?%n2_=e~HkS(4=fNCD4a@-kL)!LI^c&;-E02RqRu2*kAEu!DDT93w@Q z8@8F%st%%EHObJ2TVrz8yu->_`8ej`SGC(}&g`U>9(u+`op|QPj{(oJ?!!fKL%)A& zJsx|!P5X3*)qw*CrbqRlnOSbuI0LOa%h1$ApD991Km%4}1_XP)<>W{UkCyH!%jO_uBYw2bbGus?^P5 zqcv>?z!h2{_Rf(v73b&sN<*xe+yc(qRp=p+dkka zR+S`vLkA&)4T3g|16)F48y4#S^bh~mzge?E3}A!USH-gzXxQfo^|Zw66(^=BrHQJ-S$ZzMSc zr*X07B!O!dGEU*ziwwW4Sr9GnHUG2f;Ly5`mAfVckCQ|vVozls!v41z!id)&Ikg7_b*pfFNZ3Tb0Ky0=w#pELjF+TPM1K$Gmy^BGVrO?c*2Y!$HA2W1=S7mrNE&+jMQB}Z_%PEkBBZ-Bn@i|&ZeK&U{hp~` zg#slf2bXe~7Xd=LrW?qD5rG3syZgoc@$cNg(-kS(M`1^ z2f3Jq`110q>(wiq`Wfn^fJz&`a+63ke&?;Nt2dF-LInBlmK>8i@LLd}G#QRbIT1B5 zV(FNYv;2~ix`-s9Mn3ftx=WzWs6E<->|Q{JxTrFe%qew5O=S>LIYzCk)m&76&k2+` z5nVo~p3K2Vlk};_<3A<$e_Ca_$AQ~lk$3`1uOy8e0O2JNnt1$f_T1+ru??zyCuM=^vNNTrW7(Ex_Bv(Au z@+>f@fR8%_@FN0RdkOOh)pH1yO$U6CicH;`wxI{+qSxhx{6^u}RQTIJ`)Ks#FQ|jF zSX5rDg4~SlsPsXJSSz0Bf*r)I!==m-6}6q4UIUD_pn`;{k0TxN{-lLRQKmWZX^)1*lF0zVd2YZ8x@_d=(`|@u z8Uo(!Ew3%PGl~RT*03~T{q42f=Fx!N665PMtVSdU1j z*A{$(ROL?PS*#67CblJvElD>E#IRz~62L!e2| zU^(+AYBdmtVH(%y_vZ1u!G;Xr3uQHz_S@^g;K6Vsi`^c)8^@CuP27WOR+dUbMPK`( zFl!-q1Z}P=WiLr^e^USzm|BB5^EZ)fxA`M4f{}Y)^EY{am-(B1(5(5J_V=bAMlwyS zxxRZ%Ww)N?44jE3r)Mncj^Ygcw@3sW`KIOeJgb6xvGZ`3Fqyk9kE_{EoUR!w*PdzW zrRbIb^P^v{AAq8Csr64}=DQ_EgCyksdN;OHN*FaMICLT46RFlh;0n~ttU>#@v`jr1 zMkmwV+fF{#0+j<}LMoJXAy}ryC19hZ)s;3rEt%gxxt zc8eeUiY=jpt)c0RlqzDSf_<203OAR-C|N3K1>sn}#~bh!Tpk@OtPL#!En=S9L9CiZ z9%x`rTPi3-(0$+@o!Y}mZ<49+M$OZ{x5ve^D0@|fa^_eUq*8JcF=dRbGQ*%)DtN|& zI0;Q9TETYNps9TQ4Yjh%=9RUW^IDSBnx?rbTBD=v$us8LSM9x#AZG7m>m<4xv%|%S z9P(1-D0=8>I%oQR7#gxK&DGWHFH@(wPNuszI|9eDNR`M^6s1bUityJeo0l?WuiVRg zqJ&Ip&llg@?3_5hefY!vqN9y^_wir4Lyr*)t;!?UOjLyH5T=()!4JYvSt^XuEV!;U z_E&B;BGf>7b%n;B;IQEi;Km%r$)180x-G8ohsTK+c0MT)_5cCA{KVAno!y@63!z|PDe zy7t}%yCvTxNr3r4-%3frx%$<6+E!txv6?yv(`cFilllVSD?iw1?O3*OFGOJHQHS`8k_L3Z3VKkr02I=@(E96Q*}h|?8Mh@B72iVq-8ij z89G?Nr(`hzxHTo*=q2Cmu1V?HV%cRkC`-o@A`l%pZY<}L##<$;*>hE>%d7{Yv!2&Q z?)g&{lG3WFV2DW4y+m~Xb<@BJTZu*ndx$$mPXU3)Wttx4+j~l0sY#=}T@DDERN&xZP#lah&Q)5E2#A1yC&`U!umIVnYm`Q)2&QGu zg@AVpx)_48p!En5SX3CX$L2UXb#ipξqiHxgYU*oj#pEE=Su3FfJ+0QVS5$F2Dk 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 z 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�Qhs@% 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 diff --git a/assets/TroubleShooting.eddx b/assets/TroubleShooting.eddx deleted file mode 100644 index 7b586935146aee25d9b13ea76ef46c95e7081e24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36408 zcmc$_b#NR(&o^jhW_HZ%nAtJK%y!Joyk?G>nVFfHnVIdF*UZdJmpspRRquOM_vh8s z*7Rzm9!b5L>6ZGpqaY0qfdK;Z_rnrzp&+aMlf(!V1cVOFs+9}iUvn1{$TUsj@R8u*;o&N2LuGJ)tdCHA;tElAY ztc;h>goaBYjkS+|1)zbV5DjU-cdMT#Yy=X5{N#H1Yn!w{8?-AGJJRi%ztKZAlyC$F z#vxLUI7kcyim+e{alK1uYZ$!a4YY6kX`5~j<-EIst37-Z{kR6`O6oS6|2-GXD-KIa zx^Fr_rvh;bukEM1lEV^3!v=ccF`no>u1O=tq!|2HooURFJtJ=~&M>;&-bWBRDKsXH213kzx*?84vNO;@WLGFZ;->AF|dAZW;@>Ob!Tly}7 zV;V=D4AZmLBwBHr>Ds8V#MIXgO;XV=zJ*$`>9Ynmh};7XkntO}oGktikP$n$=Dukc zNAjV^^3f^tG?Y=MTEl9I&|nB@@eiN9u)K+`0Qym~o35ctkjjnF7nEx39 zh5r?tp2rZX1OgBcClN3ZrZn2eg7N4riyB$o^d04P`&)YMVTNX;XuYNrY=>d5O{#@ei6?AiJm%~S?c9|kP zO@4e{>z8?3KjI9gk~h!4A! zeWoka=xB&wHYtiOcZ5*Co%jd{czy2g=WM;4Am?QByGA|s!bp5ncR zRBRDs6cnuO>`dDXFjBRLaSddAc%8XiL>0A@hCP@v9n{YWwA!pn`jqLE5+4ny1G>@|I&o(NDRd#uVx==|WRM{gQ^C$zb8mb_c5GDp+Y@GO;UyH)PMi(!%(VbiC6@BTNisM!E8$R9n zXC41}G;nLeQ}wG_&6%~zZ4Oi5<H@E>9s>-GMqzOb{d>^ieLCD%w#Hm#jsyaf6A(@L<^;mR95&9(*0{=5h0TR+z` zq#qsz;+zF$rKi6&D+ufsLqXl|>wQk)F2rK(U0#=lP#SEL$bD1wFe>vtIlNt3gIs@Q zyKV^LnQ}>R{yFK=isCLIHB`yX*v!Y5yGoJiV$mP~e6SkCduOlDEc`)ZNYY74*aH)H zm7-`Ij>A?~o6BIBywPs8oIijyx&eFGY}Mqb>|tUwOMJnSZdT$<-P|OJk8MmO13!gj zJWP%Ea<#bPIWw`_qqgc^o#q;~u}@Fvoy@Rss(Ig1n?l9*viJRrvZ)Qb<{{=WziFfO zK{|0x_gkVG(sW(t7NG`Ia$(rTsAmywSpq%R$o$uaJ#ka3r_%^g;mR{bH)>~PHe^^2 z+;36C8i<~OSCN49-J))b*{*nn;zdRmYYr%#h%Ac+tGsSJp6?Kr&6s<+0@_3|Q+hkv z=C|uagGxHZW_rYzB{Pv3;XI^e(ncF={a?pP92=TOUeo8R5rfqYo`kXqUVkXp?Q^Ry zDGU4~rg|aZfAkoqh6J-;;)~CfXC}U}u~%obwyc2rY&5Qqj@9xo#YB1m5Z7B2rOU)7 zr6S-L7HFf z=Mg7>)bU38j2tu*6Q0L4VrCnZ9VS}li>@{`!#5+wi+3Y@$WQlUY6;jrle>|t_za2` zrL^l0!Ww_HiIVxPZJP3$PjIi-vkyBI38;i(@#2$*+~e2Gu6U~e>E;zE4Hf%!tf5t- zMCJ=G$u1`=q*b_(}UHu+kp17gJ zv3)MPO3}8l??|^&cJGkiXNs(^J`~!VIL7F9d2mNN8akTm$k_P4QIqrJ18MA&-2?q}s>`}i&uOyO?7 zhEbr-T6fe>WZ`5;^!K&$w(B@*2H?4vwAv~&K0iH{c9_vW(XZnJb_%0DpGQe2e2lg5 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 Wu1$o)PM)G(qi*uTQEkX0>g+EbmU>SB diff --git a/assets/TroubleShooting.xmind b/assets/TroubleShooting.xmind deleted file mode 100644 index 8f3a7464946226dff7e0b3c77ddcc387eb02b822..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 223487 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 diff --git a/assets/framework/Dubbo.xmind b/assets/framework/Dubbo.xmind deleted file mode 100644 index 36b6e597023313c9abac81a5feae209a0894eac2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218878 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≪`;*6Z!oXbrT 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 diff --git a/assets/framework/Shiro.xmind b/assets/framework/Shiro.xmind deleted file mode 100644 index 014d8b3e51757b7419290af23a5570c54a79c224..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131886 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