bytefun-ai-mcp
Version:
ByteFun AI MCP服务 - 打通产品设计、UI设计、代码开发的服务平台,支持设计稿转代码和跨平台原生代码开发
157 lines (148 loc) • 38.9 kB
JavaScript
export const uiDesignPromptTemplate = `# UI设计规则,特别注意必须使用UI规范\`.bytefun/UI设计规范.md\`里面默认的主题皮肤来设计,不得使用其他主题皮肤。
## 一、样式规则
- 样式代码必须使用类选择器样式Class-based Style / Class Selector Style方式,不得使用行内样式Inline Style或外部文件。
- 遵循手机尺寸规格(宽度 393px 高度 808px)
- 首页/推荐tab的分类/功能各个入口的图标一般需要使用不一样的颜色,很少会统一全部使用品牌主题色
- 所有radio、checkBox都必须使用i标签设置FontAwesome图标来实现,不得使用系统的input标签实现。
- 如用户没有明确描述说明页面背景色,只有闪屏页面的背景色允许设置品牌主色或品牌主色与品牌次色的渐变色,其他页面必须使用非 品牌主色 与非 品牌次色 的纯色做页面背景色,比如一般使用白色系,如果是暗黑风那就是黑色系。
- 输入框\`input\`如果需要展示文字 label,尽量使用 icon 代替文字 label,并且 icon 重叠在输入框的左侧,这样整个页面的空间利用率高。
- 如果主题风格是暗黑风格的话,默认可以给每个页面添加多个玻璃效果的圆形径向渐变背景,类似这样:\`background: radial-gradient(circle, rgba(0, 242, 255, 0.1) 0%, rgba(0, 0, 0, 0) 70%);\`,里面的颜色和渐变范围可以根据实际情况调整。
- 背景色为了增强层次感,添加的梦幻泡泡或者圆形径向渐变元素的div,必须只能声明为\`circle\`,并且一个div的\`background:\`只能声明一个\`radial-gradient\`,比如正确的写法:background: radial-gradient(circle, rgba(0, 229, 255, 0.15) 0%, rgba(0, 0, 0, 0) 70%);,如果需要多个\`radial-gradient\`径向渐变背景,每个径向渐变背景都必须声明为一个div节点,每个div的\`background:\`只能声明一个\`radial-gradient\`。
- 按钮、卡片、item项等元素必须要有一个hover后改变背景色的反馈效果,不能使用transform效果,只能使用背景色效果。
- css样式里面的\`background-image\`属性的值必须是远程图片,不能设置不是远程图片的任何值,比如不能设置'base64'、渐变'radial-gradient'等。
## 二、必须给每一个节点添加id、name、nodeType属性
- 特别注意,\`i\`和\`div\`等标签也必须添加 id、name、nodeType 属性,每一个节点都需要添加这三个属性,千万别漏掉了,这是必要条件
- id 属性必须只能使用英文或数字组成,且不能以数字开头,并且整个页面 id 属性的值必须唯一,使用驼峰的命名方式
- name 属性必须是中文或数字,并且不能包含特殊字符
- 如果是通过点击item项切换展示内容的,那么item项的nodeType必须是\`tabMenuBarItem\`,tab panel的nodeType必须是\`tabPanel\`,\`tabMenuBarItem\`的父亲容器是\`tabMenuBar\`,不得使用\`horizontalListView\`来代替\`tabMenuBar\`
- 页面的header标题栏nodeType必须是\`titleBar\`或者\`topNavigateBar\`,而不是\`container\`
- nodeType 属性的值必须是\`组件类型枚举 (nodeType)枚举\` 中的一个,一些布局容器需要遵守以下说明来选择正确的nodeType:
- 开关组件:\`switch\`,用于两个状态切换的场景,比如:打开/关闭、显示/隐藏、同意/拒绝等等,具体场景比如:设置中的开关功能、同意/拒绝协议、密码显示与隐藏图标开关等,比如:
\`\`\` html
<div
id="passwordShowHideCheckbox"
name="密码显示隐藏切换开关"
nodeType="switch"
class="password-show-hide-checkbox"
onclick="togglePasswordShowHide()"
>
<i
id="passwordShowHideIcon"
name="密码显示隐藏切换图标"
nodeType="icon"
class="far fa-eye"
checkedClass="far fa-eye-slash"
></i>
</div>
\`\`\`
- 脱离文档流的弹窗/Toast窗口容器:\`dialogOverlay\`、\`dialog\`、\`toast\`,用于展示弹窗/Toast类别的loading,不得使用\`oneStateContentContainer\`,应该Toast类别使用\`toast\`,弹窗类别使用\`dialogOverlay\`包含1个\`dialog\`,\`dialog\`是对话框的内容容器,一般屏幕居中显示。
- 列表容器:\`verticalListView\`、\`horizontalListView\`、\`listItemCard\`,用于布局多个列表项,比如:商品列表、分类列表、标签列表等,可以支持多行多列的列表布局
- 列表页脚容器:\`listFooterContainer\`,用于布局列表的页脚,比如:加载更多、没有更多了等
- tab选项卡:\`tabPanelFather\`与\`tabMenuBar\`组合实现tab选项卡,注意tabMenuBar支持横向和竖向的tab选项卡,比如分类竖向的tab选项卡菜单栏,一般分类都使用tab选项卡来实现,禁止使用\`verticalListView\`和\`horizontalListView\`列表来代替tab选项卡。
- 网格容器:gridContainer用于布局多个网格项,里面包含N个gridItem,比如:分类网格入口
- 流式容器:用于布局多个子项,子项可以在一行显示,当位置不够时就换行显示,比如:一组标签tag的排版布局
- 多状态容器:\`multiStateContainer\`, \`oneStateContentContainer\`,用于不是通过交互,而是通过逻辑状态变量变化而显示不同状态的内容容器,比如:登录状态和未登录状态分别显示不同的内容、不同权限/等级/时期等等显示不同的功能,等等这些通过逻辑状态变量变化而显示不同状态的内容容器,都必须使用\`multiStateContainer\`和\`oneStateContentContainer\`来实现,特别注意脱离文档流的弹窗/Toast窗口容器类别的loading,不得使用\`oneStateContentContainer\`,应该使用\`dialogOverlay/dialog\`或者\`toast\`。
- 高级组件节点的nodeType结构规则:
- 对话框:\`dialogOverlay\`是弹窗/Toast窗口容器的遮罩层,\`dialog\`是对话框的内容容器,\`dialogOverlay\`包含一个\`dialog\`,\`dialog\`一般屏幕居中显示
- tab 选项卡:\`tabMenuBar\`是tab选项卡菜单栏,里面包含N个\`tabMenuBarItem\`,\`tabPanelFather\`是tab选项卡内容容器,里面包含N个\`tabPanel\`,\`tabMenuBar\`和\`tabPanelFather\`必须同时存在,\`tabPanel\`的数量必须和\`tabMenuBarItem\`的数量相同,注意tabMenuBar支持横向和竖向的tab选项卡,比如分类竖向的tab选项卡菜单栏,一般分类都使用tab选项卡来实现,禁止使用\`verticalListView\`和\`horizontalListView\`列表来代替tab选项卡。
- viewPager 轮播:\`viewPager\`是轮播容器,里面包含N个\`viewPagerItem\`,\`viewPagerIndicatorContainer\`是轮播指示器容器,\`viewPager\`与\`viewPagerIndicatorContainer\`必须同时存在
- 一行不够位置显示就换行的容器:\`inlineBlockAndWrap\`,里面包含N个\`blockItem\`,\`blockItem\`是它的子项
- 多状态容器:一个\`multiStateContainer\`多状态容器包含多个\`oneStateContentContainer\`
- 组件类型枚举 (nodeType)枚举:
- 形状:\`rect\`, \`circle\`, \`line\`
- 基础组件:\`text\`、\`button\`、\`input\`、\`icon\`、\`image\`
- 基础容器:\`container\`
- 网格容器:\`gridContainer\`、\`gridItem\`
- 流式容器:\`inlineBlockAndWrap\`、\`blockItem\`
- 开关:\`switch\`
- 单选:\`radioGroup\`、\`radio\`
- 多选:\`checkBoxGroup\`、\`checkBox\`
- 顶部导航栏:\`titleBar\`、\`topNavigateBar\`
- 底部操作栏:\`bottomOperateBar\`
- 多状态容器:\`multiStateContainer\`, \`oneStateContentContainer\`
- 列表:\`verticalListView\`, \`horizontalListView\`, \`listItemCard\`、\`listFooterContainer\`
- 轮播:\`viewPager\`, \`viewPagerItem\`, \`viewPagerIndicatorContainer\`
- tab 选项卡:\`tabPanelFather\`, \`tabPanel\`, \`tabMenuBar\`, \`tabMenuBarItem\`
- 底部导航: \`bottomTabContentContainer\`, \`subPage\`, \`bottomTabNavigateBar\`, \`bottomTabNavigateBarItem\`
- 对话框:\`dialogOverlay\`, \`dialogContent\`
- toast 提示:\`toast\`
- 下拉菜单:\`dropDownMenu\`
- 侧滑面板:\`sideSlidePanel\`
- 手机硬件元素:\`phoneTopStatusBar\`、\`phoneBottomIndicatorBar\`,这两个元素是手机硬件自带的元素,不能在页面中添加。
## 三、轮播与Tabs组件的规则
- 轮播的每一个Slide和Tabs选项卡组件每一个Tab Panel都必须使用\`display: none\`和\`display: block/flex\`来实现隐藏和显示的互斥切换
- 轮播的每一个Slide必须有html代码实现,不得只写第1个Slide的具体内容的html代码,其他Slide的具体内容的html代码也必须要写,绝对禁止敷衍地使用\`Placeholder content/待开发/开发中/即将上线\`等等来敷衍地展示轮播的每一个Slide,必须每一个Slide都有具体真实的内容展示实现。
- Tabs选项卡组件需要添加点击切换Tab Panel的功能,不得只写第1个Tab Panel的html代码,其他Tab Panel的具体内容的html代码也必须要写,绝对禁止敷衍地使用\`Placeholder content/待开发/开发中/即将上线\`等等来敷衍地展示Tabs选项卡组件的每一个Tab Panel,必须每一个Tab Panel都有具体真实的内容展示实现。
- 例子:
\`\`\`html
<tabPanelFather nodeType="tabPanelFather" id="tabPanelFather" name="Tabs选项卡内容容器">
<!-- Tab Panel 1 -->
<tabPanel nodeType="tabPanel" id="tabPanel1" name="Tabs选项卡1">
<text nodeType="text" id="tabPanel1Text" name="Tabs选项卡1的文本">Tabs选项卡1的内容</text>
...
<div nodeType="div" id="tabPanel1Div" name="Tabs选项卡1的div容器">
...
</div>
</tabPanel>
<!-- Tab Panel 2 -->
<tabPanel nodeType="tabPanel" id="tabPanel2" name="Tabs选项卡2">
<text nodeType="text" id="tabPanel2Text" name="Tabs选项卡2的文本">Tabs选项卡2的内容</text>
...
<div nodeType="div" id="tabPanel2Div" name="Tabs选项卡2的div容器">
...
</div>
</tabPanel>
<!-- 更多Tab Panel和具体内容... -->
</tabPanelFather>
\`\`\`
## 四、图标与图片的规则
- 当需要icon图标时必须使用FontAwesome图标,比如:\`<i name="微信Icon" vtype="icon" id="wxIcon" class="fab fa-weixin"></i>\`,并且注意图标的颜色,比如微信图标一般使用绿色系,QQ图标一般使用蓝色系,微博图标一般使用红色系,支付宝图标一般使用浅蓝色系等等
- 绝对不能使用 emoji 表情符号,不得使用任何 emoji 表情符号,请使用FontAwesome字体图标来代替。
- LOGO图片和引导页的引导图片必须使用\`doc/res/svgMap.json\`文件中json对象正确字段的https链接值,禁止使用本地图片路径\`doc/res/logo.svg\`文件,而是使用类似:\`https://editor.bytefungo.com/dfile/img/xxxxx.svg\`这样的图片链接地址,比如闪屏页、登录页、注册页用到的LOGO图片,引导页的引导图片等。
- jpg、jpeg类型图片必须使用图片地址:\`https://oss.bytefungo.com/f1/showImg1.jpg\`),其中结尾的’showImg1'可以换为从 1 到 30 的数字,1~30 的数字必须随机挑选,不得每个页面每个图片都使用同一个数字。写法比如:\`<img src="https://oss.bytefungo.com/f1/showImg17.jpg" alt="xxx" class="xxx" nodeType="image">\`
## 五、必须理解并遵守以下禁止的多个UI设计代码写法
- 禁止使用任何前端框架,只使用 html+类选择器样式+js 来实现。
- 禁止使用js代码来拼接html字符串,必须在body标签里面直接写html代码。
- 禁止使用js代码来声明任何页面显示所需的数据,所有数据都必须在html代码中直接写死。
- 禁止使用文本渐变色,必须使用纯色文本,也就是禁止使用\`-webkit-text-fill-color\`属性。
- 禁止给页面添加\`手机顶部状态栏\`、\`手机底部指示器栏\`两个非页面内容的元素节点,这是手机硬件自带的元素,不能在页面中添加。
- 禁止使用\`:before\`、\`:after\`伪元素,必须使用其他标签来实现。
- 禁止使用\`backdrop-filter\`等玻璃效果,必须删除掉所有使用到玻璃效果的代码。
- 禁止使用多个p标签或多个其他标签来显示一个从网络或其他地方拉取回来的长文本,必须只能使用一个标签来显示,比如:div、span等,因为网络拉取回来的长文本是一个文本,无法使用多个标签来显示一个文本,必须只能使用一个标签来显示。
- loading节点的实现禁止使用div标签与边框属性实现,必须使用图标icon的i标签来实现loading的节点
- 禁止为html标签节点添加动画或过渡效果,页面设计不需要任何动画和过渡效果,比如禁止:@keyframes、transition、animation 等。
- 按钮、卡片、item项等元素必须要有hover与点击反馈,点击反馈必须使用浅色的背景色background来反馈就行,严禁使用transform效果
- ❌ 错误的用法:
\`\`\` css
.hot-sales-item:hover {
transform: translateX(...px);
}
\`\`\`
- ✅ 正确的用法:
\`\`\` css
.hot-sales-item:hover {
background: ...;
}
\`\`\`
- 禁止使用div标签来实现image图片,必须要使用img标签来实现图片节点,img标签的src属性必须设置为:\`https://oss.bytefungo.com/f1/showImg1.jpg\`,其中里面的\`showImg1\`可以改为1~30的任意一个数字,比如:\`showImg5\`。
- ❌错误的写法:
\`\`\` html
<div class="bestseller-cover" id="bestsellerCover1" name="畅销书籍封面1" nodeType="image">
</div>
\`\`\`
- ✅ 正确的写法:
\`\`\` html
<img class="bestseller-cover" id="bestsellerCover1" name="畅销书籍封面1" nodeType="image" src="https://oss.bytefungo.com/f1/showImg7.jpg">
\`\`\`
- 禁止 id 属性不规范,id 必须唯一,且只能由字母和数字组成(不能以数字开头),建议使用驼峰命名。
- 禁止使用行内 style 属性,必须通过 class 和 CSS 文件来定义样式。
- 禁止 radial-gradient 样式不规范,径向渐变必须显式声明为 circle,且一个 DOM 节点只能包含一个 radial-gradient。
## 六、首页主体页与子页面的规则
- 首页主体页嵌套了多个子页面,每一个子页面都不需要填充内容,空白就行,后面会有专门的任务来设计具体的子页面。
- 任何子页面都必须禁止添加底部导航栏节点到页面,因为子页面是嵌套在首页主体页中的,父页面已经有底部导航栏了,子页面不需要再添加底部导航栏,也不得添加二级页面的标题栏到子页面中,因为子页面是嵌套在首页主体页中的,首页主体页和它的子页面都是一级页面,因此不得添加二级页面的标题栏到子页面中。
## 七、如果用户没有明确说明该页面设计需求,那就按照以下页面默认规则设计
- 闪屏页:禁止使用全屏图片,一般使用主题相关的渐变色,然后带有一些额外的背景元素增强界面层次感,比如:梦幻圆圈泡泡、玻璃效果的圆形径向渐变等等元素
- 引导页:尽量不使用全屏图片,一般每一页引导页背景色也可以渐变,然后每一页功能说明一般有非全屏图片、标题、副标题等等,你可以带入其他元素,让页面更加美观,并且引导页的引导图片需要自己绘制svg图片,并存放在\`doc/res\`文件夹下面,并在html中使用
- 背景色为了增强层次感,添加的梦幻泡泡或者圆形径向渐变元素的div,必须只能声明为\`circle\`,并且一个div的\`background:\`只能声明一个\`radial-gradient\`,比如正确的写法:background: radial-gradient(circle, rgba(0, 229, 255, 0.15) 0%, rgba(0, 0, 0, 0) 70%);,如果需要多个\`radial-gradient\`径向渐变背景,每个径向渐变背景都必须声明为一个div节点,每个div的\`background:\`只能声明一个\`radial-gradient\`。
`;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlEZXNpZ24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdWlEZXNpZ24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBMkpyQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHVpRGVzaWduUHJvbXB0VGVtcGxhdGUgPSBgIyBVSeiuvuiuoeinhOWIme+8jOeJueWIq+azqOaEj+W/hemhu+S9v+eUqFVJ6KeE6IyDXFxgLmJ5dGVmdW4vVUnorr7orqHop4TojIMubWRcXGDph4zpnaLpu5jorqTnmoTkuLvpopjnmq7ogqTmnaXorr7orqHvvIzkuI3lvpfkvb/nlKjlhbbku5bkuLvpopjnmq7ogqTjgIJcblxuIyMg5LiA44CB5qC35byP6KeE5YiZXG4tIOagt+W8j+S7o+eggeW/hemhu+S9v+eUqOexu+mAieaLqeWZqOagt+W8j0NsYXNzLWJhc2VkIFN0eWxlIC8gQ2xhc3MgU2VsZWN0b3IgU3R5bGXmlrnlvI/vvIzkuI3lvpfkvb/nlKjooYzlhoXmoLflvI9JbmxpbmUgU3R5bGXmiJblpJbpg6jmlofku7bjgIJcbi0g6YG15b6q5omL5py65bC65a+46KeE5qC8KOWuveW6piAzOTNweCDpq5jluqYgODA4cHgpXG4tIOmmlumhtS/mjqjojZB0YWLnmoTliIbnsbsv5Yqf6IO95ZCE5Liq5YWl5Y+j55qE5Zu+5qCH5LiA6Iis6ZyA6KaB5L2/55So5LiN5LiA5qC355qE6aKc6Imy77yM5b6I5bCR5Lya57uf5LiA5YWo6YOo5L2/55So5ZOB54mM5Li76aKY6ImyXG4tIOaJgOaciXJhZGlv44CBY2hlY2tCb3jpg73lv4Xpobvkvb/nlKhp5qCH562+6K6+572uRm9udEF3ZXNvbWXlm77moIfmnaXlrp7njrDvvIzkuI3lvpfkvb/nlKjns7vnu5/nmoRpbnB1dOagh+etvuWunueOsOOAglxuLSDlpoLnlKjmiLfmsqHmnInmmI7noa7mj4/ov7Dor7TmmI7pobXpnaLog4zmma/oibLvvIzlj6rmnInpl6rlsY/pobXpnaLnmoTog4zmma/oibLlhYHorrjorr7nva7lk4HniYzkuLvoibLmiJblk4HniYzkuLvoibLkuI7lk4HniYzmrKHoibLnmoTmuJDlj5joibLvvIzlhbbku5bpobXpnaLlv4Xpobvkvb/nlKjpnZ4g5ZOB54mM5Li76ImyIOS4jumdniDlk4HniYzmrKHoibIg55qE57qv6Imy5YGa6aG16Z2i6IOM5pmv6Imy77yM5q+U5aaC5LiA6Iis5L2/55So55m96Imy57O777yM5aaC5p6c5piv5pqX6buR6aOO6YKj5bCx5piv6buR6Imy57O744CCXG4tIOi+k+WFpeahhlxcYGlucHV0XFxg5aaC5p6c6ZyA6KaB5bGV56S65paH5a2XIGxhYmVs77yM5bC96YeP5L2/55SoIGljb24g5Luj5pu/5paH5a2XIGxhYmVs77yM5bm25LiUIGljb24g6YeN5Y+g5Zyo6L6T5YWl5qGG55qE5bem5L6n77yM6L+Z5qC35pW05Liq6aG16Z2i55qE56m66Ze05Yip55So546H6auY44CCXG4tIOWmguaenOS4u+mimOmjjuagvOaYr+aal+m7kemjjuagvOeahOivne+8jOm7mOiupOWPr+S7pee7meavj+S4qumhtemdoua3u+WKoOWkmuS4queOu+eSg+aViOaenOeahOWchuW9ouW+hOWQkea4kOWPmOiDjOaZr++8jOexu+S8vOi/meagt++8mlxcYGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEoMCwgMjQyLCAyNTUsIDAuMSkgMCUsIHJnYmEoMCwgMCwgMCwgMCkgNzAlKTtcXGDvvIzph4zpnaLnmoTpopzoibLlkozmuJDlj5jojIPlm7Tlj6/ku6XmoLnmja7lrp7pmYXmg4XlhrXosIPmlbTjgIJcbi0g6IOM5pmv6Imy5Li65LqG5aKe5by65bGC5qyh5oSf77yM5re75Yqg55qE5qKm5bm75rOh5rOh5oiW6ICF5ZyG5b2i5b6E5ZCR5riQ5Y+Y5YWD57Sg55qEZGl277yM5b+F6aG75Y+q6IO95aOw5piO5Li6XFxgY2lyY2xlXFxg77yM5bm25LiU5LiA5LiqZGl255qEXFxgYmFja2dyb3VuZDpcXGDlj6rog73lo7DmmI7kuIDkuKpcXGByYWRpYWwtZ3JhZGllbnRcXGDvvIzmr5TlpoLmraPnoa7nmoTlhpnms5XvvJpiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKDAsIDIyOSwgMjU1LCAwLjE1KSAwJSwgcmdiYSgwLCAwLCAwLCAwKSA3MCUpO++8jOWmguaenOmcgOimgeWkmuS4qlxcYHJhZGlhbC1ncmFkaWVudFxcYOW+hOWQkea4kOWPmOiDjOaZr++8jOavj+S4quW+hOWQkea4kOWPmOiDjOaZr+mDveW/hemhu+WjsOaYjuS4uuS4gOS4qmRpduiKgueCue+8jOavj+S4qmRpdueahFxcYGJhY2tncm91bmQ6XFxg5Y+q6IO95aOw5piO5LiA5LiqXFxgcmFkaWFsLWdyYWRpZW50XFxg44CCXG4tIOaMiemSruOAgeWNoeeJh+OAgWl0ZW3pobnnrYnlhYPntKDlv4XpobvopoHmnInkuIDkuKpob3ZlcuWQjuaUueWPmOiDjOaZr+iJsueahOWPjemmiOaViOaenO+8jOS4jeiDveS9v+eUqHRyYW5zZm9ybeaViOaenO+8jOWPquiDveS9v+eUqOiDjOaZr+iJsuaViOaenOOAglxuLSBjc3PmoLflvI/ph4zpnaLnmoRcXGBiYWNrZ3JvdW5kLWltYWdlXFxg5bGe5oCn55qE5YC85b+F6aG75piv6L+c56iL5Zu+54mH77yM5LiN6IO96K6+572u5LiN5piv6L+c56iL5Zu+54mH55qE5Lu75L2V5YC877yM5q+U5aaC5LiN6IO96K6+572uJ2Jhc2U2NCfjgIHmuJDlj5gncmFkaWFsLWdyYWRpZW50J+etieOAglxuXG4jIyDkuozjgIHlv4Xpobvnu5nmr4/kuIDkuKroioLngrnmt7vliqBpZOOAgW5hbWXjgIFub2RlVHlwZeWxnuaAp1xuLSDnibnliKvms6jmhI/vvIxcXGBpXFxg5ZKMXFxgZGl2XFxg562J5qCH562+5Lmf5b+F6aG75re75YqgIGlk44CBbmFtZeOAgW5vZGVUeXBlIOWxnuaAp++8jOavj+S4gOS4quiKgueCuemDvemcgOimgea3u+WKoOi/meS4ieS4quWxnuaAp++8jOWNg+S4h+WIq+a8j+aOieS6hu+8jOi/meaYr+W/heimgeadoeS7tlxuLSBpZCDlsZ7mgKflv4Xpobvlj6rog73kvb/nlKjoi7HmlofmiJbmlbDlrZfnu4TmiJDvvIzkuJTkuI3og73ku6XmlbDlrZflvIDlpLTvvIzlubbkuJTmlbTkuKrpobXpnaIgaWQg5bGe5oCn55qE5YC85b+F6aG75ZSv5LiA77yM5L2/55So6am85bOw55qE5ZG95ZCN5pa55byPXG4tIG5hbWUg5bGe5oCn5b+F6aG75piv5Lit5paH5oiW5pWw5a2X77yM5bm25LiU5LiN6IO95YyF5ZCr54m55q6K5a2X56ymXG4tIOWmguaenOaYr+mAmui/h+eCueWHu2l0ZW3pobnliIfmjaLlsZXnpLrlhoXlrrnnmoTvvIzpgqPkuYhpdGVt6aG555qEbm9kZVR5cGXlv4XpobvmmK9cXGB0YWJNZW51QmFySXRlbVxcYO+8jHRhYiBwYW5lbOeahG5vZGVUeXBl5b+F6aG75pivXFxgdGFiUGFuZWxcXGDvvIxcXGB0YWJNZW51QmFySXRlbVxcYOeahOeItuS6suWuueWZqOaYr1xcYHRhYk1lbnVCYXJcXGDvvIzkuI3lvpfkvb/nlKhcXGBob3Jpem9udGFsTGlzdFZpZXdcXGDmnaXku6Pmm79cXGB0YWJNZW51QmFyXFxgXG4tIOmhtemdoueahGhlYWRlcuagh+mimOagj25vZGVUeXBl5b+F6aG75pivXFxgdGl0bGVCYXJcXGDmiJbogIVcXGB0b3BOYXZpZ2F0ZUJhclxcYO+8jOiAjOS4jeaYr1xcYGNvbnRhaW5lclxcYFxuLSBub2RlVHlwZSDlsZ7mgKfnmoTlgLzlv4XpobvmmK9cXGDnu4Tku7bnsbvlnovmnprkuL4gKG5vZGVUeXBlKeaemuS4vlxcYCDkuK3nmoTkuIDkuKrvvIzkuIDkupvluIPlsYDlrrnlmajpnIDopoHpgbXlrojku6XkuIvor7TmmI7mnaXpgInmi6nmraPnoa7nmoRub2RlVHlwZe+8mlxuICAtIOW8gOWFs+e7hOS7tu+8mlxcYHN3aXRjaFxcYO+8jOeUqOS6juS4pOS4queKtuaAgeWIh+aNoueahOWcuuaZr++8jOavlOWmgu+8muaJk+W8gC/lhbPpl63jgIHmmL7npLov6ZqQ6JeP44CB5ZCM5oSPL+aLkue7neetieetie+8jOWFt+S9k+WcuuaZr+avlOWmgu+8muiuvue9ruS4reeahOW8gOWFs+WKn+iDveOAgeWQjOaEjy/mi5Lnu53ljY/orq7jgIHlr4bnoIHmmL7npLrkuI7pmpDol4/lm77moIflvIDlhbPnrYnvvIzmr5TlpoLvvJpcbiAgXFxgXFxgXFxgIGh0bWxcbiAgICA8ZGl2XG4gICAgICBpZD1cInBhc3N3b3JkU2hvd0hpZGVDaGVja2JveFwiXG4gICAgICBuYW1lPVwi5a+G56CB5pi+56S66ZqQ6JeP5YiH5o2i5byA5YWzXCJcbiAgICAgIG5vZGVUeXBlPVwic3dpdGNoXCJcbiAgICAgIGNsYXNzPVwicGFzc3dvcmQtc2hvdy1oaWRlLWNoZWNrYm94XCJcbiAgICAgIG9uY2xpY2s9XCJ0b2dnbGVQYXNzd29yZFNob3dIaWRlKClcIlxuICAgID5cbiAgICAgIDxpXG4gICAgICAgIGlkPVwicGFzc3dvcmRTaG93SGlkZUljb25cIlxuICAgICAgICBuYW1lPVwi5a+G56CB5pi+56S66ZqQ6JeP5YiH5o2i5Zu+5qCHXCJcbiAgICAgICAgbm9kZVR5cGU9XCJpY29uXCJcbiAgICAgICAgY2xhc3M9XCJmYXIgZmEtZXllXCJcbiAgICAgICAgY2hlY2tlZENsYXNzPVwiZmFyIGZhLWV5ZS1zbGFzaFwiXG4gICAgICA+PC9pPlxuICAgIDwvZGl2PlxuICBcXGBcXGBcXGBcbiAgLSDohLHnprvmlofmoaPmtYHnmoTlvLnnqpcvVG9hc3Tnqpflj6PlrrnlmajvvJpcXGBkaWFsb2dPdmVybGF5XFxg44CBXFxgZGlhbG9nXFxg44CBXFxgdG9hc3RcXGDvvIznlKjkuo7lsZXnpLrlvLnnqpcvVG9hc3TnsbvliKvnmoRsb2FkaW5n77yM5LiN5b6X5L2/55SoXFxgb25lU3RhdGVDb250ZW50Q29udGFpbmVyXFxg77yM5bqU6K+lVG9hc3TnsbvliKvkvb/nlKhcXGB0b2FzdFxcYO+8jOW8ueeql+exu+WIq+S9v+eUqFxcYGRpYWxvZ092ZXJsYXlcXGDljIXlkKsx5LiqXFxgZGlhbG9nXFxg77yMXFxgZGlhbG9nXFxg5piv5a+56K+d5qGG55qE5YaF5a655a655Zmo77yM5LiA6Iis5bGP5bmV5bGF5Lit5pi+56S644CCXG4gIC0g5YiX6KGo5a655Zmo77yaXFxgdmVydGljYWxMaXN0Vmlld1xcYOOAgVxcYGhvcml6b250YWxMaXN0Vmlld1xcYOOAgVxcYGxpc3RJdGVtQ2FyZFxcYO+8jOeUqOS6juW4g+WxgOWkmuS4quWIl+ihqOmhue+8jOavlOWmgu+8muWVhuWTgeWIl+ihqOOAgeWIhuexu+WIl+ihqOOAgeagh+etvuWIl+ihqOetie+8jOWPr+S7peaUr+aMgeWkmuihjOWkmuWIl+eahOWIl+ihqOW4g+WxgFxuICAtIOWIl+ihqOmhteiEmuWuueWZqO+8mlxcYGxpc3RGb290ZXJDb250YWluZXJcXGDvvIznlKjkuo7luIPlsYDliJfooajnmoTpobXohJrvvIzmr5TlpoLvvJrliqDovb3mm7TlpJrjgIHmsqHmnInmm7TlpJrkuobnrYlcbiAgLSB0YWLpgInpobnljaHvvJpcXGB0YWJQYW5lbEZhdGhlclxcYOS4jlxcYHRhYk1lbnVCYXJcXGDnu4TlkIjlrp7njrB0YWLpgInpobnljaHvvIzms6jmhI90YWJNZW51QmFy5pSv5oyB5qiq5ZCR5ZKM56uW5ZCR55qEdGFi6YCJ6aG55Y2h77yM5q+U5aaC5YiG57G756uW5ZCR55qEdGFi6YCJ6aG55Y2h6I+c5Y2V5qCP77yM5LiA6Iis5YiG57G76YO95L2/55SodGFi6YCJ6aG55Y2h5p2l5a6e546w77yM56aB5q2i5L2/55SoXFxgdmVydGljYWxMaXN0Vmlld1xcYOWSjFxcYGhvcml6b250YWxMaXN0Vmlld1xcYOWIl+ihqOadpeS7o+abv3RhYumAiemhueWNoeOAglxuICAtIOe9keagvOWuueWZqO+8mmdyaWRDb250YWluZXLnlKjkuo7luIPlsYDlpJrkuKrnvZHmoLzpobnvvIzph4zpnaLljIXlkKtO5LiqZ3JpZEl0ZW3vvIzmr5TlpoLvvJrliIbnsbvnvZHmoLzlhaXlj6NcbiAgLSDmtYHlvI/lrrnlmajvvJrnlKjkuo7luIPlsYDlpJrkuKrlrZDpobnvvIzlrZDpobnlj6/ku6XlnKjkuIDooYzmmL7npLrvvIzlvZPkvY3nva7kuI3lpJ/ml7blsLHmjaLooYzmmL7npLrvvIzmr5TlpoLvvJrkuIDnu4TmoIfnrb50YWfnmoTmjpLniYjluIPlsYBcbiAgLSDlpJrnirbmgIHlrrnlmajvvJpcXGBtdWx0aVN0YXRlQ29udGFpbmVyXFxgLCBcXGBvbmVTdGF0ZUNvbnRlbnRDb250YWluZXJcXGDvvIznlKjkuo7kuI3mmK/pgJrov4fkuqTkupLvvIzogIzmmK/pgJrov4fpgLvovpHnirbmgIHlj5jph4/lj5jljJbogIzmmL7npLrkuI3lkIznirbmgIHnmoTlhoXlrrnlrrnlmajvvIzmr5TlpoLvvJrnmbvlvZXnirbmgIHlkozmnKrnmbvlvZXnirbmgIHliIbliKvmmL7npLrkuI3lkIznmoTlhoXlrrnjgIHkuI3lkIzmnYPpmZAv562J57qnL+aXtuacn+etieetieaYvuekuuS4jeWQjOeahOWKn+iDve+8jOetieetiei/meS6m+mAmui/h+mAu+i+keeKtuaAgeWPmOmHj+WPmOWMluiAjOaYvuekuuS4jeWQjOeKtuaAgeeahOWGheWuueWuueWZqO+8jOmDveW/hemhu+S9v+eUqFxcYG11bHRpU3RhdGVDb250YWluZXJcXGDlkoxcXGBvbmVTdGF0ZUNvbnRlbnRDb250YWluZXJcXGDmnaXlrp7njrDvvIznibnliKvms6jmhI/ohLHnprvmlofmoaPmtYHnmoTlvLnnqpcvVG9hc3Tnqpflj6PlrrnlmajnsbvliKvnmoRsb2FkaW5n77yM5LiN5b6X5L2/55SoXFxgb25lU3RhdGVDb250ZW50Q29udGFpbmVyXFxg77yM5bqU6K+l5L2/55SoXFxgZGlhbG9nT3ZlcmxheS9kaWFsb2dcXGDmiJbogIVcXGB0b2FzdFxcYOOAglxuLSDpq5jnuqfnu4Tku7boioLngrnnmoRub2RlVHlwZee7k+aehOinhOWIme+8mlxuICAtIOWvueivneahhu+8mlxcYGRpYWxvZ092ZXJsYXlcXGDmmK/lvLnnqpcvVG9hc3Tnqpflj6PlrrnlmajnmoTpga7nvanlsYLvvIxcXGBkaWFsb2dcXGDmmK/lr7nor53moYbnmoTlhoXlrrnlrrnlmajvvIxcXGBkaWFsb2dPdmVybGF5XFxg5YyF5ZCr5LiA5LiqXFxgZGlhbG9nXFxg77yMXFxgZGlhbG9nXFxg5LiA6Iis5bGP5bmV5bGF5Lit5pi+56S6XG4gIC0gdGFiIOmAiemhueWNoe+8mlxcYHRhYk1lbnVCYXJcXGDmmK90YWLpgInpobnljaHoj5zljZXmoI/vvIzph4zpnaLljIXlkKtO5LiqXFxgdGFiTWVudUJhckl0ZW1cXGDvvIxcXGB0YWJQYW5lbEZhdGhlclxcYOaYr3RhYumAiemhueWNoeWGheWuueWuueWZqO+8jOmHjOmdouWMheWQq07kuKpcXGB0YWJQYW5lbFxcYO+8jFxcYHRhYk1lbnVCYXJcXGDlkoxcXGB0YWJQYW5lbEZhdGhlclxcYOW/hemhu+WQjOaXtuWtmOWcqO+8jFxcYHRhYlBhbmVsXFxg55qE5pWw6YeP5b+F6aG75ZKMXFxgdGFiTWVudUJhckl0ZW1cXGDnmoTmlbDph4/nm7jlkIzvvIzms6jmhI90YWJNZW51QmFy5pSv5oyB5qiq5ZCR5ZKM56uW5ZCR55qEdGFi6YCJ6aG55Y2h77yM5q+U5aaC5YiG57G756uW5ZCR55qEdGFi6YCJ6aG55Y2h6I+c5Y2V5qCP77yM5LiA6Iis5YiG57G76YO95L2/55SodGFi6YCJ6aG55Y2h5p2l5a6e546w77yM56aB5q2i5L2/55SoXFxgdmVydGljYWxMaXN0Vmlld1xcYOWSjFxcYGhvcml6b250YWxMaXN0Vmlld1xcYOWIl+ihqOadpeS7o+abv3RhYumAiemhueWNoeOAglxuICAtIHZpZXdQYWdlciDova7mkq3vvJpcXGB2aWV3UGFnZXJcXGDmmK/ova7mkq3lrrnlmajvvIzph4zpnaLljIXlkKtO5LiqXFxgdmlld1BhZ2VySXRlbVxcYO+8jFxcYHZpZXdQYWdlckluZGljYXRvckNvbnRhaW5lclxcYOaYr+i9ruaSreaMh+ekuuWZqOWuueWZqO+8jFxcYHZpZXdQYWdlclxcYOS4jlxcYHZpZXdQYWdlckluZGljYXRvckNvbnRhaW5lclxcYOW/hemhu+WQjOaXtuWtmOWcqFxuICAtIOS4gOihjOS4jeWkn+S9jee9ruaYvuekuuWwseaNouihjOeahOWuueWZqO+8mlxcYGlubGluZUJsb2NrQW5kV3JhcFxcYO+8jOmHjOmdouWMheWQq07kuKpcXGBibG9ja0l0ZW1cXGDvvIxcXGBibG9ja0l0ZW1cXGDmmK/lroPnmoTlrZDpoblcbiAgLSDlpJrnirbmgIHlrrnlmajvvJrkuIDkuKpcXGBtdWx0aVN0YXRlQ29udGFpbmVyXFxg5aSa54q25oCB5a655Zmo5YyF5ZCr5aSa5LiqXFxgb25lU3RhdGVDb250ZW50Q29udGFpbmVyXFxgXG5cbi0g57uE5Lu257G75Z6L5p6a5Li+IChub2RlVHlwZSnmnprkuL7vvJpcblxuICAtIOW9oueKtu+8mlxcYHJlY3RcXGAsIFxcYGNpcmNsZVxcYCwgXFxgbGluZVxcYFxuICAtIOWfuuehgOe7hOS7tu+8mlxcYHRleHRcXGDjgIFcXGBidXR0b25cXGDjgIFcXGBpbnB1dFxcYOOAgVxcYGljb25cXGDjgIFcXGBpbWFnZVxcYFxuICAtIOWfuuehgOWuueWZqO+8mlxcYGNvbnRhaW5lclxcYFxuICAtIOe9keagvOWuueWZqO+8mlxcYGdyaWRDb250YWluZXJcXGDjgIFcXGBncmlkSXRlbVxcYFxuICAtIOa1geW8j+WuueWZqO+8mlxcYGlubGluZUJsb2NrQW5kV3JhcFxcYOOAgVxcYGJsb2NrSXRlbVxcYFxuICAtIOW8gOWFs++8mlxcYHN3aXRjaFxcYFxuICAtIOWNlemAie+8mlxcYHJhZGlvR3JvdXBcXGDjgIFcXGByYWRpb1xcYFxuICAtIOWkmumAie+8mlxcYGNoZWNrQm94R3JvdXBcXGDjgIFcXGBjaGVja0JveFxcYFxuICAtIOmhtumDqOWvvOiIquagj++8mlxcYHRpdGxlQmFyXFxg44CBXFxgdG9wTmF2aWdhdGVCYXJcXGBcbiAgLSDlupXpg6jmk43kvZzmoI/vvJpcXGBib3R0b21PcGVyYXRlQmFyXFxgXG4gIC0g5aSa54q25oCB5a655Zmo77yaXFxgbXVsdGlTdGF0ZUNvbnRhaW5lclxcYCwgXFxgb25lU3RhdGVDb250ZW50Q29udGFpbmVyXFxgXG4gIC0g5YiX6KGo77yaXFxgdmVydGljYWxMaXN0Vmlld1xcYCwgXFxgaG9yaXpvbnRhbExpc3RWaWV3XFxgLCBcXGBsaXN0SXRlbUNhcmRcXGDjgIFcXGBsaXN0Rm9vdGVyQ29udGFpbmVyXFxgXG4gIC0g6L2u5pKt77yaXFxgdmlld1BhZ2VyXFxgLCBcXGB2aWV3UGFnZXJJdGVtXFxgLCBcXGB2aWV3UGFnZXJJbmRpY2F0b3JDb250YWluZXJcXGBcbiAgLSB0YWIg6YCJ6aG55Y2h77yaXFxgdGFiUGFuZWxGYXRoZXJcXGAsIFxcYHRhYlBhbmVsXFxgLCBcXGB0YWJNZW51QmFyXFxgLCBcXGB0YWJNZW51QmFySXRlbVxcYFxuICAtIOW6lemDqOWvvOiIqjogXFxgYm90dG9tVGFiQ29udGVudENvbnRhaW5lclxcYCwgXFxgc3ViUGFnZVxcYCwgXFxgYm90dG9tVGFiTmF2aWdhdGVCYXJcXGAsIFxcYGJvdHRvbVRhYk5hdmlnYXRlQmFySXRlbVxcYFxuICAtIOWvueivneahhu+8mlxcYGRpYWxvZ092ZXJsYXlcXGAsIFxcYGRpYWxvZ0NvbnRlbnRcXGBcbiAgLSB0b2FzdCDmj5DnpLrvvJpcXGB0b2FzdFxcYFxuICAtIOS4i+aLieiPnOWNle+8mlxcYGRyb3BEb3duTWVudVxcYFxuICAtIOS+p+a7kemdouadv++8mlxcYHNpZGVTbGlkZVBhbmVsXFxgXG4gIC0g5omL5py656Gs5Lu25YWD57Sg77yaXFxgcGhvbmVUb3BTdGF0dXNCYXJcXGDjgIFcXGBwaG9uZUJvdHRvbUluZGljYXRvckJhclxcYO+8jOi/meS4pOS4quWFg+e0oOaYr+aJi+acuuehrOS7tuiHquW4pueahOWFg+e0oO+8jOS4jeiDveWcqOmhtemdouS4rea3u+WKoOOAglxuXG4jIyDkuInjgIHova7mkq3kuI5UYWJz57uE5Lu255qE6KeE5YiZXG4tIOi9ruaSreeahOavj+S4gOS4qlNsaWRl5ZKMVGFic+mAiemhueWNoee7hOS7tuavj+S4gOS4qlRhYiBQYW5lbOmDveW/hemhu+S9v+eUqFxcYGRpc3BsYXk6IG5vbmVcXGDlkoxcXGBkaXNwbGF5OiBibG9jay9mbGV4XFxg5p2l5a6e546w6ZqQ6JeP5ZKM5pi+56S655qE5LqS5pal5YiH5o2iXG4tIOi9ruaSreeahOavj+S4gOS4qlNsaWRl5b+F6aG75pyJaHRtbOS7o+eggeWunueOsO+8jOS4jeW+l+WPquWGmeesrDHkuKpTbGlkZeeahOWFt+S9k+WGheWuueeahGh0bWzku6PnoIHvvIzlhbbku5ZTbGlkZeeahOWFt+S9k+WGheWuueeahGh0bWzku6PnoIHkuZ/lv4XpobvopoHlhpnvvIznu53lr7nnpoHmraLmlbfooY3lnLDkvb/nlKhcXGBQbGFjZWhvbGRlciBjb250ZW50L+W+heW8gOWPkS/lvIDlj5HkuK0v5Y2z5bCG5LiK57q/XFxg562J562J5p2l5pW36KGN5Zyw5bGV56S66L2u5pKt55qE5q+P5LiA5LiqU2xpZGXvvIzlv4Xpobvmr4/kuIDkuKpTbGlkZemDveacieWFt+S9k+ecn+WunueahOWGheWuueWxleekuuWunueOsOOAglxuLSBUYWJz6YCJ6aG55Y2h57uE5Lu26ZyA6KaB5re75Yqg54K55Ye75YiH5o2iVGFiIFBhbmVs55qE5Yqf6IO977yM5LiN5b6X5Y+q5YaZ56ysMeS4qlRhYiBQYW5lbOeahGh0bWzku6PnoIHvvIzlhbbku5ZUYWIgUGFuZWznmoTlhbfkvZPlhoXlrrnnmoRodG1s5Luj56CB5Lmf5b+F6aG76KaB5YaZ77yM57ud5a+556aB5q2i5pW36KGN5Zyw5L2/55SoXFxgUGxhY2Vob2xkZXIgY29udGVudC/lvoXlvIDlj5Ev5byA5Y+R5LitL+WNs+WwhuS4iue6v1xcYOetieetieadpeaVt+ihjeWcsOWxleekulRhYnPpgInpobnljaHnu4Tku7bnmoTmr4/kuIDkuKpUYWIgUGFuZWzvvIzlv4Xpobvmr4/kuIDkuKpUYWIgUGFuZWzpg73mnInlhbfkvZPnnJ/lrp7nmoTlhoXlrrnlsZXnpLrlrp7njrDjgIJcbi0g5L6L5a2Q77yaXG5cXGBcXGBcXGBodG1sXG48dGFiUGFuZWxGYXRoZXIgbm9kZVR5cGU9XCJ0YWJQYW5lbEZhdGhlclwiIGlkPVwidGFiUGFuZWxGYXRoZXJcIiBuYW1lPVwiVGFic+mAiemhueWNoeWGheWuueWuueWZqFwiPlxuICA8IS0tIFRhYiBQYW5lbCAxIC0tPlxuICA8dGFiUGFuZWwgbm9kZVR5cGU9XCJ0YWJQYW5lbFwiIGlkPVwidGFiUGFuZWwxXCIgbmFtZT1cIlRhYnPpgInpobnljaExXCI+XG4gICAgPHRleHQgbm9kZVR5cGU9XCJ0ZXh0XCIgaWQ9XCJ0YWJQYW5lbDFUZXh0XCIgbmFtZT1cIlRhYnPpgInpobnljaEx55qE5paH5pysXCI+VGFic+mAiemhueWNoTHnmoTlhoXlrrk8L3RleHQ+XG4gICAgLi4uXG4gICAgPGRpdiBub2RlVHlwZT1cImRpdlwiIGlkPVwidGFiUGFuZWwxRGl2XCIgbmFtZT1cIlRhYnPpgInpobnljaEx55qEZGl25a655ZmoXCI+XG4gICAgICAuLi5cbiAgICA8L2Rpdj5cbiAgPC90YWJQYW5lbD5cbiAgPCEtLSBUYWIgUGFuZWwgMiAtLT5cbiAgPHRhYlBhbmVsIG5vZGVUeXBlPVwidGFiUGFuZWxcIiBpZD1cInRhYlBhbmVsMlwiIG5hbWU9XCJUYWJz6YCJ6aG55Y2hMlwiPlxuICAgIDx0ZXh0IG5vZGVUeXBlPVwidGV4dFwiIGlkPVwidGFiUGFuZWwyVGV4dFwiIG5hbWU9XCJUYWJz6YCJ6aG55Y2hMueahOaWh+acrFwiPlRhYnPpgInpobnljaEy55qE5YaF5a65PC90ZXh0PlxuICAgIC4uLlxuICAgIDxkaXYgbm9kZVR5cGU9XCJkaXZcIiBpZD1cInRhYlBhbmVsMkRpdlwiIG5hbWU9XCJUYWJz6YCJ6aG55Y2hMueahGRpduWuueWZqFwiPlxuICAgICAgLi4uXG4gICAgPC9kaXY+XG4gIDwvdGFiUGFuZWw+XG4gIDwhLS0g5pu05aSaVGFiIFBhbmVs5ZKM5YW35L2T5YaF5a65Li4uIC0tPlxuPC90YWJQYW5lbEZhdGhlcj5cblxcYFxcYFxcYFxuXG4jIyDlm5vjgIHlm77moIfkuI7lm77niYfnmoTop4TliJlcbi0g5b2T6ZyA6KaBaWNvbuWbvuagh+aXtuW/hemhu+S9v+eUqEZvbnRBd2Vzb21l5Zu+5qCH77yM5q+U5aaC77yaXFxgPGkgbmFtZT1cIuW+ruS/oUljb25cIiB2dHlwZT1cImljb25cIiBpZD1cInd4SWNvblwiIGNsYXNzPVwiZmFiIGZhLXdlaXhpblwiPjwvaT5cXGDvvIzlubbkuJTms6jmhI/lm77moIfnmoTpopzoibLvvIzmr5TlpoLlvq7kv6Hlm77moIfkuIDoiKzkvb/nlKjnu7/oibLns7vvvIxRUeWbvuagh+S4gOiIrOS9v+eUqOiTneiJsuezu++8jOW+ruWNmuWbvuagh+S4gOiIrOS9v+eUqOe6ouiJsuezu++8jOaUr+S7mOWuneWbvuagh+S4gOiIrOS9v+eUqOa1heiTneiJsuezu+etieetiVxuLSDnu53lr7nkuI3og73kvb/nlKggZW1vamkg6KGo5oOF56ym5Y+377yM5LiN5b6X5L2/55So5Lu75L2VIGVtb2ppIOihqOaDheespuWPt++8jOivt+S9v+eUqEZvbnRBd2Vzb21l5a2X5L2T5Zu+5qCH5p2l5Luj5pu/44CCXG4tIExPR0/lm77niYflkozlvJXlr7zpobXnmoTlvJXlr7zlm77niYflv4Xpobvkvb/nlKhcXGBkb2MvcmVzL3N2Z01hcC5qc29uXFxg5paH5Lu25LitanNvbuWvueixoeato+ehruWtl+auteeahGh0dHBz6ZO+5o6l5YC877yM56aB5q2i5L2/55So5pys5Zyw5Zu+54mH6Lev5b6EXFxgZG9jL3Jlcy9sb2dvLnN2Z1xcYOaWh+S7tu+8jOiAjOaYr+S9v+eUqOexu+S8vO+8mlxcYGh0dHBzOi8vZWRpdG9yLmJ5dGVmdW5nby5jb20vZGZpbGUvaW1nL3h4eHh4LnN2Z1xcYOi/meagt+eahOWbvueJh+mTvuaOpeWcsOWdgO+8jOavlOWmgumXquWxj+mhteOAgeeZu+W9lemhteOAgeazqOWGjOmhteeUqOWIsOeahExPR0/lm77niYfvvIzlvJXlr7zpobXnmoTlvJXlr7zlm77niYfnrYnjgIJcbi0ganBn44CBanBlZ+exu+Wei+WbvueJh+W/hemhu+S9v+eUqOWbvueJh+WcsOWdgO+8mlxcYGh0dHBzOi8vb3NzLmJ5dGVmdW5nby5jb20vZjEvc2hvd0ltZzEuanBnXFxgKe+8jOWFtuS4ree7k+WwvueahOKAmXNob3dJbWcxJ+WPr+S7peaNouS4uuS7jiAxIOWIsCAzMCDnmoTmlbDlrZfvvIwxfjMwIOeahOaVsOWtl+W/hemhu+maj+acuuaMkemAie+8jOS4jeW+l+avj+S4qumhtemdouavj+S4quWbvueJh+mDveS9v+eUqOWQjOS4gOS4quaVsOWtl+OAguWGmeazleavlOWmgu+8mlxcYDxpbWcgc3JjPVwiaHR0cHM6Ly9vc3MuYnl0ZWZ1bmdvLmNvbS9mMS9zaG93SW1nMTcuanBnXCIgYWx0PVwieHh4XCIgY2xhc3M9XCJ4eHhcIiBub2RlVHlwZT1cImltYWdlXCI+XFxgXG5cbiMjIOS6lOOAgeW/hemhu+eQhuino+W5tumBteWuiOS7peS4i+emgeatoueahOWkmuS4qlVJ6K6+6K6h5Luj56CB5YaZ5rOVXG4tIOemgeatouS9v+eUqOS7u+S9leWJjeerr+ahhuaetu+8jOWPquS9v+eUqCBodG1sK+exu+mAieaLqeWZqOagt+W8jytqcyDmnaXlrp7njrDjgIJcbi0g56aB5q2i5L2/55SoanPku6PnoIHmnaXmi7zmjqVodG1s5a2X56ym5Liy77yM5b+F6aG75ZyoYm9keeagh+etvumHjOmdouebtOaOpeWGmWh0bWzku6PnoIHjgIJcbi0g56aB5q2i5L2/55SoanPku6PnoIHmnaXlo7DmmI7ku7vkvZXpobXpnaLmmL7npLrmiYDpnIDnmoTmlbDmja7vvIzmiYDmnInmlbDmja7pg73lv4XpobvlnKhodG1s5Luj56CB5Lit55u05o6l5YaZ5q2744CCXG4tIOemgeatouS9v+eUqOaWh+acrOa4kOWPmOiJsu+8jOW/hemhu+S9v+eUqOe6r+iJsuaWh+acrO+8jOS5n+WwseaYr+emgeatouS9v+eUqFxcYC13ZWJraXQtdGV4dC1maWxsLWNvbG9yXFxg5bGe5oCn44CCXG4tIOemgeatoue7memhtemdoua3u+WKoFxcYOaJi+acuumhtumDqOeKtuaAgeagj1xcYOOAgVxcYOaJi+acuuW6lemDqOaMh+ekuuWZqOagj1xcYOS4pOS4qumdnumhtemdouWGheWuueeahOWFg+e0oOiKgueCue+8jOi/meaYr+aJi+acuuehrOS7tuiHquW4pueahOWFg+e0oO+8jOS4jeiDveWcqOmhtemdouS4rea3u+WKoOOAglxuLSDnpoHmraLkvb/nlKhcXGA6YmVmb3JlXFxg44CBXFxgOmFmdGVyXFxg5Lyq5YWD57Sg77yM5b+F6aG75L2/55So5YW25LuW5qCH562+5p2l5a6e546w44CCXG4tIOemgeatouS9v+eUqFxcYGJhY2tkcm9wLWZpbHRlclxcYOetieeOu+eSg+aViOaenO+8jOW/hemhu+WIoOmZpOaOieaJgOacieS9v+eUqOWIsOeOu+eSg+aViOaenOeahOS7o+eggeOAglxuLSDnpoHmraLkvb/nlKjlpJrkuKpw5qCH562+5oiW5aSa5Liq5YW25LuW5qCH562+5p2l5pi+56S65LiA5Liq5LuO572R57uc5oiW5YW25LuW5Zyw5pa55ouJ5Y+W5Zue5p2l55qE6ZW/5paH5pys77yM5b+F6aG75Y+q6IO95L2/55So5LiA5Liq5qCH562+5p2l5pi+56S677yM5q+U5aaC77yaZGl244CBc3Bhbuetie+8jOWboOS4uue9kee7nOaLieWPluWbnuadpeeahOmVv+aWh+acrOaYr+S4gOS4quaWh+acrO+8jOaXoOazleS9v+eUqOWkmuS4quagh+etvuadpeaYvuekuuS4gOS4quaWh+acrO+8jOW/hemhu+WPquiDveS9v+eUqOS4gOS4quagh+etvuadpeaYvuekuuOAglxuLSBsb2FkaW5n6IqC54K555qE5a6e546w56aB5q2i5L2/55SoZGl25qCH562+5LiO6L655qGG5bGe5oCn5a6e546w77yM5b+F6aG75L2/55So5Zu+5qCHaWNvbueahGnmoIfnrb7mnaXlrp7njrBsb2FkaW5n55qE6IqC54K5XG4tIOemgeatouS4umh0bWzmoIfnrb7oioLngrnmt7vliqDliqjnlLvmiJbov4fmuKHmlYjmnpzvvIzpobXpnaLorr7orqHkuI3pnIDopoHku7vkvZXliqjnlLvlkozov4fmuKHmlYjmnpzvvIzmr5TlpoLnpoHmraLvvJpAa2V5ZnJhbWVz44CBdHJhbnNpdGlvbuOAgWFuaW1hdGlvbiDnrYnjgIJcbi0g5oyJ6ZKu44CB5Y2h54mH44CBaXRlbemhueetieWFg+e0oOW/hemhu+imgeaciWhvdmVy5LiO54K55Ye75Y+N6aaI77yM54K55Ye75Y+N6aaI5b+F6aG75L2/55So5rWF6Imy55qE6IOM5pmv6ImyYmFja2dyb3VuZOadpeWPjemmiOWwseihjO+8jOS4peemgeS9v+eUqHRyYW5zZm9ybeaViOaenFxuICAgIC0g4p2MIOmUmeivr+eahOeUqOazle+8miBcbiAgICBcXGBcXGBcXGAgY3NzXG4gICAgLmhvdC1zYWxlcy1pdGVtOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC4uLnB4KTtcbiAgICB9XG4gICAgXFxgXFxgXFxgXG4gICAgLSDinIUg5q2j56Gu55qE55So5rOV77yaXG4gICAgXFxgXFxgXFxgIGNzc1xuICAgIC5ob3Qtc2FsZXMtaXRlbTpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IC4uLjtcbiAgICB9XG4gICAgXFxgXFxgXFxgXG4tIOemgeatouS9v+eUqGRpduagh+etvuadpeWunueOsGltYWdl5Zu+54mH77yM5b+F6aG76KaB5L2/55SoaW1n5qCH562+5p2l5a6e546w5Zu+54mH6IqC54K577yMaW1n5qCH562+55qEc3Jj5bGe5oCn5b+F6aG76K6+572u5Li677yaXFxgaHR0cHM6Ly9vc3MuYnl0ZWZ1bmdvLmNvbS9mMS9zaG93SW1nMS5qcGdcXGDvvIzlhbbkuK3ph4zpnaLnmoRcXGBzaG93SW1nMVxcYOWPr+S7peaUueS4ujF+MzDnmoTku7vmhI/kuIDkuKrmlbDlrZfvvIzmr5TlpoLvvJpcXGBzaG93SW1nNVxcYOOAglxuICAtIOKdjOmUmeivr+eahOWGmeazle+8mlxuICAgIFxcYFxcYFxcYCBodG1sXG4gICAgPGRpdiBjbGFzcz1cImJlc3RzZWxsZXItY292ZXJcIiBpZD1cImJlc3RzZWxsZXJDb3ZlcjFcIiBuYW1lPVwi55WF6ZSA5Lmm57GN5bCB6Z2iMVwiIG5vZGVUeXBlPVwiaW1hZ2VcIj5cbiAgICA8L2Rpdj5cbiAgICBcXGBcXGBcXGBcbiAgLSDinIUg5q2j56Gu55qE5YaZ5rOV77yaXG4gICAgXFxgXFxgXFxgIGh0bWxcbiAgICA8aW1nIGNsYXNzPVwiYmVzdHNlbGxlci1jb3ZlclwiIGlkPVwiYmVzdHNlbGxlckNvdmVyMVwiIG5hbWU9XCLnlYXplIDkuabnsY3lsIHpnaIxXCIgbm9kZVR5cGU9XCJpbWFnZVwiIHNyYz1cImh0dHBzOi8vb3NzLmJ5dGVmdW5nby5jb20vZjEvc2hvd0ltZzcuanBnXCI+ICBcbiAgICBcXGBcXGBcXGBcbi0g56aB5q2iIGlkIOWxnuaAp+S4jeinhOiMg++8jGlkIOW/hemhu+WUr+S4gO+8jOS4lOWPquiDveeUseWtl+avjeWSjOaVsOWtl+e7hOaIkO+8iOS4jeiDveS7peaVsOWtl+W8gOWktO+8ie+8jOW7uuiuruS9v+eUqOmpvOWzsOWRveWQjeOAglxuLSDnpoHmraLkvb/nlKjooYzlhoUgc3R5bGUg5bGe5oCn77yM5b+F6aG76YCa6L+HIGNsYXNzIOWSjCBDU1Mg5paH5Lu25p2l5a6a5LmJ5qC35byP44CCXG4tIOemgeatoiByYWRpYWwtZ3JhZGllbnQg5qC35byP5LiN6KeE6IyD77yM5b6E5ZCR5riQ5Y+Y5b+F6aG75pi+5byP5aOw5piO5Li6IGNpcmNsZe+8jOS4lOS4gOS4qiBET00g6IqC54K55Y+q6IO95YyF5ZCr5LiA5LiqIHJhZGlhbC1ncmFkaWVudOOAglxuXG4jIyDlha3jgIHpppbpobXkuLvkvZPpobXkuI7lrZDpobXpnaLnmoTop4TliJlcbi0g6aaW6aG15Li75L2T6aG15bWM5aWX5LqG5aSa5Liq5a2Q6aG16Z2i77yM5q+P5LiA5Liq5a2Q6aG16Z2i6YO95LiN6ZyA6KaB5aGr5YWF5YaF5a6577yM56m655m95bCx6KGM77yM5ZCO6Z2i5Lya5pyJ5LiT6Zeo55qE5Lu75Yqh5p2l6K6+6K6h5YW35L2T55qE5a2Q6aG16Z2i44CCXG4tIOS7u+S9leWtkOmhtemdoumDveW/hemhu+emgeatoua3u+WKoOW6lemDqOWvvOiIquagj+iKgueCueWIsOmhtemdou+8jOWboOS4uuWtkOmhtemdouaYr+W1jOWll+WcqOmmlumhteS4u+S9k+mhteS4reeahO+8jOeItumhtemdouW3sue7j+acieW6lemDqOWvvOiIquagj+S6hu+8jOWtkOmhtemdouS4jemcgOimgeWGjea3u+WKoOW6lemDqOWvvOiIquagj++8jOS5n+S4jeW+l+a3u+WKoOS6jOe6p+mhtemdoueahOagh+mimOagj+WIsOWtkOmhtemdouS4re+8jOWboOS4uuWtkOmhtemdouaYr+W1jOWll+WcqOmmlumhteS4u+S9k+mhteS4reeahO+8jOmmlumhteS4u+S9k+mhteWSjOWug+eahOWtkOmhtemdoumDveaYr+S4gOe6p+mhtemdou+8jOWboOatpOS4jeW+l+a3u+WKoOS6jOe6p+mhtemdoueahOagh+mimOagj+WIsOWtkOmhtemdouS4reOAglxuXG4jIyDkuIPjgIHlpoLmnpznlKjmiLfmsqHmnInmmI7noa7or7TmmI7or6XpobXpnaLorr7orqHpnIDmsYLvvIzpgqPlsLHmjInnhafku6XkuIvpobXpnaLpu5jorqTop4TliJnorr7orqFcbi0g6Zeq5bGP6aG177ya56aB5q2i5L2/55So5YWo5bGP5Zu+54mH77yM5LiA6Iis5L2/55So5Li76aKY55u45YWz55qE5riQ5Y+Y6Imy77yM54S25ZCO5bim5pyJ5LiA5Lqb6aKd5aSW55qE6IOM5pmv5YWD57Sg5aKe5by655WM6Z2i5bGC5qyh5oSf77yM5q+U5aaC77ya5qKm5bm75ZyG5ZyI5rOh5rOh44CB546755KD5pWI5p6c55qE5ZyG5b2i5b6E5ZCR5riQ5Y+Y562J562J5YWD57SgXG4tIOW8leWvvOmhte+8muWwvemHj+S4jeS9v+eUqOWFqOWxj+WbvueJh++8jOS4gOiIrOavj+S4gOmhteW8leWvvOmhteiDjOaZr+iJsuS5n+WPr+S7pea4kOWPmO+8jOeEtuWQjuavj+S4gOmhteWKn+iDveivtOaYjuS4gOiIrOaciemdnuWFqOWxj+WbvueJh+OAgeagh+mimOOAgeWJr+agh+mimOetieetie+8jOS9oOWPr+S7peW4puWFpeWFtuS7luWFg+e0oO+8jOiuqemhtemdouabtOWKoOe+juingu+8jOW5tuS4lOW8leWvvOmhteeahOW8leWvvOWbvueJh+mcgOimgeiHquW3see7mOWItnN2Z+WbvueJh++8jOW5tuWtmOaUvuWcqFxcYGRvYy9yZXNcXGDmlofku7blpLnkuIvpnaLvvIzlubblnKhodG1s5Lit5L2/55SoXG4tIOiDjOaZr+iJsuS4uuS6huWinuW8uuWxguasoeaEn++8jOa3u+WKoOeahOaipuW5u+azoeazoeaIluiAheWchuW9ouW+hOWQkea4kOWPmOWFg+e0oOeahGRpdu+8jOW/hemhu+WPquiDveWjsOaYjuS4ulxcYGNpcmNsZVxcYO+8jOW5tuS4lOS4gOS4qmRpdueahFxcYGJhY2tncm91bmQ6XFxg5Y+q6IO95aOw5piO5LiA5LiqXFxgcmFkaWFsLWdyYWRpZW50XFxg77yM5q+U5aaC5q2j56Gu55qE5YaZ5rOV77yaYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgcmdiYSgwLCAyMjksIDI1NSwgMC4xNSkgMCUsIHJnYmEoMCwgMCwgMCwgMCkgNzAlKTvvvIzlpoLmnpzpnIDopoHlpJrkuKpcXGByYWRpYWwtZ3JhZGllbnRcXGDlvoTlkJHmuJDlj5jog4zmma/vvIzmr4/kuKrlvoTlkJHmuJDlj5jog4zmma/pg73lv4Xpobvlo7DmmI7kuLrkuIDkuKpkaXboioLngrnvvIzmr4/kuKpkaXbnmoRcXGBiYWNrZ3JvdW5kOlxcYOWPquiDveWjsOaYjuS4gOS4qlxcYHJhZGlhbC1ncmFkaWVudFxcYOOAglxuYCJdfQ==