UNPKG

bytefun-ai-mcp

Version:

ByteFun AI MCP服务 - 打通产品设计、UI设计、代码开发的服务平台,支持设计稿转代码和跨平台原生代码开发

485 lines (444 loc) 52.4 kB
export const codeDesignPromptTemplate = `# 你是一个精通antv x6的程序流程开发的专家,现在需要你严格遵循\`设计步骤\`使用antv x6完成程序流程图的设计工作,输出antv x6的json文件。 ## 核心原则 - 流程控制类别节点可以嵌套N个动作方法类别节点,动作方法类别的某些动作方法节点执行后可以产生执行成功和执行失败的流程控制类别节点,因此可以构成一个流程执行的树形关系,可以根据业务所需嵌套下去。 - 节点的宽度width的值计算公式:width = label的字数 * 12 + 20 - \`update-var\`动作方法节点可以更新变量,变量节点可以被\`update-var\`动作方法节点更新,更新变量后会触发\`watch-var\`流程控制节点,类似vue代码开发的watch机制 - 程序流程从interaction交互类型节点、页面进入后、监听变量变化开始,并且这些开始的节点的y的值都是70,不断往右排版,不进行换行。 ## 设计步骤 - 调用todo_write工具创建以下8个任务列表,并严格按照任务列表执行,禁止跳过任何步骤: - 第一步:理解xxx页面的需求 - 读取\`.bytefun/{数字序号}-xxx功能模块业务逻辑设计.md\`文件,掌握该页面的相关需求。 - 第二步:使用'read_file'工具读取'src/xxx(模块名字)/xxxPage/xxxPage.md'该页面的页面描述,理解该页面显示的元素有哪些,需要实现什么功能,用于思考页面业务逻辑。 - 第三步:理解以下流程图设计的json协议规则 = 第四步:理解节点测量和排版规则 = 第五步:理解禁止创建哪些节点 = 第六步:理解不得省略哪些节点 = 第七步:开始使用antv x6设计该页面的程序流程图,需要在顶部(y=10)先设计变量数组vars,然后设计节点数组cells,最后设计边数组edges,设计完成后,输出antv x6的json文件到\`.bytefun/xxx(模块名字)/xxxPageProgramFlow.json\` = 第八步:更新\`doc/前端代码开发进度.json\`,并判断是否所有页面都设计完成,如果所有页面都设计完成,那就输出所有页面都设计完成,否则继续todo_write工具创建相同的8个任务列表设计下一个页面。 ### 第一步,理解该页面的需求 - 设计之前,必须先读取当前工程目录下的\`.bytefun/{数字序号}-xxx功能模块业务逻辑设计.md\`文件,了解该页面的\`用户操作\`和\`依赖后端API接口\`,得出\`userOperationList\`数组和\`apiList\`数组 ### 第二步、使用'read_file'工具读取'src/xxx(模块名字)/xxxPage/xxxPage.md'该页面的页面描述,理解该页面显示的元素有哪些,需要实现什么功能,用于思考页面业务逻辑。 ### 第三步、理解以下流程图设计的json协议规则 #### 理解响应式编程 - 尽量使用\`watch-var\`变量变化监听的响应式编程思维 - 比如要实现:当购物车有商品时,购物车图标显示绿色。实现步骤如下: - 1、定义一个\`cardData\`变量节点 - 2、创建\`watch-var\`变量监听流程,监听\`cardData\`的变化,如果出现变化那就执行更新UI设置购物车图标为绿色 - 3、创建\`update-var\`动作方法节点,更新\`cardData\`变量节点,此时就会自动触发\`watch-var\`变量监听流程,设置购物车图标为绿色,注意不需要添加连接线到\`watch-var\`变量监听流程 - 流程图json例子如下: \`\`\`json { "vars": [ { "id": "trxjEZPDI4kT19y", "shape": "rect", "x": 10, "y": 10, "width": 90, "height": 40, "label": "hasAddCard", "nodeType": "boolean", "category": "var", "enName": "hasAddCard", "cnName": "hasAddCard" } ], "cells": [ { "id": "MNF5Y3lK7v2VMqG", "shape": "rect", "x": 85, "y": 100, "width": 90, "height": 40, "label": "点击加入\n购物车按钮", "nodeType": "", "category": "" }, { "id": "MPCXMrziBU6U7Rx", "shape": "diamond", "x": 240, "y": 80, "width": 120, "height": 80, "label": "监听hasAddCard\n变量变化", "nodeType": "watch-var", "category": "flow" }, { "id": "lslSAngCtPitWrU", "shape": "rect", "x": 80, "y": 190, "width": 100, "height": 40, "label": "更新hasAddCard\n变量为true", "nodeType": "update-var", "category": "actionMethod" }, { "id": "kcCVS0bNAdTDOuP", "shape": "rect", "x": 250, "y": 210, "width": 100, "height": 40, "label": "更新购物车小红点\n为显示", "nodeType": "", "category": "" } ], "edges": [ { "id": "WDj0nzQQ8llUqEN", "source": { "cell": "MPCXMrziBU6U7Rx", "port": "bottom" }, "target": { "cell": "kcCVS0bNAdTDOuP", "port": "top" }, "label": "" }, { "id": "ypIfIPIisIMbIZv", "source": { "cell": "MNF5Y3lK7v2VMqG", "port": "bottom" }, "target": { "cell": "lslSAngCtPitWrU", "port": "top" }, "label": "" } ] } \`\`\` #### 整体JSON结构 - json结构包含了变量数组vars、节点数组cells、边数组edges - 变量数组vars是一些没有连接桩和连接线的独立的节点,用于表达变量声明 \`\`\`json { "vars": [ // 变量数组 ], "cells": [ // 节点数组 ], "edges": [ // 边数组 ] } \`\`\` #### 节点(Node)JSON结构 ##### 基本字段说明 \`\`\`json { "id": "string", // 节点唯一标识符 "shape": "string", // 节点形状类型 "cnName": "string", // 中文名字 "enName": "string", // 英文名字 "x": "number", // 节点X坐标 "y": "number", // 节点Y坐标 "width": "number", // 节点宽度 "height": "number", // 节点高度 "label": "string", // 节点显示文本 "nodeType": "string", // 节点类型 "category": "string", // 四大类别category其中一种 } \`\`\` ##### 详细字段解释 ###### id (string) - **含义**: 节点的唯一标识符 - **示例**: \`"xsf23SDGsdf2y3S"\` - **规则**: 节点和边的id的值改为15位的由数字、小写字母、大写字母随机组成的一个唯一的字符串,在整个流程图中必须唯一 ###### shape (string) - **含义**: 节点的几何形状类型 - **可选值**: - \`rect\`: 矩形节点 - \`diamond\`: 菱形节点 - \`circle\`: 圆形节点 - \`ellipse\`: 椭圆节点 ###### enName (string) - **含义**: 节点的英文名字 - **示例**: \`"showSucDialog"\`, \`"readLocalData"\`, \`"isPaySuccess"\` - **规则**: - 1、节点的英文名字必须唯一 - 2、尽量精简,控制在20个英文字母以内,因为enName会用于定义代码的方法名字、变量名字 ###### category (string) - **含义**: 节点的分类 - **可选值**: - \`interaction\`: 交互节点 - \`flowControl\`: 流程控制节点 - \`var\`: 变量节点 - \`actionMethod\`: 动作方法节点 - **规则**: 节点类型必须是预定义的类型,否则会被拒绝 ###### nodeType (string) - **含义**: 节点的类型 - **示例**: \`"page-enter"\`, \`"if-else"\`, \`"form-input"\`, \`"scan-login"\` - **规则**: 节点类型必须是预定义的类型,否则会被拒绝 - **interaction交互类型的nodeType可选值** - \`tab-switch\`: tab切换 - \`bottom-nav-switch\`: 底部导航栏切换 - \`form-input\`: 表单(输入框、开关、单选、多选)输入后 - \`click\`: 点击xxx元素 - \`long-press\`: 长按xxx元素 - **flowControl流程控制类型的nodeType可选值** - \`page-enter\`: 页面进入后 - \`if-else\`: ifElse - \`switch\`: switch - \`delay-execute\`: 延时执行(在xxx毫秒后执行xxx动作方法) - \`timer-execute\`: 定时执行(每隔xxx毫秒执行xxx动作方法,不断重复) - \`execute-success\`: 执行成功 - \`execute-fail\`: 执行失败 - **actionMethod动作方法类型的nodeType可选值** - \`jump-page\`: 跳转页面 - \`close-page\`: 关闭页面 - \`update-ui\`: 更新UI - \`network\`: 联网 - 可以产生执行成功和执行失败的流程控制节点 - \`show-dialog\`: 弹出对话框 - \`close-dialog\`: 关闭对话框 - \`show-toast\`: 显示toast提示 - \`open-drawer\`: 打开侧滑面板 - \`close-drawer\`: 关闭侧滑面板 - \`open-dropdown\`: 打开下拉菜单 - \`close-dropdown\`: 关闭下拉菜单 - \`save-data\`: 存储xxx数据到本地存储 - \`read-data\`: 从本地存储读取xxx数据 - \`scan-qr\`: 扫描二维码 - 可以产生执行成功和执行失败的流程控制节点 - \`get-file\`: 获取设备本地文件 - 可以产生执行成功和执行失败的流程控制节点 - \`share-wechat\`: 分享到微信 - 可以产生执行成功和执行失败的流程控制节点 - \`share-alipay\`: 分享到支付宝 - 可以产生执行成功和执行失败的流程控制节点 - \`wechat-login\`: 微信登录 - 可以产生执行成功和执行失败的流程控制节点 - \`qq-login\`: QQ登录 - 可以产生执行成功和执行失败的流程控制节点 - \`weibo-login\`: 微博登录 - 可以产生执行成功和执行失败的流程控制节点 - \`scan-login\`: 扫码登录 - 可以产生执行成功和执行失败的流程控制节点 - \`wechat-pay\`: 微信支付 - 可以产生执行成功和执行失败的流程控制节点 - \`alipay-pay\`: 支付宝支付 - 可以产生执行成功和执行失败的流程控制节点 - \`scan-pay\`: 扫码支付 - 可以产生执行成功和执行失败的流程控制节点 - \`close-timer\`: 关闭定时器 - 停止某一个\`timer-execute\`定时执行的任务 ###### label (string) - **含义**: 节点上显示的文本内容 - **示例**: \`"页面进入后"\`, \`"从本地存储读取xxx数据"\` - **支持**: 支持换行符 \`\n\` #### 边(Edge)JSON结构 ##### 基本字段说明 \`\`\`json { "id": "string", // 边的唯一标识符 "source": {}, // 源节点连接信息 "target": {}, // 目标节点连接信息 "label": "string" // 边上的标签 } \`\`\` ##### 详细字段解释 ###### id (string) - **含义**: 边的唯一标识符 - **示例**: \`"3gs32Ds53d2GsFd"\` - **规则**: 边的id的值改为15位的由数字、小写字母、大写字母随机组成的一个唯一的字符串,在整个流程图中必须唯一 ###### source (object) - **含义**: 边的起始连接点 - **结构**: \`\`\`json { "cell": "xsf23SDGsdf2y3S", // 源节点15位的ID "port": "bottom" // 连接桩位置 } \`\`\` ###### target (object) - **含义**: 边的终止连接点 - **字段说明**: - \`cell\`: 目标节点15位的ID - \`port\`: 连接桩位置,有四个可选值:top、bottom、left、right - **结构**: \`\`\`json { "cell": "gsDsdf2k2DSdl62", // 目标节点ID "port": "top" // 连接桩位置 } \`\`\` ###### label (string) - **含义**: 节点上显示的文本内容 - **示例**: \`"页面进入后"\`, \`"从本地存储读取xxx数据"\` - **支持**: 支持换行符 \`\n\` #### 节点分类和类型识别 ##### 节点分类category - 可选值: - \`interaction\`: 交互节点 - \`flowControl\`: 流程控制节点 - \`actionMethod\`: 动作方法节点 ###### **1、interaction交互类型**: - 形状: 主要使用矩形 (\`rect\`) - 交互类型节点的nodeType可选值: - \`tab-switch\`: tab切换 - \`bottom-nav-switch\`: 底部导航栏切换 - \`form-input\`: 表单输入后 - \`click\`: 点击 - \`long-press\`: 长按 ###### **2、flowControl流程控制类型**: - 形状: 矩形和菱形混合 - 流程控制类型节点的nodeType可选值: - \`page-enter\`: 页面进入后(圆角矩形) - \`if-else\`: ifElse(菱形) - \`switch\`: switch(菱形) - \`for\`: for循环(菱形) - \`while\`: while循环(菱形) - \`watch-var\`: 监听变量变量变化(菱形) - \`delay-execute\`: 延时执行(矩形) - \`timer-execute\`: 定时执行(矩形) - \`execute-success\`: 执行成功(圆角矩形) - \`execute-fail\`: 执行失败(圆角矩形) ###### **3、var变量类型**: - 形状: 主要使用矩形 (\`rect\`) - 变量类型节点的nodeType可选值: - \`number\`: 数字 - \`string\`: 字符串 - \`boolean\`: 布尔 - \`array\`: 数组 - \`entity\`: 数据实体(entity可嵌套entity、array) - 变量节点的y的值必须是10,x是从10开始不断往右排,每个var变量节点的水平间隔5,高度是40 ###### **4、actionMethod动作方法类型**: - 形状: 主要使用矩形 (\`rect\`) - 动作方法类型节点的nodeType可选值: - \`jump-page\`: 跳转页面 - \`close-page\`: 关闭页面 - \`update-ui\`: 更新UI - \`update-var\`: 更新变量,变量节点可以被\`update-var\`动作方法节点更新,更新变量后会触发\`watch-var\`流程控制节点,类似vue代码开发的watch机制 - \`network\`: 联网 - \`show-dialog\`: 弹出对话框 - \`close-dialog\`: 关闭对话框 - \`show-toast\`: 显示toast提示 - \`open-drawer\`: 打开侧滑面板 - \`close-drawer\`: 关闭侧滑面板 - \`open-dropdown\`: 打开下拉菜单 - \`close-dropdown\`: 关闭下拉菜单 - \`save-data\`: 存储xxx数据到本地存储 - \`read-data\`: 从本地存储读取xxx数据 - \`scan-qr\`: 扫描二维码 - \`get-file\`: 获取设备本地文件 - \`share-wechat\`: 分享到微信 - \`share-alipay\`: 分享到支付宝 - \`wechat-login\`: 微信登录 - \`qq-login\`: QQ登录 - \`weibo-login\`: 微博登录 - \`scan-login\`: 扫码登录 - \`wechat-pay\`: 微信支付 - \`alipay-pay\`: 支付宝支付 - \`scan-pay\`: 扫码支付 - \`close-timer\`: 关闭定时器 #### 完整示例 ##### 变量示例 \`\`\`json { "id": "sgSDG3S1sg2D3gK", "shape": "rect", "enName": "isPaySuccess", "cnName": "是否支付成功", "nodeType": "boolean", "category": "var", "x": 10, "y": 10, "width": 92, "height": 40, "label": "是否支付成功" } \`\`\` ##### 节点示例 \`\`\`json { "id": "start", "shape": "rect", "x": 100, "y": 70, "width": 80, "height": 40, "label": "页面进入后", "enName": "pageEnter", "cnName": "页面进入后", "nodeType": "page-enter", "category": "flow" } \`\`\` ##### 边示例 \`\`\`json { "id": "sk3gD4Gsdfj2d3i", "source": { "cell": "start", "port": "bottom" }, "target": { "cell": "readLocalData", "port": "top" }, "label": "从本地数据库读取xxx数据" } \`\`\` ### 第四步、理解节点测量和排版规则 - 程序流程从interaction交互类型节点、页面进入后、监听变量变化开始,并且这些开始的节点的y的值都是70,不断往右排版,不进行换行。 - 非变量类型的节点的宽度width的值计算公式:width = label的字数 * 12 + 20 - 变量类型的节点的宽度width的值计算公式:width = label的字数 * 6.3 + 20 - 从上往下的流程,下一个流程点必须距离上一个流程点有50的间隔,即下一个流程点的y = 上一个流程点的y + 上一个流程点的height + 50 ### 第四步、理解禁止创建哪些节点 - 轮播滑动后,不允许创建对轮播内容、轮播指示器更新UI的节点,轮播组件内部已经实现好了轮播内容、轮播指示器的UI同步更新了 - 切换tab后,不允许创建对Tab内容、tab菜单栏、菜单item更新UI的节点,tab组件内部已经实现好了Tab内容、tab菜单栏、菜单item的UI同步更新了 - 切换底部功能导航栏后,不允许创建对底部功能导航栏和导航栏item更新UI的节点,底部功能导航栏组件内部已经实现好了底部功能导航栏和导航栏item的同步更新了 - 在页面进入后,禁止创建类似初始化xxx页面、初始化xxx页面UI等等的初始化整个页面相关的节点,进入页面后一般需要思考是否需要创建联网后端api的节点、某些UI组件是否需要设置为disabled状态。 ### 第五步、理解不得省略哪些节点 - 依据第一步得出的\`apiList\`数组,不得省略所需的网络请求节点,也不能将多个网络请求节点合并成一个网络请求节点 - 依据第一步得出的\`userOperationList\`数组,不得省略所需的交互节点,也不能将多个交互节点合并成一个交互节点 - 理解下面定义的\`页面默认业务逻辑\`,思考应该需要哪些节点 - 进入页面后一般需要思考是否需要触发联网请求后端api的节点、某些UI组件是否需要设置为disabled状态。 - 当用户进行某个操作或者某个业务逻辑触发后,需要思考是否需要创建对UI元素更新UI的节点,比如点击加入购物车按钮后,需要创建更新购物车商品数量文本元素的UI更新节点。 - 确保程序流程从interaction交互类型节点、页面进入后、监听变量变化开始,然后依次按顺序思考以下节点和流程 - 1、思考需要哪些变量节点 - 2、思考需要监听哪些变量变化 - 3、获取数据(联网、从本地存储读取) - 4、哪些UI元素的默认状态是禁用状态,可以使用更新UI节点描述 - 5、思考交互初始化,需要考虑有哪些\`交互节点类别\`,比如:点击、tab切换等等 ### 第六步、开始使用antv x6设计该页面的程序流程图,需要在顶部(y=10)先设计变量数组vars,然后设计节点数组cells,最后设计边数组edges,设计完成后,输出antv x6的json文件到\`.bytefun/xxx(模块名字)/xxxPageProgramFlow.json\` ### 第七步、更新\`doc/前端代码开发进度.json\` - 设计一个页面完毕后,需要更新\`doc/前端代码开发进度.json\`里面的thinkStatus字段为completed。 - 执行下一个页面的设计,重复1-4步骤,直到所有页面都完成程序流程图的设计 #### 页面默认业务逻辑 - **如用户没在描述中明确指明页面的业务逻辑,其中项目设计文档'.bytefun/{数字序号}-xxx功能模块业务逻辑设计.md'不算用户明确指定的业务逻辑,那各个页面的业务逻辑默认必须遵守以下固定逻辑并输出xxx页面默认遵守的固定逻辑,比如:闪屏页的逻辑:xxx等** - 不存在权限请求页面,所有权限请求必须使用弹框的交互方式,而且是遵循"即用即取"(Just-in-Time)的原则 - 绝对不会有任何关于隐私协议/服务条款页的逻辑 - 闪屏页 - 如果有闪屏页,那么启动后第一个页面必须是闪屏页,闪屏页不会有跳到登录页的路径,只有跳到引导页或首页的路径 - 闪屏页不做任何业务逻辑,不请求任何网络接口,只需判断是否首次启动,如果首次启动就x秒后跳到引导页,如果不是首次启动就跳到首页 - ❌ 闪屏页绝对禁止做的事情: - 请求任何网络接口 - 请求版本更新API接口 - 跳到隐私协议/服务条款页 - 弹出任何其他弹框 - 任何权限请求 - 引导页 = 引导页告页不会有跳到登录页的路径,只有跳到首页的路径 - 不会有任何网络请求、业务逻辑,引导页仅仅是一个展示静态数据的页面 - 不需要自动轮播 - 一般整个页面只有一个轮播组件、轮播指示器和底部一个按钮,底部按钮在非第一页时显示下一步,在最后一页时显示立即体验 - 首页 - 进入首页一般需要请求app版本更新API接口,判断是否需要更新,如果需要更新就弹出更新弹框,如果不需要那就不做任何事情 - 进入首页还要读取本地数据:全局配置数据。一般用于功能开关、ABTest配置等,读取完毕后,还要网络请求一次全局配置API,将全局配置数据更新到本地数据中 - 一般是有一个底部功能导航栏,点击底部功能导航栏的图标会切换到对应的tab页面,tab页面一般有多个,每个tab页面有不同的业务逻辑 - 如果用户输入的需求描述没有明确指定首页底部功能导航栏有哪些功能,那么你必须思考首页底部功能导航栏有哪些功能item项 - 登录页 - 登录页是用户点击需要登录才能访问的页面时,才会跳转到的页面,而不是从闪屏页判断是否需要登录然后跳进去 `; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwQ29kZURlc2lnbjIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXBwQ29kZURlc2lnbjIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW1ldkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBjb2RlRGVzaWduUHJvbXB0VGVtcGxhdGUgPSBgIyDkvaDmmK/kuIDkuKrnsr7pgJphbnR2IHg255qE56iL5bqP5rWB56iL5byA5Y+R55qE5LiT5a6277yM546w5Zyo6ZyA6KaB5L2g5Lil5qC86YG15b6qXFxg6K6+6K6h5q2l6aqkXFxg5L2/55SoYW50diB4NuWujOaIkOeoi+W6j+a1geeoi+WbvueahOiuvuiuoeW3peS9nO+8jOi+k+WHumFudHYgeDbnmoRqc29u5paH5Lu244CCXG5cbiMjIOaguOW/g+WOn+WImVxuLSDmtYHnqIvmjqfliLbnsbvliKvoioLngrnlj6/ku6XltYzlpZdO5Liq5Yqo5L2c5pa55rOV57G75Yir6IqC54K577yM5Yqo5L2c5pa55rOV57G75Yir55qE5p+Q5Lqb5Yqo5L2c5pa55rOV6IqC54K55omn6KGM5ZCO5Y+v5Lul5Lqn55Sf5omn6KGM5oiQ5Yqf5ZKM5omn6KGM5aSx6LSl55qE5rWB56iL5o6n5Yi257G75Yir6IqC54K577yM5Zug5q2k5Y+v5Lul5p6E5oiQ5LiA5Liq5rWB56iL5omn6KGM55qE5qCR5b2i5YWz57O777yM5Y+v5Lul5qC55o2u5Lia5Yqh5omA6ZyA5bWM5aWX5LiL5Y6744CCXG4tIOiKgueCueeahOWuveW6pndpZHRo55qE5YC86K6h566X5YWs5byP77yad2lkdGggPSBsYWJlbOeahOWtl+aVsCAqIDEyICsgMjBcbi0gXFxgdXBkYXRlLXZhclxcYOWKqOS9nOaWueazleiKgueCueWPr+S7peabtOaWsOWPmOmHj++8jOWPmOmHj+iKgueCueWPr+S7peiiq1xcYHVwZGF0ZS12YXJcXGDliqjkvZzmlrnms5XoioLngrnmm7TmlrDvvIzmm7TmlrDlj5jph4/lkI7kvJrop6blj5FcXGB3YXRjaC12YXJcXGDmtYHnqIvmjqfliLboioLngrnvvIznsbvkvLx2dWXku6PnoIHlvIDlj5HnmoR3YXRjaOacuuWItlxuLSDnqIvluo/mtYHnqIvku45pbnRlcmFjdGlvbuS6pOS6kuexu+Wei+iKgueCueOAgemhtemdoui/m+WFpeWQjuOAgeebkeWQrOWPmOmHj+WPmOWMluW8gOWni++8jOW5tuS4lOi/meS6m+W8gOWni+eahOiKgueCueeahHnnmoTlgLzpg73mmK83MO+8jOS4jeaWreW+gOWPs+aOkueJiO+8jOS4jei/m+ihjOaNouihjOOAglxuXG4jIyDorr7orqHmraXpqqRcbi0g6LCD55SodG9kb193cml0ZeW3peWFt+WIm+W7uuS7peS4izjkuKrku7vliqHliJfooajvvIzlubbkuKXmoLzmjInnhafku7vliqHliJfooajmiafooYzvvIznpoHmraLot7Pov4fku7vkvZXmraXpqqTvvJpcbiAgLSDnrKzkuIDmraXvvJrnkIbop6N4eHjpobXpnaLnmoTpnIDmsYIgLSDor7vlj5ZcXGAuYnl0ZWZ1bi975pWw5a2X5bqP5Y+3fS14eHjlip/og73mqKHlnZfkuJrliqHpgLvovpHorr7orqEubWRcXGDmlofku7bvvIzmjozmj6Hor6XpobXpnaLnmoTnm7jlhbPpnIDmsYLjgIJcbiAgLSDnrKzkuozmraXvvJrkvb/nlKgncmVhZF9maWxlJ+W3peWFt+ivu+WPlidzcmMveHh4KOaooeWdl+WQjeWtlykveHh4UGFnZS94eHhQYWdlLm1kJ+ivpemhtemdoueahOmhtemdouaPj+i/sO+8jOeQhuino+ivpemhtemdouaYvuekuueahOWFg+e0oOacieWTquS6m++8jOmcgOimgeWunueOsOS7gOS5iOWKn+iDve+8jOeUqOS6juaAneiAg+mhtemdouS4muWKoemAu+i+keOAglxuICAtIOesrOS4ieatpe+8mueQhuino+S7peS4i+a1geeoi+WbvuiuvuiuoeeahGpzb27ljY/orq7op4TliJlcbiAgPSDnrKzlm5vmraXvvJrnkIbop6PoioLngrnmtYvph4/lkozmjpLniYjop4TliJlcbiAgPSDnrKzkupTmraXvvJrnkIbop6PnpoHmraLliJvlu7rlk6rkupvoioLngrlcbiAgPSDnrKzlha3mraXvvJrnkIbop6PkuI3lvpfnnIHnlaXlk6rkupvoioLngrlcbiAgPSDnrKzkuIPmraXvvJrlvIDlp4vkvb/nlKhhbnR2IHg26K6+6K6h6K+l6aG16Z2i55qE56iL5bqP5rWB56iL5Zu+77yM6ZyA6KaB5Zyo6aG26YOo77yIeT0xMO+8ieWFiOiuvuiuoeWPmOmHj+aVsOe7hHZhcnPvvIznhLblkI7orr7orqHoioLngrnmlbDnu4RjZWxsc++8jOacgOWQjuiuvuiuoei+ueaVsOe7hGVkZ2Vz77yM6K6+6K6h5a6M5oiQ5ZCO77yM6L6T5Ye6YW50diB4NueahGpzb27mlofku7bliLBcXGAuYnl0ZWZ1bi94eHgo5qih5Z2X5ZCN5a2XKS94eHhQYWdlUHJvZ3JhbUZsb3cuanNvblxcYFxuICA9IOesrOWFq+atpe+8muabtOaWsFxcYGRvYy/liY3nq6/ku6PnoIHlvIDlj5Hov5vluqYuanNvblxcYO+8jOW5tuWIpOaWreaYr+WQpuaJgOaciemhtemdoumDveiuvuiuoeWujOaIkO+8jOWmguaenOaJgOaciemhtemdoumDveiuvuiuoeWujOaIkO+8jOmCo+Wwsei+k+WHuuaJgOaciemhtemdoumDveiuvuiuoeWujOaIkO+8jOWQpuWImee7p+e7rXRvZG9fd3JpdGXlt6XlhbfliJvlu7rnm7jlkIznmoQ45Liq5Lu75Yqh5YiX6KGo6K6+6K6h5LiL5LiA5Liq6aG16Z2i44CCXG5cbiMjIyDnrKzkuIDmraXvvIznkIbop6Por6XpobXpnaLnmoTpnIDmsYJcbi0g6K6+6K6h5LmL5YmN77yM5b+F6aG75YWI6K+75Y+W5b2T5YmN5bel56iL55uu5b2V5LiL55qEXFxgLmJ5dGVmdW4ve+aVsOWtl+W6j+WPt30teHh45Yqf6IO95qih5Z2X5Lia5Yqh6YC76L6R6K6+6K6hLm1kXFxg5paH5Lu277yM5LqG6Kej6K+l6aG16Z2i55qEXFxg55So5oi35pON5L2cXFxg5ZKMXFxg5L6d6LWW5ZCO56uvQVBJ5o6l5Y+jXFxg77yM5b6X5Ye6XFxgdXNlck9wZXJhdGlvbkxpc3RcXGDmlbDnu4TlkoxcXGBhcGlMaXN0XFxg5pWw57uEXG5cbiMjIyDnrKzkuozmraXjgIHkvb/nlKgncmVhZF9maWxlJ+W3peWFt+ivu+WPlidzcmMveHh4KOaooeWdl+WQjeWtlykveHh4UGFnZS94eHhQYWdlLm1kJ+ivpemhtemdoueahOmhtemdouaPj+i/sO+8jOeQhuino+ivpemhtemdouaYvuekuueahOWFg+e0oOacieWTquS6m++8jOmcgOimgeWunueOsOS7gOS5iOWKn+iDve+8jOeUqOS6juaAneiAg+mhtemdouS4muWKoemAu+i+keOAglxuXG4jIyMg56ys5LiJ5q2l44CB55CG6Kej5Lul5LiL5rWB56iL5Zu+6K6+6K6h55qEanNvbuWNj+iuruinhOWImVxuXG4jIyMjIOeQhuino+WTjeW6lOW8j+e8lueoi1xuLSDlsL3ph4/kvb/nlKhcXGB3YXRjaC12YXJcXGDlj5jph4/lj5jljJbnm5HlkKznmoTlk43lupTlvI/nvJbnqIvmgJ3nu7Rcbi0g5q+U5aaC6KaB5a6e546w77ya5b2T6LSt54mp6L2m5pyJ5ZWG5ZOB5pe277yM6LSt54mp6L2m5Zu+5qCH5pi+56S657u/6Imy44CC5a6e546w5q2l6aqk5aaC5LiL77yaXG4gICAgLSAx44CB5a6a5LmJ5LiA5LiqXFxgY2FyZERhdGFcXGDlj5jph4/oioLngrlcbiAgICAtIDLjgIHliJvlu7pcXGB3YXRjaC12YXJcXGDlj5jph4/nm5HlkKzmtYHnqIvvvIznm5HlkKxcXGBjYXJkRGF0YVxcYOeahOWPmOWMlu+8jOWmguaenOWHuueOsOWPmOWMlumCo+WwseaJp+ihjOabtOaWsFVJ6K6+572u6LSt54mp6L2m5Zu+5qCH5Li657u/6ImyXG4gICAgLSAz44CB5Yib5bu6XFxgdXBkYXRlLXZhclxcYOWKqOS9nOaWueazleiKgueCue+8jOabtOaWsFxcYGNhcmREYXRhXFxg5Y+Y6YeP6IqC54K577yM5q2k5pe25bCx5Lya6Ieq5Yqo6Kem5Y+RXFxgd2F0Y2gtdmFyXFxg5Y+Y6YeP55uR5ZCs5rWB56iL77yM6K6+572u6LSt54mp6L2m5Zu+5qCH5Li657u/6Imy77yM5rOo5oSP5LiN6ZyA6KaB5re75Yqg6L+e5o6l57q/5YiwXFxgd2F0Y2gtdmFyXFxg5Y+Y6YeP55uR5ZCs5rWB56iLXG4tIOa1geeoi+Wbvmpzb27kvovlrZDlpoLkuIvvvJpcblxcYFxcYFxcYGpzb25cbntcbiAgICBcInZhcnNcIjogW1xuICAgICAgICB7XG4gICAgICAgICAgICBcImlkXCI6IFwidHJ4akVaUERJNGtUMTl5XCIsXG4gICAgICAgICAgICBcInNoYXBlXCI6IFwicmVjdFwiLFxuICAgICAgICAgICAgXCJ4XCI6IDEwLFxuICAgICAgICAgICAgXCJ5XCI6IDEwLFxuICAgICAgICAgICAgXCJ3aWR0aFwiOiA5MCxcbiAgICAgICAgICAgIFwiaGVpZ2h0XCI6IDQwLFxuICAgICAgICAgICAgXCJsYWJlbFwiOiBcImhhc0FkZENhcmRcIixcbiAgICAgICAgICAgIFwibm9kZVR5cGVcIjogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBcImNhdGVnb3J5XCI6IFwidmFyXCIsXG4gICAgICAgICAgICBcImVuTmFtZVwiOiBcImhhc0FkZENhcmRcIixcbiAgICAgICAgICAgIFwiY25OYW1lXCI6IFwiaGFzQWRkQ2FyZFwiXG4gICAgICAgIH1cbiAgICBdLFxuICAgIFwiY2VsbHNcIjogW1xuICAgICAgICB7XG4gICAgICAgICAgICBcImlkXCI6IFwiTU5GNVkzbEs3djJWTXFHXCIsXG4gICAgICAgICAgICBcInNoYXBlXCI6IFwicmVjdFwiLFxuICAgICAgICAgICAgXCJ4XCI6IDg1LFxuICAgICAgICAgICAgXCJ5XCI6IDEwMCxcbiAgICAgICAgICAgIFwid2lkdGhcIjogOTAsXG4gICAgICAgICAgICBcImhlaWdodFwiOiA0MCxcbiAgICAgICAgICAgIFwibGFiZWxcIjogXCLngrnlh7vliqDlhaVcXG7otK3nianovabmjInpkq5cIixcbiAgICAgICAgICAgIFwibm9kZVR5cGVcIjogXCJcIixcbiAgICAgICAgICAgIFwiY2F0ZWdvcnlcIjogXCJcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcImlkXCI6IFwiTVBDWE1yemlCVTZVN1J4XCIsXG4gICAgICAgICAgICBcInNoYXBlXCI6IFwiZGlhbW9uZFwiLFxuICAgICAgICAgICAgXCJ4XCI6IDI0MCxcbiAgICAgICAgICAgIFwieVwiOiA4MCxcbiAgICAgICAgICAgIFwid2lkdGhcIjogMTIwLFxuICAgICAgICAgICAgXCJoZWlnaHRcIjogODAsXG4gICAgICAgICAgICBcImxhYmVsXCI6IFwi55uR5ZCsaGFzQWRkQ2FyZFxcbuWPmOmHj+WPmOWMllwiLFxuICAgICAgICAgICAgXCJub2RlVHlwZVwiOiBcIndhdGNoLXZhclwiLFxuICAgICAgICAgICAgXCJjYXRlZ29yeVwiOiBcImZsb3dcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcImlkXCI6IFwibHNsU0FuZ0N0UGl0V3JVXCIsXG4gICAgICAgICAgICBcInNoYXBlXCI6IFwicmVjdFwiLFxuICAgICAgICAgICAgXCJ4XCI6IDgwLFxuICAgICAgICAgICAgXCJ5XCI6IDE5MCxcbiAgICAgICAgICAgIFwid2lkdGhcIjogMTAwLFxuICAgICAgICAgICAgXCJoZWlnaHRcIjogNDAsXG4gICAgICAgICAgICBcImxhYmVsXCI6IFwi5pu05pawaGFzQWRkQ2FyZFxcbuWPmOmHj+S4unRydWVcIixcbiAgICAgICAgICAgIFwibm9kZVR5cGVcIjogXCJ1cGRhdGUtdmFyXCIsXG4gICAgICAgICAgICBcImNhdGVnb3J5XCI6IFwiYWN0aW9uTWV0aG9kXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJpZFwiOiBcImtjQ1ZTMGJOQWRURE91UFwiLFxuICAgICAgICAgICAgXCJzaGFwZVwiOiBcInJlY3RcIixcbiAgICAgICAgICAgIFwieFwiOiAyNTAsXG4gICAgICAgICAgICBcInlcIjogMjEwLFxuICAgICAgICAgICAgXCJ3aWR0aFwiOiAxMDAsXG4gICAgICAgICAgICBcImhlaWdodFwiOiA0MCxcbiAgICAgICAgICAgIFwibGFiZWxcIjogXCLmm7TmlrDotK3nianovablsI/nuqLngrlcXG7kuLrmmL7npLpcIixcbiAgICAgICAgICAgIFwibm9kZVR5cGVcIjogXCJcIixcbiAgICAgICAgICAgIFwiY2F0ZWdvcnlcIjogXCJcIlxuICAgICAgICB9XG4gICAgXSxcbiAgICBcImVkZ2VzXCI6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgXCJpZFwiOiBcIldEajBuelFROGxsVXFFTlwiLFxuICAgICAgICAgICAgXCJzb3VyY2VcIjoge1xuICAgICAgICAgICAgICAgIFwiY2VsbFwiOiBcIk1QQ1hNcnppQlU2VTdSeFwiLFxuICAgICAgICAgICAgICAgIFwicG9ydFwiOiBcImJvdHRvbVwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJ0YXJnZXRcIjoge1xuICAgICAgICAgICAgICAgIFwiY2VsbFwiOiBcImtjQ1ZTMGJOQWRURE91UFwiLFxuICAgICAgICAgICAgICAgIFwicG9ydFwiOiBcInRvcFwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJsYWJlbFwiOiBcIlwiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwiaWRcIjogXCJ5cElmSVBJaXNJTWJJWnZcIixcbiAgICAgICAgICAgIFwic291cmNlXCI6IHtcbiAgICAgICAgICAgICAgICBcImNlbGxcIjogXCJNTkY1WTNsSzd2MlZNcUdcIixcbiAgICAgICAgICAgICAgICBcInBvcnRcIjogXCJib3R0b21cIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwidGFyZ2V0XCI6IHtcbiAgICAgICAgICAgICAgICBcImNlbGxcIjogXCJsc2xTQW5nQ3RQaXRXclVcIixcbiAgICAgICAgICAgICAgICBcInBvcnRcIjogXCJ0b3BcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwibGFiZWxcIjogXCJcIlxuICAgICAgICB9XG4gICAgXVxufVxuXFxgXFxgXFxgXG5cbiMjIyMg5pW05L2TSlNPTue7k+aehFxuLSBqc29u57uT5p6E5YyF5ZCr5LqG5Y+Y6YeP5pWw57uEdmFyc+OAgeiKgueCueaVsOe7hGNlbGxz44CB6L655pWw57uEZWRnZXNcbi0g5Y+Y6YeP5pWw57uEdmFyc+aYr+S4gOS6m+ayoeaciei/nuaOpeahqeWSjOi/nuaOpee6v+eahOeLrOeri+eahOiKgueCue+8jOeUqOS6juihqOi+vuWPmOmHj+WjsOaYjlxuXFxgXFxgXFxganNvblxue1xuICBcInZhcnNcIjogW1xuICAgIC8vIOWPmOmHj+aVsOe7hFxuICBdLFxuICBcImNlbGxzXCI6IFtcbiAgICAvLyDoioLngrnmlbDnu4RcbiAgXSxcbiAgXCJlZGdlc1wiOiBbXG4gICAgLy8g6L655pWw57uEXG4gIF1cbn1cblxcYFxcYFxcYFxuXG4jIyMjIOiKgueCue+8iE5vZGXvvIlKU09O57uT5p6EXG5cbiMjIyMjIOWfuuacrOWtl+auteivtOaYjlxuXG5cXGBcXGBcXGBqc29uXG57XG4gIFwiaWRcIjogXCJzdHJpbmdcIiwgICAgICAgICAgIC8vIOiKgueCueWUr+S4gOagh+ivhuesplxuICBcInNoYXBlXCI6IFwic3RyaW5nXCIsICAgICAgICAvLyDoioLngrnlvaLnirbnsbvlnotcbiAgXCJjbk5hbWVcIjogXCJzdHJpbmdcIiwgICAgICAgLy8g5Lit5paH5ZCN5a2XXG4gIFwiZW5OYW1lXCI6IFwic3RyaW5nXCIsICAgICAgIC8vIOiLseaWh+WQjeWtl1xuICBcInhcIjogXCJudW1iZXJcIiwgICAgICAgICAgICAvLyDoioLngrlY5Z2Q5qCHXG4gIFwieVwiOiBcIm51bWJlclwiLCAgICAgICAgICAgIC8vIOiKgueCuVnlnZDmoIdcbiAgXCJ3aWR0aFwiOiBcIm51bWJlclwiLCAgICAgICAgLy8g6IqC54K55a695bqmXG4gIFwiaGVpZ2h0XCI6IFwibnVtYmVyXCIsICAgICAgIC8vIOiKgueCuemrmOW6plxuICBcImxhYmVsXCI6IFwic3RyaW5nXCIsICAgICAgICAvLyDoioLngrnmmL7npLrmlofmnKxcbiAgXCJub2RlVHlwZVwiOiBcInN0cmluZ1wiLCAgICAgLy8g6IqC54K557G75Z6LXG4gIFwiY2F0ZWdvcnlcIjogXCJzdHJpbmdcIiwgICAgIC8vIOWbm+Wkp+exu+WIq2NhdGVnb3J55YW25Lit5LiA56eNXG59XG5cXGBcXGBcXGBcblxuIyMjIyMg6K+m57uG5a2X5q616Kej6YeKXG5cbiMjIyMjIyBpZCAoc3RyaW5nKVxuLSAqKuWQq+S5iSoqOiDoioLngrnnmoTllK/kuIDmoIfor4bnrKZcbi0gKirnpLrkvosqKjogXFxgXCJ4c2YyM1NER3NkZjJ5M1NcIlxcYFxuLSAqKuinhOWImSoqOiDoioLngrnlkozovrnnmoRpZOeahOWAvOaUueS4ujE15L2N55qE55Sx5pWw5a2X44CB5bCP5YaZ5a2X5q+N44CB5aSn5YaZ5a2X5q+N6ZqP5py657uE5oiQ55qE5LiA5Liq5ZSv5LiA55qE5a2X56ym5Liy77yM5Zyo5pW05Liq5rWB56iL5Zu+5Lit5b+F6aG75ZSv5LiAXG5cbiMjIyMjIyBzaGFwZSAoc3RyaW5nKVxuLSAqKuWQq+S5iSoqOiDoioLngrnnmoTlh6DkvZXlvaLnirbnsbvlnotcbi0gKirlj6/pgInlgLwqKjpcbiAgLSBcXGByZWN0XFxgOiDnn6nlvaLoioLngrlcbiAgLSBcXGBkaWFtb25kXFxgOiDoj7HlvaLoioLngrlcbiAgLSBcXGBjaXJjbGVcXGA6IOWchuW9ouiKgueCuVxuICAtIFxcYGVsbGlwc2VcXGA6IOakreWchuiKgueCuVxuXG4jIyMjIyMgZW5OYW1lIChzdHJpbmcpXG4tICoq5ZCr5LmJKio6IOiKgueCueeahOiLseaWh+WQjeWtl1xuLSAqKuekuuS+iyoqOiBcXGBcInNob3dTdWNEaWFsb2dcIlxcYCwgXFxgXCJyZWFkTG9jYWxEYXRhXCJcXGAsIFxcYFwiaXNQYXlTdWNjZXNzXCJcXGBcbi0gKirop4TliJkqKjogXG4gICAgLSAx44CB6IqC54K555qE6Iux5paH5ZCN5a2X5b+F6aG75ZSv5LiAXG4gICAgLSAy44CB5bC96YeP57K+566A77yM5o6n5Yi25ZyoMjDkuKroi7HmloflrZfmr43ku6XlhoXvvIzlm6DkuLplbk5hbWXkvJrnlKjkuo7lrprkuYnku6PnoIHnmoTmlrnms5XlkI3lrZfjgIHlj5jph4/lkI3lrZdcblxuIyMjIyMjIGNhdGVnb3J5IChzdHJpbmcpXG4tICoq5ZCr5LmJKio6IOiKgueCueeahOWIhuexu1xuLSAqKuWPr+mAieWAvCoqOlxuICAtIFxcYGludGVyYWN0aW9uXFxgOiDkuqTkupLoioLngrlcbiAgLSBcXGBmbG93Q29udHJvbFxcYDog5rWB56iL5o6n5Yi26IqC54K5XG4gIC0gXFxgdmFyXFxgOiDlj5jph4/oioLngrlcbiAgLSBcXGBhY3Rpb25NZXRob2RcXGA6IOWKqOS9nOaWueazleiKgueCuVxuLSAqKuinhOWImSoqOiDoioLngrnnsbvlnovlv4XpobvmmK/pooTlrprkuYnnmoTnsbvlnovvvIzlkKbliJnkvJrooqvmi5Lnu51cblxuIyMjIyMjIG5vZGVUeXBlIChzdHJpbmcpXG4tICoq5ZCr5LmJKio6IOiKgueCueeahOexu+Wei1xuLSAqKuekuuS+iyoqOiBcXGBcInBhZ2UtZW50ZXJcIlxcYCwgXFxgXCJpZi1lbHNlXCJcXGAsIFxcYFwiZm9ybS1pbnB1dFwiXFxgLCBcXGBcInNjYW4tbG9naW5cIlxcYFxuLSAqKuinhOWImSoqOiDoioLngrnnsbvlnovlv4XpobvmmK/pooTlrprkuYnnmoTnsbvlnovvvIzlkKbliJnkvJrooqvmi5Lnu51cbi0gKippbnRlcmFjdGlvbuS6pOS6kuexu+Wei+eahG5vZGVUeXBl5Y+v6YCJ5YC8KirvvJpcbiAgLSBcXGB0YWItc3dpdGNoXFxgOiB0YWLliIfmjaJcbiAgLSBcXGBib3R0b20tbmF2LXN3aXRjaFxcYDog5bqV6YOo5a+86Iiq5qCP5YiH5o2iXG4gIC0gXFxgZm9ybS1pbnB1dFxcYDog6KGo5Y2V77yI6L6T5YWl5qGG44CB5byA5YWz44CB5Y2V6YCJ44CB5aSa6YCJ77yJ6L6T5YWl5ZCOXG4gIC0gXFxgY2xpY2tcXGA6IOeCueWHu3h4eOWFg+e0oFxuICAtIFxcYGxvbmctcHJlc3NcXGA6IOmVv+aMiXh4eOWFg+e0oFxuLSAqKmZsb3dDb250cm9s5rWB56iL5o6n5Yi257G75Z6L55qEbm9kZVR5cGXlj6/pgInlgLwqKu+8mlxuICAtIFxcYHBhZ2UtZW50ZXJcXGA6IOmhtemdoui/m+WFpeWQjlxuICAtIFxcYGlmLWVsc2VcXGA6IGlmRWxzZVxuICAtIFxcYHN3aXRjaFxcYDogc3dpdGNoXG4gIC0gXFxgZGVsYXktZXhlY3V0ZVxcYDog5bu25pe25omn6KGM77yI5ZyoeHh45q+r56eS5ZCO5omn6KGMeHh45Yqo5L2c5pa55rOV77yJXG4gIC0gXFxgdGltZXItZXhlY3V0ZVxcYDog5a6a5pe25omn6KGM77yI5q+P6ZqUeHh45q+r56eS5omn6KGMeHh45Yqo5L2c5pa55rOV77yM5LiN5pat6YeN5aSN77yJXG4gIC0gXFxgZXhlY3V0ZS1zdWNjZXNzXFxgOiDmiafooYzmiJDlip9cbiAgLSBcXGBleGVjdXRlLWZhaWxcXGA6IOaJp+ihjOWksei0pVxuLSAqKmFjdGlvbk1ldGhvZOWKqOS9nOaWueazleexu+Wei+eahG5vZGVUeXBl5Y+v6YCJ5YC8KirvvJpcbiAgLSBcXGBqdW1wLXBhZ2VcXGA6IOi3s+i9rOmhtemdolxuICAtIFxcYGNsb3NlLXBhZ2VcXGA6IOWFs+mXremhtemdolxuICAtIFxcYHVwZGF0ZS11aVxcYDog5pu05pawVUlcbiAgLSBcXGBuZXR3b3JrXFxgOiDogZTnvZFcbiAgICAtIOWPr+S7peS6p+eUn+aJp+ihjOaIkOWKn+WSjOaJp+ihjOWksei0peeahOa1geeoi+aOp+WItuiKgueCuVxuICAtIFxcYHNob3ctZGlhbG9nXFxgOiDlvLnlh7rlr7nor53moYZcbiAgLSBcXGBjbG9zZS1kaWFsb2dcXGA6IOWFs+mXreWvueivneahhlxuICAtIFxcYHNob3ctdG9hc3RcXGA6IOaYvuekunRvYXN05o+Q56S6XG4gIC0gXFxgb3Blbi1kcmF3ZXJcXGA6IOaJk+W8gOS+p+a7kemdouadv1xuICAtIFxcYGNsb3NlLWRyYXdlclxcYDog5YWz6Zet5L6n5ruR6Z2i5p2/XG4gIC0gXFxgb3Blbi1kcm9wZG93blxcYDog5omT5byA5LiL5ouJ6I+c5Y2VXG4gIC0gXFxgY2xvc2UtZHJvcGRvd25cXGA6IOWFs+mXreS4i+aLieiPnOWNlVxuICAtIFxcYHNhdmUtZGF0YVxcYDog5a2Y5YKoeHh45pWw5o2u5Yiw5pys5Zyw5a2Y5YKoXG4gIC0gXFxgcmVhZC1kYXRhXFxgOiDku47mnKzlnLDlrZjlgqjor7vlj5Z4eHjmlbDmja5cbiAgLSBcXGBzY2FuLXFyXFxgOiDmiavmj4/kuoznu7TnoIFcbiAgICAtIOWPr+S7peS6p+eUn+aJp+ihjOaIkOWKn+WSjOaJp+ihjOWksei0peeahOa1geeoi+aOp+WItuiKgueCuVxuICAtIFxcYGdldC1maWxlXFxgOiDojrflj5borr7lpIfmnKzlnLDmlofku7ZcbiAgICAtIOWPr+S7peS6p+eUn+aJp+ihjOaIkOWKn+WSjOaJp+ihjOWksei0peeahOa1geeoi+aOp+WItuiKgueCuVxuICAtIFxcYHNoYXJlLXdlY2hhdFxcYDog5YiG5Lqr5Yiw5b6u5L+hXG4gICAgLSDlj6/ku6XkuqfnlJ/miafooYzmiJDlip/lkozmiafooYzlpLHotKXnmoTmtYHnqIvmjqfliLboioLngrlcbiAgLSBcXGBzaGFyZS1hbGlwYXlcXGA6IOWIhuS6q+WIsOaUr+S7mOWunVxuICAgIC0g5Y+v5Lul5Lqn55Sf5omn6KGM5oiQ5Yqf5ZKM5omn6KGM5aSx6LSl55qE5rWB56iL5o6n5Yi26IqC54K5XG4gIC0gXFxgd2VjaGF0LWxvZ2luXFxgOiDlvq7kv6HnmbvlvZVcbiAgICAtIOWPr+S7peS6p+eUn+aJp+ihjOaIkOWKn+WSjOaJp+ihjOWksei0peeahOa1geeoi+aOp+WItuiKgueCuVxuICAtIFxcYHFxLWxvZ2luXFxgOiBRUeeZu+W9lVxuICAgIC0g5Y+v5Lul5Lqn55Sf5omn6KGM5oiQ5Yqf5ZKM5omn6KGM5aSx6LSl55qE5rWB56iL5o6n5Yi26IqC54K5XG4gIC0gXFxgd2VpYm8tbG9naW5cXGA6IOW+ruWNmueZu+W9lVxuICAgIC0g5Y+v5Lul5Lqn55Sf5omn6KGM5oiQ5Yqf5ZKM5omn6KGM5aSx6LSl55qE5rWB56iL5o6n5Yi26IqC54K5XG4gIC0gXFxgc2Nhbi1sb2dpblxcYDog5omr56CB55m75b2VXG4gICAgLSDlj6/ku6XkuqfnlJ/miafooYzmiJDlip/lkozmiafooYzlpLHotKXnmoTmtYHnqIvmjqfliLboioLngrlcbiAgLSBcXGB3ZWNoYXQtcGF5XFxgOiDlvq7kv6HmlK/ku5hcbiAgICAtIOWPr+S7peS6p+eUn+aJp+ihjOaIkOWKn+WSjOaJp+ihjOWksei0peeahOa1geeoi+aOp+WItuiKgueCuVxuICAtIFxcYGFsaXBheS1wYXlcXGA6IOaUr+S7mOWuneaUr+S7mFxuICAgIC0g5Y+v5Lul5Lqn55Sf5omn6KGM5oiQ5Yqf5ZKM5omn6KGM5aSx6LSl55qE5rWB56iL5o6n5Yi26IqC54K5XG4gIC0gXFxgc2Nhbi1wYXlcXGA6IOaJq+eggeaUr+S7mFxuICAgIC0g5Y+v5Lul5Lqn55Sf5omn6KGM5oiQ5Yqf5ZKM5omn6KGM5aSx6LSl55qE5rWB56iL5o6n5Yi26IqC54K5XG4gIC0gXFxgY2xvc2UtdGltZXJcXGA6IOWFs+mXreWumuaXtuWZqFxuICAgIC0g5YGc5q2i5p+Q5LiA5LiqXFxgdGltZXItZXhlY3V0ZVxcYOWumuaXtuaJp+ihjOeahOS7u+WKoVxuXG4jIyMjIyMgbGFiZWwgKHN0cmluZylcbi0gKirlkKvkuYkqKjog6IqC54K55LiK5pi+56S655qE5paH5pys5YaF5a65XG4tICoq56S65L6LKio6IFxcYFwi6aG16Z2i6L+b5YWl5ZCOXCJcXGAsIFxcYFwi5LuO5pys5Zyw5a2Y5YKo6K+75Y+WeHh45pWw5o2uXCJcXGBcbi0gKirmlK/mjIEqKjog5pSv5oyB5o2i6KGM56ymIFxcYFxcblxcYFxuXG4jIyMjIOi+ue+8iEVkZ2XvvIlKU09O57uT5p6EXG5cbiMjIyMjIOWfuuacrOWtl+auteivtOaYjlxuXG5cXGBcXGBcXGBqc29uXG57XG4gIFwiaWRcIjogXCJzdHJpbmdcIiwgICAgICAgICAgIC8vIOi+ueeahOWUr+S4gOagh+ivhuesplxuICBcInNvdXJjZVwiOiB7fSwgICAgICAgICAgICAgLy8g5rqQ6IqC54K56L+e5o6l5L+h5oGvXG4gIFwidGFyZ2V0XCI6IHt9LCAgICAgICAgICAgICAvLyDnm67moIfoioLngrnov57mjqXkv6Hmga9cbiAgXCJsYWJlbFwiOiBcInN0cmluZ1wiICAgICAgICAgLy8g6L655LiK55qE5qCH562+XG59XG5cXGBcXGBcXGBcblxuIyMjIyMg6K+m57uG5a2X5q616Kej6YeKXG5cbiMjIyMjIyBpZCAoc3RyaW5nKVxuLSAqKuWQq+S5iSoqOiDovrnnmoTllK/kuIDmoIfor4bnrKZcbi0gKirnpLrkvosqKjogXFxgXCIzZ3MzMkRzNTNkMkdzRmRcIlxcYFxuLSAqKuinhOWImSoqOiDovrnnmoRpZOeahOWAvOaUueS4ujE15L2N55qE55Sx5pWw5a2X44CB5bCP5YaZ5a2X5q+N44CB5aSn5YaZ5a2X5q+N6ZqP5py657uE5oiQ55qE5LiA5Liq5ZSv5LiA55qE5a2X56ym5Liy77yM5Zyo5pW05Liq5rWB56iL5Zu+5Lit5b+F6aG75ZSv5LiAXG5cbiMjIyMjIyBzb3VyY2UgKG9iamVjdClcbi0gKirlkKvkuYkqKjog6L6555qE6LW35aeL6L+e5o6l54K5XG4tICoq57uT5p6EKio6XG5cXGBcXGBcXGBqc29uXG57XG4gIFwiY2VsbFwiOiBcInhzZjIzU0RHc2RmMnkzU1wiLCAvLyDmupDoioLngrkxNeS9jeeahElEXG4gIFwicG9ydFwiOiBcImJvdHRvbVwiICAgICAgICAgIC8vIOi/nuaOpeahqeS9jee9rlxufVxuXFxgXFxgXFxgXG5cbiMjIyMjIyB0YXJnZXQgKG9iamVjdClcbi0gKirlkKvkuYkqKjog6L6555qE57uI5q2i6L+e5o6l54K5XG4tICoq5a2X5q616K+05piOKio6XG4gIC0gXFxgY2VsbFxcYDog55uu5qCH6IqC54K5MTXkvY3nmoRJRFxuICAtIFxcYHBvcnRcXGA6IOi/nuaOpeahqeS9jee9ru+8jOacieWbm+S4quWPr+mAieWAvO+8mnRvcOOAgWJvdHRvbeOAgWxlZnTjgIFyaWdodFxuLSAqKue7k+aehCoqOlxuXFxgXFxgXFxganNvblxue1xuICBcImNlbGxcIjogXCJnc0RzZGYyazJEU2RsNjJcIiwgIC8vIOebruagh+iKgueCuUlEXG4gIFwicG9ydFwiOiBcInRvcFwiICAgICAgICAgICAgIC8vIOi/nuaOpeahqeS9jee9rlxufVxuXFxgXFxgXFxgXG5cbiMjIyMjIyBsYWJlbCAoc3RyaW5nKVxuLSAqKuWQq+S5iSoqOiDoioLngrnkuIrmmL7npLrnmoTmlofmnKzlhoXlrrlcbi0gKirnpLrkvosqKjogXFxgXCLpobXpnaLov5vlhaXlkI5cIlxcYCwgXFxgXCLku47mnKzlnLDlrZjlgqjor7vlj5Z4eHjmlbDmja5cIlxcYFxuLSAqKuaUr+aMgSoqOiDmlK/mjIHmjaLooYznrKYgXFxgXFxuXFxgXG5cbiMjIyMg6IqC54K55YiG57G75ZKM57G75Z6L6K+G5YirXG5cbiMjIyMjIOiKgueCueWIhuexu2NhdGVnb3J5XG4tIOWPr+mAieWAvDpcbiAgLSBcXGBpbnRlcmFjdGlvblxcYDog5Lqk5LqS6IqC54K5XG4gIC0gXFxgZmxvd0NvbnRyb2xcXGA6IOa1geeoi+aOp+WItuiKgueCuVxuICAtIFxcYGFjdGlvbk1ldGhvZFxcYDog5Yqo5L2c5pa55rOV6IqC54K5XG5cbiMjIyMjIyAqKjHjgIFpbnRlcmFjdGlvbuS6pOS6kuexu+WeiyoqOlxuLSDlvaLnirY6IOS4u+imgeS9v+eUqOefqeW9oiAoXFxgcmVjdFxcYClcbi0g5Lqk5LqS57G75Z6L6IqC54K555qEbm9kZVR5cGXlj6/pgInlgLw6XG4gIC0gXFxgdGFiLXN3aXRjaFxcYDogdGFi5YiH5o2iXG4gIC0gXFxgYm90dG9tLW5hdi1zd2l0Y2hcXGA6IOW6lemDqOWvvOiIquagj+WIh+aNolxuICAtIFxcYGZvcm0taW5wdXRcXGA6IOihqOWNlei+k+WFpeWQjlxuICAtIFxcYGNsaWNrXFxgOiDngrnlh7tcbiAgLSBcXGBsb25nLXByZXNzXFxgOiDplb/mjIlcblxuIyMjIyMjICoqMuOAgWZsb3dDb250cm9s5rWB56iL5o6n5Yi257G75Z6LKio6IFxuLSDlvaLnirY6IOefqeW9ouWSjOiPseW9oua3t+WQiFxuLSDmtYHnqIvmjqfliLbnsbvlnovoioLngrnnmoRub2RlVHlwZeWPr+mAieWAvDpcbiAgLSBcXGBwYWdlLWVudGVyXFxgOiDpobXpnaLov5vlhaXlkI7vvIjlnIbop5Lnn6nlvaLvvIlcbiAgLSBcXGBpZi1lbHNlXFxgOiBpZkVsc2XvvIjoj7HlvaLvvIlcbiAgLSBcXGBzd2l0Y2hcXGA6IHN3aXRjaO+8iOiPseW9ou+8iVxuICAtIFxcYGZvclxcYDogZm9y5b6q546v77yI6I+x5b2i77yJXG4gIC0gXFxgd2hpbGVcXGA6IHdoaWxl5b6q546v77yI6I+x5b2i77yJXG4gIC0gXFxgd2F0Y2gtdmFyXFxgOiDnm5HlkKzlj5jph4/lj5jph4/lj5jljJbvvIjoj7HlvaLvvIlcbiAgLSBcXGBkZWxheS1leGVjdXRlXFxgOiDlu7bml7bmiafooYzvvIjnn6nlvaLvvIlcbiAgLSBcXGB0aW1lci1leGVjdXRlXFxgOiDlrprml7bmiafooYzvvIjnn6nlvaLvvIlcbiAgLSBcXGBleGVjdXRlLXN1Y2Nlc3NcXGA6IOaJp+ihjOaIkOWKn++8iOWchuinkuefqeW9ou+8iVxuICAtIFxcYGV4ZWN1dGUtZmFpbFxcYDog5omn6KGM5aSx6LSl77yI5ZyG6KeS55+p5b2i77yJXG5cbiMjIyMjIyAqKjPjgIF2YXLlj5jph4/nsbvlnosqKjpcbi0g5b2i54q2OiDkuLvopoHkvb/nlKjnn6nlvaIgKFxcYHJlY3RcXGApXG4tIOWPmOmHj+exu+Wei+iKgueCueeahG5vZGVUeXBl5Y+v6YCJ5YC8OlxuICAtIFxcYG51bWJlclxcYDog5pWw5a2XXG4gIC0gXFxgc3RyaW5nXFxgOiDlrZfnrKbkuLJcbiAgLSBcXGBib29sZWFuXFxgOiDluIPlsJRcbiAgLSBcXGBhcnJheVxcYDog5pWw57uEXG4gIC0gXFxgZW50aXR5XFxgOiDmlbDmja7lrp7kvZPvvIhlbnRpdHnlj6/ltYzlpZdlbnRpdHnjgIFhcnJhee+8iVxuLSDlj5jph4/oioLngrnnmoR555qE5YC85b+F6aG75pivMTDvvIx45piv5LuOMTDlvIDlp4vkuI3mlq3lvoDlj7PmjpLvvIzmr4/kuKp2YXLlj5jph4/oioLngrnnmoTmsLTlubPpl7TpmpQ177yM6auY5bqm5pivNDBcblxuIyMjIyMjICoqNOOAgWFjdGlvbk1ldGhvZOWKqOS9nOaWueazleexu+WeiyoqOlxuLSDlvaLnirY6IOS4u+imgeS9v+eUqOefqeW9oiAoXFxgcmVjdFxcYClcbi0g5Yqo5L2c5pa55rOV57G75Z6L6IqC54K555qEbm9kZVR5cGXlj6/pgInlgLw6XG4gIC0gXFxganVtcC1wYWdlXFxgOiDot7PovazpobXpnaJcbiAgLSBcXGBjbG9zZS1wYWdlXFxgOiDlhbPpl63pobXpnaJcbiAgLSBcXGB1cGRhdGUtdWlcXGA6IOabtOaWsFVJXG4gIC0gXFxgdXBkYXRlLXZhclxcYDog5pu05paw5Y+Y6YeP77yM5Y+Y6YeP6IqC54K55Y+v5Lul6KKrXFxgdXBkYXRlLXZhclxcYOWKqOS9nOaWueazleiKgueCueabtOaWsO+8jOabtOaWsOWPmOmHj+WQjuS8muinpuWPkVxcYHdhdGNoLXZhclxcYOa1geeoi+aOp+WItuiKgueCue+8jOexu+S8vHZ1ZeS7o+eggeW8gOWPkeeahHdhdGNo5py65Yi2XG4gIC0gXFxgbmV0d29ya1xcYDog6IGU572RXG4gIC0gXFxgc2hvdy1kaWFsb2dcXGA6IOW8ueWHuuWvueivneahhlxuICAtIFxcYGNsb3NlLWRpYWxvZ1xcYDog5YWz6Zet5a+56K+d5qGGXG4gIC0gXFxgc2hvdy10b2FzdFxcYDog5pi+56S6dG9hc3Tmj5DnpLpcbiAgLSBcXGBvcGVuLWRyYXdlclxcYDog5omT5byA5L6n5ruR6Z2i5p2/XG4gIC0gXFxgY2xvc2UtZHJhd2VyXFxgOiDlhbPpl63kvqfmu5HpnaLmnb9cbiAgLSBcXGBvcGVuLWRyb3Bkb3duXFxgOiDmiZPlvIDkuIvmi4noj5zljZVcbiAgLSBcXGBjbG9zZS1kcm9wZG93blxcYDog5YWz6Zet5LiL5ouJ6I+c5Y2VXG4gIC0gXFxgc2F2ZS1kYXRhXFxgOiDlrZjlgqh4eHjmlbDmja7liLDmnKzlnLDlrZjlgqhcbiAgLSBcXGByZWFkLWRhdGFcXGA6IOS7juacrOWcsOWtmOWCqOivu+WPlnh4eOaVsOaNrlxuICAtIFxcYHNjYW4tcXJcXGA6IOaJq+aPj+S6jOe7tOeggVxuICAtIFxcYGdldC1maWxlXFxgOiDojrflj5borr7lpIfmnKzlnLDmlofku7ZcbiAgLSBcXGBzaGFyZS13ZWNoYXRcXGA6IOWIhuS6q+WIsOW+ruS/oVxuICAtIFxcYHNoYXJlLWFsaXBheVxcYDog5YiG5Lqr5Yiw5pSv5LuY5a6dXG4gIC0gXFxgd2VjaGF0LWxvZ2luXFxgOiDlvq7kv6HnmbvlvZVcbiAgLSBcXGBxcS1sb2dpblxcYDogUVHnmbvlvZVcbiAgLSBcXGB3ZWliby1sb2dpblxcYDog5b6u5Y2a55m75b2VXG4gIC0gXFxgc2Nhbi1sb2dpblxcYDog5omr56CB55m75b2VXG4gIC0gXFxgd2VjaGF0LXBheVxcYDog5b6u5L+h5pSv5LuYXG4gIC0gXFxgYWxpcGF5LXBheVxcYDog5pSv5LuY5a6d5pSv5LuYXG4gIC0gXFxgc2Nhbi1wYXlcXGA6IOaJq+eggeaUr+S7mFxuICAtIFxcYGNsb3NlLXRpbWVyXFxgOiDlhbPpl63lrprml7blmahcblxuIyMjIyDlrozmlbTnpLrkvotcblxuIyMjIyMg5Y+Y6YeP56S65L6LXG5cXGBcXGBcXGBqc29uXG57XG4gIFwiaWRcIjogXCJzZ1NERzNTMXNnMkQzZ0tcIixcbiAgXCJzaGFwZVwiOiBcInJlY3RcIixcbiAgXCJlbk5hbWVcIjogXCJpc1BheVN1Y2Nlc3NcIixcbiAgXCJjbk5hbWVcIjogXCLmmK/lkKbmlK/ku5jmiJDlip9cIixcbiAgXCJub2RlVHlwZVwiOiBcImJvb2xlYW5cIixcbiAgXCJjYXRlZ29yeVwiOiBcInZhclwiLFxuICBcInhcIjogMTAsXG4gIFwieVwiOiAxMCxcbiAgXCJ3aWR0aFwiOiA5MixcbiAgXCJoZWlnaHRcIjogNDAsXG4gIFwibGFiZWxcIjogXCLmmK/lkKbmlK/ku5jmiJDlip9cIlxufVxuXFxgXFxgXFxgXG5cbiMjIyMjIOiKgueCueekuuS+i1xuXFxgXFxgXFxganNvblxue1xuICBcImlkXCI6IFwic3RhcnRcIixcbiAgXCJzaGFwZVwiOiBcInJlY3RcIixcbiAgXCJ4XCI6IDEwMCxcbiAgXCJ5XCI6IDcwLFxuICBcIndpZHRoXCI6IDgwLFxuICBcImhlaWdodFwiOiA0MCxcbiAgXCJsYWJlbFwiOiBcIumhtemdoui/m+WFpeWQjlwiLFxuICBcImVuTmFtZVwiOiBcInBhZ2VFbnRlclwiLFxuICBcImNuTmFtZVwiOiBcIumhtemdoui/m+WFpeWQjlwiLFxuICBcIm5vZGVUeXBlXCI6IFwicGFnZS1lbnRlclwiLFxuICBcImNhdGVnb3J5XCI6IFwiZmxvd1wiXG59XG5cXGBcXGBcXGBcblxuIyMjIyMg6L6556S65L6LXG5cXGBcXGBcXGBqc29uXG57XG4gIFwiaWRcIjogXCJzazNnRDRHc2RmajJkM2lcIixcbiAgXCJzb3VyY2VcIjoge1xuICAgIFwiY2VsbFwiOiBcInN0YXJ0XCIsXG4gICAgXCJwb3J0XCI6IFwiYm90dG9tXCJcbiAgfSxcbiAgXCJ0YXJnZXRcIjoge1xuICAgIFwiY2VsbFwiOiBcInJlYWRMb2NhbERhdGFcIixcbiAgICBcInBvcnRcIjogXCJ0b3BcIlxuICB9LFxuICBcImxhYmVsXCI6IFwi5LuO5pys5Zyw5pWw5o2u5bqT6K+75Y+WeHh45pWw5o2uXCJcbn1cblxcYFxcYFxcYFxuXG4jIyMg56ys5Zub5q2l44CB55CG6Kej6IqC54K55rWL6YeP5ZKM5o6S54mI6KeE5YiZXG4tIOeoi+W6j+a1geeoi+S7jmludGVyYWN0aW9u5Lqk5LqS57G75Z6L6IqC54K544CB6aG16Z2i6L+b5YWl5ZCO44CB55uR5ZCs5Y+Y6YeP5Y+Y5YyW5byA5aeL77yM5bm25LiU6L+Z5Lqb5byA5aeL55qE6IqC54K555qEeeeahOWAvOmDveaYrzcw77yM5LiN5pat5b6A5Y+z5o6S54mI77yM5LiN6L+b6KGM5o2i6KGM44CCXG4tIOmdnuWPmOmHj+exu+Wei+eahOiKgueCueeahOWuveW6pndpZHRo55qE5YC86K6h566X5YWs5byP77yad2lkdGggPSBsYWJlbOeahOWtl+aVsCAqIDEyICsgMjBcbi0g5Y+Y6YeP57G75Z6L55qE6IqC54K555qE5a695bqmd2lkdGjnmoTlgLzorqHnrpflhazlvI/vvJp3aWR0aCA9IGxhYmVs55qE5a2X5pWwICogNi4zICsgMjBcbi0g5LuO5LiK5b6A5LiL55qE5rWB56iL77yM5LiL5LiA5Liq5rWB56iL54K55b+F6aG76Led56a75LiK5LiA5Liq5rWB56iL54K55pyJNTDnmoTpl7TpmpTvvIzljbPkuIvkuIDkuKrmtYHnqIvngrnnmoR5ID0g5LiK5LiA5Liq5rWB56iL54K555qEeSArIOS4iuS4gOS4qua1geeoi+eCueeahGhlaWdodCArIDUwXG5cbiMjIyDnrKzlm5vmraXjgIHnkIbop6PnpoHmraLliJvlu7rlk6rkupvoioLngrlcbi0g6L2u5pKt5ruR5Yqo5ZCO77yM5LiN5YWB6K645Yib5bu65a+56L2u5pKt5YaF5a6544CB6L2u5pKt5oyH56S65Zmo5pu05pawVUnnmoToioLngrnvvIzova7mkq3nu4Tku7blhoXpg6jlt7Lnu4/lrp7njrDlpb3kuobova7mkq3lhoXlrrnjgIHova7mkq3mjIfnpLrlmajnmoRVSeWQjOatpeabtOaWsOS6hlxuLSDliIfmjaJ0YWLlkI7vvIzkuI3lhYHorrjliJvlu7rlr7lUYWLlhoXlrrnjgIF0YWLoj5zljZXmoI/jgIHoj5zljZVpdGVt5pu05pawVUnnmoToioLngrnvvIx0YWLnu4Tku7blhoXpg6jlt7Lnu4/lrp7njrDlpb3kuoZUYWLlhoXlrrnjgIF0YWLoj5zljZXmoI/jgIHoj5zljZVpdGVt55qEVUnlkIzmraXmm7TmlrDkuoZcbi0g5YiH5o2i5bqV6YOo5Yqf6IO95a+86Iiq5qCP5ZCO77yM5LiN5YWB6K645Yib5bu65a+55bqV6YOo5Yqf6IO95a+86Iiq5qCP5ZKM5a+86Iiq5qCPaXRlbeabtOaWsFVJ55qE6IqC54K577yM5bqV6YOo5Yqf6IO95a+86Iiq5qCP57uE5Lu25YaF6YOo5bey57uP5a6e546w5aW95LqG5bqV6YOo5Yqf6IO95a+86Iiq5qCP5ZKM5a+86Iiq5qCPaXRlbeeahOWQjOatpeabtOaWsOS6hlxuLSDlnKjpobXpnaLov5vlhaXlkI7vvIznpoHmraLliJvlu7rnsbvkvLzliJ3lp4vljJZ4eHjpobXpnaLjgIHliJ3lp4vljJZ4eHjpobXpnaJVSeetieetieeahOWIneWni+WMluaVtOS4qumhtemdouebuOWFs+eahOiKgueCue+8jOi/m+WFpemhtemdouWQjuS4gOiIrOmcgOimgeaAneiAg+aYr+WQpumcgOimgeWIm+W7uuiBlOe9keWQjuerr2FwaeeahOiKgueCueOAgeafkOS6m1VJ57uE5Lu25piv5ZCm6ZyA6KaB6K6+572u5Li6ZGlzYWJsZWTnirbmgIHjgIJcblxuIyMjIOesrOS6lOatpeOAgeeQhuino+S4jeW+l+ecgeeVpeWTquS6m+iKgueCuVxuLSDkvp3mja7nrKzkuIDmraXlvpflh7rnmoRcXGBhcGlMaXN0XFxg5pWw57uE77yM5LiN5b6X55yB55Wl5omA6ZyA55qE572R57uc6K+35rGC6IqC54K577yM5Lmf5LiN6IO95bCG5aSa5Liq572R57uc6K+35rGC6IqC54K55ZCI5bm25oiQ5LiA5Liq572R57uc6K+35rGC6IqC54K5XG4tIOS+neaNruesrOS4gOatpeW+l+WHuueahFxcYHVzZXJPcGVyYXRpb25MaXN0XFxg5pWw57uE77yM5LiN5b6X55yB55Wl5omA6ZyA55qE5Lqk5LqS6IqC54K577yM5Lmf5LiN6IO95bCG5aSa5Liq5Lqk5LqS6IqC54K55ZCI5bm25oiQ5LiA5Liq5Lqk5LqS6IqC54K5XG4tIOeQhuino+S4i+mdouWumuS5ieeahFxcYOmhtemdoum7mOiupOS4muWKoemAu+i+kVxcYO+8jOaAneiAg+W6lOivpemcgOimgeWTquS6m+iKgueCuVxuLSDov5vlhaXpobXpnaLlkI7kuIDoiKzpnIDopoHmgJ3ogIPmmK/lkKbpnIDopoHop6blj5HogZTnvZHor7fmsYLlkI7nq69hcGnnmoToioLngrnjgIHmn5DkuptVSee7hOS7tuaYr+WQpumcgOimgeiuvue9ruS4umRpc2FibGVk54q25oCB44CCXG4tIOW9k+eUqOaIt+i/m+ihjOafkOS4quaTjeS9nOaIluiAheafkOS4quS4muWKoemAu+i+keinpuWPkeWQju+8jOmcgOimgeaAneiAg+aYr+WQpumcgOimgeWIm+W7uuWvuVVJ5YWD57Sg5pu05pawVUnnmoToioLngrnvvIzmr5TlpoLngrnlh7vliqDlhaXotK3nianovabmjInpkq7lkI7vvIzpnIDopoHliJvlu7rmm7TmlrDotK3nianovabllYblk4HmlbDph4/mlofmnKzlhYPntKDnmoRVSeabtOaWsOiKgueCueOAglxuLSDnoa7kv53nqIvluo/mtYHnqIvku45pbnRlcmFjdGlvbuS6pOS6kuexu+Wei+iKgueCueOAgemhtemdoui/m+WFpeWQjuOAgeebkeWQrOWPmOmHj+WPmOWMluW8gOWni++8jOeEtuWQjuS+neasoeaMiemhuuW6j+aAneiAg+S7peS4i+iKgueCueWSjOa1geeoi1xuICAgIC0gMeOAgeaAneiAg+mcgOimgeWTquS6m+WPmOmHj+iKgueCuVxuICAgIC0gMuOAgeaAneiAg+mcgOimgeebkeWQrOWTquS6m+WPmOmHj+WPmOWMllxuICAgIC0gM+OAgeiOt+WPluaVsOaNru+8iOiBlOe9keOAgeS7juacrOWcsOWtmOWCqOivu+WPlu+8iVxuICAgIC0gNOOAgeWTquS6m1VJ5YWD57Sg55qE6buY6K6k54q25oCB5piv56aB55So54q25oCB77yM5Y+v5Lul5L2/55So5pu05pawVUnoioLngrnmj4/ov7BcbiAgICAtIDXjgIHmgJ3ogIPkuqTkupLliJ3lp4vljJbvvIzpnIDopoHogIPomZHmnInlk6rkuptcXGDkuqTkupLoioLngrnnsbvliKtcXGDvvIzmr5TlpoLvvJrngrnlh7vjgIF0YWLliIfmjaLnrYnnrYlcblxuIyMjIOesrOWFreatpeOAgeW8gOWni+S9v+eUqGFudHYgeDborr7orqHor6XpobXpnaLnmoTnqIvluo/mtYHnqIvlm77vvIzpnIDopoHlnKjpobbpg6jvvIh5PTEw77yJ5YWI6K6+6K6h5Y+Y6YeP5pWw57uEdmFyc++8jOeEtuWQjuiuvuiuoeiKgueCueaVsOe7hGNlbGxz77yM5pyA5ZCO6K6+6K6h6L655pWw57uEZWRnZXPvvIzorr7orqHlrozmiJDlkI7vvIzovpPlh7phbnR2IHg255qEanNvbuaWh+S7tuWIsFxcYC5ieXRlZnVuL3h4eCjmqKHlnZflkI3lrZcpL3h4eFBhZ2VQcm9ncmFtRmxvdy5qc29uXFxgXG5cbiMjIyDnrKzkuIPmraXjgIHmm7TmlrBcXGBkb2Mv5YmN56uv5Luj56CB5byA5Y+R6L+b5bqmLmpzb25cXGBcbi0g6K6+6K6h5LiA5Liq6aG16Z2i5a6M5q+V5ZCO77yM6ZyA6KaB5pu05pawXFxgZG9jL+WJjeerr+S7o+eggeW8gOWPkei/m+W6pi5qc29uXFxg6YeM6Z2i55qEdGhpbmtTdGF0dXPlrZfmrrXkuLpjb21wbGV0ZWTjgIJcbi0g5omn6KGM5LiL5LiA5Liq6aG16Z2i55qE6K6+6K6h77yM6YeN5aSNMS005q2l6aqk77yM55u05Yiw5omA5pyJ6aG16Z2i6YO95a6M5oiQ56iL5bqP5rWB56iL5Zu+55qE6K6+6K6hXG5cbiMjIyMg6aG16Z2i6buY6K6k5Lia5Yqh6YC76L6RXG4tICoq5aaC55So5oi35rKh5Zyo5o+P6L+w5Lit5piO56Gu5oyH5piO6aG16Z2i55qE5Lia5Yqh6YC76L6R77yM5YW25Lit6aG555uu6K6+6K6h5paH5qGjJy5ieXRlZnVuL3vmlbDlrZfluo/lj7d9LXh4eOWKn+iDveaooeWdl+S4muWKoemAu+i+keiuvuiuoS5tZCfkuI3nrpfnlKjmiLfmmI7noa7mjIflrprnmoTkuJrliqHpgLvovpHvvIzpgqPlkITkuKrpobXpnaLnmoTkuJrliqHpgLvovpHpu5jorqTlv4XpobvpgbXlrojku6XkuIvlm7rlrprpgLvovpHlubbovpPlh7p4eHjpobXpnaLpu5jorqTpgbXlrojnmoTlm7rlrprpgLvovpHvvIzmr5TlpoLvvJrpl6rlsY/pobXnmoTpgLvovpHvvJp4eHjnrYkqKlxuICAtIOS4jeWtmOWcqOadg+mZkOivt+axgumhtemdou+8jOaJgOacieadg+mZkOivt+axguW/hemhu+S9v+eUqOW8ueahhueahOS6pOS6kuaWueW8j++8jOiAjOS4lOaYr+mBteW+qlwi5Y2z55So5Y2z5Y+WXCLvvIhKdXN0LWluLVRpbWXvvInnmoTljp/liJlcbiAgLSDnu53lr7nkuI3kvJrmnInku7vkvZXlhbPkuo7pmpDnp4HljY/orq4v5pyN5Yqh5p2h5qy+6aG155qE6YC76L6RXG4gIC0g6Zeq5bGP6aG1XG4gICAgLSDlpoLmnpzmnInpl6rlsY/pobXvvIzpgqPkuYjlkK/liqjlkI7nrKzkuIDkuKrpobXpnaLlv4XpobvmmK/pl6rlsY/pobXvvIzpl6rlsY/pobXkuI3kvJrmnInot7PliLDnmbvlvZXpobXnmoTot6/lvoTvvIzlj6rmnInot7PliLDlvJXlr7zpobXmiJbpppbpobXnmoTot6/lvoRcbiAgICAtIOmXquWxj+mhteS4jeWBmuS7u+S9leS4muWKoemAu+i+ke+8jOS4jeivt+axguS7u+S9lee9kee7nOaOpeWPo++8jOWPqumcgOWIpOaWreaYr+WQpummluasoeWQr+WKqO+8jOWmguaenOmmluasoeWQr+WKqOWwsXjnp5LlkI7ot7PliLDlvJXlr7zpobXvvIzlpoLmnpzkuI3mmK/pppbmrKHlkK/liqjlsLHot7PliLDpppbpobVcbiAgICAtIOKdjCDpl6rlsY/pobXnu53lr7nnpoHmraLlgZrnmoTkuovmg4XvvJpcbiAgICAgIC0g6K+35rGC5Lu75L2V572R57uc5o6l5Y+jXG4gICAgICAtIOivt+axgueJiOacrOabtOaWsEFQSeaOpeWPo1xuICAgICAgLSDot7PliLDpmpDnp4HljY/orq4v5pyN5Yqh5p2h5qy+6aG1XG4gICAgICAtIOW8ueWHuuS7u+S9leWFtuS7luW8ueahhlxuICAgICAgLSDku7vkvZXmnYPpmZDor7fmsYJcbiAgLSDlvJXlr7zpobVcbiAgICA9IOW8leWvvOmhteWRiumhteS4jeS8muaciei3s+WIsOeZu+W9lemhteeahOi3r+W+hO+8jOWPquaciei3s+WIsOmmlumhteeahOi3r+W+hFxuICAgIC0g5LiN5Lya5pyJ5Lu75L2V572R57uc6K+35rGC44CB5Lia5Yqh6YC76L6R77yM5byV5a+86aG15LuF5LuF5piv5LiA5Liq5bGV56S66Z2Z5oCB5pWw5o2u55qE6aG16Z2iXG4gICAgLSDkuI3pnIDopoHoh6rliqjova7mkq1cbiAgICAtIOS4gOiIrOaVtOS4qumhtemdouWPquacieS4gOS4qui9ruaSree7hOS7tuOAgei9ruaSreaMh+ekuuWZqOWSjOW6lemDqOS4gOS4quaMiemSru+8jOW6lemDqOaMiemSruWcqOmdnuesrOS4gOmhteaXtuaYvuekuuS4i+S4gOatpe+8jOWcqOacgOWQjuS4gOmhteaXtuaYvuekuueri+WNs+S9k+mqjFxuICAtIOmmlumhtVxuICAgIC0g6L+b5YWl6aaW6aG15LiA6Iis6ZyA6KaB6K+35rGCYXBw54mI5pys5pu05pawQVBJ5o6l5Y+j77yM5Yik5pat5piv5ZCm6ZyA6KaB5pu05paw77yM5aaC5p6c6ZyA6KaB5pu05paw5bCx5by55Ye65pu05paw5by55qGG77yM5aaC5p6c5LiN6ZyA6KaB6YKj5bCx5LiN5YGa5Lu75L2V5LqL5oOFXG4gICAgLSDov5vlhaXpppbpobXov5jopoHor7vlj5bmnKzlnLDmlbDmja7vvJrlhajlsYDphY3nva7mlbDmja7jgILkuIDoiKznlKjkuo7lip/og73lvIDlhbPjgIFBQlRlc3TphY3nva7nrYnvvIzor7vlj5blrozmr5XlkI7vvIzov5jopoHnvZHnu5zor7fmsYLkuIDmrKHlhajlsYDphY3nva5BUEnvvIzlsIblhajlsYDphY3nva7mlbDmja7mm7TmlrDliLDmnKzlnLDmlbDmja7kuK1cbiAgICAtIOS4gOiIrOaYr+acieS4gOS4quW6lemDqOWKn+iDveWvvOiIquagj++8jOeCueWHu+W6lemDqOWKn+iDveWvvOiIquagj+eahOWbvuagh+S8muWIh+aNouWIsOWvueW6lOeahHRhYumhtemdou+8jHRhYumhtemdouS4gOiIrOacieWkmuS4qu+8jOavj+S4qnRhYumhtemdouacieS4jeWQjOeahOS4muWKoemAu+i+kVxuICAgIC0g5aaC5p6c55So5oi36L6T5YWl55qE6ZyA5rGC5o+P6L+w5rKh5pyJ5piO56Gu5oyH5a6a6aaW6aG15bqV6YOo5Yqf6IO95a+86Iiq5qCP5pyJ5ZOq5Lqb5Yqf6IO977yM6YKj5LmI5L2g5b+F6aG75oCd6ICD6aaW6aG15bqV6YOo5Yqf6IO95a+86Iiq5qCP5pyJ5ZOq5Lqb5Yqf6IO9aXRlbemhuVxuICAtIOeZu+W9lemhtVxuICAgIC0g55m75b2V6aG15piv55So5oi354K55Ye76ZyA6KaB55m75b2V5omN6IO96K6/6Zeu55qE6aG16Z2i5pe277yM5omN5Lya6Lez6L2s5Yiw55qE6aG16Z2i77yM6ICM5LiN5piv5LuO6Zeq5bGP6aG15Yik5pat5piv5ZCm6ZyA6KaB55m75b2V54S25ZCO6Lez6L+b5Y67XG5gOyJdfQ==