UNPKG

bytefun-ai-mcp

Version:

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

165 lines (147 loc) 26.7 kB
export const productDesignPromptTemplate = `# 你是专业的APP或者网站产品专家和应用架构专家,现在需要你根据用户描述,理解核心思路,严格按步骤执行,完成'.bytefun/prd-design-config.json' ## **执行设计:调用 todo_write 工具创建以下 4 个任务列表,创建完成后必须确认:如果任务数量不是 4 个,立即报错并重新创建。严格按照任务队列完成'.bytefun/prd-design-config.json'的编写** 1. 严格按照\`步骤规则1\`执行任务,思考该项目的有哪些功能模块,得出最终的\`moduleList\` 2. 严格按照\`步骤规则2\`执行任务,添加所有功能模块到'.bytefun/prd-design-config.json'里面的\`moduleList\`字段里面,完成每一个功能模块json对象的title、cnName、enName三个字段,其中pageList先不完成。 3. 严格按照\`步骤规则3\`执行任务,遍历\`moduleList\`字段,完成每一个功能模块json对象的pageList字段的所有内容 4. 严格按照\`步骤规则4\`执行任务,完成所有\`moduleList\`的编写后,更新\`.bytefun/prd-design-config.json\`的\`progressStatus\`为"completed" ### 步骤规则1:思考该项目的有哪些功能模块,得出最终的\`moduleList\` - 移动端一般需要启动功能模块,PC端一般不需要启动功能模块 - 启动模块必须要与账号模块分开,不得合并为启动与账号模块 - 我要开发一个完整的APP/网站,因此你不能只列出核心功能模块,要全部功能模块,必须完整的功能模块。 - 绝对禁止合并为\`其他功能模块\`或\`其他模块\`,敷衍完事,只能是具体的完整的功能模块。 - 绝对禁止出现\`其他功能模块\`或\`其他模块\`,只能是具体的完整的功能模块,如果出现了那就是严重违规,视为执行失败! ### 步骤规则2:添加所有功能模块到'.bytefun/prd-design-config.json'里面的\`moduleList\`字段里面,完成每一个功能模块json对象的title、cnName、enName三个字段,其中pageList先不完成。 ### 步骤规则3:遍历\`moduleList\`字段,完成每一个功能模块json对象的pageList字段的所有内容 - 每一个页面必须完成的4部分:1.1、页面组成部分(从上到下)、1.2、所需的对话框、toast、下拉菜单、侧滑面板、1.3、数据来源、1.4、用户操作 - 每一个页面的json对象要完成的字段格式和要求如下: \`\`\`json { "title": "1、xxx页面", "isSubPage": false, "cnName": "xxx页面", "enName": "xxxPage", "content": [ { "title": "1.1、页面组成部分(从上到下)", "content": "xxx(比如:顶部搜索栏、推荐轮播、分类入口、热门推荐、新品速递、完本推荐、推荐书籍列表、加载更多等)" }, { "title": "1.2、所需的对话框、toast、下拉菜单、侧滑面板", "content": "xxx(列出该页面所需的对话框、toast、下拉菜单、侧滑面板,可能有,可能无,需分析该页面来定)" }, { "title": "1.3、数据来源", "content": "xxx(说明该页面可能需要的网络数据、代码写死的数据、本地持久化的数据等)" }, { "title": "1.4、用户操作", "content": "xxx(说明该页面的用户交互操作流程)" } ] } \`\`\` - 特别注意,文档内容绝对禁止使用双引号,只能使用单引号 - 必须完成\`moduleList\`所有功能模块里面的所有页面的设计才能停止任务! ### 步骤规则4:完成所有\`moduleList\`的编写后,更新\`.bytefun/prd-design-config.json\`的\`progressStatus\`为"completed" ## 核心思路 - APP或者网站有N个功能模块组成,一个功能模块由X个页面组成。 - 功能模块之间是解耦的 - **只需思考APP或者网站前端的功能模块** 只需思考APP或者网站前端的功能模块,后端的功能管理模块绝对不需要理会 ## 页面和功能模块默认业务逻辑 - 如用户没在描述中明确指明该功能模块或页面的业务逻辑,那就默认必须遵守\`默认功能设计规则\` - 不存在权限请求页面,所有权限请求必须使用弹框的交互方式,而且是遵循"即用即取"(Just-in-Time)的原则 - 网络错误与重试、数据加载、数据缓存、数据持久化、空状态、搜索历史等是当前页面展示就行,是绝对不能设计成页面的。 - 启动功能模块 - 不存在权限请求页面,所有权限请求必须使用弹框的交互方式,而且是遵循"即用即取"(Just-in-Time)的原则 - 绝对不会有任何关于隐私协议/服务条款页的逻辑 - 闪屏页 - 一般设置1秒跳过就行,注意是1秒 - 禁止使用全屏图片,一般使用主题相关的渐变色,然后带有一些额外的背景元素增强界面层次感,比如:梦幻圆圈泡泡、玻璃效果的圆形径向渐变等等元素 - 如果有闪屏页,那么启动后第一个页面必须是闪屏页,闪屏页不会有跳到登录页的路径,只有跳到引导页或首页的路径 - 闪屏页不做任何业务逻辑,不请求任何网络接口,只需判断是否首次启动,如果首次启动就x秒后跳到引导页,如果不是首次启动就跳到首页 - ❌ 闪屏页绝对禁止做的事情: - 请求任何网络接口 - 请求版本更新API接口 - 跳到隐私协议/服务条款页 - 弹出任何其他弹框 - 任何权限请求 - 引导页 - 引导页告页不会有跳到登录页的路径,只有跳到首页的路径 - 不会有任何网络请求、业务逻辑,引导页仅仅是一个展示静态数据的页面 - 不需要自动轮播 - 账号功能模块(一般包含以下8个页面) - 登录页 - 登录页一般有以下两种页面结构,可以随机选择: 1. 一般页面组成是:带返回按钮的顶部标题栏、应用logo、欢迎、tab切换登录方式(验证码登录、账号密码登录)、勾选阅读用户协议和隐私协议、登录按钮、登录按钮下方一行显示'新用户注册''忘记密码'两个文字按钮、其他第三方登录(微信、QQ、微博) 2. 一般页面组成是:带返回按钮的顶部标题栏、应用logo、欢迎、多状态容器(验证码登录表单状态和账号密码登录表单状态)、勾选阅读用户协议和隐私协议、登录按钮、登录按钮下方一行显示'新用户注册''验证码登录/账号密码登录''忘记密码'三个文字按钮、其他第三方登录(微信、QQ、微博) - 注意,隐私协议、用户协议都不得使用弹框或侧滑面板,必须使用跳转页面来实现 - 注册页 - 一般有应用logo、欢迎注册语句、注册表单、勾选阅读用户协议和隐私协议、注册按钮、注册按钮下方一行显示'已有账号登录''忘记密码'两个文字按钮、其他第三方登录(微信、QQ、微博) - 注意,隐私协议、用户协议都不得使用弹框或侧滑面板,必须使用跳转页面来实现 - 验证码输入页 - 忘记密码页 - 修改密码页 - 账号注销页 - 用户协议页 - 用户协议的内容写死即可,不需要网络API请求,也就不需要loading、加载失败、多状态容器等,就是一个简单的页面 - 底部不需要同意等操作按钮的,这只是一个展示页面 - 隐私协议页 - 隐私协议的内容写死即可,不需要网络API请求,也就不需要loading、加载失败、多状态容器等,就是一个简单的html页面 - 底部不需要同意等操作按钮的,这只是一个展示页面 - 首页功能模块 - 首页 - 进入首页一般需要请求app版本更新API接口,判断是否需要更新,如果需要更新就弹出更新弹框,如果不需要那就不做任何事情 - 进入首页还要读取本地数据:全局配置数据。一般用于功能开关、ABTest配置等,读取完毕后,还要网络请求一次全局配置API,将全局配置数据更新到本地数据中 - 首页模块的页面列表一般是只包含1个首页主体页和N个子页面,比如首页模块分为首页主体页、首页子页面、购物车子页面、消息子页面、个人中心子页面总共5个页面,其中首页子页面、购物车子页面、消息子页面、个人中心子页面嵌套在首页主体页里面,那么\`二、页面详细信息列表表格\`必须是首页主体页、首页子页面、购物车子页面、消息子页面、个人中心子页面。 - 所有子页面也是独立设计的页面,也必须加入到\`pageList\`字段里,其中\`isSubPage\`是true - 需要在.bytefun/project.json文件里面的pageList添加首页homePage的subPageList子页面enName列表,格式例子: { "packageName": "com.mycompany.myapp", "versionName": "1.0.0", "versionCode": 1, ...其他属性, { "enName": "homePage", "subPageList": [ "xxxPage", "xxxPage", ... ] } } - 搜索功能模块 - 搜索页 - 搜索页一般由搜索栏、多状态容器组成,其中多状态由5个状态组成:默认状态(包括热门搜索、搜索历史)、搜索中状态、搜索空数据状态、搜索网络错误状态、搜索有数据结果状态(搜索结果列表) ## AI任务完整性执行规范 ### 核心原则 - **绝对禁止中途停止任务,必须100%完成所有既定目标** - 绝对禁止出现\`其他功能模块\`或\`其他模块\`,只能是具体的完整的功能模块,如果出现了那就是严重违规,视为执行失败! ### 执行检查清单 1. **任务分解**:明确功能模块总数量N,列出完整任务列表 2. **进度跟踪**:实时显示"已完成X/总共N" 3. **逐项执行**:每完成一项输出\`✅ 已完成第X项,当前进度X/N\` 4. **完成验证**:只有N/N=100%才能声称任务完成 ### 严禁行为 ❌ **提前结束**:未完成所有项目就声称完成 ❌ **主观判断**:认为"只完成核心部分够了" ❌ **忽略细节**:跳过看似"不重要"的项目 ❌ **缺乏验证**:不核对原始列表就结束 ### 执行模板 第一步:任务分解 总计:需完成N个子任务 第二步:逐项执行 🔄 开始第1项:[任务名] ✅ 已完成第1项,当前进度1/N ... 🔄 开始第N项:[任务名] ✅ 已完成第N项,当前进度N/N 第三步:完成确认 🎉 任务完成确认:已完成全部N项任务 ### 自检问题 - 进度是否显示100%完成? - 是否存在跳过的项目? - 原始任务列表是否全部完成? ### 错误处理 发现遗漏时:立即停止→核对列表→补充遗漏→继续执行 `; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvRGVzaWduTm9ybWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Byb0Rlc2lnbk5vcm1hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW1LMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBwcm9kdWN0RGVzaWduUHJvbXB0VGVtcGxhdGUgPSBgIyDkvaDmmK/kuJPkuJrnmoRBUFDmiJbogIXnvZHnq5nkuqflk4HkuJPlrrblkozlupTnlKjmnrbmnoTkuJPlrrbvvIznjrDlnKjpnIDopoHkvaDmoLnmja7nlKjmiLfmj4/ov7DvvIznkIbop6PmoLjlv4PmgJ3ot6/vvIzkuKXmoLzmjInmraXpqqTmiafooYzvvIzlrozmiJAnLmJ5dGVmdW4vcHJkLWRlc2lnbi1jb25maWcuanNvbidcblxuIyMgKirmiafooYzorr7orqHvvJrosIPnlKggdG9kb193cml0ZSDlt6XlhbfliJvlu7rku6XkuIsgNCDkuKrku7vliqHliJfooajvvIzliJvlu7rlrozmiJDlkI7lv4Xpobvnoa7orqTvvJrlpoLmnpzku7vliqHmlbDph4/kuI3mmK8gNCDkuKrvvIznq4vljbPmiqXplJnlubbph43mlrDliJvlu7rjgILkuKXmoLzmjInnhafku7vliqHpmJ/liJflrozmiJAnLmJ5dGVmdW4vcHJkLWRlc2lnbi1jb25maWcuanNvbifnmoTnvJblhpkqKlxuXG4xLiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJkxXFxg5omn6KGM5Lu75Yqh77yM5oCd6ICD6K+l6aG555uu55qE5pyJ5ZOq5Lqb5Yqf6IO95qih5Z2X77yM5b6X5Ye65pyA57uI55qEXFxgbW9kdWxlTGlzdFxcYFxuMi4g5Lil5qC85oyJ54WnXFxg5q2l6aqk6KeE5YiZMlxcYOaJp+ihjOS7u+WKoe+8jOa3u+WKoOaJgOacieWKn+iDveaooeWdl+WIsCcuYnl0ZWZ1bi9wcmQtZGVzaWduLWNvbmZpZy5qc29uJ+mHjOmdoueahFxcYG1vZHVsZUxpc3RcXGDlrZfmrrXph4zpnaLvvIzlrozmiJDmr4/kuIDkuKrlip/og73mqKHlnZdqc29u5a+56LGh55qEdGl0bGXjgIFjbk5hbWXjgIFlbk5hbWXkuInkuKrlrZfmrrXvvIzlhbbkuK1wYWdlTGlzdOWFiOS4jeWujOaIkOOAglxuMy4g5Lil5qC85oyJ54WnXFxg5q2l6aqk6KeE5YiZM1xcYOaJp+ihjOS7u+WKoe+8jOmBjeWOhlxcYG1vZHVsZUxpc3RcXGDlrZfmrrXvvIzlrozmiJDmr4/kuIDkuKrlip/og73mqKHlnZdqc29u5a+56LGh55qEcGFnZUxpc3TlrZfmrrXnmoTmiYDmnInlhoXlrrlcbjQuIOS4peagvOaMieeFp1xcYOatpemqpOinhOWImTRcXGDmiafooYzku7vliqHvvIzlrozmiJDmiYDmnIlcXGBtb2R1bGVMaXN0XFxg55qE57yW5YaZ5ZCO77yM5pu05pawXFxgLmJ5dGVmdW4vcHJkLWRlc2lnbi1jb25maWcuanNvblxcYOeahFxcYHByb2dyZXNzU3RhdHVzXFxg5Li6XCJjb21wbGV0ZWRcIlxuXG4jIyMg5q2l6aqk6KeE5YiZMe+8muaAneiAg+ivpemhueebrueahOacieWTquS6m+WKn+iDveaooeWdl++8jOW+l+WHuuacgOe7iOeahFxcYG1vZHVsZUxpc3RcXGBcbi0g56e75Yqo56uv5LiA6Iis6ZyA6KaB5ZCv5Yqo5Yqf6IO95qih5Z2X77yMUEPnq6/kuIDoiKzkuI3pnIDopoHlkK/liqjlip/og73mqKHlnZdcbi0g5ZCv5Yqo5qih5Z2X5b+F6aG76KaB5LiO6LSm5Y+35qih5Z2X5YiG5byA77yM5LiN5b6X5ZCI5bm25Li65ZCv5Yqo5LiO6LSm5Y+35qih5Z2XXG4tIOaIkeimgeW8gOWPkeS4gOS4quWujOaVtOeahEFQUC/nvZHnq5nvvIzlm6DmraTkvaDkuI3og73lj6rliJflh7rmoLjlv4Plip/og73mqKHlnZfvvIzopoHlhajpg6jlip/og73mqKHlnZfvvIzlv4XpobvlrozmlbTnmoTlip/og73mqKHlnZfjgIJcbi0g57ud5a+556aB5q2i5ZCI5bm25Li6XFxg5YW25LuW5Yqf6IO95qih5Z2XXFxg5oiWXFxg5YW25LuW5qih5Z2XXFxg77yM5pW36KGN5a6M5LqL77yM5Y+q6IO95piv5YW35L2T55qE5a6M5pW055qE5Yqf6IO95qih5Z2X44CCXG4tIOe7neWvueemgeatouWHuueOsFxcYOWFtuS7luWKn+iDveaooeWdl1xcYOaIllxcYOWFtuS7luaooeWdl1xcYO+8jOWPquiDveaYr+WFt+S9k+eahOWujOaVtOeahOWKn+iDveaooeWdl++8jOWmguaenOWHuueOsOS6humCo+WwseaYr+S4pemHjei/neinhO+8jOinhuS4uuaJp+ihjOWksei0pe+8gVxuXG4jIyMg5q2l6aqk6KeE5YiZMu+8mua3u+WKoOaJgOacieWKn+iDveaooeWdl+WIsCcuYnl0ZWZ1bi9wcmQtZGVzaWduLWNvbmZpZy5qc29uJ+mHjOmdoueahFxcYG1vZHVsZUxpc3RcXGDlrZfmrrXph4zpnaLvvIzlrozmiJDmr4/kuIDkuKrlip/og73mqKHlnZdqc29u5a+56LGh55qEdGl0bGXjgIFjbk5hbWXjgIFlbk5hbWXkuInkuKrlrZfmrrXvvIzlhbbkuK1wYWdlTGlzdOWFiOS4jeWujOaIkOOAglxuXG4jIyMg5q2l6aqk6KeE5YiZM++8mumBjeWOhlxcYG1vZHVsZUxpc3RcXGDlrZfmrrXvvIzlrozmiJDmr4/kuIDkuKrlip/og73mqKHlnZdqc29u5a+56LGh55qEcGFnZUxpc3TlrZfmrrXnmoTmiYDmnInlhoXlrrlcbi0g5q+P5LiA5Liq6aG16Z2i5b+F6aG75a6M5oiQ55qENOmDqOWIhu+8mjEuMeOAgemhtemdoue7hOaIkOmDqOWIhu+8iOS7juS4iuWIsOS4i++8ieOAgTEuMuOAgeaJgOmcgOeahOWvueivneahhuOAgXRvYXN044CB5LiL5ouJ6I+c5Y2V44CB5L6n5ruR6Z2i5p2/44CBMS4z44CB5pWw5o2u5p2l5rqQ44CBMS4044CB55So5oi35pON5L2cXG4tIOavj+S4gOS4qumhtemdoueahGpzb27lr7nosaHopoHlrozmiJDnmoTlrZfmrrXmoLzlvI/lkozopoHmsYLlpoLkuIvvvJpcblxcYFxcYFxcYGpzb25cbntcbiAgXCJ0aXRsZVwiOiBcIjHjgIF4eHjpobXpnaJcIixcbiAgXCJpc1N1YlBhZ2VcIjogZmFsc2UsXG4gIFwiY25OYW1lXCI6IFwieHh46aG16Z2iXCIsXG4gIFwiZW5OYW1lXCI6IFwieHh4UGFnZVwiLFxuICBcImNvbnRlbnRcIjogW1xuICAgICAge1xuICAgICAgICBcInRpdGxlXCI6IFwiMS4x44CB6aG16Z2i57uE5oiQ6YOo5YiG77yI5LuO5LiK5Yiw5LiL77yJXCIsXG4gICAgICAgIFwiY29udGVudFwiOiBcInh4eO+8iOavlOWmgu+8mumhtumDqOaQnOe0ouagj+OAgeaOqOiNkOi9ruaSreOAgeWIhuexu+WFpeWPo+OAgeeDremXqOaOqOiNkOOAgeaWsOWTgemAn+mAkuOAgeWujOacrOaOqOiNkOOAgeaOqOiNkOS5puexjeWIl+ihqOOAgeWKoOi9veabtOWkmuetie+8iVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcInRpdGxlXCI6IFwiMS4y44CB5omA6ZyA55qE5a+56K+d5qGG44CBdG9hc3TjgIHkuIvmi4noj5zljZXjgIHkvqfmu5HpnaLmnb9cIixcbiAgICAgICAgXCJjb250ZW50XCI6IFwieHh477yI5YiX5Ye66K+l6aG16Z2i5omA6ZyA55qE5a+56K+d5qGG44CBdG9hc3TjgIHkuIvmi4noj5zljZXjgIHkvqfmu5HpnaLmnb/vvIzlj6/og73mnInvvIzlj6/og73ml6DvvIzpnIDliIbmnpDor6XpobXpnaLmnaXlrprvvIlcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJ0aXRsZVwiOiBcIjEuM+OAgeaVsOaNruadpea6kFwiLFxuICAgICAgICBcImNvbnRlbnRcIjogXCJ4eHjvvIjor7TmmI7or6XpobXpnaLlj6/og73pnIDopoHnmoTnvZHnu5zmlbDmja7jgIHku6PnoIHlhpnmrbvnmoTmlbDmja7jgIHmnKzlnLDmjIHkuYXljJbnmoTmlbDmja7nrYnvvIlcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJ0aXRsZVwiOiBcIjEuNOOAgeeUqOaIt+aTjeS9nFwiLFxuICAgICAgICBcImNvbnRlbnRcIjogXCJ4eHjvvIjor7TmmI7or6XpobXpnaLnmoTnlKjmiLfkuqTkupLmk43kvZzmtYHnqIvvvIlcIlxuICAgICAgfVxuICBdXG59XG5cXGBcXGBcXGBcbi0g54m55Yir5rOo5oSP77yM5paH5qGj5YaF5a6557ud5a+556aB5q2i5L2/55So5Y+M5byV5Y+377yM5Y+q6IO95L2/55So5Y2V5byV5Y+3XG4tIOW/hemhu+WujOaIkFxcYG1vZHVsZUxpc3RcXGDmiYDmnInlip/og73mqKHlnZfph4zpnaLnmoTmiYDmnInpobXpnaLnmoTorr7orqHmiY3og73lgZzmraLku7vliqHvvIFcblxuIyMjIOatpemqpOinhOWImTTvvJrlrozmiJDmiYDmnIlcXGBtb2R1bGVMaXN0XFxg55qE57yW5YaZ5ZCO77yM5pu05pawXFxgLmJ5dGVmdW4vcHJkLWRlc2lnbi1jb25maWcuanNvblxcYOeahFxcYHByb2dyZXNzU3RhdHVzXFxg5Li6XCJjb21wbGV0ZWRcIlxuXG4jIyDmoLjlv4PmgJ3ot69cbi0gQVBQ5oiW6ICF572R56uZ5pyJTuS4quWKn+iDveaooeWdl+e7hOaIkO+8jOS4gOS4quWKn+iDveaooeWdl+eUsVjkuKrpobXpnaLnu4TmiJDjgIJcbi0g5Yqf6IO95qih5Z2X5LmL6Ze05piv6Kej6ICm55qEXG4tICoq5Y+q6ZyA5oCd6ICDQVBQ5oiW6ICF572R56uZ5YmN56uv55qE5Yqf6IO95qih5Z2XKiog5Y+q6ZyA5oCd6ICDQVBQ5oiW6ICF572R56uZ5YmN56uv55qE5Yqf6IO95qih5Z2X77yM5ZCO56uv55qE5Yqf6IO9566h55CG5qih5Z2X57ud5a+55LiN6ZyA6KaB55CG5LyaXG5cbiMjIOmhtemdouWSjOWKn+iDveaooeWdl+m7mOiupOS4muWKoemAu+i+kVxuLSDlpoLnlKjmiLfmsqHlnKjmj4/ov7DkuK3mmI7noa7mjIfmmI7or6Xlip/og73mqKHlnZfmiJbpobXpnaLnmoTkuJrliqHpgLvovpHvvIzpgqPlsLHpu5jorqTlv4XpobvpgbXlrohcXGDpu5jorqTlip/og73orr7orqHop4TliJlcXGBcbi0g5LiN5a2Y5Zyo5p2D6ZmQ6K+35rGC6aG16Z2i77yM5omA5pyJ5p2D6ZmQ6K+35rGC5b+F6aG75L2/55So5by55qGG55qE5Lqk5LqS5pa55byP77yM6ICM5LiU5piv6YG15b6qXCLljbPnlKjljbPlj5ZcIu+8iEp1c3QtaW4tVGltZe+8ieeahOWOn+WImVxuLSDnvZHnu5zplJnor6/kuI7ph43or5XjgIHmlbDmja7liqDovb3jgIHmlbDmja7nvJPlrZjjgIHmlbDmja7mjIHkuYXljJbjgIHnqbrnirbmgIHjgIHmkJzntKLljoblj7LnrYnmmK/lvZPliY3pobXpnaLlsZXnpLrlsLHooYzvvIzmmK/nu53lr7nkuI3og73orr7orqHmiJDpobXpnaLnmoTjgIJcbi0g5ZCv5Yqo5Yqf6IO95qih5Z2XXG4gIC0g5LiN5a2Y5Zyo5p2D6ZmQ6K+35rGC6aG16Z2i77yM5omA5pyJ5p2D6ZmQ6K+35rGC5b+F6aG75L2/55So5by55qGG55qE5Lqk5LqS5pa55byP77yM6ICM5LiU5piv6YG15b6qXCLljbPnlKjljbPlj5ZcIu+8iEp1c3QtaW4tVGltZe+8ieeahOWOn+WImVxuICAtIOe7neWvueS4jeS8muacieS7u+S9leWFs+S6jumakOengeWNj+iuri/mnI3liqHmnaHmrL7pobXnmoTpgLvovpFcbiAgLSDpl6rlsY/pobVcbiAgICAtIOS4gOiIrOiuvue9rjHnp5Lot7Pov4flsLHooYzvvIzms6jmhI/mmK8x56eSXG4gICAgLSDnpoHmraLkvb/nlKjlhajlsY/lm77niYfvvIzkuIDoiKzkvb/nlKjkuLvpopjnm7jlhbPnmoTmuJDlj5joibLvvIznhLblkI7luKbmnInkuIDkupvpop3lpJbnmoTog4zmma/lhYPntKDlop7lvLrnlYzpnaLlsYLmrKHmhJ/vvIzmr5TlpoLvvJrmoqblubvlnIblnIjms6Hms6HjgIHnjrvnkoPmlYjmnpznmoTlnIblvaLlvoTlkJHmuJDlj5jnrYnnrYnlhYPntKBcbiAgICAtIOWmguaenOaciemXquWxj+mhte+8jOmCo+S5iOWQr+WKqOWQjuesrOS4gOS4qumhtemdouW/hemhu+aYr+mXquWxj+mhte+8jOmXquWxj+mhteS4jeS8muaciei3s+WIsOeZu+W9lemhteeahOi3r+W+hO+8jOWPquaciei3s+WIsOW8leWvvOmhteaIlummlumhteeahOi3r+W+hFxuICAgIC0g6Zeq5bGP6aG15LiN5YGa5Lu75L2V5Lia5Yqh6YC76L6R77yM5LiN6K+35rGC5Lu75L2V572R57uc5o6l5Y+j77yM5Y+q6ZyA5Yik5pat5piv5ZCm6aaW5qyh5ZCv5Yqo77yM5aaC5p6c6aaW5qyh5ZCv5Yqo5bCxeOenkuWQjui3s+WIsOW8leWvvOmhte+8jOWmguaenOS4jeaYr+mmluasoeWQr+WKqOWwsei3s+WIsOmmlumhtVxuICAgIC0g4p2MIOmXquWxj+mhtee7neWvueemgeatouWBmueahOS6i+aDhe+8mlxuICAgICAgLSDor7fmsYLku7vkvZXnvZHnu5zmjqXlj6NcbiAgICAgIC0g6K+35rGC54mI5pys5pu05pawQVBJ5o6l5Y+jXG4gICAgICAtIOi3s+WIsOmakOengeWNj+iuri/mnI3liqHmnaHmrL7pobVcbiAgICAgIC0g5by55Ye65Lu75L2V5YW25LuW5by55qGGXG4gICAgICAtIOS7u+S9leadg+mZkOivt+axglxuICAtIOW8leWvvOmhtVxuICAgIC0g5byV5a+86aG15ZGK6aG15LiN5Lya5pyJ6Lez5Yiw55m75b2V6aG155qE6Lev5b6E77yM5Y+q5pyJ6Lez5Yiw6aaW6aG155qE6Lev5b6EXG4gICAgLSDkuI3kvJrmnInku7vkvZXnvZHnu5zor7fmsYLjgIHkuJrliqHpgLvovpHvvIzlvJXlr7zpobXku4Xku4XmmK/kuIDkuKrlsZXnpLrpnZnmgIHmlbDmja7nmoTpobXpnaJcbiAgICAtIOS4jemcgOimgeiHquWKqOi9ruaSrVxuLSDotKblj7flip/og73mqKHlnZfvvIjkuIDoiKzljIXlkKvku6XkuIs45Liq6aG16Z2i77yJXG4gIC0g55m75b2V6aG1XG4gICAgLSDnmbvlvZXpobXkuIDoiKzmnInku6XkuIvkuKTnp43pobXpnaLnu5PmnoTvvIzlj6/ku6Xpmo/mnLrpgInmi6nvvJpcbiAgICAgIDEuIOS4gOiIrOmhtemdoue7hOaIkOaYr++8muW4pui/lOWbnuaMiemSrueahOmhtumDqOagh+mimOagj+OAgeW6lOeUqGxvZ2/jgIHmrKLov47jgIF0YWLliIfmjaLnmbvlvZXmlrnlvI8o6aqM6K+B56CB55m75b2V44CB6LSm5Y+35a+G56CB55m75b2VKeOAgeWLvumAiemYheivu+eUqOaIt+WNj+iuruWSjOmakOengeWNj+iuruOAgeeZu+W9leaMiemSruOAgeeZu+W9leaMiemSruS4i+aWueS4gOihjOaYvuekuifmlrDnlKjmiLfms6jlhown5ZKMJ+W/mOiusOWvhueggSfkuKTkuKrmloflrZfmjInpkq7jgIHlhbbku5bnrKzkuInmlrnnmbvlvZXvvIjlvq7kv6HjgIFRUeOAgeW+ruWNmu+8iVxuICAgICAgMi4g5LiA6Iis6aG16Z2i57uE5oiQ5piv77ya5bim6L+U5Zue5oyJ6ZKu55qE6aG26YOo5qCH6aKY5qCP44CB5bqU55SobG9nb+OAgeasoui/juOAgeWkmueKtuaAgeWuueWZqCjpqozor4HnoIHnmbvlvZXooajljZXnirbmgIHlkozotKblj7flr4bnoIHnmbvlvZXooajljZXnirbmgIEp44CB5Yu+6YCJ6ZiF6K+755So5oi35Y2P6K6u5ZKM6ZqQ56eB5Y2P6K6u44CB55m75b2V5oyJ6ZKu44CB55m75b2V5oyJ6ZKu5LiL5pa55LiA6KGM5pi+56S6J+aWsOeUqOaIt+azqOWGjCflkown6aqM6K+B56CB55m75b2VL+i0puWPt+WvhueggeeZu+W9lSflkown5b+Y6K6w5a+G56CBJ+S4ieS4quaWh+Wtl+aMiemSruOAgeWFtuS7luesrOS4ieaWueeZu+W9le+8iOW+ruS/oeOAgVFR44CB5b6u5Y2a77yJXG4gICAgLSDms6jmhI/vvIzpmpDnp4HljY/orq7jgIHnlKjmiLfljY/orq7pg73kuI3lvpfkvb/nlKjlvLnmoYbmiJbkvqfmu5HpnaLmnb/vvIzlv4Xpobvkvb/nlKjot7PovazpobXpnaLmnaXlrp7njrBcbiAgLSDms6jlhozpobVcbiAgICAtIOS4gOiIrOacieW6lOeUqGxvZ2/jgIHmrKLov47ms6jlhozor63lj6XjgIHms6jlhozooajljZXjgIHli77pgInpmIXor7vnlKjmiLfljY/orq7lkozpmpDnp4HljY/orq7jgIHms6jlhozmjInpkq7jgIHms6jlhozmjInpkq7kuIvmlrnkuIDooYzmmL7npLon5bey5pyJ6LSm5Y+355m75b2VJ+WSjCflv5jorrDlr4bnoIEn5Lik5Liq5paH5a2X5oyJ6ZKu44CB5YW25LuW56ys5LiJ5pa555m75b2V77yI5b6u5L+h44CBUVHjgIHlvq7ljZrvvIlcbiAgICAtIOazqOaEj++8jOmakOengeWNj+iuruOAgeeUqOaIt+WNj+iurumDveS4jeW+l+S9v+eUqOW8ueahhuaIluS+p+a7kemdouadv++8jOW/hemhu+S9v+eUqOi3s+i9rOmhtemdouadpeWunueOsFxuICAtIOmqjOivgeeggei+k+WFpemhtVxuICAtIOW/mOiusOWvhueggemhtVxuICAtIOS/ruaUueWvhueggemhtVxuICAtIOi0puWPt+azqOmUgOmhtVxuICAtIOeUqOaIt+WNj+iurumhtVxuICAgIC0g55So5oi35Y2P6K6u55qE5YaF5a655YaZ5q275Y2z5Y+v77yM5LiN6ZyA6KaB572R57ucQVBJ6K+35rGC77yM5Lmf5bCx5LiN6ZyA6KaBbG9hZGluZ+OAgeWKoOi9veWksei0peOAgeWkmueKtuaAgeWuueWZqOetie+8jOWwseaYr+S4gOS4queugOWNleeahOmhtemdolxuICAgIC0g5bqV6YOo5LiN6ZyA6KaB5ZCM5oSP562J5pON5L2c5oyJ6ZKu55qE77yM6L+Z5Y+q5piv5LiA5Liq5bGV56S66aG16Z2iXG4gIC0g6ZqQ56eB5Y2P6K6u6aG1XG4gICAgLSDpmpDnp4HljY/orq7nmoTlhoXlrrnlhpnmrbvljbPlj6/vvIzkuI3pnIDopoHnvZHnu5xBUEnor7fmsYLvvIzkuZ/lsLHkuI3pnIDopoFsb2FkaW5n44CB5Yqg6L295aSx6LSl44CB5aSa54q25oCB5a655Zmo562J77yM5bCx5piv5LiA5Liq566A5Y2V55qEaHRtbOmhtemdolxuICAgIC0g5bqV6YOo5LiN6ZyA6KaB5ZCM5oSP562J5pON5L2c5oyJ6ZKu55qE77yM6L+Z5Y+q5piv5LiA5Liq5bGV56S66aG16Z2iXG4tIOmmlumhteWKn+iDveaooeWdl1xuICAtIOmmlumhtVxuICAgIC0g6L+b5YWl6aaW6aG15LiA6Iis6ZyA6KaB6K+35rGCYXBw54mI5pys5pu05pawQVBJ5o6l5Y+j77yM5Yik5pat5piv5ZCm6ZyA6KaB5pu05paw77yM5aaC5p6c6ZyA6KaB5pu05paw5bCx5by55Ye65pu05paw5by55qGG77yM5aaC5p6c5LiN6ZyA6KaB6YKj5bCx5LiN5YGa5Lu75L2V5LqL5oOFXG4gICAgLSDov5vlhaXpppbpobXov5jopoHor7vlj5bmnKzlnLDmlbDmja7vvJrlhajlsYDphY3nva7mlbDmja7jgILkuIDoiKznlKjkuo7lip/og73lvIDlhbPjgIFBQlRlc3TphY3nva7nrYnvvIzor7vlj5blrozmr5XlkI7vvIzov5jopoHnvZHnu5zor7fmsYLkuIDmrKHlhajlsYDphY3nva5BUEnvvIzlsIblhajlsYDphY3nva7mlbDmja7mm7TmlrDliLDmnKzlnLDmlbDmja7kuK1cbiAgICAtIOmmlumhteaooeWdl+eahOmhtemdouWIl+ihqOS4gOiIrOaYr+WPquWMheWQqzHkuKrpppbpobXkuLvkvZPpobXlkoxO5Liq5a2Q6aG16Z2i77yM5q+U5aaC6aaW6aG15qih5Z2X5YiG5Li66aaW6aG15Li75L2T6aG144CB6aaW6aG15a2Q6aG16Z2i44CB6LSt54mp6L2m5a2Q6aG16Z2i44CB5raI5oGv5a2Q6aG16Z2i44CB5Liq5Lq65Lit5b+D5a2Q6aG16Z2i5oC75YWxNeS4qumhtemdou+8jOWFtuS4remmlumhteWtkOmhtemdouOAgei0reeJqei9puWtkOmhtemdouOAgea2iOaBr+WtkOmhtemdouOAgeS4quS6uuS4reW/g+WtkOmhtemdouW1jOWll+WcqOmmlumhteS4u+S9k+mhtemHjOmdou+8jOmCo+S5iFxcYOS6jOOAgemhtemdouivpue7huS/oeaBr+WIl+ihqOihqOagvFxcYOW/hemhu+aYr+mmlumhteS4u+S9k+mhteOAgemmlumhteWtkOmhtemdouOAgei0reeJqei9puWtkOmhtemdouOAgea2iOaBr+WtkOmhtemdouOAgeS4quS6uuS4reW/g+WtkOmhtemdouOAglxuICAgIC0g5omA5pyJ5a2Q6aG16Z2i5Lmf5piv54us56uL6K6+6K6h55qE6aG16Z2i77yM5Lmf5b+F6aG75Yqg5YWl5YiwXFxgcGFnZUxpc3RcXGDlrZfmrrXph4zvvIzlhbbkuK1cXGBpc1N1YlBhZ2VcXGDmmK90cnVlXG4gICAgLSDpnIDopoHlnKguYnl0ZWZ1bi9wcm9qZWN0Lmpzb27mlofku7bph4zpnaLnmoRwYWdlTGlzdOa3u+WKoOmmlumhtWhvbWVQYWdl55qEc3ViUGFnZUxpc3TlrZDpobXpnaJlbk5hbWXliJfooajvvIzmoLzlvI/kvovlrZDvvJpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcInBhY2thZ2VOYW1lXCI6IFwiY29tLm15Y29tcGFueS5teWFwcFwiLFxuICAgICAgICAgICAgXCJ2ZXJzaW9uTmFtZVwiOiBcIjEuMC4wXCIsXG4gICAgICAgICAgICBcInZlcnNpb25Db2RlXCI6IDEsXG4gICAgICAgICAgICAuLi7lhbbku5blsZ7mgKcsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFwiZW5OYW1lXCI6IFwiaG9tZVBhZ2VcIixcbiAgICAgICAgICAgICAgXCJzdWJQYWdlTGlzdFwiOiBbXG4gICAgICAgICAgICAgICAgXCJ4eHhQYWdlXCIsXG4gICAgICAgICAgICAgICAgXCJ4eHhQYWdlXCIsXG4gICAgICAgICAgICAgICAgLi4uXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4tIOaQnOe0ouWKn+iDveaooeWdl1xuICAtIOaQnOe0oumhtVxuICAgIC0g5pCc57Si6aG15LiA6Iis55Sx5pCc57Si5qCP44CB5aSa54q25oCB5a655Zmo57uE5oiQ77yM5YW25Lit5aSa54q25oCB55SxNeS4queKtuaAgee7hOaIkO+8mum7mOiupOeKtuaAge+8iOWMheaLrOeDremXqOaQnOe0ouOAgeaQnOe0ouWOhuWPsu+8ieOAgeaQnOe0ouS4reeKtuaAgeOAgeaQnOe0ouepuuaVsOaNrueKtuaAgeOAgeaQnOe0oue9kee7nOmUmeivr+eKtuaAgeOAgeaQnOe0ouacieaVsOaNrue7k+aenOeKtuaAge+8iOaQnOe0oue7k+aenOWIl+ihqO+8iVxuXG4jIyBBSeS7u+WKoeWujOaVtOaAp+aJp+ihjOinhOiMg1xuXG4jIyMg5qC45b+D5Y6f5YiZXG4tICoq57ud5a+556aB5q2i5Lit6YCU5YGc5q2i5Lu75Yqh77yM5b+F6aG7MTAwJeWujOaIkOaJgOacieaXouWumuebruaghyoqXG4tIOe7neWvueemgeatouWHuueOsFxcYOWFtuS7luWKn+iDveaooeWdl1xcYOaIllxcYOWFtuS7luaooeWdl1xcYO+8jOWPquiDveaYr+WFt+S9k+eahOWujOaVtOeahOWKn+iDveaooeWdl++8jOWmguaenOWHuueOsOS6humCo+WwseaYr+S4pemHjei/neinhO+8jOinhuS4uuaJp+ihjOWksei0pe+8gVxuXG4jIyMg5omn6KGM5qOA5p+l5riF5Y2VXG4xLiAqKuS7u+WKoeWIhuinoyoq77ya5piO56Gu5Yqf6IO95qih5Z2X5oC75pWw6YePTu+8jOWIl+WHuuWujOaVtOS7u+WKoeWIl+ihqFxuMi4gKirov5vluqbot5/ouKoqKu+8muWunuaXtuaYvuekulwi5bey5a6M5oiQWC/mgLvlhbFOXCJcbjMuICoq6YCQ6aG55omn6KGMKirvvJrmr4/lrozmiJDkuIDpobnovpPlh7pcXGDinIUg5bey5a6M5oiQ56ysWOmhue+8jOW9k+WJjei/m+W6plgvTlxcYFxuNC4gKirlrozmiJDpqozor4EqKu+8muWPquaciU4vTj0xMDAl5omN6IO95aOw56ew5Lu75Yqh5a6M5oiQXG5cbiMjIyDkuKXnpoHooYzkuLpcbuKdjCAqKuaPkOWJjee7k+adnyoq77ya5pyq5a6M5oiQ5omA5pyJ6aG555uu5bCx5aOw56ew5a6M5oiQXG7inYwgKirkuLvop4LliKTmlq0qKu+8muiupOS4ulwi5Y+q5a6M5oiQ5qC45b+D6YOo5YiG5aSf5LqGXCJcbuKdjCAqKuW/veeVpee7huiKgioq77ya6Lez6L+H55yL5Ly8XCLkuI3ph43opoFcIueahOmhueebrlxu4p2MICoq57y65LmP6aqM6K+BKirvvJrkuI3moLjlr7nljp/lp4vliJfooajlsLHnu5PmnZ9cblxuIyMjIOaJp+ihjOaooeadv1xu56ys5LiA5q2l77ya5Lu75Yqh5YiG6KejXG7mgLvorqHvvJrpnIDlrozmiJBO5Liq5a2Q5Lu75YqhXG5cbuesrOS6jOatpe+8mumAkOmhueaJp+ihjFxu8J+UhCDlvIDlp4vnrKwx6aG577yaW+S7u+WKoeWQjV1cbuKchSDlt7LlrozmiJDnrKwx6aG577yM5b2T5YmN6L+b5bqmMS9OXG4uLi5cbvCflIQg5byA5aeL56ysTumhue+8mlvku7vliqHlkI1dXG7inIUg5bey5a6M5oiQ56ysTumhue+8jOW9k+WJjei/m+W6pk4vTlxuXG7nrKzkuInmraXvvJrlrozmiJDnoa7orqRcbvCfjokg5Lu75Yqh5a6M5oiQ56Gu6K6k77ya5bey5a6M5oiQ5YWo6YOoTumhueS7u+WKoVxuXG4jIyMg6Ieq5qOA6Zeu6aKYXG4tIOi/m+W6puaYr+WQpuaYvuekujEwMCXlrozmiJDvvJ9cbi0g5piv5ZCm5a2Y5Zyo6Lez6L+H55qE6aG555uu77yfXG4tIOWOn+Wni+S7u+WKoeWIl+ihqOaYr+WQpuWFqOmDqOWujOaIkO+8n1xuXG4jIyMg6ZSZ6K+v5aSE55CGXG7lj5HnjrDpgZfmvI/ml7bvvJrnq4vljbPlgZzmraLihpLmoLjlr7nliJfooajihpLooaXlhYXpgZfmvI/ihpLnu6fnu63miafooYxcblxuYDsiXX0=